diff --git a/.cspell.json b/.cspell.json
index 95d11dd72..8917d5a21 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -6,16 +6,22 @@
"badterms",
"Beihang",
"blocklist",
+ "capi",
"Çelik",
"charmod",
+ "cloudflareinsights",
"CRYD",
"csswg",
"datedlink",
"dcterms",
"deniak",
+ "discr",
"DNOTE",
+ "doasync",
"doctypes",
"dvcs",
+ "epub",
+ "epubcfi",
"ERCIM",
"exphbs",
"extractmetadataoptions",
@@ -23,9 +29,11 @@
"FPLC",
"FPWD",
"FPWG",
+ "fileupload",
"hellip",
"hilite",
"historyuri",
+ "Hickson",
"howto",
"Imple",
"implelink",
@@ -34,10 +42,12 @@
"iprlink",
"Ishida",
"Keio",
+ "lcovonly",
"ldquo",
"linkchecker",
"mediacapture",
"memsub",
+ "metaviewport",
"middot",
"minami",
"nodate",
@@ -47,9 +57,12 @@
"patentpolicy",
"piwik",
"prevrecuri",
+ "Parens",
"Pubrules",
+ "pubruleschecker",
"rdquo",
"rectrack",
+ "rvagg",
"RSCND",
"secno",
"secnos",
@@ -64,6 +77,7 @@
"SUMB",
"supersedable",
"Tantek",
+ "testserver",
"testtest",
"tocline",
"tocxref",
@@ -71,13 +85,19 @@
"uarr",
"Unmocked",
"unneutral",
+ "valfile",
"validateoptions",
+ "valuri",
"vcard",
+ "WHATWG",
"wcag",
+ "webgpu",
"webidl",
+ "webperf",
"webrtc",
"Whut",
- "wrongprocess"
+ "wrongprocess",
+ "WGSL"
],
"dictionaries": ["html", "js", "css", "npm", "en-gb"],
"ignorePaths": [
@@ -89,7 +109,6 @@
".nyc_output/**",
".github/**",
"coverage/**",
- "doc/api/**",
"test/**/*.html",
"package-lock.json",
"node_modules/**",
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index a37585e4f..000000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-doc/api
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index 2029a1383..000000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "extends": ["airbnb-base", "prettier"],
- "plugins": ["prettier"],
- "rules": {
- "prettier/prettier": "error",
- "no-shadow": "off",
- "consistent-return": "warn",
- "no-param-reassign": "off",
- "strict": "off",
- "global-require": "off",
- "no-restricted-syntax": "warn",
- "guard-for-in": "warn",
- "prefer-destructuring": "warn"
- },
- "overrides": [
- {
- "files": ["public/js/*.js"],
- "env": {
- "browser": true,
- "jquery": true,
- "es6": true
- },
- "rules": {}
- },
- {
- "files": ["app.js", "lib/**/*.js", "tools/**/*.js"],
- "plugins": ["node"],
- "extends": ["plugin:node/recommended", "plugin:jsdoc/recommended"]
- },
- {
- "files": ["test/**/*.js"],
- "env": {
- "mocha": true
- },
- "rules": {
- "node/no-unpublished-require": "off"
- },
- "plugins": ["node"],
- "extends": "plugin:node/recommended"
- }
- ]
-}
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 4cddaa89d..6e3f8e141 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,12 +9,14 @@ updates:
ignore:
- dependency-name: '*'
update-types: ['version-update:semver-patch']
- - package-ecosystem: npm
- directory: '/'
- schedule:
- interval: monthly
- time: '00:00'
- open-pull-requests-limit: 99
+ - dependency-name: 'cspell'
+ update-types: ['version-update:semver-minor']
+ - dependency-name: 'eslint*'
+ update-types: ['version-update:semver-minor']
+ - dependency-name: 'husky'
+ update-types: ['version-update:semver-minor']
+ - dependency-name: 'nodemon'
+ update-types: ['version-update:semver-minor']
- package-ecosystem: github-actions
directory: '/'
schedule:
diff --git a/.github/workflows/js-lint.yml b/.github/workflows/js-lint.yml
index 8b09e0cfd..94c3a7c9c 100644
--- a/.github/workflows/js-lint.yml
+++ b/.github/workflows/js-lint.yml
@@ -4,27 +4,23 @@ on:
push:
paths:
- '**/*.js'
- - 'jsdoc.json'
- 'package.json'
pull_request:
paths:
- '**/*.js'
- - 'jsdoc.json'
- 'package.json'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v4
with:
cache: npm
- run: npm ci
- run: npm run lint
-
- - run: npm run jsdoc
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 5d534ca2c..430e1cd31 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -14,21 +14,21 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- node-version: [14.x, 16.x]
+ node-version: [18.x, 20.x, 22.x]
steps:
- name: Checkout
if: ${{ github.event_name != 'pull_request_target' }}
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Checkout PR
if: ${{ github.event_name == 'pull_request_target' }}
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm
@@ -36,17 +36,3 @@ jobs:
- run: npm ci
- run: npm run coverage
- env:
- W3C_API_KEY: ${{ secrets.W3C_API_KEY }}
-
- - name: Notify failure
- uses: rectalogic/notify-irc@v1
- if: failure() && github.event.pull_request.draft == false
- with:
- server: 'irc.w3.org'
- port: 6679
- channel: '#pubrules'
- nickname: gh-action-notifier
- tls: true
- message: |
- ${{ github.actor }} pushed to ${{ github.repository }}. https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} FAILED with node ${{ matrix.node-version}} (PR: ${{ github.event.pull_request.html_url }})
diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml
index bcbebe7dc..f154e9245 100644
--- a/.github/workflows/spelling.yml
+++ b/.github/workflows/spelling.yml
@@ -8,10 +8,10 @@ jobs:
steps:
- name: Clone repository
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Set up Node.js
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v4
with:
cache: npm
diff --git a/.gitignore b/.gitignore
index b753a183c..15bc2eb29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,9 +22,6 @@ NOTES.txt
pubruleschecker
scratch
-# JSDoc output
-doc/api/
-
# mac files
.DS_Store
*/.DS_Store
diff --git a/.nycrc b/.nycrc
index 6b99a70e5..17ab01a52 100644
--- a/.nycrc
+++ b/.nycrc
@@ -1,9 +1,5 @@
{
- "all": true,
- "exclude": [
- "**/*.min.js"
- ],
- "reporter": [
- "lcovonly"
- ]
-}
\ No newline at end of file
+ "all": true,
+ "exclude": ["**/*.min.js"],
+ "reporter": ["lcovonly"]
+}
diff --git a/.prettierrc.json b/.prettierrc.json
index e42bf8c2a..fd8232057 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,4 +1,5 @@
{
"singleQuote": true,
- "arrowParens": "avoid"
+ "arrowParens": "avoid",
+ "trailingComma": "es5"
}
diff --git a/README.md b/README.md
index d935d8d31..1e6d884e0 100644
--- a/README.md
+++ b/README.md
@@ -36,11 +36,9 @@ on the same core library.
### Syntax and command-line parameters
```bash
-$ W3C_API_KEY=" This section describes the status of this document at the time of its publication. A list of current W3C publications can be found in the W3C technical reports index at https://www.w3.org/TR/. Publication as a Draft Registry does not imply endorsement by W3C and its Members Publication as a Draft Registry does not imply endorsement by W3C and its Members. A Candidate Registry Snapshot has received wide review. Publication as a Draft Registry does not imply endorsement by W3C and its Members. A Candidate Registry Snapshot has received wide review. Publication as a Candidate Registry Draft does not imply endorsement by W3C and its Members. A Candidate Registry Draft integrates changes from the previous Candidate Registry that the Working Group intends to include in a subsequent Candidate Registry Snapshot. Group Draft Notes are not endorsed by W3C nor its Members. Group Draft Notes are not endorsed by W3C nor its Members. This Group Draft Note is endorsed by the @@@ Working/Interest Group (and the @@@ Working/Interest Group), but is not endorsed by W3C itself nor its Members. Group Notes are not endorsed by W3C nor its Members. Group Notes are not endorsed by W3C nor its Members. This Group Note is endorsed by the @@@ Working/Interest Group (and the @@@ Working/Interest Group), but is not endorsed by W3C itself nor its Members. A W3C Statement is a specification that, after extensive consensus-building, is endorsed by W3C and its Members. Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received wide review, is intended to gather implementation experience, and has commitments from Working Group members to royalty-free licensing for implementations. Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received wide review, is intended to gather implementation experience, and has commitments from Working Group members to royalty-free licensing for implementations. Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Draft integrates changes from the previous Candidate Recommendation that the Working Group intends to include in a subsequent Candidate Recommendation Snapshot. If this is a modified Recommendation that was modified in place or is a new edition, the document must include both the original publication date and the modification date. For example: If this is a modified Recommendation that was modified in place or is a new edition, the document must include both the original publication date and the modification date. For example: A W3C Recommendation is a specification that, after extensive consensus-building, is endorsed by W3C and its Members, and has commitments from Working Group members to royalty-free licensing for implementations. A W3C Recommendation is a specification that, after extensive consensus-building, is endorsed by W3C and its Members, and has commitments from Working Group members to royalty-free licensing for implementations. there should be a paragraph with there should be a paragraph with there should be a paragraph with there should be a paragraph with there should be a paragraph with there should be a paragraph with there should be a paragraph with there should be a paragraph with Include this source code: Publication as a Discontinued Draft imply that this document no longer intended to advance or to be maintained. It is inappropriate to cite this document as other than abandoned work. Publication as a Discontinued Draft implies that this document is no longer intended to advance or to be maintained. It is inappropriate to cite this document as other than abandoned work. Include this source code: Note: Exceptions are listed in this json file.",
"hrAfterCopyright": "A horizontal rule ( This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/. This document was published by the @@@ Working/Interest Group as a @{param1} using the @{param2}. This document was published by the @@@ Working/Interest Group as a @{param1} using the @{param2}. Publication as @{param1} does not imply endorsement by W3C and its Members. This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy. This document was produced by a group operating under the 1 August 2017 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy. The W3C Patent Policy does not carry any licensing requirements or commitments on this document. The 1 August 2017 W3C Patent Policy does not carry any licensing requirements or commitments on this document. Note: Contact the Communications Team for suitable adaptations in the case where a document has been published jointly by more than one group. In the adaptation, be sure that the text for informative-only specs or specs not going to Rec is the same as the standard text. This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy. The W3C Patent Policy does not carry any licensing requirements or commitments on this document. This document is governed by the 2 November 2021 W3C Process Document. This document is governed by the 03 November 2023 W3C Process Document. Publication as a Working Draft does not imply endorsement by W3C and its Members.
About ·
Site map ·
@@ -96,8 +94,7 @@ const listProfiles = function () {
return result;
};
-const sortedProfiles = listProfiles();
-exports.sortedProfiles = sortedProfiles;
+export const sortedProfiles = listProfiles();
/**
* @TODO Document.
*/
@@ -136,7 +133,6 @@ const formatRules = function (sections, common) {
}
result += '
- W3C
{{! if document is Echidna, use current date. else, use default date}}
+ W3C
- It includes proposed addition, introducing new features since the Previous Recommendation.
+ It includes proposed addition, introducing new features since the Previous Recommendation.
- This Candidate Registry is not expected to advance to Registry any earlier than 6 June 2022.
+ This Candidate Registry is not expected to advance to Registry any earlier than 6 September 2025.
- W3C Members and other interested parties are invited to review the document and send comments through 15 October 2021. Advisory Committee Representatives should consult their questionnaires. Note that substantive technical comments were expected during the Candidate Recommendation review period that ended 13 July 2021.
+ W3C Members and other interested parties are invited to review the document and send comments through 15 October 2021. Advisory Committee Representatives should consult their questionnaires. Note that substantive technical comments were expected during the Candidate Recommendation review period that ended 13 July 2023.
- This document .
+ This document {{! is governed by the}} .
- This document .
+ This document {{! is governed by the}} .
- W3C Candidate Recommendation Snapshot
+ W3C Candidate Recommendation Snapshot
- Copyright
+ Copyright
©
2021
W3C® (MIT,
ERCIM, Keio,
Beihang).
- W3C liability,
- trademark and permissive document license rules
+ W3C liability,
+ trademark and permissive document license rules
apply.
This document was published by the Web Performance Working Group
as a Candidate Recommendation Snapshot using the Recommendation
+ href="https://www.w3.org/policies/process/20231103/#recs-and-notes">Recommendation
track.
- This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
+ This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
- This document is governed by the 2 November 2021 W3C Process Document.
+ This document is governed by the 03 November 2023 W3C Process Document.
- W3C Discontinued Draft
+ W3C Discontinued Draft
- Copyright
+ Copyright
©
2021
W3C® (Foo Time
title="European Research Consortium for Informatics and Mathematics">ERCIM, Keio,
Beihang).
- W3C liability,
- trademark and permissive document
+ W3C liability,
+ trademark and permissive document
license rules
apply.
${data.url}
;
+ check the spelling of the host, the protocol (HTTP
, HTTPS
)
+ and ensure that the page is accessible from the public internet.`;
+ socket.emit('exception', { message });
}
- } else {
- const message = `Error while resolving ${data.url}
;
- check the spelling of the host, the protocol (HTTP
, HTTPS
)
- and ensure that the page is accessible from the public internet.`;
- socket.emit('exception', { message });
- }
- })
- .catch(e => {
+ })
+ .catch(e => {
+ socket.emit('exception', {
+ message: `Insafe check blew up: ${e}`,
+ });
+ socket.emit('finished');
+ });
+ } else {
+ try {
+ specberus.validate({
+ file: data.file,
+ profile,
+ events: handler,
+ validation: data.validation,
+ informativeOnly: data.informativeOnly,
+ echidnaReady: data.echidnaReady,
+ patentPolicy: data.patentPolicy,
+ });
+ } catch (e) {
socket.emit('exception', {
- message: `Insafe check blew up: ${e}`,
+ message: `Validation blew up: ${e}`,
});
socket.emit('finished');
+ }
+ }
+ });
+
+ socket.on('upload', (file, callback) => {
+ const tmpfile = tmp.fileSync().name;
+ writeFile(tmpfile, file, err => {
+ callback({
+ status: err ? 'failure' : 'success',
+ filename: tmpfile,
});
+ });
});
});
diff --git a/doc/Presentation.md b/doc/Presentation.md
index f3212005d..e237dba5c 100644
--- a/doc/Presentation.md
+++ b/doc/Presentation.md
@@ -20,10 +20,10 @@ _Specberus_ is expected to replace the [current pubrules tool](https://www.w3.or
--
-- Complex maintenance.
-- XSLT is not flexible enough.
-- There is no clear separation between the documentation (_human-readable publication rules_) and the automatic checker (_the software_).
-- Difficult to integrate within the broader publication workflow.
+- Complex maintenance.
+- XSLT is not flexible enough.
+- There is no clear separation between the documentation (_human-readable publication rules_) and the automatic checker (_the software_).
+- Difficult to integrate within the broader publication workflow.
---
@@ -140,20 +140,20 @@ Using [Jenkins](https://jenkins-ci.org/).
`# apt-get install`:
-- [`nodejs`](https://nodejs.org/)
-- [`npm`](https://github.com/isaacs/npm)
+- [`nodejs`](https://nodejs.org/)
+- [`npm`](https://github.com/isaacs/npm)
--
`$ npm install`
(but you can do `npm install -d` instead to install all at once):
-- [`express`](https://www.npmjs.org/package/express) (web framework)
-- [`express-rest`](https://www.npmjs.org/package/express-rest) (REST server framework)
-- [`socket.io`](https://www.npmjs.org/package/socket.io) (realtime application server and client)
-- [`safe-url-input-checker`](https://www.npmjs.org/package/safe-url-input-checker) (URL checker)
-- [`superagent`](https://www.npmjs.org/package/superagent) (HTTP request library)
-- [`whacko`](https://www.npmjs.org/package/whacko) (HTML parser)
+- [`express`](https://www.npmjs.org/package/express) (web framework)
+- [`express-rest`](https://www.npmjs.org/package/express-rest) (REST server framework)
+- [`socket.io`](https://www.npmjs.org/package/socket.io) (realtime application server and client)
+- [`safe-url-input-checker`](https://www.npmjs.org/package/safe-url-input-checker) (URL checker)
+- [`superagent`](https://www.npmjs.org/package/superagent) (HTTP request library)
+- [`whacko`](https://www.npmjs.org/package/whacko) (HTML parser)
---
@@ -161,14 +161,14 @@ Using [Jenkins](https://jenkins-ci.org/).
Necessary for development, testing and debugging:
-- [`mocha`](https://www.npmjs.org/package/mocha) (JavaScript test framework)
-- [`expect.js`](https://www.npmjs.org/package/expect.js) (assertion library)
+- [`mocha`](https://www.npmjs.org/package/mocha) (JavaScript test framework)
+- [`expect.js`](https://www.npmjs.org/package/expect.js) (assertion library)
--
Nice to have for debugging:
-- [`node-debug`](https://www.npmjs.org/package/debug)
+- [`node-debug`](https://www.npmjs.org/package/debug)
---
@@ -176,19 +176,19 @@ Nice to have for debugging:
`0.3.3` → `0.4.0`
-- Recursive validation of compound documents.
-- Better heuristics to detect and check dates, WG's, etc.
-- Better output, more detailed feedback to the user:
- - Colour-coding error/warning messages.
- - Informative messages can be displayed, too.
- - Ability to include markup in the output, eg hyperlinks.
-- Added a _summary of results_, with internal links.
-- Implemented a few new rules.
-- Some enhancements related to usability and design.
-- Extended the suite of tests (there are 63 individual tests now).
-- Bug-fixing.
-- Deployed on a dedicated _Node.js_ server.
-- Exposing a REST API to enable integration within the broader publication workflow [WIP].
+- Recursive validation of compound documents.
+- Better heuristics to detect and check dates, WG's, etc.
+- Better output, more detailed feedback to the user:
+ - Colour-coding error/warning messages.
+ - Informative messages can be displayed, too.
+ - Ability to include markup in the output, eg hyperlinks.
+- Added a _summary of results_, with internal links.
+- Implemented a few new rules.
+- Some enhancements related to usability and design.
+- Extended the suite of tests (there are 63 individual tests now).
+- Bug-fixing.
+- Deployed on a dedicated _Node.js_ server.
+- Exposing a REST API to enable integration within the broader publication workflow [WIP].
---
@@ -212,8 +212,8 @@ Nice to have for debugging:
You are encouraged to try this new checker, and especially to submit bug reports and suggestions.
-- General feedback about the publication workflow: [`public-pubrules-comments@w3.org`](public-pubrules-comments@w3.org)
-- Specific bugs or ideas about the pubrules checker: [`https://github.com/w3c/specberus/issues`](https://github.com/w3c/specberus/issues)
+- General feedback about the publication workflow: [`public-pubrules-comments@w3.org`](public-pubrules-comments@w3.org)
+- Specific bugs or ideas about the pubrules checker: [`https://github.com/w3c/specberus/issues`](https://github.com/w3c/specberus/issues)
---
@@ -231,15 +231,15 @@ The `#pubrules` channel on [irc.w3.org](https://irc.w3.org/) is a good place if
## Deployments for testing
-- Up to `v0.3.3-1`: [`https://pubrules.jit.su/`](https://pubrules.jit.su/).
-- From: `V0.4.0` onwards: [`https://www.w3.org/2014/10/pubrules/`](https://www.w3.org/2014/10/pubrules).
+- Up to `v0.3.3-1`: [`https://pubrules.jit.su/`](https://pubrules.jit.su/).
+- From: `V0.4.0` onwards: [`https://www.w3.org/2014/10/pubrules/`](https://www.w3.org/2014/10/pubrules).
---
# Who
-- [Robin](https://github.com/darobin).
-- [Denis](https://github.com/deniak).
-- [Guillaume](https://github.com/guibbs).
-- [Antonio](https://github.com/tripu).
-- You!?
+- [Robin](https://github.com/darobin).
+- [Denis](https://github.com/deniak).
+- [Guillaume](https://github.com/guibbs).
+- [Antonio](https://github.com/tripu).
+- You!?
diff --git a/eslint.config.cjs b/eslint.config.cjs
new file mode 100644
index 000000000..0642a565e
--- /dev/null
+++ b/eslint.config.cjs
@@ -0,0 +1,55 @@
+[
+ {
+ extends: ['airbnb-base', 'prettier'],
+ plugins: ['prettier'],
+ rules: {
+ 'prettier/prettier': 'error',
+ 'no-shadow': 'off',
+ 'consistent-return': 'warn',
+ 'no-param-reassign': 'off',
+ strict: 'off',
+ 'global-require': 'off',
+ 'no-restricted-syntax': 'warn',
+ 'guard-for-in': 'warn',
+ 'prefer-destructuring': 'warn',
+ 'import/prefer-default-export': 'off',
+ 'import/extensions': 'off',
+ },
+ ignores: ['doc/api'],
+ overrides: [
+ {
+ files: ['public/js/*.js'],
+ env: {
+ browser: true,
+ jquery: true,
+ es6: true,
+ },
+ rules: {},
+ },
+ {
+ files: ['app.js', 'lib/**/*.js', 'tools/**/*.js'],
+ plugins: ['node'],
+ parserOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ },
+ extends: ['plugin:node/recommended'],
+ },
+ {
+ files: ['test/**/*.js'],
+ env: {
+ mocha: true,
+ },
+ rules: {
+ 'node/no-unpublished-require': 'off',
+ },
+ plugins: ['node'],
+ extends: 'plugin:node/recommended',
+ parserOptions: {
+ ecmaVersion: 2022,
+ sourceType: 'module',
+ },
+ },
+ ],
+ },
+];
diff --git a/jsdoc.json b/jsdoc.json
deleted file mode 100644
index 562d93e68..000000000
--- a/jsdoc.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "opts": {
- "access": "all",
- "destination": "doc/api/",
- "encoding": "utf8",
- "recurse": true,
- "template": "node_modules/minami"
- }
-}
diff --git a/lib/api.js b/lib/api.js
index 3c12b1635..8170edd20 100644
--- a/lib/api.js
+++ b/lib/api.js
@@ -2,14 +2,13 @@
* REST API.
*/
-// Internal packages:
-const self = require('../package.json');
-const sink = require('./sink');
-const util = require('./util');
-const validator = require('./validator');
+import { fileTypeFromFile } from 'file-type';
+import { Sink } from './sink.js';
+import { buildJSONresult, importJSON, processParams } from './util.js';
+import { Specberus } from './validator.js';
+
+const { version } = importJSON('../package.json', import.meta.url);
-const { Sink } = sink;
-const { version } = self;
/**
* Send the JSON result to the client.
*
@@ -21,156 +20,193 @@ const { version } = self;
*/
const sendJSONresult = function (err, warn, inf, res, metadata) {
- const wrapper = util.buildJSONresult(err, warn, inf, metadata);
+ delete metadata.file;
+ const wrapper = buildJSONresult(err, warn, inf, metadata);
res.status(wrapper.success ? 200 : 400).json(wrapper);
};
/**
* Handle an API request: parse method and parameters, handle common errors and call the validator.
- *
- * @param {string} apiKey
*/
-const processRequest = apiKey => (req, res) => {
- if (req.path === '/api/version') {
+const processGet = () => async (req, res) => {
+ const path = req._parsedUrl.pathname;
+ if (path === '/api/version') {
res.status(200).send(version);
- } else if (req.path === '/api/metadata' || req.path === '/api/validate') {
- const validate = req.path === '/api/validate';
- let v;
- let v2;
- let options;
- let options2;
- let errors;
- let errors2;
- let warnings;
- let warnings2;
- let info;
- let info2;
- let handler;
- let handler2;
- try {
- options = util.processParams(req.query, undefined, {
- required: validate ? ['profile'] : [],
- forbidden: ['document', 'source'],
+ } else if (path === '/api/metadata' || path === '/api/validate') {
+ await processRequest(req, res, req.query);
+ } else {
+ res.status(400).send('Wrong API endpoint.');
+ }
+};
+
+const processPost = () => async (req, res) => {
+ const path = req._parsedUrl.pathname;
+
+ if (path === '/api/metadata' || path === '/api/validate') {
+ if (!req.files || !req.files.file) {
+ return res.send({
+ status: 500,
+ message: 'Missing file.',
});
+ }
+ try {
+ const { tempFilePath } = req.files.file;
+
+ // file must be an html file
+ const type = await fileTypeFromFile(tempFilePath);
+ if (type != null) {
+ return res.send({
+ status: 500,
+ message: 'Invalid file type. Please send an HTML file.',
+ });
+ }
+ const params = req.body || {};
+ params.file = tempFilePath;
+
+ await processRequest(req, res, params);
} catch (err) {
- return sendJSONresult([err.toString()], [], [], res, {});
+ res.status(500).send(err);
}
- if (validate && options.profile === 'auto') {
- errors = [];
- v = new validator.Specberus(apiKey);
- handler = new Sink(
- (...data) => {
- errors.push(Object.assign({}, ...data));
- },
- data => {
- if (errors.length > 0)
- sendJSONresult(errors, [], [], res, {});
- else {
- const meta = data.metadata;
- if (options.url) meta.url = options.url;
- else meta.file = options.file;
- try {
- options2 = util.processParams(meta, undefined, {
- allowUnknownParams: true,
- });
- } catch (err) {
- return sendJSONresult(
- [err.toString()],
- [],
- [],
- res,
- {}
- );
- }
- options2.validation = 'simple-validation';
- errors2 = [];
- warnings2 = [];
- info2 = [];
- v2 = new validator.Specberus(apiKey);
- handler2 = new Sink(
- (...data2) => {
- errors2.push(Object.assign({}, ...data2));
- },
- () => {
- sendJSONresult(
- errors2,
- warnings2,
- info2,
- res,
- meta
- );
- },
- (...data2) => {
- warnings2.push(Object.assign({}, ...data2));
- },
- (...data2) => {
- info2.push(Object.assign({}, ...data2));
- }
+ } else {
+ res.status(400).send('Wrong API endpoint.');
+ }
+};
+
+const processRequest = async (req, res, params) => {
+ const validate = req._parsedUrl.pathname === '/api/validate';
+ let v;
+ let v2;
+ let options;
+ let options2;
+ let errors;
+ let errors2;
+ let warnings;
+ let warnings2;
+ let info;
+ let info2;
+ let handler;
+ let handler2;
+
+ try {
+ options = await processParams(params, undefined, {
+ required: validate ? ['profile'] : [],
+ forbidden: ['document', 'source'],
+ });
+ } catch (err) {
+ return sendJSONresult([err.toString()], [], [], res, {});
+ }
+ if (validate && options.profile === 'auto') {
+ errors = [];
+ v = new Specberus();
+ handler = new Sink(
+ (...data) => {
+ errors.push(Object.assign({}, ...data));
+ },
+ async data => {
+ if (errors.length > 0) sendJSONresult(errors, [], [], res, {});
+ else {
+ const meta = data.metadata;
+ if (options.url) meta.url = options.url;
+ else meta.file = options.file;
+ try {
+ options2 = await processParams(meta, undefined, {
+ allowUnknownParams: true,
+ });
+ } catch (err) {
+ return sendJSONresult(
+ [err.toString()],
+ [],
+ [],
+ res,
+ {}
);
- options2.events = handler2;
- handler2.on('exception', data => {
+ }
+ options2.validation = 'simple-validation';
+ errors2 = [];
+ warnings2 = [];
+ info2 = [];
+ v2 = new Specberus();
+ handler2 = new Sink(
+ (...data2) => {
+ errors2.push(Object.assign({}, ...data2));
+ },
+ () => {
sendJSONresult(
- [data.message ? data.message : data],
- [],
- [],
+ errors2,
+ warnings2,
+ info2,
res,
- {}
+ meta
);
- });
- v2.validate(options2);
- }
- }
- );
- handler.on('exception', data => {
- sendJSONresult(
- [data.message ? data.message : data],
- [],
- [],
- res,
- {}
- );
- });
- options.events = handler;
- v.extractMetadata(options);
- } else {
- errors = [];
- warnings = [];
- info = [];
- v = new validator.Specberus(apiKey);
- handler = new Sink(
- (...data) => {
- errors.push(Object.assign({}, ...data));
- },
- data => {
- sendJSONresult(errors, warnings, info, res, data.metadata);
- },
- (...data) => {
- warnings.push(Object.assign({}, ...data));
- },
- (...data) => {
- info.push(Object.assign({}, ...data));
+ },
+ (...data2) => {
+ warnings2.push(Object.assign({}, ...data2));
+ },
+ (...data2) => {
+ info2.push(Object.assign({}, ...data2));
+ }
+ );
+ options2.events = handler2;
+ handler2.on('exception', data => {
+ sendJSONresult(
+ [data.message ? data.message : data],
+ [],
+ [],
+ res,
+ {}
+ );
+ });
+ v2.validate(options2);
}
+ }
+ );
+ handler.on('exception', data => {
+ sendJSONresult(
+ [data.message ? data.message : data],
+ [],
+ [],
+ res,
+ {}
);
- handler.on('exception', data => {
- sendJSONresult(
- [data.message ? data.message : data],
- [],
- [],
- res,
- {}
- );
- });
- options.events = handler;
- if (validate) v.validate(options);
- else v.extractMetadata(options);
- }
+ });
+ options.events = handler;
+ v.extractMetadata(options);
} else {
- res.status(400).send('Wrong API method.');
+ errors = [];
+ warnings = [];
+ info = [];
+ v = new Specberus();
+ handler = new Sink(
+ (...data) => {
+ errors.push(Object.assign({}, ...data));
+ },
+ data => {
+ sendJSONresult(errors, warnings, info, res, data.metadata);
+ },
+ (...data) => {
+ warnings.push(Object.assign({}, ...data));
+ },
+ (...data) => {
+ info.push(Object.assign({}, ...data));
+ }
+ );
+ handler.on('exception', data => {
+ sendJSONresult(
+ [data.message ? data.message : data],
+ [],
+ [],
+ res,
+ {}
+ );
+ });
+ options.events = handler;
+ if (validate) v.validate(options);
+ else v.extractMetadata(options);
}
};
-const setUp = function (app, apiKey) {
- app.get('/api/*', processRequest(apiKey));
-};
+export const setUp = function (app) {
+ app.get(/\/api\/.*/, processGet());
-exports.setUp = setUp;
+ app.post(/\/api\/.*/, processPost());
+};
diff --git a/lib/copyright-exceptions.json b/lib/copyright-exceptions.json
new file mode 100644
index 000000000..80ba27ca9
--- /dev/null
+++ b/lib/copyright-exceptions.json
@@ -0,0 +1,38 @@
+[
+ {
+ "specShortnames": [
+ "epub-overview-33",
+ "epub-33",
+ "epub-rs-33",
+ "epub-multi-rend-11",
+ "epub-tts-10",
+ "epub-ssv-11",
+ "epub-a11y-11",
+ "epub-a11y-tech-11",
+ "epub-aria-authoring-11",
+ "epubcfi",
+ "epubcfi-11"
+ ],
+ "copyright": "Copyright © 1999-@YEAR International Digital Publishing Forum and World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply."
+ },
+ {
+ "specShortnames": ["webrtc"],
+ "copyright": "Initial Author of this Specification was Ian Hickson, Google Inc., with the following copyright statement:
© Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA. You are granted a license to use, reproduce and create derivative works of this document. All subsequent changes since 26 July 2011 done by the W3C WebRTC Working Group are under the following Copyright:
Copyright © 2011-@YEAR World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply."
+ },
+ {
+ "specShortnames": ["security-privacy-questionnaire"],
+ "copyright": " To the extent possible under law, the editors have waived all copyright and related or neighboring rights to this work. This document is also made available under the W3C Software and Document License."
+ },
+ {
+ "specShortnames": ["mediacapture-streams"],
+ "copyright": "Initial Author of this Specification was Ian Hickson, Google Inc., with the following copyright statement:
© Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA. You are granted a license to use, reproduce and create derivative works of this document."
+ },
+ {
+ "specShortnames": ["sdw-bp"],
+ "copyright": "Copyright © @YEAR OGC & World Wide Web Consortium. W3C® liability, trademark, W3C and OGC document use rules apply."
+ },
+ {
+ "specShortnames": ["html-ruby-extensions"],
+ "copyright": "Copyright © @YEAR World Wide Web Consortium and WHATWG (Apple, Google, Mozilla, Microsoft). W3C® liability, and trademark rules apply. This work is licensed under a Creative Commons Attribution 4.0 International License."
+ }
+]
diff --git a/lib/exceptions.js b/lib/exceptions.js
index 5a5c0cf3b..24c1f69f8 100644
--- a/lib/exceptions.js
+++ b/lib/exceptions.js
@@ -1,4 +1,6 @@
-const records = require('./exceptions.json');
+import { importJSON } from './util.js';
+
+const records = importJSON('./exceptions.json', import.meta.url);
/**
* @param data
@@ -36,7 +38,7 @@ function findSet(shortname) {
return recursiveFindSet(shortname);
}
-const Exceptions = function () {};
+export const Exceptions = function () {};
Exceptions.prototype.has = function (shortname, rule, key, extra) {
const set = findSet(shortname);
@@ -50,7 +52,7 @@ Exceptions.prototype.has = function (shortname, rule, key, extra) {
(!exception.message &&
compareValue(extra.type, exception.type)) ||
(exception.message &&
- compareValue(extra.message, exception.message)))
+ new RegExp(exception.message).test(extra.message)))
) {
return true;
}
@@ -58,5 +60,3 @@ Exceptions.prototype.has = function (shortname, rule, key, extra) {
}
return false;
};
-
-exports.Exceptions = Exceptions;
diff --git a/lib/exceptions.json b/lib/exceptions.json
index 6f55235ab..2cba7e587 100644
--- a/lib/exceptions.json
+++ b/lib/exceptions.json
@@ -3,31 +3,26 @@
{
"rule": "validation.html",
"type": "noexistence-at-all",
- "message": "CSS: “caret-shape”: Property “caret-shape” doesn't exist."
+ "message": "^CSS: .*$"
},
{
"rule": "validation.html",
"message": "Bad value “publication” for attribute “rel” on element “link”: The string “publication” is not a registered keyword."
}
],
- "^webrtc$": [
- {
- "rule": "headers.copyright"
- }
- ],
- "^security-privacy-questionnaire$": [
+ "^audiobooks$": [
{
- "rule": "headers.copyright"
+ "rule": "sotd.candidate-review-end"
}
],
- "^mediacapture-streams$": [
+ "^did-core$": [
{
- "rule": "headers.copyright"
+ "rule": "heuristic.date-format"
}
],
- "^audiobooks$": [
+ "^privacy-principles$": [
{
- "rule": "sotd.candidate-review-end"
+ "rule": "headers.editor-participation"
}
],
"^pub-manifest$": [
@@ -35,9 +30,10 @@
"rule": "sotd.candidate-review-end"
}
],
- "^did-core$": [
+ "^webgpu|WGSL$": [
{
- "rule": "heuristic.date-format"
+ "rule": "headers.dl",
+ "message": "Implementation report"
}
]
}
diff --git a/lib/l10n-en_GB.js b/lib/l10n-en_GB.js
index 305862b6a..749fba402 100644
--- a/lib/l10n-en_GB.js
+++ b/lib/l10n-en_GB.js
@@ -1,5 +1,4 @@
-/* eslint-disable no-template-curly-in-string */
-exports.messages = {
+export const messages = {
// Generic
'generic.sotd.not-found':
'No “status of this document” section found. Some errors related to this one will be omitted from the output, but most likely this will cause further problems along the line.',
@@ -16,13 +15,13 @@ exports.messages = {
'Duplicate <hr>
at the end of, and right after, div.head
.',
// headers/w3c-state
'headers.w3c-state.no-w3c-state':
- 'Cannot find the <p id="w3c-state">
element for profile and date.
Please make sure the <p id="w3c-state">W3C @@Profile, DD Month Year</p>
element can be selected by document.getElementById("w3c-state")
;
If you are using bikeshed, please update to the latest version.',
+ 'Cannot find the <p id="w3c-state">
element for profile and date.
Please make sure the <p id="w3c-state">W3C @@Profile, DD Month YYYY</p>
element can be selected by document.getElementById("w3c-state")
;
If you are using bikeshed, please update to the latest version.',
'headers.w3c-state.bad-w3c-state':
- 'Incorrect w3c status element, <p id="w3c-state">
. <p id="w3c-state">W3C @@Profile, DD Month Year</p>
.',
+ 'Incorrect w3c status element, <p id="w3c-state">
. <p id="w3c-state">W3C @@Profile, DD Month YYYY</p>
.',
'headers.w3c-state.no-w3c-state-link':
'Cannot find the link of the W3C profile in id="w3c-state" element pointing to "https://www.w3.org/standards/types#xx".',
'headers.w3c-state.wrong-w3c-state-link':
- 'The link for text "${text}" should pointing to W3C profile "${expectedLink}", but the link found in the document is "${linkFound}".',
+ 'The link for text "${text}" should pointing to W3C profile "https://www.w3.org/standards/types/#${hash}", but the link found in the document is "${linkFound}".',
// headers/h2-toc
'headers.h2-toc.not-found':
'There is no table of contents inside a navigation element (<nav id="toc"> … <h2>Table of Contents</h2> … </nav>
).',
@@ -53,6 +52,22 @@ exports.messages = {
'headers.h1-title.not-found': 'Cannot find title or h1 of the document.',
'headers.h1-title.not-match':
"Content of title and h1 do not match. Text of title is '${titleText}' while h1 is (transformed into) '${h1Text}'.",
+ // headers/shortname
+ 'headers.shortname.shortname-lowercase':
+ 'The shortname of the document must in lowercase, but `${shortname}` is found.',
+ 'headers.shortname.this-latest-shortname':
+ 'Shortnames differ between This version (${thisShortname}) and Latest Versions (${latestShortname}).',
+ 'headers.shortname.this-previous-shortname':
+ 'Shortnames differ between This version (${thisShortname}) and Previous Versions (${previousShortname}).',
+ 'headers.shortname.history-syntax':
+ 'Wrong syntax for History link, please use the link "https://www.w3.org/standards/history/${shortname}/".',
+ 'headers.shortname.history-bad-previous':
+ 'This document contains a shortname change with previous shortname "${previousShortname}", but the it seems be not correct because "${url}" doesn\'t exist.',
+ 'headers.shortname.this-rescinds-shortname':
+ 'Shortnames differ between This Version (${thisShortname}) and Rescinds this Recommendation (${rescindsShortname}).',
+ 'headers.shortname.shortname-existed': 'FPWDs must use a new shortname',
+ 'headers.shortname.shortname-not-existed':
+ 'The ${status} should use an existing shortname.',
// headers/dl
'headers.dl.this-version': 'This Version is missing.',
'headers.dl.latest-version': 'Latest Version is missing.',
@@ -67,42 +82,14 @@ exports.messages = {
'Mismatch between document date and This Version link.',
'headers.dl.no-date': 'Cannot find document date.',
'headers.dl.this-syntax': 'Wrong syntax for This Version link.',
- 'headers.dl.this-latest-shortname':
- 'Shortnames differ between This version (${thisShortname}) and Latest Versions (${latestShortname}).',
'headers.dl.latest-syntax': 'Wrong syntax for Latest Version link.',
- 'headers.dl.this-previous-shortname':
- 'Shortnames differ between This version (${thisShortname}) and Previous Versions (${previousShortname}).',
- 'headers.dl.history-syntax':
- 'Wrong syntax for History link, please use the link "https://www.w3.org/standards/history/${shortname}".',
- 'headers.dl.history-bad-previous':
- 'This document contains a shortname change with previous shortname "${previousShortname}", but the it seems be not correct because "${url}" doesn\'t exist.',
'headers.dl.rescinds': 'Rescinds this Recommendation is missing.',
'headers.dl.rescinds-not-needed':
'Rescinds this Recommendation is included but does not seem necessary.',
'headers.dl.latest-rescinds-order':
'Latest Version must be before Rescinds this Recommendation.',
- 'headers.dl.this-rescinds-shortname':
- 'Shortnames differ between This Version (${thisShortname}) and Rescinds this Recommendation (${rescindsShortname}).',
'headers.dl.rescinds-syntax':
'Wrong syntax for Rescinds this Recommendation link.',
- 'headers.dl.obsoletes': 'Obsoletes this Recommendation is missing.',
- 'headers.dl.obsoletes-not-needed':
- 'Obsoletes this Recommendation is included but does not seem necessary.',
- 'headers.dl.latest-obsoletes-order':
- 'Latest Version must be before Obsoletes this Recommendation.',
- 'headers.dl.this-obsoletes-shortname':
- 'Shortnames differ between This Version and Obsoletes this Recommendation.',
- 'headers.dl.obsoletes-syntax':
- 'Wrong syntax for Obsoletes this Recommendation link.',
- 'headers.dl.supersedes': 'Supersedes this Recommendation is missing.',
- 'headers.dl.supersedes-not-needed':
- 'Supersedes this Recommendation is included but does not seem necessary.',
- 'headers.dl.latest-supersedes-order':
- 'Latest Version must be before Supersedes this Recommendation.',
- 'headers.dl.this-supersedes-shortname':
- 'Shortnames differ between This Version (${thisShortname}) and Supersedes this Recommendation (${obsoletesShortname}).',
- 'headers.dl.supersedes-syntax':
- 'Wrong syntax for Supersedes this Recommendation link.',
'headers.dl.implelink-should-be-https':
'Implementation report link should start with https://, current link in <dl>
is: `${link}`.',
'headers.dl.implelink-confirm-no':
@@ -112,6 +99,9 @@ exports.messages = {
'headers.dl.editor-not-found': 'Cannot find any editors for this document.',
'headers.dl.editor-missing-id':
'Missing `data-editor-id` attribute for editor(s): ${names}.',
+ // headers/editor-participation
+ 'headers.editor-participation.not-participating':
+ 'The user with id ${id} is not participating in the group producing this document.',
// headers/errata
'headers.errata.no-errata':
'"Errata:" not found in the headers (<div class="head">) of the document.',
@@ -130,8 +120,10 @@ exports.messages = {
"This document is published by multiple groups, but these groups don't use the same document license. Please ask the team contact for help.",
'headers.copyright.no-license-found':
'Pubrules fails to find the document license in the group charter. Please ask the team contact for help.',
+ 'headers.copyright.exception-no-html':
+ 'The copyright used in this document ${copyright}
does not match the requirements. The expected copyright is ${expected}
',
'headers.memsub-copyright.not-found':
- 'Missing link to the W3C document notice (https://www.w3.org/Consortium/Legal/copyright-documents).',
+ 'Missing link to the W3C document notice (https://www.w3.org/copyright/document-license/).',
// headers/github-repo
'headers.github-repo.no-feedback':
'Cannot find the "Feedback" <dt> in the headers of the document.',
@@ -175,9 +167,9 @@ exports.messages = {
'sotd.submission.no-submission-text': 'No member submission paragraph.',
'sotd.submission.link-text': "Missing link '${href}' with text '${text}'.",
'sotd.submission.no-sm-link':
- "Missing link 'https://www.w3.org/Submission/...' with text 'Submitting Members'.",
+ "Missing link 'https://www.w3.org/submissions/...' with text 'Submitting Members'.",
'sotd.submission.no-tc-link':
- "Missing link 'https://www.w3.org/Submission/...' with text 'W3C Team Comment'.",
+ "Missing link 'https://www.w3.org/submissions/...' with text 'W3C Team Comment'.",
// sotd/stability
'sotd.stability.no-stability':
'No stability warning paragraph. Expected text: ${expected}
',
@@ -186,7 +178,7 @@ exports.messages = {
'sotd.stability.no-cr-review':
'No wide review link for Candidate Recommendation',
'sotd.stability.wrong-cr-review-link':
- "Wrong wide review link for Candidate Recommendation, link should be 'https://www.w3.org/2021/Process-20211102/#dfn-wide-review'",
+ "Wrong wide review link for Candidate Recommendation, link should be 'https://www.w3.org/policies/process/20231103/#dfn-wide-review'",
'sotd.stability.no-licensing-link':
"Wrong royalty-free licensing link for CR and REC, link should be ${licensingLink} with text '${licensingText}'",
// sotd/review-end
@@ -256,7 +248,7 @@ exports.messages = {
'sotd.publish.url-not-match':
'The link for "${text}" in publisher paragraph in the Status of This Document is not correct. The right link is: <a href="${url}">${text}</a>
',
'sotd.publish.no-homepage-link':
- 'The homepage ${homepage} should appear in the “status of this document”',
+ 'The group homepage (regular expression: ${homepage}) should appear in the “status of this document”',
// sotd/rec-comment-end
'sotd.rec-comment-end.not-found':
'This W3C Recommendation has substantive changes or new features, cannot find comment end date no earlier than ${minimumEndDate}.',
@@ -269,10 +261,10 @@ exports.messages = {
'The governing process statement has been found multiple times.',
'sotd.process-document.not-found':
'The document must mention the governing process: ${process}',
- 'sotd.process-document.wrong-link':
- 'The link to the process rules specified in the document is erroneous.',
- 'sotd.process-document.wrong-process':
- "The document doesn't specify the right governing process: ${process}.",
+ 'sotd.process-document.previous-allowed':
+ 'The process document (${process}) you are using is deprecated.',
+ 'sotd.process-document.previous-not-allowed':
+ 'The process document (${process}) you are using is no longer allowed.',
// sotd/ac-review
'sotd.ac-review.found':
'Found a link to an online questionnaire: ${link}. Does this link provide access to the review form?',
@@ -289,7 +281,7 @@ exports.messages = {
'Deliverer not found. An attribute data-deliverer
must be in the SotD',
// sotd/new-features
'sotd.new-features.no-link':
- 'The paragraph on future updates to the recommendation should include a link to the new features: https://www.w3.org/2021/Process-20211102/#allow-new-features',
+ 'The paragraph on future updates to the recommendation should include a link to the new features: https://www.w3.org/policies/process/20231103/#allow-new-features',
'sotd.new-features.no-warning':
"If it is the intention to incorporate new features in future updates of the Recommendation, please make sure to identify the document as intending to allow new features.",
// structure/canonical
@@ -331,9 +323,10 @@ exports.messages = {
'Make sure spec illustrations/tables fit within an A4 sheet of paper when printed; use class overlarge
if needed to improve experience on-screen for things that overflow.',
// structure/neutral
'structure.neutral.neutral':
- 'Please make sure the expressions in document are neutral, "${words}" found in document. Check W3C Manual of Style for more information.',
+ 'Please make sure the expressions in document are neutral, "${words}" found in document. Check W3C Manual of Style for more information.',
// style/sheet
- 'style.sheet.last': 'W3C TR style sheet must be last.',
+ 'style.sheet.last':
+ 'W3C TR style sheet must be last. Only the dark mode stylesheet may follow it.',
'style.sheet.not-found': 'Missing W3C TR style sheet "${url}".',
// style/meta
'style.meta.not-found':
@@ -371,6 +364,8 @@ exports.messages = {
'The publication date of this document must be set to today (UTC).',
'echidna.todays-date.date-not-detected':
'Could not find a publication date in the document.',
+ 'echidna.deliverer-change.deliverer-changed':
+ 'The list of groups producing this document has changed since the previous version',
// Metadata:
'metadata.deliverers': false,
'metadata.dl.latest-not-found':
diff --git a/lib/l10n.js b/lib/l10n.js
index 98fef7324..b0534debd 100644
--- a/lib/l10n.js
+++ b/lib/l10n.js
@@ -3,10 +3,13 @@
*/
// Internal packages:
-const originalRules = require('./rules.json');
-const english = require('./l10n-en_GB');
+import { messages } from './l10n-en_GB.js';
+import { importJSON } from './util.js';
+
+const originalRules = importJSON('./rules.json', import.meta.url);
+
// Constants:
-const enGB = english.messages;
+const enGB = messages;
// Variables:
let lang;
@@ -24,7 +27,10 @@ for (const t in originalRules)
* @param {string} language - locale, expressed as a string, eg en_GB
.
*/
-exports.setLanguage = function (language) {
+/**
+ * @param language
+ */
+export function setLanguage(language) {
if (!language)
throw new Error(
'l10n.setLanguage() invoked without passing a language code as parameter'
@@ -34,7 +40,7 @@ exports.setLanguage = function (language) {
throw new Error(
'Language code passed to l10n.setLanguage() is not valid'
);
-};
+}
/**
* @param profileCode
@@ -42,7 +48,7 @@ exports.setLanguage = function (language) {
* @param key
* @param extra
*/
-exports.assembleData = function (profileCode, rule, key, extra) {
+export function assembleData(profileCode, rule, key, extra) {
const messageData = {};
// Corner case: if the profile is unknown, let's assume 'WD' (most common).
const profile = profileCode ? profileCode.replace('-Echidna', '') : 'WD';
@@ -81,11 +87,17 @@ to let developers examine the problem (you can submit it as is; no additional in
messageData.profile = profile;
return messageData;
}
-};
+}
-exports.message = function (profileCode, rule, key, extra) {
+/**
+ * @param profileCode
+ * @param rule
+ * @param key
+ * @param extra
+ */
+export function message(profileCode, rule, key, extra) {
const result = {};
- const messageData = exports.assembleData(profileCode, rule, key, extra);
+ const messageData = assembleData(profileCode, rule, key, extra);
if (!messageData) return;
result.message =
messageData.message && messageData.message.length
@@ -138,7 +150,6 @@ exports.message = function (profileCode, rule, key, extra) {
);
}
result.message = result.message.replace(
- // eslint-disable-next-line prefer-regex-literals
new RegExp(`@{year}`, 'g'),
new Date().getFullYear()
);
@@ -158,4 +169,4 @@ ${selector}&labels=from-template">file this issue on GitHub to help develope
if (messageData.additionalMessage)
result.message += messageData.additionalMessage;
return result;
-};
+}
diff --git a/lib/profiles/SUBM.js b/lib/profiles/SUBM.js
index d00ed5274..0fba908b8 100644
--- a/lib/profiles/SUBM.js
+++ b/lib/profiles/SUBM.js
@@ -1,11 +1,8 @@
// Base profile for all Submissions
+import * as submLogo from '../rules/headers/subm-logo.js';
+import { rules as baseRules } from './base.js';
+import { insertAfter } from './profileUtil.js';
-exports.name = 'Submission';
+export const name = 'Submission';
-const profileUtil = require('./profileUtil');
-
-exports.rules = profileUtil.insertAfter(
- require('./base').rules,
- 'headers.logo',
- require('../rules/headers/subm-logo')
-);
+export const rules = insertAfter(baseRules, 'headers.logo', submLogo);
diff --git a/lib/profiles/SUBM/MEM-SUBM.js b/lib/profiles/SUBM/MEM-SUBM.js
index 681238a72..cb2030097 100644
--- a/lib/profiles/SUBM/MEM-SUBM.js
+++ b/lib/profiles/SUBM/MEM-SUBM.js
@@ -1,22 +1,28 @@
-exports.name = 'MEM-SUBM';
-exports.config = {
+import * as memsubCopyright from '../../rules/headers/memsub-copyright.js';
+import * as submission from '../../rules/sotd/submission.js';
+import { insertAfter, removeRules } from '../profileUtil.js';
+import { rules as baseRules } from '../SUBM.js';
+
+export const name = 'MEM-SUBM';
+export const config = {
status: 'SUBM',
longStatus: 'Member Submission',
styleSheet: 'W3C-Member-SUBM',
submissionType: 'member',
};
-const profileUtil = require('../profileUtil');
-let rules = profileUtil.insertAfter(
- require('../SUBM').rules,
+const rulesWithAdditionalHeaderRule = insertAfter(
+ baseRules,
'headers.w3c-state',
- [require('../../rules/headers/memsub-copyright')]
+ [memsubCopyright]
+);
+const rulesWithoutEditorParticipationRule = removeRules(
+ rulesWithAdditionalHeaderRule,
+ ['headers.editor-participation']
);
-rules = profileUtil.insertAfter(
- rules,
+export const rules = insertAfter(
+ rulesWithoutEditorParticipationRule,
'sotd.supersedable',
- require('../../rules/sotd/submission')
+ submission
);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR.js b/lib/profiles/TR.js
index 2b3c4be2e..10b59e421 100644
--- a/lib/profiles/TR.js
+++ b/lib/profiles/TR.js
@@ -1,20 +1,23 @@
-// base profile for all things TR
-exports.name = 'TR';
-
-const profileUtil = require('./profileUtil');
-const base = require('./base').rules;
+import * as copyright from '../rules/headers/copyright.js';
+import * as githubRepo from '../rules/headers/github-repo.js';
+import * as charter from '../rules/sotd/charter.js';
+import * as pp from '../rules/sotd/pp.js';
+import * as processDocument from '../rules/sotd/process-document.js';
+import * as publish from '../rules/sotd/publish.js';
+import * as stability from '../rules/sotd/stability.js';
+import { rules as base } from './base.js';
+import { insertAfter } from './profileUtil.js';
-let rules = profileUtil.insertAfter(base, 'headers.w3c-state', [
- require('../rules/headers/github-repo'),
- require('../rules/headers/copyright'),
-]);
+// base profile for all things TR
+export const name = 'TR';
-rules = profileUtil.insertAfter(rules, 'sotd.supersedable', [
- require('../rules/sotd/stability'),
- require('../rules/sotd/publish'),
- require('../rules/sotd/pp'),
- require('../rules/sotd/charter'),
- require('../rules/sotd/process-document'),
+const rulesWithAdditionalHeaderRule = insertAfter(base, 'headers.w3c-state', [
+ githubRepo,
+ copyright,
]);
-exports.rules = rules;
+export const rules = insertAfter(
+ rulesWithAdditionalHeaderRule,
+ 'sotd.supersedable',
+ [stability, publish, pp, charter, processDocument]
+);
diff --git a/lib/profiles/TR/Note/DNOTE-Echidna.js b/lib/profiles/TR/Note/DNOTE-Echidna.js
index f937a0fd4..122ff9d23 100644
--- a/lib/profiles/TR/Note/DNOTE-Echidna.js
+++ b/lib/profiles/TR/Note/DNOTE-Echidna.js
@@ -1,13 +1,14 @@
// TODO: merge all Echidna files.
-exports.name = 'DNOTE-Echidna';
-const base = require('./DNOTE');
-exports.config = base.config;
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './DNOTE.js';
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/echidna/todays-date'),
-]);
+export const name = 'DNOTE-Echidna';
+export const config = baseConfig;
-exports.rules = rules;
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
+]);
diff --git a/lib/profiles/TR/Note/DNOTE.js b/lib/profiles/TR/Note/DNOTE.js
index a1fad9c26..e2a2bf3f3 100644
--- a/lib/profiles/TR/Note/DNOTE.js
+++ b/lib/profiles/TR/Note/DNOTE.js
@@ -1,18 +1,13 @@
-exports.name = 'DNOTE';
-const base = require('./note-base');
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './note-base.js';
-// customize config
-const config = {
+export const name = 'DNOTE';
+export const config = {
+ ...baseConfig,
status: 'DNOTE',
longStatus: 'Group Draft Note',
styleSheet: 'W3C-DNOTE',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.pp', [
- require('../../../rules/sotd/draft-stability'),
-]);
-
-exports.rules = rules;
+export const rules = insertAfter(baseRules, 'sotd.pp', [draftStability]);
diff --git a/lib/profiles/TR/Note/NOTE-Echidna.js b/lib/profiles/TR/Note/NOTE-Echidna.js
index 9afab841f..4f0c9e412 100644
--- a/lib/profiles/TR/Note/NOTE-Echidna.js
+++ b/lib/profiles/TR/Note/NOTE-Echidna.js
@@ -1,9 +1,12 @@
-exports.name = 'NOTE-Echidna';
-const base = require('./NOTE');
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './NOTE.js';
-exports.config = base.config;
+export const name = 'NOTE-Echidna';
+export const config = baseConfig;
-const profileUtil = require('../../profileUtil');
-exports.rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/echidna/todays-date'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
]);
diff --git a/lib/profiles/TR/Note/NOTE.js b/lib/profiles/TR/Note/NOTE.js
index 6340878d0..1eb9e8282 100644
--- a/lib/profiles/TR/Note/NOTE.js
+++ b/lib/profiles/TR/Note/NOTE.js
@@ -1,12 +1,11 @@
-exports.name = 'NOTE';
-const base = require('./note-base');
+import { config as baseConfig, rules as baseRules } from './note-base.js';
-// customize config
-const config = {
+export const name = 'NOTE';
+export const config = {
+ ...baseConfig,
status: 'NOTE',
longStatus: 'Group Note',
styleSheet: 'W3C-NOTE',
};
-exports.config = { ...base.config, ...config };
-exports.rules = base.rules;
+export const rules = baseRules;
diff --git a/lib/profiles/TR/Note/STMT.js b/lib/profiles/TR/Note/STMT.js
index c2aa273dd..8b1d88ffa 100644
--- a/lib/profiles/TR/Note/STMT.js
+++ b/lib/profiles/TR/Note/STMT.js
@@ -1,12 +1,10 @@
-exports.name = 'STMT';
-const base = require('./note-base');
+import { config as baseConfig, rules as baseRules } from './note-base.js';
-// customize config
-const config = {
+export const name = 'STMT';
+export const config = {
+ ...baseConfig,
status: 'STMT',
longStatus: 'Statement',
styleSheet: 'W3C-STMT',
};
-exports.config = { ...base.config, ...config };
-
-exports.rules = base.rules;
+export const rules = baseRules;
diff --git a/lib/profiles/TR/Note/note-base.js b/lib/profiles/TR/Note/note-base.js
index 3302dc31f..53c706a48 100644
--- a/lib/profiles/TR/Note/note-base.js
+++ b/lib/profiles/TR/Note/note-base.js
@@ -1,13 +1,9 @@
-exports.config = {
+import * as deliverNote from '../../../rules/sotd/deliverer-note.js';
+import { insertAfter } from '../../profileUtil.js';
+import { rules as baseRules } from '../../TR.js';
+
+export const config = {
track: 'Note',
};
-// customize rules
-const base = require('../../TR');
-const profileUtil = require('../../profileUtil');
-
-const rules = profileUtil.insertAfter(base.rules, 'sotd.pp', [
- require('../../../rules/sotd/deliverer-note'),
-]);
-
-exports.rules = rules;
+export const rules = insertAfter(baseRules, 'sotd.pp', [deliverNote]);
diff --git a/lib/profiles/TR/Recommendation/CR-Echidna.js b/lib/profiles/TR/Recommendation/CR-Echidna.js
index e8dc85c6b..9477ae714 100644
--- a/lib/profiles/TR/Recommendation/CR-Echidna.js
+++ b/lib/profiles/TR/Recommendation/CR-Echidna.js
@@ -1,12 +1,12 @@
-exports.name = 'CR-Echidna';
-const base = require('./CR');
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { rules as baseRules } from './CR.js';
-exports.config = base.config;
+export const name = 'CR-Echidna';
+export { config } from './CR.js';
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/echidna/todays-date'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/CR.js b/lib/profiles/TR/Recommendation/CR.js
index b0a9fcb18..32aa4cab6 100644
--- a/lib/profiles/TR/Recommendation/CR.js
+++ b/lib/profiles/TR/Recommendation/CR.js
@@ -1,19 +1,19 @@
-exports.name = 'CR';
-const base = require('./recommendation-base');
+import * as candidateReviewEnd from '../../../rules/sotd/candidate-review-end.js';
+import { insertAfter } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-// customize config
-const config = {
+export const name = 'CR';
+export const config = {
+ ...baseConfig,
status: 'CR',
longStatus: 'Candidate Recommendation',
crType: 'Snapshot',
styleSheet: 'W3C-CR',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/sotd/candidate-review-end'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ candidateReviewEnd,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/CRD-Echidna.js b/lib/profiles/TR/Recommendation/CRD-Echidna.js
index c65c53ba7..70bc630ab 100644
--- a/lib/profiles/TR/Recommendation/CRD-Echidna.js
+++ b/lib/profiles/TR/Recommendation/CRD-Echidna.js
@@ -1,10 +1,12 @@
-exports.name = 'CRD-Echidna';
-const base = require('./CRD');
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { rules as baseRules } from './CRD.js';
-exports.config = base.config;
+export { config } from './CRD.js';
+export const name = 'CRD-Echidna';
-// customize rules
-const profileUtil = require('../../profileUtil');
-exports.rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/echidna/todays-date'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
]);
diff --git a/lib/profiles/TR/Recommendation/CRD.js b/lib/profiles/TR/Recommendation/CRD.js
index d64c4c6e5..f7df75012 100644
--- a/lib/profiles/TR/Recommendation/CRD.js
+++ b/lib/profiles/TR/Recommendation/CRD.js
@@ -1,19 +1,17 @@
-exports.name = 'CRD';
-const base = require('./recommendation-base');
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import { insertAfter } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-// customize config
-const config = {
+export const name = 'CRD';
+export const config = {
+ ...baseConfig,
status: 'CRD',
longStatus: 'Candidate Recommendation',
crType: 'Draft',
styleSheet: 'W3C-CRD',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.pp', [
- require('../../../rules/sotd/draft-stability'),
-]);
-
-exports.rules = rules;
+export const rules = insertAfter(baseRules, 'sotd.pp', [draftStability]);
diff --git a/lib/profiles/TR/Recommendation/DISC.js b/lib/profiles/TR/Recommendation/DISC.js
index f6baf7886..982bdaf7a 100644
--- a/lib/profiles/TR/Recommendation/DISC.js
+++ b/lib/profiles/TR/Recommendation/DISC.js
@@ -1,20 +1,19 @@
-exports.name = 'DISC';
-const base = require('./recommendation-base');
+// customize rules
+import { removeRules } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-// customize config
-const config = {
+export const name = 'DISC';
+export const config = {
+ ...baseConfig,
status: 'DISC',
longStatus: 'Discontinued Draft',
styleSheet: 'W3C-DISC',
};
-exports.config = { ...base.config, ...config };
-
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.removeRules(base.rules, [
+export const rules = removeRules(baseRules, [
'structure.security-privacy',
'sotd.diff',
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/FPWD.js b/lib/profiles/TR/Recommendation/FPWD.js
index 097b149f3..61e6709e6 100644
--- a/lib/profiles/TR/Recommendation/FPWD.js
+++ b/lib/profiles/TR/Recommendation/FPWD.js
@@ -1,23 +1,21 @@
-exports.name = 'FPWD';
-const base = require('./recommendation-base');
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import { insertAfter, removeRules } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-// customize config
-const config = {
+export const name = 'FPWD';
+export const config = {
+ ...baseConfig,
status: 'WD',
longStatus: 'First Public Working Draft',
styleSheet: 'W3C-WD',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-let rules = profileUtil.insertAfter(base.rules, 'sotd.pp', [
- require('../../../rules/sotd/draft-stability'),
-]);
+const rulesWithOthers = insertAfter(baseRules, 'sotd.pp', [draftStability]);
-rules = profileUtil.removeRules(rules, [
+export const rules = removeRules(rulesWithOthers, [
'structure.security-privacy',
'sotd.diff',
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/PR.js b/lib/profiles/TR/Recommendation/PR.js
index 9d983cddf..6d4c99ff7 100644
--- a/lib/profiles/TR/Recommendation/PR.js
+++ b/lib/profiles/TR/Recommendation/PR.js
@@ -1,21 +1,24 @@
-exports.name = 'PR';
-const base = require('./recommendation-base');
+import * as acReview from '../../../rules/sotd/ac-review.js';
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import * as newFeatures from '../../../rules/sotd/new-features.js';
+import * as reviewEnd from '../../../rules/sotd/review-end.js';
+import { insertAfter } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-// customize config
-const config = {
+export const name = 'PR';
+export const config = {
+ ...baseConfig,
status: 'PR',
longStatus: 'Proposed Recommendation',
styleSheet: 'W3C-PR',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/sotd/ac-review'),
- require('../../../rules/sotd/review-end'),
- require('../../../rules/sotd/new-features'),
- require('../../../rules/sotd/draft-stability'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ acReview,
+ reviewEnd,
+ newFeatures,
+ draftStability,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/REC-Echidna.js b/lib/profiles/TR/Recommendation/REC-Echidna.js
new file mode 100644
index 000000000..22ba035a7
--- /dev/null
+++ b/lib/profiles/TR/Recommendation/REC-Echidna.js
@@ -0,0 +1,12 @@
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { rules as baseRules } from './REC.js';
+
+export { config } from './REC.js';
+export const name = 'REC-Echidna';
+
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
+]);
diff --git a/lib/profiles/TR/Recommendation/REC-RSCND.js b/lib/profiles/TR/Recommendation/REC-RSCND.js
index e9a28d263..ed887eae5 100644
--- a/lib/profiles/TR/Recommendation/REC-RSCND.js
+++ b/lib/profiles/TR/Recommendation/REC-RSCND.js
@@ -1,22 +1,21 @@
-exports.name = 'REC-RSCND';
-const base = require('./REC');
+import * as obslRescind from '../../../rules/sotd/obsl-rescind.js';
+import { insertAfter, removeRules } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './REC.js';
-// customize config
-const config = {
+export const name = 'REC-RSCND';
+export const config = {
+ ...baseConfig,
status: 'REC',
longStatus: 'Rescinded Recommendation',
rescinds: true,
styleSheet: 'W3C-RSCND',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-let rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/sotd/obsl-rescind'),
+const rulesWithObslRescind = insertAfter(baseRules, 'sotd.process-document', [
+ obslRescind,
]);
-rules = profileUtil.removeRules(rules, [
+export const rules = removeRules(rulesWithObslRescind, [
'headers.errata',
'sotd.stability',
'sotd.publish',
@@ -28,5 +27,3 @@ rules = profileUtil.removeRules(rules, [
'sotd.new-features',
'sotd.deployment',
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/REC.js b/lib/profiles/TR/Recommendation/REC.js
index 455c744fb..a76b0de49 100644
--- a/lib/profiles/TR/Recommendation/REC.js
+++ b/lib/profiles/TR/Recommendation/REC.js
@@ -1,26 +1,31 @@
-exports.name = 'REC';
-const base = require('./recommendation-base');
+import * as errata from '../../../rules/headers/errata.js';
+import * as deployment from '../../../rules/sotd/deployment.js';
+import * as newFeatures from '../../../rules/sotd/new-features.js';
+import * as recAddition from '../../../rules/sotd/rec-addition.js';
+import * as recCommentEnd from '../../../rules/sotd/rec-comment-end.js';
+import { insertAfter, removeRules } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-// customize config
-const config = {
+export const name = 'REC';
+export const config = {
+ ...baseConfig,
status: 'REC',
longStatus: 'Recommendation',
styleSheet: 'W3C-REC',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-let rules = profileUtil.insertAfter(base.rules, 'headers.dl', [
- require('../../../rules/headers/errata'),
-]);
-rules = profileUtil.insertAfter(rules, 'sotd.supersedable', [
- require('../../../rules/sotd/rec-addition'),
- require('../../../rules/sotd/rec-comment-end'),
- require('../../../rules/sotd/new-features'),
- require('../../../rules/sotd/deployment'),
-]);
+const rulesWithErrata = insertAfter(baseRules, 'headers.dl', [errata]);
-rules = profileUtil.removeRules(rules, ['structure.security-privacy']);
+const rulesWithOthers = insertAfter(rulesWithErrata, 'sotd.supersedable', [
+ recAddition,
+ recCommentEnd,
+ newFeatures,
+ deployment,
+]);
-exports.rules = rules;
+export const rules = removeRules(rulesWithOthers, [
+ 'structure.security-privacy',
+]);
diff --git a/lib/profiles/TR/Recommendation/WD-Echidna.js b/lib/profiles/TR/Recommendation/WD-Echidna.js
index e9d56a7ad..41fd5e088 100644
--- a/lib/profiles/TR/Recommendation/WD-Echidna.js
+++ b/lib/profiles/TR/Recommendation/WD-Echidna.js
@@ -1,11 +1,12 @@
-// Working Draft profile
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { rules as baseRules } from './WD.js';
-exports.name = 'WD-Echidna';
-const base = require('./WD');
+export const name = 'WD-Echidna';
+export { config } from './WD.js';
-exports.config = base.config;
-
-const profileUtil = require('../../profileUtil');
-exports.rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/echidna/todays-date'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
]);
diff --git a/lib/profiles/TR/Recommendation/WD.js b/lib/profiles/TR/Recommendation/WD.js
index 19e9aa7cb..3c3ed7224 100644
--- a/lib/profiles/TR/Recommendation/WD.js
+++ b/lib/profiles/TR/Recommendation/WD.js
@@ -1,20 +1,18 @@
-// Working Draft profile
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import { insertAfter } from '../../profileUtil.js';
+import {
+ config as baseConfig,
+ rules as baseRules,
+} from './recommendation-base.js';
-exports.name = 'WD';
-const base = require('./recommendation-base');
-
-// customize config
-const config = {
+export const name = 'WD';
+export const config = {
+ ...baseConfig,
status: 'WD',
longStatus: 'Working Draft',
styleSheet: 'W3C-WD',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.supersedable', [
- require('../../../rules/sotd/draft-stability'),
+export const rules = insertAfter(baseRules, 'sotd.supersedable', [
+ draftStability,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Recommendation/recommendation-base.js b/lib/profiles/TR/Recommendation/recommendation-base.js
index 9ec5fa909..268501810 100644
--- a/lib/profiles/TR/Recommendation/recommendation-base.js
+++ b/lib/profiles/TR/Recommendation/recommendation-base.js
@@ -1,14 +1,13 @@
-exports.config = {
+import * as diff from '../../../rules/sotd/diff.js';
+import * as securityPrivacy from '../../../rules/structure/security-privacy.js';
+import { insertAfter } from '../../profileUtil.js';
+import { rules as baseRules } from '../../TR.js';
+
+export const config = {
track: 'Recommendation',
};
-// customize rules
-const base = require('../../TR');
-
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.supersedable', [
- require('../../../rules/sotd/diff'),
- require('../../../rules/structure/security-privacy'),
+export const rules = insertAfter(baseRules, 'sotd.supersedable', [
+ diff,
+ securityPrivacy,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Registry/CRY.js b/lib/profiles/TR/Registry/CRY.js
index c0f399301..3030bb2da 100644
--- a/lib/profiles/TR/Registry/CRY.js
+++ b/lib/profiles/TR/Registry/CRY.js
@@ -1,19 +1,17 @@
-exports.name = 'CRY';
-const base = require('./registry-base');
+// customize rules
+import * as candidateReviewEnd from '../../../rules/sotd/candidate-review-end.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './registry-base.js';
-// customize config
-const config = {
+export const name = 'CRY';
+export const config = {
+ ...baseConfig,
status: 'CRY',
longStatus: 'Candidate Registry',
cryType: 'Snapshot',
styleSheet: 'W3C-CRY',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.process-document', [
- require('../../../rules/sotd/candidate-review-end'),
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ candidateReviewEnd,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Registry/CRYD.js b/lib/profiles/TR/Registry/CRYD.js
index 55309d15d..2f75af88b 100644
--- a/lib/profiles/TR/Registry/CRYD.js
+++ b/lib/profiles/TR/Registry/CRYD.js
@@ -1,20 +1,16 @@
-exports.name = 'CRYD';
-const base = require('./registry-base');
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './registry-base.js';
-// customize config
-const config = {
+export const name = 'CRYD';
+export const config = {
+ ...baseConfig,
status: 'CRYD',
longStatus: 'Candidate Registry',
cryType: 'Draft',
styleSheet: 'W3C-CRYD',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-
-const rules = profileUtil.insertAfter(base.rules, 'sotd.supersedable', [
- require('../../../rules/sotd/draft-stability'),
+export const rules = insertAfter(baseRules, 'sotd.supersedable', [
+ draftStability,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Registry/DRY-Echidna.js b/lib/profiles/TR/Registry/DRY-Echidna.js
new file mode 100644
index 000000000..facf893b4
--- /dev/null
+++ b/lib/profiles/TR/Registry/DRY-Echidna.js
@@ -0,0 +1,14 @@
+// TODO: merge all Echidna files.
+
+import * as todaysDate from '../../../rules/echidna/todays-date.js';
+import * as delivererChange from '../../../rules/echidna/deliverer-change.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './DRY.js';
+
+export const name = 'DRY-Echidna';
+export const config = baseConfig;
+
+export const rules = insertAfter(baseRules, 'sotd.process-document', [
+ todaysDate,
+ delivererChange,
+]);
diff --git a/lib/profiles/TR/Registry/DRY.js b/lib/profiles/TR/Registry/DRY.js
index 5a48c8e2e..85cc46512 100644
--- a/lib/profiles/TR/Registry/DRY.js
+++ b/lib/profiles/TR/Registry/DRY.js
@@ -1,18 +1,15 @@
-exports.name = 'DRY';
-const base = require('./registry-base');
+import * as draftStability from '../../../rules/sotd/draft-stability.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './registry-base.js';
-// customize config
-const config = {
+export const name = 'DRY';
+export const config = {
+ ...baseConfig,
status: 'DRY',
longStatus: 'Draft Registry',
styleSheet: 'W3C-DRY',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.supersedable', [
- require('../../../rules/sotd/draft-stability'),
+export const rules = insertAfter(baseRules, 'sotd.supersedable', [
+ draftStability,
]);
-
-exports.rules = rules;
diff --git a/lib/profiles/TR/Registry/RY.js b/lib/profiles/TR/Registry/RY.js
index 42c51d40a..9495a6d1c 100644
--- a/lib/profiles/TR/Registry/RY.js
+++ b/lib/profiles/TR/Registry/RY.js
@@ -1,18 +1,13 @@
-exports.name = 'RY';
-const base = require('./registry-base');
+import * as usage from '../../../rules/sotd/usage.js';
+import { insertAfter } from '../../profileUtil.js';
+import { config as baseConfig, rules as baseRules } from './registry-base.js';
-// customize config
-const config = {
+export const name = 'RY';
+export const config = {
+ ...baseConfig,
status: 'RY',
longStatus: 'Registry',
styleSheet: 'W3C-RY',
};
-exports.config = { ...base.config, ...config };
-// customize rules
-const profileUtil = require('../../profileUtil');
-const rules = profileUtil.insertAfter(base.rules, 'sotd.supersedable', [
- require('../../../rules/sotd/usage'),
-]);
-
-exports.rules = rules;
+export const rules = insertAfter(baseRules, 'sotd.supersedable', [usage]);
diff --git a/lib/profiles/TR/Registry/registry-base.js b/lib/profiles/TR/Registry/registry-base.js
index c79b908d5..5fde85a8c 100644
--- a/lib/profiles/TR/Registry/registry-base.js
+++ b/lib/profiles/TR/Registry/registry-base.js
@@ -1,7 +1,5 @@
-exports.config = {
+export const config = {
track: 'Registry',
};
-const base = require('../../TR');
-
-exports.rules = base.rules;
+export { rules } from '../../TR.js';
diff --git a/lib/profiles/base.js b/lib/profiles/base.js
index 2db48f4c0..253d9dcb6 100644
--- a/lib/profiles/base.js
+++ b/lib/profiles/base.js
@@ -1,39 +1,66 @@
// Base profile for all W3C published documents
-exports.name = 'Base';
+import * as detailsSummary from '../rules/headers/details-summary.js';
+import * as divHead from '../rules/headers/div-head.js';
+import * as dl from '../rules/headers/dl.js';
+import * as editorParticipation from '../rules/headers/editor-participation.js';
+import * as shortname from '../rules/headers/shortname.js';
+import * as h1Title from '../rules/headers/h1-title.js';
+import * as h2Toc from '../rules/headers/h2-toc.js';
+import * as hr from '../rules/headers/hr.js';
+import * as logo from '../rules/headers/logo.js';
+import * as olToc from '../rules/headers/ol-toc.js';
+import * as secno from '../rules/headers/secno.js';
+import * as w3cState from '../rules/headers/w3c-state.js';
+import * as dateFormat from '../rules/heuristic/date-format.js';
+import * as compound from '../rules/links/compound.js';
+/* import * as internal from '../rules/links/internal.js'; */
+import * as linkchecker from '../rules/links/linkchecker.js';
+import * as reliability from '../rules/links/reliability.js';
+import * as supersedable from '../rules/sotd/supersedable.js';
+import * as canonical from '../rules/structure/canonical.js';
+import * as displayOnly from '../rules/structure/display-only.js';
+import * as h2 from '../rules/structure/h2.js';
+import * as structureName from '../rules/structure/name.js';
+import * as neutral from '../rules/structure/neutral.js';
+import * as sectionIds from '../rules/structure/section-ids.js';
+import * as backToTop from '../rules/style/back-to-top.js';
+import * as bodyTocSidebar from '../rules/style/body-toc-sidebar.js';
+import * as meta from '../rules/style/meta.js';
+import * as script from '../rules/style/script.js';
+import * as sheet from '../rules/style/sheet.js';
+import * as html from '../rules/validation/html.js';
+import * as wcag from '../rules/validation/wcag.js';
-exports.rules = [
- require('../rules/headers/div-head'),
- require('../rules/headers/hr'),
- require('../rules/headers/logo'),
- require('../rules/headers/h1-title'),
- require('../rules/headers/details-summary'),
- require('../rules/headers/dl'),
- require('../rules/headers/w3c-state'),
- require('../rules/headers/h2-toc'),
- require('../rules/headers/ol-toc'),
- require('../rules/headers/secno'),
-
- require('../rules/style/sheet'),
- require('../rules/style/meta'),
- require('../rules/style/body-toc-sidebar'),
- require('../rules/style/script'),
- require('../rules/style/back-to-top'),
-
- require('../rules/sotd/supersedable'),
-
- require('../rules/structure/name'),
- require('../rules/structure/h2'),
- require('../rules/structure/canonical'),
- require('../rules/structure/section-ids'),
- require('../rules/structure/display-only'),
- require('../rules/structure/neutral'),
-
- // , require('../rules/links/internal')
- require('../rules/links/linkchecker'),
- require('../rules/links/compound'),
- require('../rules/links/reliability'),
-
- require('../rules/validation/html'),
- require('../rules/validation/wcag'),
- require('../rules/heuristic/date-format'),
+export const name = 'Base';
+export const rules = [
+ divHead,
+ hr,
+ logo,
+ h1Title,
+ detailsSummary,
+ dl,
+ editorParticipation,
+ shortname,
+ w3cState,
+ h2Toc,
+ olToc,
+ secno,
+ sheet,
+ meta,
+ bodyTocSidebar,
+ script,
+ backToTop,
+ supersedable,
+ structureName,
+ h2,
+ canonical,
+ sectionIds,
+ displayOnly,
+ neutral,
+ linkchecker,
+ compound,
+ reliability,
+ html,
+ wcag,
+ dateFormat,
];
diff --git a/lib/profiles/metadata.js b/lib/profiles/metadata.js
index ddf0f5d72..c94477409 100644
--- a/lib/profiles/metadata.js
+++ b/lib/profiles/metadata.js
@@ -1,20 +1,32 @@
/**
* Pseudo-profile for metadata extraction.
*/
+import * as charters from '../rules/metadata/charters.js';
+import * as deliverers from '../rules/metadata/deliverers.js';
+import * as dl from '../rules/metadata/dl.js';
+import * as docDate from '../rules/metadata/docDate.js';
+import * as editorIds from '../rules/metadata/editor-ids.js';
+import * as editorNames from '../rules/metadata/editor-names.js';
+import * as errata from '../rules/metadata/errata.js';
+import * as informative from '../rules/metadata/informative.js';
+import * as patentPolicy from '../rules/metadata/patent-policy.js';
+import * as process from '../rules/metadata/process.js';
+import * as profile from '../rules/metadata/profile.js';
+import * as title from '../rules/metadata/title.js';
-exports.name = 'Metadata';
+export const name = 'Metadata';
-exports.rules = [
- require('../rules/metadata/profile'),
- require('../rules/metadata/title'),
- require('../rules/metadata/docDate'),
- require('../rules/metadata/dl'),
- require('../rules/metadata/deliverers'),
- require('../rules/metadata/patent-policy'),
- require('../rules/metadata/charters'),
- require('../rules/metadata/editor-ids'),
- require('../rules/metadata/editor-names'),
- require('../rules/metadata/informative'),
- require('../rules/metadata/process'),
- require('../rules/metadata/errata'),
+export const rules = [
+ profile,
+ title,
+ docDate,
+ dl,
+ deliverers,
+ patentPolicy,
+ charters,
+ editorIds,
+ editorNames,
+ informative,
+ process,
+ errata,
];
diff --git a/lib/profiles/profileUtil.js b/lib/profiles/profileUtil.js
index 027db1eac..0e5608b46 100644
--- a/lib/profiles/profileUtil.js
+++ b/lib/profiles/profileUtil.js
@@ -1,5 +1,10 @@
// take an array of rules, return a copy with new rules added after a given named anchor
-exports.insertAfter = function (original, anchor, rules) {
+/**
+ * @param original
+ * @param anchor
+ * @param rules
+ */
+export function insertAfter(original, anchor, rules) {
rules = Array.isArray(rules) ? rules : [rules];
original = original.slice();
const index = original.map(r => r.name).indexOf(anchor);
@@ -15,11 +20,15 @@ exports.insertAfter = function (original, anchor, rules) {
);
});
return original;
-};
+}
// take an array of rules, return a copy with specified rules removed
// e.g. profileUtil.removeRules(rules, "sotd.pp")
-exports.removeRules = function (original, rules) {
+/**
+ * @param original
+ * @param rules
+ */
+export function removeRules(original, rules) {
rules = Array.isArray(rules) ? rules : [rules];
original = original.slice();
rules.forEach(r => {
@@ -33,4 +42,4 @@ exports.removeRules = function (original, rules) {
}
});
return original;
-};
+}
diff --git a/lib/rules.json b/lib/rules.json
index c98d28ec0..a048cb8a0 100644
--- a/lib/rules.json
+++ b/lib/rules.json
@@ -29,18 +29,18 @@
"rules": {
"divClassHead": true,
"logo": true,
- "submlogo": "In addition to the W3C logo, use this logo: <a href=\"https://www.w3.org/Submission/\"><img height=\"48\" width=\"211\" alt=\"W3C Member Submission\" src=\"https://www.w3.org/Icons/member_subm\"/></a>
<a href=\"https://www.w3.org/submissions/\"><img height=\"48\" width=\"211\" alt=\"W3C Member Submission\" src=\"https://www.w3.org/Icons/member_subm\"/></a>
https://www.w3.org/Submission/YYYY/SUBM-shortname-YYYYMMDD/
.",
- "docIDLatestVersion": "The syntax of a “Latest Version” URI must be https://www.w3.org/Submission/shortname/
.",
+ "docIDThisVersion": "The syntax of a “This Version” URI must be https://www.w3.org/submissions/YYYY/SUBM-shortname-YYYYMMDD/
.",
+ "docIDLatestVersion": "The syntax of a “Latest Version” URI must be https://www.w3.org/submissions/shortname/
.",
"docIDDate": true,
"editorSection": true,
"altRepresentations": ["SUBM"],
- "copyright": "Copyright: The document must include a link to the W3C document notice (https://www.w3.org/Consortium/Legal/copyright-documents). The copyright may be held by the Submitters.",
+ "copyright": "Copyright: The document must include a link to the W3C document notice (https://www.w3.org/copyright/document-license/). The copyright may be held by the Submitters.",
"hrAfterCopyright": true
}
},
@@ -55,8 +55,8 @@
"name": "5. Document Status Section",
"rules": {
"sotd": true,
- "boilerplateTRDoc": true,
- "boilerplateSUBM": "It must include this boilerplate text (with links to the published Submission and Team Comment): By publishing this document, W3C acknowledges that the Submitting Members have made a formal Submission request to W3C for discussion. Publication of this document by W3C indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. This document is not the product of a chartered W3C group, but is published as potential input to the W3C Process. A W3C Team Comment has been published in conjunction with this Member Submission. Publication of acknowledged Member Submissions at the W3C site is one of the benefits of W3C Membership. Please consult the requirements associated with Member Submissions of section 3.3 of the W3C Patent Policy. Please consult the complete list of acknowledged W3C Member Submissions.
<p>By publishing this document, W3C acknowledges that the <a href=\"https://www.w3.org/Submission/@@@submissiondoc@@@\">Submitting Members</a> have made a formal Submission request to W3C for discussion. Publication of this document by W3C indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. This document is not the product of a chartered W3C group, but is published as potential input to the <a href=\"https://www.w3.org/Consortium/Process\">W3C Process</a>. A <a href=\"https://www.w3.org/Submission/@@@teamcomment@@@\">W3C Team Comment</a> has been published in conjunction with this Member Submission. Publication of acknowledged Member Submissions at the W3C site is one of the benefits of <a href=\"https://www.w3.org/Consortium/Prospectus/Joining\">W3C Membership</a>. Please consult the requirements associated with Member Submissions of <a href=\"https://www.w3.org/Consortium/Patent-Policy/#sec-submissions\">section 3.3 of the W3C Patent Policy</a>. Please consult the complete <a href=\"https://www.w3.org/Submission\">list of acknowledged W3C Member Submissions</a>.</p>
<p><em>This section describes the status of this document at the time of its publication. A list of current W3C publications can be found in the <a href=\"https://www.w3.org/TR/\">W3C technical reports index</a> at https://www.w3.org/TR/.</em></p>
By publishing this document, W3C acknowledges that the Submitting Members have made a formal Submission request to W3C for discussion. Publication of this document by W3C indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. This document is not the product of a chartered W3C group, but is published as potential input to the W3C Process. A W3C Team Comment has been published in conjunction with this Member Submission. Publication of acknowledged Member Submissions at the W3C site is one of the benefits of W3C Membership. Please consult the requirements associated with Member Submissions of section 3.3 of the W3C Patent Policy. Please consult the complete list of acknowledged W3C Member Submissions.
<p>By publishing this document, W3C acknowledges that the <a href=\"https://www.w3.org/submissions/@@@submissiondoc@@@\">Submitting Members</a> have made a formal Submission request to W3C for discussion. Publication of this document by W3C indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. This document is not the product of a chartered W3C group, but is published as potential input to the <a href=\"https://www.w3.org/policies/process/\">W3C Process</a>. A <a href=\"https://www.w3.org/submissions/@@@teamcomment@@@\">W3C Team Comment</a> has been published in conjunction with this Member Submission. Publication of acknowledged Member Submissions at the W3C site is one of the benefits of <a href=\"https://www.w3.org/Consortium/Prospectus/Joining\">W3C Membership</a>. Please consult the requirements associated with Member Submissions of <a href=\"https://www.w3.org/policies/patent-policy/#sec-submissions\">section 3.3 of the W3C Patent Policy</a>. Please consult the complete <a href=\"https://www.w3.org/submissions/\">list of acknowledged W3C Member Submissions</a>.</p>
",
@@ -235,11 +235,11 @@
"datesFormat": true,
"publish": [
"Candidate Registry Snapshot",
- "Registry track",
- "<a href=\"https://www.w3.org/2021/Process-20211102/#recs-and-notes\">Registry track</a>"
+ "Registry track",
+ "<a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Registry track</a>"
],
"customParagraph": true,
- "stability": "It must set expectations about the (in)stability of the document. The recommended text is: <p>Publication as a Draft Registry does not imply endorsement by W3C and its Members. A Candidate Registry Snapshot has received <a href=\"https://www.w3.org/2021/Process-20211102/#dfn-wide-review\">wide review</a>.</p>
<p>Publication as a Draft Registry does not imply endorsement by W3C and its Members. A Candidate Registry Snapshot has received <a href=\"https://www.w3.org/policies/process/20231103/#dfn-wide-review\">wide review</a>.</p>
",
@@ -413,8 +413,8 @@
"datesFormat": true,
"publish": [
"Registry",
- "Registry track",
- "<a href=\"https://www.w3.org/2021/Process-20211102/#recs-and-notes\">Registry track</a>"
+ "Registry track",
+ "<a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Registry track</a>"
],
"customParagraph": true,
"usage": "It must include the expectations in terms of usage of this registry. The SOTD should include the paragraph: W3C recommends the wide usage of this registry.
",
@@ -507,11 +507,11 @@
"boilerplateTRDoc": true,
"publish": [
"Group Draft Note",
- "Note track",
- "<a href=\"https://www.w3.org/2021/Process-20211102/#recs-and-notes\">Note track</a>"
+ "Note track",
+ "<a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Note track</a>"
],
"customParagraph": true,
- "stability": "It must set expectations about the (in)stability of the document. The recommended text is:
",
+ "stability": "It must set expectations about the (in)stability of the document. The recommended text is:
or
",
"draftStability": true,
"knownDisclosureNumber": true,
"patPolReq": true,
@@ -596,11 +596,11 @@
"datesFormat": true,
"publish": [
"Group Note",
- "Note track",
- "<a href=\"https://www.w3.org/2021/Process-20211102/#recs-and-notes\">Note track</a>"
+ "Note track",
+ "<a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Note track</a>"
],
"customParagraph": true,
- "stability": "It must set expectations about the (in)stability of the document. The recommended text is:
",
+ "stability": "It must set expectations about the (in)stability of the document. The recommended text is:
or
",
"draftStability": true,
"knownDisclosureNumber": true,
"patPolReq": true,
@@ -685,8 +685,8 @@
"datesFormat": true,
"publish": [
"Statement",
- "Note track",
- "<a href=\"https://www.w3.org/2021/Process-20211102/#recs-and-notes\">Note track</a>"
+ "Note track",
+ "<a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Note track</a>"
],
"customParagraph": true,
"stability": "It must set expectations about the (in)stability of the document. The recommended text is:
<p>A W3C Statement is a specification that, after extensive consensus-building, is endorsed by W3C and its Members.</p>
<p>Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received <a href=\"https://www.w3.org/2021/Process-20211102/#dfn-wide-review\">wide review</a>, is intended to gather implementation experience, and has commitments from Working Group members to <a href=\"https://www.w3.org/Consortium/Patent-Policy/#sec-Requirements\">royalty-free licensing</a> for implementations.</p>
<p>Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Snapshot has received <a href=\"https://www.w3.org/policies/process/20231103/#dfn-wide-review\">wide review</a>, is intended to gather implementation experience, and has commitments from Working Group members to <a href=\"https://www.w3.org/policies/patent-policy/#sec-Requirements\">royalty-free licensing</a> for implementations.</p>
<p>Publication as a Candidate Recommendation does not imply endorsement by W3C and its Members. A Candidate Recommendation Draft integrates changes from the previous Candidate Recommendation that the Working Group intends to include in a subsequent Candidate Recommendation Snapshot.</p>
Future updates to this specification may incorporate new features.
Include one of this source code:
<p>Future updates to this specification may incorporate <a href=\"https://www.w3.org/2021/Process-20211102/#allow-new-features\">new features<a>.</p>
",
+ "newFeatures": "If it is the intention to incorporate new features in future updates of the specification, please make sure to identify the document as intending to allow new features. Recommended text is: Future updates to this specification may incorporate new features.
Include one of this source code:
<p>Future updates to this specification may incorporate <a href=\"https://www.w3.org/policies/process/20231103/#allow-new-features\">new features</a>.</p>
",
"whichProcess": true
}
},
@@ -1220,10 +1220,10 @@
],
"dateState": [
"Recommendation",
- " <p id=\"w3c-state\">W3C Recommendation 7 April 2004, edited in place 19 August2004</p>
"
+ " <p id=\"w3c-state\">W3C Recommendation 7 April 2004, edited in place 19 August2004</p>
"
],
"docIDFormat": true,
- "docIDOrder": "Document identifier information must be present in this order:
",
+ "docIDOrder": "Document identifier information must be present in this order: https://github.com/<USER_OR_ORG>/<REPO_NAME>/[issues|labels][/…]
.)
",
"docIDThisVersion": ["REC"],
"docIDDate": true,
"docIDLatestVersion": true,
@@ -1249,16 +1249,16 @@
"boilerplateTRDoc": true,
"datesFormat": true,
"deployment": true,
- "publish": "W3C Recommendation must include one of the following paragraphs in the \"Status of This Document\" depending on the type of Recommendations:https://github.com/<USER_OR_ORG>/<REPO_NAME>/[issues|labels][/…]
.)
",
+ "publish": "W3C Recommendation must include one of the following paragraphs in the \"Status of This Document\" depending on the type of Recommendations:This document was published by the @@ Working Group as a Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation. It includes candidate corrections.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation. This document was published by the @@ Working Group as a Recommendation. It includes <a href=\"https://www.w3.org/2021/Process-20211102/#candidate-correction\">candidate corrections.</a>.</p>
This document was published by the @@ Working Group as a Recommendation. It includes candidate additions, introducing new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation. This document was published by the @@ Working Group as a Recommendation. It includes <a href=\"https://www.w3.org/2021/Process-20211102/#candidate-addition\">candidate additions</a>, introducing new features since the Previous Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation. It includes candidate amendments, introducing substantive changes and new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation. This document was published by the @@ Working Group as a Recommendation. It includes <a href=\"https://www.w3.org/2021/Process-20211102/#candidate-amendments\">candidate amendments</a>, introducing substantive changes and new features since the Previous Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation. It includes proposed corrections.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation. This document was published by the @@ Working Group as a Recommendation. It includes <a href=\"https://www.w3.org/2021/Process-20211102/#proposed-corrections\">proposed corrections.</a>.</p>
This document was published by the @@ Working Group as a Recommendation. It includes proposed additions, introducing new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation. This document was published by the @@ Working Group as a Recommendation. It includes <a href=\"https://www.w3.org/2021/Process-20211102/#proposed-addition\">proposed additions</a>, introducing new features since the Previous Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation. It includes proposed amendments, introducing substantive changes and new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation. This document was published by the @@ Working Group as a Recommendation. It includes <a href=\"https://www.w3.org/2021/Process-20211102/#proposed-amendments\">proposed amendments</a>, introducing substantive changes and new features since the Previous Recommendation.</p>
",
"recRelation": "It must indicate its relationship to previous related Recommendations (e.g., an indication that a Recommendation supersedes, obsoletes, or subsumes another, or that a Recommendation is an editorial revision) and must link to the most recent Recommendation (if any) having the same major revision number. The document thus links to two important resources: the previous edition of the Recommendation via the status section, and the previous draft (the Proposed Recommendation) via the \"Previous version\" link.",
"customParagraph": true,
"changesList": ["must", ""],
- "stability": "It must set expectations about the stability of the document. The recommended text is: This document was published by the @@ Working Group as a Recommendation using the Recommendation track.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>.</p>
This document was published by the @@ Working Group as a Recommendation using the Recommendation track. It includes candidate corrections.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>. It includes <a href=\"https://www.w3.org/policies/process/20231103/#candidate-correction\">candidate corrections.</a>.</p>
This document was published by the @@ Working Group as a Recommendation using the Recommendation track. It includes candidate additions, introducing new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>. It includes <a href=\"https://www.w3.org/policies/process/20231103/#candidate-addition\">candidate additions</a>, introducing new features since the Previous Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation using the Recommendation track. It includes candidate amendments, introducing substantive changes and new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>. It includes <a href=\"https://www.w3.org/policies/process/20231103/#candidate-amendments\">candidate amendments</a>, introducing substantive changes and new features since the Previous Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation using the Recommendation track. It includes proposed corrections.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>. It includes <a href=\"https://www.w3.org/policies/process/20231103/#proposed-corrections\">proposed corrections.</a>.</p>
This document was published by the @@ Working Group as a Recommendation using the Recommendation track. It includes proposed additions, introducing new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>. It includes <a href=\"https://www.w3.org/policies/process/20231103/#proposed-addition\">proposed additions</a>, introducing new features since the Previous Recommendation.</p>
This document was published by the @@ Working Group as a Recommendation using the Recommendation track. It includes proposed amendments, introducing substantive changes and new features since the Previous Recommendation.
Include this source code:<p>This document was published by the @@ Working Group as a Recommendation using the <a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>. It includes <a href=\"https://www.w3.org/policies/process/20231103/#proposed-amendments\">proposed amendments</a>, introducing substantive changes and new features since the Previous Recommendation.</p>
<p>A W3C Recommendation is a specification that, after extensive consensus-building, is endorsed by <abbr title=\"World Wide Web Consortium\">W3C</abbr> and its Members, and has commitments from Working Group members to <a href=\"https://www.w3.org/Consortium/Patent-Policy/#sec-Requirements\">royalty-free licensing</a> for implementations.</p>
<p>A W3C Recommendation is a specification that, after extensive consensus-building, is endorsed by <abbr title=\"World Wide Web Consortium\">W3C</abbr> and its Members, and has commitments from Working Group members to <a href=\"https://www.w3.org/policies/patent-policy/#sec-Requirements\">royalty-free licensing</a> for implementations.</p>
Future updates to this Recommendation may incorporate new features.
Include one of this source code:
<p>Future updates to this Recommendation may incorporate <a href=\"https://www.w3.org/2021/Process-20211102/#allow-new-features\">new features</a>.</p>
",
+ "newFeatures": "If it is the intention to incorporate new features in future updates of the Recommendation, please make sure to identify the document as intending to allow new features. Recommended text is: Future updates to this Recommendation may incorporate new features.
Include one of this source code:
<p>Future updates to this Recommendation may incorporate <a href=\"https://www.w3.org/policies/process/20231103/#allow-new-features\">new features</a>.</p>
",
"whichProcess": true,
- "recAddition": "Modifications in W3C Recommendation are divided into \"new features\" and \"changes\". Recommendations with modifications must include the following paragraphs depending on the changes.
",
+ "recAddition": "Modifications in W3C Recommendation are divided into \"new features\" and \"changes\". Recommendations with modifications must include the following paragraphs depending on the changes.class=\"correction proposed\"
Proposed corrections are marked in the document.
Include this source code:<p class=\"correction\">Proposed corrections are marked in the document.</p>
class=\"addition proposed\"
Proposed additions are marked in the document.
Include this source code:<p class=\"addition\">Proposed additions are marked in the document.</p>
class=\"correction\"
Candidate corrections are marked in the document.
Include this source code:<p class=\"correction\">Candidate corrections are marked in the document.</p>
class=\"addition\"
Candidate additions are marked in the document.
Include this source code:<p class=\"correction\">Candidate additions are marked in the document.</p>
",
"commentEnd": "W3C Recommendation with proposed amendments (substantive changes or new features) must have a comment review date of at least 60 days after the publication date."
}
},
@@ -1341,8 +1341,8 @@
"datesFormat": true,
"publish": [
"Recommendation",
- "Recommendation track",
- "<a href=\"https://www.w3.org/2021/Process-20211102/#recs-and-notes\">Recommendation track</a>"
+ "Recommendation track",
+ "<a href=\"https://www.w3.org/policies/process/20231103/#recs-and-notes\">Recommendation track</a>"
],
"recRelation": true,
"rescindsRationale": "It must include rationale for the decision to rescind the Recommendation.class=\"correction proposed\"
Proposed corrections are marked in the document.
Include this source code:<p class=\"correction proposed\">Proposed corrections are marked in the document.</p>
class=\"addition proposed\"
Proposed additions are marked in the document.
Include this source code:<p class=\"addition proposed\">Proposed additions are marked in the document.</p>
class=\"correction\"
Candidate corrections are marked in the document.
Include this source code:<p class=\"correction\">Candidate corrections are marked in the document.</p>
class=\"addition\"
Candidate additions are marked in the document.
Include this source code:<p class=\"correction\">Candidate additions are marked in the document.</p>
<p>W3C has chosen to rescind the <a href=\"@@PREVIOUS REC URI@@\">@@TITLE@@ Recommendation</a> for the following reasons: [...list of reasons...]. For additional information about replacement or alternative technologies, please refer to the <a href=\"https://www.w3.org/2016/11/obsoleting-rescinding/\">explanation of Obsoleting, Rescinding or Superseding W3C Specifications</a>.</p>
<p>Publication as a Discontinued Draft imply that this document no longer intended to advance or to be maintained. It is inappropriate to cite this document as other than abandoned work.</p>
<p>Publication as a Discontinued Draft implies that this document is no longer intended to advance or to be maintained. It is inappropriate to cite this document as other than abandoned work.</p>
<a href=\"https://www.w3.org/\"><img height=\"48\" width=\"72\" alt=\"W3C\" src=\"https://www.w3.org/StyleSheets/TR/2021/logos/W3C\"/></a>
title
element and in an h1
element. When calculating text equation, special transformations made to h1
are:
",
"versionNumber": "Technical report version information, i.e., version and edition numbers. @{param1}
",
- "dateState": "The document's status and date must be in a <p id=\"w3c-state\">
element as follows (see also date syntax): <p id=\"w3c-state\">W3C @{param1} DD Month YYYY</p>
@{param2}",
+ "dateState": "The document's status and date must be in a <p id=\"w3c-state\">
element as follows (see also date syntax): <p id=\"w3c-state\">W3C @{param1} DD Month YYYY</p>
@{param2}",
"docIDFormat": "Document identifier information must be presented in a dl
list, where each dt
element marks up an identifier role (\"This Version\", \"Latest Version\", \"History\", etc.) and each dd
element includes a link whose link text is the identifier. That dl
must itself be placed in a details
element. <details open><summary>More details about this document</summary><dl>...</dl></details>
",
- "docIDThisVersion": "The syntax of a “this version” URI must be https://github.com/<USER_OR_ORG>/<REPO_NAME>/[issues|labels][/…]
.)https://www.w3.org/TR/YYYY/@{param1}-shortname-YYYYMMDD/
.",
+ "docIDThisVersion": "The syntax of a “this version” URI must be https://www.w3.org/TR/YYYY/@{param1}-shortname-YYYYMMDD/
. If the document introduces a new shortname, it must use lowercase letters.",
"docIDDate": "The title page date and the date at the end of the \"This Version\" URI must match.",
"docIDLatestVersion": "The syntax of a “latest version” URI must be https://www.w3.org/TR/shortname/
.",
"docIDHistory": "The syntax of a “history” URI must be https://www.w3.org/standards/history/shortname/
, and consistent with the shortname mentioned in 'Latest Version'. Note: If there's a shortname change it must be specified using the following data attribute data-previous-shortname='previous-shortname'
on the <a>
element.",
- "editorSection": "The editors'/authors' names must be listed, with attribute data-editor-id=\"@@\"
. Affiliations and email addresses are optional; email addresses are not recommended. If an editor/author is acknowledged in an earlier version of this document and the individual's affiliation has since changed, list the individual using the notation \"<name>, <affiliation> (until DD Month YYYY)\". If the list of authors is very long (e.g., the entire Working Group), identify the authors in the acknowledgments section, linked from the head of the document. Distinguish any contributors from authors in the acknowledgments section.",
+ "editorSection": "The editors'/authors' names must be listed, with attribute data-editor-id=\"@@\"
. Affiliations and email addresses are optional; email addresses are not recommended. If an editor/author is acknowledged in an earlier version of this document and the individual's affiliation has since changed, list the individual using the notation \"<name>, <affiliation> (until DD Month YYYY)\". If the list of authors is very long (e.g., the entire Working Group), identify the authors in the acknowledgments section, linked from the head of the document. Distinguish any contributors from authors in the acknowledgments section.
Note: Editors must be participating in the group producing the document at the time of its publication.",
"altRepresentations": "Authors may provide links to alternative (non-normative) representations or packages for the document. For instance: <p>This document is also available in these non-normative formats: <a href=\"@{param1}-shortname-20180101.html\">single HTML file</a>, <a href=\"@{param1}-shortname-20180101.tgz\">gzipped tar file of HTML</a>.</p>
",
- "copyright": "The copyright must use the following markup (fill in with the appropriate year, years, or year range). The type of license the document is using can be found in the group's charter.
",
+ "copyright": "Starting from 01 February 2023, the copyright must follow the following markup (fill in with the appropriate year, years, or year range). The type of license the document is using can be found in the group's charter. Copyright © @{year} W3C ® ( MIT , ERCIM , Keio, Beihang). W3C liability, trademark and document use rules apply.
<p class=\"copyright\"><a href=\"https://www.w3.org/Consortium/Legal/ipr-notice#Copyright\">Copyright</a> © @{year} <a href=\"https://www.w3.org/\"><abbr title=\"World Wide Web Consortium\">W3C</abbr></a><sup>®</sup> (<a href=\"https://www.csail.mit.edu/\"><abbr title=\"Massachusetts Institute of Technology\">MIT</abbr></a>, <a href=\"https://www.ercim.eu/\"><abbr title=\"European Research Consortium for Informatics and Mathematics\">ERCIM</abbr></a>, <a href=\"https://www.keio.ac.jp/\">Keio</a>, <a href=\"https://ev.buaa.edu.cn/\">Beihang</a>). W3C <a href=\"https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer\">liability</a>, <a href=\"https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks\">trademark</a> and <a href=\"https://www.w3.org/Consortium/Legal/copyright-documents\">document use</a> rules apply.</p>
Copyright © @{year} W3C ® ( MIT , ERCIM , Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
<p class=\"copyright\"><a href=\"https://www.w3.org/Consortium/Legal/ipr-notice#Copyright\">Copyright</a> © @{year} <a href=\"https://www.w3.org/\"><abbr title=\"World Wide Web Consortium\">W3C</abbr></a><sup>®</sup> (<a href=\"https://www.csail.mit.edu/\"><abbr title=\"Massachusetts Institute of Technology\">MIT</abbr></a>, <a href=\"https://www.ercim.eu/\"><abbr title=\"European Research Consortium for Informatics and Mathematics\">ERCIM</abbr></a>, <a href=\"https://www.keio.ac.jp/\">Keio</a>, <a href=\"https://ev.buaa.edu.cn/\">Beihang</a>). W3C <a href=\"https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer\">liability</a>, <a href=\"https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks\">trademark</a> and <a href=\"https://www.w3.org/Consortium/Legal/copyright-software\">permissive document license</a> rules apply.</p>
Copyright © @{year} World Wide Web Consortium. W3C® liability, trademark and document use rules apply.
<p class="copyright"><a href="https://www.w3.org/policies/#copyright">Copyright</a> © @{year} <a href="https://www.w3.org/">World Wide Web Consortium</a>. <abbr title="World Wide Web Consortium">W3C</abbr><sup>®</sup> <a href="https://www.w3.org/policies/#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/policies/#W3C_Trademarks">trademark</a> and <a href=\"https://www.w3.org/copyright/document-license/\">document use</a> rules apply.</p>
Copyright © @{year} World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
<p class="copyright"><a href="https://www.w3.org/policies/#copyright">Copyright</a> © @{year} <a href="https://www.w3.org/">World Wide Web Consortium</a>. <abbr title="World Wide Web Consortium">W3C</abbr><sup>®</sup> <a href="https://www.w3.org/policies/#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/policies/#W3C_Trademarks">trademark</a> and <a href="https://www.w3.org/copyright/software-license/">permissive document license</a> rules apply.</p>
hr
) must follow the copyright."
}
},
@@ -1603,16 +1603,16 @@
"rules": {
"sotd": "There must be a status section that follows the abstract, labeled with an h2
element with content \"Status of This Document\". The Team maintains the status section of a document.",
"boilerplateTRDoc": "It must begin with the following boilerplate text:
<p><em>This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the <a href=\"https://www.w3.org/TR/\">W3C technical reports index</a> at https://www.w3.org/TR/.</em></p>
<p>This document was published by the <a href=\"https://www.w3.org/groups/(wg|ig)/@@\">@@@ Working/Interest Group</a> as a @{param1} using the @{param3}.</p>
A leading zero in the day is optional.",
+ "publish": "It must include the name of the W3C group that produced the document, the type of document and its track. The name must be a link to a public page for the group.<p>This document was published by the <a href=\"https://www.w3.org/groups/(wg|ig)/@@/\">@@@ Working/Interest Group</a> as a @{param1} using the @{param3}.</p>
W3C recommends the wide deployment of this specification as a standard for the Web.
",
"stability": "It must set expectations about the (in)stability of the document. The recommended text @{param2} is:
<p>Publication as @{param1} does not imply endorsement by W3C and its Members.</p>
This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
",
- "patPolReq": "It must include a text related to the patent policy:<p>This document was produced by a group operating under the <a href=\"https://www.w3.org/Consortium/Patent-Policy/\">W3C Patent Policy</a>. W3C maintains a <a rel=\"disclosure\" href=\"@@URI to IPP status or other page@@\">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href=\"https://www.w3.org/Consortium/Patent-Policy/#def-essential\">Essential Claim(s)</a> must disclose the information in accordance with <a href=\"https://www.w3.org/Consortium/Patent-Policy/#sec-Disclosure\">section 6 of the W3C Patent Policy</a>.</p>
<p>This document was produced by a group operating under the <a href=\"https://www.w3.org/Consortium/Patent-Policy-20170801/\">1 August 2017 W3C Patent Policy</a>. W3C maintains a <a rel=\"disclosure\" href=\"@@URI to IPP status or other page@@\">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href=\"https://www.w3.org/Consortium/Patent-Policy-20170801/#def-essential\">Essential Claim(s)</a> must disclose the information in accordance with <a href=\"https://www.w3.org/Consortium/Patent-Policy-20170801/#sec-Disclosure\">section 6 of the W3C Patent Policy</a>.</p>
<p>The <a href=\"https://www.w3.org/Consortium/Patent-Policy/\">W3C Patent Policy</a> does not carry any licensing requirements or commitments on this document.</p>
<p>The <a href=\"https://www.w3.org/Consortium/Patent-Policy-20170801/\">1 August 2017 W3C Patent Policy</a> does not carry any licensing requirements or commitments on this document.</p>
<p>This document was produced by a group operating under the <a href=\"https://www.w3.org/policies/patent-policy/\">W3C Patent Policy</a>. W3C maintains a <a rel=\"disclosure\" href=\"@@URI to IPP status or other page@@\">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href=\"https://www.w3.org/policies/patent-policy/#def-essential\">Essential Claim(s)</a> must disclose the information in accordance with <a href=\"https://www.w3.org/policies/patent-policy/#sec-Disclosure\">section 6 of the W3C Patent Policy</a>.</p>
<p>The <a href=\"https://www.w3.org/policies/patent-policy/\">W3C Patent Policy</a> does not carry any licensing requirements or commitments on this document.</p>
",
"knownDisclosureNumber": "It must not indicate the number of known disclosures at the time of publication.",
- "whichProcess": "The document must include the following boilerplate text in the status section to identify the governing process:
<p>This document is governed by the <a id=\"w3c_process_revision\" href=\"https://www.w3.org/2021/Process-20211102/\">2 November 2021 W3C Process Document</a>. </p>
<p>This document is governed by the <a id=\"w3c_process_revision\" href=\"https://www.w3.org/policies/process/20231103/\">03 November 2023 W3C Process Document</a>. </p>
<p id=\"w3c-state\">
element containing the state and date (\"W3C Recommendation DD MMMMMM YYYY\"), add:
"
+ "w3c-state": "In the <br>
element after the original date<new date>
\" when the @{param1} document gets published by the webmaster<p id=\"w3c-state\">
element containing the state and date (\"W3C Recommendation DD Month YYYY\"), add:
"
}
},
"rec-edit-version": {
@@ -1674,7 +1674,7 @@
"rec-edit-sotd": {
"name": "6. Change the \"status of this document\" section",
"rules": {
- "sotd": "The SOTD gets updated as follows:<br>
element after the original date<new date>
\" when the @{param1} document gets published by the webmaster
"
+ "sotd": "The SOTD gets updated as follows:<p>This specification is a <a href=\"https://www.w3.org/2021/Process-20211102/#rec-rescind\">@{param1} Recommendation</a>. A newer specification exists that is recommended for new adoption in place of this specification. </p>
<p>This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.</p>
<p>For purposes of the W3C Patent Policy, this @{param1} Recommendation has the same status as an active Recommendation; it retains licensing commitments and remains available as a reference for old -- and possibly still deployed -- implementations, but is not recommended for future implementation. New implementations should follow the
<a href='@@'>
latest version</a>
of the @@ specification.</p>
"
}
}
}
diff --git a/lib/rules/echidna/deliverer-change.js b/lib/rules/echidna/deliverer-change.js
new file mode 100644
index 000000000..902e514f1
--- /dev/null
+++ b/lib/rules/echidna/deliverer-change.js
@@ -0,0 +1,59 @@
+import w3cApi from 'node-w3capi';
+
+const self = {
+ name: 'echidna.deliverer-change',
+ section: 'metadata',
+ rule: 'delivererID',
+};
+
+export const { name } = self;
+
+function getPreviousDelivererIDs(shortname, previousUrl) {
+ const date = previousUrl.match(/-(\d{8})\/$/);
+ if (date)
+ return new Promise(resolve => {
+ // e.g. https://api.w3.org/specifications/WGSL/versions/20230221/deliverers
+ w3cApi
+ .specification(shortname)
+ .version(date[1])
+ .deliverers()
+ .fetch({ embed: true }, (err, data) => {
+ resolve(data && data.map(obj => obj.id));
+ });
+ });
+ return new Promise(resolve => {
+ resolve([]);
+ });
+}
+
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
+ const previousVersion = await sr.getPreviousVersion(sr);
+ const shortname = await sr.getShortname(sr);
+
+ if (!previousVersion) {
+ return done();
+ }
+
+ const previousDelivererIDs = await getPreviousDelivererIDs(
+ shortname,
+ previousVersion
+ );
+ const delivererIDs = await sr.getDelivererIDs();
+
+ const delivererChanged =
+ delivererIDs.sort().toString() !==
+ previousDelivererIDs.sort().toString();
+
+ if (delivererChanged) {
+ sr.error(self, 'deliverer-changed', {
+ this: delivererIDs.sort().toString(),
+ previous: previousDelivererIDs.sort().toString(),
+ });
+ }
+
+ done();
+}
diff --git a/lib/rules/echidna/todays-date.js b/lib/rules/echidna/todays-date.js
index d0481938a..8404f3f7d 100644
--- a/lib/rules/echidna/todays-date.js
+++ b/lib/rules/echidna/todays-date.js
@@ -5,9 +5,13 @@ const self = {
rule: 'dateState',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
/**
* Get the timestamp of a day, regardless the time of the day.
* This function creates a new `Date` to avoid modifying the original one.
@@ -26,4 +30,4 @@ exports.check = function (sr, done) {
}
done();
-};
+}
diff --git a/lib/rules/headers/copyright.js b/lib/rules/headers/copyright.js
index c980b18f8..bc8e0385a 100644
--- a/lib/rules/headers/copyright.js
+++ b/lib/rules/headers/copyright.js
@@ -4,9 +4,10 @@
* 1. Get type of license(s) the group is using from the API.
* 2. There're 2 types of license(s): copyright-documents and copyright-software. A group would choose either one or both in the Charter. If they choose both, they can mention either one in the document.
* 3. For joint-publications, the license should be adopted by both groups.
- * 4. For "copyright-software", the url is https://www.w3.org/Consortium/Legal/copyright-software, the dated url is https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document, they are both allowed. The name in the API is "W3C Software and Document License", but the document would use text "permissive document license".
- * 5. For "copyright-documents", the url is https://www.w3.org/Consortium/Legal/copyright-documents. The name in the API is "W3C Document License", but the document would use text "document use".
+ * 4. For "copyright-software", the url is https://www.w3.org/copyright/software-license/, the dated url is https://www.w3.org/copyright/software-license-2023/, they are both allowed. The name in the API is "W3C Software and Document License", but the document would use text "permissive document license".
+ * 5. For "copyright-documents", the url is https://www.w3.org/document/document-license/, the dated url is https://www.w3.org/copyright/document-license-2023/. The name in the API is "W3C Document License", but the document would use text "document use".
*/
+import { AB, TAG, importJSON } from '../../util.js';
const self = {
name: 'headers.copyright',
@@ -14,140 +15,183 @@ const self = {
rule: 'copyright',
};
-const util = require('../../util');
-
// W3C Software and Document License
const LICENSE_CS_TEXT = 'permissive document license';
-const LICENSE_CS_URL = 'https://www.w3.org/Consortium/Legal/copyright-software';
+const LICENSE_CS_URL = 'https://www.w3.org/copyright/software-license/';
const LICENSE_CS_DATED_URL =
- 'https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document';
+ 'https://www.w3.org/copyright/software-license-2023/';
// W3C Document License
const LICENSE_CD_TEXT = 'document use';
-const LICENSE_CD_URL =
- 'https://www.w3.org/Consortium/Legal/copyright-documents';
-
-const linksToCheckBase = {
- Copyright: 'https://www.w3.org/Consortium/Legal/ipr-notice#Copyright',
- W3C: 'https://www.w3.org/',
- MIT: 'https://www.csail.mit.edu/',
- ERCIM: 'https://www.ercim.eu/',
- Keio: 'https://www.keio.ac.jp/',
- Beihang: 'https://ev.buaa.edu.cn/',
- liability:
- 'https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer',
- trademark: 'https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks',
+const LICENSE_CD_URL = 'https://www.w3.org/copyright/document-license/';
+const LICENSE_CD_DATED_URL =
+ 'https://www.w3.org/copyright/document-license-2023/';
+
+const LICENSE_URL_TEXT_MAP = {
+ [LICENSE_CD_URL]: LICENSE_CD_TEXT,
+ [LICENSE_CS_URL]: LICENSE_CS_TEXT,
};
-exports.name = self.name;
+const LICENSE_TEXT_LINKS_MAP = {
+ [LICENSE_CD_TEXT]: [LICENSE_CD_URL, LICENSE_CD_DATED_URL],
+ [LICENSE_CS_TEXT]: [LICENSE_CS_URL, LICENSE_CS_DATED_URL],
+};
-exports.check = async function (sr, done) {
- const copyright = sr.jsDocument.querySelector('body div.head p.copyright');
- if (copyright) {
- // Skip check if the document is only published by TAG and/or AB
- const TagID = util.TAG.id;
- const AbID = util.AB.id;
- const deliverers = await sr.getDelivererIDs();
- // groupIds: a list of ids without TAG or AB
- const groupIds = deliverers.filter(
- deliverer => ![TagID, AbID].includes(deliverer)
+const latestBaseLinks = {
+ Copyright: 'https://www.w3.org/policies/#copyright',
+ 'World Wide Web Consortium': 'https://www.w3.org/',
+ liability: 'https://www.w3.org/policies/#Legal_Disclaimer',
+ trademark: 'https://www.w3.org/policies/#W3C_Trademarks',
+};
+
+const copyrightExceptions = importJSON(
+ '../../copyright-exceptions.json',
+ import.meta.url
+);
+
+export const { name } = self;
+
+async function isOnlyPublishedByTagOrAb(sr) {
+ const TagID = TAG.id;
+ const AbID = AB.id;
+
+ const delivererIDs = await sr.getDelivererIDs();
+ return delivererIDs.every(id => [TagID, AbID].includes(id));
+}
+
+// Create an array of license URIs per group -> array of arrays
+// Then find the intersection of all arrays, to extract union license(s)
+function getCommonLicenseUri(data) {
+ return data
+ .map(charter => charter['doc-licenses'].map(license => license.uri))
+ .reduce((first, cur) => first.filter(uri => cur.includes(uri)));
+}
+
+// The date can be 19xx-2023, or 2023.
+function getLatestCopyrightMatchRegex(sr, licenseTexts) {
+ const licenseRex = licenseTexts.join('|');
+ const year = (sr.getDocumentDate() || new Date()).getFullYear();
+
+ const startRex =
+ '^Copyright [©|©] (?:(?:199\\d|20\\d\\d)-)?@YEAR *World Wide Web Consortium'.replace(
+ '@YEAR',
+ year
+ );
+ const endRex = `\\. W3C[®|®] liability, trademark,? and (${licenseRex}) rules apply\\.$`;
+ return new RegExp(startRex + endRex);
+}
+
+function checkCopyright(sr, copyright, licenseTexts, baseLinks, matchRegex) {
+ const regResult = sr.norm(copyright.textContent).match(matchRegex);
+ if (!regResult) {
+ sr.error(self, 'no-match', { rex: matchRegex });
+ return;
+ }
+
+ const [, licenseInDoc] = regResult;
+ const allowBothLicense = licenseTexts.length === 2;
+ const textsToCheck = allowBothLicense ? [licenseInDoc] : licenseTexts; // When document can have 2 licenses, keep the one mentioned in document.
+ const linksToCheck = textsToCheck.reduce(
+ (acc, v) => ({ ...acc, [v]: LICENSE_TEXT_LINKS_MAP[v] }),
+ baseLinks
+ );
+
+ // check the links
+ const links = Array.from(copyright.querySelectorAll('a'));
+ Object.keys(linksToCheck).forEach(linkText => {
+ const link = links.find(link =>
+ sr.norm(link.textContent).includes(linkText)
);
- if (!groupIds.length) return done();
- let allowBothLicense = false;
- const chartersData = await sr.getChartersData();
- if (!chartersData || !chartersData.length) {
- sr.error(self, 'no-data-from-API');
- return done();
- }
- const isJointPublication = chartersData.length > 1;
-
- const licenses = [
- ...chartersData.map(c => c['doc-licenses'].map(l => l.uri)),
- ]; // creates an array of license URIs per group -> array of arrays
- const allowedLicenses = licenses.reduce((a, b) =>
- a.filter(c => b.includes(c))
- ); // find the intersection of all arrays
-
- if (!allowedLicenses.length) {
- if (isJointPublication) {
- sr.error(self, 'no-license-found-joint');
- return done();
- }
- sr.error(self, 'no-license-found');
- return done();
+ if (!link) {
+ return sr.error(self, 'no-link', { text: linkText });
}
- // linksToCheck: links and urls that should appear in doc.
- const linksToCheck = { ...linksToCheckBase };
- // licenseTexts: ['permissive document license'] or ['document use'] or ['document use', 'permissive document license']
- const licenseTexts = [];
- allowedLicenses.forEach(license => {
- if (license === LICENSE_CD_URL) {
- licenseTexts.push(LICENSE_CD_TEXT);
- linksToCheck[LICENSE_CD_TEXT] = [LICENSE_CD_URL];
- } else if (license === LICENSE_CS_URL) {
- licenseTexts.push(LICENSE_CS_TEXT);
- linksToCheck[LICENSE_CS_TEXT] = [
- LICENSE_CS_URL,
- LICENSE_CS_DATED_URL,
- ];
- }
+ const expected = linksToCheck[linkText];
+ const isExpectedArray = expected instanceof Array;
+ const linkFound = isExpectedArray
+ ? expected.some(v => v === link.href)
+ : expected === link.href;
+
+ if (!linkFound) {
+ sr.error(self, 'href-not-match', {
+ expected: isExpectedArray ? expected.join("' or '") : expected,
+ hrefInDoc: link.href,
+ text: linkText,
+ });
+ }
+ });
+}
+
+// Some documents like epub-33 uses special copyrights listed in copyright-exception.json
+function checkSpecialCopyright(sr, copyright, specialCopyright, shortname) {
+ const year = (sr.getDocumentDate() || new Date()).getFullYear();
+
+ const domHtml = sr.norm(copyright.innerHTML);
+ const specHtml = sr.norm(
+ specialCopyright.copyright.replace(/@YEAR/g, year)
+ );
+ if (domHtml !== specHtml) {
+ sr.error(self, 'exception-no-html', {
+ copyright: domHtml,
+ expected: specHtml,
+ shortname,
});
+ }
+}
- // allowBothLicense: copyright can claim either license.
- if (licenseTexts.length === 2) allowBothLicense = true;
- const licenseRex = licenseTexts.join('|');
-
- const year = (sr.getDocumentDate() || new Date()).getFullYear();
- const startRex = `^Copyright [©|©] (?:(?:199\\d|20\\d\\d)-)?${year} *W3C[®|®] \\(MIT, ERCIM, Keio, Beihang\\)`;
- const endRex = `\\. W3C liability, trademark,? and (${licenseRex}) rules apply\\.$`;
-
- // check text of copyright
- const rex = new RegExp(startRex + endRex);
- const text = sr.norm(copyright.textContent);
- const regResult = text.match(rex);
- if (!regResult) {
- sr.error(self, 'no-match', { rex });
- return done();
- }
+function checkLatestCopyright(sr, copyright, licenseTexts) {
+ const matchRegex = getLatestCopyrightMatchRegex(sr, licenseTexts);
- const [, licenseInDoc] = regResult;
+ checkCopyright(sr, copyright, licenseTexts, latestBaseLinks, matchRegex);
+}
- // When document can have 2 licenses, remove one of the link which is not mentioned in document.
- if (allowBothLicense) {
- if (licenseInDoc === LICENSE_CS_TEXT) {
- delete linksToCheck[LICENSE_CD_TEXT];
- } else if (licenseInDoc === LICENSE_CD_TEXT) {
- delete linksToCheck[LICENSE_CS_TEXT];
- }
- }
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
+ const copyright = sr.jsDocument.querySelector('body div.head p.copyright');
+
+ if (!copyright) {
+ sr.error(self, 'not-found');
+ return done();
+ }
+ if (await isOnlyPublishedByTagOrAb(sr)) {
+ return done();
+ }
+
+ const chartersData = await sr.getChartersData();
+ if (!chartersData || !chartersData.length) {
+ sr.error(self, 'no-data-from-API');
+ return done();
+ }
+
+ const allowedLicenses = getCommonLicenseUri(chartersData);
+ if (!allowedLicenses.length && chartersData.length > 1) {
+ sr.error(self, 'no-license-found-joint');
+ return done();
+ }
+ if (!allowedLicenses.length) {
+ sr.error(self, 'no-license-found');
+ return done();
+ }
+
+ // licenseTexts: ['permissive document license'] or ['document use'] or ['document use', 'permissive document license']
+ const licenseTexts = allowedLicenses
+ .filter(v => [LICENSE_CD_URL, LICENSE_CS_URL].includes(v))
+ .map(v => LICENSE_URL_TEXT_MAP[v]);
+
+ // get exception rule for certain shortnames
+ const shortname = await sr.getShortname();
+ const specialCopyright = copyrightExceptions.find(({ specShortnames }) =>
+ specShortnames.includes(shortname)
+ );
+
+ if (specialCopyright) {
+ checkSpecialCopyright(sr, copyright, specialCopyright, shortname);
+ } else {
+ checkLatestCopyright(sr, copyright, licenseTexts);
+ }
- // check the links
- const copyrightLinks = [...copyright.querySelectorAll('a')];
- Object.keys(linksToCheck).forEach(linkText => {
- const link = copyrightLinks.filter(a =>
- sr.norm(a.textContent).includes(linkText)
- )[0];
-
- if (!link) return sr.error(self, 'no-link', { text: linkText });
-
- let expectedHref = linksToCheck[linkText];
- let linkFound = false;
- // "permissive document license" can have 2 valid urls.
- if (expectedHref instanceof Array) {
- linkFound = expectedHref.indexOf(link.href) > -1;
- expectedHref = expectedHref.join("' or '");
- } else {
- linkFound = link.href === expectedHref;
- }
- if (!linkFound) {
- sr.error(self, 'href-not-match', {
- expected: expectedHref,
- hrefInDoc: link.href,
- text: linkText,
- });
- }
- });
- } else sr.error(self, 'not-found');
return done();
-};
+}
diff --git a/lib/rules/headers/details-summary.js b/lib/rules/headers/details-summary.js
index eb1fbf361..3b7cf0d51 100644
--- a/lib/rules/headers/details-summary.js
+++ b/lib/rules/headers/details-summary.js
@@ -6,9 +6,13 @@ const self = {
rule: 'docIDFormat',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const details = sr.jsDocument.querySelector('.head details');
if (!details) {
sr.error(self, 'no-details');
@@ -37,4 +41,4 @@ exports.check = function (sr, done) {
}
return done();
-};
+}
diff --git a/lib/rules/headers/div-head.js b/lib/rules/headers/div-head.js
index 2b76ba606..89b4b97b5 100644
--- a/lib/rules/headers/div-head.js
+++ b/lib/rules/headers/div-head.js
@@ -6,8 +6,12 @@ const self = {
rule: 'divClassHead',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
sr.checkSelector('body div.head', self, done);
-};
+}
diff --git a/lib/rules/headers/dl.js b/lib/rules/headers/dl.js
index aece43660..4f39d004f 100644
--- a/lib/rules/headers/dl.js
+++ b/lib/rules/headers/dl.js
@@ -1,5 +1,3 @@
-/* eslint-disable */
-
// must have dl, with:
// dts containing "This Version", "Latest Version", "Previous Version" in that order
// this version is https://www.w3.org/TR/2013/WD-shortname-2013MMDD/
@@ -7,8 +5,6 @@
// #w3c-state date and this version date must match
// dt for editor or author
-const superagent = require('superagent');
-
const self = {
name: 'headers.dl',
section: 'front-matter',
@@ -34,7 +30,7 @@ const editorError = {
section: 'front-matter',
rule: 'editorSection',
};
-exports.name = self.name;
+export const name = self.name;
/**
* Check if link and href are consistent.
@@ -43,7 +39,8 @@ exports.name = self.name;
*/
function checkLink({ sr, rule = self, element, linkName, mustHave = true }) {
if (!element || !element.href) {
- if (mustHave) sr.error(rule, 'not-found', { linkName });
+ if (mustHave)
+ sr.error(rule, 'not-found', { linkName, message: linkName });
return false;
}
const text = sr.norm(element.textContent).trim();
@@ -52,17 +49,13 @@ function checkLink({ sr, rule = self, element, linkName, mustHave = true }) {
return true;
}
-exports.check = async function (sr, done) {
+export async function check(sr, done) {
const { rescinds } = sr.config;
- const { obsoletes } = sr.config;
- const { supersedes } = sr.config;
const subType = sr.config.submissionType;
let topLevel = 'TR';
let thisURI = '';
- let latestURI = '';
- if (subType === 'member') topLevel = 'Submission';
- else if (subType === 'team') topLevel = 'TeamSubmission';
+ if (subType === 'member') topLevel = 'submissions';
const dts = sr.extractHeaders();
if (!dts.This) sr.error(self, 'this-version');
@@ -70,24 +63,13 @@ exports.check = async function (sr, done) {
if (!dts.History) sr.error(self, 'no-history');
if (rescinds && !dts.Rescinds) sr.error(self, 'rescinds');
if (!rescinds && dts.Rescinds) sr.warning(self, 'rescinds-not-needed');
- if (obsoletes && !dts.Obsoletes) sr.error(self, 'obsoletes');
- if (!obsoletes && dts.Obsoletes) sr.warning(self, 'obsoletes-not-needed');
- if (supersedes && !dts.Supersedes) sr.error(self, 'supersedes');
- if (!supersedes && dts.Supersedes)
- sr.warning(self, 'supersedes-not-needed');
if (dts.This && dts.Latest && dts.This.pos > dts.Latest.pos)
sr.error(self, 'this-latest-order');
// TODO: What's the order for History?
if (dts.Latest && dts.Rescinds && dts.Latest.pos > dts.Rescinds.pos)
sr.error(self, 'latest-rescinds-order');
- if (dts.Latest && dts.Obsoletes && dts.Latest.pos > dts.Obsoletes.pos)
- sr.error(self, 'latest-obsoletes-order');
- if (dts.Latest && dts.Supersedes && dts.Latest.pos > dts.Supersedes.pos)
- sr.error(self, 'latest-supersedes-order');
- let shortname;
- let seriesShortname;
let matches;
if (dts.This) {
@@ -113,12 +95,6 @@ exports.check = async function (sr, done) {
const year2 = matches[3] * 1;
const month = matches[4] * 1;
const day = matches[5] * 1;
- [, , shortname] = matches;
- const pattern = /-?\d[\d.]*$/;
- const dashPattern = /\d[\d.]*-/;
- seriesShortname = shortname
- .replace(pattern, '')
- .replace(dashPattern, '-');
if (docDate) {
if (
year !== docDate.getFullYear() ||
@@ -132,8 +108,6 @@ exports.check = async function (sr, done) {
}
}
- let sn;
-
if (dts.Latest) {
const linkLate = dts.Latest.dd.querySelector('a');
const exist = checkLink({
@@ -148,91 +122,21 @@ exports.check = async function (sr, done) {
matches = (linkLate.getAttribute('href') || '')
.trim()
.match(new RegExp(lateRex));
- if (matches) {
- sn = matches[1];
- // latest version link can be the shortlink or the series shortlink
- if (sn === shortname) {
- latestURI = linkLate.textContent;
- } else if (sn === seriesShortname) {
- latestURI = `https://www.w3.org/TR/${shortname}/`;
- }
- if (sn !== shortname && sn !== seriesShortname)
- sr.error(self, 'this-latest-shortname', {
- thisShortname: shortname,
- latestShortname: sn,
- });
- } else sr.error(latestError, 'latest-syntax');
+
+ if (!matches) {
+ sr.error(latestError, 'latest-syntax');
+ }
}
}
if (dts.History) {
const linkHistory = dts.History.dd.querySelector('a');
- const exist = checkLink({
+ checkLink({
sr,
rule: historyError,
element: linkHistory,
linkName: 'History',
});
- if (exist) {
- // e.g. https://www.w3.org/standards/history/hr-time-10086
- const historyReg =
- /^https:\/\/www\.w3\.org\/standards\/history\/(.+)$/;
- matches = (linkHistory.getAttribute('href') || '')
- .trim()
- .match(historyReg);
- if (matches) {
- const [, historyShortname] = matches;
- if (historyShortname !== shortname) {
- sr.error(historyError, 'history-syntax', { shortname });
- } else {
- const historyHref = linkHistory.getAttribute('href');
- // Check if the history link exist
- let historyStatusCode;
- const doAsync = require('doasync');
- try {
- const res = await doAsync(superagent).head(historyHref);
- historyStatusCode = res.statusCode;
- } catch (err) {
- historyStatusCode = err.status;
- }
- var hasPreviousVersion = !(await sr.isFP());
- if (hasPreviousVersion && historyStatusCode === 404) {
- // it's a none FP spec, but the history page doesn't exist. There should be a 'valid' previous-shortname.
- const previousShortname = linkHistory.getAttribute(
- 'data-previous-shortname'
- );
- if (previousShortname) {
- // prettier-ignore
- sr.warning(historyError, 'this-previous-shortname',
- {
- previousShortname,
- thisShortname: shortname,
- }
- );
-
- // check previous shortname is valid.
- const previousHistoryHref = `https://www.w3.org/standards/history/${previousShortname}`;
- let previousHistoryStatusCode;
- try {
- const res = await doAsync(superagent).head(
- previousHistoryHref
- );
- previousHistoryStatusCode = res.statusCode;
- } catch (err) {
- previousHistoryStatusCode = err.status;
- }
-
- if (previousHistoryStatusCode === 404) {
- sr.error(historyError, 'history-bad-previous', {
- previousShortname,
- url: previousHistoryHref,
- });
- }
- }
- }
- }
- }
- }
}
if (dts.Rescinds) {
@@ -243,68 +147,17 @@ exports.check = async function (sr, done) {
element: linkRescinds,
linkName: 'Rescinds this Recommendation',
});
- if (exist) {
- matches = (linkRescinds.getAttribute('href') || '')
- .trim()
- .match(
- /^https:\/\/www\.w3\.org\/TR\/\d{4}\/REC-(.+)-\d{8}\/?$/
- );
- if (matches) {
- sn = matches[1];
- if (sn !== shortname)
- sr.error(self, 'this-rescinds-shortname', {
- rescindsShortname: sn,
- thisShortname: shortname,
- });
- } else sr.error(self, 'rescinds-syntax');
- }
- }
- if (dts.Obsoletes) {
- const linkObsl = dts.Obsoletes.dd.querySelector('a');
- const exist = checkLink({
- sr,
- rule: self,
- element: linkObsl,
- linkName: 'Obsoletes this Recommendation',
- });
if (exist) {
- matches = (linkObsl.getAttribute('href') || '')
+ matches = (linkRescinds.getAttribute('href') || '')
.trim()
.match(
/^https:\/\/www\.w3\.org\/TR\/\d{4}\/REC-(.+)-\d{8}\/?$/
);
- if (matches) {
- sn = matches[1];
- if (sn !== shortname)
- sr.error(self, 'this-obsoletes-shortname', {
- obsoletesShortname: sn,
- thisShortname: shortname,
- });
- } else sr.error(self, 'obsoletes-syntax');
- }
- }
- if (dts.Supersedes) {
- const linkSpsd = dts.Supersedes.dd.querySelector('a');
- const exist = checkLink({
- sr,
- rule: self,
- element: linkSpsd,
- linkName: 'Supersedes this Recommendation',
- });
-
- if (exist) {
- matches = (linkSpsd.getAttribute('href') || '')
- .trim()
- .match(
- /^https:\/\/www\.w3\.org\/TR\/\d{4}\/REC-(.+)-\d{8}\/?$/
- );
- if (matches) {
- sn = matches[1];
- if (sn !== shortname)
- sr.error(self, 'this-supersedes-shortname');
- } else sr.error(self, 'supersedes-syntax');
+ if (!matches) {
+ sr.error(self, 'rescinds-syntax');
+ }
}
}
@@ -359,7 +212,9 @@ exports.check = async function (sr, done) {
const editors = dts.Editor.dd;
// 'missingElement' is array of HTML elements without editorId
const missingElement = editors.filter(
- editor => !editor.dataset.editorId
+ editor =>
+ !editor.dataset.editorId &&
+ !editor.textContent.match(/(working|interest) group/i)
);
if (missingElement.length) {
sr.error(editorError, 'editor-missing-id', {
@@ -372,5 +227,6 @@ exports.check = async function (sr, done) {
// should at least have 1 editor
sr.error(editorError, 'editor-not-found');
}
+
done();
-};
+}
diff --git a/lib/rules/headers/editor-participation.js b/lib/rules/headers/editor-participation.js
new file mode 100644
index 000000000..dda4d3c2b
--- /dev/null
+++ b/lib/rules/headers/editor-participation.js
@@ -0,0 +1,37 @@
+import w3cApi from 'node-w3capi';
+
+const self = {
+ name: 'headers.editor-participation',
+ section: 'front-matter',
+ rule: 'editorSection',
+};
+export const name = self.name;
+
+export async function check(sr, done) {
+ const groups = await sr.getDelivererIDs();
+ const editors = await sr.getEditorIDs();
+
+ const groupUsersPromises = [];
+ groups.forEach(id => {
+ groupUsersPromises.push(
+ new Promise(resolve =>
+ w3cApi
+ .group(id)
+ .users()
+ .fetch({ embed: true }, (err, data) => {
+ resolve(data.map(user => user.id));
+ })
+ )
+ );
+ });
+
+ const userIds = (await Promise.all(groupUsersPromises)).flat();
+
+ editors.forEach(id => {
+ if (!userIds.includes(id)) {
+ sr.error(self, 'not-participating', { id });
+ }
+ });
+
+ done();
+}
diff --git a/lib/rules/headers/errata.js b/lib/rules/headers/errata.js
index e42c5bd3c..b5fdffcd5 100644
--- a/lib/rules/headers/errata.js
+++ b/lib/rules/headers/errata.js
@@ -2,11 +2,32 @@
const self = {
name: 'headers.errata',
+ section: 'front-matter',
+ rule: 'docIDOrder',
};
-exports.name = self.name;
+export const { name } = self;
+
+// Check if document is Recommendation, and uses inline changes(REC with Candidate/Proposed changes)
+function isRECWithChanges(sr) {
+ if (sr.config.status !== 'REC') {
+ return false;
+ }
+
+ const recMeta = sr.getRecMetadata({});
+ return Object.values(recMeta).length !== 0;
+}
+
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
+ // for REC with Candidate/Proposed changes, no need to check errata link
+ if (isRECWithChanges(sr)) {
+ return done();
+ }
-exports.check = function (sr, done) {
const dts = sr.extractHeaders();
// Check 'Errata:' exist, don't check any further.
if (!dts.Errata) {
@@ -14,4 +35,4 @@ exports.check = function (sr, done) {
return done();
}
return done();
-};
+}
diff --git a/lib/rules/headers/github-repo.js b/lib/rules/headers/github-repo.js
index 2497485bd..0b3a5fafc 100644
--- a/lib/rules/headers/github-repo.js
+++ b/lib/rules/headers/github-repo.js
@@ -8,9 +8,13 @@ const self = {
rule: 'docIDOrder',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const dts = sr.extractHeaders();
// Check 'Feedback:' exist
if (!dts.Feedback) {
@@ -38,4 +42,4 @@ exports.check = function (sr, done) {
if (!foundRepo) sr.error(self, 'no-repo');
done();
-};
+}
diff --git a/lib/rules/headers/h1-title.js b/lib/rules/headers/h1-title.js
index 3538dc127..07fa4199c 100644
--- a/lib/rules/headers/h1-title.js
+++ b/lib/rules/headers/h1-title.js
@@ -6,9 +6,13 @@ const self = {
rule: 'title',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const title = sr.jsDocument.querySelector('head > title');
const h1 = sr.jsDocument.querySelector('body div.head h1');
if (!title || !h1) {
@@ -23,4 +27,4 @@ exports.check = function (sr, done) {
sr.error(self, 'not-match', { titleText, h1Text });
}
done();
-};
+}
diff --git a/lib/rules/headers/h2-toc.js b/lib/rules/headers/h2-toc.js
index 2e282b805..69e1cb430 100644
--- a/lib/rules/headers/h2-toc.js
+++ b/lib/rules/headers/h2-toc.js
@@ -10,9 +10,13 @@ const self = {
rule: 'toc',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const EXPECTED_HEADING = /^table\s+of\s+contents$/i;
const tocNav = sr.jsDocument.querySelectorAll('nav#toc > h2');
const tocDiv = sr.jsDocument.querySelectorAll('div#toc > h2');
@@ -36,4 +40,4 @@ exports.check = function (sr, done) {
}
done();
-};
+}
diff --git a/lib/rules/headers/hr.js b/lib/rules/headers/hr.js
index 2a1e3e64e..57ed46f24 100644
--- a/lib/rules/headers/hr.js
+++ b/lib/rules/headers/hr.js
@@ -4,9 +4,13 @@ const self = {
rule: 'hrAfterCopyright',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const hasHrLastChild =
sr.jsDocument.querySelectorAll('body div.head > hr:last-child')
.length === 1;
@@ -18,4 +22,4 @@ exports.check = function (sr, done) {
sr.error(self, 'not-found');
}
done();
-};
+}
diff --git a/lib/rules/headers/logo.js b/lib/rules/headers/logo.js
index 05ddf1c18..af5275ff1 100644
--- a/lib/rules/headers/logo.js
+++ b/lib/rules/headers/logo.js
@@ -4,9 +4,13 @@ const self = {
rule: 'logo',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const logo = sr.jsDocument.querySelector(
"body div.head a[href] > img[src][height='48'][width='72'][alt='W3C']"
);
@@ -22,4 +26,4 @@ exports.check = function (sr, done) {
sr.error(self, 'not-found');
}
done();
-};
+}
diff --git a/lib/rules/headers/memsub-copyright.js b/lib/rules/headers/memsub-copyright.js
index c6e737f00..5f20973fe 100644
--- a/lib/rules/headers/memsub-copyright.js
+++ b/lib/rules/headers/memsub-copyright.js
@@ -2,22 +2,26 @@ const self = {
name: 'headers.memsub-copyright',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const copyright = sr.jsDocument.querySelector('body div.head p.copyright');
if (copyright) {
- // , "https://www.w3.org/Consortium/Legal/copyright-documents": "document use"
+ // , "https://www.w3.org/copyright/document-license/": "document use"
const seen = Array.prototype.some.call(
copyright.querySelectorAll('a[href]'),
a =>
a
.getAttribute('href')
.indexOf(
- 'https://www.w3.org/Consortium/Legal/copyright-documents'
+ 'https://www.w3.org/copyright/document-license/'
) === 0
);
if (!seen) sr.error(self, 'not-found');
} else sr.error(self, 'not-found');
done();
-};
+}
diff --git a/lib/rules/headers/ol-toc.js b/lib/rules/headers/ol-toc.js
index dac39eb69..692c521da 100644
--- a/lib/rules/headers/ol-toc.js
+++ b/lib/rules/headers/ol-toc.js
@@ -9,9 +9,13 @@ const self = {
rule: 'toc',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const toc = sr.jsDocument.querySelectorAll(
'nav#toc ol.toc, div#toc ol.toc'
);
@@ -21,4 +25,4 @@ exports.check = function (sr, done) {
}
done();
-};
+}
diff --git a/lib/rules/headers/secno.js b/lib/rules/headers/secno.js
index 5eebf2d89..f2e66cffe 100644
--- a/lib/rules/headers/secno.js
+++ b/lib/rules/headers/secno.js
@@ -6,9 +6,13 @@ const self = {
name: 'headers.secno',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
// TODO: once supported, use: ":is(h2, h3, h4, h5, h6) :is(bdi.secno,span.secno)"
const secnos = sr.jsDocument.querySelectorAll(
'h1 span.secno, h2 span.secno, h3 span.secno, h4 span.secno, h5 span.secno, h6 span.secno, #toc span.secno,' +
@@ -20,4 +24,4 @@ exports.check = function (sr, done) {
}
done();
-};
+}
diff --git a/lib/rules/headers/shortname.js b/lib/rules/headers/shortname.js
new file mode 100644
index 000000000..175feab0b
--- /dev/null
+++ b/lib/rules/headers/shortname.js
@@ -0,0 +1,200 @@
+// This rule is to check shortnames mentioned in dts
+// this version is https://www.w3.org/TR/2013/WD-shortname-2013MMDD/
+// latest version is https://www.w3.org/TR/shortname/
+
+import superagent from 'superagent';
+import doAsync from 'doasync';
+
+const self = {
+ name: 'headers.shortname',
+ section: 'front-matter',
+ rule: 'docIDFormat',
+};
+const thisError = {
+ name: 'headers.shortname',
+ section: 'front-matter',
+ rule: 'docIDThisVersion',
+};
+const historyError = {
+ name: 'headers.shortname',
+ section: 'front-matter',
+ rule: 'docIDHistory',
+};
+export const name = self.name;
+
+export async function check(sr, done) {
+ const subType = sr.config.submissionType;
+ let topLevel = 'TR';
+ let thisURI = '';
+
+ if (subType === 'member') topLevel = 'submissions';
+
+ const dts = sr.extractHeaders();
+
+ let shortname;
+ let seriesShortname;
+ let matches;
+
+ if (dts.This) {
+ const linkThis = dts.This.dd.querySelector('a');
+
+ if (linkThis && linkThis.href) {
+ const vThisRex = `^https:\\/\\/www\\.w3\\.org\\/${topLevel}\\/(\\d{4})\\/${
+ sr.config.status || '[A-Z]+'
+ }-(.+)-(\\d{4})(\\d\\d)(\\d\\d)\\/?$`;
+ matches = (linkThis.getAttribute('href') || '')
+ .trim()
+ .match(new RegExp(vThisRex));
+ if (matches) {
+ [thisURI] = matches;
+ [, , shortname] = matches;
+ const pattern = /-?\d[\d.]*$/;
+ const dashPattern = /\d[\d.]*-/;
+ seriesShortname = shortname
+ .replace(pattern, '')
+ .replace(dashPattern, '-');
+
+ // Require new /TR shortnames to use lowercase.
+ const shortnameChange =
+ dts.History &&
+ dts.History.dd.querySelector('a').dataset.previousShortname;
+ const needLowercase = shortnameChange || (await sr.isFP());
+ if (needLowercase && shortname.toLowerCase() !== shortname)
+ sr.error(thisError, 'shortname-lowercase', { shortname });
+ }
+ }
+ }
+
+ let sn;
+
+ if (dts.Latest) {
+ const linkLate = dts.Latest.dd.querySelector('a');
+
+ if (linkLate && linkLate.href) {
+ const lateRex = `^https:\\/\\/www\\.w3\\.org\\/${topLevel}\\/(.+?)\\/?$`;
+ matches = (linkLate.getAttribute('href') || '')
+ .trim()
+ .match(new RegExp(lateRex));
+ if (matches) {
+ sn = matches[1];
+ // latest version link mention either shortlink or the series shortlink
+ if (sn !== shortname && sn !== seriesShortname)
+ sr.error(self, 'this-latest-shortname', {
+ thisShortname: shortname,
+ latestShortname: sn,
+ });
+ }
+ }
+ }
+
+ if (dts.History) {
+ const linkHistory = dts.History.dd.querySelector('a');
+
+ if (linkHistory && linkHistory.href) {
+ // e.g. https://www.w3.org/standards/history/hr-time-10086/
+ const historyReg =
+ /^https:\/\/www\.w3\.org\/standards\/history\/(.+?)\/?$/;
+ matches = (linkHistory.getAttribute('href') || '')
+ .trim()
+ .match(historyReg);
+ if (matches) {
+ const [, historyShortname] = matches;
+ if (historyShortname !== shortname) {
+ sr.error(historyError, 'history-syntax', { shortname });
+ } else {
+ const historyHref = linkHistory.getAttribute('href');
+ // Check if the history link exist
+ let historyStatusCode;
+ try {
+ const res = await doAsync(superagent).head(historyHref);
+ historyStatusCode = res.statusCode;
+ } catch (err) {
+ historyStatusCode = err.status;
+ }
+ var hasPreviousVersion = !(await sr.isFP());
+ if (hasPreviousVersion && historyStatusCode === 404) {
+ // it's a none FP spec, but the history page doesn't exist. There should be a 'valid' previous-shortname.
+ const previousShortname = linkHistory.getAttribute(
+ 'data-previous-shortname'
+ );
+ if (previousShortname) {
+ // prettier-ignore
+ sr.warning(historyError, 'this-previous-shortname',
+ {
+ previousShortname,
+ thisShortname: shortname,
+ }
+ );
+
+ // check previous shortname is valid.
+ const previousHistoryHref = `https://www.w3.org/standards/history/${previousShortname}/`;
+ let previousHistoryStatusCode;
+ try {
+ const res =
+ await doAsync(superagent).head(
+ previousHistoryHref
+ );
+ previousHistoryStatusCode = res.statusCode;
+ } catch (err) {
+ previousHistoryStatusCode = err.status;
+ }
+
+ if (previousHistoryStatusCode === 404) {
+ sr.error(historyError, 'history-bad-previous', {
+ previousShortname,
+ url: previousHistoryHref,
+ });
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (dts.Rescinds) {
+ const linkRescinds = dts.Rescinds.dd.querySelector('a');
+
+ if (linkRescinds && linkRescinds.href) {
+ matches = (linkRescinds.getAttribute('href') || '')
+ .trim()
+ .match(
+ /^https:\/\/www\.w3\.org\/TR\/\d{4}\/REC-(.+)-\d{8}\/?$/
+ );
+ if (matches) {
+ sn = matches[1];
+ if (sn !== shortname)
+ sr.error(self, 'this-rescinds-shortname', {
+ rescindsShortname: sn,
+ thisShortname: shortname,
+ });
+ }
+ }
+ }
+
+ // check shortname is valid.
+ const isFP = await sr.isFP();
+ // FP documents cannot use existing shortname
+ if (
+ sr.config.longStatus === 'First Public Working Draft' &&
+ !isFP &&
+ shortname
+ ) {
+ sr.error(self, 'shortname-existed');
+ }
+
+ // non-initial state documents should use existing shortname
+ // TODO: Registry and Note track?
+ if (
+ sr.config.track === 'Recommendation' &&
+ sr.config.longStatus !== 'First Public Working Draft' &&
+ isFP &&
+ shortname
+ ) {
+ sr.error(self, 'shortname-not-existed', {
+ status: sr.config.longStatus,
+ });
+ }
+
+ done();
+}
diff --git a/lib/rules/headers/subm-logo.js b/lib/rules/headers/subm-logo.js
index 4e18dbbb2..8ac1ede32 100644
--- a/lib/rules/headers/subm-logo.js
+++ b/lib/rules/headers/subm-logo.js
@@ -2,9 +2,13 @@ const self = {
name: 'headers.subm-logo',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const logo = sr.jsDocument.querySelector(
"body div.head a[href] > img[src][height='48'][width='211'][alt]"
);
@@ -13,7 +17,7 @@ exports.check = function (sr, done) {
member: {
alt: 'W3C Member Submission',
src: /^(https:)?\/\/www\.w3\.org\/Icons\/member_subm(\.png|\.gif)?$/,
- href: /^(https:)?\/\/www\.w3\.org\/Submission\/?$/,
+ href: /^(https:)?\/\/www\.w3\.org\/submissions\/?$/,
},
};
if (
@@ -27,4 +31,4 @@ exports.check = function (sr, done) {
});
}
done();
-};
+}
diff --git a/lib/rules/headers/w3c-state.js b/lib/rules/headers/w3c-state.js
index a336e5fc6..b3f52ab7c 100644
--- a/lib/rules/headers/w3c-state.js
+++ b/lib/rules/headers/w3c-state.js
@@ -1,4 +1,6 @@
-const rules = require('../../rules.json');
+import { importJSON } from '../../util.js';
+
+const rules = importJSON('../../rules.json', import.meta.url);
const self = {
name: 'headers.w3c-state',
@@ -6,9 +8,13 @@ const self = {
rule: 'dateState',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
let profileFound = false;
if (!sr.config.longStatus) return done();
@@ -49,12 +55,14 @@ exports.check = function (sr, done) {
if (sr.config.longStatus === 'First Public Working Draft') {
hash = 'FPWD';
}
- const expectedLink = `https://www.w3.org/standards/types#${hash}`;
+ const expectedLink = new RegExp(
+ `https://www.w3.org/standards/types/?#${hash}`
+ );
if (!standardLink) {
sr.error(self, 'no-w3c-state-link');
- } else if (standardLink.href !== expectedLink) {
+ } else if (!expectedLink.test(standardLink.href)) {
sr.error(self, 'wrong-w3c-state-link', {
- expectedLink,
+ hash,
linkFound: standardLink.href,
text: sr.norm(standardLink.textContent),
});
@@ -62,4 +70,4 @@ exports.check = function (sr, done) {
}
done();
-};
+}
diff --git a/lib/rules/heuristic/date-format.js b/lib/rules/heuristic/date-format.js
index 77c116449..93484959d 100644
--- a/lib/rules/heuristic/date-format.js
+++ b/lib/rules/heuristic/date-format.js
@@ -1,21 +1,25 @@
+import { possibleMonths } from '../../validator.js';
+
const self = {
name: 'heuristic.date-format',
section: 'document-status',
rule: 'datesFormat',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
// Pseudo-constants:
- const MONTHS =
- 'jan|january|feb|february|mar|march|apr|april|may|jun|june|jul|july|aug|august|sep|september|oct|october|nov|november|dec|december';
const POSSIBLE_DATE = new RegExp(
- `\\b([0123]?\\d|${MONTHS})[\\ \\-\\/–—]([0123]?\\d|${MONTHS})[\\ \\-\\/–—]([\\'‘’]?\\d{2})(\\d\\d)?\\b`,
+ `\\b([0123]?\\d|${possibleMonths})[\\ \\-\\/–—]([0123]?\\d|${possibleMonths})[\\ \\-\\/–—]([\\'‘’]?\\d{2})(\\d\\d)?\\b`,
'gi'
);
const EXPECTED_DATE_FORMAT = new RegExp(
- `[0123]?\\d\\ (${MONTHS})\\ \\d{4}`,
+ `[0123]?\\d\\ (${possibleMonths})\\ \\d{4}`,
'i'
);
@@ -46,4 +50,4 @@ exports.check = function (sr, done) {
}
return done();
-};
+}
diff --git a/lib/rules/links/compound.js b/lib/rules/links/compound.js
index c99e6d640..19c21547c 100644
--- a/lib/rules/links/compound.js
+++ b/lib/rules/links/compound.js
@@ -1,14 +1,18 @@
-const url = require('url');
-const sua = require('../../throttled-ua');
+import url from 'url';
+import { get } from '../../throttled-ua.js';
const self = {
name: 'links.compound',
};
const TIMEOUT = 10000;
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
if (sr.config.validation !== 'recursive') {
sr.warning(self, 'skipped');
return done();
@@ -33,8 +37,7 @@ exports.check = function (sr, done) {
if (sr.config.validation === 'recursive') {
const ua = `W3C-Pubrules/${sr.version}`;
let isMarkupValid = false;
- const req = sua
- .get(markupService)
+ const req = get(markupService)
.set('User-Agent', ua)
.query({ doc: l, out: 'json' })
.on('error', err => {
@@ -82,4 +85,4 @@ exports.check = function (sr, done) {
}
});
} else return done();
-};
+}
diff --git a/lib/rules/links/internal.js b/lib/rules/links/internal.js
index 5a301cb75..7d179316e 100644
--- a/lib/rules/links/internal.js
+++ b/lib/rules/links/internal.js
@@ -4,9 +4,13 @@ const self = {
rule: 'brokenLink',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
sr.jsDocument.querySelectorAll("a[href^='#']").forEach(element => {
const id = element.getAttribute('href').replace('#', '');
const escId = id.replace(/([.()#:[\]+*])/g, '\\$1');
@@ -18,4 +22,4 @@ exports.check = function (sr, done) {
}
});
done();
-};
+}
diff --git a/lib/rules/links/linkchecker.js b/lib/rules/links/linkchecker.js
index ef1c29e56..b52f482c6 100644
--- a/lib/rules/links/linkchecker.js
+++ b/lib/rules/links/linkchecker.js
@@ -1,5 +1,5 @@
// Check every sources(img, stylesheets, scripts) are in same folder as spec document, and they are reachable.
-const puppeteer = require('puppeteer');
+import puppeteer from 'puppeteer';
const self = {
name: 'links.linkchecker',
@@ -14,11 +14,15 @@ const compound = {
};
const allowList = [
- /^https:\/\/www.w3.org\/StyleSheets/,
- /^https:\/\/www.w3.org\/scripts/,
+ /^https:\/\/www.w3.org\/StyleSheets\//,
+ /^https:\/\/www.w3.org\/scripts\//,
'https://www.w3.org/TR/tr-outdated-spec',
- /^https:\/\/www.w3.org\/analytics\/piwik/,
- /^https:\/\/test.csswg.org\/harness/,
+ /^https:\/\/www.w3.org\/analytics\/piwik\//,
+ /^https:\/\/test.csswg.org\/harness\//,
+ /^https:\/\/www.w3.org\/assets\//,
+ /^https:\/\/static.cloudflareinsights.com\/beacon\.min\.js/,
+ /^https:\/\/www.w3.org\/Icons\/member_subm\.png/,
+ /^https:\/\/www.w3.org\/favicon\.ico/,
/^data:/,
];
const noRespondAllowList = [
@@ -26,7 +30,7 @@ const noRespondAllowList = [
'https://www.w3.org/analytics/piwik/matomo.js',
];
-exports.name = self.name;
+export const { name } = self;
/**
* @param url
@@ -57,7 +61,11 @@ function includedByReg(url, regArray = allowList) {
});
}
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
// send out warning for /nu W3C link checker.
sr.warning(self, 'display', { link: sr.url });
@@ -70,17 +78,20 @@ exports.check = async function (sr, done) {
// - image (pass): https://www.w3.org/TR/2021/WD-pubrules-20210401/images/sample.png
// - image (pass): https://www.w3.org/TR/2021/WD-pubrules-20210401/sample.png
// - image (error): https://w3c.github.io/pubrules/sample.png
- const browser = await puppeteer.launch();
+ const browser = await puppeteer.launch({
+ headless: true,
+ args: ['--disable-gpu'],
+ });
const page = await browser.newPage();
+ const docPath = sr.url.replace(/\/[^/]+$/, '/').replace(/^https?:/, '');
page.on('response', response => {
const url = simplifyURL(response.url());
const { referer } = response.request().headers();
- const docPath = sr.url.replace(/\/[^/]+$/, '/');
// check if resource is in same folder as base document
if (
- !url.startsWith(docPath) &&
+ !url.replace(/^https?:/, '').startsWith(docPath) &&
!(includedByReg(url) || includedByReg(referer)) &&
url !== sr.url
) {
@@ -114,4 +125,4 @@ exports.check = async function (sr, done) {
await browser.close();
done();
-};
+}
diff --git a/lib/rules/links/reliability.js b/lib/rules/links/reliability.js
index 18d0f456b..0da069c55 100644
--- a/lib/rules/links/reliability.js
+++ b/lib/rules/links/reliability.js
@@ -3,7 +3,7 @@ const self = {
section: 'document-body',
};
-exports.name = self.name;
+export const { name } = self;
const unreliableServices = [
{ domain: 'w3.org', path: /^\/Bugs/ },
@@ -18,7 +18,11 @@ const unreliableServices = [
// { domain: 'w3.org', path: /track(er)?\/(actions|issues|resolutions)/}
];
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
Array.prototype.some.call(sr.jsDocument.querySelectorAll('a'), element => {
let url;
try {
@@ -49,4 +53,4 @@ exports.check = function (sr, done) {
});
});
done();
-};
+}
diff --git a/lib/rules/metadata/charters.js b/lib/rules/metadata/charters.js
index 52c6a4c5d..3727c7b15 100644
--- a/lib/rules/metadata/charters.js
+++ b/lib/rules/metadata/charters.js
@@ -4,10 +4,14 @@
// 'self.name' would be 'metadata.charters'
-exports.name = 'metadata.charters';
+export const name = 'metadata.charters';
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const charters = await sr.getCharters();
return done({ charters });
-};
+}
diff --git a/lib/rules/metadata/deliverers.js b/lib/rules/metadata/deliverers.js
index 7efac0f91..d6e8884f1 100644
--- a/lib/rules/metadata/deliverers.js
+++ b/lib/rules/metadata/deliverers.js
@@ -3,10 +3,14 @@
*/
// 'self.name' would be 'metadata.deliverers'
-exports.name = 'metadata.deliverers';
+export const name = 'metadata.deliverers';
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const ids = await sr.getDelivererIDs();
done({ delivererIDs: ids });
-};
+}
diff --git a/lib/rules/metadata/dl.js b/lib/rules/metadata/dl.js
index ba543f8e6..85ce91f7c 100644
--- a/lib/rules/metadata/dl.js
+++ b/lib/rules/metadata/dl.js
@@ -2,15 +2,21 @@
* Pseudo-rule for metadata extraction: dl.
*/
+import { get } from '../../throttled-ua.js';
+
const latestRule = {
name: 'metadata.dl',
section: 'front-matter',
rule: 'docIDLatestVersion',
};
-exports.name = 'metadata.dl';
+export const name = 'metadata.dl';
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const dts = sr.extractHeaders();
const result = {};
let shortname;
@@ -69,9 +75,8 @@ exports.check = async function (sr, done) {
(month[1] ? month : `0${month[0]}`) +
(day[1] ? day : `0${day[0]}`);
const endpoint = `https://api.w3.org/specifications/${latestShortname}/versions/${formattedDate}`;
- const sua = require('../../throttled-ua');
- const req = sua.get(endpoint).set('User-Agent', ua);
+ const req = get(endpoint).set('User-Agent', ua);
req.query({ apikey });
req.end((err, res) => {
result.updated = !(err || !res.ok);
@@ -80,4 +85,4 @@ exports.check = async function (sr, done) {
} else {
sr.throw('[EXCEPTION] The document date could not be parsed.');
}
-};
+}
diff --git a/lib/rules/metadata/docDate.js b/lib/rules/metadata/docDate.js
index 41cb0a966..58565d89f 100644
--- a/lib/rules/metadata/docDate.js
+++ b/lib/rules/metadata/docDate.js
@@ -3,9 +3,13 @@
*/
// 'self.name' would be 'metadata.docDate'
-exports.name = 'metadata.docDate';
+export const name = 'metadata.docDate';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const docDate = sr.getDocumentDate();
if (!docDate) {
return done();
@@ -16,4 +20,4 @@ exports.check = function (sr, done) {
docDate.getDate(),
].join('-');
return done({ docDate: d });
-};
+}
diff --git a/lib/rules/metadata/editor-ids.js b/lib/rules/metadata/editor-ids.js
index 7865e065a..24632fdaf 100644
--- a/lib/rules/metadata/editor-ids.js
+++ b/lib/rules/metadata/editor-ids.js
@@ -3,8 +3,12 @@
*/
// 'self.name' would be 'metadata.editor-ids'
-exports.name = 'metadata.editor-ids';
+export const name = 'metadata.editor-ids';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
return done({ editorIDs: sr.getEditorIDs() });
-};
+}
diff --git a/lib/rules/metadata/editor-names.js b/lib/rules/metadata/editor-names.js
index d2eb13b9d..7cf6aff5e 100644
--- a/lib/rules/metadata/editor-names.js
+++ b/lib/rules/metadata/editor-names.js
@@ -3,9 +3,13 @@
*/
// 'self.name' would be 'metadata.editor-names'
-exports.name = 'metadata.editor-names';
+export const name = 'metadata.editor-names';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const dts = sr.extractHeaders();
const result = [];
if (dts.Editor) {
@@ -18,4 +22,4 @@ exports.check = function (sr, done) {
});
}
return done({ editorNames: result });
-};
+}
diff --git a/lib/rules/metadata/errata.js b/lib/rules/metadata/errata.js
index 608a30b9f..a29faa849 100644
--- a/lib/rules/metadata/errata.js
+++ b/lib/rules/metadata/errata.js
@@ -4,16 +4,20 @@
// 'self.name' would be 'metadata.errata'
-exports.name = 'metadata.errata';
+export const name = 'metadata.errata';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const errataRegex = /errata/i;
const linkElement = sr.jsDocument.querySelectorAll(
- 'body div.head dl + p > a'
+ 'body div.head details + p > a'
);
const errata = Array.prototype.filter.call(linkElement, element =>
errataRegex.test(element.textContent)
);
if (!errata.length || !errata[0].getAttribute('href')) done();
else done({ errata: errata[0].getAttribute('href') });
-};
+}
diff --git a/lib/rules/metadata/informative.js b/lib/rules/metadata/informative.js
index bdb6eb472..ad0438844 100644
--- a/lib/rules/metadata/informative.js
+++ b/lib/rules/metadata/informative.js
@@ -3,9 +3,13 @@
*/
// 'self.name' would be 'metadata.informative'
-exports.name = 'metadata.informative';
+export const name = 'metadata.informative';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
const expected = /This\s+document\s+is\s+informative\s+only\./;
let isInformative = false;
@@ -22,4 +26,4 @@ exports.check = function (sr, done) {
return done({
informative: expected.test(sotd && sotd.textContent) || isInformative,
});
-};
+}
diff --git a/lib/rules/metadata/patent-policy.js b/lib/rules/metadata/patent-policy.js
index f04c29ff4..88d98a6a7 100644
--- a/lib/rules/metadata/patent-policy.js
+++ b/lib/rules/metadata/patent-policy.js
@@ -4,9 +4,13 @@
// 'self.name' would be 'metadata.patent-policy'
-exports.name = 'metadata.patent-policy';
+export const name = 'metadata.patent-policy';
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const patentPolicies = await sr.getPatentPolicies();
return done({ patentPolicy: patentPolicies[0] });
-};
+}
diff --git a/lib/rules/metadata/process.js b/lib/rules/metadata/process.js
index fc5ecaa3b..7c5a2bbbd 100644
--- a/lib/rules/metadata/process.js
+++ b/lib/rules/metadata/process.js
@@ -8,14 +8,24 @@
// , rule: 'whichProcess'
// };
-exports.name = 'metadata.process';
+export const name = 'metadata.process';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const processDocument = sr.jsDocument.querySelector(
'a#w3c_process_revision'
);
- if (!processDocument || !processDocument.getAttribute('href')) {
+ const processDocumentHref =
+ processDocument && processDocument.getAttribute('href');
+ if (!processDocumentHref) {
return done();
}
- return done({ process: processDocument.getAttribute('href') });
-};
+ const process =
+ processDocumentHref === 'https://www.w3.org/2023/Process-20231103/'
+ ? 'https://www.w3.org/policies/process/20231103/'
+ : processDocumentHref;
+ return done({ process });
+}
diff --git a/lib/rules/metadata/profile.js b/lib/rules/metadata/profile.js
index 486a069b0..7db3f78bc 100644
--- a/lib/rules/metadata/profile.js
+++ b/lib/rules/metadata/profile.js
@@ -3,16 +3,20 @@
*/
// Internal packages:
-const w3cApi = require('node-w3capi');
-const rules = require('../../rules.json');
-const util = require('../../util');
+import { allProfiles, importJSON } from '../../util.js';
+import { sortedProfiles } from '../../views.js';
+import { check as getTitle } from './title.js';
-w3cApi.apiKey = process.env.W3C_API_KEY;
+const rules = importJSON('../../rules.json', import.meta.url);
// 'self.name' would be 'metadata.profile'
-exports.name = 'metadata.profile';
+export const name = 'metadata.profile';
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
let matchedLength = 0;
let id;
let profileNode;
@@ -68,7 +72,7 @@ exports.check = async function (sr, done) {
// implementation report
if (['CR', 'CRD', 'PR', 'REC'].indexOf(id) > -1) {
const dts = sr.extractHeaders();
- if (dts.Implementation) {
+ if (dts.Implementation?.dd?.querySelector('a')) {
meta.implementationReport =
dts.Implementation.dd.querySelector('a').href;
}
@@ -78,7 +82,6 @@ exports.check = async function (sr, done) {
}
// Get 'track/rectrack' of the document based on id
- const { allProfiles } = util;
const profileRex = new RegExp(
`SUBM|(TR/(Registry|Recommendation|Note))/(${id}).js`
);
@@ -123,7 +126,6 @@ exports.check = async function (sr, done) {
}
assembleMeta(id, sr);
} else {
- const getTitle = require('./title').check;
let docTitle;
await getTitle(sr, result => {
docTitle = result && result.title;
@@ -137,7 +139,6 @@ exports.check = async function (sr, done) {
'link[href^="https://www.w3.org/StyleSheets/TR/"]'
)
) {
- const { sortedProfiles } = require('../../views');
let profileList = '';
sortedProfiles.forEach(category => {
profileList += `${category.name}<p>This specification is a <a href=\"https://www.w3.org/policies/process/20231103/#rec-rescind\">@{param1} Recommendation</a>. A newer specification exists that is recommended for new adoption in place of this specification. </p>
<p>This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.</p>
<p>For purposes of the W3C Patent Policy, this @{param1} Recommendation has the same status as an active Recommendation; it retains licensing commitments and remains available as a reference for old -- and possibly still deployed -- implementations, but is not recommended for future implementation. New implementations should follow the
<a href='@@'>
latest version</a>
of the @@ specification.</p>`;
@@ -155,4 +156,4 @@ exports.check = async function (sr, done) {
);
}
}
-};
+}
diff --git a/lib/rules/metadata/title.js b/lib/rules/metadata/title.js
index 5cf23e5b7..639e58cb1 100644
--- a/lib/rules/metadata/title.js
+++ b/lib/rules/metadata/title.js
@@ -4,9 +4,13 @@
// 'self.name' would be 'metadata.title'
-exports.name = 'metadata.title';
+export const name = 'metadata.title';
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const title = sr.jsDocument.querySelector('body div.head h1');
if (!title) {
return done();
@@ -17,4 +21,4 @@ exports.check = function (sr, done) {
return done({
title: sr.norm(title.textContent),
});
-};
+}
diff --git a/lib/rules/sotd/ac-review.js b/lib/rules/sotd/ac-review.js
index a7e3ca0c3..557d4086f 100644
--- a/lib/rules/sotd/ac-review.js
+++ b/lib/rules/sotd/ac-review.js
@@ -2,9 +2,13 @@ const self = {
name: 'sotd.ac-review',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
let found = false;
@@ -19,4 +23,4 @@ exports.check = function (sr, done) {
if (!found) sr.error(self, 'not-found');
}
done();
-};
+}
diff --git a/lib/rules/sotd/candidate-review-end.js b/lib/rules/sotd/candidate-review-end.js
index 8743a591e..f79c62c74 100644
--- a/lib/rules/sotd/candidate-review-end.js
+++ b/lib/rules/sotd/candidate-review-end.js
@@ -4,9 +4,13 @@ const self = {
rule: 'reviewEndDate',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const isEditorial =
(sr.config.editorial && /^true$/i.test(sr.config.editorial)) || false;
if (isEditorial) {
@@ -32,4 +36,4 @@ exports.check = function (sr, done) {
}
}
done();
-};
+}
diff --git a/lib/rules/sotd/charter.js b/lib/rules/sotd/charter.js
index 50d31c1fd..427a9d94c 100644
--- a/lib/rules/sotd/charter.js
+++ b/lib/rules/sotd/charter.js
@@ -1,18 +1,22 @@
/**
* @file This rule checks if the Group have a current charter. For IG, also check if SOTD has certain text: $charterText.
*/
+import { AB, TAG } from '../../util.js';
+
const self = {
name: 'sotd.charter',
};
-exports.name = self.name;
-
-const util = require('../../util');
+export const { name } = self;
const charterText =
/The disclosure obligations of the Participants of this group are described in the charter\./;
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
const deliverIds = await sr.getDelivererIDs();
@@ -23,8 +27,8 @@ exports.check = async function (sr, done) {
}
// Skip check if the document is only published by TAG and/or AB
- const TagID = util.TAG.id;
- const AbID = util.AB.id;
+ const TagID = TAG.id;
+ const AbID = AB.id;
// groupIds: a list of ids without TAG or AB
const groupIds = deliverIds.filter(
deliverer => ![TagID, AbID].includes(deliverer)
@@ -70,4 +74,4 @@ exports.check = async function (sr, done) {
return done();
}
-};
+}
diff --git a/lib/rules/sotd/deliverer-note.js b/lib/rules/sotd/deliverer-note.js
index 27cc28629..c85f00b2b 100644
--- a/lib/rules/sotd/deliverer-note.js
+++ b/lib/rules/sotd/deliverer-note.js
@@ -4,11 +4,15 @@ const self = {
rule: 'delivererID',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const deliverers = sr.getDataDelivererIDs();
if (deliverers.length === 0) sr.error(self, 'not-found');
done();
-};
+}
diff --git a/lib/rules/sotd/deployment.js b/lib/rules/sotd/deployment.js
index 8c2f703d0..0dd2b9efc 100644
--- a/lib/rules/sotd/deployment.js
+++ b/lib/rules/sotd/deployment.js
@@ -5,9 +5,13 @@ const self = {
rule: 'deployment',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
@@ -24,4 +28,4 @@ exports.check = function (sr, done) {
}
}
return done();
-};
+}
diff --git a/lib/rules/sotd/diff.js b/lib/rules/sotd/diff.js
index 526f2dc24..50b177449 100644
--- a/lib/rules/sotd/diff.js
+++ b/lib/rules/sotd/diff.js
@@ -4,9 +4,13 @@ const self = {
rule: 'changesList',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
sr.info(self, 'note');
return done();
-};
+}
diff --git a/lib/rules/sotd/draft-stability.js b/lib/rules/sotd/draft-stability.js
index 3950fb88d..ebb00ca81 100644
--- a/lib/rules/sotd/draft-stability.js
+++ b/lib/rules/sotd/draft-stability.js
@@ -5,9 +5,13 @@ const self = {
rule: 'draftStability',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
const { crType, cryType } = sr.config;
const STABILITY =
@@ -37,4 +41,4 @@ exports.check = function (sr, done) {
});
}
done();
-};
+}
diff --git a/lib/rules/sotd/new-features.js b/lib/rules/sotd/new-features.js
index c449f58a6..6b883e9de 100644
--- a/lib/rules/sotd/new-features.js
+++ b/lib/rules/sotd/new-features.js
@@ -4,9 +4,13 @@ const self = {
rule: 'newFeatures',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
const docType =
sr.config.status === 'PR' ? 'specification' : 'Recommendation';
@@ -14,13 +18,17 @@ exports.check = function (sr, done) {
`Future updates to this ${docType} may incorporate new features.`
);
const linkTxt = 'new features';
- const linkHref =
- 'https://www.w3.org/2021/Process-20211102/#allow-new-features';
+ const linkHrefOld =
+ 'https://www.w3.org/2023/Process-20231103/#allow-new-features';
+ const linkHrefNew =
+ 'https://www.w3.org/policies/process/20231103/#allow-new-features';
if (sotd && sr.norm(sotd.textContent).match(warning)) {
const foundLink = Array.prototype.some.call(
sotd.querySelectorAll('a'),
- a => a.textContent === linkTxt && a.href === linkHref
+ a =>
+ sr.norm(a.textContent) === linkTxt &&
+ [linkHrefNew, linkHrefOld].includes(a.href)
);
if (!foundLink) {
sr.error(self, 'no-link');
@@ -29,4 +37,4 @@ exports.check = function (sr, done) {
sr.warning(self, 'no-warning');
}
done();
-};
+}
diff --git a/lib/rules/sotd/obsl-rescind.js b/lib/rules/sotd/obsl-rescind.js
index bcfe6ee22..2c744d4da 100644
--- a/lib/rules/sotd/obsl-rescind.js
+++ b/lib/rules/sotd/obsl-rescind.js
@@ -4,7 +4,7 @@
// replacement or alternative technologies, please refer to the explanation of
// Obsoleting and Rescinding W3C Specifications.
-const util = require('../../util');
+import { filter } from '../../util.js';
/**
* @param candidates
@@ -14,8 +14,6 @@ function findRscndRationale(candidates, sr) {
let rationale = null;
let v;
if (sr.config.rescinds === true) v = 'rescind';
- else if (sr.config.obsoletes === true) v = 'obsolete';
- else if (sr.config.supersedes === true) v = 'supersede';
Array.prototype.some.call(candidates, p => {
const text = sr.norm(p.textContent);
@@ -42,13 +40,17 @@ const self = {
rule: 'rescindsRationale',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
const rationale =
- findRscndRationale(util.filter(sotd, 'p'), sr) ||
+ findRscndRationale(filter(sotd, 'p'), sr) ||
findRscndRationale(sotd.querySelectorAll('p'), sr);
if (!rationale) {
sr.error(self, 'no-rationale');
@@ -66,4 +68,4 @@ exports.check = function (sr, done) {
}
}
done();
-};
+}
diff --git a/lib/rules/sotd/pp.js b/lib/rules/sotd/pp.js
index fad7f5b79..c1dfcab95 100644
--- a/lib/rules/sotd/pp.js
+++ b/lib/rules/sotd/pp.js
@@ -1,4 +1,4 @@
-const util = require('../../util');
+import { filter } from '../../util.js';
const self = {
name: 'sotd.pp',
@@ -7,7 +7,9 @@ const self = {
};
const ppLink = 'https://www.w3.org/Consortium/Patent-Policy/';
+const ppLinkNew = 'https://www.w3.org/policies/patent-policy/';
const pp2020 = 'https://www.w3.org/Consortium/Patent-Policy-20200915/';
+const pp2020New = 'https://www.w3.org/policies/patent-policy/20200915/';
const pp2017 = 'https://www.w3.org/Consortium/Patent-Policy-20170801/';
/**
@@ -22,8 +24,7 @@ function buildWanted(groups, sr, ppLink) {
const isPP2017 = ppLink === pp2017;
const isRecTrack = config.track === 'Recommendation';
- let ppText = '( 15 September 2020)?';
- if (isPP2017) ppText = ' 1 August 2017';
+ const ppText = isPP2017 ? ' 1 August 2017' : '( 15 September 2020)?';
wanted = `This document was produced by ${
groups.length === 2 ? 'groups ' : 'a group '
@@ -68,24 +69,12 @@ function buildWanted(groups, sr, ppLink) {
* @param sr
* @param isIGDeliverable
*/
-function findPP(candidates, sr, isIGDeliverable) {
+function findPP(candidates, sr, ppLink) {
let pp = null;
- const groups = [];
- const jointRegex = new RegExp(
- 'This document was (?:produced|published) by the (.+? Working Group|Technical Architecture Group|Advisory Board)' +
- ' and the (.+? Working Group|Technical Architecture Group|Advisory Board)'
- );
- Array.prototype.some.call(candidates, p => {
- const text = sr.norm(p.textContent);
- if (jointRegex.test(text)) {
- const matches = text.match(jointRegex);
- groups.push(matches[1]);
- groups.push(matches[2]);
- sr.warning(self, 'joint-publication');
- return true;
- }
- });
- const wanted = buildWanted(groups, sr, isIGDeliverable);
+ const delivererGroups = sr.getDelivererNames();
+ if (delivererGroups.length > 1) sr.warning(self, 'joint-publication');
+
+ const wanted = buildWanted(delivererGroups, sr, ppLink);
const expected = wanted.text;
Array.prototype.some.call(candidates, p => {
const text = sr.norm(p.textContent);
@@ -97,9 +86,13 @@ function findPP(candidates, sr, isIGDeliverable) {
return { pp, expected };
}
-exports.name = self.name;
+export const { name } = self;
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const groups = await sr.getDelivererGroups();
// Check if the document is published by WGs only. If IG/AB/TAG(s) are involved, the document cannot be on REC-track and should have a sentence meaning 'pp does not apply'.
const publishedByWgOnly = groups.every(group => group.groupType === 'wg');
@@ -125,38 +118,39 @@ exports.check = async function (sr, done) {
const sotd = sr.getSotDSection();
const isRecTrack = sr.config.track === 'Recommendation';
- let patent = sr.config.patentPolicy;
- if (sr.config.patentPolicy === 'pp2020') {
- patent = pp2020;
- } else if (sr.config.patentPolicy === 'pp2004') {
- patent = pp2017;
+ const isPP2017 = sr.config.patentPolicy === 'pp2004';
+ const isPP2020 = sr.config.patentPolicy === 'pp2020';
+ let possiblePP = [];
+ if (isPP2020) {
+ possiblePP = [ppLink, ppLinkNew, pp2020, pp2020New];
+ } else if (isPP2017) {
+ possiblePP = [pp2017];
}
// If is joint publication and no pp is set, use latest pp
if (!publishedByWgOnly && patentPolicies.every(pp => pp === undefined)) {
- patent = pp2020;
+ possiblePP = [ppLinkNew, ppLink, pp2020New, pp2020];
}
-
// Make sure the pp version is consistent between the UI or the one defined in the charter.
if (
publishedByWgOnly &&
patentPolicies[0] &&
- patentPolicies[0] !== patent
+ !possiblePP.includes(patentPolicies[0])
) {
sr.error(self, 'wrong-pp-from-charter', {
pp_charter: patentPolicies[0],
- pp_config: patent,
+ pp_config: isPP2017 ? 'pp2017' : 'pp2020',
});
return done();
}
if (sotd) {
- if (!patent) {
+ if (!Array.isArray(possiblePP) || !possiblePP.length) {
sr.error(self, 'undefined');
return done();
}
const { pp, expected } = findPP(
- util.filter(sotd, 'p').concat(...sotd.querySelectorAll('p')),
+ filter(sotd, 'p').concat(...sotd.querySelectorAll('p')),
sr,
patentPolicies[0]
);
@@ -165,13 +159,6 @@ exports.check = async function (sr, done) {
return done();
}
- let possiblePP = [];
- if (patent === pp2020) {
- possiblePP = [ppLink, pp2020];
- } else if (patent === pp2017) {
- possiblePP = [pp2017];
- }
-
let found2017 = false;
let found2020 = false;
let foundPublicList = false;
@@ -181,7 +168,7 @@ exports.check = async function (sr, done) {
const href = a.getAttribute('href');
const text = sr.norm(a.textContent);
if (
- patent === pp2020 &&
+ isPP2020 &&
possiblePP.includes(href) &&
/(15 September 2020 )?W3C Patent Policy/.test(text)
) {
@@ -190,7 +177,7 @@ exports.check = async function (sr, done) {
}
if (
- patent === pp2017 &&
+ isPP2017 &&
possiblePP.includes(href) &&
/1 August 2017 W3C Patent Policy/.test(text)
) {
@@ -198,7 +185,7 @@ exports.check = async function (sr, done) {
return;
}
if (
- /^https:\/\/www\.w3\.org\/(groups\/[^/]+\/[^/]+\/ipr|2004\/01\/pp-impl\/\d+\/status)(#.*)?$/.test(
+ /^https:\/\/www\.w3\.org\/(groups\/[^/]+\/[^/]+\/ipr\/?|2004\/01\/pp-impl\/\d+\/status)(#.*)?$/.test(
href
) &&
/public list of any patent disclosures( \(.+\))?/.test(text) &&
@@ -223,8 +210,8 @@ exports.check = async function (sr, done) {
}
});
- if (patent === pp2017 && !found2017) sr.error(self, 'no-pp2017');
- else if (patent === pp2020 && !found2020) sr.error(self, 'no-pp2020');
+ if (isPP2017 && !found2017) sr.error(self, 'no-pp2017');
+ else if (!isPP2017 && !found2020) sr.error(self, 'no-pp2020');
if (!foundPublicList && isRecTrack) sr.error(self, 'no-disclosures');
if (
(sr.config.track === 'Recommendation' ||
@@ -246,4 +233,4 @@ exports.check = async function (sr, done) {
});
return done();
}
-};
+}
diff --git a/lib/rules/sotd/process-document.js b/lib/rules/sotd/process-document.js
index 82a196651..fd5f22430 100644
--- a/lib/rules/sotd/process-document.js
+++ b/lib/rules/sotd/process-document.js
@@ -4,51 +4,74 @@ const self = {
rule: 'whichProcess',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
- const docDate = sr.getDocumentDate();
const BOILERPLATE_PREFIX = 'This document is governed by the ';
const BOILERPLATE_SUFFIX = ' W3C Process Document.';
- let proc = '2 November 2021';
- let procUri = 'https://www.w3.org/2021/Process-20211102/';
- if (docDate < new Date('2021-09-14')) {
- proc = '15 September 2020';
- procUri = 'https://www.w3.org/2020/Process-20200915/';
- }
+ const newProc = '03 November 2023';
+ const newProcOldUri = 'https://www.w3.org/2023/Process-20231103/';
+ const newProcNewUri = 'https://www.w3.org/policies/process/20231103/';
+ const previousProc = '12 June 2023';
+ const previousProcUri = 'https://www.w3.org/2023/Process-20230612/';
+ let previousAllowed;
+
+ const boilerplate = BOILERPLATE_PREFIX + newProc + BOILERPLATE_SUFFIX;
+ const previousBoilerplate =
+ BOILERPLATE_PREFIX + previousProc + BOILERPLATE_SUFFIX;
- const boilerplate = BOILERPLATE_PREFIX + proc + BOILERPLATE_SUFFIX;
+ // 1 month transition period
+ sr.transition({
+ from: new Date('2023-11-02'),
+ to: new Date('2023-12-03'),
+ doBefore() {},
+ doMeanwhile() {
+ previousAllowed = true;
+ },
+ doAfter() {
+ previousAllowed = false;
+ },
+ });
if (sotd) {
let found = false;
- const regex = new RegExp(
- `${BOILERPLATE_PREFIX}.+${BOILERPLATE_SUFFIX}`
- );
sotd.querySelectorAll('p').forEach(p => {
+ const link = p.querySelector('a');
if (
sr.norm(p.textContent) === boilerplate &&
- p.querySelector('a') &&
- p.querySelector('a').getAttribute('href') === procUri
+ link &&
+ [newProcOldUri, newProcNewUri].includes(
+ link.getAttribute('href')
+ )
) {
- if (found) sr.error(self, 'multiple-times', { process: proc });
+ if (found)
+ sr.error(self, 'multiple-times', { process: newProc });
else {
found = true;
}
} else if (
- sr.norm(p.textContent) !== boilerplate &&
- regex.test(p.textContent)
- ) {
- sr.error(self, 'wrong-process', { process: proc });
- } else if (
- sr.norm(p.textContent) === boilerplate &&
- p.querySelector('a') &&
- p.querySelector('a').getAttribute('href') !== procUri
+ sr.norm(p.textContent) === previousBoilerplate &&
+ link &&
+ link.getAttribute('href') === previousProcUri
) {
- sr.error(self, 'wrong-link');
+ if (previousAllowed) {
+ sr.warning(self, 'previous-allowed', {
+ process: previousProc,
+ });
+ found = true;
+ } else {
+ sr.error(self, 'previous-not-allowed', {
+ process: previousProc,
+ });
+ }
}
});
- if (!found) sr.error(self, 'not-found', { process: proc });
+ if (!found) sr.error(self, 'not-found', { process: newProc });
}
done();
-};
+}
diff --git a/lib/rules/sotd/publish.js b/lib/rules/sotd/publish.js
index df6bddce8..3cfe79564 100644
--- a/lib/rules/sotd/publish.js
+++ b/lib/rules/sotd/publish.js
@@ -4,9 +4,13 @@ const self = {
rule: 'publish',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = async function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export async function check(sr, done) {
const sotd = sr.getSotDSection();
const { crType, cryType } = sr.config;
let docType = sr.config.longStatus;
@@ -32,13 +36,30 @@ exports.check = async function (sr, done) {
const sotdLinks = sotd.querySelectorAll('a[href]');
+ let baseURL;
+ // 1 month transition period
+ sr.transition({
+ from: new Date('2023-11-02'),
+ to: new Date('2023-12-03'),
+ doBefore() {
+ baseURL = /^https:\/\/www.w3.org\/2023\/Process-20230612\//;
+ },
+ doMeanwhile() {
+ baseURL =
+ /^https:\/\/www.w3.org\/2023\/Process-2023(0612|1103)\//;
+ },
+ doAfter() {
+ baseURL =
+ /^https:\/\/www.w3.org\/(2023\/Process-|policies\/process\/)20231103\//;
+ },
+ });
+
// Check track link
- const urlExpected =
- 'https://www.w3.org/2021/Process-20211102/#recs-and-notes';
+ const urlExpected = new RegExp(`${baseURL.source}#recs-and-notes$`);
const trackEle = Array.prototype.filter.call(sotdLinks, ele =>
sr.norm(ele.textContent).match(`${sr.config.track} track`)
)[0];
- if (trackEle && trackEle.href !== urlExpected) {
+ if (trackEle && !urlExpected.test(trackEle.href)) {
sr.error(self, 'url-not-match', {
url: urlExpected,
text: `${sr.config.track} track`,
@@ -47,15 +68,17 @@ exports.check = async function (sr, done) {
// Check the Deliverer Group link.
const delivererGroups = await sr.getDelivererGroups();
- const groupsURLExpected = delivererGroups.map(
+ const groupsURLRegExpExpected = delivererGroups.map(
delivererGroup =>
- `https://www.w3.org/groups/${delivererGroup.groupType}/${delivererGroup.groupShortname}`
+ new RegExp(
+ `^https://www.w3.org/groups/${delivererGroup.groupType}/${delivererGroup.groupShortname}/?$`
+ )
);
const sotdLinksHref = Array.from(sotdLinks).map(l => l.href);
- groupsURLExpected.forEach(groupURLExpected => {
- if (!sotdLinksHref.includes(groupURLExpected)) {
+ groupsURLRegExpExpected.forEach(groupURLRegExpExpected => {
+ if (!sotdLinksHref.some(l => groupURLRegExpExpected.test(l))) {
sr.error(self, 'no-homepage-link', {
- homepage: groupURLExpected,
+ homepage: groupURLRegExpExpected,
});
}
});
@@ -65,37 +88,46 @@ exports.check = async function (sr, done) {
sr.config.status === 'REC' ? sr.getRecMetadata({}) : null;
// check if 'candidate amendments' or 'proposed amendments' link in same paragraph is valid.
if (recType && JSON.stringify(recType) !== '{}') {
- const BASE_URL = 'https://www.w3.org/2021/Process-20211102/';
let urlExpected;
let textExpected;
// for proposed amendments, proposed additions, proposed corrections.
if (recType.pSubChanges && recType.pNewFeatures) {
- urlExpected = `${BASE_URL}#proposed-amendments`;
+ urlExpected = new RegExp(
+ `${baseURL.source}#proposed-amendments`
+ );
textExpected = /proposed amendment(s)?/;
} else if (recType.pSubChanges) {
- urlExpected = `${BASE_URL}#proposed-corrections`;
+ urlExpected = new RegExp(
+ `${baseURL.source}#proposed-corrections`
+ );
textExpected = /proposed correction(s)?/;
} else if (recType.pNewFeatures) {
- urlExpected = `${BASE_URL}#proposed-addition`;
+ urlExpected = new RegExp(`${baseURL.source}#proposed-addition`);
textExpected = /proposed addition(s)?/;
}
// for candidate amendments, candidate additions, candidate corrections.
if (recType.cSubChanges && recType.cNewFeatures) {
- urlExpected = `${BASE_URL}#candidate-amendments`;
+ urlExpected = new RegExp(
+ `${baseURL.source}#candidate-amendments`
+ );
textExpected = /candidate amendments(s)?/;
} else if (recType.cSubChanges) {
- urlExpected = `${BASE_URL}#candidate-correction`;
+ urlExpected = new RegExp(
+ `${baseURL.source}#candidate-correction`
+ );
textExpected = /candidate correction(s)?/;
} else if (recType.cNewFeatures) {
- urlExpected = `${BASE_URL}#candidate-addition`;
+ urlExpected = new RegExp(
+ `${baseURL.source}#candidate-addition`
+ );
textExpected = /candidate addition(s)?/;
}
const linkFound = Array.prototype.some.call(
paragraph.querySelectorAll('a'),
ele => {
if (sr.norm(ele.textContent).match(textExpected)) {
- if (ele.href !== urlExpected) {
+ if (!urlExpected.test(ele.href)) {
sr.error(self, 'url-not-match', {
url: urlExpected,
text: textExpected,
@@ -114,4 +146,4 @@ exports.check = async function (sr, done) {
}
}
done();
-};
+}
diff --git a/lib/rules/sotd/rec-addition.js b/lib/rules/sotd/rec-addition.js
index d17e59324..17bb2d4ea 100644
--- a/lib/rules/sotd/rec-addition.js
+++ b/lib/rules/sotd/rec-addition.js
@@ -5,7 +5,7 @@ const self = {
rule: 'recAddition',
};
-exports.name = self.name;
+export const { name } = self;
const P_CORRECTION = 'Proposed correction(s)? are marked in the document.';
const P_ADDITION = 'Proposed addition(s)? are marked in the document.';
@@ -45,7 +45,11 @@ function checkSection(sr, options) {
});
}
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
const recType = sr.getRecMetadata({});
@@ -91,4 +95,4 @@ exports.check = function (sr, done) {
});
}
return done();
-};
+}
diff --git a/lib/rules/sotd/rec-comment-end.js b/lib/rules/sotd/rec-comment-end.js
index b643d06cf..42e701059 100644
--- a/lib/rules/sotd/rec-comment-end.js
+++ b/lib/rules/sotd/rec-comment-end.js
@@ -4,9 +4,13 @@ const self = {
rule: 'commentEnd',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
const recType = sr.getRecMetadata({});
@@ -49,4 +53,4 @@ exports.check = function (sr, done) {
}
}
done();
-};
+}
diff --git a/lib/rules/sotd/review-end.js b/lib/rules/sotd/review-end.js
index 898291bfc..8e4a55dfc 100644
--- a/lib/rules/sotd/review-end.js
+++ b/lib/rules/sotd/review-end.js
@@ -2,9 +2,13 @@ const self = {
name: 'sotd.review-end',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const sotd = sr.getSotDSection();
if (sotd) {
const txt = sr.norm(sotd.textContent);
@@ -23,4 +27,4 @@ exports.check = function (sr, done) {
}
}
done();
-};
+}
diff --git a/lib/rules/sotd/stability.js b/lib/rules/sotd/stability.js
index 786f111c2..640156730 100644
--- a/lib/rules/sotd/stability.js
+++ b/lib/rules/sotd/stability.js
@@ -1,21 +1,22 @@
// SotD
// stability warning
//
\n';
result = result.replace(
- // eslint-disable-next-line prefer-regex-literals
new RegExp(`@{year}`, 'g'),
new Date().getFullYear()
);
@@ -158,7 +154,6 @@ const formatRules = function (sections, common) {
*/
const retrieveProfile = function (query) {
- const qs = require('querystring');
const result = {};
if (query && query.profile) {
@@ -194,7 +189,7 @@ const retrieveProfile = function (query) {
* @param {object} app - the Express application.
*/
-const setUp = function (app) {
+export const setUp = function (app) {
const hb = handlebars.create({ defaultLayout: 'main' });
app.engine('handlebars', hb.engine);
app.set('view engine', 'handlebars');
@@ -241,7 +236,5 @@ const setUp = function (app) {
app.get('/about', handleWIP);
// Catch-all:
- app.get('*', handleWrongPage);
+ app.get(/(.*)/, handleWrongPage);
};
-
-exports.setUp = setUp;
diff --git a/package-lock.json b/package-lock.json
index 28a94a14e..6f7a8dd14 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,99 +1,138 @@
{
"name": "specberus",
- "version": "6.1.3",
- "lockfileVersion": 2,
+ "version": "11.4.7",
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "specberus",
- "version": "6.1.3",
+ "version": "11.4.7",
"license": "MIT",
"dependencies": {
"compression": "1.7.4",
"cors": "2.8.5",
"doasync": "2.0.1",
- "express": "4.17.1",
- "express-handlebars": "6.0.1",
- "insafe": "0.5.0",
- "jsdom": "19.0.0",
- "metaviewport-parser": "0.2.0",
+ "express": "5.0.1",
+ "express-fileupload": "1.5.0",
+ "express-handlebars": "8.0.1",
+ "file-type": "20.0.0",
+ "insafe": "0.5.1",
+ "jsdom": "26.0.0",
+ "metaviewport-parser": "0.3.0",
"morgan": "1.10.0",
- "node-w3capi": "1.11.0",
- "promise": "8.1.0",
- "puppeteer": "13.3.1",
- "request": "2.88.2",
- "socket.io": "4.4.0",
- "superagent": "7.1.1"
+ "node-w3capi": "2.2.0",
+ "promise": "8.3.0",
+ "puppeteer": "24.1.1",
+ "socket.io": "4.8.0",
+ "superagent": "10.1.0",
+ "tmp": "0.2.3"
},
"devDependencies": {
- "chai": "4.3.4",
- "chai-as-promised": "7.1.1",
- "cspell": "5.18.0",
- "eslint": "8.9.0",
- "eslint-config-airbnb-base": "15.0.0",
- "eslint-config-prettier": "8.4.0",
- "eslint-plugin-import": "2.25.3",
- "eslint-plugin-jsdoc": "37.9.1",
+ "@rvagg/chai-as-promised": "8.0.1",
+ "chai": "5.1.0",
+ "cspell": "8.0.0",
+ "eslint": "9.0.0",
+ "eslint-config-prettier": "10.0.1",
"eslint-plugin-node": "11.1.0",
- "eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-prettier": "5.0.0-alpha.2",
"expect.js": "0.3",
- "husky": "7.0.4",
- "jsdoc": "3.6.7",
- "lint-staged": "12.3.2",
- "minami": "1.2.3",
- "mocha": "9.2.0",
- "nock": "13.2.2",
- "nodemon": "2.0.15",
- "nyc": "15.1.0",
- "prettier": "2.5.0"
+ "husky": "9.0.6",
+ "lint-staged": "15.4.1",
+ "mocha": "11.1.0",
+ "nock": "14.0.0",
+ "nodemon": "3.0.1",
+ "nyc": "17.1.0",
+ "prettier": "3.4.1"
},
"engines": {
- "node": "^14 || ^16",
- "npm": ">=6"
+ "node": "18 || 20 || 22",
+ "npm": ">=7"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
- "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
"dev": true,
"dependencies": {
- "@babel/highlight": "^7.16.7"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.2.tgz",
+ "integrity": "sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.1",
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "lru-cache": "^11.0.2"
+ }
+ },
+ "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
+ "version": "11.0.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
+ "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
+ "dependencies": {
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/compat-data": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz",
- "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
+ "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.16.12",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz",
- "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.8",
- "@babel/helper-compilation-targets": "^7.16.7",
- "@babel/helper-module-transforms": "^7.16.7",
- "@babel/helpers": "^7.16.7",
- "@babel/parser": "^7.16.12",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.10",
- "@babel/types": "^7.16.8",
- "convert-source-map": "^1.7.0",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
+ "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helpers": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/template": "^7.24.7",
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7",
+ "convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
- "semver": "^6.3.0",
- "source-map": "^0.5.0"
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -103,10 +142,16 @@
"url": "https://opencollective.com/babel"
}
},
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
"node_modules/@babel/core/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -127,219 +172,196 @@
"dev": true
},
"node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
- "node_modules/@babel/core/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@babel/generator": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz",
- "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
+ "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.8",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.24.7",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/generator/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz",
- "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
+ "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.16.4",
- "@babel/helper-validator-option": "^7.16.7",
- "browserslist": "^4.17.5",
- "semver": "^6.3.0"
+ "@babel/compat-data": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
- "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
+ "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
- "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
+ "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
"dev": true,
"dependencies": {
- "@babel/helper-get-function-arity": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/types": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
- "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/template": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-hoist-variables": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
- "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
+ "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
- "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz",
- "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
+ "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
"dev": true,
"dependencies": {
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-module-imports": "^7.16.7",
- "@babel/helper-simple-access": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/helper-validator-identifier": "^7.16.7",
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-simple-access": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz",
- "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
- "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+ "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
- "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
+ "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-validator-option": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
- "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
+ "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz",
- "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
+ "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
"dev": true,
"dependencies": {
- "@babel/template": "^7.16.7",
- "@babel/traverse": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/template": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
- "dev": true,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
@@ -349,7 +371,6 @@
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -361,7 +382,6 @@
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -375,7 +395,6 @@
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
"dependencies": {
"color-name": "1.1.3"
}
@@ -383,14 +402,12 @@
"node_modules/@babel/highlight/node_modules/color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true,
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"engines": {
"node": ">=0.8.0"
}
@@ -398,8 +415,7 @@
"node_modules/@babel/highlight/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true,
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": {
"node": ">=4"
}
@@ -408,7 +424,6 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -417,9 +432,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.16.12",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz",
- "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
+ "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -429,34 +444,34 @@
}
},
"node_modules/@babel/template": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
- "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
+ "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.16.7",
- "@babel/parser": "^7.16.7",
- "@babel/types": "^7.16.7"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz",
- "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.8",
- "@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
- "@babel/helper-hoist-variables": "^7.16.7",
- "@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.16.10",
- "@babel/types": "^7.16.8",
- "debug": "^4.1.0",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
+ "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.24.7",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/helper-hoist-variables": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/types": "^7.24.7",
+ "debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
@@ -464,9 +479,9 @@
}
},
"node_modules/@babel/traverse/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -496,12 +511,13 @@
"dev": true
},
"node_modules/@babel/types": {
- "version": "7.16.8",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz",
- "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
+ "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
"dev": true,
"dependencies": {
- "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/helper-string-parser": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -509,141 +525,209 @@
}
},
"node_modules/@cspell/cspell-bundled-dicts": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.18.0.tgz",
- "integrity": "sha512-daPt57gRhtGB7wQiIo59P4MZAOTn4HhJFVY3wNVgMInsEqh/HPnkLdx+w26Z0j+hl87hxbCHKphd/bp8JqyOaA==",
- "dev": true,
- "dependencies": {
- "@cspell/dict-ada": "^1.1.2",
- "@cspell/dict-aws": "^1.0.14",
- "@cspell/dict-bash": "^1.0.17",
- "@cspell/dict-companies": "^2.0.2",
- "@cspell/dict-cpp": "^1.1.40",
- "@cspell/dict-cryptocurrencies": "^1.0.10",
- "@cspell/dict-csharp": "^2.0.1",
- "@cspell/dict-css": "^1.0.13",
- "@cspell/dict-django": "^1.0.26",
- "@cspell/dict-dotnet": "^1.0.32",
- "@cspell/dict-elixir": "^1.0.26",
- "@cspell/dict-en_us": "^2.1.4",
- "@cspell/dict-en-gb": "^1.1.33",
- "@cspell/dict-filetypes": "^2.0.1",
- "@cspell/dict-fonts": "^1.0.14",
- "@cspell/dict-fullstack": "^2.0.4",
- "@cspell/dict-golang": "^1.1.24",
- "@cspell/dict-haskell": "^1.0.13",
- "@cspell/dict-html": "^2.0.3",
- "@cspell/dict-html-symbol-entities": "^1.0.23",
- "@cspell/dict-java": "^1.0.23",
- "@cspell/dict-latex": "^1.0.25",
- "@cspell/dict-lorem-ipsum": "^1.0.22",
- "@cspell/dict-lua": "^1.0.16",
- "@cspell/dict-node": "^1.0.12",
- "@cspell/dict-npm": "^1.0.16",
- "@cspell/dict-php": "^1.0.25",
- "@cspell/dict-powershell": "^1.0.19",
- "@cspell/dict-public-licenses": "^1.0.4",
- "@cspell/dict-python": "^2.0.5",
- "@cspell/dict-ruby": "^1.0.15",
- "@cspell/dict-rust": "^1.0.23",
- "@cspell/dict-scala": "^1.0.21",
- "@cspell/dict-software-terms": "^2.0.12",
- "@cspell/dict-swift": "^1.0.1",
- "@cspell/dict-typescript": "^1.0.19",
- "@cspell/dict-vue": "^2.0.1"
- },
- "engines": {
- "node": ">=12.13.0"
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.0.0.tgz",
+ "integrity": "sha512-Phbb1ij1TQQuqxuuvxf5P6fvV9U+EVoATNLmDqFHvRZfUyuhgbJuCMzIPeBx4GfTTDWlPs51FYRvZ/Q8xBHsyA==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/dict-ada": "^4.0.2",
+ "@cspell/dict-aws": "^4.0.0",
+ "@cspell/dict-bash": "^4.1.2",
+ "@cspell/dict-companies": "^3.0.27",
+ "@cspell/dict-cpp": "^5.0.9",
+ "@cspell/dict-cryptocurrencies": "^4.0.0",
+ "@cspell/dict-csharp": "^4.0.2",
+ "@cspell/dict-css": "^4.0.12",
+ "@cspell/dict-dart": "^2.0.3",
+ "@cspell/dict-django": "^4.1.0",
+ "@cspell/dict-docker": "^1.1.7",
+ "@cspell/dict-dotnet": "^5.0.0",
+ "@cspell/dict-elixir": "^4.0.3",
+ "@cspell/dict-en_us": "^4.3.11",
+ "@cspell/dict-en-common-misspellings": "^1.0.2",
+ "@cspell/dict-en-gb": "1.1.33",
+ "@cspell/dict-filetypes": "^3.0.2",
+ "@cspell/dict-fonts": "^4.0.0",
+ "@cspell/dict-fsharp": "^1.0.1",
+ "@cspell/dict-fullstack": "^3.1.5",
+ "@cspell/dict-gaming-terms": "^1.0.4",
+ "@cspell/dict-git": "^2.0.0",
+ "@cspell/dict-golang": "^6.0.4",
+ "@cspell/dict-haskell": "^4.0.1",
+ "@cspell/dict-html": "^4.0.5",
+ "@cspell/dict-html-symbol-entities": "^4.0.0",
+ "@cspell/dict-java": "^5.0.6",
+ "@cspell/dict-k8s": "^1.0.2",
+ "@cspell/dict-latex": "^4.0.0",
+ "@cspell/dict-lorem-ipsum": "^4.0.0",
+ "@cspell/dict-lua": "^4.0.2",
+ "@cspell/dict-makefile": "^1.0.0",
+ "@cspell/dict-node": "^4.0.3",
+ "@cspell/dict-npm": "^5.0.12",
+ "@cspell/dict-php": "^4.0.4",
+ "@cspell/dict-powershell": "^5.0.2",
+ "@cspell/dict-public-licenses": "^2.0.5",
+ "@cspell/dict-python": "^4.1.10",
+ "@cspell/dict-r": "^2.0.1",
+ "@cspell/dict-ruby": "^5.0.1",
+ "@cspell/dict-rust": "^4.0.1",
+ "@cspell/dict-scala": "^5.0.0",
+ "@cspell/dict-software-terms": "^3.3.9",
+ "@cspell/dict-sql": "^2.1.2",
+ "@cspell/dict-svelte": "^1.0.2",
+ "@cspell/dict-swift": "^2.0.1",
+ "@cspell/dict-typescript": "^3.1.2",
+ "@cspell/dict-vue": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-json-reporter": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.0.0.tgz",
+ "integrity": "sha512-1ltK5N4xMGWjDSIkU+GJd3rXV8buXgO/lAgnpM1RhKWqAmG+u0k6pnhk2vIo/4qZQpgfK0l3J3h/Ky2FcE95vA==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-types": "8.0.0"
+ },
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@cspell/cspell-pipe": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-5.18.0.tgz",
- "integrity": "sha512-CC3CuqMbTNWCc2kJHm7aEp5o3yEbIHY5FdgiJL7TpqN/dCtagvYZLDZwMPWQuMNgYM5PmeStauTqnwtgW3AkuA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.0.0.tgz",
+ "integrity": "sha512-1MH+9q3AmbzwK1BYhSGla8e4MAAYzzPApGvv8eyv0rWDmgmDTkGqJPTTvYj1wFvll5ximQ5OolpPQGv3JoWvtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-resolver": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.0.0.tgz",
+ "integrity": "sha512-gtALHFLT2vSZ7BZlIg26AY3W9gkiqxPGE75iypWz06JHJs05ngnAR+h6VOu0+rmgx98hNfzPPEh4g+Tjm8Ma0A==",
+ "dev": true,
+ "dependencies": {
+ "global-dirs": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-service-bus": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.0.0.tgz",
+ "integrity": "sha512-1EYhIHoZnhxpfEp6Bno6yVWYBuYfaQrwIfeDMntnezUcSmi7RyroQEcp5U7sLv69vhRD2c81o7r8iUaAbPSmIg==",
"dev": true,
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
}
},
"node_modules/@cspell/cspell-types": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-5.18.0.tgz",
- "integrity": "sha512-fMihVNgUpC9i/SS84nBk1XCmWLCUAVOxp1PXZqoR0R0ozCwrUvZY8sw7lj+TNiDT1TvpibtL1gZPmlvi9TSNzQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.0.0.tgz",
+ "integrity": "sha512-dPdxQI8dLJoJEjylaPYfCJNnm2XNMYPuowHE2FMcsnFR9hEchQAhnKVc/aD63IUYnUtUrPxPlUJdoAoj569e+g==",
"dev": true,
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
}
},
"node_modules/@cspell/dict-ada": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-1.1.2.tgz",
- "integrity": "sha512-UDrcYcKIVyXDz5mInJabRNQpJoehjBFvja5W+GQyu9pGcx3BS3cAU8mWENstGR0Qc/iFTxB010qwF8F3cHA/aA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz",
+ "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==",
"dev": true
},
"node_modules/@cspell/dict-aws": {
- "version": "1.0.14",
- "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-1.0.14.tgz",
- "integrity": "sha512-K21CfB4ZpKYwwDQiPfic2zJA/uxkbsd4IQGejEvDAhE3z8wBs6g6BwwqdVO767M9NgZqc021yAVpr79N5pWe3w==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.0.tgz",
+ "integrity": "sha512-1YkCMWuna/EGIDN/zKkW+j98/55mxigftrSFgsehXhPld+ZMJM5J9UuBA88YfL7+/ETvBdd7mwW6IwWsC+/ltQ==",
"dev": true
},
"node_modules/@cspell/dict-bash": {
- "version": "1.0.17",
- "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-1.0.17.tgz",
- "integrity": "sha512-BlX+pnDlLmIf776C9d71QjXl4NOIz+yloeixx1ZZjrwvKPLF+ffE/Ez13eV+D9R2Ps1rW10UvW8u3Hbmwme+Fw==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.2.tgz",
+ "integrity": "sha512-AEBWjbaMaJEyAjOHW0F15P2izBjli2cNerG3NjuVH7xX/HUUeNoTj8FF1nwpMufKwGQCvuyO2hCmkVxhJ0y55Q==",
"dev": true
},
"node_modules/@cspell/dict-companies": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-2.0.2.tgz",
- "integrity": "sha512-LPKwBMAWRz+p1R8q+TV6E1sGOOTvxJOaJeXNN++CZQ7i6JMn5Rf+BSxagwkeK6z3o9vIC5ZE4AcQ5BMkvyjqGw==",
+ "version": "3.0.27",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.27.tgz",
+ "integrity": "sha512-gaPR/luf+4oKGyxvW4GbxGGPdHiC5kj/QefnmQqrLFrLiCSXMZg5/NL+Lr4E5lcHsd35meX61svITQAvsT7lyQ==",
"dev": true
},
"node_modules/@cspell/dict-cpp": {
- "version": "1.1.40",
- "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-1.1.40.tgz",
- "integrity": "sha512-sscfB3woNDNj60/yGXAdwNtIRWZ89y35xnIaJVDMk5TPMMpaDvuk0a34iOPIq0g4V+Y8e3RyAg71SH6ADwSjGw==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.0.9.tgz",
+ "integrity": "sha512-ql9WPNp8c+fhdpVpjpZEUWmxBHJXs9CJuiVVfW/iwv5AX7VuMHyEwid+9/6nA8qnCxkUQ5pW83Ums1lLjn8ScA==",
"dev": true
},
"node_modules/@cspell/dict-cryptocurrencies": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-1.0.10.tgz",
- "integrity": "sha512-47ABvDJOkaST/rXipNMfNvneHUzASvmL6K/CbOFpYKfsd0x23Jc9k1yaOC7JAm82XSC/8a7+3Yu+Fk2jVJNnsA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-4.0.0.tgz",
+ "integrity": "sha512-EiZp91ATyRxTmauIQfOX9adLYCunKjHEh092rrM7o2eMXP9n7zpXAL9BK7LviL+LbB8VDOm21q+s83cKrrRrsg==",
"dev": true
},
"node_modules/@cspell/dict-csharp": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-2.0.1.tgz",
- "integrity": "sha512-ZzAr+WRP2FUtXHZtfhe8f3j9vPjH+5i44Hcr5JqbWxmqciGoTbWBPQXwu9y+J4mbdC69HSWRrVGkNJ8rQk8pSw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz",
+ "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==",
"dev": true
},
"node_modules/@cspell/dict-css": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-1.0.13.tgz",
- "integrity": "sha512-HU8RbFRoGanFH85mT01Ot/Ay48ixr/gG25VPLtdq56QTrmPsw79gxYm/5Qay16eQbpoPIxaj5CAWNam+DX4GbA==",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.12.tgz",
+ "integrity": "sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-dart": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.3.tgz",
+ "integrity": "sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-data-science": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-1.0.11.tgz",
+ "integrity": "sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==",
"dev": true
},
"node_modules/@cspell/dict-django": {
- "version": "1.0.26",
- "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-1.0.26.tgz",
- "integrity": "sha512-mn9bd7Et1L2zuibc08GVHTiD2Go3/hdjyX5KLukXDklBkq06r+tb0OtKtf1zKodtFDTIaYekGADhNhA6AnKLkg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz",
+ "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-docker": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz",
+ "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==",
"dev": true
},
"node_modules/@cspell/dict-dotnet": {
- "version": "1.0.32",
- "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-1.0.32.tgz",
- "integrity": "sha512-9H9vXrgJB4KF8xsyTToXO53cXD33iyfrpT4mhCds+YLUw3P3x3E9myszgJzshnrxYBvQZ+QMII57Qr6SjZVk4Q==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz",
+ "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==",
"dev": true
},
"node_modules/@cspell/dict-elixir": {
- "version": "1.0.26",
- "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-1.0.26.tgz",
- "integrity": "sha512-hz1yETUiRJM7yjN3mITSnxcmZaEyaBbyJhpZPpg+cKUil+xhHeZ2wwfbRc83QHGmlqEuDWbdCFqKSpCDJYpYhg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz",
+ "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==",
"dev": true
},
"node_modules/@cspell/dict-en_us": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-2.1.4.tgz",
- "integrity": "sha512-W4b+aIvZ637FqtTmrTe/T9i9748cuTQf82eWUgV9O296WzZj7rCxm+rzOrmRTAcCmU+9+6Cdsr0unETFQfuxww==",
+ "version": "4.3.11",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.11.tgz",
+ "integrity": "sha512-GhdavZFlS2YbUNcRtPbgJ9j6aUyq116LmDQ2/Q5SpQxJ5/6vVs8Yj5WxV1JD+Zh/Zim1NJDcneTOuLsUGi+Czw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en-common-misspellings": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-1.0.2.tgz",
+ "integrity": "sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==",
"dev": true
},
"node_modules/@cspell/dict-en-gb": {
@@ -653,239 +737,441 @@
"dev": true
},
"node_modules/@cspell/dict-filetypes": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-2.0.1.tgz",
- "integrity": "sha512-bQ7K3U/3hKO2lpQjObf0veNP/n50qk5CVezSwApMBckf/sAVvDTR1RGAvYdr+vdQnkdQrk6wYmhbshXi0sLDVg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.2.tgz",
+ "integrity": "sha512-StoC0wPmFNav6F6P8/FYFN1BpZfPgOmktb8gQ9wTauelWofPeBW+A0t5ncZt9hXHtnbGDA98v4ukacV+ucbnUg==",
"dev": true
},
"node_modules/@cspell/dict-fonts": {
- "version": "1.0.14",
- "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-1.0.14.tgz",
- "integrity": "sha512-VhIX+FVYAnqQrOuoFEtya6+H72J82cIicz9QddgknsTqZQ3dvgp6lmVnsQXPM3EnzA8n1peTGpLDwHzT7ociLA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz",
+ "integrity": "sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-fsharp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz",
+ "integrity": "sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==",
"dev": true
},
"node_modules/@cspell/dict-fullstack": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-2.0.4.tgz",
- "integrity": "sha512-+JtYO58QAXnetRN+MGVzI8YbkbFTLpYfl/Cw/tmNqy7U1IDVC4sTXQ2pZvbbeKQWFHBqYvBs0YASV+mTouXYBw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz",
+ "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-gaming-terms": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.4.tgz",
+ "integrity": "sha512-hbDduNXlk4AOY0wFxcDMWBPpm34rpqJBeqaySeoUH70eKxpxm+dvjpoRLJgyu0TmymEICCQSl6lAHTHSDiWKZg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-git": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-2.0.0.tgz",
+ "integrity": "sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==",
"dev": true
},
"node_modules/@cspell/dict-golang": {
- "version": "1.1.24",
- "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-1.1.24.tgz",
- "integrity": "sha512-qq3Cjnx2U1jpeWAGJL1GL0ylEhUMqyaR36Xij6Y6Aq4bViCRp+HRRqk0x5/IHHbOrti45h3yy7ii1itRFo+Xkg==",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.4.tgz",
+ "integrity": "sha512-jOfewPEyN6U9Q80okE3b1PTYBfqZgHh7w4o271GSuAX+VKJ1lUDhdR4bPKRxSDdO5jHArw2u5C8nH2CWGuygbQ==",
"dev": true
},
"node_modules/@cspell/dict-haskell": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-1.0.13.tgz",
- "integrity": "sha512-kvl8T84cnYRPpND/P3D86P6WRSqebsbk0FnMfy27zo15L5MLAb3d3MOiT1kW3vEWfQgzUD7uddX/vUiuroQ8TA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz",
+ "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==",
"dev": true
},
"node_modules/@cspell/dict-html": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-2.0.3.tgz",
- "integrity": "sha512-6sORumQ9E7YpJ4vzYb0hHBgiXpehPAawuqmueGmx/PSRkqzMNLEwhYZuTHuIZSO291RTirPMfCkUahRoKdXOOQ==",
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.5.tgz",
+ "integrity": "sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==",
"dev": true
},
"node_modules/@cspell/dict-html-symbol-entities": {
- "version": "1.0.23",
- "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-1.0.23.tgz",
- "integrity": "sha512-PV0UBgcBFbBLf/m1wfkVMM8w96kvfHoiCGLWO6BR3Q9v70IXoE4ae0+T+f0CkxcEkacMqEQk/I7vuE9MzrjaNw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz",
+ "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==",
"dev": true
},
"node_modules/@cspell/dict-java": {
- "version": "1.0.23",
- "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-1.0.23.tgz",
- "integrity": "sha512-LcOg9srYLDoNGd8n3kbfDBlZD+LOC9IVcnFCdua1b/luCHNVmlgBx7e677qPu7olpMYOD5TQIVW2OmM1+/6MFA==",
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.6.tgz",
+ "integrity": "sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-k8s": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.2.tgz",
+ "integrity": "sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==",
"dev": true
},
"node_modules/@cspell/dict-latex": {
- "version": "1.0.25",
- "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-1.0.25.tgz",
- "integrity": "sha512-cEgg91Migqcp1SdVV7dUeMxbPDhxdNo6Fgq2eygAXQjIOFK520FFvh/qxyBvW90qdZbIRoU2AJpchyHfGuwZFA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz",
+ "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==",
"dev": true
},
"node_modules/@cspell/dict-lorem-ipsum": {
- "version": "1.0.22",
- "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-1.0.22.tgz",
- "integrity": "sha512-yqzspR+2ADeAGUxLTfZ4pXvPl7FmkENMRcGDECmddkOiuEwBCWMZdMP5fng9B0Q6j91hQ8w9CLvJKBz10TqNYg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz",
+ "integrity": "sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==",
"dev": true
},
"node_modules/@cspell/dict-lua": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-1.0.16.tgz",
- "integrity": "sha512-YiHDt8kmHJ8nSBy0tHzaxiuitYp+oJ66ffCYuFWTNB3//Y0SI4OGHU3omLsQVeXIfCeVrO4DrVvRDoCls9B5zQ==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.2.tgz",
+ "integrity": "sha512-eeC20Q+UnHcTVBK6pgwhSjGIVugO2XqU7hv4ZfXp2F9DxGx1RME0+1sKX4qAGhdFGwOBsEzb2fwUsAEP6Mibpg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-makefile": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz",
+ "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==",
"dev": true
},
"node_modules/@cspell/dict-node": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-1.0.12.tgz",
- "integrity": "sha512-RPNn/7CSkflAWk0sbSoOkg0ORrgBARUjOW3QjB11KwV1gSu8f5W/ij/S50uIXtlrfoBLqd4OyE04jyON+g/Xfg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz",
+ "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==",
"dev": true
},
"node_modules/@cspell/dict-npm": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-1.0.16.tgz",
- "integrity": "sha512-RwkuZGcYBxL3Yux3cSG/IOWGlQ1e9HLCpHeyMtTVGYKAIkFAVUnGrz20l16/Q7zUG7IEktBz5O42kAozrEnqMQ==",
+ "version": "5.0.12",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.12.tgz",
+ "integrity": "sha512-T/+WeQmtbxo7ad6hrdI8URptYstKJP+kXyWJZfuVJJGWJQ7yubxrI5Z5AfM+Dh/ff4xHmdzapxD9adaEQ727uw==",
"dev": true
},
"node_modules/@cspell/dict-php": {
- "version": "1.0.25",
- "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-1.0.25.tgz",
- "integrity": "sha512-RoBIP5MRdByyPaXcznZMfOY1JdCMYPPLua5E9gkq0TJO7bX5mC9hyAKfYBSWVQunZydd82HZixjb5MPkDFU1uw==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.4.tgz",
+ "integrity": "sha512-fRlLV730fJbulDsLIouZxXoxHt3KIH6hcLFwxaupHL+iTXDg0lo7neRpbqD5MScr/J3idEr7i9G8XWzIikKFug==",
"dev": true
},
"node_modules/@cspell/dict-powershell": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-1.0.19.tgz",
- "integrity": "sha512-zF/raM/lkhXeHf4I43OtK0gP9rBeEJFArscTVwLWOCIvNk21MJcNoTYoaGw+c056+Q+hJL0psGLO7QN+mxYH1A==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.2.tgz",
+ "integrity": "sha512-IHfWLme3FXE7vnOmMncSBxOsMTdNWd1Vcyhag03WS8oANSgX8IZ+4lMI00mF0ptlgchf16/OU8WsV4pZfikEFw==",
"dev": true
},
"node_modules/@cspell/dict-public-licenses": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-1.0.4.tgz",
- "integrity": "sha512-h4xULfVEDUeWyvp1OO19pcGDqWcBEQ7WGMp3QBHyYpjsamlzsyYYjCRSY2ZvpM7wruDmywSRFmRHJ/+uNFT7nA==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.5.tgz",
+ "integrity": "sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==",
"dev": true
},
"node_modules/@cspell/dict-python": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-2.0.5.tgz",
- "integrity": "sha512-WkyGYtNmUsOHsWixck7AxNvveDgVPqw0H51hzIY+/5u3c94wZUweIj0vfFOGIfOBq8e1ZxpjumKBxVDGXTmQkw==",
+ "version": "4.1.10",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.10.tgz",
+ "integrity": "sha512-ErF/Ohcu6Xk4QVNzFgo8p7CxkxvAKAmFszvso41qOOhu8CVpB35ikBRpGVDw9gsCUtZzi15Yl0izi4do6WcLkA==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/dict-data-science": "^1.0.11"
+ }
+ },
+ "node_modules/@cspell/dict-r": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz",
+ "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==",
"dev": true
},
"node_modules/@cspell/dict-ruby": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-1.0.15.tgz",
- "integrity": "sha512-I76hJA///lc1pgmDTGUFHN/O8KLIZIU/8TgIYIGI6Ix/YzSEvWNdQYbANn6JbCynS0X+7IbZ2Ft+QqvmGtIWuA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.1.tgz",
+ "integrity": "sha512-rruTm7Emhty/BSYavSm8ZxRuVw0OBqzJkwIFXcV0cX7To8D1qbmS9HFHRuRg8IL11+/nJvtdDz+lMFBSmPUagQ==",
"dev": true
},
"node_modules/@cspell/dict-rust": {
- "version": "1.0.23",
- "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-1.0.23.tgz",
- "integrity": "sha512-lR4boDzs79YD6+30mmiSGAMMdwh7HTBAPUFSB0obR3Kidibfc3GZ+MHWZXay5dxZ4nBKM06vyjtanF9VJ8q1Iw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.1.tgz",
+ "integrity": "sha512-xJSSzHDK2z6lSVaOmMxl3PTOtfoffaxMo7fTcbZUF+SCJzfKbO6vnN9TCGX2sx1RHFDz66Js6goz6SAZQdOwaw==",
"dev": true
},
"node_modules/@cspell/dict-scala": {
- "version": "1.0.21",
- "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-1.0.21.tgz",
- "integrity": "sha512-5V/R7PRbbminTpPS3ywgdAalI9BHzcEjEj9ug4kWYvBIGwSnS7T6QCFCiu+e9LvEGUqQC+NHgLY4zs1NaBj2vA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz",
+ "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==",
"dev": true
},
"node_modules/@cspell/dict-software-terms": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.0.12.tgz",
- "integrity": "sha512-zsgraHo5PIDY1mTaWGA2NsxhO8g85inD758pEQL1MeKTFlGiFHT4vW+faryzhvBT5LOMH4LnTs0yGrMyn7JlkQ==",
+ "version": "3.3.9",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.9.tgz",
+ "integrity": "sha512-/O3EWe0SIznx18S7J3GAXPDe7sexn3uTsf4IlnGYK9WY6ZRuEywkXCB+5/USLTGf4+QC05pkHofphdvVSifDyA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-sql": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.2.tgz",
+ "integrity": "sha512-Pi0hAcvsSGtZZeyyAN1VfGtQJbrXos5x2QjJU0niAQKhmITSOrXU/1II1Gogk+FYDjWyV9wP2De0U2f7EWs6oQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-svelte": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz",
+ "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==",
"dev": true
},
"node_modules/@cspell/dict-swift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-1.0.1.tgz",
- "integrity": "sha512-M4onLt10Ptld8Q1BwBit8BBYVZ0d2ZEiBTW1AXekIVPQkPKkwa/RkGlR0GESWNTC2Zbmt/qge7trksVdaYVWFQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz",
+ "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==",
"dev": true
},
"node_modules/@cspell/dict-typescript": {
- "version": "1.0.19",
- "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-1.0.19.tgz",
- "integrity": "sha512-qmJApzoVskDeJnLZzZMaafEDGbEg5Elt4c3Mpg49SWzIHm1N4VXCp5CcFfHsOinJ30dGrs3ARAJGJZIw56kK6A==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.2.tgz",
+ "integrity": "sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==",
"dev": true
},
"node_modules/@cspell/dict-vue": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-2.0.1.tgz",
- "integrity": "sha512-n9So2C2Zw+uSDRzb2h9wq3PjZBqoHx+vBvu6a34H2qpumNjZ6HaEronrzX5tXJJXzOtocIQYrLxdd128TAU3+g==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz",
+ "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==",
"dev": true
},
- "node_modules/@es-joy/jsdoccomment": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.19.0.tgz",
- "integrity": "sha512-lRx/5ChsOwv7gIU05m8Ur1Rxa4/XkE23wTsX8XFBGWRYrCcCrngPf6yGJMG6n9dqnyDehPrBBVeFIm2INEIeQA==",
+ "node_modules/@cspell/dynamic-import": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.0.0.tgz",
+ "integrity": "sha512-HNkCepopgiEGuI1QGA6ob4+ayvoSMxvAqetLxP0u1sZzc50LH2DEWwotcNrpVdzZOtERHvIBcGaQKIBEx8pPRQ==",
"dev": true,
"dependencies": {
- "comment-parser": "1.3.0",
- "esquery": "^1.4.0",
- "jsdoc-type-pratt-parser": "~2.2.2"
+ "import-meta-resolve": "^3.1.1"
},
"engines": {
- "node": "^12 || ^14 || ^16 || ^17"
+ "node": ">=18.0"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz",
- "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==",
+ "node_modules/@cspell/strong-weak-map": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.0.0.tgz",
+ "integrity": "sha512-fRlqPSdpdub52vFtulDgLPzGPGe75I04ScId1zOO9ABP7/ro8VmaG//m1k7hsPkm6h7FG4jWympoA3aXDAcXaA==",
"dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.3.1",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18"
}
},
- "node_modules/@eslint/eslintrc/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz",
+ "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz",
+ "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ }
+ },
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz",
+ "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"dependencies": {
- "ms": "2.1.2"
+ "@csstools/color-helpers": "^5.0.1",
+ "@csstools/css-calc": "^2.1.1"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=18"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz",
+ "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"engines": {
- "node": ">= 4"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz",
- "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- },
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz",
+ "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"engines": {
- "node": ">=10.10.0"
+ "node": ">=18"
}
},
- "node_modules/@humanwhocodes/config-array/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
- "node": ">=6.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz",
+ "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.0.0.tgz",
+ "integrity": "sha512-RThY/MnKrhubF6+s1JflwUjPEsnCEmYCWwqa/aRISKWNXGZ9epUwft4bUMM35SdKF9xvBrLydAM1RDHd1Z//ZQ==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.12.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.12.3.tgz",
+ "integrity": "sha512-jsNnTBlMWuTpDkeE3on7+dWJi0D6fdDfeANj/w7MpS8ztROCoLvIO2nG0CcFj+E4k8j4QrSTh4Oryi3i2G669g==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
@@ -899,12 +1185,93 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
"node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"dev": true
},
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@@ -1004,178 +1371,190 @@
"node": ">=8"
}
},
- "node_modules/@sindresorhus/is": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
- "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/@socket.io/base64-arraybuffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
- "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==",
- "engines": {
- "node": ">= 0.6.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/@szmarczak/http-timer": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
- "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
- "dependencies": {
- "defer-to-connect": "^1.0.1"
- },
"engines": {
- "node": ">=6"
+ "node": ">=6.0.0"
}
},
- "node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
- "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
"engines": {
- "node": ">= 10"
+ "node": ">=6.0.0"
}
},
- "node_modules/@types/component-emitter": {
- "version": "1.2.11",
- "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
- "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ=="
- },
- "node_modules/@types/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
- },
- "node_modules/@types/cors": {
- "version": "2.8.12",
- "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
- "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
- },
- "node_modules/@types/json5": {
- "version": "0.0.29",
- "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
- "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "17.0.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz",
- "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA=="
- },
- "node_modules/@types/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true
},
- "node_modules/@types/yauzl": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
- "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
- "optional": true,
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
"dependencies": {
- "@types/node": "*"
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@ungap/promise-all-settled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
- "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
- "dev": true
- },
- "node_modules/abab": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
- "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "node_modules/accepts": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
- "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "node_modules/@mswjs/interceptors": {
+ "version": "0.37.5",
+ "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.5.tgz",
+ "integrity": "sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "mime-types": "~2.1.24",
- "negotiator": "0.6.2"
+ "@open-draft/deferred-promise": "^2.2.0",
+ "@open-draft/logger": "^0.3.0",
+ "@open-draft/until": "^2.0.0",
+ "is-node-process": "^1.2.0",
+ "outvariant": "^1.4.3",
+ "strict-event-emitter": "^0.5.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">=18"
}
},
- "node_modules/acorn": {
- "version": "8.7.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
- "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
- "bin": {
- "acorn": "bin/acorn"
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 8"
}
},
- "node_modules/acorn-globals": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
- "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
- "dependencies": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/acorn-globals/node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "bin": {
- "acorn": "bin/acorn"
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 8"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "node_modules/@open-draft/deferred-promise": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
+ "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
"dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "license": "MIT"
+ },
+ "node_modules/@open-draft/logger": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz",
+ "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-node-process": "^1.2.0",
+ "outvariant": "^1.4.0"
}
},
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
- "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "node_modules/@open-draft/until": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz",
+ "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "optional": true,
"engines": {
- "node": ">=0.4.0"
+ "node": ">=14"
}
},
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "node_modules/@pkgr/utils": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
+ "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==",
+ "dev": true,
"dependencies": {
- "debug": "4"
+ "cross-spawn": "^7.0.3",
+ "fast-glob": "^3.3.0",
+ "is-glob": "^4.0.3",
+ "open": "^9.1.0",
+ "picocolors": "^1.0.0",
+ "tslib": "^2.6.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.0.tgz",
+ "integrity": "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.6.3",
+ "tar-fs": "^3.0.6",
+ "unbzip2-stream": "^1.4.3",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
},
"engines": {
- "node": ">= 6.0.0"
+ "node": ">=18"
}
},
- "node_modules/agent-base/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "node_modules/@puppeteer/browsers/node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -1186,108 +1565,195 @@
}
}
},
- "node_modules/agent-base/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "node_modules/@puppeteer/browsers/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
- "node_modules/aggregate-error": {
+ "node_modules/@rvagg/chai-as-promised": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@rvagg/chai-as-promised/-/chai-as-promised-8.0.1.tgz",
+ "integrity": "sha512-QlS0rw/cenLux73r0sg5z167IvfWtbz2n9l/PxiNHpZB9fTsG7tX5MlAhGXcbkvoWDnOfBd/lvjvvalEzwovwQ==",
+ "dev": true
+ },
+ "node_modules/@socket.io/component-emitter": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ },
+ "node_modules/@tokenizer/inflate": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.6.tgz",
+ "integrity": "sha512-SdR/i05U7Xhnsq36iyIq/ZiGGw4PKzw4ww3bOq80Pjj4wyXpqyTcgrgdDdGlcatnlvzNJx8CQw3hp6QZvkUwhA==",
"dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
+ "debug": "^4.3.7",
+ "fflate": "^0.8.2",
+ "token-types": "^6.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=16"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
}
},
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/@tokenizer/inflate/node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "ms": "^2.1.3"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/ansi-align": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
- "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
- "dev": true,
+ "node_modules/@tokenizer/inflate/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
+ },
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "20.4.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.4.tgz",
+ "integrity": "sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew=="
+ },
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "string-width": "^4.1.0"
+ "@types/node": "*"
}
},
- "node_modules/ansi-align/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==",
+ "node_modules/abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
- "node_modules/ansi-align/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,
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 0.6"
}
},
- "node_modules/ansi-align/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==",
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "bin": {
+ "acorn": "bin/acorn"
},
"engines": {
- "node": ">=8"
+ "node": ">=0.4.0"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
+ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
"engines": {
- "node": ">=6"
+ "node": ">= 14"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
"dependencies": {
- "type-fest": "^0.21.3"
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
},
"engines": {
"node": ">=8"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "node_modules/ansi-colors": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
+ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz",
+ "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==",
+ "dev": true,
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -1297,7 +1763,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
"engines": {
"node": ">=8"
}
@@ -1306,7 +1771,6 @@
"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"
},
@@ -1318,9 +1782,9 @@
}
},
"node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"dev": true,
"dependencies": {
"normalize-path": "^3.0.0",
@@ -1345,38 +1809,18 @@
"node_modules/archy": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=",
+ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
"dev": true
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "node_modules/array-includes": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz",
- "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.1",
- "get-intrinsic": "^1.1.1",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
+ "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA=="
},
"node_modules/array-timsort": {
"version": "1.0.3",
@@ -1384,90 +1828,117 @@
"integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==",
"dev": true
},
- "node_modules/array.prototype.flat": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz",
- "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
- },
- "node_modules/asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "engines": {
- "node": ">=0.8"
- }
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
},
"node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
"node_modules/async": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
- "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "engines": {
- "node": "*"
- }
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
- "node_modules/aws4": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
- "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
+ "node_modules/b4a": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
+ "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
+ "license": "Apache-2.0"
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
+ "node_modules/bare-events": {
+ "version": "2.5.4",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
+ "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
+ "license": "Apache-2.0",
+ "optional": true
+ },
+ "node_modules/bare-fs": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.1.tgz",
+ "integrity": "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.0.0",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.0.0"
+ },
+ "engines": {
+ "bare": ">=1.7.0"
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.4.0.tgz",
+ "integrity": "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "bare": ">=1.6.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.4.tgz",
+ "integrity": "sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.21.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ },
+ "bare-events": {
+ "optional": true
+ }
+ }
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -1485,7 +1956,8 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/base64id": {
"version": "2.0.0",
@@ -1506,12 +1978,22 @@
"node": ">= 0.8"
}
},
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dependencies": {
- "tweetnacl": "^0.14.3"
+ "node_modules/basic-ftp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+ "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
}
},
"node_modules/binary-extensions": {
@@ -1523,139 +2005,97 @@
"node": ">=8"
}
},
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
"node_modules/body-parser": {
- "version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
- "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
- "dependencies": {
- "bytes": "3.1.0",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.7.2",
- "iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.7.0",
- "raw-body": "2.4.0",
- "type-is": "~1.6.17"
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.0.1.tgz",
+ "integrity": "sha512-PagxbjvuPH6tv0f/kdVbFGcb79D236SLcDTs6DrQ7GizJ88S1UWP4nMXFEo/I4fdhGRGabvFfFjVGm3M7U8JwA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "3.1.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.5.2",
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "^3.0.0",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.10"
}
},
"node_modules/body-parser/node_modules/bytes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
- "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
"engines": {
"node": ">= 0.8"
}
},
- "node_modules/boxen": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
- "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
- "dev": true,
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^6.2.0",
- "chalk": "^4.1.0",
- "cli-boxes": "^2.2.1",
- "string-width": "^4.2.2",
- "type-fest": "^0.20.2",
- "widest-line": "^3.1.0",
- "wrap-ansi": "^7.0.0"
- },
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"engines": {
- "node": ">=10"
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/body-parser/node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/boxen/node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "node_modules/bplist-parser": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz",
+ "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==",
"dev": true,
+ "dependencies": {
+ "big-integer": "^1.6.44"
+ },
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/boxen/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/boxen/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/boxen/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": ">= 5.10.0"
}
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
- },
"node_modules/browser-stdout": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
@@ -1663,26 +2103,35 @@
"dev": true
},
"node_modules/browserslist": {
- "version": "4.19.1",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz",
- "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==",
+ "version": "4.23.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz",
+ "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==",
"dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"dependencies": {
- "caniuse-lite": "^1.0.30001286",
- "electron-to-chromium": "^1.4.17",
- "escalade": "^3.1.1",
- "node-releases": "^2.0.1",
- "picocolors": "^1.0.0"
+ "caniuse-lite": "^1.0.30001629",
+ "electron-to-chromium": "^1.4.796",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.16"
},
"bin": {
"browserslist": "cli.js"
},
"engines": {
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
}
},
"node_modules/buffer": {
@@ -1703,6 +2152,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@@ -1711,59 +2161,33 @@
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "license": "MIT",
"engines": {
"node": "*"
}
},
- "node_modules/bytes": {
+ "node_modules/bundle-name": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cacheable-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
- "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
- "dev": true,
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacheable-request/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
+ "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==",
"dev": true,
"dependencies": {
- "pump": "^3.0.0"
+ "run-applescript": "^5.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cacheable-request/node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "dev": true,
+ "node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
"engines": {
- "node": ">=8"
+ "node": ">= 0.8"
}
},
"node_modules/caching-transform": {
@@ -1782,12 +2206,18 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -1797,7 +2227,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -1812,59 +2241,48 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001303",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz",
- "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- }
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
- "node_modules/catharsis": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
- "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
+ "version": "1.0.30001629",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz",
+ "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==",
"dev": true,
- "dependencies": {
- "lodash": "^4.17.15"
- },
- "engines": {
- "node": ">= 10"
- }
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
},
"node_modules/chai": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz",
- "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.0.tgz",
+ "integrity": "sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw==",
"dev": true,
"dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^3.0.1",
- "get-func-name": "^2.0.0",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.0.0",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
- "node_modules/chai-as-promised": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
- "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
+ "node_modules/chai/node_modules/check-error": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz",
+ "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==",
"dev": true,
- "dependencies": {
- "check-error": "^1.0.2"
- },
- "peerDependencies": {
- "chai": ">= 2.1.2 < 5"
+ "engines": {
+ "node": ">= 16"
}
},
"node_modules/chalk": {
@@ -1883,13 +2301,31 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "node_modules/chalk-template": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz",
+ "integrity": "sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==",
"dev": true,
+ "dependencies": {
+ "chalk": "^5.2.0"
+ },
"engines": {
- "node": "*"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk-template?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/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/chokidar": {
@@ -1931,16 +2367,18 @@
"node": ">= 6"
}
},
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
+ "node_modules/chromium-bidi": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.1.0.tgz",
+ "integrity": "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "3.0.1",
+ "zod": "3.24.1"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
},
"node_modules/clean-stack": {
"version": "2.2.0",
@@ -1967,68 +2405,112 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cli-boxes": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
- "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
+ "node_modules/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
"dev": true,
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "node_modules/cli-truncate": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz",
+ "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==",
"dev": true,
"dependencies": {
- "restore-cursor": "^3.1.0"
+ "slice-ansi": "^5.0.0",
+ "string-width": "^7.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cli-truncate": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
- "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
+ "node_modules/cli-truncate/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/cli-truncate/node_modules/emoji-regex": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "dev": true
+ },
+ "node_modules/cli-truncate/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
"dependencies": {
- "slice-ansi": "^5.0.0",
- "string-width": "^5.0.0"
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "node_modules/cli-truncate/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
+ "strip-ansi": "^6.0.1",
"wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
}
},
"node_modules/cliui/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
+ "license": "MIT"
},
"node_modules/cliui/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,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -2037,7 +2519,7 @@
"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,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -2047,20 +2529,10 @@
"node": ">=8"
}
},
- "node_modules/clone-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
- "dev": true,
- "dependencies": {
- "mimic-response": "^1.0.0"
- }
- },
"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"
},
@@ -2071,13 +2543,12 @@
"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
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/colorette": {
- "version": "2.0.16",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
- "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
+ "version": "2.0.20",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
"dev": true
},
"node_modules/combined-stream": {
@@ -2092,22 +2563,22 @@
}
},
"node_modules/commander": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
- "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
"dev": true,
"engines": {
- "node": ">= 12"
+ "node": ">=16"
}
},
"node_modules/comment-json": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.1.1.tgz",
- "integrity": "sha512-v8gmtPvxhBlhdRBLwdHSjGy9BgA23t9H1FctdQKyUrErPjSrJcdDMqBq9B4Irtm7w3TNYLQJNH6ARKnpyag1sA==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz",
+ "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==",
"dev": true,
"dependencies": {
"array-timsort": "^1.0.3",
- "core-util-is": "^1.0.2",
+ "core-util-is": "^1.0.3",
"esprima": "^4.0.1",
"has-own-prop": "^2.0.0",
"repeat-string": "^1.6.1"
@@ -2116,19 +2587,10 @@
"node": ">= 6"
}
},
- "node_modules/comment-parser": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.0.tgz",
- "integrity": "sha512-hRpmWIKgzd81vn0ydoWoyPoALEOnF4wt8yKD35Ib1D6XC2siLiYaiqfGkYrunuKdsXGwpBpHU3+9r+RVw2NZfA==",
- "dev": true,
- "engines": {
- "node": ">= 12.0.0"
- }
- },
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true
},
"node_modules/component-emitter": {
@@ -2167,76 +2629,92 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
},
"node_modules/configstore": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
- "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+ "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
"dev": true,
"dependencies": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
+ "dot-prop": "^6.0.1",
+ "graceful-fs": "^4.2.6",
+ "unique-string": "^3.0.0",
+ "write-file-atomic": "^3.0.3",
+ "xdg-basedir": "^5.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/configstore?sponsor=1"
}
},
- "node_modules/confusing-browser-globals": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
- "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
- "dev": true
- },
"node_modules/content-disposition": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
- "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz",
+ "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==",
"dependencies": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "5.2.1"
},
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/content-disposition/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
"node_modules/content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/convert-source-map": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
- "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.1"
- }
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
},
"node_modules/cookie": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
- "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
+ "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.1.tgz",
+ "integrity": "sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==",
+ "engines": {
+ "node": ">=6.6.0"
+ }
},
"node_modules/cookiejar": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
- "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ=="
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
},
"node_modules/core-util-is": {
"version": "1.0.3",
@@ -2257,34 +2735,24 @@
}
},
"node_modules/cosmiconfig": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
- "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz",
+ "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==",
"dev": true,
"dependencies": {
- "@types/parse-json": "^4.0.0",
"import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
"parse-json": "^5.0.0",
- "path-type": "^4.0.0",
- "yaml": "^1.10.0"
+ "path-type": "^4.0.0"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/cross-fetch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
- "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
- "dependencies": {
- "node-fetch": "2.6.7"
+ "node": ">=14"
}
},
"node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
+ "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -2295,169 +2763,357 @@
}
},
"node_modules/crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
"dev": true,
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cspell": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/cspell/-/cspell-5.18.0.tgz",
- "integrity": "sha512-0QVcIc+I+2VM2N+piB4p+rC8MU5OU7Og3jsHW4xSzxqA7sZBLNSQnp+vtBBBsjkldog3j/o+rXpnKSymamgG/g==",
- "dev": true,
- "dependencies": {
- "@cspell/cspell-pipe": "^5.18.0",
- "chalk": "^4.1.2",
- "commander": "^8.3.0",
- "comment-json": "^4.1.1",
- "cspell-gitignore": "^5.18.0",
- "cspell-glob": "^5.18.0",
- "cspell-lib": "^5.18.0",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.0.0.tgz",
+ "integrity": "sha512-Nayy25Dh+GAlDFDpVZaQhmidP947rpj1Pn9lmZ3nUFjD9W/yj0h0vrjMLMN4dbonddkmKh4t51C+7NuMP405hg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-json-reporter": "8.0.0",
+ "@cspell/cspell-pipe": "8.0.0",
+ "@cspell/cspell-types": "8.0.0",
+ "@cspell/dynamic-import": "8.0.0",
+ "chalk": "^5.3.0",
+ "chalk-template": "^1.1.0",
+ "commander": "^11.1.0",
+ "cspell-gitignore": "8.0.0",
+ "cspell-glob": "8.0.0",
+ "cspell-io": "8.0.0",
+ "cspell-lib": "8.0.0",
+ "fast-glob": "^3.3.2",
"fast-json-stable-stringify": "^2.1.0",
- "file-entry-cache": "^6.0.1",
- "fs-extra": "^10.0.0",
- "get-stdin": "^8.0.0",
- "glob": "^7.2.0",
- "imurmurhash": "^0.1.4",
- "semver": "^7.3.5",
- "strip-ansi": "^6.0.1",
- "vscode-uri": "^3.0.3"
+ "file-entry-cache": "^7.0.1",
+ "get-stdin": "^9.0.0",
+ "semver": "^7.5.4",
+ "strip-ansi": "^7.1.0",
+ "vscode-uri": "^3.0.8"
},
"bin": {
- "cspell": "bin.js"
+ "cspell": "bin.mjs",
+ "cspell-esm": "bin.mjs"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/streetsidesoftware/cspell?sponsor=1"
}
},
+ "node_modules/cspell-dictionary": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.0.0.tgz",
+ "integrity": "sha512-R/AzUj7W7F4O4fAOL8jvIiUqPYGy6jIBlDkxO9SZe/A6D2kOICZZzGSXMZ0M7OKYqxc6cioQUMKOJsLkDXfDXw==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-pipe": "8.0.0",
+ "@cspell/cspell-types": "8.0.0",
+ "cspell-trie-lib": "8.0.0",
+ "fast-equals": "^4.0.3",
+ "gensequence": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-dictionary/node_modules/fast-equals": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz",
+ "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==",
+ "dev": true
+ },
"node_modules/cspell-gitignore": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-5.18.0.tgz",
- "integrity": "sha512-nHdMhGDlDYN2dwh/LPGNVYqWDr7SL9N0zn4Bs9qOjNE6OkHMOvm+otjwEv4sS5b+pK+prrilK0OINkZFdftMvA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.0.0.tgz",
+ "integrity": "sha512-Uv+ENdUm+EXwQuG9187lKmE1t8b2KW+6VaQHP7r01WiuhkwhfzmWA7C30iXVcwRcsMw07wKiWvMEtG6Zlzi6lQ==",
"dev": true,
"dependencies": {
- "cspell-glob": "^5.18.0",
+ "cspell-glob": "8.0.0",
"find-up": "^5.0.0"
},
"bin": {
- "cspell-gitignore": "bin.js"
+ "cspell-gitignore": "bin.mjs"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
}
},
"node_modules/cspell-glob": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-5.18.0.tgz",
- "integrity": "sha512-GLN45ntiB2oT1UewOHFf73gKujdSOr8Mb4OSa8r6JJrkACRzqe1Qr8mUrV/wY5/bDK6QjtLQylMpDw6nkaPWWw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.0.0.tgz",
+ "integrity": "sha512-wOkRA1OTIPhyN7a+k9Qq45yFXM+tBFi9DS5ObiLv6t6VTBIeMQpwRK0KLViHmjTgiA6eWx53Dnr+DZfxcAkcZA==",
"dev": true,
"dependencies": {
- "micromatch": "^4.0.4"
+ "micromatch": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-grammar": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.0.0.tgz",
+ "integrity": "sha512-uxpRvbBxOih6SjFQvKTBPTA+YyqYM5UFTNTFuRnA6g6WZeg+NJaTkbQrTgXja4B2r8MJ6XU22YrKTtHNNcP7bQ==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-pipe": "8.0.0",
+ "@cspell/cspell-types": "8.0.0"
+ },
+ "bin": {
+ "cspell-grammar": "bin.mjs"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
}
},
"node_modules/cspell-io": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-5.18.0.tgz",
- "integrity": "sha512-kkIBZ27KNzQ7R4BpXs9xkRpsM8TRMtH0/ozCBBxGCFFqV9TMDmTp3zoqgN0AWlOFNmLRClc6rpeFs3xswhnOLA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.0.0.tgz",
+ "integrity": "sha512-NVdVmQd7SU/nxYwWtO/6gzux/kp1Dt36zKds0+QHZhQ18JJjXduF5e+WUttqKi2oj/vvmjiG4HGFKQVDBcBz3w==",
"dev": true,
+ "dependencies": {
+ "@cspell/cspell-service-bus": "8.0.0"
+ },
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
}
},
"node_modules/cspell-lib": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-5.18.0.tgz",
- "integrity": "sha512-cAVRbO/WKK1/ad8UDOxOD6+5MkdwW3u2WaLwzaNbQulHHshFoKgp5hM4WoJeZkV+2+zWH8BDV0e4XPKdrXvnmQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.0.0.tgz",
+ "integrity": "sha512-X/BzUjrzHOx7YlhvSph/OlMu1RmCTnybeZvIE67d1Pd7wT1TmZhFTnmvruUhoHxWEudOEe4HjzuNL9ph6Aw+aA==",
"dev": true,
"dependencies": {
- "@cspell/cspell-bundled-dicts": "^5.18.0",
- "@cspell/cspell-types": "^5.18.0",
+ "@cspell/cspell-bundled-dicts": "8.0.0",
+ "@cspell/cspell-pipe": "8.0.0",
+ "@cspell/cspell-resolver": "8.0.0",
+ "@cspell/cspell-types": "8.0.0",
+ "@cspell/dynamic-import": "8.0.0",
+ "@cspell/strong-weak-map": "8.0.0",
"clear-module": "^4.1.2",
- "comment-json": "^4.1.1",
- "configstore": "^5.0.1",
- "cosmiconfig": "^7.0.1",
- "cspell-glob": "^5.18.0",
- "cspell-io": "^5.18.0",
- "cspell-trie-lib": "^5.18.0",
- "fast-equals": "^2.0.4",
- "find-up": "^5.0.0",
- "fs-extra": "^10.0.0",
- "gensequence": "^3.1.1",
+ "comment-json": "^4.2.3",
+ "configstore": "^6.0.0",
+ "cosmiconfig": "8.0.0",
+ "cspell-dictionary": "8.0.0",
+ "cspell-glob": "8.0.0",
+ "cspell-grammar": "8.0.0",
+ "cspell-io": "8.0.0",
+ "cspell-trie-lib": "8.0.0",
+ "fast-equals": "^5.0.1",
+ "find-up": "^6.3.0",
+ "gensequence": "^6.0.0",
"import-fresh": "^3.3.0",
"resolve-from": "^5.0.0",
- "resolve-global": "^1.0.0",
- "vscode-uri": "^3.0.3"
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/cspell-lib/node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true,
"engines": {
- "node": ">=12.13.0"
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cspell-trie-lib": {
- "version": "5.18.0",
- "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-5.18.0.tgz",
- "integrity": "sha512-WUxZEM175z+72cL65VG7rgNZMc4OkVfyAkit7CQKkcaYTOZ8M15XmPvPWnqgFPg4z6HYwesiybL+J6hFxf5Syg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.0.0.tgz",
+ "integrity": "sha512-0rC5e1C0uM78uuS+lC1T18EojWZyNvq4bPOPCisnwuhuWrAfCqrFrX/qDNslWk3VTOPbsEMlFj6OnIGQnfwSKg==",
"dev": true,
"dependencies": {
- "@cspell/cspell-pipe": "^5.18.0",
- "fs-extra": "^10.0.0",
- "gensequence": "^3.1.1"
+ "@cspell/cspell-pipe": "8.0.0",
+ "@cspell/cspell-types": "8.0.0",
+ "gensequence": "^6.0.0"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=18"
}
},
- "node_modules/cssom": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
- "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw=="
+ "node_modules/cspell/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
},
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
- "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "node_modules/cspell/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/cspell/node_modules/file-entry-cache": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.1.tgz",
+ "integrity": "sha512-uLfFktPmRetVCbHe5UPuekWrQ6hENufnA46qEGbfACkK5drjTTdQYUragRgMjHldcbYG+nslUerqMPjbBSHXjQ==",
+ "dev": true,
"dependencies": {
- "cssom": "~0.3.6"
+ "flat-cache": "^3.1.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12.0.0"
}
},
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
- "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
+ "node_modules/cspell/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
},
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "node_modules/cssstyle": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.2.1.tgz",
+ "integrity": "sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==",
"dependencies": {
- "assert-plus": "^1.0.0"
+ "@asamuzakjp/css-color": "^2.8.2",
+ "rrweb-cssom": "^0.8.0"
},
"engines": {
- "node": ">=0.10"
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/data-urls": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz",
- "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
+ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
"dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^10.0.0"
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/debug": {
@@ -2471,124 +3127,167 @@
"node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decimal.js": {
- "version": "10.3.1",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz",
- "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ=="
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
- "node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "node_modules/deep-eql": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz",
+ "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==",
"dev": true,
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">=6"
}
},
- "node_modules/deep-eql": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
- "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/default-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz",
+ "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==",
"dev": true,
"dependencies": {
- "type-detect": "^4.0.0"
+ "bundle-name": "^3.0.0",
+ "default-browser-id": "^3.0.0",
+ "execa": "^7.1.1",
+ "titleize": "^3.0.0"
},
"engines": {
- "node": ">=0.12"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "node_modules/default-browser-id": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz",
+ "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==",
"dev": true,
+ "dependencies": {
+ "bplist-parser": "^0.2.0",
+ "untildify": "^4.0.0"
+ },
"engines": {
- "node": ">=4.0.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
- },
"node_modules/default-require-extensions": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz",
- "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz",
+ "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==",
"dev": true,
"dependencies": {
"strip-bom": "^4.0.0"
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/defer-to-connect": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
- "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
- "dev": true
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "node_modules/define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
"dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "license": "MIT",
"dependencies": {
- "object-keys": "^1.0.12"
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">= 14"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
},
"node_modules/devtools-protocol": {
- "version": "0.0.960912",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.960912.tgz",
- "integrity": "sha512-I3hWmV9rWHbdnUdmMKHF2NuYutIM2kXz2mdXW8ha7TbRlGTVs+PF+PsB5QWvpCek4Fy9B+msiispCfwlhG5Sqg=="
+ "version": "0.0.1380148",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1380148.tgz",
+ "integrity": "sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA==",
+ "license": "BSD-3-Clause"
},
"node_modules/dezalgo": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz",
- "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+ "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
"dependencies": {
"asap": "^2.0.0",
"wrappy": "1"
}
},
"node_modules/diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
"dev": true,
"engines": {
"node": ">=0.3.1"
@@ -2603,83 +3302,46 @@
"npm": ">= 5.3.0"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/domexception": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
- "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
- "dependencies": {
- "webidl-conversions": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
"dev": true,
"dependencies": {
"is-obj": "^2.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/duplexer3": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
- "dev": true
- },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.54",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz",
- "integrity": "sha512-jRAoneRdSxnpRHO0ANpnEUtQHXxlgfVjrLOnQSisw1ryjXJXvS0pJaR/v2B7S++/tRjgEDp4Sjn5nmgb6uTySw==",
+ "version": "1.4.796",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.796.tgz",
+ "integrity": "sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA==",
"dev": true
},
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
"engines": {
"node": ">= 0.8"
}
@@ -2688,55 +3350,53 @@
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/engine.io": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz",
- "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==",
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz",
+ "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==",
"dependencies": {
"@types/cookie": "^0.4.1",
"@types/cors": "^2.8.12",
"@types/node": ">=10.0.0",
"accepts": "~1.3.4",
"base64id": "2.0.0",
- "cookie": "~0.4.1",
+ "cookie": "~0.7.2",
"cors": "~2.8.5",
"debug": "~4.3.1",
- "engine.io-parser": "~5.0.0",
- "ws": "~8.2.3"
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/engine.io-parser": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz",
- "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==",
- "dependencies": {
- "@socket.io/base64-arraybuffer": "~1.0.2"
- },
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/engine.io/node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/engine.io/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -2748,94 +3408,66 @@
}
},
"node_modules/engine.io/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
- "node_modules/engine.io/node_modules/ws": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
- "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"engines": {
- "node": ">=10.0.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "node": ">=0.12"
},
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/entities": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
- "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
- "dev": true
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
"dependencies": {
"is-arrayish": "^0.2.1"
}
},
- "node_modules/es-abstract": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
- "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.1.1",
- "get-symbol-description": "^1.0.0",
- "has": "^1.0.3",
- "has-symbols": "^1.0.2",
- "internal-slot": "^1.0.3",
- "is-callable": "^1.2.4",
- "is-negative-zero": "^2.0.1",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.1",
- "is-string": "^1.0.7",
- "is-weakref": "^1.0.1",
- "object-inspect": "^1.11.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.2",
- "string.prototype.trimend": "^1.0.4",
- "string.prototype.trimstart": "^1.0.4",
- "unbox-primitive": "^1.0.1"
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
},
"engines": {
"node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"engines": {
"node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/es6-error": {
@@ -2845,27 +3477,17 @@
"dev": true
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"engines": {
"node": ">=6"
}
},
- "node_modules/escape-goat": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
- "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/escape-string-regexp": {
"version": "4.0.0",
@@ -2880,14 +3502,14 @@
}
},
"node_modules/escodegen": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
- "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
- "esutils": "^2.0.2",
- "optionator": "^0.8.1"
+ "esutils": "^2.0.2"
},
"bin": {
"escodegen": "bin/escodegen.js",
@@ -2900,265 +3522,69 @@
"source-map": "~0.6.1"
}
},
- "node_modules/escodegen/node_modules/levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "dependencies": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/optionator": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
- "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
- "dependencies": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/escodegen/node_modules/type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "dependencies": {
- "prelude-ls": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
"node_modules/eslint": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz",
- "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==",
- "dev": true,
- "dependencies": {
- "@eslint/eslintrc": "^1.1.0",
- "@humanwhocodes/config-array": "^0.9.2",
- "ajv": "^6.10.0",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.0.0.tgz",
+ "integrity": "sha512-IMryZ5SudxzQvuod6rUdIUz29qFItWx281VhtFVc2Psy/ZhlCeD/5DT6lBIJ4H3G+iamGJoTln1v+QSuPw0p7Q==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^3.0.2",
+ "@eslint/js": "9.0.0",
+ "@humanwhocodes/config-array": "^0.12.3",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
- "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.3.0",
- "espree": "^9.3.1",
- "esquery": "^1.4.0",
+ "eslint-scope": "^8.0.1",
+ "eslint-visitor-keys": "^4.0.0",
+ "espree": "^10.0.1",
+ "esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^6.0.1",
- "globals": "^13.6.0",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "js-yaml": "^4.1.0",
+ "is-path-inside": "^3.0.3",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
+ "minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "regexpp": "^3.2.0",
+ "optionator": "^0.9.3",
"strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
+ "text-table": "^0.2.0"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/eslint-config-airbnb-base": {
- "version": "15.0.0",
- "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
- "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
- "dev": true,
- "dependencies": {
- "confusing-browser-globals": "^1.0.10",
- "object.assign": "^4.1.2",
- "object.entries": "^1.1.5",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "peerDependencies": {
- "eslint": "^7.32.0 || ^8.2.0",
- "eslint-plugin-import": "^2.25.2"
- }
- },
- "node_modules/eslint-config-airbnb-base/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/eslint-config-prettier": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz",
- "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz",
+ "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==",
"dev": true,
"bin": {
- "eslint-config-prettier": "bin/cli.js"
+ "eslint-config-prettier": "build/bin/cli.js"
},
"peerDependencies": {
"eslint": ">=7.0.0"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
- "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7",
- "resolve": "^1.20.0"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/eslint-module-utils": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz",
- "integrity": "sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==",
- "dev": true,
- "dependencies": {
- "debug": "^3.2.7",
- "find-up": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-module-utils/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/eslint-module-utils/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-module-utils/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/eslint-plugin-es": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz",
@@ -3202,90 +3628,6 @@
"node": ">=4"
}
},
- "node_modules/eslint-plugin-import": {
- "version": "2.25.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz",
- "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==",
- "dev": true,
- "dependencies": {
- "array-includes": "^3.1.4",
- "array.prototype.flat": "^1.2.5",
- "debug": "^2.6.9",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.6",
- "eslint-module-utils": "^2.7.1",
- "has": "^1.0.3",
- "is-core-module": "^2.8.0",
- "is-glob": "^4.0.3",
- "minimatch": "^3.0.4",
- "object.values": "^1.1.5",
- "resolve": "^1.20.0",
- "tsconfig-paths": "^3.11.0"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-jsdoc": {
- "version": "37.9.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.1.tgz",
- "integrity": "sha512-ynIsYL+rOtIKWOttAYWCgOJawPwYKexcX3cuoYHwifvz4+uY+MZ2un5nMHBULigdSITnQ5/ZSHpO/O1nwv/uJA==",
- "dev": true,
- "dependencies": {
- "@es-joy/jsdoccomment": "~0.19.0",
- "comment-parser": "1.3.0",
- "debug": "^4.3.3",
- "escape-string-regexp": "^4.0.0",
- "esquery": "^1.4.0",
- "regextras": "^0.8.0",
- "semver": "^7.3.5",
- "spdx-expression-parse": "^3.0.1"
- },
- "engines": {
- "node": "^12 || ^14 || ^16 || ^17"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/eslint-plugin-jsdoc/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-jsdoc/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
"node_modules/eslint-plugin-node": {
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz",
@@ -3331,88 +3673,75 @@
}
},
"node_modules/eslint-plugin-node/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz",
- "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==",
+ "version": "5.0.0-alpha.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0-alpha.2.tgz",
+ "integrity": "sha512-F6YBCbrRzvZwcINw3crm1+/uX/i+rJYaFErPtwCfUoPLywRfY7pwBtI3yMe5OpIotuaiws8cd29oM80ca6NQSQ==",
"dev": true,
"dependencies": {
- "prettier-linter-helpers": "^1.0.0"
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.8.5"
},
"engines": {
- "node": ">=6.0.0"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/prettier"
},
"peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "prettier": ">=3.0.0"
},
"peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
"eslint-config-prettier": {
"optional": true
}
}
},
"node_modules/eslint-scope": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
- "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz",
+ "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
- "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
+ "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
"dev": true,
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -3433,17 +3762,20 @@
"dev": true
},
"node_modules/espree": {
- "version": "9.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
- "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz",
+ "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==",
"dev": true,
"dependencies": {
- "acorn": "^8.7.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.3.0"
+ "acorn": "^8.11.3",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
"node_modules/esprima": {
@@ -3459,9 +3791,9 @@
}
},
"node_modules/esquery": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
- "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
"dependencies": {
"estraverse": "^5.1.0"
@@ -3501,29 +3833,35 @@
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "dev": true
+ },
"node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
"dev": true,
"dependencies": {
"cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
"merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
},
"engines": {
- "node": ">=10"
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
@@ -3532,71 +3870,256 @@
"node_modules/expect.js": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz",
- "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=",
+ "integrity": "sha512-okDF/FAPEul1ZFLae4hrgpIqAeapoo5TRdcg/lD0iN9S3GWrBFIJwNezGH1DMtIz+RxU4RrFmMq7WUUvDg3J6A==",
"dev": true
},
"node_modules/express": {
- "version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
- "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
- "dependencies": {
- "accepts": "~1.3.7",
- "array-flatten": "1.1.1",
- "body-parser": "1.19.0",
- "content-disposition": "0.5.3",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.0.1.tgz",
+ "integrity": "sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==",
+ "dependencies": {
+ "accepts": "^2.0.0",
+ "body-parser": "^2.0.1",
+ "content-disposition": "^1.0.0",
"content-type": "~1.0.4",
- "cookie": "0.4.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
+ "cookie": "0.7.1",
+ "cookie-signature": "^1.2.1",
+ "debug": "4.3.6",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "~1.1.2",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
+ "finalhandler": "^2.0.0",
+ "fresh": "2.0.0",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "^2.0.0",
"methods": "~1.1.2",
- "on-finished": "~2.3.0",
+ "mime-types": "^3.0.0",
+ "on-finished": "2.4.1",
+ "once": "1.4.0",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
- "qs": "6.7.0",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
- "safe-buffer": "5.1.2",
- "send": "0.17.1",
- "serve-static": "1.14.1",
- "setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
+ "router": "^2.0.0",
+ "safe-buffer": "5.2.1",
+ "send": "^1.1.0",
+ "serve-static": "^2.1.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "^2.0.0",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"engines": {
- "node": ">= 0.10.0"
+ "node": ">= 18"
+ }
+ },
+ "node_modules/express-fileupload": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.5.0.tgz",
+ "integrity": "sha512-jSW3w9evqM37VWkEPkL2Ck5wUo2a8qa03MH+Ou/0ZSTpNlQFBvSLjU12k2nYcHhaMPv4JVvv6+Ac1OuLgUZb7w==",
+ "dependencies": {
+ "busboy": "^1.6.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/express-fileupload/node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/express-fileupload/node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/express-handlebars": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.1.tgz",
- "integrity": "sha512-K3Lemki5jkD3sZwDhgBEBk+oAl1xg4nsMJAfpq1AUl5K187/mU1/xKVWt+4RZAHAxlyQFk4YBfX5+00AzLNfWg==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-8.0.1.tgz",
+ "integrity": "sha512-mdas0PTbgQnwSyAjcYM7OMaftM8nJ3Kqz6yAyK4iCFvMOGGvh6pv42IHwcE5PBpS6ffYeZRSsgAdYUMG4CSjhQ==",
"dependencies": {
- "glob": "^7.2.0",
- "graceful-fs": "^4.2.8",
- "handlebars": "^4.7.7"
+ "glob": "^11.0.0",
+ "graceful-fs": "^4.2.11",
+ "handlebars": "^4.7.8"
},
"engines": {
- "node": ">=v12.22.7"
+ "node": ">=20"
}
},
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "node_modules/express-handlebars/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/express-handlebars/node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/express-handlebars/node_modules/glob": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz",
+ "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^4.0.1",
+ "minimatch": "^10.0.0",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^2.0.0"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/express-handlebars/node_modules/minimatch": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz",
+ "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/express-handlebars/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/express/node_modules/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
+ "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/express/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/mime-db": {
+ "version": "1.53.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz",
+ "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/mime-types": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.0.tgz",
+ "integrity": "sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==",
+ "dependencies": {
+ "mime-db": "^1.53.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/express/node_modules/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
"integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "license": "BSD-2-Clause",
"dependencies": {
"debug": "^4.1.1",
"get-stream": "^5.1.0",
@@ -3613,11 +4136,12 @@
}
},
"node_modules/extract-zip/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -3632,6 +4156,7 @@
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
"integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0"
},
@@ -3643,74 +4168,152 @@
}
},
"node_modules/extract-zip/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "engines": [
- "node >=0.6.0"
- ]
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"node_modules/fast-diff": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
- "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
"dev": true
},
"node_modules/fast-equals": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz",
- "integrity": "sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w==",
- "dev": true
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz",
+ "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
},
"node_modules/fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="
},
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+ "license": "MIT",
"dependencies": {
"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=="
+ },
"node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
"dependencies": {
- "flat-cache": "^3.0.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/file-entry-cache/node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "20.0.0",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.0.0.tgz",
+ "integrity": "sha512-w8Z+QqWtEPIfyoPx9lDhzR52UjY5PfZunJ6lmH48oCR2gVbV52Aaw2bVtbi7P4EAlSpjn8xmNDiRAieYaabEIQ==",
+ "dependencies": {
+ "@tokenizer/inflate": "^0.2.6",
+ "strtok3": "^10.0.1",
+ "token-types": "^6.0.0",
+ "uint8array-extras": "^1.4.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -3720,16 +4323,16 @@
}
},
"node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.0.0.tgz",
+ "integrity": "sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==",
"dependencies": {
"debug": "2.6.9",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
@@ -3779,12 +4382,13 @@
}
},
"node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
"dependencies": {
- "flatted": "^3.1.0",
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"engines": {
@@ -3792,9 +4396,9 @@
}
},
"node_modules/flatted": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
- "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
"dev": true
},
"node_modules/foreground-child": {
@@ -3810,18 +4414,10 @@
"node": ">=8.0.0"
}
},
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "engines": {
- "node": "*"
- }
- },
"node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+ "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -3832,30 +4428,18 @@
}
},
"node_modules/formidable": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz",
- "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz",
+ "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==",
"dependencies": {
- "dezalgo": "1.0.3",
- "hexoid": "1.0.0",
- "once": "1.4.0",
- "qs": "6.9.3"
+ "dezalgo": "^1.0.4",
+ "hexoid": "^2.0.0",
+ "once": "^1.4.0"
},
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
},
- "node_modules/formidable/node_modules/qs": {
- "version": "6.9.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz",
- "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==",
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -3865,11 +4449,11 @@
}
},
"node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/fromentries": {
@@ -3892,29 +4476,11 @@
}
]
},
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "node_modules/fs-extra": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
- "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
},
"node_modules/fsevents": {
"version": "2.3.2",
@@ -3931,23 +4497,20 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
- "dev": true
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/gensequence": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz",
- "integrity": "sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-6.0.0.tgz",
+ "integrity": "sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==",
"dev": true,
"engines": {
- "node": ">=10.0.0"
+ "node": ">=16"
}
},
"node_modules/gensync": {
@@ -3963,28 +4526,44 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
+ "node_modules/get-east-asian-width": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
"engines": {
"node": "*"
}
},
"node_modules/get-intrinsic": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
- "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -4000,12 +4579,12 @@
}
},
"node_modules/get-stdin": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
- "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
+ "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -4023,44 +4602,58 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
+ "node_modules/get-uri": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz",
+ "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==",
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">= 14"
}
},
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "node_modules/get-uri/node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "license": "MIT",
"dependencies": {
- "assert-plus": "^1.0.0"
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
+ "node_modules/get-uri/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
"node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+ "dev": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
- "engines": {
- "node": "*"
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -4078,88 +4671,151 @@
"node": ">=10.13.0"
}
},
- "node_modules/global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/foreground-child": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
+ "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
"dev": true,
"dependencies": {
- "ini": "^1.3.4"
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/globals": {
- "version": "13.12.1",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
- "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
+ "node_modules/glob/node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/glob/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
"dependencies": {
- "type-fest": "^0.20.2"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/got": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
- "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "node_modules/glob/node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
"dev": true,
"dependencies": {
- "@sindresorhus/is": "^0.14.0",
- "@szmarczak/http-timer": "^1.1.2",
- "cacheable-request": "^6.0.0",
- "decompress-response": "^3.3.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^4.1.0",
- "lowercase-keys": "^1.0.1",
- "mimic-response": "^1.0.1",
- "p-cancelable": "^1.0.0",
- "to-readable-stream": "^1.0.0",
- "url-parse-lax": "^3.0.0"
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
- "node": ">=8.6"
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/got/node_modules/get-stream": {
+ "node_modules/glob/node_modules/signal-exit": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
"dev": true,
"dependencies": {
- "pump": "^3.0.0"
+ "ini": "2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.9",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
- "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="
- },
- "node_modules/growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
"dev": true,
"engines": {
- "node": ">=4.x"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
"node_modules/handlebars": {
- "version": "4.7.7",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
- "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
"dependencies": {
"minimist": "^1.2.5",
- "neo-async": "^2.6.0",
+ "neo-async": "^2.6.2",
"source-map": "^0.6.1",
"wordwrap": "^1.0.0"
},
@@ -4173,31 +4829,11 @@
"uglify-js": "^3.1.4"
}
},
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "deprecated": "this library is no longer supported",
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "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"
},
@@ -4205,15 +4841,6 @@
"node": ">= 0.4.0"
}
},
- "node_modules/has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4232,25 +4859,21 @@
"node": ">=8"
}
},
- "node_modules/has-symbols": {
+ "node_modules/has-property-descriptors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
- "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
- "engines": {
- "node": ">= 0.4"
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"engines": {
"node": ">= 0.4"
},
@@ -4258,13 +4881,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/has-yarn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
- "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==",
- "dev": true,
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasha": {
@@ -4283,6 +4908,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/hasha/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/hasha/node_modules/type-fest": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
@@ -4292,6 +4929,17 @@
"node": ">=8"
}
},
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -4302,22 +4950,22 @@
}
},
"node_modules/hexoid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
- "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz",
+ "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==",
"engines": {
"node": ">=8"
}
},
"node_modules/html-encoding-sniffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
- "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
"dependencies": {
- "whatwg-encoding": "^2.0.0"
+ "whatwg-encoding": "^3.1.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/html-escaper": {
@@ -4326,49 +4974,37 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
- "node_modules/http-cache-semantics": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
- "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
- "dev": true
- },
"node_modules/http-errors": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
- "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.0"
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/http-errors/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
"node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/http-proxy-agent/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"ms": "2.1.2"
},
@@ -4386,36 +5022,22 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
"node_modules/https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"dependencies": {
- "agent-base": "6",
+ "agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 14"
}
},
"node_modules/https-proxy-agent/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"ms": "2.1.2"
},
@@ -4434,33 +5056,33 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/human-signals": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
"dev": true,
"engines": {
- "node": ">=10.17.0"
+ "node": ">=14.18.0"
}
},
"node_modules/husky": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz",
- "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==",
+ "version": "9.0.6",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.6.tgz",
+ "integrity": "sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA==",
"dev": true,
"bin": {
- "husky": "lib/bin.js"
+ "husky": "bin.js"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/typicode"
}
},
"node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz",
+ "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -4488,9 +5110,9 @@
]
},
"node_modules/ignore": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
- "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -4499,14 +5121,13 @@
"node_modules/ignore-by-default": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
- "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
"dev": true
},
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -4522,7 +5143,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
"dependencies": {
"callsites": "^3.0.0"
},
@@ -4534,24 +5154,24 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
"engines": {
"node": ">=4"
}
},
- "node_modules/import-lazy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
- "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "node_modules/import-meta-resolve": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.1.1.tgz",
+ "integrity": "sha512-qeywsE/KC3w9Fd2ORrRDUw6nS/nLwZpXgfrOc2IILvZYnCaEMd+D56Vfg9k4G29gIeVi3XKql1RQatME8iYsiw==",
"dev": true,
- "engines": {
- "node": ">=4"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
"engines": {
"node": ">=0.8.19"
@@ -4569,7 +5189,8 @@
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -4581,33 +5202,38 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/insafe": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/insafe/-/insafe-0.5.0.tgz",
- "integrity": "sha512-oUUIlJb9ZBnGLp6lvMeU3wGhNrReOoiKcrcVusfHk3x9lBsVE6dMY5ng4FLdAGrKmDG2RKzt3fJ9OmvWEF1jKA==",
- "dependencies": {
- "when": "3.7.8"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/internal-slot": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
- "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
- "dev": true,
+ "node_modules/insafe": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/insafe/-/insafe-0.5.1.tgz",
+ "integrity": "sha512-LVGi8wNYSld/ElRmd06ikkY2uBV4ik1JaPf0FRQ4awW6t+3VqPBzePs74/P7CBTm5SpItIfOOFIs/K66cyx9Rw=="
+ },
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.1.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">= 12"
}
},
+ "node_modules/ip-address/node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "license": "BSD-3-Clause"
+ },
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
@@ -4619,20 +5245,7 @@
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
"node_modules/is-binary-path": {
"version": "2.1.0",
@@ -4646,50 +5259,10 @@
"node": ">=8"
}
},
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
- "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
"node_modules/is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
+ "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -4698,25 +5271,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
"dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
+ "bin": {
+ "is-docker": "cli.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -4746,69 +5319,30 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-installed-globally": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
- "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
"dev": true,
"dependencies": {
- "global-dirs": "^3.0.0",
- "is-path-inside": "^3.0.2"
+ "is-docker": "^3.0.0"
},
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-installed-globally/node_modules/global-dirs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
- "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
- "dev": true,
- "dependencies": {
- "ini": "2.0.0"
+ "bin": {
+ "is-inside-container": "cli.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-installed-globally/node_modules/ini": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
- "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-npm": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
- "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+ "node_modules/is-node-process": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz",
+ "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
"dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "license": "MIT"
},
"node_modules/is-number": {
"version": "7.0.0",
@@ -4819,21 +5353,6 @@
"node": ">=0.12.0"
}
},
- "node_modules/is-number-object": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-obj": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -4866,77 +5385,28 @@
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
},
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
- "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "node_modules/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
},
"node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
},
"node_modules/is-unicode-supported": {
"version": "0.1.0",
@@ -4950,18 +5420,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -4971,22 +5429,37 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-yarn-global": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz",
- "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==",
- "dev": true
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-wsl/node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/istanbul-lib-coverage": {
"version": "3.2.0",
@@ -5010,42 +5483,33 @@
}
},
"node_modules/istanbul-lib-instrument": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
- "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz",
+ "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==",
"dev": true,
"dependencies": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
+ "@babel/core": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "node": ">=10"
}
},
"node_modules/istanbul-lib-processinfo": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz",
- "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
"dev": true,
"dependencies": {
"archy": "^1.0.0",
- "cross-spawn": "^7.0.0",
- "istanbul-lib-coverage": "^3.0.0-alpha.1",
- "make-dir": "^3.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
"rimraf": "^3.0.0",
- "uuid": "^3.3.3"
+ "uuid": "^8.3.2"
},
"engines": {
"node": ">=8"
@@ -5092,9 +5556,9 @@
}
},
"node_modules/istanbul-lib-source-maps/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -5115,9 +5579,9 @@
"dev": true
},
"node_modules/istanbul-reports": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz",
- "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"dependencies": {
"html-escaper": "^2.0.0",
@@ -5127,17 +5591,32 @@
"node": ">=8"
}
},
+ "node_modules/jackspeak": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz",
+ "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
"dependencies": {
"argparse": "^2.0.1"
},
@@ -5145,104 +5624,44 @@
"js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/js2xmlparser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
- "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
- "dev": true,
- "dependencies": {
- "xmlcreate": "^2.0.4"
- }
- },
"node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
- "node_modules/jsdoc": {
- "version": "3.6.7",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz",
- "integrity": "sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw==",
- "dev": true,
- "dependencies": {
- "@babel/parser": "^7.9.4",
- "bluebird": "^3.7.2",
- "catharsis": "^0.9.0",
- "escape-string-regexp": "^2.0.0",
- "js2xmlparser": "^4.0.1",
- "klaw": "^3.0.0",
- "markdown-it": "^10.0.0",
- "markdown-it-anchor": "^5.2.7",
- "marked": "^2.0.3",
- "mkdirp": "^1.0.4",
- "requizzle": "^0.2.3",
- "strip-json-comments": "^3.1.0",
- "taffydb": "2.6.2",
- "underscore": "~1.13.1"
- },
- "bin": {
- "jsdoc": "jsdoc.js"
- },
- "engines": {
- "node": ">=8.15.0"
- }
- },
- "node_modules/jsdoc-type-pratt-parser": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-2.2.3.tgz",
- "integrity": "sha512-QPyxq62Q8veBSDtDrWmqaEPjSCeknUV9dH/OAGt3q9an8qC8UQDqitQiw1NvoMskIESpoRZ6qzt4H3rlK0xo8A==",
- "dev": true,
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/jsdoc/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "license": "MIT"
},
"node_modules/jsdom": {
- "version": "19.0.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz",
- "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==",
- "dependencies": {
- "abab": "^2.0.5",
- "acorn": "^8.5.0",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.5.0",
- "cssstyle": "^2.3.0",
- "data-urls": "^3.0.1",
- "decimal.js": "^10.3.1",
- "domexception": "^4.0.0",
- "escodegen": "^2.0.0",
- "form-data": "^4.0.0",
- "html-encoding-sniffer": "^3.0.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz",
+ "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==",
+ "dependencies": {
+ "cssstyle": "^4.2.1",
+ "data-urls": "^5.0.0",
+ "decimal.js": "^10.4.3",
+ "form-data": "^4.0.1",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.6",
"is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
+ "nwsapi": "^2.2.16",
+ "parse5": "^7.2.1",
+ "rrweb-cssom": "^0.8.0",
+ "saxes": "^6.0.0",
"symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^3.0.0",
+ "tough-cookie": "^5.0.0",
+ "w3c-xmlserializer": "^5.0.0",
"webidl-conversions": "^7.0.0",
- "whatwg-encoding": "^2.0.0",
- "whatwg-mimetype": "^3.0.0",
- "whatwg-url": "^10.0.0",
- "ws": "^8.2.3",
- "xml-name-validator": "^4.0.0"
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.1.0",
+ "ws": "^8.18.0",
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"peerDependencies": {
- "canvas": "^2.5.0"
+ "canvas": "^3.0.0"
},
"peerDependenciesMeta": {
"canvas": {
@@ -5250,59 +5669,72 @@
}
}
},
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
+ "node_modules/jsdom/node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"engines": {
- "node": ">=4"
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/json-buffer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
- "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true
},
"node_modules/json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
"bin": {
"json5": "lib/cli.js"
},
@@ -5310,60 +5742,13 @@
"node": ">=6"
}
},
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
"node_modules/keyv": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
- "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
"dependencies": {
- "json-buffer": "3.0.0"
- }
- },
- "node_modules/klaw": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz",
- "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.9"
- }
- },
- "node_modules/latest-version": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz",
- "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==",
- "dev": true,
- "dependencies": {
- "package-json": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
+ "json-buffer": "3.0.1"
}
},
"node_modules/levn": {
@@ -5380,66 +5765,77 @@
}
},
"node_modules/lilconfig": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz",
- "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antonk52"
}
},
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
},
- "node_modules/linkify-it": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
- "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
+ "node_modules/lint-staged": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.1.tgz",
+ "integrity": "sha512-P8yJuVRyLrm5KxCtFx+gjI5Bil+wO7wnTl7C3bXhvtTaAFGirzeB24++D0wGoUwxrUKecNiehemgCob9YL39NA==",
"dev": true,
"dependencies": {
- "uc.micro": "^1.0.1"
- }
- },
- "node_modules/lint-staged": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.2.tgz",
- "integrity": "sha512-gtw4Cbj01SuVSfAOXC6ivd/7VKHTj51yj5xV8TgktFmYNMsZzXuSd5/brqJEA93v63wL7R6iDlunMANOechC0A==",
- "dev": true,
- "dependencies": {
- "cli-truncate": "^3.1.0",
- "colorette": "^2.0.16",
- "commander": "^8.3.0",
- "debug": "^4.3.3",
- "execa": "^5.1.1",
- "lilconfig": "2.0.4",
- "listr2": "^4.0.1",
- "micromatch": "^4.0.4",
- "normalize-path": "^3.0.0",
- "object-inspect": "^1.12.0",
- "string-argv": "^0.3.1",
- "supports-color": "^9.2.1",
- "yaml": "^1.10.2"
+ "chalk": "~5.4.1",
+ "commander": "~12.1.0",
+ "debug": "~4.4.0",
+ "execa": "~8.0.1",
+ "lilconfig": "~3.1.3",
+ "listr2": "~8.2.5",
+ "micromatch": "~4.0.8",
+ "pidtree": "~0.6.0",
+ "string-argv": "~0.3.2",
+ "yaml": "~2.6.1"
},
"bin": {
"lint-staged": "bin/lint-staged.js"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">=18.12.0"
},
"funding": {
"url": "https://opencollective.com/lint-staged"
}
},
+ "node_modules/lint-staged/node_modules/chalk": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/lint-staged/node_modules/commander": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/lint-staged/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
"dev": true,
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -5450,108 +5846,162 @@
}
}
},
+ "node_modules/lint-staged/node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/lint-staged/node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lint-staged/node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.17.0"
+ }
+ },
"node_modules/lint-staged/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
- "node_modules/lint-staged/node_modules/supports-color": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz",
- "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==",
+ "node_modules/lint-staged/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=14"
},
"funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/listr2": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.1.tgz",
- "integrity": "sha512-D65Nl+zyYHL2jQBGmxtH/pU8koPZo5C8iCNE8EoB04RwPgQG1wuaKwVbeZv9LJpiH4Nxs0FCp+nNcG8OqpniiA==",
+ "version": "8.2.5",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz",
+ "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==",
"dev": true,
"dependencies": {
- "cli-truncate": "^2.1.0",
- "colorette": "^2.0.16",
- "log-update": "^4.0.0",
- "p-map": "^4.0.0",
- "rfdc": "^1.3.0",
- "rxjs": "^7.5.2",
- "through": "^2.3.8",
- "wrap-ansi": "^7.0.0"
+ "cli-truncate": "^4.0.0",
+ "colorette": "^2.0.20",
+ "eventemitter3": "^5.0.1",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^9.0.0"
},
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/listr2/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "dev": true,
"engines": {
"node": ">=12"
},
- "peerDependencies": {
- "enquirer": ">= 2.3.0 < 3"
- },
- "peerDependenciesMeta": {
- "enquirer": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/listr2/node_modules/cli-truncate": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
- "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
+ "node_modules/listr2/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
- "dependencies": {
- "slice-ansi": "^3.0.0",
- "string-width": "^4.2.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/listr2/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==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
"dev": true
},
- "node_modules/listr2/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==",
+ "node_modules/listr2/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/listr2/node_modules/slice-ansi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
- "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "node_modules/listr2/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/listr2/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==",
+ "node_modules/listr2/node_modules/wrap-ansi": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
"dev": true,
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/locate-path": {
@@ -5569,16 +6019,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
"node_modules/lodash.flattendeep": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
+ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
"dev": true
},
"node_modules/lodash.merge": {
@@ -5587,12 +6031,6 @@
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
"dev": true
},
- "node_modules/lodash.set": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
- "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
- "dev": true
- },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -5610,191 +6048,194 @@
}
},
"node_modules/log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
+ "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",
"dev": true,
"dependencies": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
+ "ansi-escapes": "^7.0.0",
+ "cli-cursor": "^5.0.0",
+ "slice-ansi": "^7.1.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/log-update/node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/log-update/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==",
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
"dev": true
},
"node_modules/log-update/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==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz",
+ "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==",
"dev": true,
+ "dependencies": {
+ "get-east-asian-width": "^1.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/log-update/node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz",
+ "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
}
},
"node_modules/log-update/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==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
"dev": true,
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/log-update/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "node_modules/log-update/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/lowercase-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "node_modules/log-update/node_modules/wrap-ansi": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
- "yallist": "^4.0.0"
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/make-dir": {
+ "node_modules/loupe": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.0.tgz",
+ "integrity": "sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==",
"dev": true,
"dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
+ "get-func-name": "^2.0.1"
}
},
- "node_modules/markdown-it": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
- "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"dependencies": {
- "argparse": "^1.0.7",
- "entities": "~2.0.0",
- "linkify-it": "^2.0.0",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.js"
- }
- },
- "node_modules/markdown-it-anchor": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz",
- "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==",
- "dev": true,
- "peerDependencies": {
- "markdown-it": "*"
+ "yallist": "^3.0.2"
}
},
- "node_modules/markdown-it/node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"dependencies": {
- "sprintf-js": "~1.0.2"
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/marked": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz",
- "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==",
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
"bin": {
- "marked": "bin/marked"
- },
- "engines": {
- "node": ">= 10"
+ "semver": "bin/semver.js"
}
},
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
- "dev": true
- },
"node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/merge-stream": {
"version": "2.0.0",
@@ -5802,90 +6243,100 @@
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/metaviewport-parser": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.2.0.tgz",
- "integrity": "sha1-U1w84cz2IjpQJf3cahw2UF9+fbE="
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/metaviewport-parser/-/metaviewport-parser-0.3.0.tgz",
+ "integrity": "sha512-EoYJ8xfjQ6kpe9VbVHvZTZHiOl4HL1Z18CrZ+qahvLXT7ZO4YTC2JMyt5FaUp9JJp6J4Ybb/z7IsCXZt86/QkQ=="
},
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/micromatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
- "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"dependencies": {
- "braces": "^3.0.1",
- "picomatch": "^2.2.3"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
"bin": {
"mime": "cli.js"
},
"engines": {
- "node": ">=4"
+ "node": ">=4.0.0"
}
},
"node_modules/mime-db": {
- "version": "1.51.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
- "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
- "version": "2.1.34",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
- "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dependencies": {
- "mime-db": "1.51.0"
+ "mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/minami": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/minami/-/minami-1.2.3.tgz",
- "integrity": "sha1-mbbc37LwpU2hycj3qjoyd4eq+fg=",
- "dev": true
- },
"node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -5894,74 +6345,76 @@
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
}
},
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "license": "MIT"
},
"node_modules/mocha": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.0.tgz",
- "integrity": "sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q==",
- "dev": true,
- "dependencies": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "3.0.4",
- "ms": "2.1.3",
- "nanoid": "3.2.0",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz",
+ "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-colors": "^4.1.3",
+ "browser-stdout": "^1.3.1",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.5",
+ "diff": "^5.2.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-up": "^5.0.0",
+ "glob": "^10.4.5",
+ "he": "^1.2.0",
+ "js-yaml": "^4.1.0",
+ "log-symbols": "^4.1.0",
+ "minimatch": "^5.1.6",
+ "ms": "^2.1.3",
+ "serialize-javascript": "^6.0.2",
+ "strip-json-comments": "^3.1.1",
+ "supports-color": "^8.1.1",
+ "workerpool": "^6.5.1",
+ "yargs": "^17.7.2",
+ "yargs-parser": "^21.1.1",
+ "yargs-unparser": "^2.0.0"
},
"bin": {
"_mocha": "bin/_mocha",
- "mocha": "bin/mocha"
+ "mocha": "bin/mocha.js"
},
"engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mochajs"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/mocha/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
"node_modules/mocha/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
+ "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
@@ -5981,6 +6434,18 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/mocha/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -6017,10 +6482,13 @@
"node": ">= 0.8.0"
}
},
- "node_modules/morgan/node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "node_modules/morgan/node_modules/on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
"engines": {
"node": ">= 0.8"
}
@@ -6028,30 +6496,18 @@
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "node_modules/nanoid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
- "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
"node_modules/negotiator": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
- "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
"engines": {
"node": ">= 0.6"
}
@@ -6061,80 +6517,28 @@
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
},
- "node_modules/nock": {
- "version": "13.2.2",
- "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.2.tgz",
- "integrity": "sha512-PcBHuvl9i6zfaJ50A7LS55oU+nFLv8htXIhffJO+FxyfibdZ4jEvd9kTuvkrJireBFIGMZ+oUIRpMK5gU9h//g==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.0",
- "json-stringify-safe": "^5.0.1",
- "lodash.set": "^4.3.2",
- "propagate": "^2.0.0"
- },
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "license": "MIT",
"engines": {
- "node": ">= 10.13"
+ "node": ">= 0.4.0"
}
},
- "node_modules/nock/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "node_modules/nock": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.0.tgz",
+ "integrity": "sha512-3Z2ZoZoYTR/y2I+NI16+6IzfZFKBX7MrADtoBAm7v/QKqxQUhKw+Dh+847PPS1j/FDutjfIXfrh3CJF74yITWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/nock/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
+ "@mswjs/interceptors": "^0.37.3",
+ "json-stringify-safe": "^5.0.1",
+ "propagate": "^2.0.0"
},
"engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-fetch/node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
- },
- "node_modules/node-fetch/node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
- },
- "node_modules/node-fetch/node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "node": ">= 18"
}
},
"node_modules/node-preload": {
@@ -6150,30 +6554,30 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz",
- "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==",
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
"dev": true
},
"node_modules/node-w3capi": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/node-w3capi/-/node-w3capi-1.11.0.tgz",
- "integrity": "sha512-EWjZ8eaG5D224A85mlamE3flcf5TN98bTDRr9e2QInYapU/5T9TjiZnJocFjId4iwiNPYtGTLpl6u1b/IcxqKA==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/node-w3capi/-/node-w3capi-2.2.0.tgz",
+ "integrity": "sha512-fULV66qQHX0x5XP3TJ+B+uOKhzTDXjdp2PDP3IryjH1yok7SC3zBsYohcv3vYUAG0mXCadQz8DU7q8M2hNDj3g==",
"dependencies": {
- "async": "3.2.3",
- "superagent": "7.0.1"
+ "async": "3.2.6",
+ "superagent": "10.0.2"
},
"engines": {
- "node": "14 || 16",
- "npm": ">=6"
+ "node": "18 || 20 || 22",
+ "npm": ">=7"
}
},
"node_modules/node-w3capi/node_modules/debug": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
- "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
- "ms": "2.1.2"
+ "ms": "^2.1.3"
},
"engines": {
"node": ">=6.0"
@@ -6184,81 +6588,52 @@
}
}
},
- "node_modules/node-w3capi/node_modules/mime": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
"node_modules/node-w3capi/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/node-w3capi/node_modules/qs": {
- "version": "6.10.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
- "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/node-w3capi/node_modules/superagent": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.0.1.tgz",
- "integrity": "sha512-2nFiZ2ds29iRFSjZ291vq+AxqUDg8BdFeg/AObJkDpCVJX6IJT8fU7egBOkYwmxPwaDoNrNu8qRDvtAV/7ZTPw==",
- "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at meta
tag in the head of the page:
* <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
*/
+import mvp from 'metaviewport-parser';
const self = {
name: 'style.meta',
@@ -9,13 +10,16 @@ const self = {
rule: 'viewport',
};
-exports.name = self.name;
-
-const mvp = require('metaviewport-parser');
+export const { name } = self;
const width = /^device-width$/i;
const shrinkToFit = /^no$/i;
-exports.check = function (sr, done) {
+
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const meta = sr.jsDocument.querySelectorAll(
"head > meta[name='viewport'][content]"
);
@@ -41,4 +45,4 @@ exports.check = function (sr, done) {
}
}
done();
-};
+}
diff --git a/lib/rules/style/script.js b/lib/rules/style/script.js
index 0846a93e3..3dc5f56df 100644
--- a/lib/rules/style/script.js
+++ b/lib/rules/style/script.js
@@ -6,9 +6,13 @@ const self = {
name: 'style.script',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
const PATTERN_SCRIPT =
/^(https?:)?\/\/(www\.)?w3\.org\/scripts\/tr\/2021\/fixup\.js$/i;
@@ -26,4 +30,4 @@ exports.check = function (sr, done) {
}
done();
-};
+}
diff --git a/lib/rules/style/sheet.js b/lib/rules/style/sheet.js
index 0247d1190..24996f42e 100644
--- a/lib/rules/style/sheet.js
+++ b/lib/rules/style/sheet.js
@@ -1,20 +1,23 @@
-const util = require('../../util');
+import { nextAll } from '../../util.js';
-const rule = 'style.sheet';
+export const name = 'style.sheet';
const section = 'metadata';
const missing = {
- name: rule,
+ name,
section,
rule: 'goodStylesheet',
};
const notLast = {
- name: rule,
+ name,
section,
rule: 'lastStylesheet',
};
-exports.name = rule;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
if (!sr.config.styleSheet) return done();
const url = `https://www.w3.org/StyleSheets/TR/2021/${sr.config.styleSheet}`;
const dark = 'https://www.w3.org/StyleSheets/TR/2021/dark';
@@ -25,15 +28,15 @@ exports.check = function (sr, done) {
const lnk = sr.jsDocument.querySelectorAll(stylesheetLinks.join(', '));
if (!lnk.length) sr.error(missing, 'not-found', { url });
else {
- const siblings = util.nextAll(lnk[0], 'link[rel=stylesheet], style');
+ const siblings = nextAll(lnk[0], 'link[rel=stylesheet], style');
if (
- siblings.length ||
+ siblings.length > 1 ||
(siblings.length === 1 &&
- (siblings[0].href !== dark ||
- siblings[0].href !== `${dark}.css`))
+ siblings[0].href !== dark &&
+ siblings[0].href !== `${dark}.css`)
) {
sr.error(notLast, 'last');
}
}
done();
-};
+}
diff --git a/lib/rules/validation/html.js b/lib/rules/validation/html.js
index 2a0e16098..923d3dc88 100644
--- a/lib/rules/validation/html.js
+++ b/lib/rules/validation/html.js
@@ -1,4 +1,4 @@
-const sua = require('../../throttled-ua');
+import { get, post } from '../../throttled-ua.js';
const self = {
name: 'validation.html',
@@ -7,9 +7,13 @@ const self = {
};
const TIMEOUT = 10000;
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
let service = null;
if (sr.config.htmlValidator !== undefined) {
service = sr.config.htmlValidator;
@@ -27,11 +31,10 @@ exports.check = function (sr, done) {
let req;
const ua = `W3C-Pubrules/${sr.version}`;
if (sr.url) {
- req = sua.get(service).set('User-Agent', ua);
+ req = get(service).set('User-Agent', ua);
req.query({ doc: sr.url, out: 'json' });
} else {
- req = sua
- .post(service)
+ req = post(service)
.set('User-Agent', ua)
.set('Content-Type', 'text/html')
.send(sr.source)
@@ -102,4 +105,4 @@ exports.check = function (sr, done) {
}
done();
});
-};
+}
diff --git a/lib/rules/validation/wcag.js b/lib/rules/validation/wcag.js
index ad35497cd..d5c0f8e3a 100644
--- a/lib/rules/validation/wcag.js
+++ b/lib/rules/validation/wcag.js
@@ -4,9 +4,13 @@ const self = {
rule: 'wcag',
};
-exports.name = self.name;
+export const { name } = self;
-exports.check = function (sr, done) {
+/**
+ * @param sr
+ * @param done
+ */
+export function check(sr, done) {
sr.info(self, 'tools');
return done();
-};
+}
diff --git a/lib/sink.js b/lib/sink.js
index 2fc33d250..cbe37750d 100644
--- a/lib/sink.js
+++ b/lib/sink.js
@@ -3,8 +3,9 @@
*/
// Native packages:
-const util = require('util');
-const events = require('events');
+import events from 'events';
+import util from 'util';
+
/**
* Build a generic event handler that can be used by Specberus.
*
@@ -14,7 +15,7 @@ const events = require('events');
* @param {Function} inf - function to call in case of informative message.
*/
-const Sink = function (error, done, warn, inf) {
+export const Sink = function (error, done, warn, inf) {
this.ok = 0;
this.errors = [];
this.warnings = [];
@@ -49,5 +50,3 @@ const Sink = function (error, done, warn, inf) {
};
util.inherits(Sink, events.EventEmitter);
-
-exports.Sink = Sink;
diff --git a/lib/throttled-ua.js b/lib/throttled-ua.js
index aa8d78aaa..e8afa47a0 100644
--- a/lib/throttled-ua.js
+++ b/lib/throttled-ua.js
@@ -1,4 +1,4 @@
-const sua = require('superagent');
+import sua from 'superagent';
const delay = 1000;
let lastCall = Date.now() - delay * 2;
@@ -26,18 +26,16 @@ function fixEnd(req) {
// return fixEnd(req);
// };
-exports.get = process.env.NO_THROTTLE
+export const get = process.env.NO_THROTTLE
? sua.get
: function () {
- // eslint-disable-next-line prefer-spread, prefer-rest-params
const req = sua.get.apply(sua, arguments);
return fixEnd(req);
};
-exports.post = process.env.NO_THROTTLE
+export const post = process.env.NO_THROTTLE
? sua.post
: function () {
- // eslint-disable-next-line prefer-spread, prefer-rest-params
const req = sua.post.apply(sua, arguments);
return fixEnd(req);
};
diff --git a/lib/util.js b/lib/util.js
index d93f0b358..b740af05d 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -2,11 +2,22 @@
* Miscellaneous utilities.
*/
-const fs = require('fs');
+import fs from 'fs';
+import { dirname, resolve } from 'path';
+import { fileURLToPath } from 'url';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
const filesTR = fs.readdirSync(`${__dirname}/profiles/TR/`);
const filesSUBM = fs.readdirSync(`${__dirname}/profiles/SUBM/`);
+export const importJSON = (relativeTo, importURL) => {
+ const dir = dirname(fileURLToPath(importURL));
+ const pathname = resolve(dir, relativeTo);
+
+ return JSON.parse(fs.readFileSync(pathname).toString());
+};
+
/**
* Build a JSON result (of validation, metadata extraction, etc).
*
@@ -16,7 +27,7 @@ const filesSUBM = fs.readdirSync(`${__dirname}/profiles/SUBM/`);
* @param {object} metadata - dictionary with some found metadata.
*/
-const buildJSONresult = function (err, warn, inf, metadata) {
+export const buildJSONresult = function (err, warn, inf, metadata) {
return {
success: err.length === 0,
errors: err,
@@ -26,6 +37,22 @@ const buildJSONresult = function (err, warn, inf, metadata) {
};
};
+// Get rules of each profile
+let TRProfiles = [];
+filesTR.forEach(track => {
+ if (!track.startsWith('.')) {
+ const profileNames = fs
+ .readdirSync(`${__dirname}/profiles/TR/${track}/`)
+ .map(profileName => `${track}/${profileName}`);
+ TRProfiles = [...TRProfiles, ...profileNames];
+ }
+});
+
+export const allProfiles = [
+ ...TRProfiles.map(x => `TR/${x}`),
+ ...filesSUBM.map(x => `SUBM/${x}`),
+];
+
/**
* Build a function that builds an “options” object based on certain parameters.
*
@@ -51,10 +78,9 @@ const buildProcessParamsFunction = function () {
* @throws {Error} if there is an error in the parameters.
*/
- return function (params, base, constraints) {
+ return async function (params, base, constraints) {
const result = base ? JSON.parse(JSON.stringify(base)) : {};
let originFound = false;
- // eslint-disable-next-line no-restricted-syntax
for (const p in params) {
if (
p === 'url' ||
@@ -75,13 +101,14 @@ const buildProcessParamsFunction = function () {
throw new Error(`Parameter “${p}” is used more than once`);
else if (typeof params[p] === 'string') {
const subPath = `/${params[p]}.js`;
- const profilePath = this.allProfiles.find(p =>
+ const profilePath = allProfiles.find(p =>
p.endsWith(subPath)
);
if (profilePath)
- // eslint-disable-next-line import/no-dynamic-require
- result[p] = require(`../lib/profiles/${profilePath}`);
+ result[p] = await import(
+ `../lib/profiles/${profilePath}`
+ );
else if (params[p] === 'auto') result[p] = 'auto';
else throw new Error(`Unknown profile “${params[p]}”`);
} else result[p] = params[p];
@@ -142,24 +169,7 @@ const buildProcessParamsFunction = function () {
};
};
-// Get rules of each profile
-let TRProfiles = [];
-filesTR.forEach(track => {
- if (!track.startsWith('.')) {
- const profileNames = fs
- .readdirSync(`${__dirname}/profiles/TR/${track}/`)
- .map(profileName => `${track}/${profileName}`);
- TRProfiles = [...TRProfiles, ...profileNames];
- }
-});
-
-const allProfiles = [
- ...TRProfiles.map(x => `TR/${x}`),
- ...filesSUBM.map(x => `SUBM/${x}`),
-];
-exports.allProfiles = allProfiles;
-
-const nextUntil = function (elem, selector, filter) {
+export const nextUntil = function (elem, selector, filter) {
const siblings = [];
elem = elem.nextElementSibling;
while (elem) {
@@ -174,7 +184,7 @@ const nextUntil = function (elem, selector, filter) {
return siblings;
};
-const nextAll = function (elem, selector, filter) {
+export const nextAll = function (elem, selector, filter) {
const siblings = [];
elem = elem.nextElementSibling;
while (elem) {
@@ -190,7 +200,7 @@ const nextAll = function (elem, selector, filter) {
return siblings;
};
-const next = function (elem, selector) {
+export const next = function (elem, selector) {
elem = elem.nextElementSibling;
while (elem) {
if (elem.matches(selector)) {
@@ -200,7 +210,7 @@ const next = function (elem, selector) {
}
};
-const filter = function (elements, tagName) {
+export const filter = function (elements, tagName) {
if (!elements || !elements.length) return [];
return Array.prototype.filter.call(
elements,
@@ -208,15 +218,11 @@ const filter = function (elements, tagName) {
);
};
-exports.buildJSONresult = buildJSONresult;
-exports.processParams = buildProcessParamsFunction();
-exports.nextUntil = nextUntil;
-exports.filter = filter;
-exports.next = next;
-exports.nextAll = nextAll;
-exports.TAG = { id: 34270, type: 'other' };
-exports.AB = { id: 7756, type: 'other' };
-exports.REC_TEXT = {
+export const processParams = buildProcessParamsFunction();
+export const TAG = { id: 34270, type: 'other' };
+export const AB = { id: 7756, type: 'other' };
+
+export const REC_TEXT = {
SOTD_P_COR: 'It includes proposed correction(s)?.',
SOTD_P_ADD:
'It includes proposed addition(s)?, introducing new feature(s)? since the previous Recommendation.',
diff --git a/lib/validator.js b/lib/validator.js
index 80c9a2fb7..9dc9cfd77 100644
--- a/lib/validator.js
+++ b/lib/validator.js
@@ -5,24 +5,29 @@
* https://services.w3.org/xslt?xmlfile=https://www.w3.org/2005/07/13-pubrules-src.html&xslfile=https://www.w3.org/2005/07/13-pubrules-compare.xsl
*/
-const { JSDOM } = require('jsdom');
-const fs = require('fs');
-const w3cApi = require('node-w3capi');
-const sua = require('./throttled-ua');
-const { version } = require('../package.json');
-const { Exceptions } = require('./exceptions');
-const profileMetadata = require('./profiles/metadata');
-const util = require('./util');
-const l10n = require('./l10n');
-
-l10n.setLanguage('en_GB');
-w3cApi.apiKey = process.env.W3C_API_KEY;
-
-const Specberus = function (apiKey = process.env.W3C_API_KEY) {
- if (typeof apiKey !== 'string' || !apiKey.length) {
- throw new Error('apiKey is required.');
- }
- this.apiKey = apiKey;
+import fs from 'fs';
+import { JSDOM } from 'jsdom';
+import w3cApi from 'node-w3capi';
+import { Exceptions } from './exceptions.js';
+import { assembleData, setLanguage } from './l10n.js';
+import * as profileMetadata from './profiles/metadata.js';
+import { get } from './throttled-ua.js';
+import {
+ AB,
+ buildJSONresult,
+ importJSON,
+ nextUntil,
+ processParams,
+ REC_TEXT,
+ TAG,
+} from './util.js';
+
+const { rules } = profileMetadata;
+const { version } = importJSON('../package.json', import.meta.url);
+
+setLanguage('en_GB');
+
+const Specberus = function () {
this.version = version;
this.clearCache();
};
@@ -76,9 +81,9 @@ Specberus.prototype.extractMetadata = function (options) {
if (err) return self.throw(err);
self.jsDocument = jsDocument;
self.sink.emit('start-all', profileMetadata);
- const total = (profileMetadata.rules || []).length;
+ const total = (rules || []).length;
let done = 0;
- profileMetadata.rules.forEach(rule => {
+ rules.forEach(rule => {
try {
rule.check(
self,
@@ -93,7 +98,7 @@ Specberus.prototype.extractMetadata = function (options) {
if (done === total)
self.sink.emit(
'end-all',
- util.buildJSONresult(
+ buildJSONresult(
errors,
warnings,
infos,
@@ -136,71 +141,67 @@ Specberus.prototype.validate = function (options) {
if (!options.profile)
return this.throw('Without a profile there is nothing to check.');
const { profile } = options;
- try {
- self.config = util.processParams(options, profile.config);
- } catch (err) {
- return this.throw(err.toString());
- }
- self.config.lang = 'en_GB';
- const errors = [];
- const warnings = [];
- const infos = [];
- self.sink.on('err', (...data) => {
- errors.push(Object.assign({}, ...data));
- });
- self.sink.on('warning', (...data) => {
- warnings.push(Object.assign({}, ...data));
- });
- self.sink.on('info', (...data) => {
- infos.push(Object.assign({}, ...data));
- });
- const doValidation = function (err, jsDocument) {
- if (err) return self.throw(err);
- self.jsDocument = jsDocument;
- self.sink.emit('start-all', profile.name);
- const total = (profile.rules || []).length;
- let done = 0;
- profile.rules.forEach(rule => {
- // XXX
- // I would like to catch all exceptions here, but this derails the testing
- // infrastructure which also uses exceptions that it expects aren't caught
- rule.check(
- self,
- function () {
- done += 1;
- self.sink.emit('done', this.name);
- if (done === total)
- self.sink.emit(
- 'end-all',
- util.buildJSONresult(errors, warnings, infos, {})
- );
- }.bind(rule)
- );
- });
- };
- if (options.url) this.loadURL(options.url, doValidation);
- else if (options.source) this.loadSource(options.source, doValidation);
- else if (options.file) this.loadFile(options.file, doValidation);
- else if (options.document)
- this.loadDocument(options.document, doValidation);
- else
- return this.throw(
- 'At least one of url, source, file, or document must be specified.'
- );
+ processParams(options, profile.config)
+ .then(config => {
+ self.config = config;
+ self.config.lang = 'en_GB';
+ const errors = [];
+ const warnings = [];
+ const infos = [];
+ self.sink.on('err', (...data) => {
+ errors.push(Object.assign({}, ...data));
+ });
+ self.sink.on('warning', (...data) => {
+ warnings.push(Object.assign({}, ...data));
+ });
+ self.sink.on('info', (...data) => {
+ infos.push(Object.assign({}, ...data));
+ });
+ const doValidation = function (err, jsDocument) {
+ if (err) return self.throw(err);
+ self.jsDocument = jsDocument;
+ self.sink.emit('start-all', profile.name);
+ const total = (profile.rules || []).length;
+ let done = 0;
+ profile.rules.forEach(rule => {
+ // XXX
+ // I would like to catch all exceptions here, but this derails the testing
+ // infrastructure which also uses exceptions that it expects aren't caught
+ rule.check(
+ self,
+ function () {
+ done += 1;
+ self.sink.emit('done', this.name);
+ if (done === total)
+ self.sink.emit(
+ 'end-all',
+ buildJSONresult(errors, warnings, infos, {})
+ );
+ }.bind(rule)
+ );
+ });
+ };
+ if (options.url) this.loadURL(options.url, doValidation);
+ else if (options.source)
+ this.loadSource(options.source, doValidation);
+ else if (options.file) this.loadFile(options.file, doValidation);
+ else if (options.document)
+ this.loadDocument(options.document, doValidation);
+ else
+ return this.throw(
+ 'At least one of url, source, file, or document must be specified.'
+ );
+ })
+ .catch(err => this.throw(err.toString()));
};
Specberus.prototype.error = function (rule, key, extra) {
let name;
if (typeof rule === 'string') name = rule;
else name = rule.name;
+ const shortname = this.getShortname();
if (
- this.shortname !== undefined &&
- (this.config.status === 'WD' ||
- this.config.status === 'CR' ||
- this.config.status === 'CRD' ||
- this.config.status === 'DRY' ||
- this.config.status === 'DNOTE' ||
- this.config.status === 'NOTE') &&
+ shortname !== undefined &&
this.exceptions.has(this.shortname, name, key, extra)
)
this.warning(rule, key, extra);
@@ -208,13 +209,13 @@ Specberus.prototype.error = function (rule, key, extra) {
this.sink.emit('err', name, {
key,
extra,
- detailMessage: l10n.assembleData(null, name, key, extra).message,
+ detailMessage: assembleData(null, name, key, extra).message,
});
else
this.sink.emit('err', rule, {
key,
extra,
- detailMessage: l10n.assembleData(null, rule, key, extra).message,
+ detailMessage: assembleData(null, rule, key, extra).message,
});
};
@@ -222,7 +223,7 @@ Specberus.prototype.warning = function (rule, key, extra) {
this.sink.emit('warning', rule, {
key,
extra,
- detailMessage: l10n.assembleData(null, rule, key, extra).message,
+ detailMessage: assembleData(null, rule, key, extra).message,
});
};
@@ -230,7 +231,7 @@ Specberus.prototype.info = function (rule, key, extra) {
this.sink.emit('info', rule, {
key,
extra,
- detailMessage: l10n.assembleData(null, rule, key, extra).message,
+ detailMessage: assembleData(null, rule, key, extra).message,
});
};
@@ -255,16 +256,41 @@ Specberus.prototype.norm = function (str) {
return str.replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ');
};
-const months =
- 'January February March April May June July August September October November December'.split(
- ' '
- );
-Specberus.prototype.dateRegexStrCapturing = `(\\d?\\d) (${months.join(
- '|'
-)}) (\\d{4})`;
-Specberus.prototype.dateRegexStrNonCapturing = `\\d?\\d (?:${months.join(
- '|'
-)}) \\d{4}`;
+const months = [
+ 'January',
+ 'February',
+ 'March',
+ 'April',
+ 'May',
+ 'June',
+ 'July',
+ 'August',
+ 'September',
+ 'October',
+ 'November',
+ 'December',
+];
+const abbrMonths = [
+ 'Jan',
+ 'Feb',
+ 'Mar',
+ 'Apr',
+ 'May',
+ 'Jun',
+ 'Jul',
+ 'Aug',
+ 'Sep',
+ 'Oct',
+ 'Nov',
+ 'Dec',
+];
+
+export const possibleMonths = [...months, ...abbrMonths].join('|');
+
+const separator = '[ -]{1}';
+
+Specberus.prototype.dateRegexStrCapturing = `(\\d?\\d)${separator}(${possibleMonths})${separator}(\\d{4})`;
+Specberus.prototype.dateRegexStrNonCapturing = `\\d?\\d${separator}(?:${possibleMonths})${separator}\\d{4}`;
Specberus.prototype.stringToDate = function (str) {
const rex = new RegExp(this.dateRegexStrCapturing);
@@ -360,7 +386,7 @@ Specberus.prototype.extractHeaders = function (dl) {
const self = this;
const dts = {};
const EDITORS = /^editor(s)?$/;
- const EDITORS_DRAFT = /(latest )?editor's draft/i;
+ const EDITORS_DRAFT = /^(latest )?editor's draft$/i;
// If 'dl' doesn't exist, the function use 'current document' to extract. Return cached data if possible,
// If 'dl' is set, it may comes from another document, e.g. previous document, extract every time.
@@ -388,22 +414,18 @@ Specberus.prototype.extractHeaders = function (dl) {
else if (/^history$/.test(txt)) key = 'History';
else if (/^rescinds this recommendation?$/.test(txt))
key = 'Rescinds';
- else if (/^obsoletes this recommendation?$/.test(txt))
- key = 'Obsoletes';
- else if (/^supersedes this recommendation?$/.test(txt))
- key = 'Supersedes';
else if (/^implementation report?$/.test(txt))
key = 'Implementation';
else if (/^feedback$/.test(txt)) {
// feedback link can be multi-lines
key = 'Feedback';
- dd = util.nextUntil(dt, 'dt', 'dd');
+ dd = nextUntil(dt, 'dt', 'dd');
} else if (/^errata?$/.test(txt)) key = 'Errata';
if (EDITORS_DRAFT.test(txt) && dd.querySelector('a'))
key = 'EditorDraft';
if (EDITORS.test(txt)) {
key = 'Editor';
- dd = util.nextUntil(dt, 'dt', 'dd');
+ dd = nextUntil(dt, 'dt', 'dd');
}
if (key) dts[key] = { pos: idx, el: dt, dd };
});
@@ -427,7 +449,7 @@ Specberus.prototype.getEditorIDs = function () {
return result;
};
-Specberus.prototype.getShortname = async function () {
+Specberus.prototype.getShortname = function () {
if (undefined !== this.shortname) {
return this.shortname;
}
@@ -435,7 +457,10 @@ Specberus.prototype.getShortname = async function () {
let shortname;
const dts = this.extractHeaders();
const linkThis = dts.This ? dts.This.dd.querySelector('a') : null;
- const linkThisHref = linkThis.getAttribute('href').trim();
+ const linkThisHref =
+ linkThis && linkThis.getAttribute('href')
+ ? linkThis.getAttribute('href').trim()
+ : '';
const thisVersionMatches =
linkThisHref && linkThisHref.match(/.*\/[^/-]+-(.*)-\d{8}\/$/);
if (thisVersionMatches && thisVersionMatches.length > 0)
@@ -474,6 +499,22 @@ Specberus.prototype.getFeedbackDueDate = function () {
return dates;
};
+// Return array of group names, e.g. ['Internationalization Working Group', 'Technical Architecture Group']
+Specberus.prototype.getDelivererNames = function () {
+ const sotd = this.getSotDSection();
+ const delivererNamesRegex =
+ /This document was (?:produced|published) by the (.+? Working Group|.+? Interest Group|Technical Architecture Group|Advisory Board)( and the (.+? Working Group|.+? Interest Group|Technical Architecture Group|Advisory Board))? as/;
+
+ const text = this.norm(sotd.textContent);
+ const matches = text.match(delivererNamesRegex);
+ const groups = [];
+ if (matches) {
+ groups.push(matches[1]);
+ if (matches[3]) groups.push(matches[3]);
+ }
+ return groups;
+};
+
/**
* getDelivererGroups get deliverers groupNames and types
*
@@ -490,8 +531,8 @@ Specberus.prototype.getDelivererGroups = async function () {
const REGEX_TAG_DISCLOSURE =
/https?:\/\/www.w3.org\/2001\/tag\/disclosures/;
const REGEX_DELIVERER_IPR_URL =
- /^https:\/\/www\.w3\.org\/groups\/([^/]+)\/([^/]+)\/ipr(#.*)?$/i;
- const TagID = util.TAG.id;
+ /^https:\/\/www\.w3\.org\/groups\/([^/]+)\/([^/]+)\/ipr\/?(#.*)?$/i;
+ const TagID = TAG.id;
const sotd = this.getSotDSection();
const sotdLinks = sotd && sotd.querySelectorAll('a[href]');
@@ -538,12 +579,10 @@ Specberus.prototype.getDelivererGroups = async function () {
// send request to W3C API if there's id extracted from the doc.
for (let i = 0; i < ids.length; i += 1) {
const groupApiUrl = `https://api.w3.org/groups/${ids[i]}`;
- const apikey = this.apiKey;
promiseArray.push(
new Promise(resolve => {
- sua.get(groupApiUrl)
+ get(groupApiUrl)
.set('User-Agent', `W3C-Pubrules/${version}`)
- .query({ apikey })
.end((err, data) => {
resolve(data);
});
@@ -590,8 +629,8 @@ Specberus.prototype.getDelivererIDs = async function () {
const REGEX_TAG_DISCLOSURE =
/https?:\/\/www.w3.org\/2001\/tag\/disclosures/;
const REGEX_DELIVERER_IPR_URL =
- /^https:\/\/www\.w3\.org\/groups\/([^/]+)\/([^/]+)\/ipr(#.*)?$/i;
- const TagID = util.TAG.id;
+ /^https:\/\/www\.w3\.org\/groups\/([^/]+)\/([^/]+)\/ipr\/?(#.*)?$/i;
+ const TagID = TAG.id;
const ids = this.getDataDelivererIDs() || [];
const sotd = this.getSotDSection();
const sotdLinks = sotd && sotd.querySelectorAll('a[href]');
@@ -617,12 +656,10 @@ Specberus.prototype.getDelivererIDs = async function () {
const [, type, shortname] =
REGEX_DELIVERER_IPR_URL.exec(href);
const groupApiUrl = `https://api.w3.org/groups/${type}/${shortname}`;
- const apikey = this.apiKey;
promiseArray.push(
new Promise(resolve => {
- sua.get(groupApiUrl)
+ get(groupApiUrl)
.set('User-Agent', `W3C-Pubrules/${version}`)
- .query({ apikey })
.end((err, data) => {
resolve(data);
});
@@ -672,8 +709,8 @@ Specberus.prototype.getChartersData = async function () {
const chartersData = [];
if (deliverers.length) {
const delivererPromises = [];
- const TagID = util.TAG.id;
- const AbID = util.AB.id;
+ const TagID = TAG.id;
+ const AbID = AB.id;
// Get charter data from W3C API
// deliverers.forEach is for joint publication.
deliverers.forEach(deliverer => {
@@ -728,6 +765,11 @@ Specberus.prototype.getPatentPolicies = async function () {
if (undefined !== this.patentPolicies) {
return this.patentPolicies;
}
+ const deliverers = await this.getDelivererIDs();
+ // TAG and AB are operating under the latest version of the patent policy
+ if (deliverers.some(d => d === TAG.id || d === AB.id)) {
+ return ['https://www.w3.org/policies/patent-policy/20200915/'];
+ }
const chartersData = await this.getChartersData();
const patentPolicies = [];
chartersData.forEach(charterData =>
@@ -743,15 +785,7 @@ Specberus.prototype.isFP = async function () {
return this.isFirstPublic;
}
const previousLink = await this.getPreviousVersion();
- if (!previousLink) {
- const dts = this.extractHeaders();
- const shortnameChange =
- dts.History &&
- dts.History.dd.querySelector('a').dataset.previousShortname;
- this.isFirstPublic = !shortnameChange;
- } else {
- this.isFirstPublic = false;
- }
+ this.isFirstPublic = !previousLink;
return this.isFirstPublic;
};
@@ -760,9 +794,11 @@ Specberus.prototype.getPreviousVersion = async function () {
const dts = this.extractHeaders();
const shortname = this.shortname || (await this.getShortname());
- /**
- *
- */
+ if (!shortname) {
+ this.error('shortname', 'not-found');
+ return;
+ }
+
function shortnameHistoryP() {
return new Promise(resolve => {
w3cApi
@@ -813,7 +849,7 @@ Specberus.prototype.getPreviousVersion = async function () {
Specberus.prototype.loadURL = function (url, cb) {
if (!cb) return this.throw('Missing callback to loadURL.');
const self = this;
- sua.get(url)
+ get(url)
.set('User-Agent', `W3C-Pubrules/${version}`)
.end((err, res) => {
if (err) return self.throw(err.message);
@@ -869,18 +905,18 @@ Specberus.prototype.getRecMetadata = function (meta) {
const sotdText = this.norm(this.getSotDSection().textContent);
// proposed corrections, proposed additions, proposed amendments:
- const { SOTD_P_COR } = util.REC_TEXT;
- const { SOTD_P_ADD } = util.REC_TEXT;
- const { SOTD_P_COR_ADD } = util.REC_TEXT;
+ const { SOTD_P_COR } = REC_TEXT;
+ const { SOTD_P_ADD } = REC_TEXT;
+ const { SOTD_P_COR_ADD } = REC_TEXT;
if (sotdText.match(new RegExp(`${SOTD_P_COR}|${SOTD_P_COR_ADD}`, 'i')))
meta.pSubChanges = true;
if (sotdText.match(new RegExp(`${SOTD_P_ADD}|${SOTD_P_COR_ADD}`, 'i')))
meta.pNewFeatures = true;
// candidate corrections, candidate additions, candidate amendments:
- const { SOTD_C_COR } = util.REC_TEXT;
- const { SOTD_C_ADD } = util.REC_TEXT;
- const { SOTD_C_COR_ADD } = util.REC_TEXT;
+ const { SOTD_C_COR } = REC_TEXT;
+ const { SOTD_C_ADD } = REC_TEXT;
+ const { SOTD_C_COR_ADD } = REC_TEXT;
if (sotdText.match(new RegExp(`${SOTD_C_COR}|${SOTD_C_COR_ADD}`, 'i')))
meta.cSubChanges = true;
if (sotdText.match(new RegExp(`${SOTD_C_ADD}|${SOTD_C_COR_ADD}`, 'i')))
@@ -889,4 +925,4 @@ Specberus.prototype.getRecMetadata = function (meta) {
return meta;
};
-exports.Specberus = Specberus;
+export { Specberus };
diff --git a/lib/views.js b/lib/views.js
index 22670de64..cdb0df4c9 100644
--- a/lib/views.js
+++ b/lib/views.js
@@ -1,6 +1,9 @@
-/**
- * Views.
- */
+// Internal packages:
+import handlebars from 'express-handlebars';
+import qs from 'querystring';
+import { importJSON } from './util.js';
+
+const rules = importJSON('./rules.json', import.meta.url);
// Settings:
const DEBUG = process && process.env && process.env.DEBUG;
@@ -8,13 +11,8 @@ const BASE_URI = `${process.env.BASE_URI ? process.env.BASE_URI : ''}/`.replace(
/\/+$/,
'/'
);
-// Internal packages:
-const handlebars = require('express-handlebars');
-const rules = require('./rules.json');
-const self = require('../package.json');
-// External packages:
-const { version } = self;
+const { version } = importJSON('../package.json', import.meta.url);
const nav = `
`;
- message += `Tip: review the metadata that was inferred from the document to make sure that there are no errors.`;
+ if ($form.attr('method') !== 'post') {
+ message += `Tip: review the metadata that was inferred from the document to make sure that there are no errors.`;
+ }
message += '';
$resultsBody.html(message);
message = '';
@@ -312,8 +317,10 @@ jQuery.extend({
) {
patentPolicy = 'pp2004';
} else if (
- data.metadata.patentPolicy ===
- 'https://www.w3.org/Consortium/Patent-Policy-20200915/'
+ [
+ 'https://www.w3.org/policies/patent-policy/20200915/',
+ 'https://www.w3.org/Consortium/Patent-Policy-20200915/',
+ ].includes(data.metadata.patentPolicy)
) {
patentPolicy = 'pp2020';
}
@@ -321,17 +328,26 @@ jQuery.extend({
$patentPolicy.find('label').removeClass('active');
$patentPolicy.find(`label#${patentPolicy}`).addClass('active');
+ const isPost = $form.attr('method') === 'post';
const options = {
- url: data.url,
profile,
validation: 'simple-validation',
informativeOnly: data.metadata.informative || false,
echidnaReady: false,
patentPolicy,
};
+ if (isPost) {
+ options.file = tempPostFile;
+ } else {
+ options.url = data.url;
+ const newUrl = `${document.URL.split('?')[0]}?${$.param(options)}`;
+ window.history.pushState(
+ options,
+ `${url} - ${profile}`,
+ newUrl
+ );
+ }
validate(options);
- const newUrl = `${document.URL.split('?')[0]}?${$.param(options)}`;
- window.history.pushState(options, `${url} - ${profile}`, newUrl);
} else {
// Deal with all possible errors:
if (!data)
@@ -353,34 +369,44 @@ jQuery.extend({
}
});
- $form.submit(event => {
+ $file.on('change', event => {
+ socket.emit('upload', event.target.files[0], status => {
+ tempPostFile = status.filename;
+ });
+ });
+
+ $form.on('submit', event => {
+ const isPost = $form.attr('method') === 'post';
if (running) {
if (event) event.preventDefault();
return;
}
running = true;
+
+ const input = isPost ? { file: tempPostFile } : { url: $url.val() };
toggleForm(false);
$resultsBody.empty();
$resultsList.empty();
result = { exceptions: [], errors: [], warnings: [], infos: [] };
if ($profile.val() === 'auto') {
- extractMetadata($url.val());
+ extractMetadata(input);
} else {
- const url = $url.val();
const validation = $validation.find('label.active').attr('id');
const informativeOnly = $informativeOnly.is(':checked') || false;
const echidnaReady = $echidnaReady.is(':checked') || false;
const patentPolicy = $patentPolicy.find('label.active').attr('id');
profile = $profile.val();
- if (!url)
- addMessage(MSG_ERROR, { message: 'Missing “URL” parameter' });
+ if (!input.file && !input.url)
+ addMessage(MSG_ERROR, {
+ message: 'Missing "URL" or "file" parameter',
+ });
if (!profile)
addMessage(MSG_ERROR, {
- message: 'Missing “profile” parameter',
+ message: 'Missing "profile" parameter',
});
if (echidnaReady) profile += '-Echidna';
const options = {
- url,
+ ...input,
profile,
validation,
informativeOnly,
@@ -388,8 +414,14 @@ jQuery.extend({
patentPolicy,
};
validate(options);
- const newUrl = `${document.URL.split('?')[0]}?${$.param(options)}`;
- window.history.pushState(options, `${url} - ${profile}`, newUrl);
+ if (!isPost) {
+ const newUrl = `${document.URL.split('?')[0]}?${$.param(options)}`;
+ window.history.pushState(
+ options,
+ `${url} - ${profile}`,
+ newUrl
+ );
+ }
}
return false;
});
@@ -397,10 +429,24 @@ jQuery.extend({
function disableProfilesIfNeeded(checkbox) {
if (checkbox.prop('checked')) {
$profileOptions.each((_, el) => {
- if (!['WD', 'NOTE', 'DNOTE', 'CR', 'CRD'].includes($(el).val()))
+ if (
+ ![
+ 'WD',
+ 'NOTE',
+ 'DNOTE',
+ 'CR',
+ 'CRD',
+ 'REC',
+ 'DRY',
+ ].includes($(el).val())
+ )
$(el).prop('disabled', true);
});
- if (!['WD', 'NOTE', 'DNOTE', 'CR', 'CRD'].includes($profile.val()))
+ if (
+ !['WD', 'NOTE', 'DNOTE', 'CR', 'CRD', 'REC', 'DRY'].includes(
+ $profile.val()
+ )
+ )
$profile.val('');
} else
$profileOptions.each((_, el) => {
@@ -449,13 +495,41 @@ jQuery.extend({
disableProfilesIfNeeded($echidnaReady);
});
+ const validation_method = method => {
+ const isFileMethod = method === 'file';
+ $valfile.parent().toggleClass('active', isFileMethod);
+ $valuri.parent().toggleClass('active', !isFileMethod);
+ $urlContainer.toggleClass('hidden', isFileMethod);
+ $urlLabel.toggleClass('hidden', isFileMethod);
+ $fileContainer.toggleClass('hidden', !isFileMethod);
+ $fileLabel.toggleClass('hidden', !isFileMethod);
+ $url.prop('disabled', isFileMethod);
+ $file.prop('disabled', !isFileMethod);
+ if (isFileMethod) {
+ $form.attr('method', 'post');
+ $form.attr('enctype', 'multipart/form-data');
+ } else {
+ $form.removeAttr('method');
+ $form.removeAttr('action');
+ $form.removeAttr('enctype');
+ }
+ };
+
+ $valfile.click(() => validation_method('file'));
+
+ $valuri.click(() => validation_method('url'));
+
$(document).ready(() => {
- $profileOptions = $('#profile option');
- const options = $.getQueryParameters();
- setFormParams(options);
+ if (window.location.hash === '#validate_file') {
+ validation_method('file');
+ } else {
+ $profileOptions = $('#profile option');
+ const options = $.getQueryParameters();
+ setFormParams(options);
+ if (options.url && options.profile) $('form').submit();
+ $('[data-toggle="tooltip"]').tooltip();
+ $url.select();
+ }
toggleManual($profile.val() !== 'auto');
- if (options.url && options.profile) $('form').submit();
- $('[data-toggle="tooltip"]').tooltip();
- $url.select();
});
})(jQuery);
diff --git a/test/api.js b/test/api.js
index 2ed978c68..cce2cbcb0 100644
--- a/test/api.js
+++ b/test/api.js
@@ -2,24 +2,24 @@
* Test the REST API.
*/
-/* globals expect: true */
+// Native packages:
+// External packages:
+import * as chai from 'chai';
+import chaiAsPromised from '@rvagg/chai-as-promised';
+import express from 'express';
+import http from 'http';
+import superagent from 'superagent';
+import { setUp } from '../lib/api.js';
+import { importJSON } from '../lib/util.js';
+// Internal packages:
+const meta = importJSON('../package.json', import.meta.url);
+const { expect } = chai;
// Settings:
const DEFAULT_PORT = 8000;
const PORT = process.env.PORT || DEFAULT_PORT;
const ENDPOINT = `http://localhost:${PORT}/api/`;
const TIMEOUT = 30000;
-// Native packages:
-const http = require('http');
-
-// External packages:
-const chai = require('chai');
-const chaiAsPromised = require('chai-as-promised');
-const express = require('express');
-const superagent = require('superagent');
-// Internal packages:
-const meta = require('../package.json');
-const api = require('../lib/api');
let server;
@@ -30,7 +30,7 @@ let server;
const launchServer = function () {
const app = express();
server = http.createServer(app);
- api.setUp(app, process.env.W3C_API_KEY);
+ setUp(app);
server.listen(PORT).on('error', err => {
throw new Error(err);
});
@@ -40,16 +40,15 @@ const launchServer = function () {
* Set up the testing framework.
*/
-const setUp = function () {
+const setUpTest = function () {
chai.use(chaiAsPromised);
- expect = chai.expect;
};
/**
* Query the API.
*/
-const get = function (suffix, post) {
+const request = function (suffix, post) {
const method = post ? superagent.post : superagent.get;
return new Promise((resolve, reject) => {
method(ENDPOINT + suffix, (error, response, body) => {
@@ -88,32 +87,34 @@ describe('API', () => {
before(() => {
launchServer();
- setUp();
+ setUpTest();
});
describe('Endpoint', () => {
it('Should exist and listen to GET requests', () => {
- query = get('');
+ query = request('');
return expect(query).to.eventually.be.rejectedWith(
- /wrong api method/i
+ /wrong api endpoint/i
);
});
- it('Should not accept POST requests', () => {
- query = get('', true);
- return expect(query).to.eventually.be.rejectedWith(/cannot post/i);
+ it('Should exist and listen to POST requests', () => {
+ query = request('', true);
+ return expect(query).to.eventually.be.rejectedWith(
+ /wrong api endpoint/i
+ );
});
});
describe('Method “version”', () => {
it('Should return the right version string', () => {
- query = get('version');
+ query = request('version');
return expect(query).to.eventually.become(meta.version);
});
});
describe('Method “metadata”', () => {
it('Should accept the parameter “file”, and return the right profile and date', () => {
- query = get('metadata?file=test/docs/metadata/ttml-imsc1.html');
+ query = request('metadata?file=test/docs/metadata/ttml-imsc1.html');
// @TODO: parse result as an Object (it's JSON) instead of a String.
return expect(query)
.to.eventually.match(/"profile":\s*"pr"/i)
@@ -123,7 +124,7 @@ describe('API', () => {
describe('Method “validate”', () => {
it('Should 404 and return an array of errors when validation fails', () => {
- query = get(
+ query = request(
'validate?file=test/docs/metadata/ttml-imsc1.html&profile=REC&validation=simple-validation&processDocument=2047'
);
return expect(query).to.eventually.be.rejectedWith(
@@ -148,13 +149,13 @@ describe('API', () => {
describe('Parameter restrictions', () => {
it('Should reject the parameter “document”', () => {
- query = get('metadata?document=foo');
+ query = request('metadata?document=foo');
return expect(query).to.eventually.be.rejectedWith(
'Parameter “document” is not allowed in this context'
);
});
it('Should reject the parameter “source”', () => {
- query = get('metadata?source=foo');
+ query = request('metadata?source=foo');
return expect(query).to.eventually.be.rejectedWith(
'Parameter “source” is not allowed in this context'
);
diff --git a/test/data/SUBM/MEM-SUBM.js b/test/data/SUBM/MEM-SUBM.js
index a38e6e23b..5624b280e 100644
--- a/test/data/SUBM/MEM-SUBM.js
+++ b/test/data/SUBM/MEM-SUBM.js
@@ -1,9 +1,9 @@
-const { rules } = require('./SUBMBase');
+import { rules as baseRules } from './SUBMBase.js';
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
headers: {
- ...rules.headers,
+ ...baseRules.headers,
'memsub-copyright': [
{
data: 'noCopyright',
@@ -14,88 +14,41 @@ exports.rules = {
errors: ['headers.memsub-copyright.not-found'],
},
],
- dl: [
- {
- data: 'wrongThisVersionHead',
- errors: [
- 'headers.dl.this-version',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- ],
- },
- {
- data: 'wrongLatestVersionHead',
- errors: ['headers.dl.latest-version'],
- },
+ shortname: [
{
- data: 'wrongHistoryHead',
- errors: ['headers.dl.no-history'],
+ data: 'wrongHistorySyntax',
+ errors: ['headers.shortname.history-syntax'],
},
{
- data: 'rescinds',
+ data: 'diffThisAndRescindShortname',
config: {
rescinds: true,
},
- errors: ['headers.dl.rescinds'],
- },
- {
- data: 'obsoletes',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.obsoletes'],
- },
- {
- data: 'supersedes',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.supersedes'],
- },
- {
- data: 'wrongThisAndLatestOrder',
- errors: ['headers.dl.this-latest-order'],
+ errors: ['headers.shortname.this-rescinds-shortname'],
},
+ ],
+ dl: [
{
- data: 'wrongLatestAndRescindsOrder',
+ data: 'wrongRescindSyntax',
config: {
rescinds: true,
},
- errors: ['headers.dl.latest-rescinds-order'],
+ errors: ['headers.dl.rescinds-syntax'],
},
{
- data: 'wrongLatestAndObsoletesOrder',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.latest-obsoletes-order'],
+ data: 'wrongLatestSyntax',
+ errors: ['headers.dl.latest-syntax'],
},
{
- data: 'wrongLatestAndSupersedesOrder',
+ data: 'noRescindLinkExist',
config: {
- supersedes: true,
+ rescinds: true,
},
- errors: ['headers.dl.latest-supersedes-order'],
- },
- {
- data: 'noThisLinkExist',
- errors: [
- 'headers.dl.not-found',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- ],
- },
- {
- data: 'noDocDate',
- warnings: ['headers.dl.no-date'],
+ errors: ['headers.dl.not-found'],
},
{
- data: 'wrongThisSyntax',
- errors: [
- 'headers.dl.this-syntax',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- ],
+ data: 'noHistoryLinkExist',
+ errors: ['headers.dl.not-found'],
},
{
data: 'noLatestLinkExist',
@@ -106,79 +59,46 @@ exports.rules = {
errors: ['headers.dl.link-diff'],
},
{
- data: 'wrongLatestSyntax',
- errors: ['headers.dl.latest-syntax'],
+ data: 'wrongThisVersionHead',
+ errors: ['headers.dl.this-version'],
},
{
- data: 'noHistoryLinkExist',
- errors: ['headers.dl.not-found'],
+ data: 'wrongLatestVersionHead',
+ errors: ['headers.dl.latest-version'],
},
{
- data: 'wrongHistorySyntax',
- errors: ['headers.dl.history-syntax'],
+ data: 'wrongHistoryHead',
+ errors: ['headers.dl.no-history'],
},
{
- data: 'noRescindLinkExist',
+ data: 'rescinds',
config: {
rescinds: true,
},
- errors: ['headers.dl.not-found'],
+ errors: ['headers.dl.rescinds'],
},
{
- data: 'diffThisAndRescindShortname',
- config: {
- rescinds: true,
- },
- errors: ['headers.dl.this-rescinds-shortname'],
+ data: 'wrongThisAndLatestOrder',
+ errors: ['headers.dl.this-latest-order'],
},
{
- data: 'wrongRescindSyntax',
+ data: 'wrongLatestAndRescindsOrder',
config: {
rescinds: true,
},
- errors: ['headers.dl.rescinds-syntax'],
- },
- {
- data: 'noObsoletesLinkExist',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.not-found'],
- },
- {
- data: 'diffThisAndObsoletesShortname',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.this-obsoletes-shortname'],
- },
- {
- data: 'wrongObsoletesSyntax',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.obsoletes-syntax'],
+ errors: ['headers.dl.latest-rescinds-order'],
},
{
- data: 'noSupersedesLinkExist',
- config: {
- supersedes: true,
- },
+ data: 'noThisLinkExist',
errors: ['headers.dl.not-found'],
},
{
- data: 'diffThisAndSupersedesShortname',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.this-supersedes-shortname'],
+ data: 'noDocDate',
+ warnings: ['headers.dl.no-date'],
},
{
- data: 'wrongSupersedesSyntax',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.supersedes-syntax'],
+ data: 'wrongThisSyntax',
+ errors: ['headers.dl.this-syntax'],
},
{
data: 'noEditorDraftLinkExist',
@@ -199,7 +119,7 @@ exports.rules = {
],
},
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
submission: [
{
data: 'noSubmissionText',
diff --git a/test/data/SUBM/SUBMBase.js b/test/data/SUBM/SUBMBase.js
index 972b48b1f..0db543b39 100644
--- a/test/data/SUBM/SUBMBase.js
+++ b/test/data/SUBM/SUBMBase.js
@@ -1,23 +1,23 @@
-const { rules } = require('../specBase');
+import { rules as baseRules } from '../specBase.js';
-exports.rules = {
+export const rules = {
headers: {
- ...rules.headers,
+ ...baseRules.headers,
},
style: {
- ...rules.style,
+ ...baseRules.style,
},
heuristic: {
- ...rules.heuristic,
+ ...baseRules.heuristic,
},
links: {
- ...rules.links,
+ ...baseRules.links,
},
structure: {
- ...rules.structure,
+ ...baseRules.structure,
},
sotd: {},
validation: {
- ...rules.validation,
+ ...baseRules.validation,
},
};
diff --git a/test/data/TR/Note/DNOTE-Echidna.js b/test/data/TR/Note/DNOTE-Echidna.js
index 641747daf..0432bb5b9 100644
--- a/test/data/TR/Note/DNOTE-Echidna.js
+++ b/test/data/TR/Note/DNOTE-Echidna.js
@@ -1,9 +1,11 @@
-const { rules, draftStabilityRules, echidnaRules } = require('./noteBase');
+import noteBase from './noteBase.js';
-exports.rules = {
- ...rules,
+const { draftStabilityRules, echidnaRules, rules: baseRules } = noteBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRules,
},
echidna: echidnaRules,
diff --git a/test/data/TR/Note/DNOTE.js b/test/data/TR/Note/DNOTE.js
index 3f4d4deb1..56281581c 100644
--- a/test/data/TR/Note/DNOTE.js
+++ b/test/data/TR/Note/DNOTE.js
@@ -1,9 +1,21 @@
-const { rules, draftStabilityRules } = require('./noteBase');
+import noteBase from './noteBase.js';
-exports.rules = {
- ...rules,
+const { draftStabilityRules, rules: baseRules } = noteBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRules,
},
+ headers: {
+ ...baseRules.headers,
+ shortname: [
+ ...baseRules.headers.shortname,
+ {
+ data: 'shortnameLowercaseFP',
+ errors: ['headers.shortname.shortname-lowercase'],
+ },
+ ],
+ },
};
diff --git a/test/data/TR/Note/NOTE-Echidna.js b/test/data/TR/Note/NOTE-Echidna.js
index 9ff33a124..909fcd86b 100644
--- a/test/data/TR/Note/NOTE-Echidna.js
+++ b/test/data/TR/Note/NOTE-Echidna.js
@@ -1,6 +1,8 @@
-const { rules, echidnaRules } = require('./noteBase');
+import noteBase from './noteBase.js';
-exports.rules = {
- ...rules,
+const { echidnaRules, rules: baseRules } = noteBase;
+
+export const rules = {
+ ...baseRules,
echidna: echidnaRules,
};
diff --git a/test/data/TR/Note/NOTE.js b/test/data/TR/Note/NOTE.js
index 628a7fb0f..c7e6a5c68 100644
--- a/test/data/TR/Note/NOTE.js
+++ b/test/data/TR/Note/NOTE.js
@@ -1,5 +1,33 @@
-const { rules } = require('./noteBase');
+import noteBase from './noteBase.js';
-exports.rules = {
- ...rules,
+export const { rules: baseRules } = noteBase;
+
+export const rules = {
+ ...baseRules,
+ headers: {
+ ...baseRules.headers,
+ dl: [
+ ...baseRules.headers.dl,
+ {
+ data: 'shortnameLowercase',
+ },
+ ],
+ },
+ sotd: {
+ ...baseRules.sotd,
+ stability: [
+ {
+ data: 'noStability',
+ errors: ['sotd.stability.no-stability'],
+ },
+ {
+ data: 'supportAnotherSW',
+ errors: [],
+ },
+ {
+ data: 'supportAnotherSWJoint',
+ errors: [],
+ },
+ ],
+ },
};
diff --git a/test/data/TR/Note/STMT.js b/test/data/TR/Note/STMT.js
index 628a7fb0f..4cfd2564e 100644
--- a/test/data/TR/Note/STMT.js
+++ b/test/data/TR/Note/STMT.js
@@ -1,5 +1,3 @@
-const { rules } = require('./noteBase');
+import noteBase from './noteBase.js';
-exports.rules = {
- ...rules,
-};
+export const { rules } = noteBase;
diff --git a/test/data/TR/Note/noteBase.js b/test/data/TR/Note/noteBase.js
index 97daeac7c..9be9e2c15 100644
--- a/test/data/TR/Note/noteBase.js
+++ b/test/data/TR/Note/noteBase.js
@@ -1,25 +1,15 @@
-const { rules, ...rest } = require('../TRBase');
+import * as TRBase from '../TRBase.js';
-module.exports = {
+const { rules: baseRules, ...rest } = TRBase;
+
+export default {
...rest,
rules: {
- ...rules,
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
pp: [
- ...rules.sotd.pp.filter(
- v =>
- !['noPP2017', 'jointPublication'].find(
- x => x === v.data
- )
- ),
- {
- data: 'noPP2017',
- config: {
- patentPolicy: 'pp2004',
- },
- errors: ['sotd.pp.no-pp2017'],
- },
+ ...baseRules.sotd.pp.filter(v => v.data !== 'jointPublication'),
{
data: 'jointPublication',
config: {
diff --git a/test/data/TR/Recommendation/CR-Echidna.js b/test/data/TR/Recommendation/CR-Echidna.js
index 11b4aaeec..d8cf1f242 100644
--- a/test/data/TR/Recommendation/CR-Echidna.js
+++ b/test/data/TR/Recommendation/CR-Echidna.js
@@ -1,20 +1,22 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
candidateReviewEndRules,
echidnaRules,
+ rules: baseRules,
securityPrivacyRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': [],
'candidate-review-end': candidateReviewEndRules,
},
echidna: echidnaRules,
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
};
diff --git a/test/data/TR/Recommendation/CR.js b/test/data/TR/Recommendation/CR.js
index 42ef6dba4..669e52a91 100644
--- a/test/data/TR/Recommendation/CR.js
+++ b/test/data/TR/Recommendation/CR.js
@@ -1,18 +1,29 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
candidateReviewEndRules,
+ rules: baseRules,
securityPrivacyRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': [],
'candidate-review-end': candidateReviewEndRules,
},
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
+ headers: {
+ ...baseRules.headers,
+ dl: [
+ ...baseRules.headers.dl,
+ {
+ data: 'shortnameLowercase',
+ },
+ ],
+ },
};
diff --git a/test/data/TR/Recommendation/CRD-Echidna.js b/test/data/TR/Recommendation/CRD-Echidna.js
index 5337ac53c..0b9f33a17 100644
--- a/test/data/TR/Recommendation/CRD-Echidna.js
+++ b/test/data/TR/Recommendation/CRD-Echidna.js
@@ -1,19 +1,21 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
+ rules: baseRules,
echidnaRules,
draftStabilityRulesForDraft,
securityPrivacyRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRulesForDraft,
},
echidna: echidnaRules,
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
};
diff --git a/test/data/TR/Recommendation/CRD.js b/test/data/TR/Recommendation/CRD.js
index 3b421c75d..bf6994c93 100644
--- a/test/data/TR/Recommendation/CRD.js
+++ b/test/data/TR/Recommendation/CRD.js
@@ -1,17 +1,19 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
+ rules: baseRules,
securityPrivacyRules,
draftStabilityRulesForDraft,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRulesForDraft,
},
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
};
diff --git a/test/data/TR/Recommendation/DISC.js b/test/data/TR/Recommendation/DISC.js
index 736e668f1..d9aa9188b 100644
--- a/test/data/TR/Recommendation/DISC.js
+++ b/test/data/TR/Recommendation/DISC.js
@@ -1,11 +1,13 @@
-const { rules } = require('./recommendationBase');
+import recommendationBase from './recommendationBase.js';
-exports.rules = {
- ...rules,
+const { rules: baseRules } = recommendationBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
stability: [
- ...rules.sotd.stability,
+ ...baseRules.sotd.stability,
{
data: 'noCRReview',
config: {
diff --git a/test/data/TR/Recommendation/FPWD.js b/test/data/TR/Recommendation/FPWD.js
index eefa44017..7fa19d5a2 100644
--- a/test/data/TR/Recommendation/FPWD.js
+++ b/test/data/TR/Recommendation/FPWD.js
@@ -1,9 +1,21 @@
-const { rules, draftStabilityRules } = require('./recommendationBase');
+import recommendationBase from './recommendationBase.js';
-exports.rules = {
- ...rules,
+const { rules: baseRules, draftStabilityRules } = recommendationBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRules,
},
+ headers: {
+ ...baseRules.headers,
+ shortname: [
+ ...baseRules.headers.shortname,
+ {
+ data: 'shortnameLowercaseFP',
+ errors: ['headers.shortname.shortname-lowercase'],
+ },
+ ],
+ },
};
diff --git a/test/data/TR/Recommendation/PR.js b/test/data/TR/Recommendation/PR.js
index 4c62f0f56..b77e0ce55 100644
--- a/test/data/TR/Recommendation/PR.js
+++ b/test/data/TR/Recommendation/PR.js
@@ -1,17 +1,19 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
+ rules: baseRules,
securityPrivacyRules,
newFeaturesRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'ac-review': [
{
data: 'noACReview',
diff --git a/test/data/TR/Recommendation/REC-RSCND.js b/test/data/TR/Recommendation/REC-RSCND.js
index a1a603180..67e02da35 100644
--- a/test/data/TR/Recommendation/REC-RSCND.js
+++ b/test/data/TR/Recommendation/REC-RSCND.js
@@ -1,72 +1,37 @@
-const { rules, recStabilityRules } = require('./recommendationBase');
+import recommendationBase from './recommendationBase.js';
-exports.rules = {
- ...rules,
+const { recStabilityRules, rules: baseRules } = recommendationBase;
+
+export const rules = {
+ ...baseRules,
headers: {
- ...rules.headers,
+ ...baseRules.headers,
dl: [
- ...rules.headers.dl.filter(
+ ...baseRules.headers.dl.filter(
v =>
![
'wrongThisVersionHead',
'noRescindsNeeded',
- 'wrongLatestAndObsoletesOrder',
- 'wrongLatestAndSupersedesOrder',
'noThisLinkExist',
'wrongThisSyntax',
].find(x => x === v.data)
),
{
data: 'wrongThisVersionHead',
- errors: [
- 'headers.dl.this-version',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- 'headers.dl.this-rescinds-shortname',
- ],
- },
- {
- data: 'wrongLatestAndObsoletesOrder',
- config: {
- obsoletes: true,
- },
- errors: [
- 'headers.dl.latest-rescinds-order',
- 'headers.dl.latest-obsoletes-order',
- ],
- },
- {
- data: 'wrongLatestAndSupersedesOrder',
- config: {
- supersedes: true,
- },
- errors: [
- 'headers.dl.latest-rescinds-order',
- 'headers.dl.latest-supersedes-order',
- ],
+ errors: ['headers.dl.this-version'],
},
{
data: 'noThisLinkExist',
- errors: [
- 'headers.dl.not-found',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- 'headers.dl.this-rescinds-shortname',
- ],
+ errors: ['headers.dl.not-found'],
},
{
data: 'wrongThisSyntax',
- errors: [
- 'headers.dl.this-syntax',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- 'headers.dl.this-rescinds-shortname',
- ],
+ errors: ['headers.dl.this-syntax'],
},
],
},
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
stability: recStabilityRules,
'obsl-rescind': [
{
diff --git a/test/data/TR/Recommendation/REC.js b/test/data/TR/Recommendation/REC.js
index 8339f20ed..13eb76e15 100644
--- a/test/data/TR/Recommendation/REC.js
+++ b/test/data/TR/Recommendation/REC.js
@@ -1,13 +1,15 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
+ rules: baseRules,
newFeaturesRules,
recStabilityRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
stability: recStabilityRules,
deployment: [
{
@@ -46,12 +48,34 @@ exports.rules = {
],
},
headers: {
- ...rules.headers,
+ ...baseRules.headers,
errata: [
{
data: 'noErrata',
errors: ['headers.errata.no-errata'],
},
+ {
+ data: 'recWithProposedSubChanges',
+ errors: [],
+ },
+ {
+ data: 'recWithProposedNewChanges',
+ errors: [],
+ },
+ {
+ data: 'recWithCandidateSubChanges',
+ errors: [],
+ },
+ {
+ data: 'recWithCandidateNewChanges',
+ errors: [],
+ },
+ ],
+ dl: [
+ ...baseRules.headers.dl,
+ {
+ data: 'shortnameLowercase',
+ },
],
},
};
diff --git a/test/data/TR/Recommendation/WD-Echidna.js b/test/data/TR/Recommendation/WD-Echidna.js
index ad05a856d..85f7e415a 100644
--- a/test/data/TR/Recommendation/WD-Echidna.js
+++ b/test/data/TR/Recommendation/WD-Echidna.js
@@ -1,18 +1,20 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
+ rules: baseRules,
draftStabilityRules,
securityPrivacyRules,
echidnaRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRules,
},
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
echidna: echidnaRules,
diff --git a/test/data/TR/Recommendation/WD.js b/test/data/TR/Recommendation/WD.js
index 3336eb7bd..d53bd4ca5 100644
--- a/test/data/TR/Recommendation/WD.js
+++ b/test/data/TR/Recommendation/WD.js
@@ -1,17 +1,19 @@
+import recommendationBase from './recommendationBase.js';
+
const {
- rules,
+ rules: baseRules,
draftStabilityRules,
securityPrivacyRules,
-} = require('./recommendationBase');
+} = recommendationBase;
-exports.rules = {
- ...rules,
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRules,
},
structure: {
- ...rules.structure,
+ ...baseRules.structure,
'security-privacy': securityPrivacyRules,
},
};
diff --git a/test/data/TR/Recommendation/recommendationBase.js b/test/data/TR/Recommendation/recommendationBase.js
index 0e60ae8ff..0733709ed 100644
--- a/test/data/TR/Recommendation/recommendationBase.js
+++ b/test/data/TR/Recommendation/recommendationBase.js
@@ -1,6 +1,8 @@
-const { rules, ...rest } = require('../TRBase');
+import * as TRBase from '../TRBase.js';
-module.exports = {
+const { rules: baseRules, ...rest } = TRBase;
+
+export default {
...rest,
securityPrivacyRules: [
{
@@ -27,11 +29,11 @@ module.exports = {
},
],
rules: {
- ...rules,
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
pp: [
- ...rules.sotd.pp,
+ ...baseRules.sotd.pp,
{
data: 'noDisclosures',
config: {
diff --git a/test/data/TR/Registry/CRY.js b/test/data/TR/Registry/CRY.js
index 4efbce267..af214d3fe 100644
--- a/test/data/TR/Registry/CRY.js
+++ b/test/data/TR/Registry/CRY.js
@@ -1,9 +1,11 @@
-const { rules, candidateReviewEndRules } = require('./registryBase');
+import registryBase from './registryBase.js';
-exports.rules = {
- ...rules,
+const { rules: baseRules, candidateReviewEndRules } = registryBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'candidate-review-end': candidateReviewEndRules,
},
};
diff --git a/test/data/TR/Registry/CRYD.js b/test/data/TR/Registry/CRYD.js
index 8ecf9234a..019c61528 100644
--- a/test/data/TR/Registry/CRYD.js
+++ b/test/data/TR/Registry/CRYD.js
@@ -1,9 +1,20 @@
-const { rules, draftStabilityRulesForDraft } = require('./registryBase');
+import registryBase from './registryBase.js';
-exports.rules = {
- ...rules,
+const { rules: baseRules, draftStabilityRulesForDraft } = registryBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRulesForDraft,
},
+ headers: {
+ ...baseRules.headers,
+ dl: [
+ ...baseRules.headers.dl,
+ {
+ data: 'shortnameLowercase',
+ },
+ ],
+ },
};
diff --git a/test/data/TR/Registry/DRY.js b/test/data/TR/Registry/DRY.js
index 6ca4e66f1..fca7bcde5 100644
--- a/test/data/TR/Registry/DRY.js
+++ b/test/data/TR/Registry/DRY.js
@@ -1,9 +1,27 @@
-const { rules, draftStabilityRules } = require('./registryBase');
+import registryBase from './registryBase.js';
-exports.rules = {
- ...rules,
+const { rules: baseRules, draftStabilityRules } = registryBase;
+
+export const rules = {
+ ...baseRules,
sotd: {
- ...rules.sotd,
+ ...baseRules.sotd,
'draft-stability': draftStabilityRules,
},
+ headers: {
+ ...baseRules.headers,
+ dl: [
+ ...baseRules.headers.dl,
+ {
+ data: 'shortnameLowercaseFP',
+ errors: [
+ 'headers.dl.this-version',
+ 'headers.dl.latest-version',
+ 'headers.dl.no-history',
+ 'generic.sotd.not-found',
+ 'headers.dl.editor-not-found',
+ ],
+ },
+ ],
+ },
};
diff --git a/test/data/TR/Registry/RY.js b/test/data/TR/Registry/RY.js
index 18060008b..810c564bf 100644
--- a/test/data/TR/Registry/RY.js
+++ b/test/data/TR/Registry/RY.js
@@ -1,5 +1,3 @@
-const { rules } = require('./registryBase');
+import registryBase from './registryBase.js';
-exports.rules = {
- ...rules,
-};
+export const { rules } = registryBase;
diff --git a/test/data/TR/Registry/registryBase.js b/test/data/TR/Registry/registryBase.js
index a4ee97624..7248d1694 100644
--- a/test/data/TR/Registry/registryBase.js
+++ b/test/data/TR/Registry/registryBase.js
@@ -1,25 +1,15 @@
-const { rules, ...rest } = require('../TRBase');
+import * as TRBase from '../TRBase.js';
-module.exports = {
+const { rules, ...rest } = TRBase;
+
+export default {
...rest,
rules: {
...rules,
sotd: {
...rules.sotd,
pp: [
- ...rules.sotd.pp.filter(
- v =>
- !['noPP2017', 'jointPublication'].find(
- x => x === v.data
- )
- ),
- {
- data: 'noPP2017',
- config: {
- patentPolicy: 'pp2004',
- },
- errors: ['sotd.pp.no-pp2017'],
- },
+ ...rules.sotd.pp.filter(v => v.data !== 'jointPublication'),
{
data: 'jointPublication',
config: {
diff --git a/test/data/TR/TRBase.js b/test/data/TR/TRBase.js
index 908b85522..e7f0a53eb 100644
--- a/test/data/TR/TRBase.js
+++ b/test/data/TR/TRBase.js
@@ -1,8 +1,8 @@
-const { rules } = require('../specBase');
+import { rules as baseRules } from '../specBase.js';
-exports.rules = {
+export const rules = {
headers: {
- ...rules.headers,
+ ...baseRules.headers,
'github-repo': [
{
data: 'noFeedback',
@@ -18,19 +18,41 @@ exports.rules = {
data: 'noCopyright',
errors: ['headers.copyright.not-found'],
},
+ {
+ data: 'noMatchedCopyright',
+ errors: ['headers.copyright.no-match'],
+ },
+ {
+ data: 'wrongCopyrightLink',
+ errors: ['headers.copyright.href-not-match'],
+ },
+ {
+ data: 'copyrightExceptionFound',
+ errors: [],
+ },
+ {
+ data: 'copyrightExceptionNotFound',
+ errors: ['headers.copyright.exception-no-html'],
+ },
+ ],
+ 'editor-participation': [
+ {
+ data: 'noEditorParticipation',
+ errors: ['headers.editor-participation.not-participating'],
+ },
],
},
style: {
- ...rules.style,
+ ...baseRules.style,
},
heuristic: {
- ...rules.heuristic,
+ ...baseRules.heuristic,
},
links: {
- ...rules.links,
+ ...baseRules.links,
},
structure: {
- ...rules.structure,
+ ...baseRules.structure,
},
sotd: {
supersedable: [
@@ -42,13 +64,6 @@ exports.rules = {
data: 'noProcess',
errors: ['sotd.process-document.not-found'],
},
- {
- data: 'wrongLink',
- errors: [
- 'sotd.process-document.wrong-link',
- 'sotd.process-document.not-found',
- ],
- },
{
data: 'duplicatedProcess',
errors: ['sotd.process-document.multiple-times'],
@@ -94,17 +109,6 @@ exports.rules = {
data: 'noPPFromCharter',
errors: ['sotd.pp.no-pp-from-charter'],
},
- {
- data: 'noPP2017',
- config: {
- patentPolicy: 'pp2004',
- },
- errors: [
- 'sotd.pp.no-pp2017',
- 'sotd.pp.no-claims',
- 'sotd.pp.no-section6',
- ],
- },
{
data: 'noPP2020',
config: {
@@ -127,11 +131,11 @@ exports.rules = {
],
},
validation: {
- ...rules.validation,
+ ...baseRules.validation,
},
};
-exports.candidateReviewEndRules = [
+export const candidateReviewEndRules = [
{
data: 'noDateFound',
errors: ['sotd.candidate-review-end.not-found'],
@@ -146,7 +150,7 @@ exports.candidateReviewEndRules = [
},
];
-exports.echidnaRules = {
+export const echidnaRules = {
'todays-date': [
{
data: 'noDateDetected',
@@ -157,23 +161,29 @@ exports.echidnaRules = {
errors: ['echidna.todays-date.wrong-date'],
},
],
+ 'deliverer-change': [
+ {
+ data: 'delivererChanged',
+ errors: ['echidna.deliverer-change.deliverer-changed'],
+ },
+ ],
};
-exports.draftStabilityRules = [
+export const draftStabilityRules = [
{
data: 'noDraft',
errors: ['sotd.draft-stability.not-found'],
},
];
-exports.draftStabilityRulesForDraft = [
+export const draftStabilityRulesForDraft = [
{
data: 'noDraftEither',
errors: ['sotd.draft-stability.not-found-either'],
},
];
-exports.newFeaturesRules = [
+export const newFeaturesRules = [
{
data: 'noWarning',
warnings: ['sotd.new-features.no-warning'],
diff --git a/test/data/goodDocuments.js b/test/data/goodDocuments.js
index da34fdbcf..ca1b15824 100644
--- a/test/data/goodDocuments.js
+++ b/test/data/goodDocuments.js
@@ -1,4 +1,4 @@
-exports.goodDocuments = {
+export const goodDocuments = {
// Note track
DNOTE: {
url: 'doc-views/TR/Note/DNOTE?type=good',
diff --git a/test/data/specBase.js b/test/data/specBase.js
index 467c92599..910a33cc1 100644
--- a/test/data/specBase.js
+++ b/test/data/specBase.js
@@ -1,4 +1,4 @@
-exports.rules = {
+export const rules = {
headers: {
'div-head': [
{
@@ -70,104 +70,45 @@ exports.rules = {
errors: ['headers.details-summary.wrong-summary-text'],
},
],
- dl: [
- {
- data: 'wrongThisVersionHead',
- errors: [
- 'headers.dl.this-version',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- ],
- },
+ shortname: [
{
- data: 'wrongLatestVersionHead',
- errors: ['headers.dl.latest-version'],
+ data: 'diffThisAndLatestShortname',
+ errors: ['headers.shortname.this-latest-shortname'],
},
{
- data: 'wrongHistoryHead',
- errors: ['headers.dl.no-history'],
+ data: 'wrongHistorySyntax',
+ errors: ['headers.shortname.history-syntax'],
},
{
- data: 'rescinds',
+ data: 'diffThisAndRescindShortname',
config: {
rescinds: true,
},
- errors: ['headers.dl.rescinds'],
- },
- {
- data: 'noRescindsNeeded',
- warnings: ['headers.dl.rescinds-not-needed'],
- },
- {
- data: 'obsoletes',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.obsoletes'],
- },
- {
- data: 'noObsoletesNeeded',
- warnings: ['headers.dl.obsoletes-not-needed'],
- },
- {
- data: 'supersedes',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.supersedes'],
- },
- {
- data: 'noSupersedesNeeded',
- warnings: ['headers.dl.supersedes-not-needed'],
- },
- {
- data: 'wrongThisAndLatestOrder',
- errors: ['headers.dl.this-latest-order'],
+ errors: ['headers.shortname.this-rescinds-shortname'],
},
+ ],
+ dl: [
{
- data: 'wrongLatestAndRescindsOrder',
+ data: 'wrongRescindSyntax',
config: {
rescinds: true,
},
- errors: ['headers.dl.latest-rescinds-order'],
+ errors: ['headers.dl.rescinds-syntax'],
},
{
- data: 'wrongLatestAndObsoletesOrder',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.latest-obsoletes-order'],
+ data: 'wrongLatestSyntax',
+ errors: ['headers.dl.latest-syntax'],
},
{
- data: 'wrongLatestAndSupersedesOrder',
+ data: 'noRescindLinkExist',
config: {
- supersedes: true,
+ rescinds: true,
},
- errors: ['headers.dl.latest-supersedes-order'],
- },
- {
- data: 'noThisLinkExist',
- errors: [
- 'headers.dl.not-found',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- ],
- },
- {
- data: 'wrongThisDate',
- errors: ['headers.dl.this-date'],
- },
- {
- data: 'noDocDate',
- warnings: ['headers.dl.no-date'],
+ errors: ['headers.dl.not-found'],
},
{
- data: 'wrongThisSyntax',
- errors: [
- 'headers.dl.this-syntax',
- 'headers.dl.this-latest-shortname',
- 'headers.dl.history-syntax',
- ],
+ data: 'noHistoryLinkExist',
+ errors: ['headers.dl.not-found'],
},
{
data: 'noLatestLinkExist',
@@ -178,83 +119,54 @@ exports.rules = {
errors: ['headers.dl.link-diff'],
},
{
- data: 'wrongLatestSyntax',
- errors: ['headers.dl.latest-syntax'],
- },
- {
- data: 'diffThisAndLatestShortname',
- errors: ['headers.dl.this-latest-shortname'],
- },
- {
- data: 'noHistoryLinkExist',
- errors: ['headers.dl.not-found'],
+ data: 'wrongThisVersionHead',
+ errors: ['headers.dl.this-version'],
},
{
- data: 'wrongHistorySyntax',
- errors: ['headers.dl.history-syntax'],
+ data: 'wrongLatestVersionHead',
+ errors: ['headers.dl.latest-version'],
},
{
- data: 'noRescindLinkExist',
- config: {
- rescinds: true,
- },
- errors: ['headers.dl.not-found'],
+ data: 'wrongHistoryHead',
+ errors: ['headers.dl.no-history'],
},
{
- data: 'diffThisAndRescindShortname',
+ data: 'rescinds',
config: {
rescinds: true,
},
- errors: ['headers.dl.this-rescinds-shortname'],
+ errors: ['headers.dl.rescinds'],
},
{
- data: 'wrongRescindSyntax',
- config: {
- rescinds: true,
- },
- errors: ['headers.dl.rescinds-syntax'],
+ data: 'noRescindsNeeded',
+ warnings: ['headers.dl.rescinds-not-needed'],
},
{
- data: 'noObsoletesLinkExist',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.not-found'],
+ data: 'wrongThisAndLatestOrder',
+ errors: ['headers.dl.this-latest-order'],
},
{
- data: 'diffThisAndObsoletesShortname',
+ data: 'wrongLatestAndRescindsOrder',
config: {
- obsoletes: true,
+ rescinds: true,
},
- errors: ['headers.dl.this-obsoletes-shortname'],
+ errors: ['headers.dl.latest-rescinds-order'],
},
{
- data: 'wrongObsoletesSyntax',
- config: {
- obsoletes: true,
- },
- errors: ['headers.dl.obsoletes-syntax'],
+ data: 'noThisLinkExist',
+ errors: ['headers.dl.not-found'],
},
{
- data: 'noSupersedesLinkExist',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.not-found'],
+ data: 'wrongThisDate',
+ errors: ['headers.dl.this-date'],
},
{
- data: 'diffThisAndSupersedesShortname',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.this-supersedes-shortname'],
+ data: 'noDocDate',
+ warnings: ['headers.dl.no-date'],
},
{
- data: 'wrongSupersedesSyntax',
- config: {
- supersedes: true,
- },
- errors: ['headers.dl.supersedes-syntax'],
+ data: 'wrongThisSyntax',
+ errors: ['headers.dl.this-syntax'],
},
{
data: 'noEditorDraftLinkExist',
@@ -303,6 +215,9 @@ exports.rules = {
data: 'notLast',
errors: ['style.sheet.last'],
},
+ {
+ data: 'darkMode',
+ },
],
meta: [
{
diff --git a/test/doc-views/SUBM/MEM-SUBM.js b/test/doc-views/SUBM/MEM-SUBM.js
index afc374cd3..b1255cf9d 100644
--- a/test/doc-views/SUBM/MEM-SUBM.js
+++ b/test/doc-views/SUBM/MEM-SUBM.js
@@ -1,8 +1,5 @@
-/* eslint-disable import/no-dynamic-require */
-const { buildCommonViewData, data } = require('../specBase');
-
-const profile = 'MEM-SUBM';
-const { config } = require(`../../../lib/profiles/SUBM/${profile}`);
+import { config } from '../../../lib/profiles/SUBM/MEM-SUBM.js';
+import { buildCommonViewData, data } from '../specBase.js';
// Used in http://localhost:8001/doc-views/TR/Recommendation/MEM-SUBM?type=good
const good = {
@@ -16,11 +13,11 @@ const good = {
},
dl: {
...data.dl,
- topLevel: 'Submission',
+ topLevel: 'submissions',
latestVersion: {
...data.dl.latestVersion,
- docType: 'Submission',
- textDocType: 'Submission',
+ docType: 'submissions',
+ textDocType: 'submissions',
},
},
config: {
@@ -31,7 +28,7 @@ const good = {
},
};
-module.exports = {
+export default {
good,
...buildCommonViewData(good),
'memsub-copyright': {
@@ -46,7 +43,7 @@ module.exports = {
copyright: {
...good.copyright,
licenseHTML:
- 'W3C liability, trademark and permissive document license rules apply.',
+ 'W3C liability, trademark and permissive document license rules apply.',
},
},
},
@@ -66,7 +63,7 @@ module.exports = {
...good.sotd,
submission: {
...good.sotd.submission,
- processLink: 'https://fake-url/Consortium/Process',
+ processLink: 'https://fake-url/policies/process/',
},
},
},
@@ -97,7 +94,7 @@ module.exports = {
...good.sotd,
submission: {
...good.sotd.submission,
- submissionLink: 'https://fake-url/Submission',
+ submissionLink: 'https://fake-url/submissions',
},
},
},
@@ -108,7 +105,7 @@ module.exports = {
submission: {
...good.sotd.submission,
submissionMemberLink:
- 'https://fake-url/Submission/2020/02/',
+ 'https://fake-url/submissions/2020/02/',
},
},
},
@@ -119,7 +116,7 @@ module.exports = {
submission: {
...good.sotd.submission,
submissionComment:
- 'https://fake-url/Submission/2020/02/Comment/',
+ 'https://fake-url/submissions/2020/02/Comment/',
},
},
},
diff --git a/test/doc-views/TR/Note/DNOTE-Echidna.js b/test/doc-views/TR/Note/DNOTE-Echidna.js
index c23c8fdc4..ba1cabdab 100644
--- a/test/doc-views/TR/Note/DNOTE-Echidna.js
+++ b/test/doc-views/TR/Note/DNOTE-Echidna.js
@@ -1,13 +1,16 @@
-/* eslint-disable import/no-dynamic-require */
-const data = require('./DNOTE').good;
+import { config } from '../../../../lib/profiles/TR/Note/DNOTE-Echidna.js';
+import DNOTE from './DNOTE.js';
+import noteBase from './noteBase.js';
+
+const { good: data } = DNOTE;
const {
buildCommonViewData,
buildDraftStability,
buildTodaysDate,
-} = require('./noteBase');
+ buildDelivererChange,
+} = noteBase;
const profile = 'DNOTE-Echidna';
-const { config } = require(`../../../../lib/profiles/TR/Note/${profile}`);
const customData = {
config: {
...config,
@@ -21,7 +24,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
dl: {
@@ -46,4 +49,5 @@ module.exports = {
},
'draft-stability': buildDraftStability(good),
'todays-date': buildTodaysDate(good),
+ 'deliverer-change': buildDelivererChange(good),
};
diff --git a/test/doc-views/TR/Note/DNOTE.js b/test/doc-views/TR/Note/DNOTE.js
index f440a8c62..f24a7337f 100644
--- a/test/doc-views/TR/Note/DNOTE.js
+++ b/test/doc-views/TR/Note/DNOTE.js
@@ -1,12 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildDraftStability,
- data,
-} = require('./noteBase');
+import { config } from '../../../../lib/profiles/TR/Note/DNOTE.js';
+import noteBase from './noteBase.js';
+
+const { buildCommonViewData, buildDraftStability, data } = noteBase;
const profile = 'DNOTE';
-const { config } = require(`../../../../lib/profiles/TR/Note/${profile}`);
const customData = {
...data,
config: {
@@ -22,7 +19,7 @@ const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
stability: {
diff --git a/test/doc-views/TR/Note/NOTE-Echidna.js b/test/doc-views/TR/Note/NOTE-Echidna.js
index e7fea0dc4..63dbca4cd 100644
--- a/test/doc-views/TR/Note/NOTE-Echidna.js
+++ b/test/doc-views/TR/Note/NOTE-Echidna.js
@@ -1,9 +1,11 @@
-/* eslint-disable import/no-dynamic-require */
-const data = require('./NOTE').good;
-const { buildCommonViewData, buildTodaysDate } = require('./noteBase');
+import { config } from '../../../../lib/profiles/TR/Note/NOTE-Echidna.js';
+import NOTE from './NOTE.js';
+import noteBase from './noteBase.js';
+
+const { good: data } = NOTE;
+const { buildCommonViewData, buildTodaysDate, buildDelivererChange } = noteBase;
const profile = 'NOTE-Echidna';
-const { config } = require(`../../../../lib/profiles/TR/Note/${profile}`);
const customData = {
config: {
...config,
@@ -18,7 +20,7 @@ const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
dl: {
@@ -32,4 +34,5 @@ module.exports = {
},
},
'todays-date': buildTodaysDate(good),
+ 'deliverer-change': buildDelivererChange(good),
};
diff --git a/test/doc-views/TR/Note/NOTE.js b/test/doc-views/TR/Note/NOTE.js
index 9821cdbc4..664a9758c 100644
--- a/test/doc-views/TR/Note/NOTE.js
+++ b/test/doc-views/TR/Note/NOTE.js
@@ -1,8 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const { buildCommonViewData, data } = require('./noteBase');
+import { config } from '../../../../lib/profiles/TR/Note/NOTE.js';
+import noteBase from './noteBase.js';
+
+const { buildCommonViewData, data } = noteBase;
const profile = 'NOTE';
-const { config } = require(`../../../../lib/profiles/TR/Note/${profile}`);
const customData = {
config: {
...config,
@@ -17,7 +18,7 @@ const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
};
diff --git a/test/doc-views/TR/Note/STMT.js b/test/doc-views/TR/Note/STMT.js
index a3a2d8485..006d03798 100644
--- a/test/doc-views/TR/Note/STMT.js
+++ b/test/doc-views/TR/Note/STMT.js
@@ -1,8 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const { buildCommonViewData, data } = require('./noteBase');
+import { config } from '../../../../lib/profiles/TR/Note/STMT.js';
+import noteBase from './noteBase.js';
+
+const { buildCommonViewData, data } = noteBase;
const profile = 'STMT';
-const { config } = require(`../../../../lib/profiles/TR/Note/${profile}`);
const customData = {
config: {
...config,
@@ -16,7 +17,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
stability: {
diff --git a/test/doc-views/TR/Note/noteBase.js b/test/doc-views/TR/Note/noteBase.js
index b55e90819..f37cedde0 100644
--- a/test/doc-views/TR/Note/noteBase.js
+++ b/test/doc-views/TR/Note/noteBase.js
@@ -1,8 +1,6 @@
-const {
- buildCommonViewData: _buildCommonViewData,
- data,
- ...rest
-} = require('../TRBase');
+import * as TRBase from '../TRBase.js';
+
+const { buildCommonViewData: _buildCommonViewData, data, ...rest } = TRBase;
const buildCommonViewData = base => {
const common = _buildCommonViewData(base);
@@ -24,7 +22,24 @@ const buildCommonViewData = base => {
sotd: {
...base.sotd,
noteNotEndorsedText:
- 'are not endorsed by FAKE nor its Members',
+ 'Group Notes are not endorsed by FAKE nor its Members',
+ },
+ },
+ supportAnotherSW: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ noteNotEndorsedText:
+ 'This Group Note is endorsed by the Internationalization Working Group, but is not endorsed by W3C itself nor its Members',
+ },
+ },
+ supportAnotherSWJoint: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ noteNotEndorsedText:
+ 'This Group Note is endorsed by the Decentralized Identifier Working Group and the Technical Architecture Group, but is not endorsed by W3C itself nor its Members',
+ group: 'Decentralized Identifier Working Group and the Technical Architecture Group',
},
},
},
@@ -59,22 +74,6 @@ const buildCommonViewData = base => {
ppLink1: 'https://www.w3.org/Consortium/fake-pp',
},
},
- noPP2017: {
- ...base,
- config: {
- ...base.config,
- isEchidna: false,
- },
- header: {
- ...base.header,
- defaultDate: '04 November 2019',
- },
- sotd: {
- ...base.sotd,
- ppDate: '1 August 2017',
- ppLink1: 'https://www.w3.org/Consortium/fake-one',
- },
- },
noPP2020: {
...base,
sotd: {
@@ -86,7 +85,7 @@ const buildCommonViewData = base => {
};
};
-module.exports = {
+export default {
...rest,
buildCommonViewData,
data: {
diff --git a/test/doc-views/TR/Recommendation/CR-Echidna.js b/test/doc-views/TR/Recommendation/CR-Echidna.js
index 9a649fadc..6eb59c04c 100644
--- a/test/doc-views/TR/Recommendation/CR-Echidna.js
+++ b/test/doc-views/TR/Recommendation/CR-Echidna.js
@@ -1,16 +1,18 @@
-/* eslint-disable import/no-dynamic-require */
-const data = require('./CR').good;
+import { config } from '../../../../lib/profiles/TR/Recommendation/CR-Echidna.js';
+import CR from './CR.js';
+import recommendationBase from './recommendationBase.js';
+
const {
- buildCommonViewData,
buildCandidateReviewEnd,
- buildTodaysDate,
+ buildCommonViewData,
buildSecurityPrivacy,
-} = require('./recommendationBase');
+ buildTodaysDate,
+ buildDelivererChange,
+} = recommendationBase;
+
+const { good: data } = CR;
const profile = 'CR-Echidna';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -25,7 +27,7 @@ const good = { ...data, ...customData };
const common = buildCommonViewData(good);
const creCommon = buildCandidateReviewEnd(good);
-module.exports = {
+export default {
good,
...common,
'candidate-review-end': {
@@ -61,16 +63,7 @@ module.exports = {
},
},
},
- pp: {
- ...common.pp,
- noPP2017: {
- ...common.pp.noPP2017,
- config: {
- ...common.pp.noPP2017.config,
- isEchidna: false,
- },
- },
- },
'todays-date': buildTodaysDate(good),
'security-privacy': buildSecurityPrivacy(good),
+ 'deliverer-change': buildDelivererChange(good),
};
diff --git a/test/doc-views/TR/Recommendation/CR.js b/test/doc-views/TR/Recommendation/CR.js
index cccc88517..3d153edec 100644
--- a/test/doc-views/TR/Recommendation/CR.js
+++ b/test/doc-views/TR/Recommendation/CR.js
@@ -1,15 +1,15 @@
-/* eslint-disable import/no-dynamic-require */
+import { config } from '../../../../lib/profiles/TR/Recommendation/CR.js';
+import recommendationBase from './recommendationBase.js';
+
const {
- buildCommonViewData,
buildCandidateReviewEnd,
+ buildCommonViewData,
buildSecurityPrivacy,
data,
-} = require('./recommendationBase');
+} = recommendationBase;
const profile = 'CR';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
+
const customData = {
config: {
...config,
@@ -25,7 +25,7 @@ const customData = {
// Used in http://localhost:8001/doc-views/TR/Recommendation/CR?type=good
const good = { ...data, ...customData };
-module.exports = {
+export default {
good,
...buildCommonViewData(good),
'candidate-review-end': buildCandidateReviewEnd(good),
diff --git a/test/doc-views/TR/Recommendation/CRD-Echidna.js b/test/doc-views/TR/Recommendation/CRD-Echidna.js
index b2c4b8674..b774679c9 100644
--- a/test/doc-views/TR/Recommendation/CRD-Echidna.js
+++ b/test/doc-views/TR/Recommendation/CRD-Echidna.js
@@ -1,16 +1,17 @@
-/* eslint-disable import/no-dynamic-require */
-const data = require('./CRD').good;
+import { config } from '../../../../lib/profiles/TR/Recommendation/CRD-Echidna.js';
+import CRD from './CRD.js';
+import recommendationBase from './recommendationBase.js';
+
+const { good: data } = CRD;
const {
buildCommonViewData,
- buildTodaysDate,
buildDraftStability,
buildSecurityPrivacy,
-} = require('./recommendationBase');
+ buildTodaysDate,
+ buildDelivererChange,
+} = recommendationBase;
const profile = 'CRD-Echidna';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -25,7 +26,7 @@ const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
dl: {
@@ -38,21 +39,12 @@ module.exports = {
},
header: {
...good.header,
- defaultDate: '04 October 2022',
+ defaultDate: '04 October 2023',
},
},
},
'draft-stability': buildDraftStability(good),
- pp: {
- ...common.pp,
- noPP2017: {
- ...common.pp.noPP2017,
- config: {
- ...common.pp.noPP2017.config,
- isEchidna: false,
- },
- },
- },
'todays-date': buildTodaysDate(good),
'security-privacy': buildSecurityPrivacy(good),
+ 'deliverer-change': buildDelivererChange(good),
};
diff --git a/test/doc-views/TR/Recommendation/CRD.js b/test/doc-views/TR/Recommendation/CRD.js
index ddf23cf27..587da77fb 100644
--- a/test/doc-views/TR/Recommendation/CRD.js
+++ b/test/doc-views/TR/Recommendation/CRD.js
@@ -1,15 +1,10 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildSecurityPrivacy,
- buildDraftStability,
- data,
-} = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/CRD.js';
+import recommendationBase from './recommendationBase.js';
+
+const { buildCommonViewData, buildSecurityPrivacy, buildDraftStability, data } =
+ recommendationBase;
const profile = 'CRD';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -37,7 +32,7 @@ const good2 = {
},
};
-module.exports = {
+export default {
good,
good2,
...buildCommonViewData(good),
diff --git a/test/doc-views/TR/Recommendation/DISC.js b/test/doc-views/TR/Recommendation/DISC.js
index 3f09e385a..1d54fcb80 100644
--- a/test/doc-views/TR/Recommendation/DISC.js
+++ b/test/doc-views/TR/Recommendation/DISC.js
@@ -1,10 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const { buildCommonViewData, data } = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/DISC.js';
+import recommendationBase from './recommendationBase.js';
+
+const { buildCommonViewData, data } = recommendationBase;
const profile = 'DISC';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -19,7 +18,7 @@ const customData = {
const good = { ...data, ...customData };
const commonData = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...commonData,
stability: {
diff --git a/test/doc-views/TR/Recommendation/FPWD.js b/test/doc-views/TR/Recommendation/FPWD.js
index 182ab920a..d5626b2a4 100644
--- a/test/doc-views/TR/Recommendation/FPWD.js
+++ b/test/doc-views/TR/Recommendation/FPWD.js
@@ -1,14 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildDraftStability,
- data,
-} = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/FPWD.js';
+import recommendationBase from './recommendationBase.js';
+
+const { buildCommonViewData, buildDraftStability, data } = recommendationBase;
const profile = 'FPWD';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -18,12 +13,23 @@ const customData = {
maybeUpdated: true,
isFPWD: true,
},
+ // FPWD should have a unique shortname
+ dl: {
+ ...data.dl,
+ history: {
+ ...data.dl.history,
+ shortName: 'hr-time-new',
+ },
+ shortName: 'hr-time-new',
+ seriesShortName: 'hr-time-new',
+ rescindLink: 'https://www.w3.org/TR/2017/REC-hr-time-new-20170101/', // TODO: This shortname hr-time-new should not be constrained
+ },
};
// Used in http://localhost:8001/doc-views/TR/Recommendation/FPWD?type=good
const good = { ...data, ...customData };
-module.exports = {
+export default {
// good data that used to generate 100% right documents.
good,
...buildCommonViewData(good),
diff --git a/test/doc-views/TR/Recommendation/PR.js b/test/doc-views/TR/Recommendation/PR.js
index 0bb0aee40..03911b09c 100644
--- a/test/doc-views/TR/Recommendation/PR.js
+++ b/test/doc-views/TR/Recommendation/PR.js
@@ -1,15 +1,10 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildSecurityPrivacy,
- buildNewFeatures,
- data,
-} = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/PR.js';
+import recommendationBase from './recommendationBase.js';
+
+const { buildCommonViewData, buildNewFeatures, buildSecurityPrivacy, data } =
+ recommendationBase;
const profile = 'PR';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -25,7 +20,7 @@ const customData = {
// Used in http://localhost:8001/doc-views/TR/Recommendation/PR?type=good
const good = { ...data, ...customData };
-module.exports = {
+export default {
good,
...buildCommonViewData(good),
'security-privacy': buildSecurityPrivacy(good),
diff --git a/test/doc-views/TR/Recommendation/REC-RSCND.js b/test/doc-views/TR/Recommendation/REC-RSCND.js
index 55787c1dd..7c7c3d811 100644
--- a/test/doc-views/TR/Recommendation/REC-RSCND.js
+++ b/test/doc-views/TR/Recommendation/REC-RSCND.js
@@ -1,14 +1,11 @@
-/* eslint-disable import/no-dynamic-require */
-const data = require('./REC').good;
-const {
- buildCommonViewData,
- buildRecStability,
-} = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/REC-RSCND.js';
+import REC from './REC.js';
+import recommendationBase from './recommendationBase.js';
+
+const { good: data } = REC;
+const { buildCommonViewData, buildRecStability } = recommendationBase;
const profile = 'REC-RSCND';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...data.config,
@@ -23,7 +20,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
stability: buildRecStability(good),
diff --git a/test/doc-views/TR/Recommendation/REC.js b/test/doc-views/TR/Recommendation/REC.js
index 8eb0a5cd4..d0fe7bd7e 100644
--- a/test/doc-views/TR/Recommendation/REC.js
+++ b/test/doc-views/TR/Recommendation/REC.js
@@ -1,15 +1,11 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildNewFeatures,
- data,
- buildRecStability,
-} = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/REC.js';
+import recommendationBase from './recommendationBase.js';
+
+const { buildCommonViewData, buildNewFeatures, buildRecStability, data } =
+ recommendationBase;
const profile = 'REC';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
+const currentYear = new Date().getFullYear();
const customData = {
config: {
...config,
@@ -27,7 +23,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
stability: buildRecStability(good),
@@ -39,6 +35,66 @@ module.exports = {
needErrata: false,
},
},
+ recWithProposedSubChanges: {
+ ...good,
+ config: {
+ ...good.config,
+ needErrata: false,
+ },
+ sotd: {
+ ...good.sotd,
+ rec: {
+ ...good.sotd.rec,
+ showAddition: true,
+ addition: 'It includes proposed corrections.',
+ },
+ },
+ },
+ recWithProposedNewChanges: {
+ ...good,
+ config: {
+ ...good.config,
+ needErrata: false,
+ },
+ sotd: {
+ ...good.sotd,
+ rec: {
+ ...good.sotd.rec,
+ showProposedAdd: true,
+ },
+ },
+ },
+ recWithCandidateSubChanges: {
+ ...good,
+ config: {
+ ...good.config,
+ needErrata: false,
+ },
+ sotd: {
+ ...good.sotd,
+ rec: {
+ ...good.sotd.rec,
+ showAddition: true,
+ addition: 'It includes candidate corrections.',
+ },
+ },
+ },
+ recWithCandidateNewChanges: {
+ ...good,
+ config: {
+ ...good.config,
+ needErrata: false,
+ },
+ sotd: {
+ ...good.sotd,
+ rec: {
+ ...good.sotd.rec,
+ showAddition: true,
+ addition:
+ 'It includes candidate additions, introducing new features since the previous Recommendation.',
+ },
+ },
+ },
},
deployment: {
noDeployment: {
@@ -71,8 +127,7 @@ module.exports = {
...good.sotd.rec,
showProposedAdd: true,
},
- processHTML:
- '2 November 2023, 3 November 2023 W3C Process Document',
+ processHTML: `2 November ${currentYear}, 3 November ${currentYear} W3C Process Document`,
},
},
notFound: {
@@ -84,7 +139,7 @@ module.exports = {
showProposedAdd: true,
},
processHTML:
- '2 November 2021 W3C Process Document',
+ '03 November 2023 W3C Process Document',
},
},
},
diff --git a/test/doc-views/TR/Recommendation/WD-Echidna.js b/test/doc-views/TR/Recommendation/WD-Echidna.js
index 993c2d44b..4dca5c553 100644
--- a/test/doc-views/TR/Recommendation/WD-Echidna.js
+++ b/test/doc-views/TR/Recommendation/WD-Echidna.js
@@ -1,16 +1,17 @@
-/* eslint-disable import/no-dynamic-require */
-const data = require('./WD').good;
+import { config } from '../../../../lib/profiles/TR/Recommendation/WD-Echidna.js';
+import recommendationBase from './recommendationBase.js';
+import WD from './WD.js';
+
+const { good: data } = WD;
const {
buildCommonViewData,
buildDraftStability,
buildSecurityPrivacy,
buildTodaysDate,
-} = require('./recommendationBase');
+ buildDelivererChange,
+} = recommendationBase;
const profile = 'WD-Echidna';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -24,7 +25,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
'draft-stability': buildDraftStability(good),
@@ -39,19 +40,10 @@ module.exports = {
},
header: {
...good.header,
- defaultDate: '04 October 2021',
- },
- },
- },
- pp: {
- ...common.pp,
- noPP2017: {
- ...common.pp.noPP2017,
- config: {
- ...common.pp.noPP2017.config,
- isEchidna: false,
+ defaultDate: '04 October 2023',
},
},
},
'todays-date': buildTodaysDate(good),
+ 'deliverer-change': buildDelivererChange(good),
};
diff --git a/test/doc-views/TR/Recommendation/WD.js b/test/doc-views/TR/Recommendation/WD.js
index d2b56cecd..31bc2a4c7 100644
--- a/test/doc-views/TR/Recommendation/WD.js
+++ b/test/doc-views/TR/Recommendation/WD.js
@@ -1,15 +1,10 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildDraftStability,
- buildSecurityPrivacy,
- data,
-} = require('./recommendationBase');
+import { config } from '../../../../lib/profiles/TR/Recommendation/WD.js';
+import recommendationBase from './recommendationBase.js';
+
+const { buildCommonViewData, buildDraftStability, buildSecurityPrivacy, data } =
+ recommendationBase;
const profile = 'WD';
-const {
- config,
-} = require(`../../../../lib/profiles/TR/Recommendation/${profile}`);
const customData = {
config: {
...config,
@@ -23,9 +18,11 @@ const customData = {
// Used in http://localhost:8001/doc-views/TR/Recommendation/WD?type=good
const good = { ...data, ...customData };
-module.exports = {
+const commonData = buildCommonViewData(good);
+
+export default {
good,
- ...buildCommonViewData(good),
+ ...commonData,
'draft-stability': buildDraftStability(good),
'security-privacy': buildSecurityPrivacy(good),
};
diff --git a/test/doc-views/TR/Recommendation/recommendationBase.js b/test/doc-views/TR/Recommendation/recommendationBase.js
index a80ee696a..88cdb26eb 100644
--- a/test/doc-views/TR/Recommendation/recommendationBase.js
+++ b/test/doc-views/TR/Recommendation/recommendationBase.js
@@ -1,4 +1,6 @@
-const { data, ...rest } = require('../TRBase');
+import * as TRBase from '../TRBase.js';
+
+const { data, ...rest } = TRBase;
const buildSecurityPrivacy = base => ({
noSecurityPrivacy: {
@@ -33,12 +35,12 @@ const buildRecStability = base => ({
sotd: {
...base.sotd,
licensingLink:
- 'https://www.w3.org/Consortium/Patent-Policy/#sec-Requirements-fake',
+ 'https://www.w3.org/policies/patent-policy/#sec-Requirements-fake',
},
},
});
-module.exports = {
+export default {
...rest,
buildSecurityPrivacy,
buildRecStability,
diff --git a/test/doc-views/TR/Registry/CRY.js b/test/doc-views/TR/Registry/CRY.js
index 44b114952..8b1356868 100644
--- a/test/doc-views/TR/Registry/CRY.js
+++ b/test/doc-views/TR/Registry/CRY.js
@@ -1,8 +1,10 @@
-/* eslint-disable import/no-dynamic-require */
-const { buildCommonViewData, data } = require('./registryBase');
+import { config } from '../../../../lib/profiles/TR/Registry/CRY.js';
+import registryBase from './registryBase.js';
+
+const { buildCommonViewData, data } = registryBase;
+const currentYear = new Date().getFullYear();
const profile = 'CRY';
-const { config } = require(`../../../../lib/profiles/TR/Registry/${profile}`);
const customData = {
config: {
...config,
@@ -19,7 +21,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
'candidate-review-end': {
@@ -27,15 +29,14 @@ module.exports = {
...good,
header: {
...good.header,
- defaultDate: '04 November 2024',
+ defaultDate: `04 November ${currentYear}`,
},
},
multipleDateFound: {
...good,
sotd: {
...good.sotd,
- processHTML:
- '04 October 2022. 05 October 2022.W3C Process Document',
+ processHTML: `04 October ${currentYear}. 05 October ${currentYear}.W3C Process Document`,
},
},
invalidDate: {
diff --git a/test/doc-views/TR/Registry/CRYD.js b/test/doc-views/TR/Registry/CRYD.js
index d09a9f434..93dea1d2d 100644
--- a/test/doc-views/TR/Registry/CRYD.js
+++ b/test/doc-views/TR/Registry/CRYD.js
@@ -1,12 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildDraftStability,
- data,
-} = require('./registryBase');
+import { config } from '../../../../lib/profiles/TR/Registry/CRYD.js';
+import registryBase from './registryBase.js';
+
+const { buildCommonViewData, buildDraftStability, data } = registryBase;
const profile = 'CRYD';
-const { config } = require(`../../../../lib/profiles/TR/Registry/${profile}`);
const customData = {
config: {
...config,
@@ -23,7 +20,7 @@ const customData = {
const good = { ...data, ...customData };
// Used in http://localhost:8001/doc-views/TR/Recommendation/CRYD?type=good2
-exports.good2 = {
+export const good2 = {
config: {
...good.config,
},
@@ -36,7 +33,7 @@ exports.good2 = {
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
'draft-stability': buildDraftStability(good),
diff --git a/test/doc-views/TR/Registry/DRY.js b/test/doc-views/TR/Registry/DRY.js
index 243ab307b..5270271ad 100644
--- a/test/doc-views/TR/Registry/DRY.js
+++ b/test/doc-views/TR/Registry/DRY.js
@@ -1,12 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const {
- buildCommonViewData,
- buildDraftStability,
- data,
-} = require('./registryBase');
+import { config } from '../../../../lib/profiles/TR/Registry/DRY.js';
+import registryBase from './registryBase.js';
+
+const { buildCommonViewData, buildDraftStability, data } = registryBase;
const profile = 'DRY';
-const { config } = require(`../../../../lib/profiles/TR/Registry/${profile}`);
const customData = {
config: {
...config,
@@ -23,7 +20,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
'draft-stability': buildDraftStability(good),
diff --git a/test/doc-views/TR/Registry/RY.js b/test/doc-views/TR/Registry/RY.js
index d4e60f04e..528e1144f 100644
--- a/test/doc-views/TR/Registry/RY.js
+++ b/test/doc-views/TR/Registry/RY.js
@@ -1,8 +1,9 @@
-/* eslint-disable import/no-dynamic-require */
-const { buildCommonViewData, data } = require('./registryBase');
+import { config } from '../../../../lib/profiles/TR/Registry/RY.js';
+import registryBase from './registryBase.js';
+
+const { buildCommonViewData, data } = registryBase;
const profile = 'RY';
-const { config } = require(`../../../../lib/profiles/TR/Registry/${profile}`);
const customData = {
config: {
...config,
@@ -17,7 +18,7 @@ const customData = {
const good = { ...data, ...customData };
const common = buildCommonViewData(good);
-module.exports = {
+export default {
good,
...common,
stability: {
diff --git a/test/doc-views/TR/Registry/registryBase.js b/test/doc-views/TR/Registry/registryBase.js
index df9c5fd41..c81fac165 100644
--- a/test/doc-views/TR/Registry/registryBase.js
+++ b/test/doc-views/TR/Registry/registryBase.js
@@ -1,9 +1,6 @@
-const {
- buildCommonViewData: _buildCommonViewData,
- data,
- ...rest
-} = require('../TRBase');
+import * as TRBase from '../TRBase.js';
+const { buildCommonViewData: _buildCommonViewData, data, ...rest } = TRBase;
const buildCommonViewData = base => {
const common = _buildCommonViewData(base);
return {
@@ -24,18 +21,6 @@ const buildCommonViewData = base => {
},
pp: {
...common.pp,
- noPP2017: {
- ...base,
- header: {
- ...base.header,
- defaultDate: '04 November 2019',
- },
- sotd: {
- ...base.sotd,
- ppDate: '1 August 2017',
- ppLink1: 'https://www.w3.org/Consortium/fake-one',
- },
- },
noPP2020: {
...base,
sotd: {
@@ -52,7 +37,7 @@ const buildCommonViewData = base => {
};
};
-module.exports = {
+export default {
...rest,
buildCommonViewData,
data: {
diff --git a/test/doc-views/TR/TRBase.js b/test/doc-views/TR/TRBase.js
index 9f643b072..26bc5d276 100644
--- a/test/doc-views/TR/TRBase.js
+++ b/test/doc-views/TR/TRBase.js
@@ -1,11 +1,13 @@
-const {
- buildCommonViewData: _buildCommonViewData,
+import {
+ buildCommonViewData as _buildCommonViewData,
data,
-} = require('../specBase');
+} from '../specBase.js';
-exports.data = data;
+export { data };
-exports.buildCommonViewData = base => {
+const currentYear = new Date().getFullYear();
+
+export function buildCommonViewData(base) {
const common = _buildCommonViewData(base);
return {
...common,
@@ -30,10 +32,71 @@ exports.buildCommonViewData = base => {
copyright: {
noCopyright: {
...base,
+ header: {
+ ...base.header,
+ showDefaultDate: true,
+ },
copyright: {
+ ...base.copyright,
show: false,
},
},
+ noMatchedCopyright: {
+ ...base,
+ header: {
+ ...base.header,
+ showDefaultDate: true,
+ },
+ copyright: {
+ ...base.copyright,
+ startText: 'Fake Copyright',
+ },
+ },
+ wrongCopyrightLink: {
+ ...base,
+ header: {
+ ...base.header,
+ showDefaultDate: true,
+ },
+ copyright: {
+ ...base.copyright,
+ W3CLink: 'https://www.w.org/',
+ },
+ },
+ copyrightExceptionFound: {
+ ...base,
+ header: {
+ ...base.header,
+ showDefaultDate: true,
+ },
+ dl: {
+ ...base.dl,
+ shortName: 'epub-33',
+ seriesShortName: 'epub-33',
+ },
+ copyright: {
+ ...base.copyright,
+ showDefault: false,
+ exceptionHtml: `Copyright © 1999-${currentYear} International Digital Publishing Forum and World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.`,
+ },
+ },
+ copyrightExceptionNotFound: {
+ ...base,
+ header: {
+ ...base.header,
+ showDefaultDate: true,
+ },
+ dl: {
+ ...base.dl,
+ shortName: 'epub-33',
+ seriesShortName: 'epub-33',
+ },
+ copyright: {
+ ...base.copyright,
+ showDefault: false,
+ exceptionHtml: `Copyright Exception Not Found © 1999-${currentYear} International Digital Publishing Forum and World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.`,
+ },
+ },
},
'process-document': {
noProcess: {
@@ -48,7 +111,7 @@ exports.buildCommonViewData = base => {
sotd: {
...base.sotd,
processLink:
- 'https://www.w3.org/wrong/link/2021/Process-20211102/',
+ 'https://www.w3.org/wrong/link/2023/Process-20231103/',
},
},
duplicatedProcess: {
@@ -88,7 +151,7 @@ exports.buildCommonViewData = base => {
sotd: {
...base.sotd,
trackLink:
- 'https://www.w3.org/2021/Process-20211102/#wrong-url',
+ 'https://www.w3.org/policies/process/20231103/#wrong-url',
},
},
noHomepageLink: {
@@ -138,23 +201,11 @@ exports.buildCommonViewData = base => {
extra1: 'extra text',
},
},
- noPP2017: {
- ...base,
- header: {
- ...base.header,
- defaultDate: '04 November 2019',
- },
- sotd: {
- ...base.sotd,
- ppHTML: '1 August 2017 W3C Patent Policy',
- ppLink: 'https://www.w3.org/Consortium/Patent-Policy/fake',
- },
- },
noPP2020: {
...base,
sotd: {
...base.sotd,
- ppLink: 'https://www.w3.org/Consortium/Patent-Policy/fake',
+ ppLink: 'https://www.w3.org/policies/patent-policy/fake',
},
},
noDisclosures: {
@@ -169,7 +220,7 @@ exports.buildCommonViewData = base => {
sotd: {
...base.sotd,
essentialLink:
- 'https://www.w3.org/Consortium/Patent-Policy/#def-essential-fake',
+ 'https://www.w3.org/policies/patent-policy/#def-essential-fake',
},
},
noSection6: {
@@ -177,7 +228,7 @@ exports.buildCommonViewData = base => {
sotd: {
...base.sotd,
disclosureLink:
- 'https://www.w3.org/Consortium/Patent-Policy/#sec-Disclosure-fake',
+ 'https://www.w3.org/policies/patent-policy/#sec-Disclosure-fake',
},
},
jointPublication: {
@@ -189,92 +240,116 @@ exports.buildCommonViewData = base => {
},
},
};
-};
+}
-exports.buildCandidateReviewEnd = base => ({
- noDateFound: {
- ...base,
- sotd: {
- ...base.sotd,
- defaultCRDate: '',
+export function buildCandidateReviewEnd(base) {
+ return {
+ noDateFound: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ defaultCRDate: '',
+ },
},
- },
- multipleDateFound: {
- ...base,
- sotd: {
- ...base.sotd,
- defaultCRDate: '04 October 2022. 05 October 2022.',
+ multipleDateFound: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ defaultCRDate: `04 November ${currentYear}. 05 November ${currentYear}.`,
+ },
},
- },
- invalidDate: {
- ...base,
- sotd: {
- ...base.sotd,
- defaultCRDate: '02 December 2023',
+ invalidDate: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ defaultCRDate: '02 October 2030',
+ },
},
- },
-});
+ };
+}
-exports.buildTodaysDate = base => ({
- noDateDetected: {
- ...base,
- config: {
- ...base.config,
- isEchidna: false,
- },
- header: {
- ...base.header,
- defaultDate: '',
+export function buildTodaysDate(base) {
+ return {
+ noDateDetected: {
+ ...base,
+ config: {
+ ...base.config,
+ isEchidna: false,
+ },
+ header: {
+ ...base.header,
+ defaultDate: '',
+ },
},
- },
- wrongDate: {
- ...base,
- config: {
- ...base.config,
- isEchidna: false,
+ wrongDate: {
+ ...base,
+ config: {
+ ...base.config,
+ isEchidna: false,
+ },
+ header: {
+ ...base.header,
+ defaultDate: '04 November 2019',
+ },
},
- header: {
- ...base.header,
- defaultDate: '04 November 2019',
+ };
+}
+
+export function buildDelivererChange(base) {
+ return {
+ delivererChanged: {
+ ...base,
+ config: {
+ ...base.config,
+ isEchidna: true,
+ },
+ header: {
+ ...base.header,
+ defaultDate: '',
+ },
},
- },
-});
+ };
+}
-exports.buildDraftStability = base => ({
- noDraftEither: {
- ...base,
- sotd: {
- ...base.sotd,
- draftText:
- 'This is a other document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.',
+export function buildDraftStability(base) {
+ return {
+ noDraftEither: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ draftText:
+ 'This is a other document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.',
+ },
},
- },
- noDraft: {
- ...base,
- sotd: {
- ...base.sotd,
- draftText:
- 'This is a other document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.',
+ noDraft: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ draftText:
+ 'This is a other document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.',
+ },
},
- },
-});
+ };
+}
-exports.buildNewFeatures = base => ({
- noWarning: {
- ...base,
- },
- noLink: {
- ...base,
- sotd: {
- ...base.sotd,
- newFeatures: {
- show: true,
- text: `Future updates to this ${
- base.config.status === 'PR'
- ? 'specification'
- : 'Recommendation'
- } may incorporate new features.`,
+export function buildNewFeatures(base) {
+ return {
+ noWarning: {
+ ...base,
+ },
+ noLink: {
+ ...base,
+ sotd: {
+ ...base.sotd,
+ newFeatures: {
+ show: true,
+ text: `Future updates to this ${
+ base.config.status === 'PR'
+ ? 'specification'
+ : 'Recommendation'
+ } may incorporate new features.`,
+ },
},
},
- },
-});
+ };
+}
diff --git a/test/doc-views/layout/spec.handlebars b/test/doc-views/layout/spec.handlebars
index 23996ad96..54016f978 100644
--- a/test/doc-views/layout/spec.handlebars
+++ b/test/doc-views/layout/spec.handlebars
@@ -17,6 +17,9 @@
{{#if head.styleSheet.showAnother}}
{{/if}}
+ {{#if head.styleSheet.dark}}
+
+ {{/if}}
{{#if head.title.show}}
High Resolution Time
High Resolution Time
High Resolution Time
@@ -84,7 +84,7 @@ Status of This Document
Status of This Document
Publication as a Candidate Recommendation does not imply endorsement by
W3C and its Members.
A Candidate Recommendation Snapshot has received wide review, is intended to
+ href="https://www.w3.org/policies/process/20231103/#dfn-wide-review">wide review, is intended to
gather implementation experience, and has commitments from Working Group members to royalty-free licensing for implementations.
+ href="https://www.w3.org/policies/patent-policy/#sec-Requirements">royalty-free licensing for implementations.
(@@choose one of the 2 following paragraphs. Note that pubrules only checks for the date anyway.)
Foo Time
Foo Time
Foo Time
Status of This Document
- This document was published by the Web Performance Working Group as a Discontinued Draft using the Recommendation track. + This document was published by the Web Performance Working Group as a Discontinued Draft using the Recommendation track.
Publication as a Discontinued Draft implies that this document is no longer intended to advance or to be maintained. It is inappropriate to cite this document as other than abandoned work.
- This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy. + This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
- This document is governed by the 2 November 2021 W3C Process Document. + This document is governed by the 03 November 2023 W3C Process Document.