diff --git a/node_modules/binary-extensions/index.js b/node_modules/binary-extensions/index.js index d46e468867114..6c99c7eb54f17 100644 --- a/node_modules/binary-extensions/index.js +++ b/node_modules/binary-extensions/index.js @@ -1 +1,3 @@ -module.exports = require('./binary-extensions.json'); +import binaryExtensions from './binary-extensions.json' with {type: 'json'}; + +export default binaryExtensions; diff --git a/node_modules/binary-extensions/package.json b/node_modules/binary-extensions/package.json index 4710c339aeb2d..0d309f782bb7a 100644 --- a/node_modules/binary-extensions/package.json +++ b/node_modules/binary-extensions/package.json @@ -1,6 +1,6 @@ { "name": "binary-extensions", - "version": "2.3.0", + "version": "3.0.0", "description": "List of binary file extensions", "license": "MIT", "repository": "sindresorhus/binary-extensions", @@ -10,18 +10,23 @@ "email": "sindresorhus@gmail.com", "url": "https://sindresorhus.com" }, + "type": "module", + "exports": { + "types": "./index.d.ts", + "default": "./index.js" + }, "sideEffects": false, "engines": { - "node": ">=8" + "node": ">=18.20" }, "scripts": { - "test": "xo && ava && tsd" + "//test": "xo && ava && tsd", + "test": "ava && tsd" }, "files": [ "index.js", "index.d.ts", - "binary-extensions.json", - "binary-extensions.json.d.ts" + "binary-extensions.json" ], "keywords": [ "binary", @@ -33,8 +38,8 @@ "array" ], "devDependencies": { - "ava": "^1.4.1", - "tsd": "^0.7.2", - "xo": "^0.24.0" + "ava": "^6.1.2", + "tsd": "^0.31.0", + "xo": "^0.58.0" } } diff --git a/node_modules/walk-up-path/LICENSE b/node_modules/walk-up-path/LICENSE index 05eeeb88c2ef4..d710582667b8b 100644 --- a/node_modules/walk-up-path/LICENSE +++ b/node_modules/walk-up-path/LICENSE @@ -1,6 +1,6 @@ The ISC License -Copyright (c) Isaac Z. Schlueter +Copyright (c) 2020-2023 Isaac Z. Schlueter Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/node_modules/walk-up-path/dist/cjs/index.js b/node_modules/walk-up-path/dist/commonjs/index.js similarity index 100% rename from node_modules/walk-up-path/dist/cjs/index.js rename to node_modules/walk-up-path/dist/commonjs/index.js diff --git a/node_modules/walk-up-path/dist/cjs/package.json b/node_modules/walk-up-path/dist/commonjs/package.json similarity index 100% rename from node_modules/walk-up-path/dist/cjs/package.json rename to node_modules/walk-up-path/dist/commonjs/package.json diff --git a/node_modules/walk-up-path/dist/mjs/index.js b/node_modules/walk-up-path/dist/esm/index.js similarity index 100% rename from node_modules/walk-up-path/dist/mjs/index.js rename to node_modules/walk-up-path/dist/esm/index.js diff --git a/node_modules/walk-up-path/dist/mjs/package.json b/node_modules/walk-up-path/dist/esm/package.json similarity index 100% rename from node_modules/walk-up-path/dist/mjs/package.json rename to node_modules/walk-up-path/dist/esm/package.json diff --git a/node_modules/walk-up-path/package.json b/node_modules/walk-up-path/package.json index 0931c670a8d04..4f6d95363297e 100644 --- a/node_modules/walk-up-path/package.json +++ b/node_modules/walk-up-path/package.json @@ -1,24 +1,9 @@ { "name": "walk-up-path", - "version": "3.0.1", + "version": "4.0.0", "files": [ "dist" ], - "main": "./dist/cjs/index.js", - "module": "./dist/mjs/index.js", - "types": "./dist/mjs/index.d.ts", - "exports": { - ".": { - "require": { - "types": "./dist/cjs/index.d.ts", - "default": "./dist/cjs/index.js" - }, - "import": { - "types": "./dist/mjs/index.d.ts", - "default": "./dist/mjs/index.js" - } - } - }, "description": "Given a path string, return a generator that walks up the path, emitting each dirname.", "repository": { "type": "git", @@ -30,15 +15,16 @@ "preversion": "npm test", "postversion": "npm publish", "prepublishOnly": "git push origin --follow-tags", - "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json && bash ./scripts/fixup.sh", + "prepare": "tshy", "pretest": "npm run prepare", "presnap": "npm run prepare", - "test": "c8 tap", - "snap": "c8 tap", - "format": "prettier --write . --loglevel warn", + "test": "tap", + "snap": "tap", + "format": "prettier --write . --log-level warn", "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts" }, "prettier": { + "experimentalTernaries": true, "semi": false, "printWidth": 75, "tabWidth": 2, @@ -49,24 +35,37 @@ "arrowParens": "avoid", "endOfLine": "lf" }, - "tap": { - "coverage": false, - "node-arg": [ - "--no-warnings", - "--loader", - "ts-node/esm" - ], - "ts": false - }, "devDependencies": { - "@types/node": "^18.15.5", - "@types/tap": "^15.0.8", - "c8": "^7.13.0", - "eslint-config-prettier": "^8.8.0", - "prettier": "^2.8.6", - "tap": "^16.3.4", - "ts-node": "^10.9.1", - "typedoc": "^0.23.28", - "typescript": "^5.0.2" + "@types/node": "^20.14.10", + "prettier": "^3.3.2", + "tap": "^20.0.3", + "tshy": "^3.0.0", + "typedoc": "^0.26.3" + }, + "type": "module", + "tshy": { + "exports": { + "./package.json": "./package.json", + ".": "./src/index.ts" + } + }, + "exports": { + "./package.json": "./package.json", + ".": { + "import": { + "types": "./dist/esm/index.d.ts", + "default": "./dist/esm/index.js" + }, + "require": { + "types": "./dist/commonjs/index.d.ts", + "default": "./dist/commonjs/index.js" + } + } + }, + "main": "./dist/commonjs/index.js", + "types": "./dist/commonjs/index.d.ts", + "module": "./dist/esm/index.js", + "engines": { + "node": "20 || >=22" } } diff --git a/package-lock.json b/package-lock.json index 818f68339e175..67ad6683aa492 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2164,6 +2164,13 @@ "node": "^18.17.0 || >=20.5.0" } }, + "mock-registry/node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true, + "license": "ISC" + }, "node_modules/@actions/core": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", @@ -4462,6 +4469,13 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@npmcli/template-oss/node_modules/walk-up-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", + "dev": true, + "license": "ISC" + }, "node_modules/@npmcli/template-oss/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", @@ -5495,12 +5509,12 @@ } }, "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-3.0.0.tgz", + "integrity": "sha512-X0RfwMgXPEesg6PCXzytQZt9Unh9gtc4SfeTNJvKifUL//Oegcc/Yf31z6hThNZ8dnD3Ir3wkHVN0eWrTvP5ww==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9325,6 +9339,19 @@ "node": ">=8" } }, + "node_modules/is-binary-path/node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -17966,10 +17993,13 @@ } }, "node_modules/walk-up-path": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", - "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==", - "license": "ISC" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", + "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } }, "node_modules/web-namespaces": { "version": "2.0.1", @@ -18476,7 +18506,7 @@ "semver": "^7.3.7", "ssri": "^12.0.0", "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "bin": { "arborist": "bin/index.js" @@ -18508,7 +18538,7 @@ "nopt": "^8.0.0", "proc-log": "^5.0.0", "semver": "^7.3.5", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "devDependencies": { "@npmcli/eslint-config": "^5.0.1", @@ -18543,7 +18573,7 @@ "dependencies": { "@npmcli/arborist": "^9.0.0-pre.0", "@npmcli/installed-package-contents": "^3.0.0", - "binary-extensions": "^2.3.0", + "binary-extensions": "^3.0.0", "diff": "^5.1.0", "minimatch": "^9.0.4", "npm-package-arg": "^12.0.0", @@ -18572,7 +18602,7 @@ "read": "^4.0.0", "read-package-json-fast": "^4.0.0", "semver": "^7.3.7", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "devDependencies": { "@npmcli/eslint-config": "^5.0.1", diff --git a/workspaces/arborist/package.json b/workspaces/arborist/package.json index 377bcd632f349..651de3fecd8bb 100644 --- a/workspaces/arborist/package.json +++ b/workspaces/arborist/package.json @@ -36,7 +36,7 @@ "semver": "^7.3.7", "ssri": "^12.0.0", "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "devDependencies": { "@npmcli/eslint-config": "^5.0.1", diff --git a/workspaces/config/package.json b/workspaces/config/package.json index 02210e3902fff..253e5fcfd6272 100644 --- a/workspaces/config/package.json +++ b/workspaces/config/package.json @@ -44,7 +44,7 @@ "nopt": "^8.0.0", "proc-log": "^5.0.0", "semver": "^7.3.5", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" diff --git a/workspaces/libnpmdiff/lib/format-diff.js b/workspaces/libnpmdiff/lib/format-diff.js index a6606d94b8b30..f50738207c854 100644 --- a/workspaces/libnpmdiff/lib/format-diff.js +++ b/workspaces/libnpmdiff/lib/format-diff.js @@ -19,7 +19,7 @@ const color = (colorStr, colorId) => { return colorStr.replace(/[^\n\r]+/g, open + '$&' + close) } -const formatDiff = ({ files, opts = {}, refs, versions }) => { +const formatDiff = async ({ files, opts = {}, refs, versions }) => { let res = '' const srcPrefix = opts.diffNoPrefix ? '' : opts.diffSrcPrefix || 'a/' const dstPrefix = opts.diffNoPrefix ? '' : opts.diffDstPrefix || 'b/' @@ -77,7 +77,7 @@ const formatDiff = ({ files, opts = {}, refs, versions }) => { /* eslint-disable-next-line max-len */ header(`index ${opts.tagVersionPrefix || 'v'}${versions.a}..${opts.tagVersionPrefix || 'v'}${versions.b} ${fileMode}`) - if (shouldPrintPatch(filename)) { + if (await shouldPrintPatch(filename)) { patch += jsDiff.createTwoFilesPatch( names.a, names.b, diff --git a/workspaces/libnpmdiff/lib/should-print-patch.js b/workspaces/libnpmdiff/lib/should-print-patch.js index 8000fc5e6afc1..c63cdee87c1fa 100644 --- a/workspaces/libnpmdiff/lib/should-print-patch.js +++ b/workspaces/libnpmdiff/lib/should-print-patch.js @@ -1,14 +1,14 @@ const { basename, extname } = require('node:path') -const binaryExtensions = require('binary-extensions') - // we should try to print patches as long as the // extension is not identified as binary files -const shouldPrintPatch = (path, opts = {}) => { +const shouldPrintPatch = async (path, opts = {}) => { if (opts.diffText) { return true } + const { default: binaryExtensions } = await import('binary-extensions') + const filename = basename(path) const extension = ( filename.startsWith('.') diff --git a/workspaces/libnpmdiff/package.json b/workspaces/libnpmdiff/package.json index 44bad5a0ae739..a66d4d5760c1a 100644 --- a/workspaces/libnpmdiff/package.json +++ b/workspaces/libnpmdiff/package.json @@ -49,7 +49,7 @@ "dependencies": { "@npmcli/arborist": "^9.0.0-pre.0", "@npmcli/installed-package-contents": "^3.0.0", - "binary-extensions": "^2.3.0", + "binary-extensions": "^3.0.0", "diff": "^5.1.0", "minimatch": "^9.0.4", "npm-package-arg": "^12.0.0", diff --git a/workspaces/libnpmdiff/test/format-diff.js b/workspaces/libnpmdiff/test/format-diff.js index f2fc7c77d7f11..911961792a2b6 100644 --- a/workspaces/libnpmdiff/test/format-diff.js +++ b/workspaces/libnpmdiff/test/format-diff.js @@ -8,7 +8,7 @@ const normalizeWin = (str) => str t.cleanSnapshot = (str) => normalizeWin(str) -t.test('format simple diff', t => { +t.test('format simple diff', async t => { const files = new Set([ 'foo.js', ]) @@ -27,7 +27,7 @@ t.test('format simple diff', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -35,10 +35,9 @@ t.test('format simple diff', t => { }), 'should output expected diff result' ) - t.end() }) -t.test('nothing to diff', t => { +t.test('nothing to diff', async t => { const files = new Set([ 'foo.js', ]) @@ -57,7 +56,7 @@ t.test('nothing to diff', t => { b: '1.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -65,10 +64,9 @@ t.test('nothing to diff', t => { }), 'should output empty result' ) - t.end() }) -t.test('format removed file', t => { +t.test('format removed file', async t => { const files = new Set([ 'foo.js', ]) @@ -83,7 +81,7 @@ t.test('format removed file', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -91,10 +89,9 @@ t.test('format removed file', t => { }), 'should output expected removed file diff result' ) - t.end() }) -t.test('changed file mode', t => { +t.test('changed file mode', async t => { const files = new Set([ 'foo.js', ]) @@ -113,7 +110,7 @@ t.test('changed file mode', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -121,10 +118,9 @@ t.test('changed file mode', t => { }), 'should output expected changed file mode diff result' ) - t.end() }) -t.test('added file', t => { +t.test('added file', async t => { const files = new Set([ 'foo.js', ]) @@ -139,7 +135,7 @@ t.test('added file', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -147,10 +143,9 @@ t.test('added file', t => { }), 'should output expected added file diff result' ) - t.end() }) -t.test('binary file', t => { +t.test('binary file', async t => { const files = new Set([ 'foo.jpg', ]) @@ -169,7 +164,7 @@ t.test('binary file', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -177,10 +172,9 @@ t.test('binary file', t => { }), 'should output expected bin file diff result' ) - t.end() }) -t.test('nothing to compare', t => { +t.test('nothing to compare', async t => { const files = new Set([ 'foo.jpg', ]) @@ -193,7 +187,7 @@ t.test('nothing to compare', t => { b: '2.0.0', } - t.equal( + await t.resolveMatch( formatDiff({ files, refs, @@ -202,10 +196,9 @@ t.test('nothing to compare', t => { '', 'should have no output' ) - t.end() }) -t.test('colored output', t => { +t.test('colored output', async t => { const files = new Set([ 'foo.js', ]) @@ -224,7 +217,7 @@ t.test('colored output', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -235,10 +228,9 @@ t.test('colored output', t => { }), 'should output expected colored diff result' ) - t.end() }) -t.test('using --name-only option', t => { +t.test('using --name-only option', async t => { const files = new Set([ 'foo.js', 'lib/bar.js', @@ -277,7 +269,7 @@ t.test('using --name-only option', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -288,10 +280,9 @@ t.test('using --name-only option', t => { }), 'should output expected diff result' ) - t.end() }) -t.test('respect --tag-version-prefix option', t => { +t.test('respect --tag-version-prefix option', async t => { const files = new Set([ 'foo.js', ]) @@ -310,7 +301,7 @@ t.test('respect --tag-version-prefix option', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -321,10 +312,9 @@ t.test('respect --tag-version-prefix option', t => { }), 'should output expected diff result' ) - t.end() }) -t.test('diff options', t => { +t.test('diff options', async t => { const files = new Set([ 'foo.js', ]) @@ -346,7 +336,7 @@ t.test('diff options', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -360,10 +350,9 @@ t.test('diff options', t => { }), 'should output expected diff result' ) - t.end() }) -t.test('diffUnified=0', t => { +t.test('diffUnified=0', async t => { const files = new Set([ 'foo.js', ]) @@ -385,7 +374,7 @@ t.test('diffUnified=0', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -396,10 +385,9 @@ t.test('diffUnified=0', t => { }), 'should output no context lines in output' ) - t.end() }) -t.test('noPrefix', t => { +t.test('noPrefix', async t => { const files = new Set([ 'foo.js', ]) @@ -418,7 +406,7 @@ t.test('noPrefix', t => { b: '2.0.0', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -429,10 +417,9 @@ t.test('noPrefix', t => { }), 'should output result with no prefixes' ) - t.end() }) -t.test('format multiple files patch', t => { +t.test('format multiple files patch', async t => { const files = new Set([ 'foo.js', 'lib/bar.js', @@ -471,7 +458,7 @@ t.test('format multiple files patch', t => { b: '1.1.1', } - t.matchSnapshot( + await t.resolveMatchSnapshot( formatDiff({ files, refs, @@ -479,5 +466,4 @@ t.test('format multiple files patch', t => { }), 'should output expected result for multiple files' ) - t.end() }) diff --git a/workspaces/libnpmdiff/test/should-print-patch.js b/workspaces/libnpmdiff/test/should-print-patch.js index 97b15787d3933..ad841a5808af1 100644 --- a/workspaces/libnpmdiff/test/should-print-patch.js +++ b/workspaces/libnpmdiff/test/should-print-patch.js @@ -1,28 +1,25 @@ const t = require('tap') const shouldPrintPatch = require('../lib/should-print-patch.js') -t.test('valid filenames', t => { - t.ok(shouldPrintPatch('LICENSE')) - t.ok(shouldPrintPatch('.gitignore')) - t.ok(shouldPrintPatch('foo.md')) - t.ok(shouldPrintPatch('./bar.txt')) - t.ok(shouldPrintPatch('/a/b/c/bar.html')) - t.end() +t.test('valid filenames', async t => { + await t.resolves(shouldPrintPatch('LICENSE'), true) + await t.resolves(shouldPrintPatch('.gitignore'), true) + await t.resolves(shouldPrintPatch('foo.md'), true) + await t.resolves(shouldPrintPatch('./bar.txt'), true) + await t.resolves(shouldPrintPatch('/a/b/c/bar.html'), true) }) -t.test('invalid filenames', t => { - t.notOk(shouldPrintPatch('foo.exe')) - t.notOk(shouldPrintPatch('./foo.jpg')) - t.notOk(shouldPrintPatch('/a/b/c/bar.bin')) - t.end() +t.test('invalid filenames', async t => { + await t.resolves(shouldPrintPatch('foo.exe'), false) + await t.resolves(shouldPrintPatch('./foo.jpg'), false) + await t.resolves(shouldPrintPatch('/a/b/c/bar.bin'), false) }) -t.test('using --text/-a option', t => { +t.test('using --text/-a option', async t => { const opts = { diffText: true, } - t.ok(shouldPrintPatch('foo.exe', opts)) - t.ok(shouldPrintPatch('./foo.jpg', opts)) - t.ok(shouldPrintPatch('/a/b/c/bar.bin', opts)) - t.end() + await t.resolves(shouldPrintPatch('foo.exe', opts), true) + await t.resolves(shouldPrintPatch('./foo.jpg', opts), true) + await t.resolves(shouldPrintPatch('/a/b/c/bar.bin', opts), true) }) diff --git a/workspaces/libnpmexec/package.json b/workspaces/libnpmexec/package.json index 46c5416635f18..8afa7e5ce9645 100644 --- a/workspaces/libnpmexec/package.json +++ b/workspaces/libnpmexec/package.json @@ -69,7 +69,7 @@ "read": "^4.0.0", "read-package-json-fast": "^4.0.0", "semver": "^7.3.7", - "walk-up-path": "^3.0.1" + "walk-up-path": "^4.0.0" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",