react-manifest-rails 0.2.33 → 0.2.34

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.
@@ -0,0 +1,19 @@
1
+ # Build source for ast_extractor.js
2
+
3
+ `../ast_extractor.js` is a pre-built, committed bundle (Acorn + acorn-jsx +
4
+ our own extraction logic) — it is NOT built at gem install or run time.
5
+ Rebuild it only when updating Acorn/acorn-jsx or changing extraction logic.
6
+
7
+ cd lib/react_manifest/vendor/build
8
+ npm ci
9
+ npx esbuild entry.js --bundle --format=iife --minify --outfile=../ast_extractor.js
10
+
11
+ Verify the rebuilt file with:
12
+
13
+ node -e '
14
+ const fs = require("fs");
15
+ eval(fs.readFileSync("../ast_extractor.js", "utf8"));
16
+ console.log(JSON.stringify(__astExtractor.extractUsages("<Foo />")));
17
+ '
18
+
19
+ Expected output: `{"success":true,"usages":["Foo"]}`
@@ -0,0 +1,137 @@
1
+ // Source for lib/react_manifest/vendor/ast_extractor.js.
2
+ // Rebuild with: npm install && npx esbuild entry.js --bundle --format=iife --minify --outfile=../ast_extractor.js (see README.md in this directory).
3
+ import * as acorn from "acorn";
4
+ import jsx from "acorn-jsx";
5
+
6
+ const Parser = acorn.Parser.extend(jsx());
7
+
8
+ // Mirrors ReactManifest::SymbolExtractor::PASCAL_TOKEN_PATTERN / HOOK_TOKEN_PATTERN.
9
+ const PASCAL_OR_HOOK = /^(?:[A-Z][A-Za-z0-9_]*|use[A-Z][A-Za-z0-9_]*)$/;
10
+ // Mirrors ReactManifest::SymbolExtractor::LIB_CALL_PATTERN (lowercase function calls).
11
+ const LIB_CALL = /^[a-z][A-Za-z0-9_]{2,}$/;
12
+
13
+ // Mirrors ReactManifest::SymbolExtractor::JS_BUILTINS exactly.
14
+ const JS_BUILTINS = new Set([
15
+ "require", "function", "return", "typeof", "instanceof", "delete", "void",
16
+ "console", "document", "window", "location", "history", "navigator",
17
+ "setTimeout", "setInterval", "clearTimeout", "clearInterval",
18
+ "parseInt", "parseFloat", "isNaN", "isFinite", "encodeURI", "decodeURI",
19
+ "fetch", "Promise", "Object", "Array", "String", "Number", "Boolean", "Math", "JSON",
20
+ "Symbol", "Map", "Set", "WeakMap",
21
+ ]);
22
+
23
+ function parse(content) {
24
+ return Parser.parse(content, {
25
+ ecmaVersion: "latest",
26
+ sourceType: "module",
27
+ locations: true,
28
+ });
29
+ }
30
+
31
+ // Top-level const/let/var/function/class (or export variant) bindings whose
32
+ // name is PascalCase or use-prefixed. Mirrors DEFINITION_PATTERNS' intent.
33
+ function definitionsFromAst(ast) {
34
+ const defs = [];
35
+ const consider = (id) => {
36
+ if (id && id.type === "Identifier" && PASCAL_OR_HOOK.test(id.name)) defs.push(id.name);
37
+ };
38
+ for (const node of ast.body) {
39
+ let decl = node;
40
+ if (node.type === "ExportNamedDeclaration" || node.type === "ExportDefaultDeclaration") {
41
+ decl = node.declaration;
42
+ }
43
+ if (!decl) continue;
44
+ if (decl.type === "VariableDeclaration") {
45
+ for (const d of decl.declarations) consider(d.id);
46
+ } else if (decl.type === "FunctionDeclaration") {
47
+ consider(decl.id);
48
+ } else if (decl.type === "ClassDeclaration") {
49
+ consider(decl.id);
50
+ }
51
+ }
52
+ return [...new Set(defs)];
53
+ }
54
+
55
+ // Real reference positions only: JSX element names, call/new callees, and
56
+ // generic identifier references (prop values, array elements, assignments,
57
+ // arguments) — explicitly excluding JSXText and StringLiteral content. This
58
+ // is what fixes the "Show" vs. "Show More" plain-text false positive.
59
+ function usagesFromAst(ast) {
60
+ const used = new Set();
61
+ const record = (name) => {
62
+ if (JS_BUILTINS.has(name)) return;
63
+ if (PASCAL_OR_HOOK.test(name)) used.add(name);
64
+ };
65
+
66
+ function walk(node, parent) {
67
+ if (!node || typeof node.type !== "string") return;
68
+
69
+ switch (node.type) {
70
+ case "JSXIdentifier":
71
+ record(node.name);
72
+ break;
73
+ case "CallExpression":
74
+ case "NewExpression":
75
+ if (node.callee && node.callee.type === "Identifier" && LIB_CALL.test(node.callee.name)) {
76
+ if (!JS_BUILTINS.has(node.callee.name)) used.add(node.callee.name);
77
+ }
78
+ break;
79
+ case "Identifier":
80
+ // Skip non-computed member/property-key positions (obj.Foo, {Foo: 1})
81
+ // where the identifier is a property name, not a symbol reference.
82
+ if (parent && parent.type === "MemberExpression" && parent.property === node && !parent.computed) {
83
+ break;
84
+ }
85
+ if (parent && parent.type === "Property" && parent.key === node && !parent.computed) {
86
+ break;
87
+ }
88
+ record(node.name);
89
+ break;
90
+ default:
91
+ break;
92
+ }
93
+
94
+ for (const key in node) {
95
+ if (key === "loc" || key === "start" || key === "end" || key === "range") continue;
96
+ const value = node[key];
97
+ if (Array.isArray(value)) {
98
+ for (const child of value) {
99
+ if (child && typeof child.type === "string") walk(child, node);
100
+ }
101
+ } else if (value && typeof value.type === "string") {
102
+ walk(value, node);
103
+ }
104
+ }
105
+ }
106
+
107
+ walk(ast, null);
108
+ return [...used];
109
+ }
110
+
111
+ function errorInfo(e) {
112
+ return {
113
+ message: e.message || String(e),
114
+ line: e.loc ? e.loc.line : null,
115
+ column: e.loc ? e.loc.column : null,
116
+ };
117
+ }
118
+
119
+ globalThis.__astExtractor = {
120
+ extractDefinitions(content) {
121
+ try {
122
+ return { success: true, definitions: definitionsFromAst(parse(content)) };
123
+ } catch (e) {
124
+ return { success: false, error: errorInfo(e) };
125
+ }
126
+ },
127
+ extractUsages(content) {
128
+ try {
129
+ const ast = parse(content);
130
+ const defs = new Set(definitionsFromAst(ast));
131
+ const used = usagesFromAst(ast).filter((name) => !defs.has(name));
132
+ return { success: true, usages: used };
133
+ } catch (e) {
134
+ return { success: false, error: errorInfo(e) };
135
+ }
136
+ },
137
+ };
@@ -0,0 +1,524 @@
1
+ {
2
+ "name": "react-manifest-rails-ast-extractor-build",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "react-manifest-rails-ast-extractor-build",
9
+ "version": "1.0.0",
10
+ "devDependencies": {
11
+ "acorn": "^8.17.0",
12
+ "acorn-jsx": "^5.3.2",
13
+ "esbuild": "^0.28.1"
14
+ }
15
+ },
16
+ "node_modules/@esbuild/aix-ppc64": {
17
+ "version": "0.28.1",
18
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
19
+ "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
20
+ "cpu": [
21
+ "ppc64"
22
+ ],
23
+ "dev": true,
24
+ "license": "MIT",
25
+ "optional": true,
26
+ "os": [
27
+ "aix"
28
+ ],
29
+ "engines": {
30
+ "node": ">=18"
31
+ }
32
+ },
33
+ "node_modules/@esbuild/android-arm": {
34
+ "version": "0.28.1",
35
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
36
+ "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
37
+ "cpu": [
38
+ "arm"
39
+ ],
40
+ "dev": true,
41
+ "license": "MIT",
42
+ "optional": true,
43
+ "os": [
44
+ "android"
45
+ ],
46
+ "engines": {
47
+ "node": ">=18"
48
+ }
49
+ },
50
+ "node_modules/@esbuild/android-arm64": {
51
+ "version": "0.28.1",
52
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
53
+ "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
54
+ "cpu": [
55
+ "arm64"
56
+ ],
57
+ "dev": true,
58
+ "license": "MIT",
59
+ "optional": true,
60
+ "os": [
61
+ "android"
62
+ ],
63
+ "engines": {
64
+ "node": ">=18"
65
+ }
66
+ },
67
+ "node_modules/@esbuild/android-x64": {
68
+ "version": "0.28.1",
69
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
70
+ "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
71
+ "cpu": [
72
+ "x64"
73
+ ],
74
+ "dev": true,
75
+ "license": "MIT",
76
+ "optional": true,
77
+ "os": [
78
+ "android"
79
+ ],
80
+ "engines": {
81
+ "node": ">=18"
82
+ }
83
+ },
84
+ "node_modules/@esbuild/darwin-arm64": {
85
+ "version": "0.28.1",
86
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
87
+ "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
88
+ "cpu": [
89
+ "arm64"
90
+ ],
91
+ "dev": true,
92
+ "license": "MIT",
93
+ "optional": true,
94
+ "os": [
95
+ "darwin"
96
+ ],
97
+ "engines": {
98
+ "node": ">=18"
99
+ }
100
+ },
101
+ "node_modules/@esbuild/darwin-x64": {
102
+ "version": "0.28.1",
103
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
104
+ "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
105
+ "cpu": [
106
+ "x64"
107
+ ],
108
+ "dev": true,
109
+ "license": "MIT",
110
+ "optional": true,
111
+ "os": [
112
+ "darwin"
113
+ ],
114
+ "engines": {
115
+ "node": ">=18"
116
+ }
117
+ },
118
+ "node_modules/@esbuild/freebsd-arm64": {
119
+ "version": "0.28.1",
120
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
121
+ "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
122
+ "cpu": [
123
+ "arm64"
124
+ ],
125
+ "dev": true,
126
+ "license": "MIT",
127
+ "optional": true,
128
+ "os": [
129
+ "freebsd"
130
+ ],
131
+ "engines": {
132
+ "node": ">=18"
133
+ }
134
+ },
135
+ "node_modules/@esbuild/freebsd-x64": {
136
+ "version": "0.28.1",
137
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
138
+ "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
139
+ "cpu": [
140
+ "x64"
141
+ ],
142
+ "dev": true,
143
+ "license": "MIT",
144
+ "optional": true,
145
+ "os": [
146
+ "freebsd"
147
+ ],
148
+ "engines": {
149
+ "node": ">=18"
150
+ }
151
+ },
152
+ "node_modules/@esbuild/linux-arm": {
153
+ "version": "0.28.1",
154
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
155
+ "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
156
+ "cpu": [
157
+ "arm"
158
+ ],
159
+ "dev": true,
160
+ "license": "MIT",
161
+ "optional": true,
162
+ "os": [
163
+ "linux"
164
+ ],
165
+ "engines": {
166
+ "node": ">=18"
167
+ }
168
+ },
169
+ "node_modules/@esbuild/linux-arm64": {
170
+ "version": "0.28.1",
171
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
172
+ "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
173
+ "cpu": [
174
+ "arm64"
175
+ ],
176
+ "dev": true,
177
+ "license": "MIT",
178
+ "optional": true,
179
+ "os": [
180
+ "linux"
181
+ ],
182
+ "engines": {
183
+ "node": ">=18"
184
+ }
185
+ },
186
+ "node_modules/@esbuild/linux-ia32": {
187
+ "version": "0.28.1",
188
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
189
+ "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
190
+ "cpu": [
191
+ "ia32"
192
+ ],
193
+ "dev": true,
194
+ "license": "MIT",
195
+ "optional": true,
196
+ "os": [
197
+ "linux"
198
+ ],
199
+ "engines": {
200
+ "node": ">=18"
201
+ }
202
+ },
203
+ "node_modules/@esbuild/linux-loong64": {
204
+ "version": "0.28.1",
205
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
206
+ "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
207
+ "cpu": [
208
+ "loong64"
209
+ ],
210
+ "dev": true,
211
+ "license": "MIT",
212
+ "optional": true,
213
+ "os": [
214
+ "linux"
215
+ ],
216
+ "engines": {
217
+ "node": ">=18"
218
+ }
219
+ },
220
+ "node_modules/@esbuild/linux-mips64el": {
221
+ "version": "0.28.1",
222
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
223
+ "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
224
+ "cpu": [
225
+ "mips64el"
226
+ ],
227
+ "dev": true,
228
+ "license": "MIT",
229
+ "optional": true,
230
+ "os": [
231
+ "linux"
232
+ ],
233
+ "engines": {
234
+ "node": ">=18"
235
+ }
236
+ },
237
+ "node_modules/@esbuild/linux-ppc64": {
238
+ "version": "0.28.1",
239
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
240
+ "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
241
+ "cpu": [
242
+ "ppc64"
243
+ ],
244
+ "dev": true,
245
+ "license": "MIT",
246
+ "optional": true,
247
+ "os": [
248
+ "linux"
249
+ ],
250
+ "engines": {
251
+ "node": ">=18"
252
+ }
253
+ },
254
+ "node_modules/@esbuild/linux-riscv64": {
255
+ "version": "0.28.1",
256
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
257
+ "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
258
+ "cpu": [
259
+ "riscv64"
260
+ ],
261
+ "dev": true,
262
+ "license": "MIT",
263
+ "optional": true,
264
+ "os": [
265
+ "linux"
266
+ ],
267
+ "engines": {
268
+ "node": ">=18"
269
+ }
270
+ },
271
+ "node_modules/@esbuild/linux-s390x": {
272
+ "version": "0.28.1",
273
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
274
+ "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
275
+ "cpu": [
276
+ "s390x"
277
+ ],
278
+ "dev": true,
279
+ "license": "MIT",
280
+ "optional": true,
281
+ "os": [
282
+ "linux"
283
+ ],
284
+ "engines": {
285
+ "node": ">=18"
286
+ }
287
+ },
288
+ "node_modules/@esbuild/linux-x64": {
289
+ "version": "0.28.1",
290
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
291
+ "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
292
+ "cpu": [
293
+ "x64"
294
+ ],
295
+ "dev": true,
296
+ "license": "MIT",
297
+ "optional": true,
298
+ "os": [
299
+ "linux"
300
+ ],
301
+ "engines": {
302
+ "node": ">=18"
303
+ }
304
+ },
305
+ "node_modules/@esbuild/netbsd-arm64": {
306
+ "version": "0.28.1",
307
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
308
+ "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
309
+ "cpu": [
310
+ "arm64"
311
+ ],
312
+ "dev": true,
313
+ "license": "MIT",
314
+ "optional": true,
315
+ "os": [
316
+ "netbsd"
317
+ ],
318
+ "engines": {
319
+ "node": ">=18"
320
+ }
321
+ },
322
+ "node_modules/@esbuild/netbsd-x64": {
323
+ "version": "0.28.1",
324
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
325
+ "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
326
+ "cpu": [
327
+ "x64"
328
+ ],
329
+ "dev": true,
330
+ "license": "MIT",
331
+ "optional": true,
332
+ "os": [
333
+ "netbsd"
334
+ ],
335
+ "engines": {
336
+ "node": ">=18"
337
+ }
338
+ },
339
+ "node_modules/@esbuild/openbsd-arm64": {
340
+ "version": "0.28.1",
341
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
342
+ "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
343
+ "cpu": [
344
+ "arm64"
345
+ ],
346
+ "dev": true,
347
+ "license": "MIT",
348
+ "optional": true,
349
+ "os": [
350
+ "openbsd"
351
+ ],
352
+ "engines": {
353
+ "node": ">=18"
354
+ }
355
+ },
356
+ "node_modules/@esbuild/openbsd-x64": {
357
+ "version": "0.28.1",
358
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
359
+ "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
360
+ "cpu": [
361
+ "x64"
362
+ ],
363
+ "dev": true,
364
+ "license": "MIT",
365
+ "optional": true,
366
+ "os": [
367
+ "openbsd"
368
+ ],
369
+ "engines": {
370
+ "node": ">=18"
371
+ }
372
+ },
373
+ "node_modules/@esbuild/openharmony-arm64": {
374
+ "version": "0.28.1",
375
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
376
+ "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
377
+ "cpu": [
378
+ "arm64"
379
+ ],
380
+ "dev": true,
381
+ "license": "MIT",
382
+ "optional": true,
383
+ "os": [
384
+ "openharmony"
385
+ ],
386
+ "engines": {
387
+ "node": ">=18"
388
+ }
389
+ },
390
+ "node_modules/@esbuild/sunos-x64": {
391
+ "version": "0.28.1",
392
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
393
+ "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
394
+ "cpu": [
395
+ "x64"
396
+ ],
397
+ "dev": true,
398
+ "license": "MIT",
399
+ "optional": true,
400
+ "os": [
401
+ "sunos"
402
+ ],
403
+ "engines": {
404
+ "node": ">=18"
405
+ }
406
+ },
407
+ "node_modules/@esbuild/win32-arm64": {
408
+ "version": "0.28.1",
409
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
410
+ "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
411
+ "cpu": [
412
+ "arm64"
413
+ ],
414
+ "dev": true,
415
+ "license": "MIT",
416
+ "optional": true,
417
+ "os": [
418
+ "win32"
419
+ ],
420
+ "engines": {
421
+ "node": ">=18"
422
+ }
423
+ },
424
+ "node_modules/@esbuild/win32-ia32": {
425
+ "version": "0.28.1",
426
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
427
+ "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
428
+ "cpu": [
429
+ "ia32"
430
+ ],
431
+ "dev": true,
432
+ "license": "MIT",
433
+ "optional": true,
434
+ "os": [
435
+ "win32"
436
+ ],
437
+ "engines": {
438
+ "node": ">=18"
439
+ }
440
+ },
441
+ "node_modules/@esbuild/win32-x64": {
442
+ "version": "0.28.1",
443
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
444
+ "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
445
+ "cpu": [
446
+ "x64"
447
+ ],
448
+ "dev": true,
449
+ "license": "MIT",
450
+ "optional": true,
451
+ "os": [
452
+ "win32"
453
+ ],
454
+ "engines": {
455
+ "node": ">=18"
456
+ }
457
+ },
458
+ "node_modules/acorn": {
459
+ "version": "8.17.0",
460
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
461
+ "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
462
+ "dev": true,
463
+ "license": "MIT",
464
+ "bin": {
465
+ "acorn": "bin/acorn"
466
+ },
467
+ "engines": {
468
+ "node": ">=0.4.0"
469
+ }
470
+ },
471
+ "node_modules/acorn-jsx": {
472
+ "version": "5.3.2",
473
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
474
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
475
+ "dev": true,
476
+ "license": "MIT",
477
+ "peerDependencies": {
478
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
479
+ }
480
+ },
481
+ "node_modules/esbuild": {
482
+ "version": "0.28.1",
483
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
484
+ "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
485
+ "dev": true,
486
+ "hasInstallScript": true,
487
+ "license": "MIT",
488
+ "bin": {
489
+ "esbuild": "bin/esbuild"
490
+ },
491
+ "engines": {
492
+ "node": ">=18"
493
+ },
494
+ "optionalDependencies": {
495
+ "@esbuild/aix-ppc64": "0.28.1",
496
+ "@esbuild/android-arm": "0.28.1",
497
+ "@esbuild/android-arm64": "0.28.1",
498
+ "@esbuild/android-x64": "0.28.1",
499
+ "@esbuild/darwin-arm64": "0.28.1",
500
+ "@esbuild/darwin-x64": "0.28.1",
501
+ "@esbuild/freebsd-arm64": "0.28.1",
502
+ "@esbuild/freebsd-x64": "0.28.1",
503
+ "@esbuild/linux-arm": "0.28.1",
504
+ "@esbuild/linux-arm64": "0.28.1",
505
+ "@esbuild/linux-ia32": "0.28.1",
506
+ "@esbuild/linux-loong64": "0.28.1",
507
+ "@esbuild/linux-mips64el": "0.28.1",
508
+ "@esbuild/linux-ppc64": "0.28.1",
509
+ "@esbuild/linux-riscv64": "0.28.1",
510
+ "@esbuild/linux-s390x": "0.28.1",
511
+ "@esbuild/linux-x64": "0.28.1",
512
+ "@esbuild/netbsd-arm64": "0.28.1",
513
+ "@esbuild/netbsd-x64": "0.28.1",
514
+ "@esbuild/openbsd-arm64": "0.28.1",
515
+ "@esbuild/openbsd-x64": "0.28.1",
516
+ "@esbuild/openharmony-arm64": "0.28.1",
517
+ "@esbuild/sunos-x64": "0.28.1",
518
+ "@esbuild/win32-arm64": "0.28.1",
519
+ "@esbuild/win32-ia32": "0.28.1",
520
+ "@esbuild/win32-x64": "0.28.1"
521
+ }
522
+ }
523
+ }
524
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "react-manifest-rails-ast-extractor-build",
3
+ "private": true,
4
+ "version": "1.0.0",
5
+ "description": "Build source for lib/react_manifest/vendor/ast_extractor.js — not shipped in the gem.",
6
+ "devDependencies": {
7
+ "acorn": "^8.17.0",
8
+ "acorn-jsx": "^5.3.2",
9
+ "esbuild": "^0.28.1"
10
+ }
11
+ }