From 1d8cb91fe026845d46211fb4b217dd979b322c18 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Wed, 19 Dec 2018 20:13:27 -0500 Subject: [PATCH 01/37] fresh update typescript --- package-lock.json | 656 +++++++++++++++++++++++----------------------- package.json | 6 +- 2 files changed, 331 insertions(+), 331 deletions(-) diff --git a/package-lock.json b/package-lock.json index 87bc1a4..fed38e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,7 +6,7 @@ "dependencies": { "@types/events": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", "dev": true }, @@ -20,9 +20,9 @@ } }, "@types/glob": { - "version": "5.0.35", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.35.tgz", - "integrity": "sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { "@types/events": "*", @@ -31,9 +31,9 @@ } }, "@types/handlebars": { - "version": "4.0.39", - "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.39.tgz", - "integrity": "sha512-vjaS7Q0dVqFp85QhyPSZqDKnTTCemcSHNHFvDdalO1s0Ifz5KuE64jQD5xoUkfdWwF4WpqdJEl7LsWH8rzhKJA==", + "version": "4.0.40", + "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.40.tgz", + "integrity": "sha512-sGWNtsjNrLOdKha2RV1UeF8+UbQnPSG7qbe5wwbni0mw4h2gHXyPFUMOC+xwGirIiiydM/HSqjDO4rk6NFB18w==", "dev": true }, "@types/highlight.js": { @@ -43,15 +43,15 @@ "dev": true }, "@types/lodash": { - "version": "4.14.116", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.116.tgz", - "integrity": "sha512-lRnAtKnxMXcYYXqOiotTmJd74uawNWuPnsnPrrO7HiFuE3npE2iQhfABatbYDyxTNqZNuXzcKGhw37R7RjBFLg==", + "version": "4.14.119", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.119.tgz", + "integrity": "sha512-Z3TNyBL8Vd/M9D9Ms2S3LmFq2sSMzahodD6rCS9V2N44HUMINb75jNkSuwAx7eo2ufqTdfOdtGQpNbieUjPQmw==", "dev": true }, "@types/marked": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.0.tgz", - "integrity": "sha512-xkURX55US18wHme+O2UlqJf3Fo7FqT5VAL+OJ/zK+jP2NX57naryDHoiqt/pMIwZjDc62sRvXUWuQQxQiBdheQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz", + "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==", "dev": true }, "@types/minimatch": { @@ -61,15 +61,15 @@ "dev": true }, "@types/node": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.1.tgz", - "integrity": "sha512-EGoI4ylB/lPOaqXqtzAyL8HcgOuCtH2hkEaLmkueOYufsTFWBn4VCvlCDC2HW8Q+9iF+QVC3sxjDKQYjHQeZ9w==", + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", "dev": true }, "@types/shelljs": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.0.tgz", - "integrity": "sha512-vs1hCC8RxLHRu2bwumNyYRNrU3o8BtZhLysH5A4I98iYmA2APl6R3uNQb5ihl+WiwH0xdC9LLO+vRrXLs/Kyxg==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.1.tgz", + "integrity": "sha512-1lQw+48BuVgp6c1+z8EMipp18IdnV2dLh6KQGwOm+kJy9nPjEkaqRKmwbDNEYf//EKBvKcwOC6V2cDrNxVoQeQ==", "dev": true, "requires": { "@types/glob": "*", @@ -77,9 +77,9 @@ } }, "ajv": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", - "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -87,34 +87,6 @@ "uri-js": "^4.2.2" } }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, "ansi-colors": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -239,10 +211,21 @@ "dev": true }, "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } }, "atob": { "version": "2.1.2", @@ -379,27 +362,9 @@ "unset-value": "^1.0.0" } }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -433,27 +398,6 @@ } } }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, - "optional": true - } - } - }, "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -491,7 +435,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -506,7 +450,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -531,6 +475,13 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true, + "optional": true + }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", @@ -544,10 +495,13 @@ "dev": true }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } }, "copy-descriptor": { "version": "0.1.1", @@ -576,13 +530,6 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "optional": true - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -676,9 +623,9 @@ } }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -713,7 +660,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -728,7 +675,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -904,13 +851,14 @@ } }, "fancy-log": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", - "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "dev": true, "requires": { "ansi-gray": "^0.1.1", "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", "time-stamp": "^1.0.0" } }, @@ -966,9 +914,9 @@ } }, "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", + "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -985,9 +933,9 @@ "dev": true }, "flagged-respawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", - "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", "dev": true }, "flush-write-stream": { @@ -1008,7 +956,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1023,7 +971,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1063,9 +1011,9 @@ "dev": true }, "fs-extra": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.0.tgz", - "integrity": "sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -1074,9 +1022,9 @@ }, "dependencies": { "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true } } @@ -1092,9 +1040,9 @@ }, "dependencies": { "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true } } @@ -1164,7 +1112,7 @@ "dependencies": { "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -1176,7 +1124,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -1188,7 +1136,7 @@ }, "glob-watcher": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "resolved": "http://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { @@ -1252,7 +1200,7 @@ }, "graceful-fs": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", "dev": true }, @@ -1275,9 +1223,9 @@ } }, "glogg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", - "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", "dev": true, "requires": { "sparkles": "^1.0.0" @@ -1285,7 +1233,7 @@ }, "graceful-fs": { "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { @@ -1294,7 +1242,7 @@ }, "gulp": { "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "resolved": "http://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", "dev": true, "requires": { @@ -1326,23 +1274,23 @@ } }, "gulp-typescript": { - "version": "5.0.0-alpha.3", - "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.0-alpha.3.tgz", - "integrity": "sha512-6iSBjqBXAUqRsLUh/9XtlOnSzpPMbLrr5rqGj4UPLtGpDwFHW/fVTuRgv6LAWiKesLIUDDM0ourxvcpu2trecQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-5.0.0.tgz", + "integrity": "sha512-lMj2U+Ni6HyFaY2nr1sSQ6D014eHil5L1i52XWBaAQUR9UAUUp9btnm4yRBT2Jb8xhrwqmhMssZf/g2B7cinCA==", "dev": true, "requires": { - "ansi-colors": "^2.0.2", + "ansi-colors": "^3.0.5", "plugin-error": "^1.0.1", "source-map": "^0.7.3", - "through2": "^2.0.3", + "through2": "^3.0.0", "vinyl": "^2.1.0", "vinyl-fs": "^3.0.3" }, "dependencies": { "ansi-colors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-2.0.5.tgz", - "integrity": "sha512-yAdfUZ+c2wetVNIFsNRn44THW+Lty6S5TwMpUfLA/UaGhiXbBv/F8E60/1hMLd0cnF/CDoWH8vzVaI5bAcHCjw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, "clone": { @@ -1358,9 +1306,9 @@ "dev": true }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1387,12 +1335,38 @@ "remove-trailing-separator": "^1.0.1", "to-absolute-glob": "^2.0.0", "unique-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "http://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", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://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" + } + } } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, "isarray": { @@ -1417,6 +1391,32 @@ "dev": true, "requires": { "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "http://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", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://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" + } + } } }, "plugin-error": { @@ -1433,7 +1433,7 @@ "dependencies": { "ansi-colors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -1443,18 +1443,14 @@ } }, "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==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.0.tgz", + "integrity": "sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "replace-ext": { @@ -1470,22 +1466,32 @@ "dev": true }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, + "through2": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", + "integrity": "sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==", + "dev": true, + "requires": { + "readable-stream": "2 || 3", + "xtend": "~4.0.1" + } + }, "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", "dev": true, "requires": { - "json-stable-stringify": "^1.0.0", - "through2-filter": "^2.0.0" + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" } }, "vinyl": { @@ -1525,6 +1531,42 @@ "value-or-function": "^3.0.0", "vinyl": "^2.0.0", "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "http://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", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } } } } @@ -1565,25 +1607,22 @@ } }, "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", "dev": true, "requires": { - "async": "^1.4.0", + "async": "^2.5.0", "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" }, "dependencies": { "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -1644,9 +1683,9 @@ } }, "highlight.js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", - "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", + "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==", "dev": true }, "homedir-polyfill": { @@ -1698,7 +1737,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { @@ -1724,7 +1763,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { @@ -1876,14 +1915,11 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json-stable-stringify": { + "json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "jsonfile": { "version": "4.0.0", @@ -1895,33 +1931,20 @@ }, "dependencies": { "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true, "optional": true } } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -1939,7 +1962,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1954,7 +1977,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1990,7 +2013,7 @@ }, "lodash": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", "dev": true }, @@ -2113,15 +2136,9 @@ "lodash.escape": "^3.0.0" } }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, "lru-cache": { "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, @@ -2164,6 +2181,12 @@ "object-visit": "^1.0.0" } }, + "marked": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", + "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==", + "dev": true + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -2196,7 +2219,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -2223,7 +2246,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -2232,7 +2255,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -2246,7 +2269,7 @@ }, "multipipe": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "resolved": "http://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", "dev": true, "requires": { @@ -2273,9 +2296,9 @@ } }, "natives": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz", - "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", "dev": true }, "normalize-path": { @@ -2412,7 +2435,7 @@ "dependencies": { "minimist": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true } @@ -2437,7 +2460,7 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -2452,6 +2475,12 @@ "path-root": "^0.1.1" } }, + "parse-node-version": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", + "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", + "dev": true + }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -2472,7 +2501,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -2572,7 +2601,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, @@ -2583,9 +2612,9 @@ "dev": true }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "pump": { @@ -2638,7 +2667,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -2713,12 +2742,12 @@ "dev": true }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", + "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" } }, "resolve-dir": { @@ -2752,16 +2781,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -2770,7 +2789,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -2779,7 +2798,7 @@ }, "semver": { "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true }, @@ -2813,9 +2832,9 @@ } }, "shelljs": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz", - "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", "dev": true, "requires": { "glob": "^7.0.0", @@ -2824,9 +2843,9 @@ }, "dependencies": { "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3054,13 +3073,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -3090,12 +3109,12 @@ "dev": true }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "readable-stream": "^2.1.5", + "readable-stream": "~2.3.6", "xtend": "~4.0.1" }, "dependencies": { @@ -3107,7 +3126,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -3122,7 +3141,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -3132,9 +3151,9 @@ } }, "through2-filter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", "dev": true, "requires": { "through2": "~2.0.0", @@ -3218,9 +3237,9 @@ } }, "typedoc": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.12.0.tgz", - "integrity": "sha512-dsdlaYZ7Je8JC+jQ3j2Iroe4uyD0GhqzADNUVyBRgLuytQDP/g0dPkAw5PdM/4drnmmJjRzSWW97FkKo+ITqQg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.13.0.tgz", + "integrity": "sha512-jQWtvPcV+0fiLZAXFEe70v5gqjDO6pJYJz4mlTtmGJeW2KRoIU/BEfktma6Uj8Xii7UakuZjbxFewl3UYOkU/w==", "dev": true, "requires": { "@types/fs-extra": "^5.0.3", @@ -3239,19 +3258,13 @@ "progress": "^2.0.0", "shelljs": "^0.8.2", "typedoc-default-themes": "^0.5.0", - "typescript": "3.0.x" + "typescript": "3.1.x" }, "dependencies": { "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "marked": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", - "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "minimatch": { @@ -3262,6 +3275,12 @@ "requires": { "brace-expansion": "^1.1.7" } + }, + "typescript": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", + "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", + "dev": true } } }, @@ -3272,30 +3291,31 @@ "dev": true }, "typescript": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.3.tgz", - "integrity": "sha512-kk80vLW9iGtjMnIv11qyxLqZm20UklzuR2tL0QAnDIygIUIemcZMxlMWudl9OOt76H3ntVzcTiddQ1/pAAJMYg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", + "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==", "dev": true }, "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "dev": true, "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -3339,7 +3359,7 @@ }, "unique-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", "dev": true }, @@ -3477,7 +3497,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3489,7 +3509,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -3537,9 +3557,9 @@ "dev": true }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, "replace-ext": { @@ -3573,13 +3593,6 @@ "isexe": "^2.0.0" } }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -3597,19 +3610,6 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } } } } diff --git a/package.json b/package.json index bcdecba..fc49b28 100644 --- a/package.json +++ b/package.json @@ -29,9 +29,9 @@ "devDependencies": { "gulp": "^3.9.1", "gulp-typedoc": "^2.2.1", - "gulp-typescript": "^5.0.0-alpha.3", + "gulp-typescript": "^5.0.0", "make-dir": "^1.3.0", - "typedoc": "^0.12.0", - "typescript": "^3.0.3" + "typedoc": "^0.13.0", + "typescript": "~3.2.2" } } From eb44a542c01e9eb712710d540993ae978a678ef1 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Wed, 19 Dec 2018 20:14:53 -0500 Subject: [PATCH 02/37] rename ./{config/ => }tsconfig.json --- config/tsconfig.json | 12 ------------ gulpfile.js | 2 +- tsconfig.json | 10 ++++++++++ 3 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 config/tsconfig.json create mode 100644 tsconfig.json diff --git a/config/tsconfig.json b/config/tsconfig.json deleted file mode 100644 index bd37467..0000000 --- a/config/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target" : "ES2017", - "module" : "commonjs", - "removeComments" : true, - "strictNullChecks" : true, - "strictFunctionTypes" : true, - "noImplicitAny" : true, - "noImplicitThis" : true, - "noEmitOnError" : true - } -} diff --git a/gulpfile.js b/gulpfile.js index e8f09a5..d3c47d4 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -13,7 +13,7 @@ const Ajv = require('ajv') const sdo_jsd = require('./index.js') -const tsconfig = require('./config/tsconfig.json') +const tsconfig = require('./tsconfig.json') const typedocconfig = require('./config/typedoc.json') diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..062bed7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target" : "ES2017", + "module" : "commonjs", + "strict" : true, + "noImplicitReturns" : true, + "removeComments" : true, + "noEmitOnError" : true + } +} From 1224d1f326a8fc430b67702f3af24926da82c8f0 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Wed, 19 Dec 2018 20:16:29 -0500 Subject: [PATCH 03/37] rewrite requireOther && add .d.ts --- lib/requireJSONLD.d.ts | 23 +++++++++++++++++++++ lib/requireJSONLD.js | 28 ++++++++++++++++++++++++++ lib/requireOther.js | 45 ------------------------------------------ 3 files changed, 51 insertions(+), 45 deletions(-) create mode 100644 lib/requireJSONLD.d.ts create mode 100644 lib/requireJSONLD.js delete mode 100644 lib/requireOther.js diff --git a/lib/requireJSONLD.d.ts b/lib/requireJSONLD.d.ts new file mode 100644 index 0000000..e06259d --- /dev/null +++ b/lib/requireJSONLD.d.ts @@ -0,0 +1,23 @@ +declare type JSONValue = JSONObject|JSONArray|JSONPrimitive +declare interface JSONObject { + [key: string]: JSONValue; +} +declare interface JSONArray extends Array { +} +declare type JSONPrimitive = string|number|boolean|null + +/** + * Like node.js `require()`, but can be used on `.jsonld` files. + * @param filepath the relative path of the file to read + * @returns a JSON value that is the result of parsing the file contents + */ +declare function requireJSONLD(filepath: string): JSONValue; + +/** + * Asynchronous {@link requireJSONLD}. + * @param filepath the relative path of the file to read + * @returns a JSON value that is the result of parsing the file contents + */ +declare function requireJSONLDAsync(filepath: string): Promise; + +export { requireJSONLD, requireJSONLDAsync } diff --git a/lib/requireJSONLD.js b/lib/requireJSONLD.js new file mode 100644 index 0000000..35d50db --- /dev/null +++ b/lib/requireJSONLD.js @@ -0,0 +1,28 @@ +const fs = require('fs') +const util = require('util') + +module.exports.requireJSONLD = function requireJSONLD(filepath) { + let data = fs.readFileSync(filepath, 'utf8') + let object; + try { + object = JSON.parse(data) + } catch (e) { + e.filename = filepath + console.error(e) + throw e + } + return object +} + +module.exports.requireJSONLDAsync = async function requireJSONLDAsync(filepath) { + let data = await util.promisify(fs.readFile)(filepath, 'utf8') + let object; + try { + object = JSON.parse(data) + } catch (e) { + e.filename = filepath + console.error(e) + throw e + } + return object +} diff --git a/lib/requireOther.js b/lib/requireOther.js deleted file mode 100644 index bbedda0..0000000 --- a/lib/requireOther.js +++ /dev/null @@ -1,45 +0,0 @@ -const fs = require('fs') -const util = require('util') - -/** - * @summary Like node.js `require()`, but can be used on files other than `.js` or `.json`. - * @description Example: `requireOther('my-data.jsonld')`. - * @param {string} filepath the path of the file to read - * @returns {(string|number|boolean|?Object|Array|null)} the text of the file, parsed by JSON - */ -function requireOther(filepath) { - let object; - try { - object = require(filepath) - } catch (e) { - let data = fs.readFileSync(filepath, 'utf8') - try { - object = JSON.parse(data) - } catch (e) { - e.filename = filepath - console.error(e) - throw e - } - } - return object -} - -/** - * @summary asynchronous version of `requireOther`. - * @param {string} filepath the path of the file to read - * @returns {(string|number|boolean|?Object|Array|null)} the text of the file, parsed by JSON - */ -async function requireOtherAsync(filepath) { - let data = await util.promisify(fs.readFile)(filepath, 'utf8') - let object; - try { - object = JSON.parse(data) - } catch (e) { - e.filename = filepath - console.error(e) - throw e - } - return object -} - -module.exports = {requireOther,requireOtherAsync} From 89f479d9064849ad8ce535b127857ae904ba2e9a Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Wed, 19 Dec 2018 23:25:23 -0500 Subject: [PATCH 04/37] use requireJSONLD --- gulpfile.js | 3 ++- index.js | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index d3c47d4..18e114b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -11,6 +11,7 @@ const Ajv = require('ajv') // require('typedoc') // DO NOT REMOVE … peerDependency of `gulp-typedoc` // require('typescript') // DO NOT REMOVE … peerDependency of `gulp-typescript` +const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') const sdo_jsd = require('./index.js') const tsconfig = require('./tsconfig.json') @@ -156,7 +157,7 @@ gulp.task('dist-jsonld', ['validate'], async function () { gulp.task('dist-ts', ['dist-jsonld'], async function () { - const JSONLD = JSON.parse(await util.promisify(fs.readFile)('./dist/schemaorg.jsonld', 'utf8'))['@graph'] + const JSONLD = (await requireJSONLDAsync(path.join(__dirname, './dist/schemaorg.jsonld')))['@graph'] /** * @summary Print a list of links as a in jsdoc comment. * @private diff --git a/index.js b/index.js index 2c103f9..5c3e101 100644 --- a/index.js +++ b/index.js @@ -5,7 +5,7 @@ const util = require('util') const Ajv = require('ajv') -const {requireOtherAsync} = require('./lib/requireOther.js') +const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') /** @@ -21,7 +21,7 @@ async getMetaSchemata() { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, './meta/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireOtherAsync(path.resolve(__dirname, './meta/', filename))) + .map((filename) => requireJSONLDAsync(path.join(__dirname, './meta/', filename))) ) }, @@ -35,7 +35,7 @@ async getSchemata() { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, './schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireOtherAsync(path.resolve(__dirname, './schema/', filename))) + .map((filename) => requireJSONLDAsync(path.join(__dirname, './schema/', filename))) ) }, @@ -68,7 +68,7 @@ async getSchemata() { * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ async sdoValidate(document, type = null) { - let doc = (typeof document === 'string') ? await requireOtherAsync(document) : document + let doc = (typeof document === 'string') ? await requireJSONLDAsync(document) : document const [META_SCHEMATA, SCHEMATA] = await Promise.all([module.exports.getMetaSchemata(), module.exports.getSchemata()]) if (type === null) { let doctype = doc['@type'] From 33294cac1825c958d274a8019f64b32beafce75c Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Thu, 20 Dec 2018 00:15:44 -0500 Subject: [PATCH 05/37] add json & json-schema & json-ld declarations --- lib/json-ld.d.ts | 35 +++++++++++ lib/json-schema.d.ts | 139 +++++++++++++++++++++++++++++++++++++++++ lib/json.d.ts | 22 +++++++ lib/requireJSONLD.d.ts | 15 ++--- 4 files changed, 200 insertions(+), 11 deletions(-) create mode 100644 lib/json-ld.d.ts create mode 100644 lib/json-schema.d.ts create mode 100644 lib/json.d.ts diff --git a/lib/json-ld.d.ts b/lib/json-ld.d.ts new file mode 100644 index 0000000..738a166 --- /dev/null +++ b/lib/json-ld.d.ts @@ -0,0 +1,35 @@ +import { JSONValue, JSONObject, JSONArray } from './json.d' +import { JSONSchema } from './json-schema.d' + + +/** + * A single JSON-LD document. + */ +export declare interface JSONLDObject extends CommonObject { + '@context'?: JSONObject|JSONArray|string|null; + '@graph'?: { [key: string]: CommonObject; }|CommonObject[]; + [key: string]: any/*JSONValue*/; +} + +declare interface CommonObject { + /** + * @format uri + */ + '@id'?: string; + '@value'?: string|number|boolean|null; + '@language'?: string|null; + '@type'?: string[]|string|null; + '@container'?: '@language'|'@list'|'@index'|'@set'|null; + '@list'?: unknown; + '@set'?: unknown; + '@reverse'?: { [key: string]: CommonObject; }|string|null; + /** + * @format uri + */ + '@base'?: string|null; + /** + * @format uri + */ + '@vocab'?: string|null; + [key: string]: any/*CommonObject*/; +} diff --git a/lib/json-schema.d.ts b/lib/json-schema.d.ts new file mode 100644 index 0000000..39603b9 --- /dev/null +++ b/lib/json-schema.d.ts @@ -0,0 +1,139 @@ +import { JSONValue, JSONArray } from './json.d' + +/** + * A single JSON Schema. + */ +export declare type JSONSchema = JSONSchemaObject|boolean + +/** + * A JSON Schema, if that schema is an object (not a boolean). + */ +declare interface JSONSchemaObject { + /** + * @format 'uri-reference' + */ + $id?: string; + /** + * @format 'uri' + */ + $schema?: string; + /** + * @format 'uri-reference' + */ + $ref?: string; + $comment?: string; + title?: string; + description?: string; + default?: JSONValue; + /** + * @default false + */ + readOnly?: boolean; + examples?: JSONArray; + /** + * @exclusiveMinimum 0 + */ + multipleOf?: number; + maximum?: number; + exclusiveMaximum?: number; + minimum?: number; + exclusiveMinimum?: number; + maxLength?: nonNegativeInteger; + minLength?: nonNegativeIntegerDefault0; + /** + * @format regex + */ + pattern?: string; + additionalItems?: JSONSchema; + /** + * @default true + */ + items?: JSONSchema|schemaArray; + maxItems?: nonNegativeInteger; + minItems?: nonNegativeIntegerDefault0; + /** + * @default false + */ + uniqueItems?: boolean; + contains?: JSONSchema; + maxProperties?: nonNegativeInteger; + minProperties?: nonNegativeIntegerDefault0; + required?: stringArray; + additionalProperties?: JSONSchema; + /** + * @default {} + */ + definitions?: { + [key: string]: JSONSchema; + }; + /** + * @default {} + */ + properties?: { + [key: string]: JSONSchema; + }; + /** + * @default {} + */ + patternProperties?: { + [ + /** + * @format regex + */ + key: string + ]: JSONSchema; + }, + dependencies?: { + [key: string]: JSONSchema|stringArray; + }, + propertyNames?: JSONSchema; + const?: JSONValue; + /** + * @minItems 1 + * @uniqueItems true + */ + enum?: JSONArray; + /** + * @minItems 1 + * @uniqueItems true + */ + type?: simpleTypes[]|simpleTypes; + format?: string; + contentMediaType?: string; + contentEncoding?: string; + if?: JSONSchema; + then?: JSONSchema; + else?: JSONSchema; + allOf?: schemaArray; + anyOf?: schemaArray; + oneOf?: schemaArray; + not?: JSONSchema; +} + +/** + * @minItems 1 + */ +declare type schemaArray = JSONSchema[] + + +/** + * @type integer + */ +declare type integer = number + +/** + * @type integer + * @minimum 0 + */ +declare type nonNegativeInteger = integer + +/** + * @type integer + * @minimum 0 + * @default 0 + */ +declare type nonNegativeIntegerDefault0 = integer + +declare type simpleTypes = 'array'|'boolean'|'integer'|'null'|'number'|'object'|'string' + +declare type stringArray = string[] diff --git a/lib/json.d.ts b/lib/json.d.ts new file mode 100644 index 0000000..367f38c --- /dev/null +++ b/lib/json.d.ts @@ -0,0 +1,22 @@ +/** + * Any JSON value. + */ +export declare type JSONValue = JSONObject|JSONArray|JSONPrimitive + +/** + * Any JSON object. + */ +export declare interface JSONObject { + [key: string]: JSONValue; +} + +/** + * Any JSON array. + */ +export declare interface JSONArray extends Array { +} + +/** + * Any non-object, non-array JSON value. + */ +export declare type JSONPrimitive = string|number|boolean|null diff --git a/lib/requireJSONLD.d.ts b/lib/requireJSONLD.d.ts index e06259d..7d20846 100644 --- a/lib/requireJSONLD.d.ts +++ b/lib/requireJSONLD.d.ts @@ -1,23 +1,16 @@ -declare type JSONValue = JSONObject|JSONArray|JSONPrimitive -declare interface JSONObject { - [key: string]: JSONValue; -} -declare interface JSONArray extends Array { -} -declare type JSONPrimitive = string|number|boolean|null +import { JSONValue } from './json.d' + /** * Like node.js `require()`, but can be used on `.jsonld` files. * @param filepath the relative path of the file to read * @returns a JSON value that is the result of parsing the file contents */ -declare function requireJSONLD(filepath: string): JSONValue; +export declare function requireJSONLD(filepath: string): JSONValue; /** * Asynchronous {@link requireJSONLD}. * @param filepath the relative path of the file to read * @returns a JSON value that is the result of parsing the file contents */ -declare function requireJSONLDAsync(filepath: string): Promise; - -export { requireJSONLD, requireJSONLDAsync } +export declare function requireJSONLDAsync(filepath: string): Promise; From 2f9b825ceea5a776404dcadd03a53881fbc85310 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Wed, 19 Dec 2018 23:37:06 -0500 Subject: [PATCH 06/37] rename index.js -> src/index.ts && make package exports --- gulpfile.js | 10 +++++- index.js | 94 +++------------------------------------------------- index.ts | 5 +++ src/index.ts | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+), 91 deletions(-) create mode 100644 index.ts create mode 100644 src/index.ts diff --git a/gulpfile.js b/gulpfile.js index 18e114b..16ba42e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -12,18 +12,25 @@ const Ajv = require('ajv') // require('typescript') // DO NOT REMOVE … peerDependency of `gulp-typescript` const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') -const sdo_jsd = require('./index.js') const tsconfig = require('./tsconfig.json') const typedocconfig = require('./config/typedoc.json') gulp.task('validate', async function () { + const sdo_jsd = require('./index.js') const [META_SCHEMATA, SCHEMATA] = await Promise.all([sdo_jsd.getMetaSchemata(), sdo_jsd.getSchemata()]) new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) }) +gulp.task('dist-index', async function() { + return gulp.src('./src/index.ts') + .pipe(typescript(tsconfig.compilerOptions)) + .pipe(gulp.dest('./dist/')) +}) + gulp.task('dist-jsonld', ['validate'], async function () { + const sdo_jsd = require('./index.js') // ++++ LOCAL VARIABLES ++++ const SCHEMATA = (await sdo_jsd.getSchemata()) .filter((jsd) => path.parse(new url.URL(jsd['$id']).pathname).name !== 'json-ld') // TODO: reference json-ld.jsd externally @@ -252,6 +259,7 @@ gulp.task('dist', ['dist-ts'], async function () { }) gulp.task('test', async function () { + const sdo_jsd = require('./index.js') return Promise.all((await util.promisify(fs.readdir)('./test')).map(async (file) => { let filepath = path.resolve(__dirname, './test/', file) let returned; diff --git a/index.js b/index.js index 5c3e101..069d29b 100644 --- a/index.js +++ b/index.js @@ -1,93 +1,7 @@ -const fs = require('fs') -const path = require('path') -const url = require('url') -const util = require('util') +const index_module = require('./dist/index.js') -const Ajv = require('ajv') - -const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') - - -/** - * @module schemaorg-jsd - */ module.exports = { -/** - * @summary An array of meta-schemata against which the content schemata validate. - * @description This is for internal use only. Users should not be expected to use these meta-schemata. - * @returns {Array} an array of meta-schemata - */ -async getMetaSchemata() { - return Promise.all( - (await util.promisify(fs.readdir)(path.resolve(__dirname, './meta/'))) - .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONLDAsync(path.join(__dirname, './meta/', filename))) - ) -}, - -/** - * @summary An array of all JSON Schemata validating Schema.org vocabulary. - * @description This array contains all Schema.org schemata in this project. - * That is, schemata against which your JSON-LD documents should validate. - * @returns {Array} an array of schemata - */ -async getSchemata() { - return Promise.all( - (await util.promisify(fs.readdir)(path.resolve(__dirname, './schema/'))) - .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONLDAsync(path.join(__dirname, './schema/', filename))) - ) -}, - -/** - * @summary Validate a JSON-LD document against a Schema.org JSON schema. - * @example - * const {sdoValidate} = require('schemaorg-jsd') - * async function compile(jsdoc) { - * let is_valid; - * try { - * is_valid = await sdoValidate(jsdoc) - * } catch (e) { - * is_valid = false - * } - * console.log(is_valid) - * } - * // or you could use its Promise (if `async` keyword is not supported): - * function compilePromise(jsdoc) { - * sdoValidate(jsdoc) - * .catch((e) => false) - * .then((result) => { console.log(result) }) - * } - * - * @param {(!Object|string)} document the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file - * @param {string=} type the name of the Type to test against; should be a Class in http://schema.org/ - * ; see the API for supported Types - * ; if omitted, will test against the JSON document’s `@type` property (if it has one) - * ; if the `@type` is not supported or cannot be found, defaults to `'Thing'` - * @returns {boolean} `true` if the document passes validation - * @throws {TypeError} if the document fails validation; has a `.details` property for validation details - */ -async sdoValidate(document, type = null) { - let doc = (typeof document === 'string') ? await requireJSONLDAsync(document) : document - const [META_SCHEMATA, SCHEMATA] = await Promise.all([module.exports.getMetaSchemata(), module.exports.getSchemata()]) - if (type === null) { - let doctype = doc['@type'] - if (SCHEMATA.find((jsd) => jsd.title === `http://schema.org/${doctype}`)) { - type = doctype - } else { - if (doctype) console.warn(`Class \`${doctype}\` is not yet supported. Validating against \`Thing.jsd\` instead.`) - else console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`.`) - type = 'Thing' - } - } - let ajv = new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) - let is_data_valid = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) - if (!is_data_valid) { - let e = new TypeError(`Document ${doc['@id'] || doc.identifier || doc.name || doc} does not valiate against schema ${type}.jsd!`) - if (typeof document === 'string') e.filename = document - e.details = ajv.errors - throw e - } - return true -}, + getMetaSchemata : index_module.getMetaSchemata, + getSchemata : index_module.getSchemata, + sdoValidate : index_module.sdoValidate, } diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..76a68fb --- /dev/null +++ b/index.ts @@ -0,0 +1,5 @@ +// Note: this file exists only for typescript declaration. +// It is not meant to be compiled automatically. +// See `./index.js` for the manual output. + +export { getMetaSchemata, getSchemata, sdoValidate } from './src/index' diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..5c3e101 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,93 @@ +const fs = require('fs') +const path = require('path') +const url = require('url') +const util = require('util') + +const Ajv = require('ajv') + +const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') + + +/** + * @module schemaorg-jsd + */ +module.exports = { +/** + * @summary An array of meta-schemata against which the content schemata validate. + * @description This is for internal use only. Users should not be expected to use these meta-schemata. + * @returns {Array} an array of meta-schemata + */ +async getMetaSchemata() { + return Promise.all( + (await util.promisify(fs.readdir)(path.resolve(__dirname, './meta/'))) + .filter((filename) => path.parse(filename).ext === '.jsd') + .map((filename) => requireJSONLDAsync(path.join(__dirname, './meta/', filename))) + ) +}, + +/** + * @summary An array of all JSON Schemata validating Schema.org vocabulary. + * @description This array contains all Schema.org schemata in this project. + * That is, schemata against which your JSON-LD documents should validate. + * @returns {Array} an array of schemata + */ +async getSchemata() { + return Promise.all( + (await util.promisify(fs.readdir)(path.resolve(__dirname, './schema/'))) + .filter((filename) => path.parse(filename).ext === '.jsd') + .map((filename) => requireJSONLDAsync(path.join(__dirname, './schema/', filename))) + ) +}, + +/** + * @summary Validate a JSON-LD document against a Schema.org JSON schema. + * @example + * const {sdoValidate} = require('schemaorg-jsd') + * async function compile(jsdoc) { + * let is_valid; + * try { + * is_valid = await sdoValidate(jsdoc) + * } catch (e) { + * is_valid = false + * } + * console.log(is_valid) + * } + * // or you could use its Promise (if `async` keyword is not supported): + * function compilePromise(jsdoc) { + * sdoValidate(jsdoc) + * .catch((e) => false) + * .then((result) => { console.log(result) }) + * } + * + * @param {(!Object|string)} document the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file + * @param {string=} type the name of the Type to test against; should be a Class in http://schema.org/ + * ; see the API for supported Types + * ; if omitted, will test against the JSON document’s `@type` property (if it has one) + * ; if the `@type` is not supported or cannot be found, defaults to `'Thing'` + * @returns {boolean} `true` if the document passes validation + * @throws {TypeError} if the document fails validation; has a `.details` property for validation details + */ +async sdoValidate(document, type = null) { + let doc = (typeof document === 'string') ? await requireJSONLDAsync(document) : document + const [META_SCHEMATA, SCHEMATA] = await Promise.all([module.exports.getMetaSchemata(), module.exports.getSchemata()]) + if (type === null) { + let doctype = doc['@type'] + if (SCHEMATA.find((jsd) => jsd.title === `http://schema.org/${doctype}`)) { + type = doctype + } else { + if (doctype) console.warn(`Class \`${doctype}\` is not yet supported. Validating against \`Thing.jsd\` instead.`) + else console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`.`) + type = 'Thing' + } + } + let ajv = new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) + let is_data_valid = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) + if (!is_data_valid) { + let e = new TypeError(`Document ${doc['@id'] || doc.identifier || doc.name || doc} does not valiate against schema ${type}.jsd!`) + if (typeof document === 'string') e.filename = document + e.details = ajv.errors + throw e + } + return true +}, +} From a60bf9329bb96206742e6285027e714bb68b1af9 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Thu, 20 Dec 2018 01:51:33 -0500 Subject: [PATCH 07/37] convert package js to ts --- src/index.ts | 94 ++++++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 44 deletions(-) diff --git a/src/index.ts b/src/index.ts index 5c3e101..fdb71fc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,48 +1,48 @@ -const fs = require('fs') -const path = require('path') -const url = require('url') -const util = require('util') +import * as fs from 'fs' +import * as path from 'path' +import * as util from 'util' -const Ajv = require('ajv') +import * as Ajv from 'ajv' -const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') +import { JSONSchemaObject } from '../lib/json-schema.d' +import { JSONLDObject } from '../lib/json-ld.d' +import { requireJSONLDAsync } from '../lib/requireJSONLD' /** - * @module schemaorg-jsd - */ -module.exports = { -/** - * @summary An array of meta-schemata against which the content schemata validate. - * @description This is for internal use only. Users should not be expected to use these meta-schemata. - * @returns {Array} an array of meta-schemata + * An array of meta-schemata against which the content schemata validate. + * + * This is for internal use only. Users should not be expected to use these meta-schemata. + * @returns an array of meta-schemata */ -async getMetaSchemata() { +export async function getMetaSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, './meta/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONLDAsync(path.join(__dirname, './meta/', filename))) + .map((filename) => requireJSONLDAsync(path.join(__dirname, './meta/', filename)) as Promise) ) -}, +} /** - * @summary An array of all JSON Schemata validating Schema.org vocabulary. - * @description This array contains all Schema.org schemata in this project. + * An array of all JSON Schemata validating Schema.org vocabulary. + * + * This array contains all Schema.org schemata in this project. * That is, schemata against which your JSON-LD documents should validate. - * @returns {Array} an array of schemata + * @returns an array of schemata */ -async getSchemata() { +export async function getSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, './schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONLDAsync(path.join(__dirname, './schema/', filename))) + .map((filename) => requireJSONLDAsync(path.join(__dirname, './schema/', filename)) as Promise) ) -}, +} /** - * @summary Validate a JSON-LD document against a Schema.org JSON schema. - * @example - * const {sdoValidate} = require('schemaorg-jsd') + * Validate a JSON-LD document against a Schema.org JSON schema. + * + * ```js + * const { sdoValidate } = require('schemaorg-jsd') * async function compile(jsdoc) { * let is_valid; * try { @@ -58,36 +58,42 @@ async getSchemata() { * .catch((e) => false) * .then((result) => { console.log(result) }) * } + * ``` * - * @param {(!Object|string)} document the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file - * @param {string=} type the name of the Type to test against; should be a Class in http://schema.org/ + * @param document the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file + * @param type the name of the Type to test against; should be a Class in http://schema.org/ * ; see the API for supported Types * ; if omitted, will test against the JSON document’s `@type` property (if it has one) * ; if the `@type` is not supported or cannot be found, defaults to `'Thing'` - * @returns {boolean} `true` if the document passes validation + * @returns `true` if the document passes validation * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ -async sdoValidate(document, type = null) { - let doc = (typeof document === 'string') ? await requireJSONLDAsync(document) : document - const [META_SCHEMATA, SCHEMATA] = await Promise.all([module.exports.getMetaSchemata(), module.exports.getSchemata()]) +export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { + let doc: JSONLDObject = (typeof document === 'string') ? await requireJSONLDAsync(document) as JSONLDObject : document + const [META_SCHEMATA, SCHEMATA]: JSONSchemaObject[][] = await Promise.all([getMetaSchemata(), getSchemata()]) if (type === null) { - let doctype = doc['@type'] - if (SCHEMATA.find((jsd) => jsd.title === `http://schema.org/${doctype}`)) { - type = doctype - } else { - if (doctype) console.warn(`Class \`${doctype}\` is not yet supported. Validating against \`Thing.jsd\` instead.`) - else console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`.`) - type = 'Thing' - } + let doctype: string[]|string|null = doc['@type'] || null + if (doctype instanceof Array && doctype.length) { + return (await Promise.all(doctype.map((dt) => sdoValidate(doc, dt)))).reduce((a, b) => a && b) + } else if (typeof doctype === 'string') { + type = (SCHEMATA.find((jsd) => jsd.title === `http://schema.org/${doctype}`)) ? doctype : + (console.warn(`Class \`${doctype}\` is not yet supported. Validating against \`Thing.jsd\` instead…`), 'Thing') + } else { + console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`…`) + type = 'Thing' + } } - let ajv = new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) - let is_data_valid = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) + + let ajv: Ajv.Ajv = new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) + let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) as boolean if (!is_data_valid) { - let e = new TypeError(`Document ${doc['@id'] || doc.identifier || doc.name || doc} does not valiate against schema ${type}.jsd!`) + let e: TypeError&{ + filename?: string; + details?: Ajv.ErrorObject; + } = new TypeError(`Document ${doc['@id'] || doc.identifier || doc.name || doc} does not valiate against schema ${type}.jsd!`) if (typeof document === 'string') e.filename = document - e.details = ajv.errors + e.details = ajv.errors ![0] throw e } return true -}, } From c3607c3b45191318cbc97bd2405b78a5738d91d0 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 22 Dec 2018 20:37:33 -0500 Subject: [PATCH 08/37] clean up .d.ts imports/exports --- lib/json-ld.d.ts | 7 ++++--- lib/json-schema.d.ts | 18 ++++++++++-------- lib/json.d.ts | 10 ++++++---- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/lib/json-ld.d.ts b/lib/json-ld.d.ts index 738a166..2997335 100644 --- a/lib/json-ld.d.ts +++ b/lib/json-ld.d.ts @@ -1,17 +1,16 @@ import { JSONValue, JSONObject, JSONArray } from './json.d' -import { JSONSchema } from './json-schema.d' /** * A single JSON-LD document. */ -export declare interface JSONLDObject extends CommonObject { +interface JSONLDObject extends CommonObject { '@context'?: JSONObject|JSONArray|string|null; '@graph'?: { [key: string]: CommonObject; }|CommonObject[]; [key: string]: any/*JSONValue*/; } -declare interface CommonObject { +interface CommonObject { /** * @format uri */ @@ -33,3 +32,5 @@ declare interface CommonObject { '@vocab'?: string|null; [key: string]: any/*CommonObject*/; } + +export { JSONLDObject } diff --git a/lib/json-schema.d.ts b/lib/json-schema.d.ts index 39603b9..9fc1fa6 100644 --- a/lib/json-schema.d.ts +++ b/lib/json-schema.d.ts @@ -3,12 +3,12 @@ import { JSONValue, JSONArray } from './json.d' /** * A single JSON Schema. */ -export declare type JSONSchema = JSONSchemaObject|boolean +type JSONSchema = JSONSchemaObject|boolean /** * A JSON Schema, if that schema is an object (not a boolean). */ -declare interface JSONSchemaObject { +interface JSONSchemaObject { /** * @format 'uri-reference' */ @@ -113,27 +113,29 @@ declare interface JSONSchemaObject { /** * @minItems 1 */ -declare type schemaArray = JSONSchema[] +type schemaArray = JSONSchema[] /** * @type integer */ -declare type integer = number +type integer = number /** * @type integer * @minimum 0 */ -declare type nonNegativeInteger = integer +type nonNegativeInteger = integer /** * @type integer * @minimum 0 * @default 0 */ -declare type nonNegativeIntegerDefault0 = integer +type nonNegativeIntegerDefault0 = integer -declare type simpleTypes = 'array'|'boolean'|'integer'|'null'|'number'|'object'|'string' +type simpleTypes = 'array'|'boolean'|'integer'|'null'|'number'|'object'|'string' -declare type stringArray = string[] +type stringArray = string[] + +export { JSONSchema, JSONSchemaObject } diff --git a/lib/json.d.ts b/lib/json.d.ts index 367f38c..47618e6 100644 --- a/lib/json.d.ts +++ b/lib/json.d.ts @@ -1,22 +1,24 @@ /** * Any JSON value. */ -export declare type JSONValue = JSONObject|JSONArray|JSONPrimitive +type JSONValue = JSONObject|JSONArray|JSONPrimitive /** * Any JSON object. */ -export declare interface JSONObject { +interface JSONObject { [key: string]: JSONValue; } /** * Any JSON array. */ -export declare interface JSONArray extends Array { +interface JSONArray extends Array { } /** * Any non-object, non-array JSON value. */ -export declare type JSONPrimitive = string|number|boolean|null +type JSONPrimitive = string|number|boolean|null + +export { JSONValue, JSONObject, JSONArray, JSONPrimitive } From b08a111fd8a57492e58922dbfe01822fefc0935e Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 22 Dec 2018 20:38:07 -0500 Subject: [PATCH 09/37] update docs & formatting --- README.md | 98 +++++++++++++++++++++++++++------------------------- src/index.ts | 43 ++++++++++++----------- 2 files changed, 73 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 963f1c1..9a431cc 100644 --- a/README.md +++ b/README.md @@ -16,32 +16,32 @@ It returns a Promise object, so you may use `await` or you may use standard `Pro Read the JSDoc in `./index.js` for further details. ```js -const {sdoValidate} = require('schemaorg-jsd') +const { sdoValidate } = require('schemaorg-jsd') async function run() { -// use any javascript object -let school = { - '@context': 'http://schema.org/', - '@type': 'Place', - name: `Blacksburg, ${usState('Virginia').code}`, -} -school['@id'] = 'http://www.blacksburg.gov/' -try { - let is_valid_place = sdoValidate(school, 'Place') // validate against the Place schema - console.log(await is_valid_place) // return `true` if the document passes validation -} catch (e) { // throw an `Error` if the document fails validation - console.error(e) - console.error(e.filename) // file where the invalidation occurred - console.error(e.details) // more json-schema specifics; see -} - -// require a package -let me = require('./me.json') -await sdoValidate(me, 'Person') - -// use a string (relative path) of the filename -let org = './my-org.jsonld' -await sdoValidate(org, 'Organization') + // example 1: use any javascript object + let school = { + '@context': 'http://schema.org/', + '@type': 'Place', + name: `Blacksburg, ${usState('Virginia').code}`, + } + school['@id'] = 'http://www.blacksburg.gov/' + try { + let is_valid_place = sdoValidate(school, 'Place') // validate against the 'Place' schema + console.log(await is_valid_place) // return `true` if the document passes validation + } catch (e) { // throw an `Error` if the document fails validation + console.error(e) + console.error(e.filename) // file where the invalidation occurred + console.error(e.details) // more json-schema specifics; see + } + + // example 2: require a package + let me = require('./me.json') + console.log(await sdoValidate(me, 'Person')) + + // example 3: use a string (relative path) of the filename + let org = './my-org.jsonld' + console.log(await sdoValidate(org, 'Organization')) } ``` @@ -59,26 +59,28 @@ pre-packaged and ready to add. const Ajv = require('ajv') const sdo_jsd = require('schemaorg-jsd') +const META_SCHEMATA = sdo_jsd.getMetaSchemata() // a Promise +const SCHEMATA = sdo_jsd.getSchemata() // a Promise + let my_schema = { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://chharvey.github.io/example.jsd", - "title": "Array", - "description": "An array of Schema.org Things.", - "type": "array", - "items": { "$ref": "https://chharvey.github.io/schemaorg-jsd/schema/Thing.jsd" } + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://chharvey.github.io/example.jsd", + "title": "Array", + "description": "An array of Schema.org Things.", + "type": "array", + "items": { "$ref": "https://chharvey.github.io/schemaorg-jsd/schema/Thing.jsd" } } let my_data = [ - { "@context": "http://schema.org/", "@type": "Thing", "name": "Thing 1" }, - { "@context": "http://schema.org/", "@type": "Thing", "name": "Thing 2" } + { "@context": "http://schema.org/", "@type": "Thing", "name": "Thing 1" }, + { "@context": "http://schema.org/", "@type": "Thing", "name": "Thing 2" } ] async function run() { - const SCHEMATA = sdo_jsd.getSchemata() -let ajv = new Ajv().addSchema(await SCHEMATA) -ajv.validate(my_schema, my_data) -// Note that the `Ajv#validate()` method’s parameters are reversed from this package’s `sdoValidate()`: -// `Ajv#validate(schema, data)` -// `sdoValidate(data, schemaTitle)` + let ajv = new Ajv().addMetaSchema(await META_SCHEMATA).addSchema(await SCHEMATA) + ajv.validate(my_schema, my_data) + // Note that the `Ajv#validate()` method’s parameters are reversed from this package’s `sdoValidate()`: + // `Ajv#validate(schema, data)` + // `sdoValidate(data, schemaTitle)` } ``` @@ -98,16 +100,18 @@ $ # open ./docs/api/index.html in your browser **(Note: These docs will be published online soon, so you won’t have to build locally.)** ```ts -import * as sdo from 'schemaorg-jsd' // TEMP: this import might change +import * as sdo from 'schemaorg-jsd/dist/schemaorg.d' // TEMP: this import might change + class Person { - private _name: string - /** - * Construct a new Person object. - * @param jsondata an object validating against the schemaorg-jsd `Person` schema - */ - constructor(jsondata: sdo.Person) { - this._name = jsondata.name - } + /** This person’s name. */ + private _name: string; + /** + * Construct a new Person object. + * @param jsondata an object validating against the schemaorg-jsd `Person` schema + */ + constructor(jsondata: sdo.Person) { + this._name = jsondata.name + } } ``` diff --git a/src/index.ts b/src/index.ts index fdb71fc..c359e7b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -44,34 +44,35 @@ export async function getSchemata(): Promise { * ```js * const { sdoValidate } = require('schemaorg-jsd') * async function compile(jsdoc) { - * let is_valid; - * try { - * is_valid = await sdoValidate(jsdoc) - * } catch (e) { - * is_valid = false - * } - * console.log(is_valid) + * let is_valid; + * try { + * is_valid = await sdoValidate(jsdoc) + * } catch (e) { + * is_valid = false + * } + * console.log(is_valid) * } * // or you could use its Promise (if `async` keyword is not supported): * function compilePromise(jsdoc) { - * sdoValidate(jsdoc) - * .catch((e) => false) - * .then((result) => { console.log(result) }) + * sdoValidate(jsdoc) + * .catch((e) => false) + * .then((result) => { console.log(result) }) * } * ``` * * @param document the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file * @param type the name of the Type to test against; should be a Class in http://schema.org/ - * ; see the API for supported Types - * ; if omitted, will test against the JSON document’s `@type` property (if it has one) - * ; if the `@type` is not supported or cannot be found, defaults to `'Thing'` - * @returns `true` if the document passes validation + * - see the API for supported Types + * - if omitted, will test against the JSON document’s `'@type'` property (if it has one) + * - if `'@type'` is an array, each value of that array is tested + * - if the `'@type'` is not supported or cannot be found, defaults to `'Thing'` + * @returns does the document pass validation? * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { let doc: JSONLDObject = (typeof document === 'string') ? await requireJSONLDAsync(document) as JSONLDObject : document const [META_SCHEMATA, SCHEMATA]: JSONSchemaObject[][] = await Promise.all([getMetaSchemata(), getSchemata()]) - if (type === null) { + if (type === null) { let doctype: string[]|string|null = doc['@type'] || null if (doctype instanceof Array && doctype.length) { return (await Promise.all(doctype.map((dt) => sdoValidate(doc, dt)))).reduce((a, b) => a && b) @@ -82,18 +83,18 @@ export async function sdoValidate(document: JSONLDObject|string, type: string|nu console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`…`) type = 'Thing' } - } + } let ajv: Ajv.Ajv = new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) as boolean - if (!is_data_valid) { + if (!is_data_valid) { let e: TypeError&{ filename?: string; details?: Ajv.ErrorObject; } = new TypeError(`Document ${doc['@id'] || doc.identifier || doc.name || doc} does not valiate against schema ${type}.jsd!`) - if (typeof document === 'string') e.filename = document + if (typeof document === 'string') e.filename = document e.details = ajv.errors ![0] - throw e - } - return true + throw e + } + return true } From 3c4a40029d75f518083e032736d44fc5b4c47fd7 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 28 Dec 2018 13:06:24 -0500 Subject: [PATCH 10/37] refine `sdoValidate` return type: `Promise` to `Promise` `sdoValidate()` will never return `Promise`, because it would throw an error instead --- src/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index c359e7b..529131e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -69,15 +69,16 @@ export async function getSchemata(): Promise { * @returns does the document pass validation? * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ -export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { +export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { + const META_SCHEMATA: Promise = getMetaSchemata() + const SCHEMATA : Promise = getSchemata() let doc: JSONLDObject = (typeof document === 'string') ? await requireJSONLDAsync(document) as JSONLDObject : document - const [META_SCHEMATA, SCHEMATA]: JSONSchemaObject[][] = await Promise.all([getMetaSchemata(), getSchemata()]) if (type === null) { let doctype: string[]|string|null = doc['@type'] || null if (doctype instanceof Array && doctype.length) { return (await Promise.all(doctype.map((dt) => sdoValidate(doc, dt)))).reduce((a, b) => a && b) } else if (typeof doctype === 'string') { - type = (SCHEMATA.find((jsd) => jsd.title === `http://schema.org/${doctype}`)) ? doctype : + type = ((await SCHEMATA).find((jsd) => jsd.title === `http://schema.org/${doctype}`)) ? doctype : (console.warn(`Class \`${doctype}\` is not yet supported. Validating against \`Thing.jsd\` instead…`), 'Thing') } else { console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`…`) @@ -85,7 +86,7 @@ export async function sdoValidate(document: JSONLDObject|string, type: string|nu } } - let ajv: Ajv.Ajv = new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) + let ajv: Ajv.Ajv = new Ajv().addMetaSchema(await META_SCHEMATA).addSchema(await SCHEMATA) let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) as boolean if (!is_data_valid) { let e: TypeError&{ From 309e61beb41ce6688b866525095da9794f798bf2 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 28 Dec 2018 14:23:13 -0500 Subject: [PATCH 11/37] improve JSON object types --- lib/json-ld.d.ts | 17 ++++++++++++----- lib/json-schema.d.ts | 8 ++++++-- lib/json.d.ts | 5 ++--- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/json-ld.d.ts b/lib/json-ld.d.ts index 2997335..7a556b9 100644 --- a/lib/json-ld.d.ts +++ b/lib/json-ld.d.ts @@ -5,12 +5,19 @@ import { JSONValue, JSONObject, JSONArray } from './json.d' * A single JSON-LD document. */ interface JSONLDObject extends CommonObject { - '@context'?: JSONObject|JSONArray|string|null; + '@context'?: (ContextObject|string)[]|ContextObject|string|null; '@graph'?: { [key: string]: CommonObject; }|CommonObject[]; - [key: string]: any/*JSONValue*/; + [key: string]: any/*CommonObject*/; +} + +type ContextObject = { + [key: string]: string|{ + '@id': string; + '@type': '@id'; + } } -interface CommonObject { +interface CommonObject extends JSONObject { /** * @format uri */ @@ -19,8 +26,8 @@ interface CommonObject { '@language'?: string|null; '@type'?: string[]|string|null; '@container'?: '@language'|'@list'|'@index'|'@set'|null; - '@list'?: unknown; - '@set'?: unknown; + '@list'?: JSONLDObject[]; + '@set'?: JSONLDObject[]; '@reverse'?: { [key: string]: CommonObject; }|string|null; /** * @format uri diff --git a/lib/json-schema.d.ts b/lib/json-schema.d.ts index 9fc1fa6..2e4a64b 100644 --- a/lib/json-schema.d.ts +++ b/lib/json-schema.d.ts @@ -1,4 +1,4 @@ -import { JSONValue, JSONArray } from './json.d' +import { JSONValue, JSONObject, JSONArray } from './json.d' /** * A single JSON Schema. @@ -8,7 +8,7 @@ type JSONSchema = JSONSchemaObject|boolean /** * A JSON Schema, if that schema is an object (not a boolean). */ -interface JSONSchemaObject { +interface JSONSchemaObject extends JSONObject { /** * @format 'uri-reference' */ @@ -136,6 +136,10 @@ type nonNegativeIntegerDefault0 = integer type simpleTypes = 'array'|'boolean'|'integer'|'null'|'number'|'object'|'string' +/** + * @uniqueItems true + * @default [] + */ type stringArray = string[] export { JSONSchema, JSONSchemaObject } diff --git a/lib/json.d.ts b/lib/json.d.ts index 47618e6..ba57ca8 100644 --- a/lib/json.d.ts +++ b/lib/json.d.ts @@ -7,14 +7,13 @@ type JSONValue = JSONObject|JSONArray|JSONPrimitive * Any JSON object. */ interface JSONObject { - [key: string]: JSONValue; + [key: string]: JSONValue|undefined; } /** * Any JSON array. */ -interface JSONArray extends Array { -} +interface JSONArray extends Array {} /** * Any non-object, non-array JSON value. From 51f9447325e0256c77d01f2c9c252ab38d6534da Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 28 Dec 2018 19:04:45 -0500 Subject: [PATCH 12/37] alphabetize interface props --- lib/json-ld.d.ts | 16 +++---- lib/json-schema.d.ts | 106 +++++++++++++++++++++---------------------- schema/json-ld.jsd | 6 +-- 3 files changed, 64 insertions(+), 64 deletions(-) diff --git a/lib/json-ld.d.ts b/lib/json-ld.d.ts index 7a556b9..49b608a 100644 --- a/lib/json-ld.d.ts +++ b/lib/json-ld.d.ts @@ -18,21 +18,21 @@ type ContextObject = { } interface CommonObject extends JSONObject { + /** + * @format uri + */ + '@base'?: string|null; + '@container'?: '@index'|'@list'|'@set'|null; /** * @format uri */ '@id'?: string; - '@value'?: string|number|boolean|null; '@language'?: string|null; - '@type'?: string[]|string|null; - '@container'?: '@language'|'@list'|'@index'|'@set'|null; '@list'?: JSONLDObject[]; - '@set'?: JSONLDObject[]; '@reverse'?: { [key: string]: CommonObject; }|string|null; - /** - * @format uri - */ - '@base'?: string|null; + '@set'?: JSONLDObject[]; + '@type'?: string[]|string|null; + '@value'?: string|number|boolean|null; /** * @format uri */ diff --git a/lib/json-schema.d.ts b/lib/json-schema.d.ts index 2e4a64b..764f661 100644 --- a/lib/json-schema.d.ts +++ b/lib/json-schema.d.ts @@ -9,69 +9,71 @@ type JSONSchema = JSONSchemaObject|boolean * A JSON Schema, if that schema is an object (not a boolean). */ interface JSONSchemaObject extends JSONObject { + $comment?: string; /** * @format 'uri-reference' */ $id?: string; + /** + * @format 'uri-reference' + */ + $ref?: string; /** * @format 'uri' */ $schema?: string; + additionalItems?: JSONSchema; + additionalProperties?: JSONSchema; + allOf?: schemaArray; + anyOf?: schemaArray; + const?: JSONValue; + contains?: JSONSchema; + contentEncoding?: string; + contentMediaType?: string; + default?: JSONValue; /** - * @format 'uri-reference' + * @default {} */ - $ref?: string; - $comment?: string; - title?: string; + definitions?: { + [key: string]: JSONSchema; + }; + dependencies?: { + [key: string]: JSONSchema|stringArray; + }, description?: string; - default?: JSONValue; + else?: JSONSchema; /** - * @default false + * @minItems 1 + * @uniqueItems true */ - readOnly?: boolean; + enum?: JSONArray; examples?: JSONArray; - /** - * @exclusiveMinimum 0 - */ - multipleOf?: number; - maximum?: number; exclusiveMaximum?: number; - minimum?: number; exclusiveMinimum?: number; - maxLength?: nonNegativeInteger; - minLength?: nonNegativeIntegerDefault0; - /** - * @format regex - */ - pattern?: string; - additionalItems?: JSONSchema; + format?: string; + if?: JSONSchema; /** * @default true */ items?: JSONSchema|schemaArray; + maximum?: number; maxItems?: nonNegativeInteger; - minItems?: nonNegativeIntegerDefault0; - /** - * @default false - */ - uniqueItems?: boolean; - contains?: JSONSchema; + maxLength?: nonNegativeInteger; maxProperties?: nonNegativeInteger; + minimum?: number; + minItems?: nonNegativeIntegerDefault0; + minLength?: nonNegativeIntegerDefault0; minProperties?: nonNegativeIntegerDefault0; - required?: stringArray; - additionalProperties?: JSONSchema; /** - * @default {} + * @exclusiveMinimum 0 */ - definitions?: { - [key: string]: JSONSchema; - }; + multipleOf?: number; + not?: JSONSchema; + oneOf?: schemaArray; /** - * @default {} + * @format regex */ - properties?: { - [key: string]: JSONSchema; - }; + pattern?: string; /** * @default {} */ @@ -83,31 +85,29 @@ interface JSONSchemaObject extends JSONObject { key: string ]: JSONSchema; }, - dependencies?: { - [key: string]: JSONSchema|stringArray; - }, + /** + * @default {} + */ + properties?: { + [key: string]: JSONSchema; + }; propertyNames?: JSONSchema; - const?: JSONValue; /** - * @minItems 1 - * @uniqueItems true + * @default false */ - enum?: JSONArray; + readOnly?: boolean; + required?: stringArray; + then?: JSONSchema; + title?: string; /** * @minItems 1 * @uniqueItems true */ type?: simpleTypes[]|simpleTypes; - format?: string; - contentMediaType?: string; - contentEncoding?: string; - if?: JSONSchema; - then?: JSONSchema; - else?: JSONSchema; - allOf?: schemaArray; - anyOf?: schemaArray; - oneOf?: schemaArray; - not?: JSONSchema; + /** + * @default false + */ + uniqueItems?: boolean; } /** diff --git a/schema/json-ld.jsd b/schema/json-ld.jsd index 146df98..e23e77d 100644 --- a/schema/json-ld.jsd +++ b/schema/json-ld.jsd @@ -1,8 +1,8 @@ { "title": "Schema for JSON-LD", - "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "http://json-schema.org/draft-04/schema#", "$id": "https://chharvey.github.io/schemaorg-jsd/schema/json-ld.jsd", - "$comment": "copied from https://github.com/json-ld/json-ld.org/blob/019de59e296c39d7b5c0298d49d95b99fceb294a/schemas/jsonld-schema.json", + "$comment": "copied from https://github.com/json-ld/json-ld.org/blob/1.0/schemas/jsonld-schema.json", "definitions":{ "context": { @@ -51,7 +51,7 @@ "@container": { "description": "Used to set the default container type for a term.", "type": ["string", "null"], - "enum": ["@language", "@list", "@index", "@set"] + "enum": ["@list", "@index", "@set"] }, "@list": { "description": "Used to express an ordered set of data." From 38239b633877417dbd524651e1e5354d561a8de9 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 28 Dec 2018 19:21:53 -0500 Subject: [PATCH 13/37] rename requireJSONLD* -> requireJSON* --- gulpfile.js | 4 ++-- lib/{requireJSONLD.d.ts => requireJSON.d.ts} | 4 ++-- lib/{requireJSONLD.js => requireJSON.js} | 4 ++-- src/index.ts | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) rename lib/{requireJSONLD.d.ts => requireJSON.d.ts} (73%) rename lib/{requireJSONLD.js => requireJSON.js} (74%) diff --git a/gulpfile.js b/gulpfile.js index 16ba42e..ff9f37b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -11,7 +11,7 @@ const Ajv = require('ajv') // require('typedoc') // DO NOT REMOVE … peerDependency of `gulp-typedoc` // require('typescript') // DO NOT REMOVE … peerDependency of `gulp-typescript` -const { requireJSONLDAsync } = require('./lib/requireJSONLD.js') +const { requireJSONAsync } = require('./lib/requireJSON.js') const tsconfig = require('./tsconfig.json') const typedocconfig = require('./config/typedoc.json') @@ -164,7 +164,7 @@ gulp.task('dist-jsonld', ['validate'], async function () { gulp.task('dist-ts', ['dist-jsonld'], async function () { - const JSONLD = (await requireJSONLDAsync(path.join(__dirname, './dist/schemaorg.jsonld')))['@graph'] + const JSONLD = (await requireJSONAsync(path.join(__dirname, './dist/schemaorg.jsonld')))['@graph'] /** * @summary Print a list of links as a in jsdoc comment. * @private diff --git a/lib/requireJSONLD.d.ts b/lib/requireJSON.d.ts similarity index 73% rename from lib/requireJSONLD.d.ts rename to lib/requireJSON.d.ts index 7d20846..3f9963d 100644 --- a/lib/requireJSONLD.d.ts +++ b/lib/requireJSON.d.ts @@ -6,11 +6,11 @@ import { JSONValue } from './json.d' * @param filepath the relative path of the file to read * @returns a JSON value that is the result of parsing the file contents */ -export declare function requireJSONLD(filepath: string): JSONValue; +export declare function requireJSON(filepath: string): JSONValue; /** * Asynchronous {@link requireJSONLD}. * @param filepath the relative path of the file to read * @returns a JSON value that is the result of parsing the file contents */ -export declare function requireJSONLDAsync(filepath: string): Promise; +export declare function requireJSONAsync(filepath: string): Promise; diff --git a/lib/requireJSONLD.js b/lib/requireJSON.js similarity index 74% rename from lib/requireJSONLD.js rename to lib/requireJSON.js index 35d50db..cb0e86d 100644 --- a/lib/requireJSONLD.js +++ b/lib/requireJSON.js @@ -1,7 +1,7 @@ const fs = require('fs') const util = require('util') -module.exports.requireJSONLD = function requireJSONLD(filepath) { +module.exports.requireJSON = function requireJSON(filepath) { let data = fs.readFileSync(filepath, 'utf8') let object; try { @@ -14,7 +14,7 @@ module.exports.requireJSONLD = function requireJSONLD(filepath) { return object } -module.exports.requireJSONLDAsync = async function requireJSONLDAsync(filepath) { +module.exports.requireJSONAsync = async function requireJSONAsync(filepath) { let data = await util.promisify(fs.readFile)(filepath, 'utf8') let object; try { diff --git a/src/index.ts b/src/index.ts index 529131e..3ba4214 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,7 @@ import * as Ajv from 'ajv' import { JSONSchemaObject } from '../lib/json-schema.d' import { JSONLDObject } from '../lib/json-ld.d' -import { requireJSONLDAsync } from '../lib/requireJSONLD' +import { requireJSONAsync } from '../lib/requireJSON' /** @@ -19,7 +19,7 @@ export async function getMetaSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, './meta/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONLDAsync(path.join(__dirname, './meta/', filename)) as Promise) + .map((filename) => requireJSONAsync(path.join(__dirname, './meta/', filename)) as Promise) ) } @@ -34,7 +34,7 @@ export async function getSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, './schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONLDAsync(path.join(__dirname, './schema/', filename)) as Promise) + .map((filename) => requireJSONAsync(path.join(__dirname, './schema/', filename)) as Promise) ) } @@ -72,7 +72,7 @@ export async function getSchemata(): Promise { export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { const META_SCHEMATA: Promise = getMetaSchemata() const SCHEMATA : Promise = getSchemata() - let doc: JSONLDObject = (typeof document === 'string') ? await requireJSONLDAsync(document) as JSONLDObject : document + let doc: JSONLDObject = (typeof document === 'string') ? await requireJSONAsync(document) as JSONLDObject : document if (type === null) { let doctype: string[]|string|null = doc['@type'] || null if (doctype instanceof Array && doctype.length) { From fe2f0f43f31349f8e714556562b00d04f8c0f54f Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Thu, 3 Jan 2019 16:33:39 -0500 Subject: [PATCH 14/37] fix filepaths --- schema/json-ld.jsd | 2 +- src/index.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/schema/json-ld.jsd b/schema/json-ld.jsd index e23e77d..f205cc2 100644 --- a/schema/json-ld.jsd +++ b/schema/json-ld.jsd @@ -1,6 +1,6 @@ { "title": "Schema for JSON-LD", - "$schema": "http://json-schema.org/draft-04/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://chharvey.github.io/schemaorg-jsd/schema/json-ld.jsd", "$comment": "copied from https://github.com/json-ld/json-ld.org/blob/1.0/schemas/jsonld-schema.json", diff --git a/src/index.ts b/src/index.ts index 3ba4214..1448b40 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,9 +17,9 @@ import { requireJSONAsync } from '../lib/requireJSON' */ export async function getMetaSchemata(): Promise { return Promise.all( - (await util.promisify(fs.readdir)(path.resolve(__dirname, './meta/'))) + (await util.promisify(fs.readdir)(path.resolve(__dirname, '../meta/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONAsync(path.join(__dirname, './meta/', filename)) as Promise) + .map((filename) => requireJSONAsync(path.join(__dirname, '../meta/', filename)) as Promise) ) } @@ -32,9 +32,9 @@ export async function getMetaSchemata(): Promise { */ export async function getSchemata(): Promise { return Promise.all( - (await util.promisify(fs.readdir)(path.resolve(__dirname, './schema/'))) + (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONAsync(path.join(__dirname, './schema/', filename)) as Promise) + .map((filename) => requireJSONAsync(path.join(__dirname, '../schema/', filename)) as Promise) ) } From 7bb2ec6c35076911136a3b286922b3ef96f897b6 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Thu, 3 Jan 2019 16:36:09 -0500 Subject: [PATCH 15/37] Thing extends JSONLDObject --- gulpfile.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gulpfile.js b/gulpfile.js index ff9f37b..e1e0f9d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -215,7 +215,7 @@ gulp.task('dist-ts', ['dist-jsonld'], async function () { * ${(jsonld['valueOf' ].length) ? `*(Non-Normative):* May appear as values of:\n${linklist(jsonld['valueOf' ]).replace(/}/g,'_type}')}\n` : ''} * @see http://schema.org/${jsonld['rdfs:label']} */ - export interface ${jsonld['rdfs:label']} ${(jsonld['rdfs:subClassOf']) ? `extends ${jsonld['rdfs:subClassOf']['@id'].split(':')[1]} ` : ''}{ + export interface ${jsonld['rdfs:label']} extends ${(jsonld['rdfs:subClassOf']) ? jsonld['rdfs:subClassOf']['@id'].split(':')[1] : 'JSONLDObject'} { ${jsonld['rdfs:member'].map((member) => member['@id'].split(':')[1]).map((name) => ` ${name}?: ${name}_type `).join('')} @@ -244,6 +244,7 @@ gulp.task('dist-ts', ['dist-jsonld'], async function () { } let contents = [ + `import { JSONLDObject } from '../lib/json-ld.d'`, ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Datatype').map(datatypeTS), ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Class' ).map(classTS), ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdf:Property' ).map(propertyTS), From 1573fc3bad2829f690c33bbadf384c2003544b85 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 5 Jan 2019 22:50:39 -0500 Subject: [PATCH 16/37] install @chharvey/requirejson --- package-lock.json | 6 ++++++ package.json | 1 + 2 files changed, 7 insertions(+) diff --git a/package-lock.json b/package-lock.json index fed38e8..3e96583 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@chharvey/requirejson": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@chharvey/requirejson/-/requirejson-1.0.1.tgz", + "integrity": "sha512-Q8rm3SJg+iuCAGDIgi8E7aUmmvH9SMhEiILo/RAsPngI20WA/D7P7aVQvISgiq7U49Re+jz8MbYXLRpQRHx4dw==", + "dev": true + }, "@types/events": { "version": "1.2.0", "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", diff --git a/package.json b/package.json index fc49b28..c6c39d2 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "ajv": "^6.5.4" }, "devDependencies": { + "@chharvey/requirejson": "^1.0.1", "gulp": "^3.9.1", "gulp-typedoc": "^2.2.1", "gulp-typescript": "^5.0.0", From a0a366ba51778a7e55ef898d3d80eb903ca8ffb5 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 5 Jan 2019 22:56:13 -0500 Subject: [PATCH 17/37] replace local lib files with installed --- gulpfile.js | 8 +-- lib/json-ld.d.ts | 43 ------------- lib/json-schema.d.ts | 145 ------------------------------------------- lib/json.d.ts | 23 ------- lib/requireJSON.d.ts | 16 ----- lib/requireJSON.js | 28 --------- src/index.ts | 10 ++- 7 files changed, 8 insertions(+), 265 deletions(-) delete mode 100644 lib/json-ld.d.ts delete mode 100644 lib/json-schema.d.ts delete mode 100644 lib/json.d.ts delete mode 100644 lib/requireJSON.d.ts delete mode 100644 lib/requireJSON.js diff --git a/gulpfile.js b/gulpfile.js index e1e0f9d..fb700a7 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -11,7 +11,7 @@ const Ajv = require('ajv') // require('typedoc') // DO NOT REMOVE … peerDependency of `gulp-typedoc` // require('typescript') // DO NOT REMOVE … peerDependency of `gulp-typescript` -const { requireJSONAsync } = require('./lib/requireJSON.js') +const { requireJSON } = require('@chharvey/requirejson') const tsconfig = require('./tsconfig.json') const typedocconfig = require('./config/typedoc.json') @@ -164,7 +164,7 @@ gulp.task('dist-jsonld', ['validate'], async function () { gulp.task('dist-ts', ['dist-jsonld'], async function () { - const JSONLD = (await requireJSONAsync(path.join(__dirname, './dist/schemaorg.jsonld')))['@graph'] + const JSONLD = (await requireJSON('./dist/schemaorg.jsonld'))['@graph'] /** * @summary Print a list of links as a in jsdoc comment. * @private @@ -244,7 +244,7 @@ gulp.task('dist-ts', ['dist-jsonld'], async function () { } let contents = [ - `import { JSONLDObject } from '../lib/json-ld.d'`, + `import { JSONLDObject } from '@chharvey/requirejson'`, ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Datatype').map(datatypeTS), ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Class' ).map(classTS), ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdf:Property' ).map(propertyTS), @@ -253,7 +253,7 @@ gulp.task('dist-ts', ['dist-jsonld'], async function () { await util.promisify(fs.writeFile)('./dist/schemaorg.d.ts', contents) }) -gulp.task('dist', ['dist-ts'], async function () { +gulp.task('dist', ['dist-index', 'dist-ts'], async function () { return gulp.src('./dist/schemaorg.d.ts') .pipe(typescript(tsconfig.compilerOptions)) .pipe(gulp.dest('./dist/')) diff --git a/lib/json-ld.d.ts b/lib/json-ld.d.ts deleted file mode 100644 index 49b608a..0000000 --- a/lib/json-ld.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { JSONValue, JSONObject, JSONArray } from './json.d' - - -/** - * A single JSON-LD document. - */ -interface JSONLDObject extends CommonObject { - '@context'?: (ContextObject|string)[]|ContextObject|string|null; - '@graph'?: { [key: string]: CommonObject; }|CommonObject[]; - [key: string]: any/*CommonObject*/; -} - -type ContextObject = { - [key: string]: string|{ - '@id': string; - '@type': '@id'; - } -} - -interface CommonObject extends JSONObject { - /** - * @format uri - */ - '@base'?: string|null; - '@container'?: '@index'|'@list'|'@set'|null; - /** - * @format uri - */ - '@id'?: string; - '@language'?: string|null; - '@list'?: JSONLDObject[]; - '@reverse'?: { [key: string]: CommonObject; }|string|null; - '@set'?: JSONLDObject[]; - '@type'?: string[]|string|null; - '@value'?: string|number|boolean|null; - /** - * @format uri - */ - '@vocab'?: string|null; - [key: string]: any/*CommonObject*/; -} - -export { JSONLDObject } diff --git a/lib/json-schema.d.ts b/lib/json-schema.d.ts deleted file mode 100644 index 764f661..0000000 --- a/lib/json-schema.d.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { JSONValue, JSONObject, JSONArray } from './json.d' - -/** - * A single JSON Schema. - */ -type JSONSchema = JSONSchemaObject|boolean - -/** - * A JSON Schema, if that schema is an object (not a boolean). - */ -interface JSONSchemaObject extends JSONObject { - $comment?: string; - /** - * @format 'uri-reference' - */ - $id?: string; - /** - * @format 'uri-reference' - */ - $ref?: string; - /** - * @format 'uri' - */ - $schema?: string; - additionalItems?: JSONSchema; - additionalProperties?: JSONSchema; - allOf?: schemaArray; - anyOf?: schemaArray; - const?: JSONValue; - contains?: JSONSchema; - contentEncoding?: string; - contentMediaType?: string; - default?: JSONValue; - /** - * @default {} - */ - definitions?: { - [key: string]: JSONSchema; - }; - dependencies?: { - [key: string]: JSONSchema|stringArray; - }, - description?: string; - else?: JSONSchema; - /** - * @minItems 1 - * @uniqueItems true - */ - enum?: JSONArray; - examples?: JSONArray; - exclusiveMaximum?: number; - exclusiveMinimum?: number; - format?: string; - if?: JSONSchema; - /** - * @default true - */ - items?: JSONSchema|schemaArray; - maximum?: number; - maxItems?: nonNegativeInteger; - maxLength?: nonNegativeInteger; - maxProperties?: nonNegativeInteger; - minimum?: number; - minItems?: nonNegativeIntegerDefault0; - minLength?: nonNegativeIntegerDefault0; - minProperties?: nonNegativeIntegerDefault0; - /** - * @exclusiveMinimum 0 - */ - multipleOf?: number; - not?: JSONSchema; - oneOf?: schemaArray; - /** - * @format regex - */ - pattern?: string; - /** - * @default {} - */ - patternProperties?: { - [ - /** - * @format regex - */ - key: string - ]: JSONSchema; - }, - /** - * @default {} - */ - properties?: { - [key: string]: JSONSchema; - }; - propertyNames?: JSONSchema; - /** - * @default false - */ - readOnly?: boolean; - required?: stringArray; - then?: JSONSchema; - title?: string; - /** - * @minItems 1 - * @uniqueItems true - */ - type?: simpleTypes[]|simpleTypes; - /** - * @default false - */ - uniqueItems?: boolean; -} - -/** - * @minItems 1 - */ -type schemaArray = JSONSchema[] - - -/** - * @type integer - */ -type integer = number - -/** - * @type integer - * @minimum 0 - */ -type nonNegativeInteger = integer - -/** - * @type integer - * @minimum 0 - * @default 0 - */ -type nonNegativeIntegerDefault0 = integer - -type simpleTypes = 'array'|'boolean'|'integer'|'null'|'number'|'object'|'string' - -/** - * @uniqueItems true - * @default [] - */ -type stringArray = string[] - -export { JSONSchema, JSONSchemaObject } diff --git a/lib/json.d.ts b/lib/json.d.ts deleted file mode 100644 index ba57ca8..0000000 --- a/lib/json.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Any JSON value. - */ -type JSONValue = JSONObject|JSONArray|JSONPrimitive - -/** - * Any JSON object. - */ -interface JSONObject { - [key: string]: JSONValue|undefined; -} - -/** - * Any JSON array. - */ -interface JSONArray extends Array {} - -/** - * Any non-object, non-array JSON value. - */ -type JSONPrimitive = string|number|boolean|null - -export { JSONValue, JSONObject, JSONArray, JSONPrimitive } diff --git a/lib/requireJSON.d.ts b/lib/requireJSON.d.ts deleted file mode 100644 index 3f9963d..0000000 --- a/lib/requireJSON.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { JSONValue } from './json.d' - - -/** - * Like node.js `require()`, but can be used on `.jsonld` files. - * @param filepath the relative path of the file to read - * @returns a JSON value that is the result of parsing the file contents - */ -export declare function requireJSON(filepath: string): JSONValue; - -/** - * Asynchronous {@link requireJSONLD}. - * @param filepath the relative path of the file to read - * @returns a JSON value that is the result of parsing the file contents - */ -export declare function requireJSONAsync(filepath: string): Promise; diff --git a/lib/requireJSON.js b/lib/requireJSON.js deleted file mode 100644 index cb0e86d..0000000 --- a/lib/requireJSON.js +++ /dev/null @@ -1,28 +0,0 @@ -const fs = require('fs') -const util = require('util') - -module.exports.requireJSON = function requireJSON(filepath) { - let data = fs.readFileSync(filepath, 'utf8') - let object; - try { - object = JSON.parse(data) - } catch (e) { - e.filename = filepath - console.error(e) - throw e - } - return object -} - -module.exports.requireJSONAsync = async function requireJSONAsync(filepath) { - let data = await util.promisify(fs.readFile)(filepath, 'utf8') - let object; - try { - object = JSON.parse(data) - } catch (e) { - e.filename = filepath - console.error(e) - throw e - } - return object -} diff --git a/src/index.ts b/src/index.ts index 1448b40..ace49a5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,9 +4,7 @@ import * as util from 'util' import * as Ajv from 'ajv' -import { JSONSchemaObject } from '../lib/json-schema.d' -import { JSONLDObject } from '../lib/json-ld.d' -import { requireJSONAsync } from '../lib/requireJSON' +import { requireJSON, JSONSchemaObject, JSONLDObject } from '@chharvey/requirejson' /** @@ -19,7 +17,7 @@ export async function getMetaSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../meta/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONAsync(path.join(__dirname, '../meta/', filename)) as Promise) + .map((filename) => requireJSON(path.join(__dirname, '../meta/', filename)) as Promise) ) } @@ -34,7 +32,7 @@ export async function getSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSONAsync(path.join(__dirname, '../schema/', filename)) as Promise) + .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise) ) } @@ -72,7 +70,7 @@ export async function getSchemata(): Promise { export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { const META_SCHEMATA: Promise = getMetaSchemata() const SCHEMATA : Promise = getSchemata() - let doc: JSONLDObject = (typeof document === 'string') ? await requireJSONAsync(document) as JSONLDObject : document + let doc: JSONLDObject = (typeof document === 'string') ? await requireJSON(document) as JSONLDObject : document if (type === null) { let doctype: string[]|string|null = doc['@type'] || null if (doctype instanceof Array && doctype.length) { From ee5d81b92c6674ae51504e294e4ed93e23c5b236 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Wed, 9 Jan 2019 14:25:53 -0500 Subject: [PATCH 18/37] install @types/json-schema --- package-lock.json | 5 +++++ package.json | 1 + src/index.ts | 15 ++++++++------- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e96583..863764d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,6 +48,11 @@ "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==", "dev": true }, + "@types/json-schema": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.1.tgz", + "integrity": "sha512-NVQEMviDWjuen3UW+mU1J6fZ0WhOfG1yRce/2OTcbaz+fgmTw2cahx6N2wh0Yl+a+hg2UZj/oElZmtULWyGIsA==" + }, "@types/lodash": { "version": "4.14.119", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.119.tgz", diff --git a/package.json b/package.json index c6c39d2..314c9ed 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ }, "homepage": "https://github.com/chharvey/schemaorg-jsd#readme", "dependencies": { + "@types/json-schema": "^7.0.1", "ajv": "^6.5.4" }, "devDependencies": { diff --git a/src/index.ts b/src/index.ts index ace49a5..37ac6e2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,8 +3,9 @@ import * as path from 'path' import * as util from 'util' import * as Ajv from 'ajv' +import { JSONSchema7 } from 'json-schema' -import { requireJSON, JSONSchemaObject, JSONLDObject } from '@chharvey/requirejson' +import { requireJSON, JSONLDObject } from '@chharvey/requirejson' /** @@ -13,11 +14,11 @@ import { requireJSON, JSONSchemaObject, JSONLDObject } from '@chharvey/requirejs * This is for internal use only. Users should not be expected to use these meta-schemata. * @returns an array of meta-schemata */ -export async function getMetaSchemata(): Promise { +export async function getMetaSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../meta/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSON(path.join(__dirname, '../meta/', filename)) as Promise) + .map((filename) => requireJSON(path.join(__dirname, '../meta/', filename)) as Promise) ) } @@ -28,11 +29,11 @@ export async function getMetaSchemata(): Promise { * That is, schemata against which your JSON-LD documents should validate. * @returns an array of schemata */ -export async function getSchemata(): Promise { +export async function getSchemata(): Promise { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise) + .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise) ) } @@ -68,8 +69,8 @@ export async function getSchemata(): Promise { * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { - const META_SCHEMATA: Promise = getMetaSchemata() - const SCHEMATA : Promise = getSchemata() + const META_SCHEMATA: Promise = getMetaSchemata() + const SCHEMATA : Promise = getSchemata() let doc: JSONLDObject = (typeof document === 'string') ? await requireJSON(document) as JSONLDObject : document if (type === null) { let doctype: string[]|string|null = doc['@type'] || null From 75670ae0f9e7488364a18556aacc65016ed27669 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 12 Jan 2019 00:48:13 -0500 Subject: [PATCH 19/37] update metas && add d.ts --- meta/member.jsd | 35 +++++----- meta/type.jsd | 4 +- src/meta-ld.d.ts | 70 ++++++++++++++++++++ src/meta-schemata.d.ts | 142 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 234 insertions(+), 17 deletions(-) create mode 100644 src/meta-ld.d.ts create mode 100644 src/meta-schemata.d.ts diff --git a/meta/member.jsd b/meta/member.jsd index 4ed065f..d698c58 100644 --- a/meta/member.jsd +++ b/meta/member.jsd @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://chharvey.github.io/schemaorg-jsd/meta/member.jsd", "$comment": "This file is a meta-schema for validating the JSON Schema of a Schema.org Property.", - "description": "JSON Schema for a Schema.org Property.", + "description": "JSON Schema for a Schema.org Property instance in JSON-LD.", "allOf": [ { "$ref": "http://json-schema.org/draft-07/schema#" }, { @@ -32,6 +32,7 @@ }, { "description": "References to the expected type(s) of this property.", + "type": "object", "additionalProperties": false, "required": ["anyOf"], "properties": { @@ -47,20 +48,24 @@ ] }, "definitions": { - "propertyNames": { "const": "ExpectedType" }, - "additionalProperties": { - "description": "The range of this property.", - "additionalProperties": false, - "required": ["anyOf"], - "properties": { - "anyOf": { - "items": { - "description": "A reference to an external JSON schema for a Schema.org Class.", - "$ref": "type.jsd#/definitions/SingleReference" - } - } - } - } + "type": "object", + "required": ["ExpectedType"], + "properties": { + "ExpectedType": { + "description": "The range of this property.", + "type": "object", + "additionalProperties": false, + "required": ["anyOf"], + "properties": { + "anyOf": { + "items": { + "description": "A reference to an external JSON schema for a Schema.org Class.", + "$ref": "type.jsd#/definitions/SingleReference" + } + } + } + } + } } } } diff --git a/meta/type.jsd b/meta/type.jsd index 96524f6..15e3eeb 100644 --- a/meta/type.jsd +++ b/meta/type.jsd @@ -2,7 +2,7 @@ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://chharvey.github.io/schemaorg-jsd/meta/type.jsd", "$comment": "This file is a meta-schema for validating the JSON Schema of a Schema.org Class.", - "description": "JSON Schema for a Schema.org Class.", + "description": "JSON Schema for a Schema.org Class instance in JSON-LD.", "definitions": { "SingleReference": { "description": "A single reference to a JSON schema.", @@ -34,7 +34,7 @@ "$ref": "#/definitions/SingleReference" }, { - "description": "A list of further properties of this class.", + "description": "An object having further properties of this class.", "type": "object", "additionalProperties": false, "required": ["properties"], diff --git a/src/meta-ld.d.ts b/src/meta-ld.d.ts new file mode 100644 index 0000000..3bf1382 --- /dev/null +++ b/src/meta-ld.d.ts @@ -0,0 +1,70 @@ +import { JSONSchema7, JSONSchema7Version } from 'json-schema' + +import { JSONLDObject } from '@chharvey/requirejson' + + +interface SDO_LD extends JSONLDObject { + '@id' : string; + 'rdfs:label' : string; + 'rdfs:comment' : string; +} + +/** + * JSON-LD for a Schema.org Datatype. + */ +export interface SDODatatypeLD extends SDO_LD { + '@type': 'rdfs:Datatype'; +} + +/** + * JSON-LD for a Schema.org Class. + */ +export interface SDOClassLD extends SDO_LD { + '@type' : 'rdfs:Class'; + 'rdfs:subClassOf' : SingleReferenceLD|null; + 'rdfs:member' : SingleReferenceLD[]; + /** + * Non-normative known subclasses of this class. + * + * Subclasses are non-normative because this information can be processed from each class’s superclass. + */ + superClassOf: SingleReferenceLD[]; + /** + * Non-normative known properties of which an instance of this class could appear as a value. + * + * A class’s `valueOf` is non-normative because this information can be processed from each property’s `rdfs:range`. + */ + valueOf: SingleReferenceLD[]; +} + +/** + * JSON-LD for a Schema.org Property. + */ +export interface SDOPropertyLD extends SDO_LD { + '@type' : 'rdf:Property'; + 'rdfs:subPropertyOf' : SingleReferenceLD|null; + /** + * Non-normative classes that own this property as a member. + * + * A property’s `rdfs:domain` is non-normative because this information can be processed from each type’s members. + */ + 'rdfs:domain' : SingleReferenceLD[]; + 'rdfs:range' : SingleReferenceLD[]; + /** + * Non-normative known subproperties of this property. + * + * Subproperties are non-normative because this information can be processed from each property’s superproperty. + */ + superPropertyOf: SingleReferenceLD[], + /** + * Non-standard: whether this property accepts multiple values. + */ + $rangeArray: boolean, +} + +/** + * A single reference to a JSON-LD object. + */ +export type SingleReferenceLD = { + '@id': string; +} diff --git a/src/meta-schemata.d.ts b/src/meta-schemata.d.ts new file mode 100644 index 0000000..8e2d227 --- /dev/null +++ b/src/meta-schemata.d.ts @@ -0,0 +1,142 @@ +import { JSONSchema7, JSONSchema7Version } from 'json-schema' + + +/** + * JSON Schema for a Schema.org Datatype. + */ +export interface SDODatatypeSchema extends JSONSchema7 { + /** + * @override JSONSchema7 + */ + $schema: JSONSchema7Version; + /** + * @override JSONSchema7 + * @format uri + */ + $id: string; + /** + * The canonical URL of the Schema.org Datatype. + * @override JSONSchema7 + * @format uri + */ + title: string; + /** + * Schema.org’s canonical description of the Datatype. + * @override JSONSchema7 + */ + description: string; + /** + * @override JSONSchema7 + */ + type: 'string'|'number'|'integer'|'boolean'|'null'; +} + +/** + * JSON Schema for a Schema.org Class instance in JSON-LD. + * @id https://chharvey.github.io/schemaorg-jsd/meta/type.jsd + */ +export interface SDOClassSchema extends JSONSchema7 { + /** + * @override JSONSchema7 + */ + $schema: 'https://chharvey.github.io/schemaorg-jsd/meta/type.jsd#'; + /** + * @override JSONSchema7 + * @format uri + */ + $id: string; + /** + * The canonical URL of the Schema.org Class. + * @override JSONSchema7 + * @format uri + */ + title: string; + /** + * Schema.org’s canonical description of the Class. + * @override JSONSchema7 + */ + description: string; + /** + * @override JSONSchema7 + * @minItems 2 + * @maxItems 2 + */ + allOf: [ + /** The superclass of this class. */ + SingleReferenceSchema, + /** An object having further properties of this class. */ + { + type?: 'object', + properties: { + /** A reference to an external JSON schema for a Schema.org Property. */ + [key: string]: SingleReferenceSchema; + } + } + ]; +} + +/** + * JSON Schema for a Schema.org Property instance in JSON-LD. + * @id https://chharvey.github.io/schemaorg-jsd/meta/member.jsd + */ +export interface SDOPropertySchema extends JSONSchema7 { + /** + * @override JSONSchema7 + */ + $schema: 'https://chharvey.github.io/schemaorg-jsd/meta/member.jsd#'; + /** + * @override JSONSchema7 + * @format uri + */ + $id: string; + /** + * The canonical URL of the Schema.org Property. + * @override JSONSchema7 + * @format uri + */ + title: string; + /** + * Schema.org’s canonical description of the Property. + * @override JSONSchema7 + */ + description: string; + /** + * @override JSONSchema7 + * @minItems 2 + * @maxItems 2 + */ + allOf: [ + /** The superproperty of this property, or: There is no superproperty of this property. */ + SingleReferenceSchema|true, + /** References to the expected type(s) of this property. */ + { + /** + * @override JSONSchema7 + * @maxItems: 2 + */ + anyOf: [ + { $ref: '#/definitions/ExpectedType' } + ]|[ + { $ref: '#/definitions/ExpectedType' }, + { type: 'array', items: { $ref: '#/definitions/ExpectedType' } } + ]; + } + ]; + definitions: { + /** The range of this property. */ + ExpectedType: { + /** References to external JSON schema for Schema.org Classes. */ + anyOf: SingleReferenceSchema[]; + }; + }; +} + +/** + * A single reference to a JSON schema. + */ +export type SingleReferenceSchema = { + /** + * @format uri + */ + $ref: string; +} From 9e809ebe0c14f4cc34179e545bc26edf40dad063 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 12 Jan 2019 00:50:08 -0500 Subject: [PATCH 20/37] update imported/exported types --- src/index.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 37ac6e2..da09a0b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,9 @@ import * as util from 'util' import * as Ajv from 'ajv' import { JSONSchema7 } from 'json-schema' -import { requireJSON, JSONLDObject } from '@chharvey/requirejson' +import { requireJSON, JSONLDDocument } from '@chharvey/requirejson' + +import { SDODatatypeSchema, SDOClassSchema, SDOPropertySchema } from './meta-schemata.d' /** @@ -29,11 +31,11 @@ export async function getMetaSchemata(): Promise { * That is, schemata against which your JSON-LD documents should validate. * @returns an array of schemata */ -export async function getSchemata(): Promise { +export async function getSchemata(): Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)[]> { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise) + .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as unknown as Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)>) // BUG ) } @@ -68,10 +70,10 @@ export async function getSchemata(): Promise { * @returns does the document pass validation? * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ -export async function sdoValidate(document: JSONLDObject|string, type: string|null = null): Promise { +export async function sdoValidate(document: JSONLDDocument|string, type: string|null = null): Promise { const META_SCHEMATA: Promise = getMetaSchemata() const SCHEMATA : Promise = getSchemata() - let doc: JSONLDObject = (typeof document === 'string') ? await requireJSON(document) as JSONLDObject : document + let doc: JSONLDDocument = (typeof document === 'string') ? await requireJSON(document) as JSONLDDocument : document if (type === null) { let doctype: string[]|string|null = doc['@type'] || null if (doctype instanceof Array && doctype.length) { From c467c3d3672eca031dc1b79a3ed4e3d153d2b1f7 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 1 Feb 2019 17:41:37 -0500 Subject: [PATCH 21/37] update deps && fresh install --- package-lock.json | 182 +++++++++++++++++++++++----------------------- package.json | 5 +- 2 files changed, 93 insertions(+), 94 deletions(-) diff --git a/package-lock.json b/package-lock.json index 863764d..b420072 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,13 +7,12 @@ "@chharvey/requirejson": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@chharvey/requirejson/-/requirejson-1.0.1.tgz", - "integrity": "sha512-Q8rm3SJg+iuCAGDIgi8E7aUmmvH9SMhEiILo/RAsPngI20WA/D7P7aVQvISgiq7U49Re+jz8MbYXLRpQRHx4dw==", - "dev": true + "integrity": "sha512-Q8rm3SJg+iuCAGDIgi8E7aUmmvH9SMhEiILo/RAsPngI20WA/D7P7aVQvISgiq7U49Re+jz8MbYXLRpQRHx4dw==" }, "@types/events": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", "dev": true }, "@types/fs-extra": { @@ -49,14 +48,14 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.1.tgz", - "integrity": "sha512-NVQEMviDWjuen3UW+mU1J6fZ0WhOfG1yRce/2OTcbaz+fgmTw2cahx6N2wh0Yl+a+hg2UZj/oElZmtULWyGIsA==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.2.tgz", + "integrity": "sha512-XawGUgMoPEBwyN+P8FzzH8RfoJcmkyNPdMdX/Ejeit8y5M/VllcBjyGS72a3SCAQedsSnVn2pnf3lQ0OVR7f5g==" }, "@types/lodash": { - "version": "4.14.119", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.119.tgz", - "integrity": "sha512-Z3TNyBL8Vd/M9D9Ms2S3LmFq2sSMzahodD6rCS9V2N44HUMINb75jNkSuwAx7eo2ufqTdfOdtGQpNbieUjPQmw==", + "version": "4.14.120", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.120.tgz", + "integrity": "sha512-jQ21kQ120mo+IrDs1nFNVm/AsdFxIx2+vZ347DbogHJPd/JzKNMOqU6HCYin1W6v8l5R9XSO2/e9cxmn7HAnVw==", "dev": true }, "@types/marked": { @@ -72,15 +71,14 @@ "dev": true }, "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", - "dev": true + "version": "10.12.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.21.tgz", + "integrity": "sha512-CBgLNk4o3XMnqMc0rhb6lc77IwShMEglz05deDcn2lQxyXEZivfwgYJu7SMha9V5XcrP6qZuevTHV/QrN2vjKQ==" }, "@types/shelljs": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.1.tgz", - "integrity": "sha512-1lQw+48BuVgp6c1+z8EMipp18IdnV2dLh6KQGwOm+kJy9nPjEkaqRKmwbDNEYf//EKBvKcwOC6V2cDrNxVoQeQ==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.2.tgz", + "integrity": "sha512-vVp7BCQn0yUQgpiohrdxAhHdm/bTlXshB4HG3LEBq1PgvjKiyeYHohIPIv0QBt/jipb140iMS5Xy1iR6qKovKw==", "dev": true, "requires": { "@types/glob": "*", @@ -88,9 +86,9 @@ } }, "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -100,7 +98,7 @@ }, "ansi-colors": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -375,7 +373,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -446,7 +444,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -461,7 +459,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -620,7 +618,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -671,7 +669,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -686,7 +684,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -712,7 +710,7 @@ }, "event-stream": { "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { @@ -967,7 +965,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -982,7 +980,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1123,7 +1121,7 @@ "dependencies": { "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -1135,7 +1133,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -1147,7 +1145,7 @@ }, "glob-watcher": { "version": "0.0.6", - "resolved": "http://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { @@ -1211,7 +1209,7 @@ }, "graceful-fs": { "version": "1.2.3", - "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", "dev": true }, @@ -1244,7 +1242,7 @@ }, "graceful-fs": { "version": "3.0.11", - "resolved": "http://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { @@ -1253,7 +1251,7 @@ }, "gulp": { "version": "3.9.1", - "resolved": "http://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", "dev": true, "requires": { @@ -1350,7 +1348,7 @@ "dependencies": { "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1365,7 +1363,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1406,7 +1404,7 @@ "dependencies": { "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1421,7 +1419,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1444,7 +1442,7 @@ "dependencies": { "ansi-colors": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { @@ -1454,9 +1452,9 @@ } }, "readable-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.0.tgz", - "integrity": "sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -1546,7 +1544,7 @@ "dependencies": { "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1561,7 +1559,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1694,9 +1692,9 @@ } }, "highlight.js": { - "version": "9.13.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", - "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==", + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.14.2.tgz", + "integrity": "sha512-Nc6YNECYpxyJABGYJAyw7dBAYbXEuIzwzkqoJnwbc1nIpCiN+3ioYf0XrBnLiyyG0JLuJhpPtt2iTSbXiKLoyA==", "dev": true }, "homedir-polyfill": { @@ -1731,9 +1729,9 @@ "dev": true }, "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, "is-absolute": { @@ -1748,7 +1746,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { @@ -1774,7 +1772,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { @@ -1973,7 +1971,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1988,7 +1986,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -2024,7 +2022,7 @@ }, "lodash": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", "dev": true }, @@ -2149,7 +2147,7 @@ }, "lru-cache": { "version": "2.7.3", - "resolved": "http://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, @@ -2179,7 +2177,7 @@ }, "map-stream": { "version": "0.1.0", - "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", "dev": true }, @@ -2230,7 +2228,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -2257,7 +2255,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -2266,7 +2264,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -2280,7 +2278,7 @@ }, "multipipe": { "version": "0.1.2", - "resolved": "http://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", "dev": true, "requires": { @@ -2446,7 +2444,7 @@ "dependencies": { "minimist": { "version": "0.0.10", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true } @@ -2471,7 +2469,7 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -2487,9 +2485,9 @@ } }, "parse-node-version": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", - "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true }, "parse-passwd": { @@ -2512,7 +2510,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, @@ -2539,7 +2537,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { @@ -2598,7 +2596,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", "dev": true } @@ -2612,7 +2610,7 @@ }, "pretty-hrtime": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, @@ -2678,7 +2676,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -2753,9 +2751,9 @@ "dev": true }, "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -2800,7 +2798,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -2809,7 +2807,7 @@ }, "semver": { "version": "4.3.6", - "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true }, @@ -3024,7 +3022,7 @@ }, "split": { "version": "0.3.3", - "resolved": "http://registry.npmjs.org/split/-/split-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { @@ -3063,7 +3061,7 @@ }, "stream-combiner": { "version": "0.0.4", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { @@ -3084,13 +3082,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -3115,7 +3113,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -3137,7 +3135,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -3152,7 +3150,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -3302,9 +3300,9 @@ "dev": true }, "typescript": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", - "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", "dev": true }, "uglify-js": { @@ -3370,7 +3368,7 @@ }, "unique-stream": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", "dev": true }, @@ -3508,7 +3506,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3520,7 +3518,7 @@ }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { diff --git a/package.json b/package.json index 314c9ed..58b9ab2 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,12 @@ }, "homepage": "https://github.com/chharvey/schemaorg-jsd#readme", "dependencies": { - "@types/json-schema": "^7.0.1", + "@chharvey/requirejson": "^1.0.1", + "@types/json-schema": "^7.0.2", + "@types/node": "^10.12.21", "ajv": "^6.5.4" }, "devDependencies": { - "@chharvey/requirejson": "^1.0.1", "gulp": "^3.9.1", "gulp-typedoc": "^2.2.1", "gulp-typescript": "^5.0.0", From a7257542e3b6401015a580cb40814ed9c8849480 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 1 Feb 2019 23:08:01 -0500 Subject: [PATCH 22/37] index file exports Promises, not functions --- README.md | 5 +---- gulpfile.js | 5 ++--- index.js | 6 +++--- index.ts | 2 +- src/index.ts | 16 +++++----------- 5 files changed, 12 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 9a431cc..aa42208 100644 --- a/README.md +++ b/README.md @@ -59,9 +59,6 @@ pre-packaged and ready to add. const Ajv = require('ajv') const sdo_jsd = require('schemaorg-jsd') -const META_SCHEMATA = sdo_jsd.getMetaSchemata() // a Promise -const SCHEMATA = sdo_jsd.getSchemata() // a Promise - let my_schema = { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://chharvey.github.io/example.jsd", @@ -76,7 +73,7 @@ let my_data = [ ] async function run() { - let ajv = new Ajv().addMetaSchema(await META_SCHEMATA).addSchema(await SCHEMATA) + let ajv = new Ajv().addMetaSchema(await sdo_jsd.META_SCHEMATA).addSchema(await sdo_jsd.SCHEMATA) ajv.validate(my_schema, my_data) // Note that the `Ajv#validate()` method’s parameters are reversed from this package’s `sdoValidate()`: // `Ajv#validate(schema, data)` diff --git a/gulpfile.js b/gulpfile.js index fb700a7..f76c190 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -19,8 +19,7 @@ const typedocconfig = require('./config/typedoc.json') gulp.task('validate', async function () { const sdo_jsd = require('./index.js') - const [META_SCHEMATA, SCHEMATA] = await Promise.all([sdo_jsd.getMetaSchemata(), sdo_jsd.getSchemata()]) - new Ajv().addMetaSchema(META_SCHEMATA).addSchema(SCHEMATA) + new Ajv().addMetaSchema(await sdo_jsd.META_SCHEMATA).addSchema(await sdo_jsd.SCHEMATA) }) gulp.task('dist-index', async function() { @@ -32,7 +31,7 @@ gulp.task('dist-index', async function() { gulp.task('dist-jsonld', ['validate'], async function () { const sdo_jsd = require('./index.js') // ++++ LOCAL VARIABLES ++++ - const SCHEMATA = (await sdo_jsd.getSchemata()) + const SCHEMATA = (await sdo_jsd.SCHEMATA) .filter((jsd) => path.parse(new url.URL(jsd['$id']).pathname).name !== 'json-ld') // TODO: reference json-ld.jsd externally let label = (jsd) => path.parse(new url.URL(jsd.title).pathname).name let comment = (jsd) => jsd.description diff --git a/index.js b/index.js index 069d29b..e72bd71 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ const index_module = require('./dist/index.js') module.exports = { - getMetaSchemata : index_module.getMetaSchemata, - getSchemata : index_module.getSchemata, - sdoValidate : index_module.sdoValidate, + META_SCHEMATA : index_module.META_SCHEMATA, + SCHEMATA : index_module.SCHEMATA, + sdoValidate : index_module.sdoValidate, } diff --git a/index.ts b/index.ts index 76a68fb..da8dbb7 100644 --- a/index.ts +++ b/index.ts @@ -2,4 +2,4 @@ // It is not meant to be compiled automatically. // See `./index.js` for the manual output. -export { getMetaSchemata, getSchemata, sdoValidate } from './src/index' +export { META_SCHEMATA, SCHEMATA, sdoValidate } from './src/index' diff --git a/src/index.ts b/src/index.ts index da09a0b..7681713 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,30 +14,26 @@ import { SDODatatypeSchema, SDOClassSchema, SDOPropertySchema } from './meta-sch * An array of meta-schemata against which the content schemata validate. * * This is for internal use only. Users should not be expected to use these meta-schemata. - * @returns an array of meta-schemata */ -export async function getMetaSchemata(): Promise { +export const META_SCHEMATA: Promise = (async () => { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../meta/'))) - .filter((filename) => path.parse(filename).ext === '.jsd') .map((filename) => requireJSON(path.join(__dirname, '../meta/', filename)) as Promise) ) -} +})() /** * An array of all JSON Schemata validating Schema.org vocabulary. * * This array contains all Schema.org schemata in this project. * That is, schemata against which your JSON-LD documents should validate. - * @returns an array of schemata */ -export async function getSchemata(): Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)[]> { +export const SCHEMATA: Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)[]> = (async () => { return Promise.all( (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) - .filter((filename) => path.parse(filename).ext === '.jsd') - .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as unknown as Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)>) // BUG + .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise as Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)>) ) -} +})() /** * Validate a JSON-LD document against a Schema.org JSON schema. @@ -71,8 +67,6 @@ export async function getSchemata(): Promise<(SDODatatypeSchema|SDOClassSchema|S * @throws {TypeError} if the document fails validation; has a `.details` property for validation details */ export async function sdoValidate(document: JSONLDDocument|string, type: string|null = null): Promise { - const META_SCHEMATA: Promise = getMetaSchemata() - const SCHEMATA : Promise = getSchemata() let doc: JSONLDDocument = (typeof document === 'string') ? await requireJSON(document) as JSONLDDocument : document if (type === null) { let doctype: string[]|string|null = doc['@type'] || null From d17275c41164545a87dc592eb898b1c13ab0adb3 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 1 Feb 2019 23:19:52 -0500 Subject: [PATCH 23/37] export JSONLD_SCHEMA, to replace json-ld.jsd --- README.md | 5 ++++- gulpfile.js | 5 ++++- index.js | 1 + index.ts | 2 +- src/index.ts | 45 ++++++++++++++++++++++++++++++++++++++++----- 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index aa42208..293d090 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,10 @@ let my_data = [ ] async function run() { - let ajv = new Ajv().addMetaSchema(await sdo_jsd.META_SCHEMATA).addSchema(await sdo_jsd.SCHEMATA) + let ajv = new Ajv() + .addMetaSchema(await sdo_jsd.META_SCHEMATA) + .addSchema(await sdo_jsd.JSONLD_SCHEMA) + .addSchema(await sdo_jsd.SCHEMATA) ajv.validate(my_schema, my_data) // Note that the `Ajv#validate()` method’s parameters are reversed from this package’s `sdoValidate()`: // `Ajv#validate(schema, data)` diff --git a/gulpfile.js b/gulpfile.js index f76c190..87d3d2a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -19,7 +19,10 @@ const typedocconfig = require('./config/typedoc.json') gulp.task('validate', async function () { const sdo_jsd = require('./index.js') - new Ajv().addMetaSchema(await sdo_jsd.META_SCHEMATA).addSchema(await sdo_jsd.SCHEMATA) + new Ajv() + .addMetaSchema(await sdo_jsd.META_SCHEMATA) + .addSchema(await sdo_jsd.JSONLD_SCHEMA) + .addSchema(await sdo_jsd.SCHEMATA) }) gulp.task('dist-index', async function() { diff --git a/index.js b/index.js index e72bd71..f481953 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,7 @@ const index_module = require('./dist/index.js') module.exports = { META_SCHEMATA : index_module.META_SCHEMATA, + JSONLD_SCHEMA : index_module.JSONLD_SCHEMA, SCHEMATA : index_module.SCHEMATA, sdoValidate : index_module.sdoValidate, } diff --git a/index.ts b/index.ts index da8dbb7..3e4254e 100644 --- a/index.ts +++ b/index.ts @@ -2,4 +2,4 @@ // It is not meant to be compiled automatically. // See `./index.js` for the manual output. -export { META_SCHEMATA, SCHEMATA, sdoValidate } from './src/index' +export { META_SCHEMATA, JSONLD_SCHEMA, SCHEMATA, sdoValidate } from './src/index' diff --git a/src/index.ts b/src/index.ts index 7681713..20f8ed8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,10 @@ -import * as fs from 'fs' -import * as path from 'path' -import * as util from 'util' +import * as fs from 'fs' +import * as https from 'https' +import * as path from 'path' +import * as util from 'util' import * as Ajv from 'ajv' -import { JSONSchema7 } from 'json-schema' +import { JSONSchema7, JSONSchema4 } from 'json-schema' import { requireJSON, JSONLDDocument } from '@chharvey/requirejson' @@ -22,6 +23,37 @@ export const META_SCHEMATA: Promise = (async () => { ) })() +/** + * A single JSON Schema, which validates JSON-LD objects. + * @see https://json-ld.org/schemas/jsonld-schema.json + */ +export const JSONLD_SCHEMA: Promise = new Promise((resolve, reject) => { + https.get('https://cdn.jsdelivr.net/gh/json-ld/json-ld.org@1.0/schemas/jsonld-schema.json', (res) => { + if (!res.statusCode || res.statusCode < 200 || 300 <= res.statusCode) { + reject(new Error(` +Failed to load. +Status Code: ${res.statusCode || 'no status code found'} + `)) + res.resume() + return; + } + res.setEncoding('utf8') + const body: string[] = [] + res.on('data', (chunk) => { body.push(chunk) }) + res.on('end', () => { + let data: JSONSchema4; + try { + data = JSON.parse(body.join('')) + } catch (e) { + reject(e) + return; + } + data.id = 'https://json-ld.org/schemas/jsonld-schema.json' + resolve(data) + }) + }).on('error', (e) => { reject(e) }) +}) + /** * An array of all JSON Schemata validating Schema.org vocabulary. * @@ -81,7 +113,10 @@ export async function sdoValidate(document: JSONLDDocument|string, type: string| } } - let ajv: Ajv.Ajv = new Ajv().addMetaSchema(await META_SCHEMATA).addSchema(await SCHEMATA) + let ajv: Ajv.Ajv = new Ajv() + .addMetaSchema(await META_SCHEMATA) + .addSchema(await JSONLD_SCHEMA) + .addSchema(await SCHEMATA) let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) as boolean if (!is_data_valid) { let e: TypeError&{ From 993f4e1eb93a292f10368a1cc6e39ee49b78a438 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 1 Feb 2019 23:35:41 -0500 Subject: [PATCH 24/37] replace local json-ld.jsd with JSONLD_SCHEMA --- gulpfile.js | 1 - schema/Thing.jsd | 2 +- schema/json-ld.jsd | 91 ---------------------------------------------- src/index.ts | 7 ++-- 4 files changed, 5 insertions(+), 96 deletions(-) delete mode 100644 schema/json-ld.jsd diff --git a/gulpfile.js b/gulpfile.js index 87d3d2a..57b199f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -35,7 +35,6 @@ gulp.task('dist-jsonld', ['validate'], async function () { const sdo_jsd = require('./index.js') // ++++ LOCAL VARIABLES ++++ const SCHEMATA = (await sdo_jsd.SCHEMATA) - .filter((jsd) => path.parse(new url.URL(jsd['$id']).pathname).name !== 'json-ld') // TODO: reference json-ld.jsd externally let label = (jsd) => path.parse(new url.URL(jsd.title).pathname).name let comment = (jsd) => jsd.description let supertype = (jsd) => (label(jsd) !== 'Thing') ? path.parse(jsd.allOf[0].$ref).name : null diff --git a/schema/Thing.jsd b/schema/Thing.jsd index 70ec201..a30df89 100644 --- a/schema/Thing.jsd +++ b/schema/Thing.jsd @@ -4,7 +4,7 @@ "title": "http://schema.org/Thing", "description": "The most generic type of item.", "allOf": [ - { "$ref": "https://chharvey.github.io/schemaorg-jsd/schema/json-ld.jsd" }, + { "$ref": "https://json-ld.org/schemas/jsonld-schema.json" }, { "type": "object", "properties": { diff --git a/schema/json-ld.jsd b/schema/json-ld.jsd deleted file mode 100644 index f205cc2..0000000 --- a/schema/json-ld.jsd +++ /dev/null @@ -1,91 +0,0 @@ -{ - "title": "Schema for JSON-LD", - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://chharvey.github.io/schemaorg-jsd/schema/json-ld.jsd", - "$comment": "copied from https://github.com/json-ld/json-ld.org/blob/1.0/schemas/jsonld-schema.json", - - "definitions":{ - "context": { - "additionalProperties": true, - "properties": { - "@context": { - "description": "Used to define the short-hand names that are used throughout a JSON-LD document.", - "type": ["object", "string", "array", "null"] - } - } - }, - "graph": { - "additionalProperties": true, - "properties": { - "@graph": { - "description": "Used to express a graph.", - "type": ["array", "object"], - "additionalItems": { - "anyOf": [{ "$ref": "#/definitions/common" }] - } - } - } - }, - "common":{ - "additionalProperties": { - "anyOf": [{ "$ref": "#/definitions/common" }] - }, - "properties": { - "@id": { - "description": "Used to uniquely identify things that are being described in the document with IRIs or blank node identifiers.", - "type": "string", - "format": "uri" - }, - "@value": { - "description": "Used to specify the data that is associated with a particular property in the graph.", - "type": ["string", "boolean", "number", "null"] - }, - "@language": { - "description": "Used to specify the language for a particular string value or the default language of a JSON-LD document.", - "type": ["string", "null"] - }, - "@type": { - "description": "Used to set the data type of a node or typed value.", - "type": ["string", "null", "array"] - }, - "@container": { - "description": "Used to set the default container type for a term.", - "type": ["string", "null"], - "enum": ["@list", "@index", "@set"] - }, - "@list": { - "description": "Used to express an ordered set of data." - }, - "@set": { - "description": "Used to express an unordered set of data and to ensure that values are always represented as arrays." - }, - "@reverse": { - "description": "Used to express reverse properties.", - "type": ["string", "object", "null"], - "additionalProperties": { - "anyOf": [{ "$ref": "#/definitions/common" }] - } - }, - "@base": { - "description": "Used to set the base IRI against which relative IRIs are resolved", - "type": ["string", "null"], - "format": "uri" - }, - "@vocab": { - "description": "Used to expand properties and values in @type with a common prefix IRI", - "type": ["string", "null"], - "format": "uri" - } - } - } - }, - - "allOf": [ - { "$ref": "#/definitions/context" }, - { "$ref": "#/definitions/graph" }, - { "$ref": "#/definitions/common" } - ], - - "type": ["object", "array"], - "additionalProperties": true -} diff --git a/src/index.ts b/src/index.ts index 20f8ed8..daa371d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -27,7 +27,7 @@ export const META_SCHEMATA: Promise = (async () => { * A single JSON Schema, which validates JSON-LD objects. * @see https://json-ld.org/schemas/jsonld-schema.json */ -export const JSONLD_SCHEMA: Promise = new Promise((resolve, reject) => { +export const JSONLD_SCHEMA: Promise = new Promise((resolve, reject) => { https.get('https://cdn.jsdelivr.net/gh/json-ld/json-ld.org@1.0/schemas/jsonld-schema.json', (res) => { if (!res.statusCode || res.statusCode < 200 || 300 <= res.statusCode) { reject(new Error(` @@ -48,8 +48,9 @@ Status Code: ${res.statusCode || 'no status code found'} reject(e) return; } - data.id = 'https://json-ld.org/schemas/jsonld-schema.json' - resolve(data) + data.$schema = 'http://json-schema.org/draft-07/schema#' + data.$id = 'https://json-ld.org/schemas/jsonld-schema.json' + resolve(data as JSONSchema7) }) }).on('error', (e) => { reject(e) }) }) From fcd5f23d0d0f4463beed8b81b433920c9c3fb672 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 2 Feb 2019 00:34:41 -0500 Subject: [PATCH 25/37] sdoValidate takes a JSON-LD object, not document --- README.md | 6 +++--- src/index.ts | 46 +++++++++++++++++++++++++--------------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 293d090..c2db7ac 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ async function run() { try { let is_valid_place = sdoValidate(school, 'Place') // validate against the 'Place' schema console.log(await is_valid_place) // return `true` if the document passes validation - } catch (e) { // throw an `Error` if the document fails validation + } catch (e) { // throw a `TypeError` if the document fails validation console.error(e) console.error(e.filename) // file where the invalidation occurred console.error(e.details) // more json-schema specifics; see @@ -37,11 +37,11 @@ async function run() { // example 2: require a package let me = require('./me.json') - console.log(await sdoValidate(me, 'Person')) + console.log(await sdoValidate(me, 'Person')) // return `true` if the document passes validation // example 3: use a string (relative path) of the filename let org = './my-org.jsonld' - console.log(await sdoValidate(org, 'Organization')) + console.log(await sdoValidate(org, 'Organization')) // return `true` if the document passes validation } ``` diff --git a/src/index.ts b/src/index.ts index daa371d..36a44e1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,7 @@ import * as util from 'util' import * as Ajv from 'ajv' import { JSONSchema7, JSONSchema4 } from 'json-schema' -import { requireJSON, JSONLDDocument } from '@chharvey/requirejson' +import { requireJSON, JSONLDObject } from '@chharvey/requirejson' import { SDODatatypeSchema, SDOClassSchema, SDOPropertySchema } from './meta-schemata.d' @@ -69,45 +69,49 @@ export const SCHEMATA: Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySche })() /** - * Validate a JSON-LD document against a Schema.org JSON schema. + * Validate a JSON-LD object against a Schema.org JSON schema. * * ```js * const { sdoValidate } = require('schemaorg-jsd') - * async function compile(jsdoc) { + * async function compile(ldobj) { * let is_valid; * try { - * is_valid = await sdoValidate(jsdoc) + * is_valid = await sdoValidate(ldobj) * } catch (e) { * is_valid = false * } * console.log(is_valid) * } - * // or you could use its Promise (if `async` keyword is not supported): - * function compilePromise(jsdoc) { - * sdoValidate(jsdoc) + * // or you could use its Promise (if `async`/`await` is not supported): + * function compilePromise(ldobj) { + * sdoValidate(ldobj) * .catch((e) => false) * .then((result) => { console.log(result) }) * } * ``` * - * @param document the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file + * @param obj the JSON or JSON-LD object to test, or its path pointing to a `.json` or `.jsonld` file * @param type the name of the Type to test against; should be a Class in http://schema.org/ * - see the API for supported Types * - if omitted, will test against the JSON document’s `'@type'` property (if it has one) * - if `'@type'` is an array, each value of that array is tested * - if the `'@type'` is not supported or cannot be found, defaults to `'Thing'` - * @returns does the document pass validation? - * @throws {TypeError} if the document fails validation; has a `.details` property for validation details + * @returns does the object pass validation? + * @throws {TypeError} if the object fails validation; has a `.details` property for validation details */ -export async function sdoValidate(document: JSONLDDocument|string, type: string|null = null): Promise { - let doc: JSONLDDocument = (typeof document === 'string') ? await requireJSON(document) as JSONLDDocument : document +export async function sdoValidate(obj: JSONLDObject|string, type: string|null = null): Promise { + let filename: string = '' + if (typeof obj === 'string') { + filename = obj + obj = await requireJSON(obj) as JSONLDObject + } if (type === null) { - let doctype: string[]|string|null = doc['@type'] || null - if (doctype instanceof Array && doctype.length) { - return (await Promise.all(doctype.map((dt) => sdoValidate(doc, dt)))).reduce((a, b) => a && b) - } else if (typeof doctype === 'string') { - type = ((await SCHEMATA).find((jsd) => jsd.title === `http://schema.org/${doctype}`)) ? doctype : - (console.warn(`Class \`${doctype}\` is not yet supported. Validating against \`Thing.jsd\` instead…`), 'Thing') + let objtype: string[]|string|null = obj['@type'] || null + if (objtype instanceof Array && objtype.length) { + return (await Promise.all(objtype.map((dt) => sdoValidate(obj, dt)))).reduce((a, b) => a && b) + } else if (typeof objtype === 'string') { + type = ((await SCHEMATA).find((jsd) => jsd.title === `http://schema.org/${objtype}`)) ? objtype : + (console.warn(`Class \`${objtype}\` is not yet supported. Validating against \`Thing.jsd\` instead…`), 'Thing') } else { console.warn(`JSON-LD \`@type\` property was not found. Validating against \`Thing.jsd\`…`) type = 'Thing' @@ -118,13 +122,13 @@ export async function sdoValidate(document: JSONLDDocument|string, type: string| .addMetaSchema(await META_SCHEMATA) .addSchema(await JSONLD_SCHEMA) .addSchema(await SCHEMATA) - let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, doc) as boolean + let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, obj) as boolean if (!is_data_valid) { let e: TypeError&{ filename?: string; details?: Ajv.ErrorObject; - } = new TypeError(`Document ${doc['@id'] || doc.identifier || doc.name || doc} does not valiate against schema ${type}.jsd!`) - if (typeof document === 'string') e.filename = document + } = new TypeError(`Object ${obj['@id'] || obj.identifier || obj.name || JSON.stringify(obj)} does not valiate against schema ${type}.jsd!`) + if (filename.length) e.filename = filename e.details = ajv.errors ![0] throw e } From b7ac87a9bc20b157e5244973409edafa198946b2 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 2 Feb 2019 00:59:04 -0500 Subject: [PATCH 26/37] move build tasks to separate file --- gulpfile.js | 225 ++------------------------------------- src/build.ts | 289 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 297 insertions(+), 217 deletions(-) create mode 100644 src/build.ts diff --git a/gulpfile.js b/gulpfile.js index 57b199f..f5179a0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -26,232 +26,23 @@ gulp.task('validate', async function () { }) gulp.task('dist-index', async function() { - return gulp.src('./src/index.ts') + return gulp.src('./src/{index,build}.ts') .pipe(typescript(tsconfig.compilerOptions)) .pipe(gulp.dest('./dist/')) }) gulp.task('dist-jsonld', ['validate'], async function () { - const sdo_jsd = require('./index.js') - // ++++ LOCAL VARIABLES ++++ - const SCHEMATA = (await sdo_jsd.SCHEMATA) - let label = (jsd) => path.parse(new url.URL(jsd.title).pathname).name - let comment = (jsd) => jsd.description - let supertype = (jsd) => (label(jsd) !== 'Thing') ? path.parse(jsd.allOf[0].$ref).name : null - - // ++++ MAP TO JSON-LD ++++ - let datatypes = SCHEMATA.filter((jsd) => jsd.$schema === 'http://json-schema.org/draft-07/schema#').map((jsd) => ({ - '@type' : 'rdfs:Datatype', - '@id' : `sdo:${label(jsd)}`, - 'rdfs:label' : label(jsd), - 'rdfs:comment' : comment(jsd), - })) - let classes = SCHEMATA.filter((jsd) => jsd.$schema === 'https://chharvey.github.io/schemaorg-jsd/meta/type.jsd#').map((jsd) => ({ - '@type' : 'rdfs:Class', - '@id' : `sdo:${label(jsd)}`, - 'rdfs:label' : label(jsd), - 'rdfs:comment' : comment(jsd), - 'rdfs:subClassOf' : (supertype(jsd)) ? { '@id': `sdo:${supertype(jsd)}` } : null, - 'superClassOf' : [], // non-normative - 'rdfs:member' : Object.entries(jsd.allOf[1].properties).map(function (entry) { - let [key, value] = entry - let memberjsd = SCHEMATA.find((j) => j.title===`http://schema.org/${key}`) || null - if (memberjsd) return { '@id': `sdo:${key}` } - else throw new ReferenceError(`No corresponding jsd file was found for member subschema \`${label(jsd)}#${key}\`.`) - }), - 'valueOf': [], // non-normative - })) - let properties = SCHEMATA.filter((jsd) => jsd.$schema === 'https://chharvey.github.io/schemaorg-jsd/meta/member.jsd#').map((jsd) => ({ - '@type' : 'rdf:Property', - '@id' : `sdo:${label(jsd)}`, - 'rdfs:label' : label(jsd), - 'rdfs:comment' : comment(jsd), - 'rdfs:subPropertyOf': (jsd.allOf[0] !== true) ? { '@id': `sdo:${supertype(jsd).split('.')[0]}` } : null, - 'superPropertyOf': [], // non-normative - 'rdfs:domain' : [], // non-normative - '$rangeArray' : jsd.allOf[1].anyOf.length >= 2, // non-standard - 'rdfs:range' : (function (propertyschema) { - const sdo_type = { - 'boolean': 'Boolean', - 'integer': 'Integer', - 'number' : 'Number' , - 'string' : 'Text' , - } - // NOTE Cannot use `Array#map` here because there is not a 1-to-1 correspondance - // between the schemata in `anyOf` and the pushed jsonld objects. - // (Namely, if the jsd `"type"` property is an array, e.g. `["number", "string"]`.) - const returned = [] - propertyschema.definitions['ExpectedType'].anyOf.forEach(function (schema) { - if (schema.$ref) returned.push({ '@id': `sdo:${path.parse(schema.$ref).name}` }) - else { - if (Array.isArray(schema.type)) returned.push(...schema.type.map((t) => ({ '@id': `sdo:${sdo_type[t]}` }))) - else returned.push({ '@id': `sdo:${sdo_type[schema.type]}` }) - } - }) - return returned - })(jsd), - })) - - // ++++ PROCESS NON-NORMATIVE SCHEMA DATA ++++ - /* - * Process non-normative subclasses. - * Subclasses are non-normative because this information can be processed from each class’s superclass. - */ - classes.forEach((jsonld) => { - let superclass = jsonld['rdfs:subClassOf'] - let referenced = (superclass) ? classes.find((c) => c['@id'] === superclass['@id']) || null : null - if (referenced) { - referenced['superClassOf'].push({ '@id': jsonld['@id'] }) - } - }) - /* - * Process non-normative subproperties. - * Subproperties are non-normative because this information can be processed from each property’s superproperty. - */ - properties.forEach((jsonld) => { - let superproperty = jsonld['rdfs:subPropertyOf'] - let referenced = (superproperty) ? properties.find((p) => p['@id'] === superproperty['@id']) || null : null - if (referenced) { - referenced['superPropertyOf'].push({ '@id': jsonld['@id'] }) - } - }) - /* - * Process non-normative `rdfs:domain`. - * A property’s `rdfs:domain` is non-normative because this information can be processed from each type’s members. - */ - classes.forEach((jsonld) => { - jsonld['rdfs:member'].forEach(function (property) { - let referenced = properties.find((m) => m['@id'] === property['@id']) || null - if (referenced) { - referenced['rdfs:domain'].push({ '@id': jsonld['@id'] }) - } - }) - }) - /* - * Process non-normative `valueOf`. - * A class’s `valueOf` is non-normative because this information can be processed from each property’s `rdfs:range`. - */ - properties.forEach((jsonld) => { - jsonld['rdfs:range'].forEach(function (class_) { - let referenced = classes.find((c) => c['@id'] === class_['@id']) || null - if (referenced) { - referenced['valueOf'].push({ '@id': jsonld['@id'] }) - } - }) - }) - - // ++++ DEFINE THE CONTENT TO WRITE ++++ - let contents = JSON.stringify({ - "@context": { - "sdo" : "http://schema.org/", - "rdf" : "https://www.w3.org/1999/02/22-rdf-syntax-ns#", - "rdfs": "http://www.w3.org/2000/01/rdf-schema#", - "superClassOf": { "@reverse": "rdfs:subClassOf" }, - "superPropertyOf": { "@reverse": "rdfs:subPropertyOf" }, - "valueOf" : { "@reverse": "rdfs:range" } - }, - "@graph": [ - ...datatypes, - ...classes, - ...properties, - ], - }) - - // ++++ WRITE TO FILE ++++ + const { SCHEMATA } = require('./dist/index.js') + const { buildLD } = require('./dist/build.js') + let contents = JSON.stringify(buildLD(await SCHEMATA), null, '\t') await mkdirp('./dist/') - await util.promisify(fs.writeFile)('./dist/schemaorg.jsonld', contents) + return util.promisify(fs.writeFile)('./dist/schemaorg.jsonld', contents, 'utf8') }) - - gulp.task('dist-ts', ['dist-jsonld'], async function () { - const JSONLD = (await requireJSON('./dist/schemaorg.jsonld'))['@graph'] - /** - * @summary Print a list of links as a in jsdoc comment. - * @private - * @param {!Object[]} objs array of JSON-LD objects - * @returns {string} a segment of jsdoc/typescript comment - */ - function linklist(objs) { - return objs.map((obj) => ` * - {@link ${obj['@id'].split(':')[1]}}`).join('\n') - } - /** - * @summary Convert a Schema.org Datatype to a TypeScript type alias. - * @private - * @param {!Object} jsonld the JSON-LD object to mark up - * @returns {string} TypeScript code - */ - function datatypeTS(jsonld) { - let alias = jsonld['rdfs:label'] - let type = ({ - 'Boolean' : 'boolean', - 'Date' : 'string', - 'DateTime' : 'string', - 'Integer' : 'number', - 'Number' : 'number', - 'Text' : 'string', - 'Time' : 'string', - 'URL' : 'string', - })[alias] - return ` - /** - * @summary ${jsonld['rdfs:comment']} - * @see http://schema.org/${jsonld['rdfs:label']} - */ - export type ${alias} = ${type} - ` - } - /** - * @summary Convert a Schema.org Class to a TypeScript interface. - * @private - * @param {!Object} jsonld the JSON-LD object to mark up - * @returns {string} TypeScript code - */ - function classTS(jsonld) { - return ` - /** - * ${jsonld['rdfs:comment']} - * - * ${(jsonld['superClassOf'].length) ? `*(Non-Normative):* Known subclasses:\n${ linklist(jsonld['superClassOf'])}\n` : ''} - * ${(jsonld['valueOf' ].length) ? `*(Non-Normative):* May appear as values of:\n${linklist(jsonld['valueOf' ]).replace(/}/g,'_type}')}\n` : ''} - * @see http://schema.org/${jsonld['rdfs:label']} - */ - export interface ${jsonld['rdfs:label']} extends ${(jsonld['rdfs:subClassOf']) ? jsonld['rdfs:subClassOf']['@id'].split(':')[1] : 'JSONLDObject'} { - ${jsonld['rdfs:member'].map((member) => member['@id'].split(':')[1]).map((name) => ` - ${name}?: ${name}_type - `).join('')} - } - ` - } - /** - * @summary Convert a Schema.org Property to a TypeScript type alias. - * @private - * @param {!Object} jsonld the JSON-LD object to mark up - * @returns {string} TypeScript code - */ - function propertyTS(jsonld) { - let rangeunion = `${jsonld['rdfs:range'].map((cls) => cls['@id'].split(':')[1]).join('|')}` - return ` - /** - * ${jsonld['rdfs:comment']} - * - * ${(jsonld['rdfs:subPropertyOf']) ? `Extends {@link ${jsonld['rdfs:subPropertyOf']['@id'].split(':')[1]}}` : ''} - * ${(jsonld['superPropertyOf'].length) ? `*(Non-Normative):* Known subproperties:\n${linklist(jsonld['superPropertyOf'])}\n` : ''} - * ${(jsonld['rdfs:domain' ].length) ? `*(Non-Normative):* Property of:\n${ linklist(jsonld['rdfs:domain' ])}\n` : ''} - * @see http://schema.org/${jsonld['rdfs:label']} - */ - type ${jsonld['rdfs:label']}_type = ${rangeunion}${(jsonld['$rangeArray']) ? `|(${rangeunion})[]` : ''} - ` - } - - let contents = [ - `import { JSONLDObject } from '@chharvey/requirejson'`, - ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Datatype').map(datatypeTS), - ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Class' ).map(classTS), - ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdf:Property' ).map(propertyTS), - ].join('') - - await util.promisify(fs.writeFile)('./dist/schemaorg.d.ts', contents) + const { buildTS } = require('./dist/build.js') + let contents = buildTS(await requireJSON('./dist/schemaorg.jsonld')) + return util.promisify(fs.writeFile)('./dist/schemaorg.d.ts', contents, 'utf8') }) gulp.task('dist', ['dist-index', 'dist-ts'], async function () { diff --git a/src/build.ts b/src/build.ts new file mode 100644 index 0000000..4f3ff74 --- /dev/null +++ b/src/build.ts @@ -0,0 +1,289 @@ +import * as path from 'path' +import * as url from 'url' + +import { JSONSchema7 } from 'json-schema' + +import { JSONLDDocument, JSONLDObject } from '@chharvey/requirejson' + +import { SDODatatypeSchema, SDOClassSchema, SDOPropertySchema } from './meta-schemata.d' +import { SDODatatypeLD, SDOClassLD, SDOPropertyLD, SingleReferenceLD } from './meta-ld.d' + + +/** + * Return a full JSON-LD document marking up the entire Schema.org vocabulary (supported). + * @param schemabase the codebase of all schemata to transform (all JSON Schemata for Schema.org vocab) + * @returns a JSON-LD document for the all supported Schema.org vocabulary + */ +export function buildLD(schemabase: JSONSchema7[]): JSONLDDocument { + /** + * Return the canonical name of the Schema.org item. + * @private + * @param jsd A JSON Schema for a Schema.org Datatype, Class, or Property + * @returns the name of the datatype, class, or property + */ + function _label(jsd: SDODatatypeSchema|SDOClassSchema|SDOPropertySchema): string { + return path.parse(new url.URL(jsd.title).pathname).name + } + + /** + * Transform a Schema.org Datatype JSON Schema into a JSON-LD object. + * @param jsd JSON Schema for a Schema.org Datatype + * @returns JSON-LD marking up the Schema.org Datatype + */ + function datatypeLD(jsd: SDODatatypeSchema): SDODatatypeLD { + return { + '@type' : 'rdfs:Datatype', + '@id' : `sdo:${_label(jsd)}`, + 'rdfs:label' : _label(jsd), + 'rdfs:comment' : jsd.description, + } + } + + /** + * Transform a Schema.org Class JSON Schema into a JSON-LD object. + * @param jsd JSON Schema for a Schema.org Class + * @param propertybase a base of Schema.org Properties to look up + * @returns JSON-LD marking up the Schema.org Class + */ + function classLD(jsd: SDOClassSchema, propertybase: ReadonlyArray): SDOClassLD { + function superclass(jsd: SDOClassSchema): string|null { + return (_label(jsd) !== 'Thing') ? path.parse(jsd.allOf[0].$ref).name : null + } + return { + '@type' : 'rdfs:Class', + '@id' : `sdo:${_label(jsd)}`, + 'rdfs:label' : _label(jsd), + 'rdfs:comment' : jsd.description, + 'rdfs:subClassOf' : (superclass(jsd)) ? { '@id': `sdo:${superclass(jsd)}` } : null, + 'rdfs:member' : Object.entries(jsd.allOf[1].properties).map((entry) => { + let prop_name: string = entry[0] + let memberjsd: SDOPropertySchema|null = propertybase.find((sch) => sch.title === `http://schema.org/${prop_name}`) || null + if (memberjsd) return { '@id': `sdo:${prop_name}` } + else throw new ReferenceError(`No corresponding jsd file was found for member subschema \`${_label(jsd)}#${prop_name}\`.`) + }), + superClassOf : [], // non-normative + valueOf : [], // non-normative + } + } + + /** + * Transform a Schema.org Property JSON Schema into a JSON-LD object. + * @param jsd JSON Schema for a Schema.org Property + * @returns JSON-LD marking up the Schema.org Property + */ + function propertyLD(jsd: SDOPropertySchema): SDOPropertyLD { + function superproperty(jsd: SDOPropertySchema): string|null { + return (jsd.allOf[0] !== true) ? path.parse(jsd.allOf[0].$ref).name.split('.')[0] : null + } + return { + '@type' : 'rdf:Property', + '@id' : `sdo:${_label(jsd)}`, + 'rdfs:label' : _label(jsd), + 'rdfs:comment' : jsd.description, + 'rdfs:subPropertyOf' : (jsd.allOf[0] !== true) ? { '@id': `sdo:${superproperty(jsd)}` } : null, + 'rdfs:domain' : [], // non-normative + 'rdfs:range' : jsd.definitions.ExpectedType.anyOf.map((schema) => ({ '@id': `sdo:${path.parse(schema.$ref).name}` })), + superPropertyOf : [], // non-normative + $rangeArray : jsd.allOf[1].anyOf.length === 2, // non-standard + } + } + + /** + * Process non-normative subclasses. + * + * Subclasses are non-normative because this information can be processed from each class’s normative superclass. + */ + function processSubclasses(jsonld: SDOClassLD, classbase: ReadonlyArray): void { + let superclass: SingleReferenceLD|null = jsonld['rdfs:subClassOf'] + let referenced: SDOClassLD|null = (superclass) ? classbase.find((c) => c['@id'] === superclass !['@id']) || null : null + if (referenced) { + referenced.superClassOf.push({ '@id': jsonld['@id'] }) + } + } + + /** + * Process non-normative subproperties. + * + * Subproperties are non-normative because this information can be processed from each property’s normative superproperty. + */ + function processSubproperties(jsonld: SDOPropertyLD, propertybase: ReadonlyArray): void { + let superproperty: SingleReferenceLD|null = jsonld['rdfs:subPropertyOf'] + let referenced: SDOPropertyLD|null = (superproperty) ? propertybase.find((p) => p['@id'] === superproperty !['@id']) || null : null + if (referenced) { + referenced.superPropertyOf.push({ '@id': jsonld['@id'] }) + } + } + + /* + * Process non-normative `Property#rdfs:domain`. + * + * A property’s `rdfs:domain` is non-normative because this information can be processed from each class’s normative properties. + */ + function processDomains(jsonld: SDOClassLD, propertybase: ReadonlyArray): void { + jsonld['rdfs:member'].forEach((property_ref) => { + let referenced: SDOPropertyLD|null = propertybase.find((p) => p['@id'] === property_ref['@id']) || null + if (referenced) { + referenced['rdfs:domain'].push({ '@id': jsonld['@id'] }) + } + }) + } + + /* + * Process non-normative `Class#valueOf`. + * + * A class’s `valueOf` is non-normative because this information can be processed from each property’s normative `rdfs:range`. + */ + function processValueOf(jsonld: SDOPropertyLD, classbase: ReadonlyArray): void { + jsonld['rdfs:range'].forEach((class_ref) => { + let referenced: SDOClassLD|null = classbase.find((c) => c['@id'] === class_ref['@id']) || null + if (referenced) { + referenced.valueOf.push({ '@id': jsonld['@id'] }) + } + }) + } + + // All JSON schemata validating JSON-LD values marking up Schema.org Datatype, Class, and Property instances. + const datatypeJSDs : ReadonlyArray = schemabase.filter((jsd) => jsd.$schema === 'http://json-schema.org/draft-07/schema#') as SDODatatypeSchema[] + const classJSDs : ReadonlyArray = schemabase.filter((jsd) => jsd.$schema === 'https://chharvey.github.io/schemaorg-jsd/meta/type.jsd#') as SDOClassSchema[] + const propertyJSDs : ReadonlyArray = schemabase.filter((jsd) => jsd.$schema === 'https://chharvey.github.io/schemaorg-jsd/meta/member.jsd#') as SDOPropertySchema[] + + // JSON-LD objects marking up the Schema.org Datatypes, Classes, and Properties themselves + const datatypeLDs : ReadonlyArray = datatypeJSDs.map((jsd) => datatypeLD(jsd )) + const classLDs : ReadonlyArray = classJSDs .map((jsd) => classLD (jsd, propertyJSDs)) + const propertyLDs : ReadonlyArray = propertyJSDs.map((jsd) => propertyLD(jsd )) + + classLDs.forEach((jsonld) => { + processSubclasses(jsonld, classLDs) + processDomains(jsonld, propertyLDs) + }) + propertyLDs.forEach((jsonld) => { + processSubproperties(jsonld, propertyLDs) + processValueOf(jsonld, classLDs) + }) + + return { + "@context": { + "sdo" : "http://schema.org/", + "rdf" : "https://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "superClassOf" : { "@reverse": "rdfs:subClassOf" }, + "superPropertyOf": { "@reverse": "rdfs:subPropertyOf" }, + "valueOf" : { "@reverse": "rdfs:range" }, + }, + "@graph": [ + ...datatypeLDs, + ...classLDs, + ...propertyLDs, + ], + } +} + +export function buildTS(jsonlddocument: JSONLDDocument): string { + /** + * Print a list of links as a in jsdoc comment. + * @private + * @param lds array of JSON-LD objects + * @returns a segment of jsdoc/typescript comment + */ + function _linklist(lds: ReadonlyArray): string { + return lds.map((obj) => ` * - {@link ${obj['@id'] !.split(':')[1]}}`).join('\n') // we know it will have an `'@id'` property + } + + /** + * Transform a Schema.org Datatype JSON-LD object into a string in TypeScript. + * @param ld JSON-LD for a Schema.org Datatype + * @returns a TypeScript type alias marking up the Schema.org Datatype + */ + function datatypeTS(ld: SDODatatypeLD): string { + enum SDODatatypeNames { + Boolean, + Date, + DateTime, + Integer, + Number, + Text, + Time, + URL, + } + let alias: keyof typeof SDODatatypeNames = ld['rdfs:label'] as keyof typeof SDODatatypeNames + let type: string = ({ + Boolean : 'boolean', + Date : 'string', + DateTime : 'string', + Integer : 'number', + Number : 'number', + Text : 'string', + Time : 'string', + URL : 'string', + })[alias] + return ` + /** + * ${ld['rdfs:comment']} + * + * @see http://schema.org/${ld['rdfs:label']} + */ + export type ${alias} = ${type} + ` + } + + /** + * Transform a Schema.org Class JSON-LD object into a string in TypeScript. + * @param ld JSON-LD for a Schema.org Class + * @returns a TypeScript interface marking up the Schema.org Class + */ + function classTS(ld: SDOClassLD): string { + return ` + /** + * ${ld['rdfs:comment']} + * + * ${(ld['superClassOf'].length) ? `*(Non-Normative):* Known subclasses:\n${ _linklist(ld['superClassOf'])}\n` : ''} + * ${(ld['valueOf' ].length) ? `*(Non-Normative):* May appear as values of:\n${_linklist(ld['valueOf' ]).replace(/}/g,'_type}')}\n` : ''} + * @see http://schema.org/${ld['rdfs:label']} + */ + export interface ${ld['rdfs:label']} extends ${(ld['rdfs:subClassOf']) ? ld['rdfs:subClassOf']['@id'].split(':')[1] : 'JSONLDObject'} { + ${ld['rdfs:member'].map((member) => member['@id'].split(':')[1]).map((name) => ` + ${name}?: ${name}_type + `).join('')} + } + ` + } + + /** + * Transform a Schema.org Property JSON-LD object into a string in TypeScript. + * @param ld JSON-LD for a Schema.org Property + * @returns a TypeScript type alias marking up the Schema.org Property + */ + function propertyTS(ld: SDOPropertyLD): string { + let rangeunion: string = `${ld['rdfs:range'].map((cls) => cls['@id'].split(':')[1]).join('|')}` + return ` + /** + * ${ld['rdfs:comment']} + * + * ${(ld['rdfs:subPropertyOf']) ? `Extends {@link ${ld['rdfs:subPropertyOf']['@id'].split(':')[1]}}` : ''} + * ${(ld['superPropertyOf'].length) ? `*(Non-Normative):* Known subproperties:\n${_linklist(ld['superPropertyOf'])}\n` : ''} + * ${(ld['rdfs:domain' ].length) ? `*(Non-Normative):* Property of:\n${ _linklist(ld['rdfs:domain' ])}\n` : ''} + * @see http://schema.org/${ld['rdfs:label']} + */ + type ${ld['rdfs:label']}_type = ${rangeunion}${(ld['$rangeArray']) ? `|(${rangeunion})[]` : ''} + ` + } + + const JSONLD: ReadonlyArray = jsonlddocument['@graph'] as JSONLDObject[] + return [ + `import { JSONLDObject } from '@chharvey/requirejson'`, + ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Datatype').map((ld) => datatypeTS(ld as SDODatatypeLD)), + ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdfs:Class' ).map((ld) => classTS (ld as SDOClassLD )), + ...JSONLD.filter((jsonld) => jsonld['@type'] === 'rdf:Property' ).map((ld) => propertyTS(ld as SDOPropertyLD)), + ].join('') +} + + +// function isSDODatatypeSchema(jsd: JSONSchema7): jsd is SDODatatypeSchema { +// return jsd.$schema === 'http://json-schema.org/draft-07/schema#' +// } +// function isSDOClassSchema(jsd: JSONSchema7): jsd is SDOClassSchema { +// return jsd.$schema === 'https://chharvey.github.io/schemaorg-jsd/meta/type.jsd#' +// } +// function isSDOPropertySchema(jsd: JSONSchema7): jsd is SDOPropertySchema { +// return jsd.$schema === 'https://chharvey.github.io/schemaorg-jsd/meta/member.jsd#' +// } From 24647d8eaeffea6f0b3080ea8c9ca0ef64018572 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 2 Feb 2019 01:07:56 -0500 Subject: [PATCH 27/37] upgrade gulp v4 --- package-lock.json | 2609 ++++++++++++++++++++++++++------------------- package.json | 2 +- 2 files changed, 1484 insertions(+), 1127 deletions(-) diff --git a/package-lock.json b/package-lock.json index b420072..bab8586 100644 --- a/package-lock.json +++ b/package-lock.json @@ -138,18 +138,22 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, "append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", @@ -171,41 +175,101 @@ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, "array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", "dev": true }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } }, "array-unique": { "version": "0.3.2", @@ -226,14 +290,33 @@ "dev": true, "requires": { "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } + } + }, + "async-done": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", + "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^1.0.7", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" } }, "atob": { @@ -242,6 +325,23 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -303,10 +403,10 @@ } } }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", "dev": true }, "brace-expansion": { @@ -354,6 +454,18 @@ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", "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==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -371,17 +483,31 @@ "unset-value": "^1.0.0" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" } }, "class-utils": { @@ -407,10 +533,21 @@ } } }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, "clone-buffer": { @@ -420,9 +557,9 @@ "dev": true }, "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", "dev": true }, "cloneable-readable": { @@ -436,38 +573,31 @@ "readable-stream": "^2.3.5" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "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==", "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } } } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -503,6 +633,18 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "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", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -518,17 +660,30 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, "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=", "dev": true }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "^0.10.9" + } }, "debug": { "version": "2.6.9", @@ -539,21 +694,41 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", "dev": true, "requires": { - "clone": "^1.0.2" + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -604,12 +779,6 @@ } } }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true - }, "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -622,15 +791,6 @@ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - } - }, "duplexify": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", @@ -641,72 +801,79 @@ "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - } + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" } }, "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "~1.3.0" + "once": "^1.4.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.47", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz", + "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } }, "event-stream": { "version": "3.3.4", @@ -904,11 +1071,15 @@ } } }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } }, "findup-sync": { "version": "2.0.0", @@ -920,6 +1091,17 @@ "is-glob": "^3.1.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, "fined": { @@ -935,12 +1117,6 @@ "parse-filepath": "^1.0.1" } }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, "flagged-respawn": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", @@ -955,38 +1131,6 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.4" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - } } }, "for-in": { @@ -1028,14 +1172,6 @@ "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } } }, "fs-mkdirp-stream": { @@ -1046,14 +1182,6 @@ "requires": { "graceful-fs": "^4.1.11", "through2": "^2.0.3" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } } }, "fs.realpath": { @@ -1062,20 +1190,546 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", - "dev": true, - "requires": { - "globule": "~0.1.0" - } + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-value": { "version": "2.0.6", @@ -1084,15 +1738,17 @@ "dev": true }, "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { + "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -1103,62 +1759,49 @@ "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" - } - }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "dev": true, - "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" }, "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "is-extglob": "^2.1.0" } } } }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", "dev": true, "requires": { - "gaze": "^0.5.1" + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" } }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", "dev": true, "requires": { - "find-index": "^0.1.1" + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" } }, "global-modules": { @@ -1185,52 +1828,6 @@ "which": "^1.2.14" } }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", - "dev": true, - "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" - }, - "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - } - } - }, "glogg": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", @@ -1241,33 +1838,49 @@ } }, "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "^1.1.0" - } + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", + "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", "dev": true, "requires": { - "archy": "^1.0.0", - "chalk": "^1.0.0", - "deprecated": "^0.0.1", - "gulp-util": "^3.0.0", - "interpret": "^1.0.0", - "liftoff": "^2.1.0", - "minimist": "^1.1.0", - "orchestrator": "^0.3.0", - "pretty-hrtime": "^1.0.0", - "semver": "^4.1.0", - "tildify": "^1.0.0", - "v8flags": "^2.0.2", - "vinyl-fs": "^0.3.0" + "glob-watcher": "^5.0.0", + "gulp-cli": "^2.0.0", + "undertaker": "^1.0.0", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "gulp-cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", + "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^2.5.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } } }, "gulp-typedoc": { @@ -1302,132 +1915,6 @@ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - } - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - }, - "dependencies": { - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - } - } - }, "plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -1451,38 +1938,12 @@ } } }, - "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "through2": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", @@ -1492,120 +1953,9 @@ "readable-stream": "2 || 3", "xtend": "~4.0.1" } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } } } }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - } - }, "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", @@ -1635,24 +1985,6 @@ } } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", @@ -1706,6 +2038,12 @@ "parse-passwd": "^1.0.0" } }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1734,6 +2072,12 @@ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -1764,12 +2108,36 @@ } } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -1821,13 +2189,22 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, "is-negated-glob": { @@ -1902,9 +2279,9 @@ "dev": true }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { @@ -1937,23 +2314,30 @@ "dev": true, "requires": { "graceful-fs": "^4.1.6" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true, - "optional": true - } } }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -1961,38 +2345,15 @@ "dev": true, "requires": { "readable-stream": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - } + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" } }, "lead": { @@ -2020,135 +2381,29 @@ "resolve": "^1.1.7" } }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, "make-dir": { @@ -2158,6 +2413,14 @@ "dev": true, "requires": { "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "make-iterator": { @@ -2196,6 +2459,18 @@ "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==", "dev": true }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + } + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -2218,18 +2493,18 @@ } }, "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true }, "mixin-deep": { @@ -2253,37 +2528,24 @@ } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", "dev": true, - "requires": { - "duplexer2": "0.0.2" - } + "optional": true }, "nanomatch": { "version": "1.2.13", @@ -2304,12 +2566,24 @@ "to-regex": "^3.0.1" } }, - "natives": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", - "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "normalize-package-data": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.2.tgz", + "integrity": "sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", @@ -2328,10 +2602,10 @@ "once": "^1.3.2" } }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-copy": { @@ -2423,10 +2697,20 @@ "isobject": "^3.0.1" } }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -2440,38 +2724,25 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - } } }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", "dev": true, "requires": { - "end-of-stream": "~0.1.5", - "sequencify": "~0.0.7", - "stream-consume": "~0.1.0" + "readable-stream": "^2.0.1" } }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } }, "parse-filepath": { "version": "1.0.2", @@ -2484,6 +2755,15 @@ "path-root": "^0.1.1" } }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, "parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", @@ -2508,6 +2788,15 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2535,6 +2824,17 @@ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -2545,11 +2845,26 @@ } }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, "plugin-error": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", @@ -2615,9 +2930,9 @@ "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==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "progress": { @@ -2634,28 +2949,6 @@ "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - }, - "dependencies": { - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - } - } - } } }, "pumpify": { @@ -2674,16 +2967,59 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "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.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, "rechoir": { @@ -2745,9 +3081,32 @@ "dev": true }, "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, "resolve": { @@ -2806,15 +3165,24 @@ } }, "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { @@ -2849,39 +3217,8 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -3020,6 +3357,38 @@ "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", "dev": true }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", @@ -3038,6 +3407,12 @@ "extend-shallow": "^3.0.0" } }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -3068,10 +3443,10 @@ "duplexer": "~0.1.1" } }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", "dev": true }, "stream-shift": { @@ -3080,11 +3455,25 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "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" + } }, "strip-ansi": { "version": "3.0.1", @@ -3096,20 +3485,23 @@ } }, "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "first-chunk-stream": "^1.0.0", "is-utf8": "^0.2.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } }, "through": { "version": "2.3.8", @@ -3125,38 +3517,6 @@ "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "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", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "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" - } - } } }, "through2-filter": { @@ -3169,15 +3529,6 @@ "xtend": "~4.0.0" } }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, "time-stamp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", @@ -3245,6 +3596,12 @@ "through2": "^2.0.3" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typedoc": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.13.0.tgz", @@ -3270,21 +3627,6 @@ "typescript": "3.1.x" }, "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "typescript": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", @@ -3331,6 +3673,29 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, + "undertaker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", + "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -3367,10 +3732,14 @@ } }, "unique-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } }, "universalify": { "version": "0.1.2", @@ -3415,15 +3784,15 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true } } }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -3444,12 +3813,6 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -3457,12 +3820,22 @@ "dev": true }, "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", + "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", "dev": true, "requires": { - "user-home": "^1.1.1" + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "value-or-function": { @@ -3472,70 +3845,42 @@ "dev": true }, "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } }, "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" } }, "vinyl-sourcemap": { @@ -3551,46 +3896,6 @@ "now-and-later": "^2.0.0", "remove-bom-buffer": "^3.0.0", "vinyl": "^2.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } } }, "which": { @@ -3602,12 +3907,28 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -3619,6 +3940,42 @@ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } } } } diff --git a/package.json b/package.json index 58b9ab2..acbd035 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "ajv": "^6.5.4" }, "devDependencies": { - "gulp": "^3.9.1", + "gulp": "^4.0.0", "gulp-typedoc": "^2.2.1", "gulp-typescript": "^5.0.0", "make-dir": "^1.3.0", From f13e33ab4cf40f6b904bec629cac39dc5d4bc424 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 2 Feb 2019 01:15:51 -0500 Subject: [PATCH 28/37] update gulpfile --- gulpfile.js | 64 +++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index f5179a0..dd62378 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -17,41 +17,35 @@ const tsconfig = require('./tsconfig.json') const typedocconfig = require('./config/typedoc.json') -gulp.task('validate', async function () { +async function validate() { const sdo_jsd = require('./index.js') new Ajv() .addMetaSchema(await sdo_jsd.META_SCHEMATA) .addSchema(await sdo_jsd.JSONLD_SCHEMA) .addSchema(await sdo_jsd.SCHEMATA) -}) +} -gulp.task('dist-index', async function() { +function dist_index() { return gulp.src('./src/{index,build}.ts') .pipe(typescript(tsconfig.compilerOptions)) .pipe(gulp.dest('./dist/')) -}) +} -gulp.task('dist-jsonld', ['validate'], async function () { - const { SCHEMATA } = require('./dist/index.js') - const { buildLD } = require('./dist/build.js') - let contents = JSON.stringify(buildLD(await SCHEMATA), null, '\t') - await mkdirp('./dist/') - return util.promisify(fs.writeFile)('./dist/schemaorg.jsonld', contents, 'utf8') -}) +const dist = gulp.series( + dist_index, + async function dist0() { + const { SCHEMATA } = require('./dist/index.js') + const { buildLD, buildTS } = require('./dist/build.js') + let ld = buildLD(await SCHEMATA) + await mkdirp('./dist/') + return Promise.all([ + util.promisify(fs.writeFile)('./dist/schemaorg.jsonld', JSON.stringify(ld, null, '\t'), 'utf8'), + util.promisify(fs.writeFile)('./dist/schemaorg.d.ts', buildTS(ld), 'utf8'), + ]) + } +) -gulp.task('dist-ts', ['dist-jsonld'], async function () { - const { buildTS } = require('./dist/build.js') - let contents = buildTS(await requireJSON('./dist/schemaorg.jsonld')) - return util.promisify(fs.writeFile)('./dist/schemaorg.d.ts', contents, 'utf8') -}) - -gulp.task('dist', ['dist-index', 'dist-ts'], async function () { - return gulp.src('./dist/schemaorg.d.ts') - .pipe(typescript(tsconfig.compilerOptions)) - .pipe(gulp.dest('./dist/')) -}) - -gulp.task('test', async function () { +async function test() { const sdo_jsd = require('./index.js') return Promise.all((await util.promisify(fs.readdir)('./test')).map(async (file) => { let filepath = path.resolve(__dirname, './test/', file) @@ -64,12 +58,24 @@ gulp.task('test', async function () { } return returned })) -}) +} - -gulp.task('docs', async function () { +function docs() { return gulp.src('./dist/schemaorg.d.ts') .pipe(typedoc(typedocconfig)) -}) +} + +const build = gulp.series( + validate, + dist, + gulp.parallel(test, docs) +) -gulp.task('build', ['validate', 'dist', 'test', 'docs']) +module.exports = { + validate, + dist_index, + dist, + test, + docs, + build, +} From f2c79df4f3d1678fccf7f023c6c35c64f84cfff0 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 2 Feb 2019 01:22:05 -0500 Subject: [PATCH 29/37] export Schema.org vocab declarations --- README.md | 2 +- index.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c2db7ac..b8d1f1a 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ $ # open ./docs/api/index.html in your browser **(Note: These docs will be published online soon, so you won’t have to build locally.)** ```ts -import * as sdo from 'schemaorg-jsd/dist/schemaorg.d' // TEMP: this import might change +import * as sdo from 'schemaorg-jsd' class Person { /** This person’s name. */ diff --git a/index.ts b/index.ts index 3e4254e..dc895af 100644 --- a/index.ts +++ b/index.ts @@ -3,3 +3,5 @@ // See `./index.js` for the manual output. export { META_SCHEMATA, JSONLD_SCHEMA, SCHEMATA, sdoValidate } from './src/index' + +export * from './dist/schemaorg.d' From bc86e3cc1de68607a46fd640d4b26966d9c2e8ca Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Sat, 2 Feb 2019 01:37:30 -0500 Subject: [PATCH 30/37] update readme links --- README.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index b8d1f1a..8e37bb2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# schemaorg-jsd +# [schemaorg-jsd](https://chharvey.github.io/schemaorg-jsd/docs/api/) JSON Schema validation for JSON-LD files using Schema.org vocabulary. @@ -90,14 +90,7 @@ They are identical to the specs at [schema.org](https://schema.org/), but you can import the source code in your own project for [TypeScript](http://www.typescriptlang.org/) compilation. -``` -$ cd node_modules/schemaorg-jsd -$ npm install -$ npm run build -$ cd - -$ # open ./docs/api/index.html in your browser -``` -**(Note: These docs will be published online soon, so you won’t have to build locally.)** +[View the docs.](https://chharvey.github.io/schemaorg-jsd/docs/api/) ```ts import * as sdo from 'schemaorg-jsd' @@ -141,7 +134,7 @@ Rather than everyone using their own data types, JSON-LD standardizes the markup for people and data types to communicate. JSON-LD has some rules, for example, an object’s `@id` property must be a string. Therefore, to enforce these rules, JSON-LD documents should validate against the -[JSON-LD Schema](https://raw.githubusercontent.com/json-ld/json-ld.org/master/schemas/jsonld-schema.json). +[JSON-LD Schema](https://json-ld.org/schemas/jsonld-schema.json). The official MIME Type of JSON-LD documents is `application/ld+json`, and JSON-LD files typically have file extension `.jsonld`. @@ -164,4 +157,4 @@ so that you can write a well-typed API for your project. You can semantically mark up your data using the Schema.org vocabulary with JSON-LD syntax. If you have a TypeScript API, you can import this project’s TypeScript to catch any type errors before runtime. Then, to prevent additional runtime errors or SEO mistakes, you can validate your markup against -the JSON schemata (multiple “schemas”) in this project. +the JSON schemata in this project. From bbbd994bc0faca388bbbc4ab02aa3110834b4ffd Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 8 Feb 2019 12:23:45 -0500 Subject: [PATCH 31/37] fresh update & install --- package-lock.json | 193 ++++++++++++++++++++++------------------------ package.json | 5 +- 2 files changed, 94 insertions(+), 104 deletions(-) diff --git a/package-lock.json b/package-lock.json index bab8586..90cb7d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,12 @@ "requires": true, "dependencies": { "@chharvey/requirejson": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@chharvey/requirejson/-/requirejson-1.0.1.tgz", - "integrity": "sha512-Q8rm3SJg+iuCAGDIgi8E7aUmmvH9SMhEiILo/RAsPngI20WA/D7P7aVQvISgiq7U49Re+jz8MbYXLRpQRHx4dw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@chharvey/requirejson/-/requirejson-1.1.0.tgz", + "integrity": "sha512-+FmI3Anfk28G8MtIDZdOnVRmwkue/Dfk3uPm0Ick2e2XQ0YbVORRCvZVEej4suMO7CshpTSj4HSSMzAXFWfYBQ==", + "requires": { + "@types/json-schema": "^7.0.2" + } }, "@types/events": { "version": "3.0.0", @@ -71,9 +74,9 @@ "dev": true }, "@types/node": { - "version": "10.12.21", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.21.tgz", - "integrity": "sha512-CBgLNk4o3XMnqMc0rhb6lc77IwShMEglz05deDcn2lQxyXEZivfwgYJu7SMha9V5XcrP6qZuevTHV/QrN2vjKQ==" + "version": "10.12.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.23.tgz", + "integrity": "sha512-EKhb5NveQ3NlW5EV7B0VRtDKwUfVey8LuJRl9pp5iW0se87/ZqLjG0PMf2MCzPXAJYWZN5Ltg7pHIAf9/Dm1tQ==" }, "@types/shelljs": { "version": "0.8.2", @@ -86,9 +89,9 @@ } }, "ajv": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", - "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", + "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -404,9 +407,9 @@ } }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", "dev": true }, "brace-expansion": { @@ -460,12 +463,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -490,24 +487,31 @@ "dev": true }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.0.tgz", + "integrity": "sha512-5t6G2SH8eO6lCvYOoUpaRnF5Qfd//gd7qJAkwRUw9qlGVkiQ13uwQngqbWWaurOsaAm9+kUGbITADxt6H0XFNQ==", "dev": true, "requires": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "readdirp": "^2.2.1", + "upath": "^1.1.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } } }, "class-utils": { @@ -792,9 +796,9 @@ "dev": true }, "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -1124,13 +1128,13 @@ "dev": true }, "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, "for-in": { @@ -1210,7 +1214,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1231,12 +1236,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1251,17 +1258,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1378,7 +1388,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1390,6 +1401,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1404,6 +1416,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1411,12 +1424,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -1435,6 +1450,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1515,7 +1531,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1527,6 +1544,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1612,7 +1630,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -1648,6 +1667,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1667,6 +1687,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1710,12 +1731,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -1884,9 +1907,9 @@ } }, "gulp-typedoc": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/gulp-typedoc/-/gulp-typedoc-2.2.1.tgz", - "integrity": "sha512-8zu1pUTZd0fhNRaJceP4ZU5lqcEtmWLuc14AjJvZGQJ7YoL88+1mjEWfCsj6+ydrWPl9uCpT8IB2sTFsaOOZdw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/gulp-typedoc/-/gulp-typedoc-2.2.2.tgz", + "integrity": "sha512-Yd/WoB+NHRFgWqFxNEHym2aIykO3koJq7n62indzBnHoHAZNHbKO5eX+ljkX4OVLt5bmYQZ50RqJCZzS40IalA==", "dev": true, "requires": { "ansi-colors": "^1.0.1", @@ -1966,9 +1989,9 @@ } }, "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", "dev": true, "requires": { "async": "^2.5.0", @@ -2129,15 +2152,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -2400,29 +2414,6 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "make-iterator": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", @@ -2573,13 +2564,13 @@ "dev": true }, "normalize-package-data": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.2.tgz", - "integrity": "sha512-YcMnjqeoUckXTPKZSAsPjUPLxH85XotbpqK3w4RyCwdFQSU5FxxBys8buehkSfg0j9fKvV1hn7O0+8reEgkAiw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -3603,9 +3594,9 @@ "dev": true }, "typedoc": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.13.0.tgz", - "integrity": "sha512-jQWtvPcV+0fiLZAXFEe70v5gqjDO6pJYJz4mlTtmGJeW2KRoIU/BEfktma6Uj8Xii7UakuZjbxFewl3UYOkU/w==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.14.2.tgz", + "integrity": "sha512-aEbgJXV8/KqaVhcedT7xG6d2r+mOvB5ep3eIz1KuB5sc4fDYXcepEEMdU7XSqLFO5hVPu0nllHi1QxX2h/QlpQ==", "dev": true, "requires": { "@types/fs-extra": "^5.0.3", @@ -3617,20 +3608,20 @@ "@types/shelljs": "^0.8.0", "fs-extra": "^7.0.0", "handlebars": "^4.0.6", - "highlight.js": "^9.0.0", + "highlight.js": "^9.13.1", "lodash": "^4.17.10", "marked": "^0.4.0", "minimatch": "^3.0.0", "progress": "^2.0.0", "shelljs": "^0.8.2", "typedoc-default-themes": "^0.5.0", - "typescript": "3.1.x" + "typescript": "3.2.x" }, "dependencies": { "typescript": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", - "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", "dev": true } } @@ -3642,9 +3633,9 @@ "dev": true }, "typescript": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", - "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3.tgz", + "integrity": "sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index acbd035..c616a80 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,7 @@ "gulp": "^4.0.0", "gulp-typedoc": "^2.2.1", "gulp-typescript": "^5.0.0", - "make-dir": "^1.3.0", - "typedoc": "^0.13.0", - "typescript": "~3.2.2" + "typedoc": "^0.14.2", + "typescript": "~3.3.3" } } From 96fadc43a0c690ea0023d2a5ab68136d87d1670d Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 8 Feb 2019 12:24:19 -0500 Subject: [PATCH 32/37] remove make-dir directory already made in `dist_index` --- gulpfile.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index dd62378..7e37151 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -6,7 +6,6 @@ const util = require('util') const gulp = require('gulp') const typedoc = require('gulp-typedoc') const typescript = require('gulp-typescript') -const mkdirp = require('make-dir') const Ajv = require('ajv') // require('typedoc') // DO NOT REMOVE … peerDependency of `gulp-typedoc` // require('typescript') // DO NOT REMOVE … peerDependency of `gulp-typescript` @@ -37,7 +36,6 @@ const dist = gulp.series( const { SCHEMATA } = require('./dist/index.js') const { buildLD, buildTS } = require('./dist/build.js') let ld = buildLD(await SCHEMATA) - await mkdirp('./dist/') return Promise.all([ util.promisify(fs.writeFile)('./dist/schemaorg.jsonld', JSON.stringify(ld, null, '\t'), 'utf8'), util.promisify(fs.writeFile)('./dist/schemaorg.d.ts', buildTS(ld), 'utf8'), From 993b78fa94aa34c66d9ed991c34276f3ac28875c Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 8 Feb 2019 12:29:18 -0500 Subject: [PATCH 33/37] 0.15.0-alpha.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0736a79..f8fb440 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "schemaorg-jsd", - "version": "0.14.0", + "version": "0.15.0-alpha.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index a2daadf..ceba348 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "schemaorg-jsd", - "version": "0.14.0", + "version": "0.15.0-alpha.0", "description": "JSON Schema validation for JSON-LD files using Schema.org vocabulary.", "main": "index.js", "scripts": { From bed47cf3af7f5faa5fee6a136df5e57a4ace3ce4 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 8 Feb 2019 12:49:32 -0500 Subject: [PATCH 34/37] update code formatting & comments --- src/index.ts | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/index.ts b/src/index.ts index 36a44e1..a79dc19 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,12 +16,10 @@ import { SDODatatypeSchema, SDOClassSchema, SDOPropertySchema } from './meta-sch * * This is for internal use only. Users should not be expected to use these meta-schemata. */ -export const META_SCHEMATA: Promise = (async () => { - return Promise.all( - (await util.promisify(fs.readdir)(path.resolve(__dirname, '../meta/'))) - .map((filename) => requireJSON(path.join(__dirname, '../meta/', filename)) as Promise) - ) -})() +export const META_SCHEMATA: Promise = (async () => Promise.all( + (await util.promisify(fs.readdir)(path.resolve(__dirname, '../meta/'))) + .map((filename) => requireJSON(path.join(__dirname, '../meta/', filename)) as Promise) +))() /** * A single JSON Schema, which validates JSON-LD objects. @@ -29,6 +27,7 @@ export const META_SCHEMATA: Promise = (async () => { */ export const JSONLD_SCHEMA: Promise = new Promise((resolve, reject) => { https.get('https://cdn.jsdelivr.net/gh/json-ld/json-ld.org@1.0/schemas/jsonld-schema.json', (res) => { + // if failing to load page, reject if (!res.statusCode || res.statusCode < 200 || 300 <= res.statusCode) { reject(new Error(` Failed to load. @@ -42,17 +41,18 @@ Status Code: ${res.statusCode || 'no status code found'} res.on('data', (chunk) => { body.push(chunk) }) res.on('end', () => { let data: JSONSchema4; + // if failing to parse contents as json, reject try { data = JSON.parse(body.join('')) - } catch (e) { - reject(e) + } catch (err) { + reject(err) return; } data.$schema = 'http://json-schema.org/draft-07/schema#' data.$id = 'https://json-ld.org/schemas/jsonld-schema.json' resolve(data as JSONSchema7) }) - }).on('error', (e) => { reject(e) }) + }).on('error', (err) => { reject(err) }) // if failing to get url, reject }) /** @@ -61,12 +61,10 @@ Status Code: ${res.statusCode || 'no status code found'} * This array contains all Schema.org schemata in this project. * That is, schemata against which your JSON-LD documents should validate. */ -export const SCHEMATA: Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)[]> = (async () => { - return Promise.all( - (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) - .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise as Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)>) - ) -})() +export const SCHEMATA: Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)[]> = (async () => Promise.all( + (await util.promisify(fs.readdir)(path.resolve(__dirname, '../schema/'))) + .map((filename) => requireJSON(path.join(__dirname, '../schema/', filename)) as Promise as Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySchema)>) +))() /** * Validate a JSON-LD object against a Schema.org JSON schema. @@ -77,7 +75,7 @@ export const SCHEMATA: Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySche * let is_valid; * try { * is_valid = await sdoValidate(ldobj) - * } catch (e) { + * } catch (err) { * is_valid = false * } * console.log(is_valid) @@ -85,7 +83,7 @@ export const SCHEMATA: Promise<(SDODatatypeSchema|SDOClassSchema|SDOPropertySche * // or you could use its Promise (if `async`/`await` is not supported): * function compilePromise(ldobj) { * sdoValidate(ldobj) - * .catch((e) => false) + * .catch((err) => false) * .then((result) => { console.log(result) }) * } * ``` @@ -108,7 +106,7 @@ export async function sdoValidate(obj: JSONLDObject|string, type: string|null = if (type === null) { let objtype: string[]|string|null = obj['@type'] || null if (objtype instanceof Array && objtype.length) { - return (await Promise.all(objtype.map((dt) => sdoValidate(obj, dt)))).reduce((a, b) => a && b) + return (await Promise.all(objtype.map((tp) => sdoValidate(obj, tp)))).every((a) => !!a) as true } else if (typeof objtype === 'string') { type = ((await SCHEMATA).find((jsd) => jsd.title === `http://schema.org/${objtype}`)) ? objtype : (console.warn(`Class \`${objtype}\` is not yet supported. Validating against \`Thing.jsd\` instead…`), 'Thing') @@ -124,13 +122,13 @@ export async function sdoValidate(obj: JSONLDObject|string, type: string|null = .addSchema(await SCHEMATA) let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, obj) as boolean if (!is_data_valid) { - let e: TypeError&{ + let err: TypeError&{ filename?: string; details?: Ajv.ErrorObject; } = new TypeError(`Object ${obj['@id'] || obj.identifier || obj.name || JSON.stringify(obj)} does not valiate against schema ${type}.jsd!`) - if (filename.length) e.filename = filename - e.details = ajv.errors ![0] - throw e + if (filename.length) err.filename = filename + err.details = ajv.errors ![0] + throw err } return true } From e792826ed9096a383fe40ff497257dad34bfbc85 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Fri, 8 Feb 2019 21:00:09 -0500 Subject: [PATCH 35/37] update readme --- README.md | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 8e37bb2..7a79d41 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ $ npm install schemaorg-jsd This module exports an asynchronous validation function. It returns a Promise object, so you may use `await` or you may use standard `Promise` prototype methods. -Read the JSDoc in `./index.js` for further details. +Read the TypeDoc comments in `./src/index.ts` for further details. ```js const { sdoValidate } = require('schemaorg-jsd') @@ -27,7 +27,7 @@ async function run() { } school['@id'] = 'http://www.blacksburg.gov/' try { - let is_valid_place = sdoValidate(school, 'Place') // validate against the 'Place' schema + let is_valid_place = sdoValidate(school, 'Place') // validate against the `Place` schema console.log(await is_valid_place) // return `true` if the document passes validation } catch (e) { // throw a `TypeError` if the document fails validation console.error(e) @@ -42,6 +42,26 @@ async function run() { // example 3: use a string (relative path) of the filename let org = './my-org.jsonld' console.log(await sdoValidate(org, 'Organization')) // return `true` if the document passes validation + + // example 4: infer the schema from the `'@type'` property + await sdoValidate(school) // validates against the `Place` schema, since `school['@type'] === 'Place'` + + // example 5: multiple types + let business = { + '@context': 'http://schema.org/', + '@type': ['Place', 'LocalBusiness'], + } + await sdoValidate(business) // validates against all schemata in the array + + // example 6: default type is `Thing` (http://schema.org/Thing) + await sdoValidate({ + '@context': 'http://schema.org/', + '@type': 'foobar' // validates against the `Thing` schema, since value 'foobar' cannot be found + }) + await sdoValidate({ + '@context': 'http://schema.org/', + // validates against the `Thing` schema, since property '@type' is missing + }) } ``` @@ -78,15 +98,18 @@ async function run() { .addSchema(await sdo_jsd.JSONLD_SCHEMA) .addSchema(await sdo_jsd.SCHEMATA) ajv.validate(my_schema, my_data) - // Note that the `Ajv#validate()` method’s parameters are reversed from this package’s `sdoValidate()`: - // `Ajv#validate(schema, data)` - // `sdoValidate(data, schemaTitle)` + /* + Note that the `Ajv#validate()` method’s parameters are reversed from this package’s `sdoValidate()`: + + Ajv#validate(schema, data) // schema comes before data + sdoValidate(data, schemaTitle) // data comes before schema + */ } ``` ## View the “API” -A set of [TypeDoc](http://typedoc.org/) declarations describing types and their properties. -They are identical to the specs at [schema.org](https://schema.org/), +This project includes a set of [TypeDoc](http://typedoc.org/) declarations describing types and their properties. +They’re identical to the specs at [schema.org](https://schema.org/), but you can import the source code in your own project for [TypeScript](http://www.typescriptlang.org/) compilation. @@ -116,7 +139,7 @@ class Person { based off of the syntax used to define object literals in JavaScript. ## JSON Schema -[JSON Schema](http://json-schema.org/) is a vocabulary, in JSON format, +[JSON Schema](http://json-schema.org/) is a subset of JSON that allows you to validate JSON documents. In other words, a particular JSON schema tells you whether your JSON instance file is written correctly, if you choose to validate your instance against that schema. From 389af1d649f2150ff16ea2c16c239a0c04935732 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Mon, 25 Feb 2019 12:13:53 -0500 Subject: [PATCH 36/37] more helpful validation errors The error thrown by `sdoValidate()` has a `.details` property, which used to be only the first validation error. This patch changes it to an array of all the validation errors. --- src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index a79dc19..fd8121e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -120,14 +120,14 @@ export async function sdoValidate(obj: JSONLDObject|string, type: string|null = .addMetaSchema(await META_SCHEMATA) .addSchema(await JSONLD_SCHEMA) .addSchema(await SCHEMATA) - let is_data_valid: boolean = ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, obj) as boolean + let is_data_valid: boolean = await ajv.validate(`https://chharvey.github.io/schemaorg-jsd/schema/${type}.jsd`, obj) as boolean if (!is_data_valid) { let err: TypeError&{ filename?: string; - details?: Ajv.ErrorObject; + details?: Ajv.ErrorObject[]; } = new TypeError(`Object ${obj['@id'] || obj.identifier || obj.name || JSON.stringify(obj)} does not valiate against schema ${type}.jsd!`) if (filename.length) err.filename = filename - err.details = ajv.errors ![0] + err.details = ajv.errors ! throw err } return true From 1883ded621e91144ef2bd2752dada7f4ef827924 Mon Sep 17 00:00:00 2001 From: Chris Harvey Date: Tue, 26 Feb 2019 18:10:02 -0500 Subject: [PATCH 37/37] v0.15.0 && fresh install --- package-lock.json | 82 +++++++++++++++++++++++------------------------ package.json | 4 +-- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8fb440..c47639d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "schemaorg-jsd", - "version": "0.15.0-alpha.0", + "version": "0.15.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -19,9 +19,9 @@ "dev": true }, "@types/fs-extra": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.4.tgz", - "integrity": "sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.5.tgz", + "integrity": "sha512-w7iqhDH9mN8eLClQOYTkhdYUOSpp25eXxfc6VbFOGtzxW34JcvctH2bKjj4jD4++z4R5iO5D+pg48W2e03I65A==", "dev": true, "requires": { "@types/node": "*" @@ -51,14 +51,14 @@ "dev": true }, "@types/json-schema": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.2.tgz", - "integrity": "sha512-XawGUgMoPEBwyN+P8FzzH8RfoJcmkyNPdMdX/Ejeit8y5M/VllcBjyGS72a3SCAQedsSnVn2pnf3lQ0OVR7f5g==" + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==" }, "@types/lodash": { - "version": "4.14.120", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.120.tgz", - "integrity": "sha512-jQ21kQ120mo+IrDs1nFNVm/AsdFxIx2+vZ347DbogHJPd/JzKNMOqU6HCYin1W6v8l5R9XSO2/e9cxmn7HAnVw==", + "version": "4.14.121", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.121.tgz", + "integrity": "sha512-ORj7IBWj13iYufXt/VXrCNMbUuCTJfhzme5kx9U/UtcIPdJYuvPDUAlHlbNhz/8lKCLy9XGIZnGrqXOtQbPGoQ==", "dev": true }, "@types/marked": { @@ -74,14 +74,14 @@ "dev": true }, "@types/node": { - "version": "10.12.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.23.tgz", - "integrity": "sha512-EKhb5NveQ3NlW5EV7B0VRtDKwUfVey8LuJRl9pp5iW0se87/ZqLjG0PMf2MCzPXAJYWZN5Ltg7pHIAf9/Dm1tQ==" + "version": "11.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.5.tgz", + "integrity": "sha512-vVjM0SVzgaOUpflq4GYBvCpozes8OgIIS5gVXVka+OfK3hvnkC1i93U8WiY2OtNE4XUWyyy/86Kf6e0IHTQw1Q==" }, "@types/shelljs": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.2.tgz", - "integrity": "sha512-vVp7BCQn0yUQgpiohrdxAhHdm/bTlXshB4HG3LEBq1PgvjKiyeYHohIPIv0QBt/jipb140iMS5Xy1iR6qKovKw==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-miY41hqc5SkRlsZDod3heDa4OS9xv8G77EMBQuSpqq86HBn66l7F+f8y9YKm+1PIuwC8QEZVwN8YxOOG7Y67fA==", "dev": true, "requires": { "@types/glob": "*", @@ -89,9 +89,9 @@ } }, "ajv": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.8.1.tgz", - "integrity": "sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ==", + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.2.tgz", + "integrity": "sha512-4UFy0/LgDo7Oa/+wOAlj44tp9K78u38E5/359eSrqEp1Z5PdVfimCcs7SluXMP755RUQu6d2b4AvF0R1C9RZjg==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -287,12 +287,12 @@ "dev": true }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } }, "async-done": { @@ -487,9 +487,9 @@ "dev": true }, "chokidar": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.0.tgz", - "integrity": "sha512-5t6G2SH8eO6lCvYOoUpaRnF5Qfd//gd7qJAkwRUw9qlGVkiQ13uwQngqbWWaurOsaAm9+kUGbITADxt6H0XFNQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -836,9 +836,9 @@ } }, "es5-ext": { - "version": "0.10.47", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz", - "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==", + "version": "0.10.48", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.48.tgz", + "integrity": "sha512-CdRvPlX/24Mj5L4NVxTs4804sxiS2CjVprgCmrgoDkdmjdY4D+ySHa7K3jJf8R40dFg0tIm3z/dk326LrnuSGw==", "dev": true, "requires": { "es6-iterator": "~2.0.3", @@ -2047,15 +2047,15 @@ } }, "highlight.js": { - "version": "9.14.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.14.2.tgz", - "integrity": "sha512-Nc6YNECYpxyJABGYJAyw7dBAYbXEuIzwzkqoJnwbc1nIpCiN+3ioYf0XrBnLiyyG0JLuJhpPtt2iTSbXiKLoyA==", + "version": "9.15.6", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.6.tgz", + "integrity": "sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ==", "dev": true }, "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "requires": { "parse-passwd": "^1.0.0" @@ -2631,9 +2631,9 @@ } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", "dev": true }, "object-visit": { @@ -3633,9 +3633,9 @@ "dev": true }, "typescript": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3.tgz", - "integrity": "sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A==", + "version": "3.3.3333", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", + "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index ceba348..ac02536 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "schemaorg-jsd", - "version": "0.15.0-alpha.0", + "version": "0.15.0", "description": "JSON Schema validation for JSON-LD files using Schema.org vocabulary.", "main": "index.js", "scripts": { @@ -26,7 +26,7 @@ "dependencies": { "@chharvey/requirejson": "^1.0.1", "@types/json-schema": "^7.0.2", - "@types/node": "^10.12.21", + "@types/node": "^11.9.5", "ajv": "^6.5.4" }, "devDependencies": {