diff --git a/.eslintrc.json b/.eslintrc.json index 9574a7d..b9b8e3e 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,11 +6,12 @@ "extends": [ "eslint:recommended", "plugin:prettier/recommended", - "plugin:@typescript-eslint/recommended" + "plugin:@typescript-eslint/recommended", + "plugin:require-extensions/recommended" ], "ignorePatterns": ["vite.config.ts", "scripts"], "parser": "@typescript-eslint/parser", - "plugins": ["@typescript-eslint"], + "plugins": ["@typescript-eslint", "require-extensions"], "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cb84ad6..c4d4de6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,7 +31,7 @@ jobs: node-version: 20 - run: npm ci - - run: ./scripts/release.js --version ${{ github.event.inputs.version }} ${{ github.event.inputs.dry-run == 'true' && '--dry-run' || '' }} + - run: ./scripts/release.cjs --version ${{ github.event.inputs.version }} ${{ github.event.inputs.dry-run == 'true' && '--dry-run' || '' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package-lock.json b/package-lock.json index ec50cec..ac36dfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "3.0.0-alpha.2", "license": "BSD-3-Clause", "devDependencies": { - "@microsoft/api-extractor": "^7.36.3", + "@arethetypeswrong/cli": "^0.15.1", + "@microsoft/api-extractor": "^7.42.3", "@types/node": "^18.15.11", "@typescript-eslint/eslint-plugin": "^6.2.0", "@typescript-eslint/parser": "^6.2.0", @@ -18,6 +19,7 @@ "eslint": "^8.46.0", "eslint-config-prettier": "^8.9.0", "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-require-extensions": "^0.1.3", "playwright": "^1.36.2", "prettier": "^3.0.0", "typescript": "^5.1.6", @@ -34,6 +36,129 @@ "node": ">=0.10.0" } }, + "node_modules/@andrewbranch/untar.js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@andrewbranch/untar.js/-/untar.js-1.0.3.tgz", + "integrity": "sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==", + "dev": true + }, + "node_modules/@arethetypeswrong/cli": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/cli/-/cli-0.15.1.tgz", + "integrity": "sha512-c4+MVbhktzLDnUFpvWvVkGRAb7zwd9b9ZW4eG62PkBsRRsTM6TKUNR23mLhz6tyYTalyqe8E6v09q4k0KuN3eQ==", + "dev": true, + "dependencies": { + "@arethetypeswrong/core": "0.15.1", + "chalk": "^4.1.2", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "marked": "^9.1.2", + "marked-terminal": "^6.0.0", + "semver": "^7.5.4" + }, + "bin": { + "attw": "dist/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@arethetypeswrong/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@arethetypeswrong/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@arethetypeswrong/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@arethetypeswrong/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@arethetypeswrong/cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@arethetypeswrong/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@arethetypeswrong/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@arethetypeswrong/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/core/-/core-0.15.1.tgz", + "integrity": "sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==", + "dev": true, + "dependencies": { + "@andrewbranch/untar.js": "^1.0.3", + "fflate": "^0.8.2", + "semver": "^7.5.4", + "ts-expose-internals-conditionally": "1.0.0-empty.0", + "typescript": "5.3.3", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -69,6 +194,16 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.18.17", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", @@ -599,37 +734,50 @@ "dev": true }, "node_modules/@microsoft/api-extractor": { - "version": "7.36.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.36.3.tgz", - "integrity": "sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==", + "version": "7.42.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.42.3.tgz", + "integrity": "sha512-JNLJFpGHz6ekjS6bvYXxUBeRGnSHeCMFNvRbCQ+7XXB/ZFrgLSMPwWtEq40AiWAy+oyG5a4RSNwdJTp0B2USvQ==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.27.5", + "@microsoft/api-extractor-model": "7.28.13", "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.59.6", - "@rushstack/rig-package": "0.4.0", - "@rushstack/ts-command-line": "4.15.1", - "colors": "~1.2.1", + "@rushstack/node-core-library": "4.0.2", + "@rushstack/rig-package": "0.5.2", + "@rushstack/terminal": "0.10.0", + "@rushstack/ts-command-line": "4.19.1", "lodash": "~4.17.15", + "minimatch": "~3.0.3", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", - "typescript": "~5.0.4" + "typescript": "5.3.3" }, "bin": { "api-extractor": "bin/api-extractor" } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.27.5.tgz", - "integrity": "sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==", + "version": "7.28.13", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.13.tgz", + "integrity": "sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==", "dev": true, "dependencies": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.59.6" + "@rushstack/node-core-library": "4.0.2" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/@microsoft/api-extractor/node_modules/source-map": { @@ -641,19 +789,6 @@ "node": ">=0.10.0" } }, - "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, "node_modules/@microsoft/tsdoc": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", @@ -747,12 +882,11 @@ "dev": true }, "node_modules/@rushstack/node-core-library": { - "version": "3.59.6", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.59.6.tgz", - "integrity": "sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", + "integrity": "sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==", "dev": true, "dependencies": { - "colors": "~1.2.1", "fs-extra": "~7.0.1", "import-lazy": "~4.0.0", "jju": "~1.4.0", @@ -770,24 +904,66 @@ } }, "node_modules/@rushstack/rig-package": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.4.0.tgz", - "integrity": "sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.2.tgz", + "integrity": "sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==", "dev": true, "dependencies": { "resolve": "~1.22.1", "strip-json-comments": "~3.1.1" } }, - "node_modules/@rushstack/ts-command-line": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.15.1.tgz", - "integrity": "sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==", + "node_modules/@rushstack/terminal": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.10.0.tgz", + "integrity": "sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==", "dev": true, "dependencies": { + "@rushstack/node-core-library": "4.0.2", + "supports-color": "~8.1.1" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/terminal/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@rushstack/terminal/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.19.1.tgz", + "integrity": "sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==", + "dev": true, + "dependencies": { + "@rushstack/terminal": "0.10.0", "@types/argparse": "1.0.38", "argparse": "~1.0.9", - "colors": "~1.2.1", "string-argv": "~0.3.1" } }, @@ -800,12 +976,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/@rushstack/ts-command-line/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, "node_modules/@sinclair/typebox": { "version": "0.25.24", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", @@ -817,8 +987,6 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=10" }, @@ -1504,6 +1672,33 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1525,6 +1720,12 @@ "node": ">=4" } }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, "node_modules/archiver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", @@ -1797,6 +1998,15 @@ "optional": true, "peer": true }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, "node_modules/bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -1920,6 +2130,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, "node_modules/chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -1952,6 +2175,15 @@ "node": ">=4" } }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -2012,6 +2244,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -2038,15 +2285,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2506,6 +2744,18 @@ "which": "^2.0.2" } }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2987,6 +3237,18 @@ } } }, + "node_modules/eslint-plugin-require-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-require-extensions/-/eslint-plugin-require-extensions-0.1.3.tgz", + "integrity": "sha512-T3c1PZ9PIdI3hjV8LdunfYI8gj017UQjzAnCrxuo3wAjneDbTPHdE3oNWInOjMA+z/aBkUtlW5vC0YepYMZIug==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "*" + } + }, "node_modules/eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -3196,6 +3458,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -3389,6 +3664,12 @@ "pend": "~1.2.0" } }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3508,10 +3789,13 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-func-name": { "version": "2.0.0", @@ -3671,18 +3955,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -3692,6 +3964,18 @@ "node": ">=4" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -3839,12 +4123,12 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3874,6 +4158,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4352,6 +4645,50 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/marked": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", + "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/marked-terminal": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", + "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <12" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/marky": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz", @@ -4677,6 +5014,21 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -5485,13 +5837,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz", - "integrity": "sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==", + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "dev": true, "dependencies": { - "is-core-module": "^2.12.0", + "esprima": "~4.0.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5795,6 +6156,18 @@ "node": ">= 10" } }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -5868,6 +6241,12 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -5900,6 +6279,20 @@ "node": ">=0.6.19" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5975,6 +6368,40 @@ "node": ">=4" } }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -6187,6 +6614,12 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-expose-internals-conditionally": { + "version": "1.0.0-empty.0", + "resolved": "https://registry.npmjs.org/ts-expose-internals-conditionally/-/ts-expose-internals-conditionally-1.0.0-empty.0.tgz", + "integrity": "sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==", + "dev": true + }, "node_modules/tslib": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", @@ -6227,9 +6660,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6278,6 +6711,15 @@ "through": "^2.3.8" } }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -6336,10 +6778,22 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true, "engines": { "node": ">= 0.10" @@ -6755,6 +7209,98 @@ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true }, + "@andrewbranch/untar.js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@andrewbranch/untar.js/-/untar.js-1.0.3.tgz", + "integrity": "sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==", + "dev": true + }, + "@arethetypeswrong/cli": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/cli/-/cli-0.15.1.tgz", + "integrity": "sha512-c4+MVbhktzLDnUFpvWvVkGRAb7zwd9b9ZW4eG62PkBsRRsTM6TKUNR23mLhz6tyYTalyqe8E6v09q4k0KuN3eQ==", + "dev": true, + "requires": { + "@arethetypeswrong/core": "0.15.1", + "chalk": "^4.1.2", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "marked": "^9.1.2", + "marked-terminal": "^6.0.0", + "semver": "^7.5.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@arethetypeswrong/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/core/-/core-0.15.1.tgz", + "integrity": "sha512-FYp6GBAgsNz81BkfItRz8RLZO03w5+BaeiPma1uCfmxTnxbtuMrI/dbzGiOk8VghO108uFI0oJo0OkewdSHw7g==", + "dev": true, + "requires": { + "@andrewbranch/untar.js": "^1.0.3", + "fflate": "^0.8.2", + "semver": "^7.5.4", + "ts-expose-internals-conditionally": "1.0.0-empty.0", + "typescript": "5.3.3", + "validate-npm-package-name": "^5.0.0" + } + }, "@babel/code-frame": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", @@ -6781,6 +7327,13 @@ "js-tokens": "^4.0.0" } }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, "@esbuild/android-arm": { "version": "0.18.17", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", @@ -7073,48 +7626,52 @@ "dev": true }, "@microsoft/api-extractor": { - "version": "7.36.3", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.36.3.tgz", - "integrity": "sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==", + "version": "7.42.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.42.3.tgz", + "integrity": "sha512-JNLJFpGHz6ekjS6bvYXxUBeRGnSHeCMFNvRbCQ+7XXB/ZFrgLSMPwWtEq40AiWAy+oyG5a4RSNwdJTp0B2USvQ==", "dev": true, "requires": { - "@microsoft/api-extractor-model": "7.27.5", + "@microsoft/api-extractor-model": "7.28.13", "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.59.6", - "@rushstack/rig-package": "0.4.0", - "@rushstack/ts-command-line": "4.15.1", - "colors": "~1.2.1", + "@rushstack/node-core-library": "4.0.2", + "@rushstack/rig-package": "0.5.2", + "@rushstack/terminal": "0.10.0", + "@rushstack/ts-command-line": "4.19.1", "lodash": "~4.17.15", + "minimatch": "~3.0.3", "resolve": "~1.22.1", "semver": "~7.5.4", "source-map": "~0.6.1", - "typescript": "~5.0.4" + "typescript": "5.3.3" }, "dependencies": { + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "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 - }, - "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true } } }, "@microsoft/api-extractor-model": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.27.5.tgz", - "integrity": "sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==", + "version": "7.28.13", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.13.tgz", + "integrity": "sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==", "dev": true, "requires": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.59.6" + "@rushstack/node-core-library": "4.0.2" } }, "@microsoft/tsdoc": { @@ -7194,12 +7751,11 @@ "dev": true }, "@rushstack/node-core-library": { - "version": "3.59.6", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.59.6.tgz", - "integrity": "sha512-bMYJwNFfWXRNUuHnsE9wMlW/mOB4jIwSUkRKtu02CwZhQdmzMsUbxE0s1xOLwTpNIwlzfW/YT7OnOHgDffLgYg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", + "integrity": "sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==", "dev": true, "requires": { - "colors": "~1.2.1", "fs-extra": "~7.0.1", "import-lazy": "~4.0.0", "jju": "~1.4.0", @@ -7209,24 +7765,51 @@ } }, "@rushstack/rig-package": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.4.0.tgz", - "integrity": "sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.2.tgz", + "integrity": "sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==", "dev": true, "requires": { "resolve": "~1.22.1", "strip-json-comments": "~3.1.1" } }, - "@rushstack/ts-command-line": { - "version": "4.15.1", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.15.1.tgz", - "integrity": "sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==", + "@rushstack/terminal": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.10.0.tgz", + "integrity": "sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==", "dev": true, "requires": { + "@rushstack/node-core-library": "4.0.2", + "supports-color": "~8.1.1" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@rushstack/ts-command-line": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.19.1.tgz", + "integrity": "sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==", + "dev": true, + "requires": { + "@rushstack/terminal": "0.10.0", "@types/argparse": "1.0.38", "argparse": "~1.0.9", - "colors": "~1.2.1", "string-argv": "~0.3.1" }, "dependencies": { @@ -7238,12 +7821,6 @@ "requires": { "sprintf-js": "~1.0.2" } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true } } }, @@ -7257,9 +7834,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "@szmarczak/http-timer": { "version": "4.0.6", @@ -7760,6 +8335,23 @@ "uri-js": "^4.2.2" } }, + "ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "requires": { + "type-fest": "^3.0.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -7775,6 +8367,12 @@ "color-convert": "^1.9.0" } }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true + }, "archiver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", @@ -7979,6 +8577,15 @@ "optional": true, "peer": true }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, "bundle-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", @@ -8064,6 +8671,16 @@ } } }, + "cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dev": true, + "requires": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + } + }, "chai": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", @@ -8090,6 +8707,12 @@ "supports-color": "^5.3.0" } }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -8137,6 +8760,16 @@ } } }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -8163,12 +8796,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -8515,6 +9142,18 @@ "which": "^2.0.2" } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -8879,6 +9518,13 @@ "synckit": "^0.8.5" } }, + "eslint-plugin-require-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-require-extensions/-/eslint-plugin-require-extensions-0.1.3.tgz", + "integrity": "sha512-T3c1PZ9PIdI3hjV8LdunfYI8gj017UQjzAnCrxuo3wAjneDbTPHdE3oNWInOjMA+z/aBkUtlW5vC0YepYMZIug==", + "dev": true, + "requires": {} + }, "eslint-scope": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", @@ -8906,6 +9552,12 @@ "eslint-visitor-keys": "^3.4.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -9062,6 +9714,12 @@ "pend": "~1.2.0" } }, + "fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "dev": true + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -9158,9 +9816,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, "get-func-name": { @@ -9276,21 +9934,21 @@ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -9397,12 +10055,12 @@ "dev": true }, "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-docker": { @@ -9417,6 +10075,12 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -9808,6 +10472,34 @@ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, + "marked": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", + "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", + "dev": true + }, + "marked-terminal": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", + "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", + "dev": true, + "requires": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + } + } + }, "marky": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.4.tgz", @@ -10052,6 +10744,18 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, + "node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + } + }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -10599,13 +11303,22 @@ } } }, - "resolve": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.3.tgz", - "integrity": "sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==", + "redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "dev": true, "requires": { - "is-core-module": "^2.12.0", + "esprima": "~4.0.0" + } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -10822,6 +11535,15 @@ "totalist": "^3.0.0" } }, + "skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "requires": { + "unicode-emoji-modifier-base": "^1.0.0" + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -10888,6 +11610,12 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -10917,6 +11645,17 @@ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -10965,6 +11704,33 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -11126,6 +11892,12 @@ "dev": true, "requires": {} }, + "ts-expose-internals-conditionally": { + "version": "1.0.0-empty.0", + "resolved": "https://registry.npmjs.org/ts-expose-internals-conditionally/-/ts-expose-internals-conditionally-1.0.0-empty.0.tgz", + "integrity": "sha512-F8m9NOF6ZhdOClDVdlM8gj3fDCav4ZIFSs/EI3ksQbAAXVSCN/Jh5OCJDDZWBuBy9psFc6jULGDlPwjMYMhJDw==", + "dev": true + }, "tslib": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", @@ -11154,9 +11926,9 @@ "dev": true }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true }, "ua-parser-js": { @@ -11185,6 +11957,12 @@ "through": "^2.3.8" } }, + "unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", @@ -11234,10 +12012,19 @@ "spdx-expression-parse": "^3.0.0" } }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, "validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true }, "vite": { diff --git a/package.json b/package.json index e6dc883..4278680 100644 --- a/package.json +++ b/package.json @@ -4,16 +4,17 @@ "description": "A document model for rich text editors", "author": "Jason Chen ", "homepage": "http://quilljs.com/docs/parchment", - "main": "./dist/parchment.umd.js", - "module": "./dist/parchment.mjs", + "main": "./dist/parchment.js", "types": "./dist/parchment.d.ts", + "type": "module", "files": [ "tsconfig.json", "dist", "src" ], "devDependencies": { - "@microsoft/api-extractor": "^7.36.3", + "@arethetypeswrong/cli": "^0.15.1", + "@microsoft/api-extractor": "^7.42.3", "@types/node": "^18.15.11", "@typescript-eslint/eslint-plugin": "^6.2.0", "@typescript-eslint/parser": "^6.2.0", @@ -22,6 +23,7 @@ "eslint": "^8.46.0", "eslint-config-prettier": "^8.9.0", "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-require-extensions": "^0.1.3", "playwright": "^1.36.2", "prettier": "^3.0.0", "typescript": "^5.1.6", @@ -41,7 +43,8 @@ "prepare": "npm run build", "test": "npm run test:unit && npm run test:types", "test:unit": "vitest", - "test:types": "vitest typecheck" + "test:types": "vitest typecheck", + "test:pkg": "attw $(npm pack)" }, "bugs": { "url": "https://github.com/quilljs/parchment/issues" diff --git a/scripts/release.js b/scripts/release.cjs similarity index 97% rename from scripts/release.js rename to scripts/release.cjs index 897a739..0e9a925 100755 --- a/scripts/release.js +++ b/scripts/release.cjs @@ -122,6 +122,8 @@ exec(`npm version ${version} -f`); const pushCommand = `git push origin ${process.env.GITHUB_REF_NAME} --follow-tags`; if (dryRun) { console.log(`Skipping: "${pushCommand}" in dry-run mode`); +} else if (version === 'experimental') { + console.log(`Skipping: "${pushCommand}" for experimental version`); } else { exec(pushCommand); } diff --git a/src/attributor/attributor.ts b/src/attributor/attributor.ts index 7dcd9f4..73c4000 100644 --- a/src/attributor/attributor.ts +++ b/src/attributor/attributor.ts @@ -1,4 +1,4 @@ -import Scope from '../scope'; +import Scope from '../scope.js'; export interface AttributorOptions { scope?: Scope; diff --git a/src/attributor/class.ts b/src/attributor/class.ts index 07ba906..ccabb7d 100644 --- a/src/attributor/class.ts +++ b/src/attributor/class.ts @@ -1,4 +1,4 @@ -import Attributor from './attributor'; +import Attributor from './attributor.js'; function match(node: HTMLElement, prefix: string): string[] { const className = node.getAttribute('class') || ''; diff --git a/src/attributor/store.ts b/src/attributor/store.ts index 58c9764..86426d4 100644 --- a/src/attributor/store.ts +++ b/src/attributor/store.ts @@ -1,9 +1,9 @@ -import type { Formattable } from '../blot/abstract/blot'; -import Registry from '../registry'; -import Scope from '../scope'; -import Attributor from './attributor'; -import ClassAttributor from './class'; -import StyleAttributor from './style'; +import type { Formattable } from '../blot/abstract/blot.js'; +import Registry from '../registry.js'; +import Scope from '../scope.js'; +import Attributor from './attributor.js'; +import ClassAttributor from './class.js'; +import StyleAttributor from './style.js'; class AttributorStore { private attributes: { [key: string]: Attributor } = {}; diff --git a/src/attributor/style.ts b/src/attributor/style.ts index e5e8325..12a392c 100644 --- a/src/attributor/style.ts +++ b/src/attributor/style.ts @@ -1,4 +1,4 @@ -import Attributor from './attributor'; +import Attributor from './attributor.js'; function camelize(name: string): string { const parts = name.split('-'); diff --git a/src/blot/abstract/blot.ts b/src/blot/abstract/blot.ts index c206bdc..6a8b58d 100644 --- a/src/blot/abstract/blot.ts +++ b/src/blot/abstract/blot.ts @@ -1,7 +1,7 @@ -import type LinkedList from '../../collection/linked-list'; -import type LinkedNode from '../../collection/linked-node'; -import type { RegistryDefinition } from '../../registry'; -import Scope from '../../scope'; +import type LinkedList from '../../collection/linked-list.js'; +import type LinkedNode from '../../collection/linked-node.js'; +import type { RegistryDefinition } from '../../registry.js'; +import Scope from '../../scope.js'; export interface BlotConstructor { blotName: string; diff --git a/src/blot/abstract/container.ts b/src/blot/abstract/container.ts index 06f1912..a60c085 100644 --- a/src/blot/abstract/container.ts +++ b/src/blot/abstract/container.ts @@ -1,6 +1,6 @@ -import Scope from '../../scope'; -import BlockBlot from '../block'; -import ParentBlot from './parent'; +import Scope from '../../scope.js'; +import BlockBlot from '../block.js'; +import ParentBlot from './parent.js'; class ContainerBlot extends ParentBlot { public static blotName = 'container'; diff --git a/src/blot/abstract/leaf.ts b/src/blot/abstract/leaf.ts index a868d91..7808add 100644 --- a/src/blot/abstract/leaf.ts +++ b/src/blot/abstract/leaf.ts @@ -1,6 +1,6 @@ -import Scope from '../../scope'; -import type { Leaf } from './blot'; -import ShadowBlot from './shadow'; +import Scope from '../../scope.js'; +import type { Leaf } from './blot.js'; +import ShadowBlot from './shadow.js'; class LeafBlot extends ShadowBlot implements Leaf { public static scope = Scope.INLINE_BLOT; diff --git a/src/blot/abstract/parent.ts b/src/blot/abstract/parent.ts index 018499c..207dd26 100644 --- a/src/blot/abstract/parent.ts +++ b/src/blot/abstract/parent.ts @@ -1,8 +1,8 @@ -import LinkedList from '../../collection/linked-list'; -import ParchmentError from '../../error'; -import Scope from '../../scope'; -import type { Blot, BlotConstructor, Parent, Root } from './blot'; -import ShadowBlot from './shadow'; +import LinkedList from '../../collection/linked-list.js'; +import ParchmentError from '../../error.js'; +import Scope from '../../scope.js'; +import type { Blot, BlotConstructor, Parent, Root } from './blot.js'; +import ShadowBlot from './shadow.js'; function makeAttachedBlot(node: Node, scroll: Root): Blot { const found = scroll.find(node); diff --git a/src/blot/abstract/shadow.ts b/src/blot/abstract/shadow.ts index 75b946f..f795ed9 100644 --- a/src/blot/abstract/shadow.ts +++ b/src/blot/abstract/shadow.ts @@ -1,7 +1,13 @@ -import ParchmentError from '../../error'; -import Registry from '../../registry'; -import Scope from '../../scope'; -import type { Blot, BlotConstructor, Formattable, Parent, Root } from './blot'; +import ParchmentError from '../../error.js'; +import Registry from '../../registry.js'; +import Scope from '../../scope.js'; +import type { + Blot, + BlotConstructor, + Formattable, + Parent, + Root, +} from './blot.js'; class ShadowBlot implements Blot { public static blotName = 'abstract'; diff --git a/src/blot/block.ts b/src/blot/block.ts index 49bf0e4..a9de389 100644 --- a/src/blot/block.ts +++ b/src/blot/block.ts @@ -1,10 +1,15 @@ -import Attributor from '../attributor/attributor'; -import AttributorStore from '../attributor/store'; -import Scope from '../scope'; -import type { Blot, BlotConstructor, Formattable, Root } from './abstract/blot'; -import LeafBlot from './abstract/leaf'; -import ParentBlot from './abstract/parent'; -import InlineBlot from './inline'; +import Attributor from '../attributor/attributor.js'; +import AttributorStore from '../attributor/store.js'; +import Scope from '../scope.js'; +import type { + Blot, + BlotConstructor, + Formattable, + Root, +} from './abstract/blot.js'; +import LeafBlot from './abstract/leaf.js'; +import ParentBlot from './abstract/parent.js'; +import InlineBlot from './inline.js'; class BlockBlot extends ParentBlot implements Formattable { public static blotName = 'block'; diff --git a/src/blot/embed.ts b/src/blot/embed.ts index 475c0f1..71e4234 100644 --- a/src/blot/embed.ts +++ b/src/blot/embed.ts @@ -1,5 +1,5 @@ -import type { Formattable, Root } from './abstract/blot'; -import LeafBlot from './abstract/leaf'; +import type { Formattable, Root } from './abstract/blot.js'; +import LeafBlot from './abstract/leaf.js'; class EmbedBlot extends LeafBlot implements Formattable { public static formats(_domNode: HTMLElement, _scroll: Root): any { diff --git a/src/blot/inline.ts b/src/blot/inline.ts index 4a06310..0fee3e7 100644 --- a/src/blot/inline.ts +++ b/src/blot/inline.ts @@ -1,15 +1,15 @@ -import Attributor from '../attributor/attributor'; -import AttributorStore from '../attributor/store'; -import Scope from '../scope'; +import Attributor from '../attributor/attributor.js'; +import AttributorStore from '../attributor/store.js'; +import Scope from '../scope.js'; import type { Blot, BlotConstructor, Formattable, Parent, Root, -} from './abstract/blot'; -import LeafBlot from './abstract/leaf'; -import ParentBlot from './abstract/parent'; +} from './abstract/blot.js'; +import LeafBlot from './abstract/leaf.js'; +import ParentBlot from './abstract/parent.js'; // Shallow object comparison function isEqual( diff --git a/src/blot/scroll.ts b/src/blot/scroll.ts index a1903dc..dff3452 100644 --- a/src/blot/scroll.ts +++ b/src/blot/scroll.ts @@ -1,9 +1,9 @@ -import Registry, { type RegistryDefinition } from '../registry'; -import Scope from '../scope'; -import type { Blot, BlotConstructor, Root } from './abstract/blot'; -import ContainerBlot from './abstract/container'; -import ParentBlot from './abstract/parent'; -import BlockBlot from './block'; +import Registry, { type RegistryDefinition } from '../registry.js'; +import Scope from '../scope.js'; +import type { Blot, BlotConstructor, Root } from './abstract/blot.js'; +import ContainerBlot from './abstract/container.js'; +import ParentBlot from './abstract/parent.js'; +import BlockBlot from './block.js'; const OBSERVER_CONFIG = { attributes: true, diff --git a/src/blot/text.ts b/src/blot/text.ts index f5eb4a2..da0d488 100644 --- a/src/blot/text.ts +++ b/src/blot/text.ts @@ -1,6 +1,6 @@ -import Scope from '../scope'; -import type { Blot, Leaf, Root } from './abstract/blot'; -import LeafBlot from './abstract/leaf'; +import Scope from '../scope.js'; +import type { Blot, Leaf, Root } from './abstract/blot.js'; +import LeafBlot from './abstract/leaf.js'; class TextBlot extends LeafBlot implements Leaf { public static readonly blotName = 'text'; diff --git a/src/collection/linked-list.ts b/src/collection/linked-list.ts index ad917f9..075d693 100644 --- a/src/collection/linked-list.ts +++ b/src/collection/linked-list.ts @@ -1,4 +1,4 @@ -import type LinkedNode from './linked-node'; +import type LinkedNode from './linked-node.js'; class LinkedList { public head: T | null; diff --git a/src/parchment.ts b/src/parchment.ts index 7d3f6ec..f032190 100644 --- a/src/parchment.ts +++ b/src/parchment.ts @@ -1,20 +1,20 @@ -import ContainerBlot from './blot/abstract/container'; -import LeafBlot from './blot/abstract/leaf'; -import ParentBlot from './blot/abstract/parent'; +import ContainerBlot from './blot/abstract/container.js'; +import LeafBlot from './blot/abstract/leaf.js'; +import ParentBlot from './blot/abstract/parent.js'; -import BlockBlot from './blot/block'; -import EmbedBlot from './blot/embed'; -import InlineBlot from './blot/inline'; -import ScrollBlot from './blot/scroll'; -import TextBlot from './blot/text'; +import BlockBlot from './blot/block.js'; +import EmbedBlot from './blot/embed.js'; +import InlineBlot from './blot/inline.js'; +import ScrollBlot from './blot/scroll.js'; +import TextBlot from './blot/text.js'; -import Attributor from './attributor/attributor'; -import ClassAttributor from './attributor/class'; -import AttributorStore from './attributor/store'; -import StyleAttributor from './attributor/style'; +import Attributor from './attributor/attributor.js'; +import ClassAttributor from './attributor/class.js'; +import AttributorStore from './attributor/store.js'; +import StyleAttributor from './attributor/style.js'; -import Registry from './registry'; -import Scope from './scope'; +import Registry from './registry.js'; +import Scope from './scope.js'; export { ParentBlot, @@ -33,11 +33,11 @@ export { Scope, }; -export type { RegistryInterface, RegistryDefinition } from './registry'; -export type { default as ShadowBlot } from './blot/abstract/shadow'; -export type { default as LinkedList } from './collection/linked-list'; -export type { default as LinkedNode } from './collection/linked-node'; -export type { AttributorOptions } from './attributor/attributor'; +export type { RegistryInterface, RegistryDefinition } from './registry.js'; +export type { default as ShadowBlot } from './blot/abstract/shadow.js'; +export type { default as LinkedList } from './collection/linked-list.js'; +export type { default as LinkedNode } from './collection/linked-node.js'; +export type { AttributorOptions } from './attributor/attributor.js'; export type { Blot, BlotConstructor, @@ -45,4 +45,4 @@ export type { Leaf, Parent, Root, -} from './blot/abstract/blot'; +} from './blot/abstract/blot.js'; diff --git a/src/registry.ts b/src/registry.ts index 5fd9cc0..2be0004 100644 --- a/src/registry.ts +++ b/src/registry.ts @@ -1,11 +1,11 @@ -import Attributor from './attributor/attributor'; +import Attributor from './attributor/attributor.js'; import { type Blot, type BlotConstructor, type Root, -} from './blot/abstract/blot'; -import ParchmentError from './error'; -import Scope from './scope'; +} from './blot/abstract/blot.js'; +import ParchmentError from './error.js'; +import Scope from './scope.js'; export type RegistryDefinition = Attributor | BlotConstructor; diff --git a/tests/__helpers__/registry/attributor.ts b/tests/__helpers__/registry/attributor.ts index 796c36a..d9e65c3 100644 --- a/tests/__helpers__/registry/attributor.ts +++ b/tests/__helpers__/registry/attributor.ts @@ -1,7 +1,7 @@ -import Attributor from '../../../src/attributor/attributor'; -import ClassAttributor from '../../../src/attributor/class'; -import StyleAttributor from '../../../src/attributor/style'; -import Scope from '../../../src/scope'; +import Attributor from '../../../src/attributor/attributor.js'; +import ClassAttributor from '../../../src/attributor/class.js'; +import StyleAttributor from '../../../src/attributor/style.js'; +import Scope from '../../../src/scope.js'; export const Color = new StyleAttributor('color', 'color', { scope: Scope.INLINE_ATTRIBUTE, diff --git a/tests/__helpers__/registry/block.ts b/tests/__helpers__/registry/block.ts index 2057992..80c3172 100644 --- a/tests/__helpers__/registry/block.ts +++ b/tests/__helpers__/registry/block.ts @@ -1,4 +1,4 @@ -import BlockBlot from '../../../src/blot/block'; +import BlockBlot from '../../../src/blot/block.js'; export class HeaderBlot extends BlockBlot { static readonly blotName = 'header'; diff --git a/tests/__helpers__/registry/break.ts b/tests/__helpers__/registry/break.ts index 8f64c51..31a4834 100644 --- a/tests/__helpers__/registry/break.ts +++ b/tests/__helpers__/registry/break.ts @@ -1,4 +1,4 @@ -import EmbedBlot from '../../../src/blot/embed'; +import EmbedBlot from '../../../src/blot/embed.js'; export class BreakBlot extends EmbedBlot { static readonly blotName = 'break'; diff --git a/tests/__helpers__/registry/embed.ts b/tests/__helpers__/registry/embed.ts index c92d7d8..f907fcc 100644 --- a/tests/__helpers__/registry/embed.ts +++ b/tests/__helpers__/registry/embed.ts @@ -1,5 +1,5 @@ -import EmbedBlot from '../../../src/blot/embed'; -import Scope from '../../../src/scope'; +import EmbedBlot from '../../../src/blot/embed.js'; +import Scope from '../../../src/scope.js'; export class ImageBlot extends EmbedBlot { declare domNode: HTMLImageElement; diff --git a/tests/__helpers__/registry/inline.ts b/tests/__helpers__/registry/inline.ts index 2406bed..a3e6d4f 100644 --- a/tests/__helpers__/registry/inline.ts +++ b/tests/__helpers__/registry/inline.ts @@ -1,4 +1,4 @@ -import InlineBlot from '../../../src/blot/inline'; +import InlineBlot from '../../../src/blot/inline.js'; export class AuthorBlot extends InlineBlot { static readonly blotName = 'author'; diff --git a/tests/__helpers__/registry/list.ts b/tests/__helpers__/registry/list.ts index 79ce536..626c7a5 100644 --- a/tests/__helpers__/registry/list.ts +++ b/tests/__helpers__/registry/list.ts @@ -1,5 +1,5 @@ -import ContainerBlot from '../../../src/blot/abstract/container'; -import BlockBlot from '../../../src/blot/block'; +import ContainerBlot from '../../../src/blot/abstract/container.js'; +import BlockBlot from '../../../src/blot/block.js'; export class ListItem extends BlockBlot { static readonly blotName = 'list'; diff --git a/tests/setup.ts b/tests/setup.ts index 4dc4fc3..3aa5ba6 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -7,13 +7,13 @@ import { InlineBlot, TextBlot, type BlotConstructor, -} from '../src/parchment'; +} from '../src/parchment.js'; import { AuthorBlot, BoldBlot, ItalicBlot, ScriptBlot, -} from './__helpers__/registry/inline'; +} from './__helpers__/registry/inline.js'; import { Align, Color, @@ -21,11 +21,11 @@ import { Id, Indent, Size, -} from './__helpers__/registry/attributor'; -import { HeaderBlot } from './__helpers__/registry/block'; -import { ImageBlot, VideoBlot } from './__helpers__/registry/embed'; -import { ListContainer, ListItem } from './__helpers__/registry/list'; -import { BreakBlot } from './__helpers__/registry/break'; +} from './__helpers__/registry/attributor.js'; +import { HeaderBlot } from './__helpers__/registry/block.js'; +import { ImageBlot, VideoBlot } from './__helpers__/registry/embed.js'; +import { ListContainer, ListItem } from './__helpers__/registry/list.js'; +import { BreakBlot } from './__helpers__/registry/break.js'; const getTestRegistry = () => { const reg = new Registry(); diff --git a/tests/types/attributor.test-d.ts b/tests/types/attributor.test-d.ts index 02446b1..1107f44 100644 --- a/tests/types/attributor.test-d.ts +++ b/tests/types/attributor.test-d.ts @@ -1,5 +1,5 @@ import { assertType } from 'vitest'; -import { ClassAttributor } from '../../src/parchment'; +import { ClassAttributor } from '../../src/parchment.js'; class IndentAttributor extends ClassAttributor { value(node: HTMLElement) { diff --git a/tests/types/parent.test-d.ts b/tests/types/parent.test-d.ts index 3e0f005..555de3f 100644 --- a/tests/types/parent.test-d.ts +++ b/tests/types/parent.test-d.ts @@ -5,7 +5,7 @@ import { Registry, ScrollBlot, ParentBlot, -} from '../../src/parchment'; +} from '../../src/parchment.js'; const registry = new Registry(); const root = document.createElement('div'); diff --git a/tests/unit/attributor.test.ts b/tests/unit/attributor.test.ts index b775061..de7e455 100644 --- a/tests/unit/attributor.test.ts +++ b/tests/unit/attributor.test.ts @@ -4,10 +4,10 @@ import type { BlockBlot, Formattable, InlineBlot, -} from '../../src/parchment'; -import type { HeaderBlot } from '../__helpers__/registry/block'; -import type { BoldBlot } from '../__helpers__/registry/inline'; -import { setupContextBeforeEach } from '../setup'; +} from '../../src/parchment.js'; +import type { HeaderBlot } from '../__helpers__/registry/block.js'; +import type { BoldBlot } from '../__helpers__/registry/inline.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('Attributor', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/block.test.ts b/tests/unit/block.test.ts index 0175898..cbe19a7 100644 --- a/tests/unit/block.test.ts +++ b/tests/unit/block.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; -import type { BlockBlot } from '../../src/parchment'; -import type { HeaderBlot } from '../__helpers__/registry/block'; -import { setupContextBeforeEach } from '../setup'; +import type { BlockBlot } from '../../src/parchment.js'; +import type { HeaderBlot } from '../__helpers__/registry/block.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('Block', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/blot.test.ts b/tests/unit/blot.test.ts index 7b6c09b..ae57dfe 100644 --- a/tests/unit/blot.test.ts +++ b/tests/unit/blot.test.ts @@ -1,8 +1,8 @@ import { describe, it, expect } from 'vitest'; -import type { BlockBlot, Parent } from '../../src/parchment'; -import Registry from '../../src/registry'; -import type { ItalicBlot } from '../__helpers__/registry/inline'; -import { setupContextBeforeEach } from '../setup'; +import type { BlockBlot, Parent } from '../../src/parchment.js'; +import Registry from '../../src/registry.js'; +import type { ItalicBlot } from '../__helpers__/registry/inline.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('Blot', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/container.test.ts b/tests/unit/container.test.ts index 6dc0869..21db502 100644 --- a/tests/unit/container.test.ts +++ b/tests/unit/container.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, beforeEach } from 'vitest'; -import { setupContextBeforeEach } from '../setup'; +import { setupContextBeforeEach } from '../setup.js'; describe('Container', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/embed.test.ts b/tests/unit/embed.test.ts index 1b8abe2..e4bb1d0 100644 --- a/tests/unit/embed.test.ts +++ b/tests/unit/embed.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; -import type { BlockBlot, InlineBlot } from '../../src/parchment'; -import type { ImageBlot } from '../__helpers__/registry/embed'; -import { setupContextBeforeEach } from '../setup'; +import type { BlockBlot, InlineBlot } from '../../src/parchment.js'; +import type { ImageBlot } from '../__helpers__/registry/embed.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('EmbedBlot', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/inline.test.ts b/tests/unit/inline.test.ts index ed5726b..6be935d 100644 --- a/tests/unit/inline.test.ts +++ b/tests/unit/inline.test.ts @@ -1,11 +1,11 @@ import { describe, it, expect } from 'vitest'; -import type { BlockBlot, Leaf } from '../../src/parchment'; +import type { BlockBlot, Leaf } from '../../src/parchment.js'; import type { BoldBlot, ItalicBlot, ScriptBlot, -} from '../__helpers__/registry/inline'; -import { setupContextBeforeEach } from '../setup'; +} from '../__helpers__/registry/inline.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('InlineBlot', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/lifecycle.test.ts b/tests/unit/lifecycle.test.ts index 8e48be4..0305d9f 100644 --- a/tests/unit/lifecycle.test.ts +++ b/tests/unit/lifecycle.test.ts @@ -1,17 +1,17 @@ import { vi, describe, it, expect, beforeEach } from 'vitest'; -import LeafBlot from '../../src/blot/abstract/leaf'; -import ShadowBlot from '../../src/blot/abstract/shadow'; +import LeafBlot from '../../src/blot/abstract/leaf.js'; +import ShadowBlot from '../../src/blot/abstract/shadow.js'; import type { BlockBlot, Blot, InlineBlot, TextBlot, -} from '../../src/parchment'; -import { HeaderBlot } from '../__helpers__/registry/block'; -import { ImageBlot } from '../__helpers__/registry/embed'; -import type { ItalicBlot } from '../__helpers__/registry/inline'; -import { BoldBlot } from '../__helpers__/registry/inline'; -import { setupContextBeforeEach } from '../setup'; +} from '../../src/parchment.js'; +import { HeaderBlot } from '../__helpers__/registry/block.js'; +import { ImageBlot } from '../__helpers__/registry/embed.js'; +import type { ItalicBlot } from '../__helpers__/registry/inline.js'; +import { BoldBlot } from '../__helpers__/registry/inline.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('Lifecycle', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/linked-list.test.ts b/tests/unit/linked-list.test.ts index 7ac922f..34e6432 100644 --- a/tests/unit/linked-list.test.ts +++ b/tests/unit/linked-list.test.ts @@ -1,6 +1,6 @@ import { vi, describe, it, expect, beforeEach } from 'vitest'; -import LinkedList from '../../src/collection/linked-list'; -import type { LinkedNode } from '../../src/parchment'; +import LinkedList from '../../src/collection/linked-list.js'; +import type { LinkedNode } from '../../src/parchment.js'; interface StrNode extends LinkedNode { str: string; diff --git a/tests/unit/parent.test.ts b/tests/unit/parent.test.ts index 77c2a1e..aeee1fc 100644 --- a/tests/unit/parent.test.ts +++ b/tests/unit/parent.test.ts @@ -1,16 +1,16 @@ import { describe, it, expect, beforeEach } from 'vitest'; -import LeafBlot from '../../src/blot/abstract/leaf'; -import ParentBlot from '../../src/blot/abstract/parent'; -import ShadowBlot from '../../src/blot/abstract/shadow'; -import EmbedBlot from '../../src/blot/embed'; +import LeafBlot from '../../src/blot/abstract/leaf.js'; +import ParentBlot from '../../src/blot/abstract/parent.js'; +import ShadowBlot from '../../src/blot/abstract/shadow.js'; +import EmbedBlot from '../../src/blot/embed.js'; -import { VideoBlot } from '../__helpers__/registry/embed'; -import { ItalicBlot } from '../__helpers__/registry/inline'; +import { VideoBlot } from '../__helpers__/registry/embed.js'; +import { ItalicBlot } from '../__helpers__/registry/inline.js'; -import Registry from '../../src/registry'; -import TextBlot from '../../src/blot/text'; -import { setupContextBeforeEach } from '../setup'; -import type { BlockBlot, Blot } from '../../src/parchment'; +import Registry from '../../src/registry.js'; +import TextBlot from '../../src/blot/text.js'; +import { setupContextBeforeEach } from '../setup.js'; +import type { BlockBlot, Blot } from '../../src/parchment.js'; describe('Parent', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/registry.test.ts b/tests/unit/registry.test.ts index 136dd32..f4e5ac8 100644 --- a/tests/unit/registry.test.ts +++ b/tests/unit/registry.test.ts @@ -1,18 +1,18 @@ import { describe, it, expect } from 'vitest'; -import Scope from '../../src/scope'; -import { HeaderBlot } from '../__helpers__/registry/block'; +import Scope from '../../src/scope.js'; +import { HeaderBlot } from '../__helpers__/registry/block.js'; import { AuthorBlot, BoldBlot, ItalicBlot, -} from '../__helpers__/registry/inline'; +} from '../__helpers__/registry/inline.js'; -import ShadowBlot from '../../src/blot/abstract/shadow'; -import InlineBlot from '../../src/blot/inline'; -import BlockBlot from '../../src/blot/block'; -import type { Parent } from '../../src/parchment'; +import ShadowBlot from '../../src/blot/abstract/shadow.js'; +import InlineBlot from '../../src/blot/inline.js'; +import BlockBlot from '../../src/blot/block.js'; +import type { Parent } from '../../src/parchment.js'; -import { setupContextBeforeEach } from '../setup'; +import { setupContextBeforeEach } from '../setup.js'; describe('ctx.registry', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/scroll.test.ts b/tests/unit/scroll.test.ts index 5354afe..96c85aa 100644 --- a/tests/unit/scroll.test.ts +++ b/tests/unit/scroll.test.ts @@ -1,5 +1,5 @@ import { vi, describe, it, expect, beforeEach } from 'vitest'; -import { setupContextBeforeEach } from '../setup'; +import { setupContextBeforeEach } from '../setup.js'; describe('scroll', function () { const ctx = setupContextBeforeEach(); diff --git a/tests/unit/text.test.ts b/tests/unit/text.test.ts index 4134c52..520c7b5 100644 --- a/tests/unit/text.test.ts +++ b/tests/unit/text.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest'; -import TextBlot from '../../src/blot/text'; -import type { BlockBlot, InlineBlot } from '../../src/parchment'; -import { setupContextBeforeEach } from '../setup'; +import TextBlot from '../../src/blot/text.js'; +import type { BlockBlot, InlineBlot } from '../../src/parchment.js'; +import { setupContextBeforeEach } from '../setup.js'; describe('TextBlot', function () { const ctx = setupContextBeforeEach();