pidgin/nest

Merge

2019-06-04, John Bailey
1473f96e458a
Merge
--- a/Dockerfile Tue Jun 04 00:03:41 2019 -0400
+++ b/Dockerfile Tue Jun 04 00:04:05 2019 -0400
@@ -1,26 +1,33 @@
-FROM debian:buster as build
+#####################################################################
+# run the hugo build
+#####################################################################
-RUN set -ex && \
- apt-get update && \
- apt-get install -y hugo npm && \
- npm i -g npm@6.4.1 && \
- apt-get clean && \
- rm -rf /var/lib/apt/lists
+FROM debian:buster as hugo-build
+RUN set -ex && \
+ apt-get update && \
+ apt-get install -y hugo && \
+ apt-get clean && \
+ rm -rf /var/lib/apt/lists
+COPY hugo /nest/hugo
+RUN hugo -s /nest/hugo -d /nest/public
-COPY package-lock.json package.json /nest/
+#####################################################################
+# setup up our node environment
+#####################################################################
-RUN set -ex && \
- cd /nest && \
- npm ci --production && \
- npm cache clean --force
-
-COPY . /nest
+FROM node:10-stretch-slim as node-build
+WORKDIR /nest/
+COPY package-lock.json package.json ./
+RUN npm ci --production && \
+ npm cache clean --force
+COPY tools ./tools
+COPY --from=hugo-build /nest/public public
+RUN node tools/pre-prod.js
-RUN hugo -s /nest/hugo -d /nest/public && \
- node /nest/tools/pre-prod.js
+#####################################################################
+# finally package everything up with rwgrim/goserve
+#####################################################################
-FROM rwgrim/goserve
-
-COPY --from=build /nest/public /html
-
-EXPOSE 3000/tcp
+FROM rwgrim/goserve
+COPY --from=node-build /nest/public /html/
+EXPOSE 3000/tcp
--- a/package-lock.json Tue Jun 04 00:03:41 2019 -0400
+++ b/package-lock.json Tue Jun 04 00:04:05 2019 -0400
@@ -26,6 +26,7 @@
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
"integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
+ "dev": true,
"requires": {
"es6-promisify": "^5.0.0"
}
@@ -34,6 +35,7 @@
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
+ "dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -61,6 +63,7 @@
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
"requires": {
"safer-buffer": "~2.1.0"
}
@@ -68,27 +71,32 @@
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
},
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
- "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+ "dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+ "dev": true
},
"balanced-match": {
"version": "1.0.0",
@@ -99,6 +107,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dev": true,
"requires": {
"tweetnacl": "^0.14.3"
}
@@ -106,12 +115,14 @@
"bignumber.js": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz",
- "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg="
+ "integrity": "sha1-g4qZLan51zfg9LLbC+YrsJ3Qxeg=",
+ "dev": true
},
"bmp-js": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz",
- "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo="
+ "integrity": "sha1-ZBE+nHzxICs3btYHvzBibr5XsYo=",
+ "dev": true
},
"boolbase": {
"version": "1.0.0",
@@ -130,17 +141,20 @@
"buffer-equal": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
- "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs="
+ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=",
+ "dev": true
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
- "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
},
"chalk": {
"version": "2.4.2",
@@ -155,7 +169,8 @@
"check-types": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
- "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg=="
+ "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==",
+ "dev": true
},
"coa": {
"version": "2.0.2",
@@ -189,6 +204,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
+ "dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
@@ -207,6 +223,7 @@
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -226,7 +243,8 @@
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
},
"css-select": {
"version": "2.0.2",
@@ -286,6 +304,7 @@
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
@@ -294,6 +313,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -309,12 +329,14 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
},
"differencify": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/differencify/-/differencify-1.5.3.tgz",
"integrity": "sha512-QdUlxG59aHvJTReMNiIuTES7FdqIucsBQ5szyh5H2exc5rSk47ZZAcEpKmVeXf3j3JgjT73U4RFx2ob376qTrg==",
+ "dev": true,
"requires": {
"chalk": "^2.4.1",
"check-types": "^7.4.0",
@@ -345,7 +367,8 @@
"dom-walk": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
- "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
+ "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=",
+ "dev": true
},
"domelementtype": {
"version": "1.3.1",
@@ -365,6 +388,7 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dev": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
@@ -414,12 +438,14 @@
"es6-promise": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
- "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM="
+ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=",
+ "dev": true
},
"es6-promisify": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
"integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
+ "dev": true,
"requires": {
"es6-promise": "^4.0.3"
},
@@ -427,7 +453,8 @@
"es6-promise": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz",
- "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q=="
+ "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==",
+ "dev": true
}
}
},
@@ -444,17 +471,20 @@
"exif-parser": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
- "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI="
+ "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=",
+ "dev": true
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
},
"extract-zip": {
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
"integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+ "dev": true,
"requires": {
"concat-stream": "1.6.2",
"debug": "2.6.9",
@@ -466,6 +496,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -473,29 +504,34 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
}
}
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
},
"fd-slicer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "dev": true,
"requires": {
"pend": "~1.2.0"
}
@@ -503,17 +539,20 @@
"file-type": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek="
+ "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=",
+ "dev": true
},
"filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik="
+ "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
+ "dev": true
},
"filenamify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz",
"integrity": "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==",
+ "dev": true,
"requires": {
"filename-reserved-regex": "^2.0.0",
"strip-outer": "^1.0.0",
@@ -524,6 +563,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
"requires": {
"locate-path": "^2.0.0"
}
@@ -532,6 +572,7 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
"requires": {
"is-callable": "^1.1.3"
}
@@ -539,12 +580,14 @@
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
@@ -563,7 +606,8 @@
"fs": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.2.tgz",
- "integrity": "sha1-4fJE7zkzwbKmS9R5kTYGDQ9ZFPg="
+ "integrity": "sha1-4fJE7zkzwbKmS9R5kTYGDQ9ZFPg=",
+ "dev": true
},
"fs.realpath": {
"version": "1.0.0",
@@ -579,6 +623,7 @@
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
@@ -600,6 +645,7 @@
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
"integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
+ "dev": true,
"requires": {
"min-document": "^2.19.0",
"process": "~0.5.1"
@@ -608,12 +654,14 @@
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
},
"har-validator": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+ "dev": true,
"requires": {
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
@@ -641,6 +689,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
@@ -651,6 +700,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
+ "dev": true,
"requires": {
"agent-base": "^4.1.0",
"debug": "^3.1.0"
@@ -660,6 +710,7 @@
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
"requires": {
"ms": "^2.1.1"
}
@@ -669,7 +720,8 @@
"image-extensions": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/image-extensions/-/image-extensions-1.1.0.tgz",
- "integrity": "sha1-uOa/YDnfAFbjM1AqALZjejEF2JQ="
+ "integrity": "sha1-uOa/YDnfAFbjM1AqALZjejEF2JQ=",
+ "dev": true
},
"inflight": {
"version": "1.0.6",
@@ -693,7 +745,8 @@
"ip-regex": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz",
- "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0="
+ "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=",
+ "dev": true
},
"is-callable": {
"version": "1.1.4",
@@ -708,12 +761,14 @@
"is-function": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
- "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
+ "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=",
+ "dev": true
},
"is-image": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-image/-/is-image-2.0.0.tgz",
"integrity": "sha1-RUyVaVeN4xhpNx+/rqSVj0YbPgw=",
+ "dev": true,
"requires": {
"image-extensions": "^1.0.1"
}
@@ -737,22 +792,26 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
},
"jimp": {
"version": "0.2.28",
"resolved": "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz",
"integrity": "sha1-3VKak3GQ9ClXp5N9Gsw6d2KZbqI=",
+ "dev": true,
"requires": {
"bignumber.js": "^2.1.0",
"bmp-js": "0.0.3",
@@ -775,7 +834,8 @@
"jpeg-js": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz",
- "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII="
+ "integrity": "sha1-U+RI7J0mPmgyZkZ+lELSxaLvVII=",
+ "dev": true
},
"js-beautify": {
"version": "1.8.9",
@@ -801,27 +861,32 @@
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
@@ -833,6 +898,7 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz",
"integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==",
+ "dev": true,
"requires": {
"buffer-equal": "0.0.1",
"mime": "^1.3.4",
@@ -848,6 +914,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
"requires": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
@@ -870,17 +937,20 @@
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
},
"mime-db": {
"version": "1.38.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz",
- "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg=="
+ "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==",
+ "dev": true
},
"mime-types": {
"version": "2.1.22",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz",
"integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==",
+ "dev": true,
"requires": {
"mime-db": "~1.38.0"
}
@@ -889,6 +959,7 @@
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
+ "dev": true,
"requires": {
"dom-walk": "^0.1.0"
}
@@ -918,6 +989,7 @@
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/mockeer/-/mockeer-0.0.3.tgz",
"integrity": "sha512-3ubkRjeyz3I3nmJxvey28kasWUY4ZLTCJFqRvSn74E+HoTgzJCB9JX6m17/9/ahbwcFAogw0X/bgrZb/vMd/dw==",
+ "dev": true,
"requires": {
"check-types": "^7.4.0",
"filenamify": "^2.1.0",
@@ -929,7 +1001,8 @@
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
},
"nopt": {
"version": "4.0.1",
@@ -951,7 +1024,8 @@
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true
},
"object-keys": {
"version": "1.0.12",
@@ -1009,6 +1083,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
"requires": {
"p-try": "^1.0.0"
}
@@ -1017,6 +1092,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
"requires": {
"p-limit": "^1.1.0"
}
@@ -1024,22 +1100,26 @@
"p-try": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
},
"parse-bmfont-ascii": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
- "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU="
+ "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=",
+ "dev": true
},
"parse-bmfont-binary": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
- "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY="
+ "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=",
+ "dev": true
},
"parse-bmfont-xml": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz",
"integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==",
+ "dev": true,
"requires": {
"xml-parse-from-string": "^1.0.0",
"xml2js": "^0.4.5"
@@ -1049,6 +1129,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
"integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
+ "dev": true,
"requires": {
"for-each": "^0.3.3",
"string.prototype.trim": "^1.1.2"
@@ -1057,7 +1138,8 @@
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
},
"path-is-absolute": {
"version": "1.0.1",
@@ -1067,22 +1149,26 @@
"pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
},
"phin": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
- "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA=="
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
+ "dev": true
},
"pixelmatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
"integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=",
+ "dev": true,
"requires": {
"pngjs": "^3.0.0"
}
@@ -1091,6 +1177,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
"integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
"requires": {
"find-up": "^2.1.0"
}
@@ -1098,22 +1185,26 @@
"pngjs": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
- "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "dev": true
},
"process": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
- "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
+ "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=",
+ "dev": true
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
},
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
},
"proto-list": {
"version": "1.2.4",
@@ -1123,7 +1214,8 @@
"proxy-from-env": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
- "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4="
+ "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
+ "dev": true
},
"pseudomap": {
"version": "1.0.2",
@@ -1133,17 +1225,20 @@
"psl": {
"version": "1.1.31",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
- "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw=="
+ "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
+ "dev": true
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
},
"puppeteer": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.13.0.tgz",
"integrity": "sha512-LUXgvhjfB/P6IOUDAKxOcbCz9ISwBLL9UpKghYrcBDwrOGx1m60y0iN2M64mdAUbT4+7oZM5DTxOW7equa2fxQ==",
+ "dev": true,
"requires": {
"debug": "^4.1.0",
"extract-zip": "^1.6.6",
@@ -1158,7 +1253,8 @@
"mime": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
- "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w=="
+ "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
+ "dev": true
}
}
},
@@ -1170,22 +1266,26 @@
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
},
"querystringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
- "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg=="
+ "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
+ "dev": true
},
"read-chunk": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz",
- "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ="
+ "integrity": "sha1-X2jKswfmY/GZk1J9m1icrORmEZQ=",
+ "dev": true
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -1200,6 +1300,7 @@
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
@@ -1226,12 +1327,14 @@
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
},
"rimraf": {
"version": "2.6.3",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
"requires": {
"glob": "^7.1.3"
}
@@ -1239,12 +1342,14 @@
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
},
"sax": {
"version": "1.2.4",
@@ -1275,6 +1380,7 @@
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
@@ -1295,12 +1401,14 @@
"stream-to": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz",
- "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0="
+ "integrity": "sha1-hDBgmNhf25kLn6MAsbPM9V6O8B0=",
+ "dev": true
},
"stream-to-buffer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz",
"integrity": "sha1-JnmdkDqyAlyb1VCsRxcbAPjdgKk=",
+ "dev": true,
"requires": {
"stream-to": "~0.2.0"
}
@@ -1309,6 +1417,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz",
"integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=",
+ "dev": true,
"requires": {
"define-properties": "^1.1.2",
"es-abstract": "^1.5.0",
@@ -1319,6 +1428,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -1327,6 +1437,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
"integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+ "dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
@@ -1363,12 +1474,14 @@
"tinycolor2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz",
- "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g="
+ "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=",
+ "dev": true
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
@@ -1377,7 +1490,8 @@
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
}
}
},
@@ -1385,6 +1499,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
"integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
+ "dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
@@ -1393,6 +1508,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
@@ -1400,17 +1516,20 @@
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true
},
"type-detect": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
},
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
},
"unquote": {
"version": "1.1.1",
@@ -1421,6 +1540,7 @@
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
"requires": {
"punycode": "^2.1.0"
}
@@ -1429,6 +1549,7 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz",
"integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==",
+ "dev": true,
"requires": {
"querystringify": "^2.0.0",
"requires-port": "^1.0.0"
@@ -1438,6 +1559,7 @@
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz",
"integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=",
+ "dev": true,
"requires": {
"ip-regex": "^1.0.1"
}
@@ -1445,7 +1567,8 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
},
"util.promisify": {
"version": "1.0.0",
@@ -1459,12 +1582,14 @@
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
@@ -1480,6 +1605,7 @@
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.0.tgz",
"integrity": "sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==",
+ "dev": true,
"requires": {
"async-limiter": "~1.0.0"
}
@@ -1488,6 +1614,7 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz",
"integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==",
+ "dev": true,
"requires": {
"global": "~4.3.0",
"is-function": "^1.0.1",
@@ -1498,12 +1625,14 @@
"xml-parse-from-string": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
- "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig="
+ "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=",
+ "dev": true
},
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
"integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
+ "dev": true,
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~9.0.1"
@@ -1512,12 +1641,14 @@
"xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
- "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "dev": true
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
},
"yallist": {
"version": "2.1.2",
@@ -1528,6 +1659,7 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "dev": true,
"requires": {
"fd-slicer": "~1.0.1"
}
--- a/package.json Tue Jun 04 00:03:41 2019 -0400
+++ b/package.json Tue Jun 04 00:04:05 2019 -0400
@@ -1,15 +1,23 @@
{
+ "private": true,
"dependencies": {
- "differencify": "^1.5.3",
"js-beautify": "^1.8.9",
"svgo": "^1.1.1"
},
"devDependencies": {
+ "differencify": "^1.5.3",
"front-matter": "^3.0.1"
},
"scripts": {
- "regression":"node tools/visual-diff.js",
+ "regression": "node tools/visual-diff.js",
"tidy": "node tools/pre-prod",
+ "lint": "prettier ./**/*.{js,md,toml,css,json}",
+ "docker": "npm run docker:build && npm run docker:run",
+ "docker:build": "docker build -t pidgin/nest:latest .",
+ "docker:run": "docker run -it --rm -p 3000:3000 pidgin/nest:latest",
+ "hugo": "hugo -s hugo -D -v --verboseLog --i18n-warnings",
+ "hugo:new": "hugo -s hugo new",
+ "hugo:server": "hugo server -s hugo -D --disableFastRender -v --verboseLog --noHTTPCache --i18n-warnings",
"migration-tracker": "node tools/migrate-tracker.js"
}
}
--- a/tools/migrate-tracker.js Tue Jun 04 00:03:41 2019 -0400
+++ b/tools/migrate-tracker.js Tue Jun 04 00:04:05 2019 -0400
@@ -1,81 +1,149 @@
-const fs = require("fs");
-const path = require("path");
-const front = require("front-matter");
+/**
+ * Tracks the progress of migrating content
+ * from the the old site to the new site
+ */
+
+/*****************************************************************************
+ * Imports
+ *****************************************************************************/
+
+const fs = require('fs')
+const path = require('path')
+const front = require('front-matter')
+
+/*****************************************************************************
+ * Set Up
+ *****************************************************************************/
+
+const filepath = __dirname.replace(/\/tools(\/)?$/, '/hugo/content')
+const obsoleteRegex = /\s#(\s+)?obsolete(\s+)?$/i
+const mdRegex = /\.md$/
+const migrating = []
+const obsoleted = []
+
+/*****************************************************************************
+ * Execution
+ *****************************************************************************/
const paths = fs
- .readFileSync(path.join(__dirname, "paths.txt"), "utf8")
- .split("\r\n");
-const obsoleteRegex = /\s#(\s+)?obsolete(\s+)?$/i;
-const migrating = paths.filter(path => !obsoleteRegex.test("# obsolete"));
-
-const covered = new Set();
-
-function getFront(path) {
- try {
- const data = fs.readFileSync(path, "utf8");
-
- const { attributes } = front(data);
-
- return attributes;
- } catch (error) {
- console.log(error);
+ .readFileSync(path.join(__dirname, 'paths.txt'), 'utf8')
+ .split('\r\n')
+// Sift each URL
+paths.forEach(path => {
+ if (obsoleteRegex.test(path)) {
+ obsoleted.push(path.replace(obsoleteRegex, ''))
+ } else {
+ migrating.push(path)
}
-}
-
-const mdRegex = /\.md$/;
-
-function getMdPaths(input) {
- let output = [];
- let items = fs.readdirSync(input).map(i => path.join(input, i));
-
- while (items.length) {
- const item = items.pop();
- const stat = fs.statSync(item);
-
- if (stat.isDirectory()) {
- const nueveau = fs.readdirSync(item).map(i => path.join(item, i));
- items.push(...nueveau);
- } else if (stat.isFile() && mdRegex.test(item)) {
- output.push(item);
- }
- }
-
- return output.sort();
-}
-
-const filepath = (__dirname.replace(/\/tools(\/)?$/, "/hugo/content"))
-getMdPaths(path.join(__dirname, "../hugo/content/"))
+})
+/** Information on new content */
+const nestPages = getMdPaths(path.join(__dirname, '../hugo/content/'))
+ // discard translated content
+ .filter(path => !/\.\w+\.md$/.test(path))
.map(path => {
- let replaces = getFront(path).replaces;
-
- if (!replaces) {
- replaces = [];
- } else if (typeof replaces === "string") {
- replaces = [replaces];
- } else if (!Array.isArray(replaces)) {
- throw new Error(
- `expected replaces of ${path} to be falsey, string or an array`
- );
- }
+ const frontMatter = getFrontMatter(path)
+ const replaces = castReplacesDataToArray(frontMatter.replaces)
return {
replaces,
path,
- relative: path
- .replace(filepath, "")
- .replace(/\.md$/, "")
- .replace(/_index(\.\w\w)?$/, "")
- };
+ pathOnSite: path
+ // convert to realative file path
+ .replace(filepath, '')
+ // remove file extention
+ .replace(/\.md$/, '')
+ // remove _index
+ .replace(/\/_index(\.\w\w)?$/, ''),
+ }
})
- .forEach(page => page.replaces.forEach(path => covered.add(path)));
+
+/*****************************************************************************
+ * Generate Stats
+ *****************************************************************************/
+
+const covered = new Set()
+nestPages.forEach(page => page.replaces.forEach(path => covered.add(path)))
const countOfCovered = migrating.reduce(
(acc, path) => acc + (covered.has(path) ? 1 : 0),
0
-);
+)
+
+const percentComplete = ((countOfCovered / migrating.length) * 100).toPrecision(
+ 2
+)
+const countOfObsolete = paths.length - migrating.length
+
+console.log(`
+STATS:
+ tracking ${paths.length} pages
+ ${countOfCovered}/${migrating.length} (${percentComplete}%) migrated
+ ${countOfObsolete} obsoleted
+`)
+
+/*****************************************************************************
+ * Generate redirection mapping
+ *****************************************************************************/
+
+// TODO: Generate redirection instructions
+
+/*****************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+/**
+ * Retrieves front matter from markdown files
+ * @param {string} path path to mardown file
+ */
+function getFrontMatter(path) {
+ try {
+ const data = fs.readFileSync(path, 'utf8')
+
+ const { attributes } = front(data)
+
+ return attributes
+ } catch (error) {
+ console.log(error)
+ }
+}
-const percentComplete = (countOfCovered / migrating.length * 100).toPrecision(2);
-const countOfObsolete = paths.length - migrating.length;
-console.log(
- `tracking ${paths.length} pages, ${countOfCovered}/${migrating.length} (${percentComplete}%) migrated, ${countOfObsolete} obsoleted`
-);
+/**
+ * creates a list of all markdown files in a directory
+ * @param {string} directory directory to search for markdown files
+ */
+function getMdPaths(directory) {
+ let output = []
+ let items = fs.readdirSync(directory).map(i => path.join(directory, i))
+
+ while (items.length) {
+ const item = items.pop()
+ const stat = fs.statSync(item)
+
+ if (stat.isDirectory()) {
+ const nueveau = fs.readdirSync(item).map(i => path.join(item, i))
+ items.push(...nueveau)
+ } else if (stat.isFile() && mdRegex.test(item)) {
+ output.push(item)
+ }
+ }
+
+ return output.sort()
+}
+
+/**
+ *
+ * @param {void|string|string[]} replaces
+ */
+function castReplacesDataToArray(replaces) {
+ if (!replaces) {
+ return []
+ } else if (typeof replaces === 'string') {
+ return [replaces]
+ } else if (Array.isArray(replaces)) {
+ return replaces
+ }
+
+ throw new Error(
+ `expected replaces of ${path} to be falsey, string or an array`
+ )
+}
--- a/tools/pre-prod.js Tue Jun 04 00:03:41 2019 -0400
+++ b/tools/pre-prod.js Tue Jun 04 00:04:05 2019 -0400
@@ -1,8 +1,21 @@
-const { html: beautify_html } = require('js-beautify')
+/**
+ * Runs after Hugo has built the site
+ * * Cleans, Minifies and Optimises hugo output
+ */
+
+/*****************************************************************************
+ * Imports
+ *****************************************************************************/
+
const fs = require('fs')
const path = require('path')
const SVGO = require('svgo')
+const { html: beautify_html } = require('js-beautify')
+
+/*****************************************************************************
+ * Set Up
+ *****************************************************************************/
const target = path.join(__dirname, '../public/')
const svgo = new SVGO()
@@ -11,63 +24,96 @@
const jsonRegex = /\.json$/
const svgRegex = /\.svg$/
-getFilePaths(target, tidyPath)
+const htmlBeautifyOptions = { max_preserve_newlines: 0 }
+
+/*****************************************************************************
+ * Execution
+ *****************************************************************************/
+
+getFilePaths(target).forEach(path => {
+ if (path.match(xmlRegex)) {
+ tidyXML(path)
+ } else if (path.match(jsonRegex)) {
+ minifyJSON(path)
+ } else if (path.match(svgRegex)) {
+ optimiseSVG(path)
+ }
+})
+
+/*****************************************************************************
+ * File Handlers
+ *****************************************************************************/
+
+/**
+ * Format XML and HTML, removing hugo template artefacts,
+ * like whitespace chasms
+ * @param {string} path
+ */
+function tidyXML(path) {
+ const data = fs.readFileSync(path, 'utf8')
+ const formatted = beautify_html(data, htmlBeautifyOptions)
+
+ fs.writeFile(path, formatted, err => {
+ if (err) {
+ console.log(`Error Tidiyng ${path}`, err)
+ }
+ console.log(`Tidied path: ${path.replace(target, '')}`)
+ })
+}
-function getFilePaths(input, cb) {
- let items = readDir(input)
+/**
+ * Minify JSON
+ * @param {string} path
+ */
+function minifyJSON(path) {
+ const data = fs.readFileSync(path, 'utf8')
+ const formatted = JSON.stringify(JSON.parse(data))
+
+ fs.writeFile(path, formatted, err => {
+ if (err) {
+ console.log(`Error minifying ${path}`, err)
+ }
+ console.log(`Minified path: ${path.replace(target, '')}`)
+ })
+}
+
+/**
+ * Optimise SVG files
+ * @param {string} path
+ */
+function optimiseSVG(path) {
+ const data = fs.readFileSync(path, 'utf8')
+
+ svgo.optimize(data)
+ .then(d => {
+ fs.writeFileSync(path, d.data)
+ console.log(`Optimised: ${path.replace(target, '')}`)
+ })
+ .catch(err => console.log(`Error Optimising SVG ${path}`, err))
+}
+
+/*****************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+function getFilePaths(input) {
+ const items = readDir(input)
+ const ret = []
while (items.length) {
const item = items.pop()
const stat = fs.statSync(item)
if (stat.isDirectory()) {
- const nueveau = readDir(item)
- items.push(...nueveau)
+ items.push(...readDir(item))
} else if (stat.isFile()) {
- cb(item)
+ ret.push(item)
}
}
+
+ return ret
}
function readDir(item) {
return fs.readdirSync(item).map(i => path.join(item, i))
}
-
-function tidyPath(path) {
- if (path.match(xmlRegex)) {
- const data = fs.readFileSync(path, 'utf8')
-
- fs.writeFile(
- path,
- beautify_html(data, {
- max_preserve_newlines: 0,
- }),
- err => {
- if (err) {
- console.log(`Error Tidiyng ${path}`, err)
- }
-
- console.log(`Tidied path: ${path.replace(target, '')}`)
- }
- )
- } else if (path.match(jsonRegex)) {
- const data = fs.readFileSync(path, 'utf8')
-
- fs.writeFile(path, JSON.stringify(JSON.parse(data)), err => {
- if (err) {
- console.log(`Error minifying ${path}`, err)
- }
-
- console.log(`Minified path: ${path.replace(target, '')}`)
- })
- } else if (path.match(svgRegex)) {
- const data = fs.readFileSync(path, 'utf8')
-
- svgo.optimize(data)
- .then(d => {
- fs.writeFileSync(path, d.data)
- console.log(`Optimised: ${path.replace(target, '')}`)
- })
- .catch(err => console.log(`Error Optimising SVG ${path}`, err))
- }
-}