@aura3d/cli 4.0.3 → 4.0.4

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.
Files changed (65) hide show
  1. package/data/aura.exports.json +591 -0
  2. package/data/root-export-dispositions.json +24195 -0
  3. package/dist/codemods/camera-cast.d.ts +34 -0
  4. package/dist/codemods/camera-cast.d.ts.map +1 -0
  5. package/dist/codemods/camera-cast.js +259 -0
  6. package/dist/codemods/camera-cast.js.map +1 -0
  7. package/dist/codemods/core-v2.d.ts +55 -0
  8. package/dist/codemods/core-v2.d.ts.map +1 -0
  9. package/dist/codemods/core-v2.js +371 -0
  10. package/dist/codemods/core-v2.js.map +1 -0
  11. package/dist/codemods/engine-entry-imports.js +3 -3
  12. package/dist/codemods/engine-entry-imports.js.map +1 -1
  13. package/dist/codemods/post-v2.d.ts +88 -0
  14. package/dist/codemods/post-v2.d.ts.map +1 -0
  15. package/dist/codemods/post-v2.js +379 -0
  16. package/dist/codemods/post-v2.js.map +1 -0
  17. package/dist/commands/prd01/index.js +1 -1
  18. package/dist/commands/prd01/index.js.map +1 -1
  19. package/dist/commands/prd02/environmentsBake.d.ts.map +1 -1
  20. package/dist/commands/prd02/environmentsBake.js +1 -1
  21. package/dist/commands/prd02/environmentsBake.js.map +1 -1
  22. package/dist/commands/prd03/index.d.ts +4 -2
  23. package/dist/commands/prd03/index.d.ts.map +1 -1
  24. package/dist/commands/prd03/index.js +4 -2
  25. package/dist/commands/prd03/index.js.map +1 -1
  26. package/dist/commands/prd08/feelLint.js +1 -1
  27. package/dist/commands/prd08/feelLint.js.map +1 -1
  28. package/dist/commands/prd08/index.js +1 -1
  29. package/dist/commands/prd08/index.js.map +1 -1
  30. package/dist/commands/prd10/index.js +8 -1
  31. package/dist/commands/prd10/index.js.map +1 -1
  32. package/dist/lint/feelSourceScan.d.ts +20 -0
  33. package/dist/lint/feelSourceScan.d.ts.map +1 -0
  34. package/dist/lint/feelSourceScan.js +91 -0
  35. package/dist/lint/feelSourceScan.js.map +1 -0
  36. package/dist/look/lint-static.js +1 -1
  37. package/dist/look/lint-static.js.map +1 -1
  38. package/dist/migrate-three/CompatibilityWarnings.d.ts.map +1 -1
  39. package/dist/migrate-three/CompatibilityWarnings.js +57 -12
  40. package/dist/migrate-three/CompatibilityWarnings.js.map +1 -1
  41. package/dist/migrate-three/ImportMap.d.ts +36 -12
  42. package/dist/migrate-three/ImportMap.d.ts.map +1 -1
  43. package/dist/migrate-three/ImportMap.js +120 -22
  44. package/dist/migrate-three/ImportMap.js.map +1 -1
  45. package/dist/migrate-three/ThreeToA3DAdapter.d.ts.map +1 -1
  46. package/dist/migrate-three/ThreeToA3DAdapter.js +3 -1
  47. package/dist/migrate-three/ThreeToA3DAdapter.js.map +1 -1
  48. package/dist/migrate-three/emit.d.ts +14 -1
  49. package/dist/migrate-three/emit.d.ts.map +1 -1
  50. package/dist/migrate-three/emit.js +670 -23
  51. package/dist/migrate-three/emit.js.map +1 -1
  52. package/dist/migrate-three/mappings.d.ts +24 -2
  53. package/dist/migrate-three/mappings.d.ts.map +1 -1
  54. package/dist/migrate-three/mappings.js +259 -12
  55. package/dist/migrate-three/mappings.js.map +1 -1
  56. package/dist/migrate-three/parse.d.ts +2 -0
  57. package/dist/migrate-three/parse.d.ts.map +1 -1
  58. package/dist/migrate-three/parse.js +134 -19
  59. package/dist/migrate-three/parse.js.map +1 -1
  60. package/dist/migrate-three/report.d.ts +1 -0
  61. package/dist/migrate-three/report.d.ts.map +1 -1
  62. package/dist/migrate-three/report.js +1 -1
  63. package/dist/migrate-three/report.js.map +1 -1
  64. package/package.json +6 -4
  65. package/skills/llms.txt +91 -7
@@ -0,0 +1,34 @@
1
+ export interface CameraCastRow {
2
+ readonly file: string;
3
+ readonly line: number;
4
+ readonly construct: string;
5
+ readonly mapping: "exact" | "approximate" | "none";
6
+ readonly target?: string;
7
+ readonly note?: string;
8
+ }
9
+ export interface CameraCastResult {
10
+ readonly code: string;
11
+ readonly rows: readonly CameraCastRow[];
12
+ }
13
+ export declare function transform(source: string, fileName?: string): CameraCastResult;
14
+ export declare const cameraCastCodemod: {
15
+ name: string;
16
+ owner: string;
17
+ description: string;
18
+ transform: typeof transform;
19
+ };
20
+ export declare const feelEvidenceOnlyRule: {
21
+ code: string;
22
+ owner: string;
23
+ check(file: {
24
+ readonly path: string;
25
+ readonly text: string;
26
+ }): {
27
+ line: number;
28
+ severity: "error" | "warning";
29
+ message: string;
30
+ }[];
31
+ };
32
+ export declare function reportRows(allRows: readonly CameraCastRow[]): string;
33
+ export declare function main(argv?: readonly string[]): number;
34
+ //# sourceMappingURL=camera-cast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-cast.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/codemods/camera-cast.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CACzC;AAkED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,gBAAgB,CAwFhF;AAGD,eAAO,MAAM,iBAAiB;;;;;CAK7B,CAAC;AAGF,eAAO,MAAM,oBAAoB;;;gBAGnB;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE;cACtC,MAAM;kBAAY,OAAO,GAAG,SAAS;iBAAW,MAAM;;CAqB7E,CAAC;AAmBF,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAUpE;AAED,wBAAgB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,MAAM,CAmB5E"}
@@ -0,0 +1,259 @@
1
+ /**
2
+ * tools/camera-cast-codemod (PRD-08 §9.3, C-39 `camera-cast`).
3
+ *
4
+ * Rewrites style-(a) camera cast-mutations —
5
+ * `Object.assign(<cam> as unknown as <Mutable…>, {…})`
6
+ * `(<cam> as unknown as <T>).<field> = <v>`
7
+ * — into C-22 `app.camera` calls, and reports style-(b) direct writes to
8
+ * camera-spec values (no cast) as a manual-migration list.
9
+ *
10
+ * Mapping:
11
+ * - pose fields (position/target/near/far/orthographicSize/up) → setPose (exact)
12
+ * - fov → setFov, roll → setRoll (exact)
13
+ * - spec-shape fields (offset/targetOffset/distance/mode/…) → fromSpec merge (approximate)
14
+ */
15
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
16
+ import { extname, join } from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+ const POSE_FIELDS = new Set(["position", "target", "near", "far", "orthographicSize", "up"]);
19
+ const CAMISH = /(?:camera|cameraSpec|cam|spec)\s*$/i;
20
+ function lineOf(source, index) {
21
+ let n = 1;
22
+ for (let i = 0; i < index && i < source.length; i++)
23
+ if (source[i] === "\n")
24
+ n++;
25
+ return n;
26
+ }
27
+ /** Split a flat `{a: x, b: y}` literal body into top-level entries. */
28
+ function splitProps(body) {
29
+ const props = [];
30
+ let depth = 0;
31
+ let cur = "";
32
+ for (const ch of body) {
33
+ if (ch === "{" || ch === "[" || ch === "(")
34
+ depth++;
35
+ if (ch === "}" || ch === "]" || ch === ")")
36
+ depth--;
37
+ if (ch === "," && depth === 0) {
38
+ props.push(cur);
39
+ cur = "";
40
+ continue;
41
+ }
42
+ cur += ch;
43
+ }
44
+ if (cur.trim())
45
+ props.push(cur);
46
+ return props
47
+ .map((p) => {
48
+ const m = /^\s*([A-Za-z_$][\w$]*)\s*:(.*)$/s.exec(p);
49
+ return m ? { key: m[1], value: m[2].trim() } : null;
50
+ })
51
+ .filter((p) => p !== null);
52
+ }
53
+ function literalBodyOf(src, braceOpen, braceClose) {
54
+ return src.slice(braceOpen + 1, braceClose);
55
+ }
56
+ function matching(src, openIndex, openCh, closeCh) {
57
+ let depth = 0;
58
+ for (let i = openIndex; i < src.length; i++) {
59
+ const ch = src[i];
60
+ if (ch === openCh)
61
+ depth++;
62
+ if (ch === closeCh) {
63
+ depth--;
64
+ if (depth === 0)
65
+ return i;
66
+ }
67
+ if ((ch === '"' || ch === "'" || ch === "`") && depth === 1) {
68
+ const q = ch;
69
+ i++;
70
+ while (i < src.length && src[i] !== q) {
71
+ if (src[i] === "\\")
72
+ i++;
73
+ i++;
74
+ }
75
+ }
76
+ }
77
+ return -1;
78
+ }
79
+ export function transform(source, fileName = "<input>") {
80
+ const rows = [];
81
+ const edits = []; // applied later; positions are pre-edit
82
+ // ── Style (a1): Object.assign(<target> as unknown as <T>, <updates>) ──
83
+ // Type part is `[\w$]+` optionally generic — `<…>` may itself contain commas.
84
+ const objAssign = /Object\.assign\(\s*([\w$.[\]()]+?)\s+as\s+unknown\s+as\s+[\w$]+(?:<[^()]*>)?,\s*/g;
85
+ let m;
86
+ while ((m = objAssign.exec(source))) {
87
+ const target = m[1];
88
+ const argStart = m.index + m[0].length;
89
+ const parenClose = matching(source, m.index + "Object.assign(".length - 1, "(", ")");
90
+ if (parenClose < 0)
91
+ continue;
92
+ const argSrc = source.slice(argStart, parenClose);
93
+ // Consume a trailing `;` so replacements don't emit `;;`.
94
+ const stmtEnd = source[parenClose + 1] === ";" ? parenClose + 2 : parenClose + 1;
95
+ const trimmed = argSrc.trim();
96
+ const ln = lineOf(source, m.index);
97
+ if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
98
+ const props = splitProps(literalBodyOf(source, argStart + argSrc.indexOf("{"), argStart + argSrc.lastIndexOf("}")));
99
+ const pose = props.filter((p) => POSE_FIELDS.has(p.key));
100
+ const fov = props.filter((p) => p.key === "fov");
101
+ const roll = props.filter((p) => p.key === "roll");
102
+ const rest = props.filter((p) => !POSE_FIELDS.has(p.key) && p.key !== "fov" && p.key !== "roll");
103
+ if (rest.length === 0 && (pose.length || fov.length || roll.length)) {
104
+ const calls = [];
105
+ if (pose.length)
106
+ calls.push(`app.camera.setPose({ ${pose.map((p) => `${p.key}: ${p.value}`).join(", ")} });`);
107
+ for (const p of fov)
108
+ calls.push(`app.camera.setFov(${p.value});`);
109
+ for (const p of roll)
110
+ calls.push(`app.camera.setRoll(${p.value});`);
111
+ edits.push({ start: m.index, end: stmtEnd, text: calls.join("\n") });
112
+ rows.push({ file: fileName, line: ln, construct: `Object.assign(${target} as unknown as …)`, mapping: "exact", target: calls.join(" ") });
113
+ }
114
+ else {
115
+ // Mixed or spec-shape fields → merge into a rigs.fromSpec spec.
116
+ const text = `app.camera.use(app.camera.rigs.fromSpec({ ...${target}, ...${trimmed} }));`;
117
+ edits.push({ start: m.index, end: stmtEnd, text });
118
+ rows.push({ file: fileName, line: ln, construct: `Object.assign(${target} as unknown as …)`, mapping: "approximate", target: "app.camera.use(app.camera.rigs.fromSpec(merge))", note: `spec fields kept verbatim: ${rest.map((p) => p.key).join(", ") || "none"}` });
119
+ }
120
+ }
121
+ else {
122
+ const text = `app.camera.use(app.camera.rigs.fromSpec({ ...${target}, ...${trimmed} }));`;
123
+ edits.push({ start: m.index, end: stmtEnd, text });
124
+ rows.push({ file: fileName, line: ln, construct: `Object.assign(${target} as unknown as …, ${trimmed.slice(0, 40)})`, mapping: "approximate", target: "app.camera.use(app.camera.rigs.fromSpec(merge))", note: "dynamic updates merged into a spec" });
125
+ }
126
+ }
127
+ // ── Style (a2): (<x> as unknown as <T>).<field> = <v> ──
128
+ const castWrite = /\(\s*([\w$.[\]()]+?)\s+as\s+unknown\s+as\s+[\w$]+(?:<[^()]*>)?\)\s*\.\s*([A-Za-z_$][\w$]*)\s*=\s*/g;
129
+ while ((m = castWrite.exec(source))) {
130
+ const [, target, field] = m;
131
+ const ln = lineOf(source, m.index);
132
+ if (!CAMISH.test(target))
133
+ continue;
134
+ const stmtIdx = source.indexOf(";", m.index + m[0].length);
135
+ const value = stmtIdx > 0 ? source.slice(m.index + m[0].length, stmtIdx).trim() : "<expr>";
136
+ let text;
137
+ let mapping = "exact";
138
+ if (field === "fov")
139
+ text = `app.camera.setFov(${value});`;
140
+ else if (field === "roll")
141
+ text = `app.camera.setRoll(${value});`;
142
+ else if (POSE_FIELDS.has(field))
143
+ text = `app.camera.setPose({ ${field}: ${value} });`;
144
+ else {
145
+ text = `app.camera.use(app.camera.rigs.fromSpec({ ...${target}, ${field}: ${value} }));`;
146
+ mapping = "approximate";
147
+ }
148
+ const end = stmtIdx > 0 ? stmtIdx + 1 : m.index + m[0].length;
149
+ edits.push({ start: m.index, end, text });
150
+ rows.push({ file: fileName, line: ln, construct: `(${target} as …).${field} = …`, mapping, target: text });
151
+ }
152
+ // ── Style (b): <camish>.<camera field> = <v> — no cast → manual list ──
153
+ const directWrite = /\b([A-Za-z_$][\w$]*(?:\.[\w$]+)*)\.((?:position|target|offset|targetOffset|fov|near|far|distance|targetNode|smoothing|offsetMode|mode|orthographicSize|roll))\s*=\s*/g;
154
+ while ((m = directWrite.exec(source))) {
155
+ const [full, base] = [m[0], m[1]];
156
+ if (!CAMISH.test(base))
157
+ continue;
158
+ // Skip writes already covered by a cast edit above.
159
+ if (edits.some((e) => m.index >= e.start && m.index <= e.end))
160
+ continue;
161
+ rows.push({ file: fileName, line: lineOf(source, m.index), construct: `${full}…`, mapping: "none", note: "direct write to camera-spec value — migrate to app.camera.setPose/setFov or rigs.fromSpec (style b)" });
162
+ }
163
+ // Apply edits right-to-left.
164
+ const parts = [];
165
+ let last = source.length;
166
+ for (const e of [...edits].sort((a, b) => b.start - a.start)) {
167
+ parts.unshift(source.slice(e.end, last));
168
+ parts.unshift(e.text);
169
+ last = e.start;
170
+ }
171
+ parts.unshift(source.slice(0, last));
172
+ return { code: parts.join(""), rows };
173
+ }
174
+ // ── C-39 `camera-cast` codemod descriptor ──
175
+ export const cameraCastCodemod = {
176
+ name: "camera-cast",
177
+ owner: "prd08",
178
+ description: "Camera spec cast-mutations → app.camera (C-22); reports direct spec writes.",
179
+ transform
180
+ };
181
+ // ── C-39 doctor rule `feel/evidence-only` ──
182
+ export const feelEvidenceOnlyRule = {
183
+ code: "feel/evidence-only",
184
+ owner: "prd08",
185
+ check(file) {
186
+ const rows = [];
187
+ const src = file.text;
188
+ const gated = /(capture|evidence|VISUAL_CAPTURE|screenshot|diagnostic)/i;
189
+ let m;
190
+ const gateRe = /if\s*\(([^)]{0,160})\)\s*\{[^}]{0,900}?\b(shake|punch|fovKick|trauma|hitStop)\b/g;
191
+ while ((m = gateRe.exec(src))) {
192
+ if (!gated.test(m[1]))
193
+ continue;
194
+ rows.push({ line: lineOf(src, m.index), severity: "warning", message: "feel call gated behind a capture/evidence branch — feel must reach pixels every frame, not only during captures (PRD-08 §9.5)" });
195
+ }
196
+ if (/\b(shake|trauma|punch|juice)\b/.test(src)) {
197
+ const rndRe = /Math\.random\(\)/g;
198
+ while ((m = rndRe.exec(src))) {
199
+ rows.push({ line: lineOf(src, m.index), severity: "error", message: "Math.random() in a file applying camera feel — use seeded feel/Noise (determinism, repo rule)" });
200
+ }
201
+ }
202
+ const castRe = /as\s+unknown\s+as\s+[\w<>[\], ]+?\s*[),]\s*[^)]*?(position|target|fov|offset)\s*=/g;
203
+ while ((m = castRe.exec(src))) {
204
+ rows.push({ line: lineOf(src, m.index), severity: "warning", message: "camera cast-mutation — run `aura3d codemod camera-cast --write` (C-22)" });
205
+ }
206
+ return rows;
207
+ }
208
+ };
209
+ // ── CLI (`node tools/camera-cast-codemod/index.mjs <paths> [--report|--write|--dry-run]`) ──
210
+ function collectFiles(paths, acc = []) {
211
+ for (const p of paths) {
212
+ if (!existsSync(p))
213
+ continue;
214
+ const st = statSync(p);
215
+ if (st.isDirectory()) {
216
+ for (const name of readdirSync(p)) {
217
+ if (name === "node_modules" || name.startsWith("."))
218
+ continue;
219
+ collectFiles([join(p, name)], acc);
220
+ }
221
+ }
222
+ else if (extname(p) === ".ts" || extname(p) === ".tsx") {
223
+ acc.push(p);
224
+ }
225
+ }
226
+ return acc;
227
+ }
228
+ export function reportRows(allRows) {
229
+ const lines = ["# camera-cast report", ""];
230
+ for (const r of allRows) {
231
+ lines.push(`- ${r.file}:${r.line} — ${r.construct} → ${r.mapping}${r.target ? ` (${r.target})` : ""}${r.note ? ` — ${r.note}` : ""}`);
232
+ }
233
+ lines.push("");
234
+ lines.push(`${allRows.length} construct(s): ${allRows.filter((r) => r.mapping === "exact").length} exact, ${allRows.filter((r) => r.mapping === "approximate").length} approximate, ${allRows.filter((r) => r.mapping === "none").length} manual`);
235
+ return lines.join("\n");
236
+ }
237
+ export function main(argv = process.argv.slice(2)) {
238
+ const args = [...argv];
239
+ const write = args.includes("--write");
240
+ const dryRun = args.includes("--dry-run");
241
+ const inputs = args.filter((a) => !a.startsWith("--"));
242
+ if (!inputs.length) {
243
+ console.error("usage: index.mjs <dir-or-file>… [--report|--write|--dry-run]");
244
+ return 2;
245
+ }
246
+ const allRows = [];
247
+ for (const file of collectFiles(inputs)) {
248
+ const src = readFileSync(file, "utf8");
249
+ const { code, rows } = transform(src, file);
250
+ allRows.push(...rows);
251
+ if (write && code !== src)
252
+ writeFileSync(file, code);
253
+ if (dryRun && code !== src)
254
+ console.log(`--- ${file} would change`);
255
+ }
256
+ console.log(reportRows(allRows));
257
+ return 0;
258
+ }
259
+ //# sourceMappingURL=camera-cast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera-cast.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/codemods/camera-cast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * C-39 codemod `core-v2` (PRD-01 §11 item 4, §15 Phase 2).
3
+ * Pure `source → code + rows` transform — no fs access; the C-39 registry
4
+ * (`packages/aura3d-cli/src/commands/prd01/index.ts`) drives file IO.
5
+ *
6
+ * Rules:
7
+ * - `pixelRatio:` overrides inside `createAuraApp(...)` options (top level or
8
+ * inside a `...(cond ? {...} : {})` spread): `Math.min(<cap>, <dpr>)` and the
9
+ * literal `1` map to `renderer.resolution.maxPixelRatio`; any other value
10
+ * maps to `renderer.resolution.pixelRatio` (same semantics, new surface).
11
+ * - `qualityProfile:` inside `renderer:` options → `quality:` tier
12
+ * (`"production"` → `"high"`, `"safe-basic"` → `"low"`; unknown values keep
13
+ * the expression and are reported `approximate`).
14
+ * - `safe-basic` mentions are classified (mode-select / fallback-warning
15
+ * assertion / documentation) and reported for the inventory — not edited.
16
+ * - `lights.ambient({intensity})` sites are reported with old vs physical
17
+ * effective irradiance (÷π) for lane 14's retune — not edited.
18
+ */
19
+ export interface CodemodRow {
20
+ readonly file: string;
21
+ readonly line: number;
22
+ readonly construct: string;
23
+ readonly mapping: "exact" | "approximate" | "none";
24
+ readonly target?: string;
25
+ readonly note?: string;
26
+ }
27
+ export interface CodemodResult {
28
+ readonly code: string;
29
+ readonly rows: readonly CodemodRow[];
30
+ }
31
+ /** Match a `(`/`{`/`[` opening at `open`, skipping strings and comments. */
32
+ export declare function matchDelimited(src: string, open: number): number;
33
+ export declare function transformCoreV2(source: string, fileName: string): CodemodResult;
34
+ export interface SafeBasicInventoryEntry {
35
+ readonly file: string;
36
+ readonly line: number;
37
+ readonly construct: string;
38
+ readonly classification: string;
39
+ }
40
+ export declare function collectSafeBasicInventory(files: readonly {
41
+ path: string;
42
+ text: string;
43
+ }[]): readonly SafeBasicInventoryEntry[];
44
+ export interface AmbientReviewEntry {
45
+ readonly file: string;
46
+ readonly line: number;
47
+ readonly intensity?: number;
48
+ readonly effectiveIrradianceBefore?: number;
49
+ readonly effectiveIrradianceAfter?: number;
50
+ }
51
+ export declare function collectAmbientReview(files: readonly {
52
+ path: string;
53
+ text: string;
54
+ }[]): readonly AmbientReviewEntry[];
55
+ //# sourceMappingURL=core-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-v2.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/codemods/core-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;CACtC;AAUD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBhE;AAqED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CA8I/E;AAMD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,uBAAuB,EAAE,CAQ9H;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAC5C;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,SAAS,kBAAkB,EAAE,CAmBpH"}