single-file-core 1.5.92 → 1.5.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/vendor.yml +14 -0
- package/core/helper.js +15 -2
- package/core/lib/processor-helper.js +1 -0
- package/css-tree-build/README.md +39 -0
- package/css-tree-build/build.js +67 -0
- package/css-tree-build/package-lock.json +511 -0
- package/css-tree-build/package.json +13 -0
- package/package.json +1 -1
- package/processors/compression/compression.js +122 -16
- package/vendor/css-tree.js +14 -13
|
@@ -23,3 +23,17 @@ jobs:
|
|
|
23
23
|
working-directory: zip-build
|
|
24
24
|
# the checked-in files in vendor/zip must be exactly what the sources in zip-build produce
|
|
25
25
|
- run: git diff --exit-code vendor/zip
|
|
26
|
+
rebuild-css-tree:
|
|
27
|
+
name: 'Rebuild vendor/css-tree.js'
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v5
|
|
31
|
+
- uses: actions/setup-node@v5
|
|
32
|
+
with:
|
|
33
|
+
node-version: '24'
|
|
34
|
+
- run: npm ci
|
|
35
|
+
working-directory: css-tree-build
|
|
36
|
+
- run: npm run build
|
|
37
|
+
working-directory: css-tree-build
|
|
38
|
+
# the checked-in file must be exactly what the sources in css-tree-build produce
|
|
39
|
+
- run: git diff --exit-code vendor/css-tree.js
|
package/core/helper.js
CHANGED
|
@@ -78,6 +78,7 @@ const EMPTY_RESOURCE = "data:,";
|
|
|
78
78
|
const DEFAULT_REPLACED_CHARACTERS = ["~", "+", "?", "%", "*", ":", "|", "\"", "<", ">", "\\\\", "\x00-\x1f", "\x7F"];
|
|
79
79
|
const DEFAULT_REPLACEMENT_CHARACTER = "_";
|
|
80
80
|
const DEFAULT_REPLACEMENT_CHARACTERS = ["~", "+", "?", "%", "*", ":", "|", """, "<", ">", "\"];
|
|
81
|
+
const CHARACTER_CLASS_SPECIAL_CHARACTERS = ["[", "]", "^", "-", "\\"];
|
|
81
82
|
const NESTING_TRACK_ID_ATTRIBUTE_NAME = "data-sf-nesting-track-id";
|
|
82
83
|
const addEventListener = (type, listener, options) => globalThis.addEventListener(type, listener, options);
|
|
83
84
|
// eslint-disable-next-line no-unused-vars
|
|
@@ -831,8 +832,16 @@ function getComputedStyle(win, element, pseudoElement) {
|
|
|
831
832
|
}
|
|
832
833
|
|
|
833
834
|
function getValidFilename(filename, replacedCharacters = DEFAULT_REPLACED_CHARACTERS, replacementCharacter = DEFAULT_REPLACEMENT_CHARACTER, replacementCharacters = DEFAULT_REPLACEMENT_CHARACTERS) {
|
|
834
|
-
replacementCharacters.forEach((
|
|
835
|
-
|
|
835
|
+
replacementCharacters.forEach((indexReplacementCharacter, index) => {
|
|
836
|
+
if (replacedCharacters[index] !== undefined && indexReplacementCharacter != replacedCharacters[index]) {
|
|
837
|
+
filename = filename.replace(new RegExp("[" + getCharacterClassContent(replacedCharacters[index]) + "]+", "g"), indexReplacementCharacter);
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
replacedCharacters.forEach((replacedCharacter, index) => {
|
|
841
|
+
if (replacementCharacters[index] === undefined) {
|
|
842
|
+
filename = filename.replace(new RegExp("[" + getCharacterClassContent(replacedCharacter) + "]+", "g"), replacementCharacter);
|
|
843
|
+
}
|
|
844
|
+
});
|
|
836
845
|
filename = filename
|
|
837
846
|
.replace(/\.\.\//g, "")
|
|
838
847
|
.replace(/^\/+/, "")
|
|
@@ -844,6 +853,10 @@ function getValidFilename(filename, replacedCharacters = DEFAULT_REPLACED_CHARAC
|
|
|
844
853
|
return filename;
|
|
845
854
|
}
|
|
846
855
|
|
|
856
|
+
function getCharacterClassContent(characters) {
|
|
857
|
+
return characters.length == 1 && CHARACTER_CLASS_SPECIAL_CHARACTERS.includes(characters) ? "\\" + characters : characters;
|
|
858
|
+
}
|
|
859
|
+
|
|
847
860
|
function parseDocContent(content, baseURI) {
|
|
848
861
|
const doc = (new DOMParser()).parseFromString(content, "text/html");
|
|
849
862
|
if (!doc.head) {
|
|
@@ -116,6 +116,7 @@ function getProcessorHelperClass(utilInstance) {
|
|
|
116
116
|
if (key.urlNode) {
|
|
117
117
|
const name = "stylesheet_" + resources.stylesheets.size + ".css";
|
|
118
118
|
if (!isDataURL(stylesheetInfo.url) && options.saveOriginalURLs) {
|
|
119
|
+
key.urlNode.type = "Url";
|
|
119
120
|
key.urlNode.value = "-sf-url-original(" + JSON.stringify(stylesheetInfo.url) + ") " + name;
|
|
120
121
|
} else {
|
|
121
122
|
key.urlNode.value = name;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Rebuilding `vendor/css-tree.js`
|
|
2
|
+
|
|
3
|
+
[`../vendor/css-tree.js`](../vendor/css-tree.js) is a custom build of
|
|
4
|
+
[css-tree](https://www.npmjs.com/package/css-tree) with one patch applied to
|
|
5
|
+
`lib/tokenizer/TokenStream.js`: the token offset field is widened from 24 to
|
|
6
|
+
27 bits (`OFFSET_MASK`/`TYPE_SHIFT`, with unsigned shifts for the token type).
|
|
7
|
+
Upstream css-tree packs each token as `type << 24 | offset`, so any stylesheet
|
|
8
|
+
larger than 16MB (2^24 bytes) silently corrupts the token stream and parsing
|
|
9
|
+
never terminates. Real pages ship such stylesheets (see
|
|
10
|
+
https://github.com/gildas-lormeau/SingleFile/issues/1962, a 23.5MB stylesheet
|
|
11
|
+
on brookings.edu). With 27 bits the limit becomes 128MB.
|
|
12
|
+
|
|
13
|
+
This directory rebuilds the file deterministically. All dependencies are
|
|
14
|
+
pinned to exact versions by `package.json` and `package-lock.json`:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
cd css-tree-build
|
|
18
|
+
npm ci
|
|
19
|
+
npm run build
|
|
20
|
+
git diff --exit-code ../vendor/css-tree.js
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
An empty diff means the checked-in file matches what the sources produce. The
|
|
24
|
+
GitHub Actions workflow `.github/workflows/vendor.yml` runs the same steps on
|
|
25
|
+
every push.
|
|
26
|
+
|
|
27
|
+
The patch is applied to the readable npm sources by an esbuild plugin in
|
|
28
|
+
`build.js`, guarded by exact occurrence counts: if a css-tree update changes
|
|
29
|
+
`TokenStream.js`, the build fails loudly instead of silently dropping the
|
|
30
|
+
patch.
|
|
31
|
+
|
|
32
|
+
## Updating css-tree
|
|
33
|
+
|
|
34
|
+
1. Bump `css-tree` in `package.json` and run `npm install`.
|
|
35
|
+
2. Run `npm run build`. If the build fails because `TokenStream.js` changed,
|
|
36
|
+
review the patch in `build.js` against the new sources (or drop it once
|
|
37
|
+
upstream stores offsets wider than 24 bits).
|
|
38
|
+
3. Commit the regenerated `../vendor/css-tree.js` together with the changes in
|
|
39
|
+
this directory.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { build } from "esbuild";
|
|
4
|
+
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const packagePath = require.resolve("css-tree/package.json");
|
|
7
|
+
const tokenStreamPath = packagePath.replace(/package\.json$/, "lib/tokenizer/TokenStream.js");
|
|
8
|
+
const licensePath = packagePath.replace(/package\.json$/, "LICENSE");
|
|
9
|
+
const { version } = JSON.parse(readFileSync(packagePath));
|
|
10
|
+
|
|
11
|
+
const PATCHES = [
|
|
12
|
+
["const OFFSET_MASK = 0x00FFFFFF;", "const OFFSET_MASK = 0x07FFFFFF;", 1],
|
|
13
|
+
["const TYPE_SHIFT = 24;", "const TYPE_SHIFT = 27;", 1],
|
|
14
|
+
[">> TYPE_SHIFT", ">>> TYPE_SHIFT", 8]
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
function patchTokenStream(source) {
|
|
18
|
+
for (const [pattern, replacement, expectedCount] of PATCHES) {
|
|
19
|
+
const count = source.split(pattern).length - 1;
|
|
20
|
+
if (count != expectedCount) {
|
|
21
|
+
throw new Error(`css-tree update changed TokenStream.js: found ${count} occurrence(s) of ${JSON.stringify(pattern)}, expected ${expectedCount} — review the 16MB token-offset patch`);
|
|
22
|
+
}
|
|
23
|
+
source = source.replaceAll(pattern, replacement);
|
|
24
|
+
}
|
|
25
|
+
return source;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const patchPlugin = {
|
|
29
|
+
name: "patch-token-stream",
|
|
30
|
+
setup(build) {
|
|
31
|
+
let patched = false;
|
|
32
|
+
build.onLoad({ filter: /[/\\]css-tree[/\\].*[/\\]TokenStream\.js$/ }, args => {
|
|
33
|
+
patched = true;
|
|
34
|
+
return { contents: patchTokenStream(readFileSync(args.path, "utf8")), loader: "js" };
|
|
35
|
+
});
|
|
36
|
+
build.onEnd(() => {
|
|
37
|
+
if (!patched) {
|
|
38
|
+
throw new Error("TokenStream.js was not loaded — the 16MB token-offset patch was not applied");
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const banner = [
|
|
45
|
+
`// css-tree ${version} (https://github.com/csstree/csstree), bundled by css-tree-build/build.js`,
|
|
46
|
+
"// with the token offset field widened from 24 to 27 bits so stylesheets larger",
|
|
47
|
+
"// than 16MB do not corrupt the token stream (parsing never terminated on them)",
|
|
48
|
+
"",
|
|
49
|
+
"/*",
|
|
50
|
+
readFileSync(licensePath, "utf8").trim().split("\n").map(line => (" * " + line).trimEnd()).join("\n"),
|
|
51
|
+
" */"
|
|
52
|
+
].join("\n");
|
|
53
|
+
|
|
54
|
+
await build({
|
|
55
|
+
stdin: {
|
|
56
|
+
contents: "export * from \"css-tree\";",
|
|
57
|
+
resolveDir: import.meta.dirname
|
|
58
|
+
},
|
|
59
|
+
bundle: true,
|
|
60
|
+
minify: true,
|
|
61
|
+
format: "esm",
|
|
62
|
+
platform: "browser",
|
|
63
|
+
legalComments: "none",
|
|
64
|
+
banner: { js: banner },
|
|
65
|
+
plugins: [patchPlugin],
|
|
66
|
+
outfile: "../vendor/css-tree.js"
|
|
67
|
+
});
|
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "single-file-core-css-tree-build",
|
|
3
|
+
"lockfileVersion": 3,
|
|
4
|
+
"requires": true,
|
|
5
|
+
"packages": {
|
|
6
|
+
"": {
|
|
7
|
+
"name": "single-file-core-css-tree-build",
|
|
8
|
+
"devDependencies": {
|
|
9
|
+
"css-tree": "3.1.0",
|
|
10
|
+
"esbuild": "0.25.4"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"node_modules/@esbuild/aix-ppc64": {
|
|
14
|
+
"version": "0.25.4",
|
|
15
|
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz",
|
|
16
|
+
"integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==",
|
|
17
|
+
"cpu": [
|
|
18
|
+
"ppc64"
|
|
19
|
+
],
|
|
20
|
+
"dev": true,
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"optional": true,
|
|
23
|
+
"os": [
|
|
24
|
+
"aix"
|
|
25
|
+
],
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=18"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"node_modules/@esbuild/android-arm": {
|
|
31
|
+
"version": "0.25.4",
|
|
32
|
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz",
|
|
33
|
+
"integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==",
|
|
34
|
+
"cpu": [
|
|
35
|
+
"arm"
|
|
36
|
+
],
|
|
37
|
+
"dev": true,
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"optional": true,
|
|
40
|
+
"os": [
|
|
41
|
+
"android"
|
|
42
|
+
],
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"node_modules/@esbuild/android-arm64": {
|
|
48
|
+
"version": "0.25.4",
|
|
49
|
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz",
|
|
50
|
+
"integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==",
|
|
51
|
+
"cpu": [
|
|
52
|
+
"arm64"
|
|
53
|
+
],
|
|
54
|
+
"dev": true,
|
|
55
|
+
"license": "MIT",
|
|
56
|
+
"optional": true,
|
|
57
|
+
"os": [
|
|
58
|
+
"android"
|
|
59
|
+
],
|
|
60
|
+
"engines": {
|
|
61
|
+
"node": ">=18"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"node_modules/@esbuild/android-x64": {
|
|
65
|
+
"version": "0.25.4",
|
|
66
|
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz",
|
|
67
|
+
"integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==",
|
|
68
|
+
"cpu": [
|
|
69
|
+
"x64"
|
|
70
|
+
],
|
|
71
|
+
"dev": true,
|
|
72
|
+
"license": "MIT",
|
|
73
|
+
"optional": true,
|
|
74
|
+
"os": [
|
|
75
|
+
"android"
|
|
76
|
+
],
|
|
77
|
+
"engines": {
|
|
78
|
+
"node": ">=18"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"node_modules/@esbuild/darwin-arm64": {
|
|
82
|
+
"version": "0.25.4",
|
|
83
|
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz",
|
|
84
|
+
"integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==",
|
|
85
|
+
"cpu": [
|
|
86
|
+
"arm64"
|
|
87
|
+
],
|
|
88
|
+
"dev": true,
|
|
89
|
+
"license": "MIT",
|
|
90
|
+
"optional": true,
|
|
91
|
+
"os": [
|
|
92
|
+
"darwin"
|
|
93
|
+
],
|
|
94
|
+
"engines": {
|
|
95
|
+
"node": ">=18"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"node_modules/@esbuild/darwin-x64": {
|
|
99
|
+
"version": "0.25.4",
|
|
100
|
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz",
|
|
101
|
+
"integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==",
|
|
102
|
+
"cpu": [
|
|
103
|
+
"x64"
|
|
104
|
+
],
|
|
105
|
+
"dev": true,
|
|
106
|
+
"license": "MIT",
|
|
107
|
+
"optional": true,
|
|
108
|
+
"os": [
|
|
109
|
+
"darwin"
|
|
110
|
+
],
|
|
111
|
+
"engines": {
|
|
112
|
+
"node": ">=18"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"node_modules/@esbuild/freebsd-arm64": {
|
|
116
|
+
"version": "0.25.4",
|
|
117
|
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz",
|
|
118
|
+
"integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==",
|
|
119
|
+
"cpu": [
|
|
120
|
+
"arm64"
|
|
121
|
+
],
|
|
122
|
+
"dev": true,
|
|
123
|
+
"license": "MIT",
|
|
124
|
+
"optional": true,
|
|
125
|
+
"os": [
|
|
126
|
+
"freebsd"
|
|
127
|
+
],
|
|
128
|
+
"engines": {
|
|
129
|
+
"node": ">=18"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"node_modules/@esbuild/freebsd-x64": {
|
|
133
|
+
"version": "0.25.4",
|
|
134
|
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz",
|
|
135
|
+
"integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==",
|
|
136
|
+
"cpu": [
|
|
137
|
+
"x64"
|
|
138
|
+
],
|
|
139
|
+
"dev": true,
|
|
140
|
+
"license": "MIT",
|
|
141
|
+
"optional": true,
|
|
142
|
+
"os": [
|
|
143
|
+
"freebsd"
|
|
144
|
+
],
|
|
145
|
+
"engines": {
|
|
146
|
+
"node": ">=18"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
"node_modules/@esbuild/linux-arm": {
|
|
150
|
+
"version": "0.25.4",
|
|
151
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz",
|
|
152
|
+
"integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==",
|
|
153
|
+
"cpu": [
|
|
154
|
+
"arm"
|
|
155
|
+
],
|
|
156
|
+
"dev": true,
|
|
157
|
+
"license": "MIT",
|
|
158
|
+
"optional": true,
|
|
159
|
+
"os": [
|
|
160
|
+
"linux"
|
|
161
|
+
],
|
|
162
|
+
"engines": {
|
|
163
|
+
"node": ">=18"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"node_modules/@esbuild/linux-arm64": {
|
|
167
|
+
"version": "0.25.4",
|
|
168
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz",
|
|
169
|
+
"integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==",
|
|
170
|
+
"cpu": [
|
|
171
|
+
"arm64"
|
|
172
|
+
],
|
|
173
|
+
"dev": true,
|
|
174
|
+
"license": "MIT",
|
|
175
|
+
"optional": true,
|
|
176
|
+
"os": [
|
|
177
|
+
"linux"
|
|
178
|
+
],
|
|
179
|
+
"engines": {
|
|
180
|
+
"node": ">=18"
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"node_modules/@esbuild/linux-ia32": {
|
|
184
|
+
"version": "0.25.4",
|
|
185
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz",
|
|
186
|
+
"integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==",
|
|
187
|
+
"cpu": [
|
|
188
|
+
"ia32"
|
|
189
|
+
],
|
|
190
|
+
"dev": true,
|
|
191
|
+
"license": "MIT",
|
|
192
|
+
"optional": true,
|
|
193
|
+
"os": [
|
|
194
|
+
"linux"
|
|
195
|
+
],
|
|
196
|
+
"engines": {
|
|
197
|
+
"node": ">=18"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"node_modules/@esbuild/linux-loong64": {
|
|
201
|
+
"version": "0.25.4",
|
|
202
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz",
|
|
203
|
+
"integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==",
|
|
204
|
+
"cpu": [
|
|
205
|
+
"loong64"
|
|
206
|
+
],
|
|
207
|
+
"dev": true,
|
|
208
|
+
"license": "MIT",
|
|
209
|
+
"optional": true,
|
|
210
|
+
"os": [
|
|
211
|
+
"linux"
|
|
212
|
+
],
|
|
213
|
+
"engines": {
|
|
214
|
+
"node": ">=18"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"node_modules/@esbuild/linux-mips64el": {
|
|
218
|
+
"version": "0.25.4",
|
|
219
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz",
|
|
220
|
+
"integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==",
|
|
221
|
+
"cpu": [
|
|
222
|
+
"mips64el"
|
|
223
|
+
],
|
|
224
|
+
"dev": true,
|
|
225
|
+
"license": "MIT",
|
|
226
|
+
"optional": true,
|
|
227
|
+
"os": [
|
|
228
|
+
"linux"
|
|
229
|
+
],
|
|
230
|
+
"engines": {
|
|
231
|
+
"node": ">=18"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"node_modules/@esbuild/linux-ppc64": {
|
|
235
|
+
"version": "0.25.4",
|
|
236
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz",
|
|
237
|
+
"integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==",
|
|
238
|
+
"cpu": [
|
|
239
|
+
"ppc64"
|
|
240
|
+
],
|
|
241
|
+
"dev": true,
|
|
242
|
+
"license": "MIT",
|
|
243
|
+
"optional": true,
|
|
244
|
+
"os": [
|
|
245
|
+
"linux"
|
|
246
|
+
],
|
|
247
|
+
"engines": {
|
|
248
|
+
"node": ">=18"
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
"node_modules/@esbuild/linux-riscv64": {
|
|
252
|
+
"version": "0.25.4",
|
|
253
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz",
|
|
254
|
+
"integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==",
|
|
255
|
+
"cpu": [
|
|
256
|
+
"riscv64"
|
|
257
|
+
],
|
|
258
|
+
"dev": true,
|
|
259
|
+
"license": "MIT",
|
|
260
|
+
"optional": true,
|
|
261
|
+
"os": [
|
|
262
|
+
"linux"
|
|
263
|
+
],
|
|
264
|
+
"engines": {
|
|
265
|
+
"node": ">=18"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
"node_modules/@esbuild/linux-s390x": {
|
|
269
|
+
"version": "0.25.4",
|
|
270
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz",
|
|
271
|
+
"integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==",
|
|
272
|
+
"cpu": [
|
|
273
|
+
"s390x"
|
|
274
|
+
],
|
|
275
|
+
"dev": true,
|
|
276
|
+
"license": "MIT",
|
|
277
|
+
"optional": true,
|
|
278
|
+
"os": [
|
|
279
|
+
"linux"
|
|
280
|
+
],
|
|
281
|
+
"engines": {
|
|
282
|
+
"node": ">=18"
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
"node_modules/@esbuild/linux-x64": {
|
|
286
|
+
"version": "0.25.4",
|
|
287
|
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz",
|
|
288
|
+
"integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==",
|
|
289
|
+
"cpu": [
|
|
290
|
+
"x64"
|
|
291
|
+
],
|
|
292
|
+
"dev": true,
|
|
293
|
+
"license": "MIT",
|
|
294
|
+
"optional": true,
|
|
295
|
+
"os": [
|
|
296
|
+
"linux"
|
|
297
|
+
],
|
|
298
|
+
"engines": {
|
|
299
|
+
"node": ">=18"
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"node_modules/@esbuild/netbsd-arm64": {
|
|
303
|
+
"version": "0.25.4",
|
|
304
|
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz",
|
|
305
|
+
"integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==",
|
|
306
|
+
"cpu": [
|
|
307
|
+
"arm64"
|
|
308
|
+
],
|
|
309
|
+
"dev": true,
|
|
310
|
+
"license": "MIT",
|
|
311
|
+
"optional": true,
|
|
312
|
+
"os": [
|
|
313
|
+
"netbsd"
|
|
314
|
+
],
|
|
315
|
+
"engines": {
|
|
316
|
+
"node": ">=18"
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"node_modules/@esbuild/netbsd-x64": {
|
|
320
|
+
"version": "0.25.4",
|
|
321
|
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz",
|
|
322
|
+
"integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==",
|
|
323
|
+
"cpu": [
|
|
324
|
+
"x64"
|
|
325
|
+
],
|
|
326
|
+
"dev": true,
|
|
327
|
+
"license": "MIT",
|
|
328
|
+
"optional": true,
|
|
329
|
+
"os": [
|
|
330
|
+
"netbsd"
|
|
331
|
+
],
|
|
332
|
+
"engines": {
|
|
333
|
+
"node": ">=18"
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"node_modules/@esbuild/openbsd-arm64": {
|
|
337
|
+
"version": "0.25.4",
|
|
338
|
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz",
|
|
339
|
+
"integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==",
|
|
340
|
+
"cpu": [
|
|
341
|
+
"arm64"
|
|
342
|
+
],
|
|
343
|
+
"dev": true,
|
|
344
|
+
"license": "MIT",
|
|
345
|
+
"optional": true,
|
|
346
|
+
"os": [
|
|
347
|
+
"openbsd"
|
|
348
|
+
],
|
|
349
|
+
"engines": {
|
|
350
|
+
"node": ">=18"
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
"node_modules/@esbuild/openbsd-x64": {
|
|
354
|
+
"version": "0.25.4",
|
|
355
|
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz",
|
|
356
|
+
"integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==",
|
|
357
|
+
"cpu": [
|
|
358
|
+
"x64"
|
|
359
|
+
],
|
|
360
|
+
"dev": true,
|
|
361
|
+
"license": "MIT",
|
|
362
|
+
"optional": true,
|
|
363
|
+
"os": [
|
|
364
|
+
"openbsd"
|
|
365
|
+
],
|
|
366
|
+
"engines": {
|
|
367
|
+
"node": ">=18"
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
"node_modules/@esbuild/sunos-x64": {
|
|
371
|
+
"version": "0.25.4",
|
|
372
|
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz",
|
|
373
|
+
"integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==",
|
|
374
|
+
"cpu": [
|
|
375
|
+
"x64"
|
|
376
|
+
],
|
|
377
|
+
"dev": true,
|
|
378
|
+
"license": "MIT",
|
|
379
|
+
"optional": true,
|
|
380
|
+
"os": [
|
|
381
|
+
"sunos"
|
|
382
|
+
],
|
|
383
|
+
"engines": {
|
|
384
|
+
"node": ">=18"
|
|
385
|
+
}
|
|
386
|
+
},
|
|
387
|
+
"node_modules/@esbuild/win32-arm64": {
|
|
388
|
+
"version": "0.25.4",
|
|
389
|
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz",
|
|
390
|
+
"integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==",
|
|
391
|
+
"cpu": [
|
|
392
|
+
"arm64"
|
|
393
|
+
],
|
|
394
|
+
"dev": true,
|
|
395
|
+
"license": "MIT",
|
|
396
|
+
"optional": true,
|
|
397
|
+
"os": [
|
|
398
|
+
"win32"
|
|
399
|
+
],
|
|
400
|
+
"engines": {
|
|
401
|
+
"node": ">=18"
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
"node_modules/@esbuild/win32-ia32": {
|
|
405
|
+
"version": "0.25.4",
|
|
406
|
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz",
|
|
407
|
+
"integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==",
|
|
408
|
+
"cpu": [
|
|
409
|
+
"ia32"
|
|
410
|
+
],
|
|
411
|
+
"dev": true,
|
|
412
|
+
"license": "MIT",
|
|
413
|
+
"optional": true,
|
|
414
|
+
"os": [
|
|
415
|
+
"win32"
|
|
416
|
+
],
|
|
417
|
+
"engines": {
|
|
418
|
+
"node": ">=18"
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
"node_modules/@esbuild/win32-x64": {
|
|
422
|
+
"version": "0.25.4",
|
|
423
|
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz",
|
|
424
|
+
"integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==",
|
|
425
|
+
"cpu": [
|
|
426
|
+
"x64"
|
|
427
|
+
],
|
|
428
|
+
"dev": true,
|
|
429
|
+
"license": "MIT",
|
|
430
|
+
"optional": true,
|
|
431
|
+
"os": [
|
|
432
|
+
"win32"
|
|
433
|
+
],
|
|
434
|
+
"engines": {
|
|
435
|
+
"node": ">=18"
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
"node_modules/css-tree": {
|
|
439
|
+
"version": "3.1.0",
|
|
440
|
+
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
|
|
441
|
+
"integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==",
|
|
442
|
+
"dev": true,
|
|
443
|
+
"license": "MIT",
|
|
444
|
+
"dependencies": {
|
|
445
|
+
"mdn-data": "2.12.2",
|
|
446
|
+
"source-map-js": "^1.0.1"
|
|
447
|
+
},
|
|
448
|
+
"engines": {
|
|
449
|
+
"node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
"node_modules/esbuild": {
|
|
453
|
+
"version": "0.25.4",
|
|
454
|
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz",
|
|
455
|
+
"integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==",
|
|
456
|
+
"dev": true,
|
|
457
|
+
"hasInstallScript": true,
|
|
458
|
+
"license": "MIT",
|
|
459
|
+
"bin": {
|
|
460
|
+
"esbuild": "bin/esbuild"
|
|
461
|
+
},
|
|
462
|
+
"engines": {
|
|
463
|
+
"node": ">=18"
|
|
464
|
+
},
|
|
465
|
+
"optionalDependencies": {
|
|
466
|
+
"@esbuild/aix-ppc64": "0.25.4",
|
|
467
|
+
"@esbuild/android-arm": "0.25.4",
|
|
468
|
+
"@esbuild/android-arm64": "0.25.4",
|
|
469
|
+
"@esbuild/android-x64": "0.25.4",
|
|
470
|
+
"@esbuild/darwin-arm64": "0.25.4",
|
|
471
|
+
"@esbuild/darwin-x64": "0.25.4",
|
|
472
|
+
"@esbuild/freebsd-arm64": "0.25.4",
|
|
473
|
+
"@esbuild/freebsd-x64": "0.25.4",
|
|
474
|
+
"@esbuild/linux-arm": "0.25.4",
|
|
475
|
+
"@esbuild/linux-arm64": "0.25.4",
|
|
476
|
+
"@esbuild/linux-ia32": "0.25.4",
|
|
477
|
+
"@esbuild/linux-loong64": "0.25.4",
|
|
478
|
+
"@esbuild/linux-mips64el": "0.25.4",
|
|
479
|
+
"@esbuild/linux-ppc64": "0.25.4",
|
|
480
|
+
"@esbuild/linux-riscv64": "0.25.4",
|
|
481
|
+
"@esbuild/linux-s390x": "0.25.4",
|
|
482
|
+
"@esbuild/linux-x64": "0.25.4",
|
|
483
|
+
"@esbuild/netbsd-arm64": "0.25.4",
|
|
484
|
+
"@esbuild/netbsd-x64": "0.25.4",
|
|
485
|
+
"@esbuild/openbsd-arm64": "0.25.4",
|
|
486
|
+
"@esbuild/openbsd-x64": "0.25.4",
|
|
487
|
+
"@esbuild/sunos-x64": "0.25.4",
|
|
488
|
+
"@esbuild/win32-arm64": "0.25.4",
|
|
489
|
+
"@esbuild/win32-ia32": "0.25.4",
|
|
490
|
+
"@esbuild/win32-x64": "0.25.4"
|
|
491
|
+
}
|
|
492
|
+
},
|
|
493
|
+
"node_modules/mdn-data": {
|
|
494
|
+
"version": "2.12.2",
|
|
495
|
+
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
|
|
496
|
+
"integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==",
|
|
497
|
+
"dev": true,
|
|
498
|
+
"license": "CC0-1.0"
|
|
499
|
+
},
|
|
500
|
+
"node_modules/source-map-js": {
|
|
501
|
+
"version": "1.2.1",
|
|
502
|
+
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
503
|
+
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
|
504
|
+
"dev": true,
|
|
505
|
+
"license": "BSD-3-Clause",
|
|
506
|
+
"engines": {
|
|
507
|
+
"node": ">=0.10.0"
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|