MDL-66109 js: Fix circular dependency in Shifter dependency
authorAndrew Nicols <andrew@nicols.co.uk>
Wed, 22 Apr 2020 02:12:30 +0000 (10:12 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Mon, 11 May 2020 02:53:35 +0000 (10:53 +0800)
Shifter is using an ancient and no-longer supported of Istanbul. That
version contains a circular dependency whereby it fetches the version
from the index that included the file in the first place.  This throws a
warning on newer versions of Node.

The fix here is simple and intended to be the bare minimum to remove
these warnings anad resolve the issue.

We have forked the istanbul project and created a v0.1.37_moodle branch
at the root version of the Istanbul version that Shifter uses (v0.1.37
tag). The circular dependency is then addressed and a new tag created.

I have then forked Shifter, pointing its package.json at the tar.gz
download of that new tag and pushed a new branch and tag for that fix.

Following this our own package.json is updated to point to the tar.gz
version of the new Shifter tag.

npm-shrinkwrap.json
package.json

index f9d9bba..1536271 100644 (file)
       "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
       "dev": true
     },
-    "istanbul": {
-      "version": "0.1.37",
-      "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.1.37.tgz",
-      "integrity": "sha1-7ZwC4q+A2JRtQG1wFNkxk17y1+A=",
-      "dev": true,
-      "requires": {
-        "abbrev": "1.0.x",
-        "async": "0.2.x",
-        "escodegen": "0.0.x",
-        "esprima": "1.0.x",
-        "fileset": "0.1.x",
-        "handlebars": "1.0.x",
-        "mkdirp": "0.3.x",
-        "nopt": "2.1.x",
-        "resolve": "0.4.x",
-        "which": "1.0.x",
-        "wordwrap": "0.0.x"
-      },
-      "dependencies": {
-        "abbrev": {
-          "version": "1.0.9",
-          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
-          "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
-          "dev": true
-        },
-        "async": {
-          "version": "0.2.10",
-          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
-          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
-          "dev": true
-        },
-        "esprima": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
-          "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
-          "dev": true
-        },
-        "handlebars": {
-          "version": "1.0.12",
-          "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.0.12.tgz",
-          "integrity": "sha1-GMbTRAw16RsZs/9YK5FRq0mF1Pw=",
-          "dev": true,
-          "requires": {
-            "optimist": "~0.3",
-            "uglify-js": "~2.3"
-          }
-        },
-        "mkdirp": {
-          "version": "0.3.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
-          "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
-          "dev": true
-        },
-        "nopt": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz",
-          "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=",
-          "dev": true,
-          "requires": {
-            "abbrev": "1"
-          }
-        },
-        "resolve": {
-          "version": "0.4.3",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.4.3.tgz",
-          "integrity": "sha1-3K2tIC58rMJGfjo4gAIR9C+cE98=",
-          "dev": true
-        },
-        "source-map": {
-          "version": "0.1.43",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
-          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
-          "dev": true,
-          "requires": {
-            "amdefine": ">=0.0.4"
-          }
-        },
-        "uglify-js": {
-          "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz",
-          "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=",
-          "dev": true,
-          "requires": {
-            "async": "~0.2.6",
-            "optimist": "~0.3.5",
-            "source-map": "~0.1.7"
-          }
-        },
-        "which": {
-          "version": "1.0.9",
-          "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
-          "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
-          "dev": true
-        },
-        "wordwrap": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-          "dev": true
-        }
-      }
-    },
     "js-base64": {
       "version": "2.5.1",
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
       "dev": true,
       "requires": {
         "wordwrap": "~0.0.2"
-      },
-      "dependencies": {
-        "wordwrap": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
-          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
-          "dev": true
-        }
       }
     },
     "optionator": {
         "prelude-ls": "~1.1.2",
         "type-check": "~0.3.2",
         "wordwrap": "~1.0.0"
+      },
+      "dependencies": {
+        "wordwrap": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+          "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+          "dev": true
+        }
       }
     },
     "os-homedir": {
       "dev": true
     },
     "shifter": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/shifter/-/shifter-0.5.0.tgz",
-      "integrity": "sha1-nyS3AptrpnACdSDu+Lq4m5L/n2g=",
+      "version": "https://github.com/andrewnicols/shifter/archive/v0.5.0_moodle-0.tar.gz",
+      "integrity": "sha512-D5ITAbIdqWx2leZfL2L21TfeezbTGLrgnB0JWZPPdJwRBa/Fgtdy6XvQ3mW6HtC3eC5x0vtxZedFZCWdAaFXOQ==",
       "dev": true,
       "requires": {
         "ansi-color": "*",
         "cssproc": "~0.0.1",
         "gear": "~0.8.0",
         "gear-lib": "~0.8.0",
-        "istanbul": "0.1.37",
+        "istanbul": "https://github.com/andrewnicols/istanbul/archive/v0.1.37_moodle-0.tar.gz",
         "jshint": "~0.9.0",
         "mkdirp": "*",
         "nopt": "*",
         "yuitest-coverage": ">=0.0.5"
       },
       "dependencies": {
+        "abbrev": {
+          "version": "1.0.9",
+          "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+          "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+          "dev": true
+        },
+        "async": {
+          "version": "0.2.10",
+          "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+          "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+          "dev": true
+        },
         "cli": {
           "version": "0.4.3",
           "resolved": "https://registry.npmjs.org/cli/-/cli-0.4.3.tgz",
             "glob": ">= 3.1.4"
           }
         },
+        "esprima": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+          "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
+          "dev": true
+        },
+        "handlebars": {
+          "version": "1.0.12",
+          "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.0.12.tgz",
+          "integrity": "sha1-GMbTRAw16RsZs/9YK5FRq0mF1Pw=",
+          "dev": true,
+          "requires": {
+            "optimist": "~0.3",
+            "uglify-js": "~2.3"
+          }
+        },
+        "istanbul": {
+          "version": "https://github.com/andrewnicols/istanbul/archive/v0.1.37_moodle-0.tar.gz",
+          "integrity": "sha512-6i+2THnhvtbNwRHDyVHUy+1VBzlKqxBjpZ//Y3tw9Te0mFz3GPkk0SxvynAekD+s83kmE1mrWCwJP3mbd/e/Zg==",
+          "dev": true,
+          "requires": {
+            "abbrev": "1.0.x",
+            "async": "0.2.x",
+            "escodegen": "0.0.x",
+            "esprima": "1.0.x",
+            "fileset": "0.1.x",
+            "handlebars": "1.0.x",
+            "mkdirp": "0.3.x",
+            "nopt": "2.1.x",
+            "resolve": "0.4.x",
+            "which": "1.0.x",
+            "wordwrap": "0.0.x"
+          },
+          "dependencies": {
+            "mkdirp": {
+              "version": "0.3.5",
+              "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+              "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
+              "dev": true
+            },
+            "nopt": {
+              "version": "2.1.2",
+              "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz",
+              "integrity": "sha1-bMzZd7gBMqB3MdbozljCyDA8+a8=",
+              "dev": true,
+              "requires": {
+                "abbrev": "1"
+              }
+            },
+            "which": {
+              "version": "1.0.9",
+              "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
+              "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
+              "dev": true
+            }
+          }
+        },
         "jshint": {
           "version": "0.9.1",
           "resolved": "https://registry.npmjs.org/jshint/-/jshint-0.9.1.tgz",
           "resolved": "https://registry.npmjs.org/progress/-/progress-0.1.0.tgz",
           "integrity": "sha1-2+wMmfvC97liPhMxY75jYdXp5Ec=",
           "dev": true
+        },
+        "resolve": {
+          "version": "0.4.3",
+          "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.4.3.tgz",
+          "integrity": "sha1-3K2tIC58rMJGfjo4gAIR9C+cE98=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.1.43",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
+          "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
+          "dev": true,
+          "requires": {
+            "amdefine": ">=0.0.4"
+          }
+        },
+        "uglify-js": {
+          "version": "2.3.6",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz",
+          "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=",
+          "dev": true,
+          "requires": {
+            "async": "~0.2.6",
+            "optimist": "~0.3.5",
+            "source-map": "~0.1.7"
+          }
         }
       }
     },
       "dev": true
     },
     "wordwrap": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+      "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
       "dev": true
     },
     "wrap-ansi": {
index 4c427a4..aa68ea8 100644 (file)
@@ -31,7 +31,7 @@
     "jshint": "^2.11.0",
     "node-sass": "^4.14.0",
     "semver": "5.3.0",
-    "shifter": "0.5.0",
+    "shifter": "https://github.com/andrewnicols/shifter/archive/v0.5.0_moodle-0.tar.gz",
     "stylelint": "8.0.0",
     "stylelint-checkstyle-formatter": "0.1.0",
     "stylelint-csstree-validator": "1.1.1",