diff --git a/README.md b/README.md index e962244..e03ed2b 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,16 @@ Perform website testing (you must have already [built the site](#build-the-site) yarn test ``` +#### Structured Data Testing + +Test structured data (JSON-LD) validation specifically: + +```sh +yarn test-structured-data +``` + +This validates that any `application/ld+json` scripts in `build/**/*.html` files have correct schema.org formats and valid JSON syntax. + ## Notes for VS Code Open this folder in VS Code, allow the "Reopen in Container" and install recommended extensions. diff --git a/package.json b/package.json index 383bac2..a78362a 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,12 @@ "html-validate": "^10.0.0", "markdownlint-cli2": "^0.18.1", "prettier": "^3.6.2", - "shell-quote": "^1.8.3" + "shell-quote": "^1.8.3", + "structured-data-testing-tool": "^4.5.0" }, "scripts": { - "test": "node test/fixtures-html-validate-should-fail.mjs && node test/build-html-validate.mjs && node test/dirty-words-checker.mjs && node test/dirty-file-paths-checker.mjs", + "test": "yarn node test/fixtures-html-validate-should-fail.mjs && yarn node test/fixtures-structured-data-should-fail.mjs && yarn node test/build-html-validate.mjs && yarn node test/dirty-words-checker.mjs && yarn node test/dirty-file-paths-checker.mjs && yarn node test/build-structured-data-validate.mjs", + "test-structured-data": "yarn node test/build-structured-data-validate.mjs", "lint": "yarn prettier-check && yarn markdownlint-check", "lint-fix": "yarn prettier-fix && yarn markdownlint-fix", "generate-sitemap": "node scripts/generate-sitemap.mjs", diff --git a/test/build-structured-data-validate.mjs b/test/build-structured-data-validate.mjs new file mode 100644 index 0000000..87b0b17 --- /dev/null +++ b/test/build-structured-data-validate.mjs @@ -0,0 +1,65 @@ +import { glob } from "glob"; +import { execSync } from "child_process"; +import fs from "fs"; +import path from "path"; + +// Find and sort all HTML files in the 'build' directory +const targets = glob.sync("build/**/*.html").sort(); + +if (targets.length === 0) { + console.log("โš ๏ธ No HTML files found in build directory"); + console.log(" Make sure to build the site first"); + process.exit(0); +} + +console.log(`๐Ÿงช Validating structured data in ${targets.length} files...`); + +let hasErrors = false; + +// Validate each target file +for (const target of targets) { + try { + // Use structured-data-testing-tool CLI to test the file + const result = execSync(`yarn dlx structured-data-testing-tool --file "${target}"`, { + encoding: "utf8", + stdio: "pipe", + }); + + // Check if there are JSON-LD parse errors or failed tests in the output + if (result.includes("Error in jsonld parse") || (result.includes("Failed:") && !result.includes("Failed: 0"))) { + console.log("โŒ " + target); + console.log(result); + hasErrors = true; + } else { + console.log("โœ… " + target); + // Show a summary of structured data found + const lines = result.split("\n"); + const schemaLine = lines.find((line) => line.includes("Schema.org schemas:")); + if (schemaLine && !schemaLine.includes("Schema.org schemas: 0")) { + console.log(` ๐Ÿ“‹ ${schemaLine.trim()}`); + } + // Only show detailed output if there are warnings + if (result.includes("Warnings:") && !result.includes("Warnings: 0")) { + console.log("โš ๏ธ Warnings found:"); + console.log(result); + } + } + } catch (error) { + console.log("โŒ " + target); + console.log("โš ๏ธ Error testing file:", error.message); + if (error.stdout) { + console.log(error.stdout); + } + if (error.stderr) { + console.error(error.stderr); + } + hasErrors = true; + } +} + +if (hasErrors) { + console.log("โŒ Some tests failed."); + process.exit(1); +} else { + console.log("โœจ All tests passed!\n"); +} diff --git a/test/fixtures-structured-data-should-fail.mjs b/test/fixtures-structured-data-should-fail.mjs new file mode 100644 index 0000000..88dd473 --- /dev/null +++ b/test/fixtures-structured-data-should-fail.mjs @@ -0,0 +1,58 @@ +import { execSync } from "child_process"; +import path from "path"; + +console.log("๐Ÿงช Testing structured data fixtures"); + +const fixtures = [ + { + file: "test/fixtures/valid-jsonld.html", + shouldPass: true, + description: "valid JSON-LD", + }, + { + file: "test/fixtures/invalid-jsonld.html", + shouldPass: false, + description: "invalid JSON-LD (syntax error)", + }, +]; + +let allTestsPassed = true; + +for (const fixture of fixtures) { + try { + const result = execSync(`yarn dlx structured-data-testing-tool --file "${fixture.file}"`, { + encoding: "utf8", + stdio: "pipe", + }); + + const hasError = + result.includes("Error in jsonld parse") || (result.includes("Failed:") && !result.includes("Failed: 0")); + + const actuallyPassed = !hasError; + + if (actuallyPassed === fixture.shouldPass) { + console.log(`โœ… ${fixture.file}: ${fixture.description} - ${actuallyPassed ? "passed" : "failed"} as expected`); + } else { + console.error( + `โŒ ${fixture.file}: ${fixture.description} - expected ${fixture.shouldPass ? "pass" : "fail"} but got ${actuallyPassed ? "pass" : "fail"}`, + ); + console.error("Output:", result); + allTestsPassed = false; + } + } catch (error) { + // execSync throws on non-zero exit codes, but structured-data-testing-tool doesn't always exit with error codes + console.error(`โŒ ${fixture.file}: ${fixture.description} - execution error`); + console.error("Error:", error.message); + if (error.stdout) { + console.error("Stdout:", error.stdout); + } + allTestsPassed = false; + } +} + +if (allTestsPassed) { + console.log("โœจ All fixtures produced expected results!\n"); +} else { + console.error("โŒ Some fixture tests failed."); + process.exit(1); +} diff --git a/test/fixtures/invalid-jsonld.html b/test/fixtures/invalid-jsonld.html new file mode 100644 index 0000000..135f17e --- /dev/null +++ b/test/fixtures/invalid-jsonld.html @@ -0,0 +1,49 @@ + + + + + Test page with invalid JSON-LD + + +

Test page with invalid JSON-LD

+

This page has invalid JSON-LD structured data.

+ + + + diff --git a/test/fixtures/valid-jsonld.html b/test/fixtures/valid-jsonld.html new file mode 100644 index 0000000..7862178 --- /dev/null +++ b/test/fixtures/valid-jsonld.html @@ -0,0 +1,49 @@ + + + + + Test page with valid JSON-LD + + +

Test page with valid JSON-LD

+

This page has valid JSON-LD structured data.

+ + + + diff --git a/yarn.lock b/yarn.lock index f7389e8..eb90098 100644 --- a/yarn.lock +++ b/yarn.lock @@ -208,6 +208,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^4.1.0": + version: 4.1.1 + resolution: "ansi-regex@npm:4.1.1" + checksum: 10c0/d36d34234d077e8770169d980fed7b2f3724bfa2a01da150ccd75ef9707c80e883d27cdf7a0eac2f145ac1d10a785a8a855cffd05b85f778629a0db62e7033da + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -222,6 +229,15 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + "ansi-styles@npm:^4.0.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -263,6 +279,27 @@ __metadata: languageName: node linkType: hard +"babel-polyfill@npm:^6.8.0": + version: 6.26.0 + resolution: "babel-polyfill@npm:6.26.0" + dependencies: + babel-runtime: "npm:^6.26.0" + core-js: "npm:^2.5.0" + regenerator-runtime: "npm:^0.10.5" + checksum: 10c0/9fd1a5766744c29f15f77d3b2b38c73ce55e125b4f4379526ef6dc4b9480950218050b41d34bf19559980b85a8bcd848b416636fc07c0c3b4fe8851b961a3959 + languageName: node + linkType: hard + +"babel-runtime@npm:^6.26.0": + version: 6.26.0 + resolution: "babel-runtime@npm:6.26.0" + dependencies: + core-js: "npm:^2.4.0" + regenerator-runtime: "npm:^0.11.0" + checksum: 10c0/caa752004936b1463765ed3199c52f6a55d0613b9bed108743d6f13ca532b821d4ea9decc4be1b583193164462b1e3e7eefdfa36b15c72e7daac58dd72c1772f + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -308,7 +345,7 @@ __metadata: languageName: node linkType: hard -"boolbase@npm:^1.0.0": +"boolbase@npm:^1.0.0, boolbase@npm:~1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf @@ -363,6 +400,24 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^5.0.0": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + "character-entities-legacy@npm:^3.0.0": version: 3.0.0 resolution: "character-entities-legacy@npm:3.0.0" @@ -398,6 +453,30 @@ __metadata: languageName: node linkType: hard +"cheerio@npm:^0.22.0": + version: 0.22.0 + resolution: "cheerio@npm:0.22.0" + dependencies: + css-select: "npm:~1.2.0" + dom-serializer: "npm:~0.1.0" + entities: "npm:~1.1.1" + htmlparser2: "npm:^3.9.1" + lodash.assignin: "npm:^4.0.9" + lodash.bind: "npm:^4.1.4" + lodash.defaults: "npm:^4.0.1" + lodash.filter: "npm:^4.4.0" + lodash.flatten: "npm:^4.2.0" + lodash.foreach: "npm:^4.3.0" + lodash.map: "npm:^4.4.0" + lodash.merge: "npm:^4.4.0" + lodash.pick: "npm:^4.2.1" + lodash.reduce: "npm:^4.4.0" + lodash.reject: "npm:^4.4.0" + lodash.some: "npm:^4.4.0" + checksum: 10c0/b067fadb3d0ada1f614ce27b2795c206df2c612ab066393f833c798ba29c73a610a3202567d2223658743026f5385cda61f6b52370b22f28a924e52883933340 + languageName: node + linkType: hard + "cheerio@npm:^1.1.2": version: 1.1.2 resolution: "cheerio@npm:1.1.2" @@ -447,6 +526,33 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^5.0.0": + version: 5.0.0 + resolution: "cliui@npm:5.0.0" + dependencies: + string-width: "npm:^3.1.0" + strip-ansi: "npm:^5.2.0" + wrap-ansi: "npm:^5.1.0" + checksum: 10c0/76142bf306965850a71efd10c9755bd7f447c7c20dd652e1c1ce27d987f862a3facb3cceb2909cef6f0cb363646ee7a1735e3dfdd49f29ed16d733d33e15e2f8 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -456,6 +562,13 @@ __metadata: languageName: node linkType: hard +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" @@ -463,6 +576,16 @@ __metadata: languageName: node linkType: hard +"columnify@npm:^1.5.4": + version: 1.6.0 + resolution: "columnify@npm:1.6.0" + dependencies: + strip-ansi: "npm:^6.0.1" + wcwidth: "npm:^1.0.0" + checksum: 10c0/25b90b59129331bbb8b0c838f8df69924349b83e8eab9549f431062a20a39094b8d744bb83265be38fd5d03140ce4bfbd85837c293f618925e83157ae9535f1d + languageName: node + linkType: hard + "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -470,6 +593,13 @@ __metadata: languageName: node linkType: hard +"core-js@npm:^2.4.0, core-js@npm:^2.5.0": + version: 2.6.12 + resolution: "core-js@npm:2.6.12" + checksum: 10c0/00128efe427789120a06b819adc94cc72b96955acb331cb71d09287baf9bd37bebd191d91f1ee4939c893a050307ead4faea08876f09115112612b6a05684b63 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -494,6 +624,25 @@ __metadata: languageName: node linkType: hard +"css-select@npm:~1.2.0": + version: 1.2.0 + resolution: "css-select@npm:1.2.0" + dependencies: + boolbase: "npm:~1.0.0" + css-what: "npm:2.1" + domutils: "npm:1.5.1" + nth-check: "npm:~1.0.1" + checksum: 10c0/16e91cd4a8606e76eb2d93ded43e2d20fe315effa7e1dedf16e81fab5c6bbd18b394f78cb59c04e2dddc7d4c68e31a0617b7f4f196dff48398cf3ac83e78475c + languageName: node + linkType: hard + +"css-what@npm:2.1": + version: 2.1.3 + resolution: "css-what@npm:2.1.3" + checksum: 10c0/4f1a25855be8bdfebdd431ccb084f6481951408dbf076eebf7a1c045ae45dd5651b32fe55deaa16a59e98eb25d5bb066dcf6bdff7aa3cc2ed5bdbe5fe1aa7fd7 + languageName: node + linkType: hard + "css-what@npm:^6.1.0": version: 6.1.0 resolution: "css-what@npm:6.1.0" @@ -536,6 +685,13 @@ __metadata: languageName: node linkType: hard +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + "decode-named-character-reference@npm:^1.0.0": version: 1.0.2 resolution: "decode-named-character-reference@npm:1.0.2" @@ -568,6 +724,15 @@ __metadata: languageName: node linkType: hard +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + "dequal@npm:^2.0.0": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -591,6 +756,16 @@ __metadata: languageName: node linkType: hard +"dom-serializer@npm:0": + version: 0.2.2 + resolution: "dom-serializer@npm:0.2.2" + dependencies: + domelementtype: "npm:^2.0.1" + entities: "npm:^2.0.0" + checksum: 10c0/5cb595fb77e1a23eca56742f47631e6f4af66ce1982c7ed28b3d0ef21f1f50304c067adc29d3eaf824c572be022cee88627d0ac9b929408f24e923f3c7bed37b + languageName: node + linkType: hard + "dom-serializer@npm:^2.0.0": version: 2.0.0 resolution: "dom-serializer@npm:2.0.0" @@ -602,13 +777,39 @@ __metadata: languageName: node linkType: hard -"domelementtype@npm:^2.3.0": +"dom-serializer@npm:~0.1.0": + version: 0.1.1 + resolution: "dom-serializer@npm:0.1.1" + dependencies: + domelementtype: "npm:^1.3.0" + entities: "npm:^1.1.1" + checksum: 10c0/bb710d0a49dbe7b1019e8bf314102495e8894b9da188d00187c0ac52939ded630bc5f9eacc97bfa462d535cd321c734c0b02fefd5e4d93162ab886dccc6666f3 + languageName: node + linkType: hard + +"domelementtype@npm:1, domelementtype@npm:^1.3.0, domelementtype@npm:^1.3.1": + version: 1.3.1 + resolution: "domelementtype@npm:1.3.1" + checksum: 10c0/6d4f5761060a21eaf3c96545501e9d188745c7e1c31b8d141bf15d8748feeadba868f4ea32877751b8678b286fb1afbe6ae905ca3fb8f0214d8322e482cdbec0 + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 languageName: node linkType: hard +"domhandler@npm:^2.3.0": + version: 2.4.2 + resolution: "domhandler@npm:2.4.2" + dependencies: + domelementtype: "npm:1" + checksum: 10c0/6670cab73e97e3c6771dcf22b537db3f6a0be0ad6b370f03bb5f1b585d3b563d326787fdabe1190b7ca9d81c804e9b3f8a1431159c27c44f6c05f94afa92be2d + languageName: node + linkType: hard + "domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" @@ -618,6 +819,26 @@ __metadata: languageName: node linkType: hard +"domutils@npm:1.5.1": + version: 1.5.1 + resolution: "domutils@npm:1.5.1" + dependencies: + dom-serializer: "npm:0" + domelementtype: "npm:1" + checksum: 10c0/8707a18c974be54d33fd846d174d523ddf4955b2fcc1ec713cbe6ff490f60da22106b153fea6269332477eb81dc1a25a83f5b2afaf78b6dc9e2161fd7b80f7ba + languageName: node + linkType: hard + +"domutils@npm:^1.5.1": + version: 1.7.0 + resolution: "domutils@npm:1.7.0" + dependencies: + dom-serializer: "npm:0" + domelementtype: "npm:1" + checksum: 10c0/437fcd2d6d6be03f488152e73c6f953e289c58496baa22be9626b2b46f9cfd40486ae77d144487ff6b102929a3231cdb9a8bf8ef485fb7b7c30c985daedc77eb + languageName: node + linkType: hard + "domutils@npm:^3.0.1, domutils@npm:^3.2.1, domutils@npm:^3.2.2": version: 3.2.2 resolution: "domutils@npm:3.2.2" @@ -636,6 +857,13 @@ __metadata: languageName: node linkType: hard +"emoji-regex@npm:^7.0.1": + version: 7.0.3 + resolution: "emoji-regex@npm:7.0.3" + checksum: 10c0/a8917d695c3a3384e4b7230a6a06fd2de6b3db3709116792e8b7b36ddbb3db4deb28ad3e983e70d4f2a1f9063b5dab9025e4e26e9ca08278da4fbb73e213743f + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -678,6 +906,20 @@ __metadata: languageName: node linkType: hard +"entities@npm:^1.1.1, entities@npm:~1.1.1": + version: 1.1.2 + resolution: "entities@npm:1.1.2" + checksum: 10c0/5b12fa8c4fb942f88af6f8791bbe7be0a59ebd91c8933cee091d94455efd1eeb200418c7b1bc8dd0f74cdd4db8cf4538eb043db14cfd1919130c25d8c6095215 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 + languageName: node + linkType: hard + "entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" @@ -706,6 +948,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + "esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -782,6 +1031,15 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: "npm:^3.0.0" + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + languageName: node + linkType: hard + "foreground-child@npm:^3.1.0": version: 3.3.0 resolution: "foreground-child@npm:3.3.0" @@ -836,6 +1094,22 @@ __metadata: languageName: node linkType: hard +"get-caller-file@npm:^2.0.1": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 + languageName: node + linkType: hard + "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -905,6 +1179,13 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + "html-styles@npm:^1.0.0": version: 1.0.0 resolution: "html-styles@npm:1.0.0" @@ -956,6 +1237,20 @@ __metadata: languageName: node linkType: hard +"htmlparser2@npm:^3.9.1": + version: 3.10.1 + resolution: "htmlparser2@npm:3.10.1" + dependencies: + domelementtype: "npm:^1.3.1" + domhandler: "npm:^2.3.0" + domutils: "npm:^1.5.1" + entities: "npm:^1.1.1" + inherits: "npm:^2.0.1" + readable-stream: "npm:^3.1.1" + checksum: 10c0/b1424536ff062088501efa06a2afd478545d3134a5ad2e28bbe02dc2d092784982286b90f1c87fa3d86692958dbfb8936352dfd71d1cb2ff7cb61208c00fcdb1 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -1020,7 +1315,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:^2.0.3, inherits@npm:^2.0.4": +"inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -1075,6 +1370,13 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: 10c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -1112,6 +1414,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + "isarray@npm:1.0.0, isarray@npm:^1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -1164,6 +1473,13 @@ __metadata: languageName: node linkType: hard +"jmespath@npm:^0.15.0": + version: 0.15.0 + resolution: "jmespath@npm:0.15.0" + checksum: 10c0/95fe1cabb4a12fc2b443a7aa9e85dca52a87437038276765fc54bfbb651a03f5f739266c0b3520531e7cf67986f716308edad8fadb8fbc26bf82a146f881d2e3 + languageName: node + linkType: hard + "js-yaml@npm:4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -1252,6 +1568,100 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + languageName: node + linkType: hard + +"lodash.assignin@npm:^4.0.9": + version: 4.2.0 + resolution: "lodash.assignin@npm:4.2.0" + checksum: 10c0/40ac405acf5d6daf27fd40b50c99f823641a9ceba6bd282b18cb9989149204af584b5671f336587c2a263e367c3a2d1105cbf7bdc5ea33cbd0f829b02b16578a + languageName: node + linkType: hard + +"lodash.bind@npm:^4.1.4": + version: 4.2.1 + resolution: "lodash.bind@npm:4.2.1" + checksum: 10c0/e47ae564101c43940fab7f102dd9fb056ae6cc534a3b7bfbaecdf7216dac904ad762150e66a80d1bd5430da7eed4df90ba93996bb24030fad096b698d2ae15af + languageName: node + linkType: hard + +"lodash.defaults@npm:^4.0.1": + version: 4.2.0 + resolution: "lodash.defaults@npm:4.2.0" + checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 + languageName: node + linkType: hard + +"lodash.filter@npm:^4.4.0": + version: 4.6.0 + resolution: "lodash.filter@npm:4.6.0" + checksum: 10c0/bb65002f3ee02b94400b9d8728a46d3ac9fc3eb7df387b3c642f36eff82d716714283ca674889a29edae3c28ea8a4048e6c7bb90598670ab9c97b5d125bffda2 + languageName: node + linkType: hard + +"lodash.flatten@npm:^4.2.0": + version: 4.4.0 + resolution: "lodash.flatten@npm:4.4.0" + checksum: 10c0/97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a + languageName: node + linkType: hard + +"lodash.foreach@npm:^4.3.0": + version: 4.5.0 + resolution: "lodash.foreach@npm:4.5.0" + checksum: 10c0/bd9cc83e87e805b21058ce6cf718dd22db137c7ca08eddbd608549db59989911c571b7195707f615cb37f27bb4f9a9fa9980778940d768c24095f5a04b244c84 + languageName: node + linkType: hard + +"lodash.map@npm:^4.4.0": + version: 4.6.0 + resolution: "lodash.map@npm:4.6.0" + checksum: 10c0/919fe767fa58d3f8369ddd84346636eda71c88a8ef6bde1ca0d87dd37e71614da2ed8bcfc3018ca5b7741ebaf7c01c2d7078b510dca8ab6a0d0ecafd3dc1abcb + languageName: node + linkType: hard + +"lodash.merge@npm:^4.4.0": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.pick@npm:^4.2.1": + version: 4.4.0 + resolution: "lodash.pick@npm:4.4.0" + checksum: 10c0/a04c460b95d1aaa44e9513d1dacf72ea74d838da843e45831de9de64c303f13cdde1859702a6f4dcef417816898ffd47c6ae0614c957ac70245bed2809b8d2e2 + languageName: node + linkType: hard + +"lodash.reduce@npm:^4.4.0": + version: 4.6.0 + resolution: "lodash.reduce@npm:4.6.0" + checksum: 10c0/5d2dab823523a1a7f81eb5f4c1edcc03aab55504b1299a2385737389644ba6d2ad219169dfc5c16632a67a345d925ef6a5e8816b4e18a36f94ed66f8e7740b36 + languageName: node + linkType: hard + +"lodash.reject@npm:^4.4.0": + version: 4.6.0 + resolution: "lodash.reject@npm:4.6.0" + checksum: 10c0/653b5beb1641aeac8bd734775ef6517706897c49197dbe548788558c243434a89dd94b971866b04a0a1df411534db85e96ab7daeb8accf53650119a78de7355f + languageName: node + linkType: hard + +"lodash.some@npm:^4.4.0": + version: 4.6.0 + resolution: "lodash.some@npm:4.6.0" + checksum: 10c0/9d3cdb1c8a2ed3d19b02ce146d4962a7859016f752b40fc143d78d3e70985259d6bea71c2c31b8e78f492830f49d755f1be2cdbf85461c54a523089e0c8c0e75 + languageName: node + linkType: hard + "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" @@ -1856,6 +2266,20 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^2.6.0": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 10.3.1 resolution: "node-gyp@npm:10.3.1" @@ -1896,6 +2320,15 @@ __metadata: languageName: node linkType: hard +"nth-check@npm:~1.0.1": + version: 1.0.2 + resolution: "nth-check@npm:1.0.2" + dependencies: + boolbase: "npm:~1.0.0" + checksum: 10c0/1a67ce53a99e276eea672f892d712b29f3e6802bbbef7285ffab72ecea4f972e8244defac1ebded0daffabf459def31355bb9c64e5657ac2ab032c13f185d0fd + languageName: node + linkType: hard + "ohm-js@npm:^16.3.0": version: 16.6.0 resolution: "ohm-js@npm:16.6.0" @@ -1912,6 +2345,24 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^2.0.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: "npm:^2.0.0" + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + languageName: node + linkType: hard + "p-map@npm:^4.0.0": version: 4.0.0 resolution: "p-map@npm:4.0.0" @@ -1921,6 +2372,13 @@ __metadata: languageName: node linkType: hard +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + "package-json-from-dist@npm:^1.0.0": version: 1.0.1 resolution: "package-json-from-dist@npm:1.0.1" @@ -1971,6 +2429,13 @@ __metadata: languageName: node linkType: hard +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -2119,6 +2584,27 @@ __metadata: languageName: node linkType: hard +"regenerator-runtime@npm:^0.10.5": + version: 0.10.5 + resolution: "regenerator-runtime@npm:0.10.5" + checksum: 10c0/2d21167780acfd6b4a93eb75d68345499bc4c887f465101e6facf6197f25963efadcab761dc77b45f252eccd3a5ebcf562a7edde54e437cec932fb92b2c30f65 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.11.0": + version: 0.11.1 + resolution: "regenerator-runtime@npm:0.11.1" + checksum: 10c0/69cfa839efcf2d627fe358bf302ab8b24e5f182cb69f13e66f0612d3640d7838aad1e55662135e3ef2c1cc4322315b757626094fab13a48f9a64ab4bdeb8795b + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" @@ -2126,6 +2612,13 @@ __metadata: languageName: node linkType: hard +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -2155,6 +2648,7 @@ __metadata: markdownlint-cli2: "npm:^0.18.1" prettier: "npm:^3.6.2" shell-quote: "npm:^1.8.3" + structured-data-testing-tool: "npm:^4.5.0" xml2js: "npm:^0.6.2" dependenciesMeta: "@shopify/prettier-plugin-liquid@1.5.0": @@ -2201,6 +2695,13 @@ __metadata: languageName: node linkType: hard +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -2342,6 +2843,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^3.0.0, string-width@npm:^3.1.0": + version: 3.1.0 + resolution: "string-width@npm:3.1.0" + dependencies: + emoji-regex: "npm:^7.0.1" + is-fullwidth-code-point: "npm:^2.0.0" + strip-ansi: "npm:^5.1.0" + checksum: 10c0/85fa0d4f106e7999bb68c1c640c76fa69fb8c069dab75b009e29c123914e2d3b532e6cfa4b9d1bd913176fc83dedd7a2d7bf40d21a81a8a1978432cedfb65b91 + languageName: node + linkType: hard + "string-width@npm:^5.0.1, string-width@npm:^5.1.2": version: 5.1.2 resolution: "string-width@npm:5.1.2" @@ -2371,6 +2883,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": + version: 5.2.0 + resolution: "strip-ansi@npm:5.2.0" + dependencies: + ansi-regex: "npm:^4.1.0" + checksum: 10c0/de4658c8a097ce3b15955bc6008f67c0790f85748bdc025b7bc8c52c7aee94bc4f9e50624516150ed173c3db72d851826cd57e7a85fe4e4bb6dbbebd5d297fdf + languageName: node + linkType: hard + "strip-ansi@npm:^7.0.1": version: 7.1.0 resolution: "strip-ansi@npm:7.1.0" @@ -2387,6 +2908,34 @@ __metadata: languageName: node linkType: hard +"structured-data-testing-tool@npm:^4.5.0": + version: 4.5.0 + resolution: "structured-data-testing-tool@npm:4.5.0" + dependencies: + chalk: "npm:^2.4.2" + columnify: "npm:^1.5.4" + get-stream: "npm:^5.1.0" + is-stream: "npm:^2.0.0" + jmespath: "npm:^0.15.0" + node-fetch: "npm:^2.6.0" + validator: "npm:^11.0.0" + web-auto-extractor: "npm:^1.0.17" + yargs: "npm:^13.2.4" + bin: + sdtt: bin/cli.js + checksum: 10c0/68dccd813ab28f4a94e0ec165321bcb5788dd7a30356173402de2ba490f22692b3b234ef4c831f621b45238c690bbb33bd70c46f3b6ca242a535a49582f9f5b6 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + "tar-fs@npm:^2.0.0": version: 2.1.1 resolution: "tar-fs@npm:2.1.1" @@ -2435,6 +2984,13 @@ __metadata: languageName: node linkType: hard +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -2490,6 +3046,40 @@ __metadata: languageName: node linkType: hard +"validator@npm:^11.0.0": + version: 11.1.0 + resolution: "validator@npm:11.1.0" + checksum: 10c0/cb4ce0dc4273efbd2e81815e26c178bfb43078b3a7f62aeda0b745e1294a74de4e85afaf49d635f3e2bdd798a13693743b9925a167d1697b7d10982a4871edb1 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.0": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"web-auto-extractor@npm:^1.0.17": + version: 1.0.17 + resolution: "web-auto-extractor@npm:1.0.17" + dependencies: + babel-polyfill: "npm:^6.8.0" + cheerio: "npm:^0.22.0" + htmlparser2: "npm:^3.9.1" + checksum: 10c0/33b4d944d5b026c6dbb377d231a5d9bae22399382b42f7bc2b9bbe4539c0072dbd0f734c9def3992d9c952bd6d82daf7485f58f1e2b55efdad0769f6438ebb30 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + "whatwg-encoding@npm:^3.1.1": version: 3.1.1 resolution: "whatwg-encoding@npm:3.1.1" @@ -2506,6 +3096,23 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + languageName: node + linkType: hard + "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -2539,6 +3146,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^5.1.0": + version: 5.1.0 + resolution: "wrap-ansi@npm:5.1.0" + dependencies: + ansi-styles: "npm:^3.2.0" + string-width: "npm:^3.0.0" + strip-ansi: "npm:^5.0.0" + checksum: 10c0/fcd0b39b7453df512f2fe8c714a1c1b147fe3e6a4b5a2e4de6cadc3af47212f335eceaffe588e98322d6345e72672137e2c0b834d8a662e73a32296c1c8216bb + languageName: node + linkType: hard + "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -2574,9 +3192,44 @@ __metadata: languageName: node linkType: hard +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard + +"yargs-parser@npm:^13.1.2": + version: 13.1.2 + resolution: "yargs-parser@npm:13.1.2" + dependencies: + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10c0/aeded49d2285c5e284e48b7c69eab4a6cf1c94decfdba073125cc4054ff49da7128a3c7c840edb6b497a075e455be304e89ba4b9228be35f1ed22f4a7bba62cc + languageName: node + linkType: hard + +"yargs@npm:^13.2.4": + version: 13.3.2 + resolution: "yargs@npm:13.3.2" + dependencies: + cliui: "npm:^5.0.0" + find-up: "npm:^3.0.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^3.0.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^13.1.2" + checksum: 10c0/6612f9f0ffeee07fff4c85f153d10eba4072bf5c11e1acba96153169f9d771409dfb63253dbb0841ace719264b663cd7b18c75c0eba91af7740e76094239d386 + languageName: node + linkType: hard