@tamagui/compiler-core 3.0.7 → 3.0.8

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.
@@ -26,7 +26,7 @@ __export(lower_exports, {
26
26
  module.exports = __toCommonJS(lower_exports);
27
27
  var import_diagnostics = require("./diagnostics.cjs");
28
28
  var import_output = require("./output.cjs");
29
- const LOWERED_MODULE_PLAN_VERSION = 5;
29
+ const LOWERED_MODULE_PLAN_VERSION = 6;
30
30
  function compareCodeUnits(left, right) {
31
31
  return left < right ? -1 : left > right ? 1 : 0;
32
32
  }
@@ -209,8 +209,8 @@ function lowerModule({ module: module2, source, target, host, options, structura
209
209
  }
210
210
  for (const candidateImport of imports.values()) {
211
211
  edits.push({
212
- start: source.length,
213
- end: source.length,
212
+ start: module2.declarationsAt,
213
+ end: module2.declarationsAt,
214
214
  content: candidateImport.content,
215
215
  origin: candidateImport.origin
216
216
  });
@@ -213,6 +213,7 @@ function materializeModule(graph, id) {
213
213
  ...definition,
214
214
  value: materializeValue(graph, definition.value)
215
215
  })),
216
+ declarationsAt: result.declarationsAt,
216
217
  diagnostics: graph.diagnostics().filter(({ span }) => span.id === id)
217
218
  };
218
219
  return {
@@ -613,9 +613,19 @@ function normalizeElements(candidate, rawId, imports = []) {
613
613
  elements: elements.sort((left, right) => left.span.start - right.span.start),
614
614
  styledDefinitions: styledDefinitions(candidate, id, program, imports, bailouts),
615
615
  domStyleDefinitions: domStyleDefinitions(id, program, imports),
616
+ declarationsAt: declarationsOffset(program),
616
617
  bailouts: bailouts.sort((left, right) => left.span.start - right.span.start)
617
618
  };
618
619
  }
620
+ function declarationsOffset(program) {
621
+ let offset = 0;
622
+ for (const statement of (0, import_ast.childNodes)(program, "body")) {
623
+ if (statement.type === "ImportDeclaration" || typeof statement.directive === "string") {
624
+ offset = statement.end;
625
+ } else break;
626
+ }
627
+ return offset;
628
+ }
619
629
  function nodeAtSpan(program, start, end) {
620
630
  return (0, import_ast.findAstNode)(program, (node) => node.start === start && node.end === end, {
621
631
  start,
@@ -1,7 +1,7 @@
1
1
  import { localBailout } from "./diagnostics.mjs";
2
2
  import { sourceContentHash, validateSourceEdits } from "./output.mjs";
3
3
 
4
- const LOWERED_MODULE_PLAN_VERSION = 5;
4
+ const LOWERED_MODULE_PLAN_VERSION = 6;
5
5
  function compareCodeUnits(left, right) {
6
6
  return left < right ? -1 : left > right ? 1 : 0;
7
7
  }
@@ -184,14 +184,14 @@ function lowerModule({ module, source, target, host, options, structuralPass })
184
184
  }
185
185
  for (const candidateImport of imports.values()) {
186
186
  edits.push({
187
- start: source.length,
188
- end: source.length,
187
+ start: module.declarationsAt,
188
+ end: module.declarationsAt,
189
189
  content: candidateImport.content,
190
190
  origin: candidateImport.origin
191
191
  });
192
192
  }
193
193
  return {
194
- version: 5,
194
+ version: 6,
195
195
  id: module.id,
196
196
  target,
197
197
  inputHash: module.inputHash,
@@ -1 +1 @@
1
- {"version":3,"file":"lower.js","names":[],"sources":["esm/lower.js"],"sourcesContent":["import { localBailout } from \"./diagnostics\";\nimport {\n sourceContentHash,\n validateSourceEdits\n} from \"./output\";\nconst LOWERED_MODULE_PLAN_VERSION = 5;\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction blocking(reason) {\n return { ...reason, blocking: true };\n}\nfunction diagnostic(code, element, message, prop) {\n return {\n ...localBailout(code, element.span, message),\n component: element.component.name,\n specifier: element.component.provenance?.specifier,\n prop\n };\n}\nfunction styledDefinitionFor(module, element) {\n const definition = element.component.definition;\n if (!definition) return null;\n return module.styledDefinitions.find(\n (candidate) => candidate.id === definition.id && candidate.name === definition.name\n ) ?? null;\n}\nfunction unsafeEntry(element, entry, component, host) {\n if (entry.kind === \"spread\" && entry.value.kind !== \"static\") {\n return diagnostic(\n \"local/unsafe-style-spread\",\n element,\n \"Unevaluated spread may change style and duplicate-prop precedence\"\n );\n }\n if (entry.kind === \"prop\" && host.isStyleProp(entry.name, component) && (entry.value.kind === \"bailout\" || entry.value.kind === \"conditional\") && !host.canLowerDynamicStyleProp?.(\n entry.name,\n component,\n entry.value.kind,\n entry.value.kind === \"bailout\" ? entry.value.dynamic : null\n )) {\n return diagnostic(\n \"local/dynamic-style-value\",\n element,\n `Style prop ${entry.name} could not be evaluated`,\n entry.name\n );\n }\n if (entry.kind === \"prop\" && entry.value.kind === \"object\") {\n for (const member of entry.value.members) {\n if (member.value.kind !== \"bailout\" && member.value.kind !== \"conditional\") continue;\n if (!host.isStyleProp(member.name, component) || !host.canLowerDynamicStyleProp?.(\n member.name,\n component,\n member.value.kind,\n member.value.kind === \"bailout\" ? member.value.dynamic : null\n )) {\n return diagnostic(\n \"local/dynamic-style-value\",\n element,\n `Style prop ${member.name} could not be evaluated`,\n member.name\n );\n }\n }\n }\n return null;\n}\nfunction editsAreCandidateLocal(element, edits) {\n return edits.every(\n (edit) => edit.origin.id === element.id && edit.start >= element.span.start && edit.end <= element.span.end\n );\n}\nfunction overlapsCommitted(edits, committed) {\n return edits.some(\n (edit) => committed.some((existing) => {\n if (edit.start === edit.end) {\n return edit.start > existing.start && edit.start < existing.end;\n }\n if (existing.start === existing.end) {\n return existing.start > edit.start && existing.start < edit.end;\n }\n return edit.start < existing.end && existing.start < edit.end;\n })\n );\n}\nfunction lowerModule({\n module,\n source,\n target,\n host,\n options,\n structuralPass\n}) {\n const stats = {\n found: 0,\n lowered: 0,\n flattened: 0,\n styled: 0,\n bailed: 0\n };\n const structural = structuralPass ? structuralPass.transform({ module, source, target }) : {\n module,\n edits: [],\n imports: [],\n diagnostics: [],\n dependencies: []\n };\n if (structural.module.id !== module.id) {\n throw new Error(\n `Structural pass changed module identity from ${module.id} to ${structural.module.id}`\n );\n }\n if (structuralPass && !structuralPass.versionHash) {\n throw new Error(\"Structural pass must provide a non-empty version hash\");\n }\n module = structural.module;\n validateSourceEdits(source, structural.edits);\n const edits = [...structural.edits];\n const css = /* @__PURE__ */ new Set();\n const diagnostics = [...module.diagnostics, ...structural.diagnostics];\n const dependencies = /* @__PURE__ */ new Set([...module.dependencies, ...structural.dependencies]);\n const imports = new Map(\n structural.imports.map((candidateImport) => [\n candidateImport.content,\n candidateImport\n ])\n );\n for (const element of module.elements) {\n const styledDefinition = styledDefinitionFor(module, element);\n const component = host.resolveComponent(element, styledDefinition);\n if (!component) continue;\n stats.found++;\n const input = {\n id: module.id,\n source,\n target,\n module,\n element,\n styledDefinition,\n component\n };\n const commitDevelopmentDebug = (result2) => {\n const debugEdits = host.developmentDebugInstrumentation?.(input, result2);\n if (!debugEdits) return;\n validateSourceEdits(source, debugEdits);\n if (!editsAreCandidateLocal(element, debugEdits) || overlapsCommitted(debugEdits, edits)) {\n throw new Error(\"Development debug instrumentation must stay candidate-local\");\n }\n edits.push(...debugEdits);\n };\n if (!element.complete || styledDefinition && !styledDefinition.complete) {\n const reasons = [\n ...element.bailouts.map(blocking),\n ...(styledDefinition?.bailouts ?? []).map(blocking)\n ];\n diagnostics.push(...reasons);\n const reason = reasons[0];\n if (reason) commitDevelopmentDebug({ ok: false, bailout: reason });\n stats.bailed++;\n continue;\n }\n const unsafe = element.entries.map((entry) => unsafeEntry(element, entry, component, host)).find((result2) => result2 !== null);\n if (unsafe) {\n diagnostics.push(blocking(unsafe));\n commitDevelopmentDebug({ ok: false, bailout: blocking(unsafe) });\n stats.bailed++;\n continue;\n }\n let result;\n try {\n result = host.lowerCandidate(input);\n } catch (error) {\n result = {\n ok: false,\n bailout: diagnostic(\n \"local/style-resolution-failed\",\n element,\n `Style resolution failed: ${error instanceof Error ? error.message : String(error)}`\n )\n };\n }\n if (!result.ok) {\n diagnostics.push(blocking(result.bailout));\n commitDevelopmentDebug(result);\n stats.bailed++;\n continue;\n }\n try {\n validateSourceEdits(source, result.edits);\n } catch (error) {\n const reason = blocking(\n diagnostic(\n \"local/overlapping-edit\",\n element,\n error instanceof Error ? error.message : String(error)\n )\n );\n diagnostics.push(reason);\n commitDevelopmentDebug({ ok: false, bailout: reason });\n stats.bailed++;\n continue;\n }\n if (!editsAreCandidateLocal(element, result.edits) || overlapsCommitted(result.edits, edits)) {\n const reason = blocking(\n diagnostic(\n \"local/overlapping-edit\",\n element,\n \"Candidate edits overlap another candidate or escape the element span\"\n )\n );\n diagnostics.push(reason);\n commitDevelopmentDebug({ ok: false, bailout: reason });\n stats.bailed++;\n continue;\n }\n diagnostics.push(...result.diagnostics ?? []);\n edits.push(...result.edits);\n commitDevelopmentDebug(result);\n for (const rule of result.css) css.add(rule);\n for (const candidateImport of result.imports) {\n if (!imports.has(candidateImport.content)) {\n imports.set(candidateImport.content, candidateImport);\n }\n }\n for (const dependency of result.dependencies ?? []) dependencies.add(dependency);\n stats.lowered++;\n if (result.flattened) stats.flattened++;\n if (styledDefinition) stats.styled++;\n }\n for (const candidateImport of imports.values()) {\n edits.push({\n start: source.length,\n end: source.length,\n content: candidateImport.content,\n origin: candidateImport.origin\n });\n }\n return {\n version: LOWERED_MODULE_PLAN_VERSION,\n id: module.id,\n target,\n inputHash: module.inputHash,\n sourceHash: sourceContentHash(source),\n projectGeneration: options.projectGeneration,\n structuralPassHash: structuralPass?.versionHash ?? `${target}-noop-v1`,\n edits,\n css: [...css].join(\"\"),\n diagnostics,\n dependencies: [...dependencies].sort(compareCodeUnits),\n stats\n };\n}\nexport {\n LOWERED_MODULE_PLAN_VERSION,\n lowerModule\n};\n//# sourceMappingURL=lower.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"lower.js","names":[],"sources":["esm/lower.js"],"sourcesContent":["import { localBailout } from \"./diagnostics\";\nimport {\n sourceContentHash,\n validateSourceEdits\n} from \"./output\";\nconst LOWERED_MODULE_PLAN_VERSION = 6;\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction blocking(reason) {\n return { ...reason, blocking: true };\n}\nfunction diagnostic(code, element, message, prop) {\n return {\n ...localBailout(code, element.span, message),\n component: element.component.name,\n specifier: element.component.provenance?.specifier,\n prop\n };\n}\nfunction styledDefinitionFor(module, element) {\n const definition = element.component.definition;\n if (!definition) return null;\n return module.styledDefinitions.find(\n (candidate) => candidate.id === definition.id && candidate.name === definition.name\n ) ?? null;\n}\nfunction unsafeEntry(element, entry, component, host) {\n if (entry.kind === \"spread\" && entry.value.kind !== \"static\") {\n return diagnostic(\n \"local/unsafe-style-spread\",\n element,\n \"Unevaluated spread may change style and duplicate-prop precedence\"\n );\n }\n if (entry.kind === \"prop\" && host.isStyleProp(entry.name, component) && (entry.value.kind === \"bailout\" || entry.value.kind === \"conditional\") && !host.canLowerDynamicStyleProp?.(\n entry.name,\n component,\n entry.value.kind,\n entry.value.kind === \"bailout\" ? entry.value.dynamic : null\n )) {\n return diagnostic(\n \"local/dynamic-style-value\",\n element,\n `Style prop ${entry.name} could not be evaluated`,\n entry.name\n );\n }\n if (entry.kind === \"prop\" && entry.value.kind === \"object\") {\n for (const member of entry.value.members) {\n if (member.value.kind !== \"bailout\" && member.value.kind !== \"conditional\") continue;\n if (!host.isStyleProp(member.name, component) || !host.canLowerDynamicStyleProp?.(\n member.name,\n component,\n member.value.kind,\n member.value.kind === \"bailout\" ? member.value.dynamic : null\n )) {\n return diagnostic(\n \"local/dynamic-style-value\",\n element,\n `Style prop ${member.name} could not be evaluated`,\n member.name\n );\n }\n }\n }\n return null;\n}\nfunction editsAreCandidateLocal(element, edits) {\n return edits.every(\n (edit) => edit.origin.id === element.id && edit.start >= element.span.start && edit.end <= element.span.end\n );\n}\nfunction overlapsCommitted(edits, committed) {\n return edits.some(\n (edit) => committed.some((existing) => {\n if (edit.start === edit.end) {\n return edit.start > existing.start && edit.start < existing.end;\n }\n if (existing.start === existing.end) {\n return existing.start > edit.start && existing.start < edit.end;\n }\n return edit.start < existing.end && existing.start < edit.end;\n })\n );\n}\nfunction lowerModule({\n module,\n source,\n target,\n host,\n options,\n structuralPass\n}) {\n const stats = {\n found: 0,\n lowered: 0,\n flattened: 0,\n styled: 0,\n bailed: 0\n };\n const structural = structuralPass ? structuralPass.transform({ module, source, target }) : {\n module,\n edits: [],\n imports: [],\n diagnostics: [],\n dependencies: []\n };\n if (structural.module.id !== module.id) {\n throw new Error(\n `Structural pass changed module identity from ${module.id} to ${structural.module.id}`\n );\n }\n if (structuralPass && !structuralPass.versionHash) {\n throw new Error(\"Structural pass must provide a non-empty version hash\");\n }\n module = structural.module;\n validateSourceEdits(source, structural.edits);\n const edits = [...structural.edits];\n const css = /* @__PURE__ */ new Set();\n const diagnostics = [...module.diagnostics, ...structural.diagnostics];\n const dependencies = /* @__PURE__ */ new Set([...module.dependencies, ...structural.dependencies]);\n const imports = new Map(\n structural.imports.map((candidateImport) => [\n candidateImport.content,\n candidateImport\n ])\n );\n for (const element of module.elements) {\n const styledDefinition = styledDefinitionFor(module, element);\n const component = host.resolveComponent(element, styledDefinition);\n if (!component) continue;\n stats.found++;\n const input = {\n id: module.id,\n source,\n target,\n module,\n element,\n styledDefinition,\n component\n };\n const commitDevelopmentDebug = (result2) => {\n const debugEdits = host.developmentDebugInstrumentation?.(input, result2);\n if (!debugEdits) return;\n validateSourceEdits(source, debugEdits);\n if (!editsAreCandidateLocal(element, debugEdits) || overlapsCommitted(debugEdits, edits)) {\n throw new Error(\"Development debug instrumentation must stay candidate-local\");\n }\n edits.push(...debugEdits);\n };\n if (!element.complete || styledDefinition && !styledDefinition.complete) {\n const reasons = [\n ...element.bailouts.map(blocking),\n ...(styledDefinition?.bailouts ?? []).map(blocking)\n ];\n diagnostics.push(...reasons);\n const reason = reasons[0];\n if (reason) commitDevelopmentDebug({ ok: false, bailout: reason });\n stats.bailed++;\n continue;\n }\n const unsafe = element.entries.map((entry) => unsafeEntry(element, entry, component, host)).find((result2) => result2 !== null);\n if (unsafe) {\n diagnostics.push(blocking(unsafe));\n commitDevelopmentDebug({ ok: false, bailout: blocking(unsafe) });\n stats.bailed++;\n continue;\n }\n let result;\n try {\n result = host.lowerCandidate(input);\n } catch (error) {\n result = {\n ok: false,\n bailout: diagnostic(\n \"local/style-resolution-failed\",\n element,\n `Style resolution failed: ${error instanceof Error ? error.message : String(error)}`\n )\n };\n }\n if (!result.ok) {\n diagnostics.push(blocking(result.bailout));\n commitDevelopmentDebug(result);\n stats.bailed++;\n continue;\n }\n try {\n validateSourceEdits(source, result.edits);\n } catch (error) {\n const reason = blocking(\n diagnostic(\n \"local/overlapping-edit\",\n element,\n error instanceof Error ? error.message : String(error)\n )\n );\n diagnostics.push(reason);\n commitDevelopmentDebug({ ok: false, bailout: reason });\n stats.bailed++;\n continue;\n }\n if (!editsAreCandidateLocal(element, result.edits) || overlapsCommitted(result.edits, edits)) {\n const reason = blocking(\n diagnostic(\n \"local/overlapping-edit\",\n element,\n \"Candidate edits overlap another candidate or escape the element span\"\n )\n );\n diagnostics.push(reason);\n commitDevelopmentDebug({ ok: false, bailout: reason });\n stats.bailed++;\n continue;\n }\n diagnostics.push(...result.diagnostics ?? []);\n edits.push(...result.edits);\n commitDevelopmentDebug(result);\n for (const rule of result.css) css.add(rule);\n for (const candidateImport of result.imports) {\n if (!imports.has(candidateImport.content)) {\n imports.set(candidateImport.content, candidateImport);\n }\n }\n for (const dependency of result.dependencies ?? []) dependencies.add(dependency);\n stats.lowered++;\n if (result.flattened) stats.flattened++;\n if (styledDefinition) stats.styled++;\n }\n for (const candidateImport of imports.values()) {\n edits.push({\n start: module.declarationsAt,\n end: module.declarationsAt,\n content: candidateImport.content,\n origin: candidateImport.origin\n });\n }\n return {\n version: LOWERED_MODULE_PLAN_VERSION,\n id: module.id,\n target,\n inputHash: module.inputHash,\n sourceHash: sourceContentHash(source),\n projectGeneration: options.projectGeneration,\n structuralPassHash: structuralPass?.versionHash ?? `${target}-noop-v1`,\n edits,\n css: [...css].join(\"\"),\n diagnostics,\n dependencies: [...dependencies].sort(compareCodeUnits),\n stats\n };\n}\nexport {\n LOWERED_MODULE_PLAN_VERSION,\n lowerModule\n};\n//# sourceMappingURL=lower.js.map\n"],"mappings":"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"}
@@ -191,6 +191,7 @@ function materializeModule(graph, id) {
191
191
  ...definition,
192
192
  value: materializeValue(graph, definition.value)
193
193
  })),
194
+ declarationsAt: result.declarationsAt,
194
195
  diagnostics: graph.diagnostics().filter(({ span }) => span.id === id)
195
196
  };
196
197
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"materialize.js","names":[],"sources":["esm/materialize.js"],"sourcesContent":["import { collectBranchDependencies } from \"./evaluate\";\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction materializeValue(graph, value) {\n if (value.kind === \"static\") {\n return {\n kind: \"static\",\n value: value.value,\n dependencies: [],\n span: value.span,\n literalOrigin: true\n };\n }\n if (value.kind === \"dom-style\") {\n return {\n kind: \"dom-style\",\n span: value.span,\n items: value.items.map((item) => ({\n condition: item.condition,\n value: materializeValue(graph, item.value)\n }))\n };\n }\n const result = graph.evaluate(value);\n if (result.ok) {\n return {\n kind: \"static\",\n value: result.value,\n dependencies: result.dependencies,\n span: value\n };\n }\n const tree = graph.evaluateBranches(value);\n if (tree) {\n return {\n kind: \"conditional\",\n tree,\n dependencies: collectBranchDependencies(tree).sort(compareCodeUnits),\n bailout: result.bailout,\n span: value\n };\n }\n return {\n kind: \"bailout\",\n bailout: result.bailout,\n span: value,\n dynamic: graph.evaluateDynamic(value)\n };\n}\nfunction materializeStyleObject(graph, reference, bailout) {\n const members = graph.objectMembers(reference);\n if (!members) return null;\n return {\n kind: \"object\",\n span: reference,\n members: members.map((member) => ({\n name: member.name,\n span: member.span,\n value: materializeValue(graph, member.value)\n })),\n bailout\n };\n}\nfunction materializeEntry(graph, entry) {\n if (entry.kind === \"prop\") {\n const value = materializeValue(graph, entry.value);\n return {\n kind: entry.kind,\n name: entry.name,\n span: entry.span,\n value: entry.name === \"style\" && value.kind === \"bailout\" && entry.value.kind === \"expression\" ? materializeStyleObject(graph, entry.value, value.bailout) ?? value : value\n };\n }\n if (entry.kind === \"spread\") {\n return {\n kind: entry.kind,\n span: entry.span,\n value: materializeValue(graph, entry.value)\n };\n }\n if (entry.value.kind === \"element\" || entry.value.kind === \"empty\") {\n return { kind: entry.kind, span: entry.span, value: entry.value };\n }\n return {\n kind: entry.kind,\n span: entry.span,\n value: materializeValue(graph, entry.value)\n };\n}\nfunction materializeElement(graph, element) {\n const entries = element.complete ? element.entries : element.bailedEntries;\n return {\n kind: element.kind,\n form: element.form,\n id: element.id,\n span: element.span,\n propsSpan: element.propsSpan,\n component: element.component,\n complete: element.complete,\n entries: entries.map((entry) => materializeEntry(graph, entry)),\n bailouts: [...element.bailouts]\n };\n}\nfunction materializeStyledDefinition(graph, definition) {\n return {\n kind: definition.kind,\n id: definition.id,\n name: definition.name,\n span: definition.span,\n definitionSpan: definition.definitionSpan,\n factory: definition.factory,\n base: definition.base,\n baseClassName: definition.baseClassName ? materializeValue(graph, definition.baseClassName) : null,\n options: materializeValue(graph, definition.options),\n staticConfig: definition.staticConfig ? materializeValue(graph, definition.staticConfig) : null,\n complete: definition.complete,\n bailouts: [...definition.bailouts]\n };\n}\nfunction collectDependencies(module) {\n const dependencies = /* @__PURE__ */ new Set();\n const collect = (value) => {\n if (value.kind === \"static\" || value.kind === \"conditional\") {\n for (const dependency of value.dependencies) dependencies.add(dependency);\n } else if (value.kind === \"dom-style\") {\n for (const item of value.items) collect(item.value);\n } else if (value.kind === \"object\") {\n for (const member of value.members) collect(member.value);\n if (value.bailout.dependencyId) dependencies.add(value.bailout.dependencyId);\n } else {\n for (const dependency of value.dynamic?.dependencies ?? []) {\n dependencies.add(dependency);\n }\n if (value.bailout.dependencyId) dependencies.add(value.bailout.dependencyId);\n }\n };\n for (const element of module.elements) {\n if (element.component.provenance) {\n dependencies.add(element.component.provenance.resolvedId);\n }\n if (element.component.definition) dependencies.add(element.component.definition.id);\n for (const entry of element.entries) {\n if (\"value\" in entry && entry.value.kind !== \"element\" && entry.value.kind !== \"empty\") {\n collect(entry.value);\n }\n }\n }\n for (const definition of module.styledDefinitions) {\n dependencies.add(definition.factory.resolvedId);\n if (definition.base.provenance)\n dependencies.add(definition.base.provenance.resolvedId);\n if (definition.base.definition) dependencies.add(definition.base.definition.id);\n if (definition.baseClassName) collect(definition.baseClassName);\n collect(definition.options);\n if (definition.staticConfig) collect(definition.staticConfig);\n }\n for (const definition of module.domStyleDefinitions) {\n dependencies.add(definition.factory.resolvedId);\n collect(definition.value);\n }\n return [...dependencies].sort(compareCodeUnits);\n}\nfunction materializeModule(graph, id) {\n const inputHash = graph.contentHash(id);\n if (!inputHash) throw new Error(`Cannot materialize unknown host module ${id}`);\n const result = graph.elementsOf(id);\n const definitions = [...result.styledDefinitions];\n const definitionKeys = new Set(\n definitions.map((definition) => `${definition.id}\\0${definition.name}`)\n );\n for (const element of result.elements) {\n const linked = element.component.definition;\n if (!linked || linked.id === id) continue;\n const definition = graph.elementsOf(linked.id).styledDefinitions.find(\n (candidate) => candidate.id === linked.id && candidate.name === linked.name\n );\n const key = definition && `${definition.id}\\0${definition.name}`;\n if (definition && key && !definitionKeys.has(key)) {\n definitionKeys.add(key);\n definitions.push(definition);\n }\n }\n const base = {\n version: 1,\n id,\n inputHash,\n elements: result.elements.map((element) => materializeElement(graph, element)),\n styledDefinitions: definitions.map(\n (definition) => materializeStyledDefinition(graph, definition)\n ),\n domStyleDefinitions: result.domStyleDefinitions.map((definition) => ({\n ...definition,\n value: materializeValue(graph, definition.value)\n })),\n diagnostics: graph.diagnostics().filter(({ span }) => span.id === id)\n };\n return { ...base, dependencies: collectDependencies(base) };\n}\nexport {\n materializeModule\n};\n//# sourceMappingURL=materialize.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"materialize.js","names":[],"sources":["esm/materialize.js"],"sourcesContent":["import { collectBranchDependencies } from \"./evaluate\";\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction materializeValue(graph, value) {\n if (value.kind === \"static\") {\n return {\n kind: \"static\",\n value: value.value,\n dependencies: [],\n span: value.span,\n literalOrigin: true\n };\n }\n if (value.kind === \"dom-style\") {\n return {\n kind: \"dom-style\",\n span: value.span,\n items: value.items.map((item) => ({\n condition: item.condition,\n value: materializeValue(graph, item.value)\n }))\n };\n }\n const result = graph.evaluate(value);\n if (result.ok) {\n return {\n kind: \"static\",\n value: result.value,\n dependencies: result.dependencies,\n span: value\n };\n }\n const tree = graph.evaluateBranches(value);\n if (tree) {\n return {\n kind: \"conditional\",\n tree,\n dependencies: collectBranchDependencies(tree).sort(compareCodeUnits),\n bailout: result.bailout,\n span: value\n };\n }\n return {\n kind: \"bailout\",\n bailout: result.bailout,\n span: value,\n dynamic: graph.evaluateDynamic(value)\n };\n}\nfunction materializeStyleObject(graph, reference, bailout) {\n const members = graph.objectMembers(reference);\n if (!members) return null;\n return {\n kind: \"object\",\n span: reference,\n members: members.map((member) => ({\n name: member.name,\n span: member.span,\n value: materializeValue(graph, member.value)\n })),\n bailout\n };\n}\nfunction materializeEntry(graph, entry) {\n if (entry.kind === \"prop\") {\n const value = materializeValue(graph, entry.value);\n return {\n kind: entry.kind,\n name: entry.name,\n span: entry.span,\n value: entry.name === \"style\" && value.kind === \"bailout\" && entry.value.kind === \"expression\" ? materializeStyleObject(graph, entry.value, value.bailout) ?? value : value\n };\n }\n if (entry.kind === \"spread\") {\n return {\n kind: entry.kind,\n span: entry.span,\n value: materializeValue(graph, entry.value)\n };\n }\n if (entry.value.kind === \"element\" || entry.value.kind === \"empty\") {\n return { kind: entry.kind, span: entry.span, value: entry.value };\n }\n return {\n kind: entry.kind,\n span: entry.span,\n value: materializeValue(graph, entry.value)\n };\n}\nfunction materializeElement(graph, element) {\n const entries = element.complete ? element.entries : element.bailedEntries;\n return {\n kind: element.kind,\n form: element.form,\n id: element.id,\n span: element.span,\n propsSpan: element.propsSpan,\n component: element.component,\n complete: element.complete,\n entries: entries.map((entry) => materializeEntry(graph, entry)),\n bailouts: [...element.bailouts]\n };\n}\nfunction materializeStyledDefinition(graph, definition) {\n return {\n kind: definition.kind,\n id: definition.id,\n name: definition.name,\n span: definition.span,\n definitionSpan: definition.definitionSpan,\n factory: definition.factory,\n base: definition.base,\n baseClassName: definition.baseClassName ? materializeValue(graph, definition.baseClassName) : null,\n options: materializeValue(graph, definition.options),\n staticConfig: definition.staticConfig ? materializeValue(graph, definition.staticConfig) : null,\n complete: definition.complete,\n bailouts: [...definition.bailouts]\n };\n}\nfunction collectDependencies(module) {\n const dependencies = /* @__PURE__ */ new Set();\n const collect = (value) => {\n if (value.kind === \"static\" || value.kind === \"conditional\") {\n for (const dependency of value.dependencies) dependencies.add(dependency);\n } else if (value.kind === \"dom-style\") {\n for (const item of value.items) collect(item.value);\n } else if (value.kind === \"object\") {\n for (const member of value.members) collect(member.value);\n if (value.bailout.dependencyId) dependencies.add(value.bailout.dependencyId);\n } else {\n for (const dependency of value.dynamic?.dependencies ?? []) {\n dependencies.add(dependency);\n }\n if (value.bailout.dependencyId) dependencies.add(value.bailout.dependencyId);\n }\n };\n for (const element of module.elements) {\n if (element.component.provenance) {\n dependencies.add(element.component.provenance.resolvedId);\n }\n if (element.component.definition) dependencies.add(element.component.definition.id);\n for (const entry of element.entries) {\n if (\"value\" in entry && entry.value.kind !== \"element\" && entry.value.kind !== \"empty\") {\n collect(entry.value);\n }\n }\n }\n for (const definition of module.styledDefinitions) {\n dependencies.add(definition.factory.resolvedId);\n if (definition.base.provenance)\n dependencies.add(definition.base.provenance.resolvedId);\n if (definition.base.definition) dependencies.add(definition.base.definition.id);\n if (definition.baseClassName) collect(definition.baseClassName);\n collect(definition.options);\n if (definition.staticConfig) collect(definition.staticConfig);\n }\n for (const definition of module.domStyleDefinitions) {\n dependencies.add(definition.factory.resolvedId);\n collect(definition.value);\n }\n return [...dependencies].sort(compareCodeUnits);\n}\nfunction materializeModule(graph, id) {\n const inputHash = graph.contentHash(id);\n if (!inputHash) throw new Error(`Cannot materialize unknown host module ${id}`);\n const result = graph.elementsOf(id);\n const definitions = [...result.styledDefinitions];\n const definitionKeys = new Set(\n definitions.map((definition) => `${definition.id}\\0${definition.name}`)\n );\n for (const element of result.elements) {\n const linked = element.component.definition;\n if (!linked || linked.id === id) continue;\n const definition = graph.elementsOf(linked.id).styledDefinitions.find(\n (candidate) => candidate.id === linked.id && candidate.name === linked.name\n );\n const key = definition && `${definition.id}\\0${definition.name}`;\n if (definition && key && !definitionKeys.has(key)) {\n definitionKeys.add(key);\n definitions.push(definition);\n }\n }\n const base = {\n version: 1,\n id,\n inputHash,\n elements: result.elements.map((element) => materializeElement(graph, element)),\n styledDefinitions: definitions.map(\n (definition) => materializeStyledDefinition(graph, definition)\n ),\n domStyleDefinitions: result.domStyleDefinitions.map((definition) => ({\n ...definition,\n value: materializeValue(graph, definition.value)\n })),\n declarationsAt: result.declarationsAt,\n diagnostics: graph.diagnostics().filter(({ span }) => span.id === id)\n };\n return { ...base, dependencies: collectDependencies(base) };\n}\nexport {\n materializeModule\n};\n//# sourceMappingURL=materialize.js.map\n"],"mappings":"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"}
@@ -586,9 +586,19 @@ function normalizeElements(candidate, rawId, imports = []) {
586
586
  elements: elements.sort((left, right) => left.span.start - right.span.start),
587
587
  styledDefinitions: styledDefinitions(candidate, id, program, imports, bailouts),
588
588
  domStyleDefinitions: domStyleDefinitions(id, program, imports),
589
+ declarationsAt: declarationsOffset(program),
589
590
  bailouts: bailouts.sort((left, right) => left.span.start - right.span.start)
590
591
  };
591
592
  }
593
+ function declarationsOffset(program) {
594
+ let offset = 0;
595
+ for (const statement of childNodes(program, "body")) {
596
+ if (statement.type === "ImportDeclaration" || typeof statement.directive === "string") {
597
+ offset = statement.end;
598
+ } else break;
599
+ }
600
+ return offset;
601
+ }
592
602
  function nodeAtSpan(program, start, end) {
593
603
  return findAstNode(program, (node) => node.start === start && node.end === end, {
594
604
  start,
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","names":[],"sources":["esm/normalize.js"],"sourcesContent":["import {\n childNode,\n childNodes,\n findAstNode,\n identifierName,\n isAstNode,\n walkAst\n} from \"./ast\";\nimport {\n expressionReference,\n resolvedModuleId,\n spanOf\n} from \"./contracts\";\nimport { linkedBailout, localBailout } from \"./diagnostics\";\nimport { hostImportProvenance } from \"./ir\";\nfunction finalizeElement(base, entries, bailouts) {\n if (bailouts.length === 0) {\n return { ...base, complete: true, entries, bailouts: [] };\n }\n return {\n ...base,\n complete: false,\n bailedEntries: entries,\n bailouts\n };\n}\nfunction definitionFromDeclaration(id, name, declaration, parentOf) {\n let identifier = declaration;\n let initializer = null;\n let constant = false;\n if (declaration.type === \"VariableDeclarator\") {\n identifier = childNode(declaration, \"id\") ?? declaration;\n initializer = childNode(declaration, \"init\");\n const parent = parentOf(declaration);\n constant = parent?.type === \"VariableDeclaration\" && parent.kind === \"const\";\n } else if (declaration.type === \"Identifier\") {\n const declarator = parentOf(declaration);\n if (declarator?.type === \"VariableDeclarator\" && childNode(declarator, \"id\")?.start === declaration.start) {\n initializer = childNode(declarator, \"init\");\n const parent = parentOf(declarator);\n constant = parent?.type === \"VariableDeclaration\" && parent.kind === \"const\";\n }\n }\n return {\n id: resolvedModuleId(id),\n name,\n start: identifier.start,\n end: identifier.end,\n initializer,\n constant\n };\n}\nfunction importBinding(program, localName) {\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n const source = childNode(statement, \"source\");\n const sourceValue = source && typeof source.value === \"string\" ? source.value : null;\n if (!sourceValue) continue;\n for (const specifier of childNodes(statement, \"specifiers\")) {\n if (identifierName(childNode(specifier, \"local\")) !== localName) continue;\n if (specifier.type === \"ImportDefaultSpecifier\") {\n return { source: sourceValue, imported: \"default\" };\n }\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n return { source: sourceValue, imported: \"*\" };\n }\n const imported = childNode(specifier, \"imported\");\n const importedName = identifierName(imported) ?? (typeof imported?.value === \"string\" ? imported.value : null);\n return importedName ? { source: sourceValue, imported: importedName } : null;\n }\n }\n return null;\n}\nfunction asStaticValue(node) {\n if (!node) return void 0;\n if (node.type === \"NullLiteral\") return null;\n if (node.type === \"Literal\" || node.type.endsWith(\"Literal\")) {\n const value = node.value;\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null) {\n return value;\n }\n }\n return void 0;\n}\nfunction elementValue(id, node) {\n const staticValue = asStaticValue(node);\n return staticValue === void 0 ? expressionReference(id, node) : { kind: \"static\", value: staticValue, span: spanOf(id, node) };\n}\nfunction symbolDefinition(definition) {\n if (!definition) return null;\n return {\n id: definition.id,\n name: definition.name,\n span: {\n id: definition.id,\n start: definition.start,\n end: definition.end\n },\n initializer: definition.initializer ? expressionReference(definition.id, definition.initializer) : null,\n constant: definition.constant\n };\n}\nfunction componentFromNode(candidate, id, program, imports, node, bailouts) {\n const literal = asStaticValue(node);\n if (typeof literal === \"string\") {\n return {\n kind: \"intrinsic\",\n name: literal,\n span: spanOf(id, node),\n closingSpan: null,\n definition: null,\n provenance: null\n };\n }\n if ((node.type === \"MemberExpression\" || node.type === \"JSXMemberExpression\") && node.computed !== true) {\n const objectName = identifierName(childNode(node, \"object\"));\n const memberName = identifierName(childNode(node, \"property\"));\n const binding2 = objectName ? importBinding(program, objectName) : null;\n if (memberName && binding2?.imported === \"html\") {\n const provenance2 = hostImportProvenance(imports, binding2.source, binding2.imported);\n if (provenance2) {\n return {\n kind: \"binding\",\n name: memberName,\n span: spanOf(id, node),\n closingSpan: null,\n definition: null,\n provenance: provenance2\n };\n }\n }\n }\n const name = identifierName(node);\n if (!name) {\n bailouts.push(\n localBailout(\n \"local/unsupported-element-name\",\n spanOf(id, node),\n `Element target ${node.type} is not a stable identifier or intrinsic tag`\n )\n );\n return null;\n }\n const intrinsic = /^[a-z]/.test(name);\n const binding = intrinsic ? null : importBinding(program, name);\n const provenance = binding ? hostImportProvenance(imports, binding.source, binding.imported) : null;\n const definition = intrinsic ? null : symbolDefinition(candidate.definitionOf(id, name));\n if (!intrinsic && !definition && !provenance) {\n bailouts.push(\n linkedBailout(\n \"linked/unresolved-component-binding\",\n spanOf(id, node),\n `Component binding ${name} has no linked definition`\n )\n );\n }\n return {\n kind: intrinsic ? \"intrinsic\" : \"binding\",\n name,\n span: spanOf(id, node),\n closingSpan: null,\n definition,\n provenance\n };\n}\nfunction jsxComponentNode(opening) {\n return childNode(opening, \"name\");\n}\nfunction jsxEntries(id, element, opening, bailouts) {\n const entries = [];\n for (const attribute of childNodes(opening, \"attributes\")) {\n if (attribute.type === \"JSXSpreadAttribute\") {\n const argument = childNode(attribute, \"argument\");\n if (argument) {\n entries.push({\n kind: \"spread\",\n span: spanOf(id, attribute),\n value: expressionReference(id, argument)\n });\n }\n continue;\n }\n if (attribute.type !== \"JSXAttribute\") continue;\n const nameNode = childNode(attribute, \"name\");\n const name = identifierName(nameNode);\n if (!name) {\n bailouts.push(\n localBailout(\n \"local/unsupported-prop-key\",\n spanOf(id, attribute),\n \"Namespaced JSX attributes are not statically supported\"\n )\n );\n continue;\n }\n const rawValue = childNode(attribute, \"value\");\n let value;\n if (!rawValue) {\n value = { kind: \"static\", value: true, span: spanOf(id, attribute) };\n } else if (rawValue.type === \"JSXExpressionContainer\") {\n const expression = childNode(rawValue, \"expression\");\n if (!expression || expression.type === \"JSXEmptyExpression\") {\n bailouts.push(\n localBailout(\n \"local/unsupported-expression\",\n spanOf(id, rawValue),\n `JSX prop ${name} has no expression`\n )\n );\n continue;\n }\n value = elementValue(id, expression);\n } else {\n value = elementValue(id, rawValue);\n }\n entries.push({ kind: \"prop\", name, span: spanOf(id, attribute), value });\n }\n for (const child of childNodes(element, \"children\")) {\n let value;\n if (child.type === \"JSXText\") {\n if (typeof child.value !== \"string\" || child.value.trim() === \"\") continue;\n value = {\n kind: \"static\",\n value: child.value,\n span: spanOf(id, child)\n };\n } else if (child.type === \"JSXExpressionContainer\") {\n const expression = childNode(child, \"expression\");\n value = !expression || expression.type === \"JSXEmptyExpression\" ? { kind: \"empty\", span: spanOf(id, child) } : elementValue(id, expression);\n } else if (child.type === \"JSXElement\" || child.type === \"JSXFragment\") {\n value = { kind: \"element\", span: spanOf(id, child) };\n } else {\n bailouts.push(\n localBailout(\n \"local/unsupported-child\",\n spanOf(id, child),\n `JSX child ${child.type} cannot be normalized`\n )\n );\n continue;\n }\n entries.push({ kind: \"child\", span: spanOf(id, child), value });\n }\n return entries.sort((left, right) => left.span.start - right.span.start);\n}\nfunction propertyName(property) {\n if (property.computed === true) return null;\n const key = childNode(property, \"key\");\n const name = identifierName(key);\n if (name) return name;\n const literal = asStaticValue(key);\n return typeof literal === \"string\" || typeof literal === \"number\" ? String(literal) : null;\n}\nfunction runtimeChildEntries(id, program, node, bailouts) {\n const rawNodes = node.type === \"ArrayExpression\" ? node.elements : null;\n if (Array.isArray(rawNodes) && rawNodes.some((child) => child === null || !isAstNode(child))) {\n bailouts.push(\n localBailout(\n \"local/unsupported-child\",\n spanOf(id, node),\n \"Sparse compiled children cannot be normalized without changing order\"\n )\n );\n return [];\n }\n const nodes = Array.isArray(rawNodes) ? rawNodes.filter(isAstNode) : [node];\n return nodes.flatMap((child) => {\n if (child.type === \"SpreadElement\") {\n bailouts.push(\n localBailout(\n \"local/unsupported-child\",\n spanOf(id, child),\n \"Spread children cannot be statically ordered\"\n )\n );\n return [];\n }\n if (child.type === \"CallExpression\" && runtimeCall(program, child)) {\n return [\n {\n kind: \"child\",\n span: spanOf(id, child),\n value: { kind: \"element\", span: spanOf(id, child) }\n }\n ];\n }\n return [{ kind: \"child\", span: spanOf(id, child), value: elementValue(id, child) }];\n });\n}\nfunction objectEntries(id, program, object, bailouts) {\n const entries = [];\n for (const property of childNodes(object, \"properties\")) {\n if (property.type === \"SpreadElement\") {\n const argument = childNode(property, \"argument\");\n if (argument) {\n const spread = {\n kind: \"spread\",\n span: spanOf(id, property),\n value: expressionReference(id, argument)\n };\n entries.push(spread);\n }\n continue;\n }\n if (property.type !== \"Property\" && property.type !== \"ObjectProperty\") {\n bailouts.push(\n localBailout(\n \"local/unsupported-prop-key\",\n spanOf(id, property),\n `Runtime props entry ${property.type} is not a data property`\n )\n );\n continue;\n }\n const name = propertyName(property);\n const valueNode = childNode(property, \"value\");\n if (!name || !valueNode) {\n bailouts.push(\n localBailout(\n \"local/unsupported-prop-key\",\n spanOf(id, property),\n \"Computed runtime prop keys are not statically supported\"\n )\n );\n continue;\n }\n if (name === \"children\") {\n entries.push(...runtimeChildEntries(id, program, valueNode, bailouts));\n continue;\n }\n const prop = {\n kind: \"prop\",\n name,\n span: spanOf(id, property),\n value: elementValue(id, valueNode)\n };\n entries.push(prop);\n }\n return entries;\n}\nfunction runtimeCall(program, call) {\n const callee = childNode(call, \"callee\");\n if (!callee) return null;\n const directName = identifierName(callee);\n if (directName) {\n const provenance2 = importBinding(program, directName);\n if (provenance2?.source === \"react/jsx-runtime\" && (provenance2.imported === \"jsx\" || provenance2.imported === \"jsxs\")) {\n return { form: \"jsx-runtime\" };\n }\n if (provenance2?.source === \"react\" && provenance2.imported === \"createElement\") {\n return { form: \"create-element\" };\n }\n }\n if (callee.type !== \"MemberExpression\" || callee.computed === true) return null;\n const objectName = identifierName(childNode(callee, \"object\"));\n const propertyName2 = identifierName(childNode(callee, \"property\"));\n if (propertyName2 !== \"createElement\" || !objectName) return null;\n const provenance = importBinding(program, objectName);\n return provenance?.source === \"react\" && (provenance.imported === \"default\" || provenance.imported === \"*\") ? { form: \"create-element\" } : null;\n}\nfunction normalizeRuntimeElement(candidate, id, program, imports, call, runtime, bailouts) {\n const bailoutStart = bailouts.length;\n const args = childNodes(call, \"arguments\");\n const target = args[0];\n if (!target) {\n bailouts.push(\n localBailout(\n \"local/invalid-element-call\",\n spanOf(id, call),\n `${runtime.form} call has no element target`\n )\n );\n return null;\n }\n const component = componentFromNode(candidate, id, program, imports, target, bailouts);\n if (!component) return null;\n const entries = [];\n const props = args[1];\n if (props && asStaticValue(props) !== null) {\n if (props.type === \"ObjectExpression\") {\n entries.push(...objectEntries(id, program, props, bailouts));\n } else {\n entries.push({\n kind: \"spread\",\n span: spanOf(id, props),\n value: expressionReference(id, props)\n });\n }\n }\n if (runtime.form === \"create-element\") {\n for (const child of args.slice(2)) {\n entries.push(...runtimeChildEntries(id, program, child, bailouts));\n }\n }\n return finalizeElement(\n {\n kind: \"element\",\n form: runtime.form,\n id,\n span: spanOf(id, call),\n propsSpan: props ? spanOf(id, props) : null,\n component\n },\n entries.sort((left, right) => left.span.start - right.span.start),\n bailouts.slice(bailoutStart)\n );\n}\nfunction styledDefinitions(candidate, id, program, imports, bailouts) {\n const definitions = [];\n walkAst(program, (node) => {\n if (node.type !== \"VariableDeclarator\") return;\n const identifier = childNode(node, \"id\");\n const name = identifierName(identifier);\n const call = childNode(node, \"init\");\n if (!name || !identifier || call?.type !== \"CallExpression\") return;\n const callee = childNode(call, \"callee\");\n const factoryName = callee && identifierName(callee);\n if (!factoryName) return;\n const binding = importBinding(program, factoryName);\n if (!binding || binding.imported !== \"styled\") return;\n const factory = hostImportProvenance(imports, binding.source, binding.imported);\n if (!factory) return;\n const definitionBailouts = [];\n const args = childNodes(call, \"arguments\");\n const baseNode = args[0];\n const objectForm = args[1]?.type === \"ObjectExpression\";\n const optionsNode = objectForm ? args[1] : args.length >= 3 ? args[2] : args[1];\n if (!baseNode || !optionsNode) {\n definitionBailouts.push(\n localBailout(\n \"local/unsupported-styled-definition\",\n spanOf(id, call),\n `styled definition ${name} must provide a base and options object`\n )\n );\n bailouts.push(...definitionBailouts);\n return;\n }\n const base = componentFromNode(\n candidate,\n id,\n program,\n imports,\n baseNode,\n definitionBailouts\n );\n if (!base) {\n bailouts.push(...definitionBailouts);\n return;\n }\n const baseClassNode = objectForm ? null : args.length >= 3 ? args[1] : null;\n const staticConfigNode = objectForm && args.length >= 3 ? args[2] : null;\n const baseDefinition = {\n kind: \"styled-definition\",\n id,\n name,\n span: spanOf(id, call),\n definitionSpan: spanOf(id, identifier),\n factory,\n base,\n baseClassName: baseClassNode ? elementValue(id, baseClassNode) : null,\n options: expressionReference(id, optionsNode),\n staticConfig: staticConfigNode ? expressionReference(id, staticConfigNode) : null\n };\n definitions.push(\n definitionBailouts.length === 0 ? { ...baseDefinition, complete: true, bailouts: [] } : {\n ...baseDefinition,\n complete: false,\n bailouts: definitionBailouts\n }\n );\n bailouts.push(...definitionBailouts);\n });\n return definitions.sort((left, right) => left.span.start - right.span.start);\n}\nconst DOM_STYLE_FRONTENDS = /* @__PURE__ */ new Set([\n \"tamagui/dom\",\n \"@tamagui/core/dom\",\n \"@tamagui/tailwind\"\n]);\nconst STYLE_FRONTENDS = /* @__PURE__ */ new Set([\n ...DOM_STYLE_FRONTENDS,\n \"tamagui\",\n \"@tamagui/core\",\n \"@tamagui/web\"\n]);\nfunction domStyleDefinitions(id, program, imports) {\n const definitions = [];\n walkAst(program, (node) => {\n if (node.type !== \"VariableDeclarator\") return;\n const identifier = childNode(node, \"id\");\n const name = identifierName(identifier);\n const call = childNode(node, \"init\");\n if (!name || !identifier || call?.type !== \"CallExpression\") return;\n const callee = childNode(call, \"callee\");\n const factoryName = callee && identifierName(callee);\n if (!factoryName) return;\n const binding = importBinding(program, factoryName);\n if (!binding || binding.imported !== \"style\" || !STYLE_FRONTENDS.has(binding.source)) {\n return;\n }\n const factory = hostImportProvenance(imports, binding.source, binding.imported);\n const value = childNodes(call, \"arguments\")[0];\n if (!factory || !value) return;\n definitions.push({\n kind: \"dom-style-definition\",\n id,\n name,\n span: spanOf(id, call),\n definitionSpan: spanOf(id, identifier),\n factory,\n value: expressionReference(id, value)\n });\n });\n return definitions.sort((left, right) => left.span.start - right.span.start);\n}\nfunction domStyleArgument(candidate, id, program, node) {\n let call = node;\n if (node.type === \"Identifier\") {\n const name = identifierName(node);\n const definition = name ? candidate.definitionOf(id, name) : null;\n if (!definition?.constant || !definition.initializer) return null;\n call = definition.initializer;\n }\n if (call.type !== \"CallExpression\") return null;\n const callee = childNode(call, \"callee\");\n const factoryName = callee && identifierName(callee);\n if (!factoryName) return null;\n const binding = importBinding(program, factoryName);\n if (!binding || binding.imported !== \"style\" || !STYLE_FRONTENDS.has(binding.source)) {\n return null;\n }\n return childNodes(call, \"arguments\")[0] ?? null;\n}\nfunction domStyleProgram(candidate, id, program, node) {\n if (node.type !== \"ArrayExpression\" || !Array.isArray(node.elements)) {\n const argument = domStyleArgument(candidate, id, program, node);\n return argument ? {\n kind: \"dom-style\",\n span: spanOf(id, node),\n items: [{ condition: null, value: expressionReference(id, argument) }]\n } : null;\n }\n const items = [];\n for (const rawItem of node.elements) {\n if (!isAstNode(rawItem)) return null;\n let item = rawItem;\n let condition = null;\n if (item.type === \"LogicalExpression\" && item.operator === \"&&\") {\n const left = childNode(item, \"left\");\n const right = childNode(item, \"right\");\n if (!left || !right) return null;\n condition = expressionReference(id, left);\n item = right;\n }\n const argument = domStyleArgument(candidate, id, program, item);\n if (!argument) {\n const staticValue = asStaticValue(item);\n if (staticValue === false || staticValue === null) continue;\n return null;\n }\n items.push({ condition, value: expressionReference(id, argument) });\n }\n return { kind: \"dom-style\", span: spanOf(id, node), items };\n}\nfunction normalizeElements(candidate, rawId, imports = []) {\n const id = resolvedModuleId(rawId);\n const program = candidate.programOf(id);\n const elements = [];\n const bailouts = [];\n walkAst(program, (node) => {\n if (node.type === \"JSXElement\") {\n const bailoutStart = bailouts.length;\n const opening = childNode(node, \"openingElement\");\n const target = opening && jsxComponentNode(opening);\n if (!opening || !target) return;\n const component = componentFromNode(\n candidate,\n id,\n program,\n imports,\n target,\n bailouts\n );\n if (!component) return;\n const closingElement = childNode(node, \"closingElement\");\n const closingName = closingElement && childNode(closingElement, \"name\");\n if (closingName) component.closingSpan = spanOf(id, closingName);\n const entries = jsxEntries(id, node, opening, bailouts);\n for (const entry of entries) {\n if (entry.kind !== \"prop\" || entry.name !== \"style\") continue;\n const raw = entry.value.kind === \"expression\" ? nodeAtSpan(program, entry.value.start, entry.value.end) : null;\n const styleProgram = raw && domStyleProgram(candidate, id, program, raw);\n const argument = raw && domStyleArgument(candidate, id, program, raw);\n if (styleProgram) entry.value = styleProgram;\n else if (argument) entry.value = expressionReference(id, argument);\n }\n elements.push(\n finalizeElement(\n {\n kind: \"element\",\n form: \"jsx\",\n id,\n span: spanOf(id, node),\n propsSpan: spanOf(id, opening),\n component\n },\n entries,\n bailouts.slice(bailoutStart)\n )\n );\n return;\n }\n if (node.type !== \"CallExpression\") return;\n const runtime = runtimeCall(program, node);\n if (!runtime) return;\n const element = normalizeRuntimeElement(\n candidate,\n id,\n program,\n imports,\n node,\n runtime,\n bailouts\n );\n if (element) {\n const entries = element.complete ? element.entries : element.bailedEntries;\n for (const entry of entries) {\n if (entry.kind !== \"prop\" || entry.name !== \"style\") continue;\n const raw = entry.value.kind === \"expression\" ? nodeAtSpan(program, entry.value.start, entry.value.end) : null;\n const styleProgram = raw && domStyleProgram(candidate, id, program, raw);\n const argument = raw && domStyleArgument(candidate, id, program, raw);\n if (styleProgram) entry.value = styleProgram;\n else if (argument) entry.value = expressionReference(id, argument);\n }\n elements.push(element);\n }\n });\n return {\n elements: elements.sort((left, right) => left.span.start - right.span.start),\n styledDefinitions: styledDefinitions(candidate, id, program, imports, bailouts),\n domStyleDefinitions: domStyleDefinitions(id, program, imports),\n bailouts: bailouts.sort((left, right) => left.span.start - right.span.start)\n };\n}\nfunction nodeAtSpan(program, start, end) {\n return findAstNode(program, (node) => node.start === start && node.end === end, {\n start,\n end\n });\n}\nfunction asAstNode(value, label) {\n if (!isAstNode(value)) throw new Error(`${label} is not an AST node`);\n return value;\n}\nexport {\n asAstNode,\n definitionFromDeclaration,\n nodeAtSpan,\n normalizeElements\n};\n//# sourceMappingURL=normalize.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"normalize.js","names":[],"sources":["esm/normalize.js"],"sourcesContent":["import {\n childNode,\n childNodes,\n findAstNode,\n identifierName,\n isAstNode,\n walkAst\n} from \"./ast\";\nimport {\n expressionReference,\n resolvedModuleId,\n spanOf\n} from \"./contracts\";\nimport { linkedBailout, localBailout } from \"./diagnostics\";\nimport { hostImportProvenance } from \"./ir\";\nfunction finalizeElement(base, entries, bailouts) {\n if (bailouts.length === 0) {\n return { ...base, complete: true, entries, bailouts: [] };\n }\n return {\n ...base,\n complete: false,\n bailedEntries: entries,\n bailouts\n };\n}\nfunction definitionFromDeclaration(id, name, declaration, parentOf) {\n let identifier = declaration;\n let initializer = null;\n let constant = false;\n if (declaration.type === \"VariableDeclarator\") {\n identifier = childNode(declaration, \"id\") ?? declaration;\n initializer = childNode(declaration, \"init\");\n const parent = parentOf(declaration);\n constant = parent?.type === \"VariableDeclaration\" && parent.kind === \"const\";\n } else if (declaration.type === \"Identifier\") {\n const declarator = parentOf(declaration);\n if (declarator?.type === \"VariableDeclarator\" && childNode(declarator, \"id\")?.start === declaration.start) {\n initializer = childNode(declarator, \"init\");\n const parent = parentOf(declarator);\n constant = parent?.type === \"VariableDeclaration\" && parent.kind === \"const\";\n }\n }\n return {\n id: resolvedModuleId(id),\n name,\n start: identifier.start,\n end: identifier.end,\n initializer,\n constant\n };\n}\nfunction importBinding(program, localName) {\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n const source = childNode(statement, \"source\");\n const sourceValue = source && typeof source.value === \"string\" ? source.value : null;\n if (!sourceValue) continue;\n for (const specifier of childNodes(statement, \"specifiers\")) {\n if (identifierName(childNode(specifier, \"local\")) !== localName) continue;\n if (specifier.type === \"ImportDefaultSpecifier\") {\n return { source: sourceValue, imported: \"default\" };\n }\n if (specifier.type === \"ImportNamespaceSpecifier\") {\n return { source: sourceValue, imported: \"*\" };\n }\n const imported = childNode(specifier, \"imported\");\n const importedName = identifierName(imported) ?? (typeof imported?.value === \"string\" ? imported.value : null);\n return importedName ? { source: sourceValue, imported: importedName } : null;\n }\n }\n return null;\n}\nfunction asStaticValue(node) {\n if (!node) return void 0;\n if (node.type === \"NullLiteral\") return null;\n if (node.type === \"Literal\" || node.type.endsWith(\"Literal\")) {\n const value = node.value;\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null) {\n return value;\n }\n }\n return void 0;\n}\nfunction elementValue(id, node) {\n const staticValue = asStaticValue(node);\n return staticValue === void 0 ? expressionReference(id, node) : { kind: \"static\", value: staticValue, span: spanOf(id, node) };\n}\nfunction symbolDefinition(definition) {\n if (!definition) return null;\n return {\n id: definition.id,\n name: definition.name,\n span: {\n id: definition.id,\n start: definition.start,\n end: definition.end\n },\n initializer: definition.initializer ? expressionReference(definition.id, definition.initializer) : null,\n constant: definition.constant\n };\n}\nfunction componentFromNode(candidate, id, program, imports, node, bailouts) {\n const literal = asStaticValue(node);\n if (typeof literal === \"string\") {\n return {\n kind: \"intrinsic\",\n name: literal,\n span: spanOf(id, node),\n closingSpan: null,\n definition: null,\n provenance: null\n };\n }\n if ((node.type === \"MemberExpression\" || node.type === \"JSXMemberExpression\") && node.computed !== true) {\n const objectName = identifierName(childNode(node, \"object\"));\n const memberName = identifierName(childNode(node, \"property\"));\n const binding2 = objectName ? importBinding(program, objectName) : null;\n if (memberName && binding2?.imported === \"html\") {\n const provenance2 = hostImportProvenance(imports, binding2.source, binding2.imported);\n if (provenance2) {\n return {\n kind: \"binding\",\n name: memberName,\n span: spanOf(id, node),\n closingSpan: null,\n definition: null,\n provenance: provenance2\n };\n }\n }\n }\n const name = identifierName(node);\n if (!name) {\n bailouts.push(\n localBailout(\n \"local/unsupported-element-name\",\n spanOf(id, node),\n `Element target ${node.type} is not a stable identifier or intrinsic tag`\n )\n );\n return null;\n }\n const intrinsic = /^[a-z]/.test(name);\n const binding = intrinsic ? null : importBinding(program, name);\n const provenance = binding ? hostImportProvenance(imports, binding.source, binding.imported) : null;\n const definition = intrinsic ? null : symbolDefinition(candidate.definitionOf(id, name));\n if (!intrinsic && !definition && !provenance) {\n bailouts.push(\n linkedBailout(\n \"linked/unresolved-component-binding\",\n spanOf(id, node),\n `Component binding ${name} has no linked definition`\n )\n );\n }\n return {\n kind: intrinsic ? \"intrinsic\" : \"binding\",\n name,\n span: spanOf(id, node),\n closingSpan: null,\n definition,\n provenance\n };\n}\nfunction jsxComponentNode(opening) {\n return childNode(opening, \"name\");\n}\nfunction jsxEntries(id, element, opening, bailouts) {\n const entries = [];\n for (const attribute of childNodes(opening, \"attributes\")) {\n if (attribute.type === \"JSXSpreadAttribute\") {\n const argument = childNode(attribute, \"argument\");\n if (argument) {\n entries.push({\n kind: \"spread\",\n span: spanOf(id, attribute),\n value: expressionReference(id, argument)\n });\n }\n continue;\n }\n if (attribute.type !== \"JSXAttribute\") continue;\n const nameNode = childNode(attribute, \"name\");\n const name = identifierName(nameNode);\n if (!name) {\n bailouts.push(\n localBailout(\n \"local/unsupported-prop-key\",\n spanOf(id, attribute),\n \"Namespaced JSX attributes are not statically supported\"\n )\n );\n continue;\n }\n const rawValue = childNode(attribute, \"value\");\n let value;\n if (!rawValue) {\n value = { kind: \"static\", value: true, span: spanOf(id, attribute) };\n } else if (rawValue.type === \"JSXExpressionContainer\") {\n const expression = childNode(rawValue, \"expression\");\n if (!expression || expression.type === \"JSXEmptyExpression\") {\n bailouts.push(\n localBailout(\n \"local/unsupported-expression\",\n spanOf(id, rawValue),\n `JSX prop ${name} has no expression`\n )\n );\n continue;\n }\n value = elementValue(id, expression);\n } else {\n value = elementValue(id, rawValue);\n }\n entries.push({ kind: \"prop\", name, span: spanOf(id, attribute), value });\n }\n for (const child of childNodes(element, \"children\")) {\n let value;\n if (child.type === \"JSXText\") {\n if (typeof child.value !== \"string\" || child.value.trim() === \"\") continue;\n value = {\n kind: \"static\",\n value: child.value,\n span: spanOf(id, child)\n };\n } else if (child.type === \"JSXExpressionContainer\") {\n const expression = childNode(child, \"expression\");\n value = !expression || expression.type === \"JSXEmptyExpression\" ? { kind: \"empty\", span: spanOf(id, child) } : elementValue(id, expression);\n } else if (child.type === \"JSXElement\" || child.type === \"JSXFragment\") {\n value = { kind: \"element\", span: spanOf(id, child) };\n } else {\n bailouts.push(\n localBailout(\n \"local/unsupported-child\",\n spanOf(id, child),\n `JSX child ${child.type} cannot be normalized`\n )\n );\n continue;\n }\n entries.push({ kind: \"child\", span: spanOf(id, child), value });\n }\n return entries.sort((left, right) => left.span.start - right.span.start);\n}\nfunction propertyName(property) {\n if (property.computed === true) return null;\n const key = childNode(property, \"key\");\n const name = identifierName(key);\n if (name) return name;\n const literal = asStaticValue(key);\n return typeof literal === \"string\" || typeof literal === \"number\" ? String(literal) : null;\n}\nfunction runtimeChildEntries(id, program, node, bailouts) {\n const rawNodes = node.type === \"ArrayExpression\" ? node.elements : null;\n if (Array.isArray(rawNodes) && rawNodes.some((child) => child === null || !isAstNode(child))) {\n bailouts.push(\n localBailout(\n \"local/unsupported-child\",\n spanOf(id, node),\n \"Sparse compiled children cannot be normalized without changing order\"\n )\n );\n return [];\n }\n const nodes = Array.isArray(rawNodes) ? rawNodes.filter(isAstNode) : [node];\n return nodes.flatMap((child) => {\n if (child.type === \"SpreadElement\") {\n bailouts.push(\n localBailout(\n \"local/unsupported-child\",\n spanOf(id, child),\n \"Spread children cannot be statically ordered\"\n )\n );\n return [];\n }\n if (child.type === \"CallExpression\" && runtimeCall(program, child)) {\n return [\n {\n kind: \"child\",\n span: spanOf(id, child),\n value: { kind: \"element\", span: spanOf(id, child) }\n }\n ];\n }\n return [{ kind: \"child\", span: spanOf(id, child), value: elementValue(id, child) }];\n });\n}\nfunction objectEntries(id, program, object, bailouts) {\n const entries = [];\n for (const property of childNodes(object, \"properties\")) {\n if (property.type === \"SpreadElement\") {\n const argument = childNode(property, \"argument\");\n if (argument) {\n const spread = {\n kind: \"spread\",\n span: spanOf(id, property),\n value: expressionReference(id, argument)\n };\n entries.push(spread);\n }\n continue;\n }\n if (property.type !== \"Property\" && property.type !== \"ObjectProperty\") {\n bailouts.push(\n localBailout(\n \"local/unsupported-prop-key\",\n spanOf(id, property),\n `Runtime props entry ${property.type} is not a data property`\n )\n );\n continue;\n }\n const name = propertyName(property);\n const valueNode = childNode(property, \"value\");\n if (!name || !valueNode) {\n bailouts.push(\n localBailout(\n \"local/unsupported-prop-key\",\n spanOf(id, property),\n \"Computed runtime prop keys are not statically supported\"\n )\n );\n continue;\n }\n if (name === \"children\") {\n entries.push(...runtimeChildEntries(id, program, valueNode, bailouts));\n continue;\n }\n const prop = {\n kind: \"prop\",\n name,\n span: spanOf(id, property),\n value: elementValue(id, valueNode)\n };\n entries.push(prop);\n }\n return entries;\n}\nfunction runtimeCall(program, call) {\n const callee = childNode(call, \"callee\");\n if (!callee) return null;\n const directName = identifierName(callee);\n if (directName) {\n const provenance2 = importBinding(program, directName);\n if (provenance2?.source === \"react/jsx-runtime\" && (provenance2.imported === \"jsx\" || provenance2.imported === \"jsxs\")) {\n return { form: \"jsx-runtime\" };\n }\n if (provenance2?.source === \"react\" && provenance2.imported === \"createElement\") {\n return { form: \"create-element\" };\n }\n }\n if (callee.type !== \"MemberExpression\" || callee.computed === true) return null;\n const objectName = identifierName(childNode(callee, \"object\"));\n const propertyName2 = identifierName(childNode(callee, \"property\"));\n if (propertyName2 !== \"createElement\" || !objectName) return null;\n const provenance = importBinding(program, objectName);\n return provenance?.source === \"react\" && (provenance.imported === \"default\" || provenance.imported === \"*\") ? { form: \"create-element\" } : null;\n}\nfunction normalizeRuntimeElement(candidate, id, program, imports, call, runtime, bailouts) {\n const bailoutStart = bailouts.length;\n const args = childNodes(call, \"arguments\");\n const target = args[0];\n if (!target) {\n bailouts.push(\n localBailout(\n \"local/invalid-element-call\",\n spanOf(id, call),\n `${runtime.form} call has no element target`\n )\n );\n return null;\n }\n const component = componentFromNode(candidate, id, program, imports, target, bailouts);\n if (!component) return null;\n const entries = [];\n const props = args[1];\n if (props && asStaticValue(props) !== null) {\n if (props.type === \"ObjectExpression\") {\n entries.push(...objectEntries(id, program, props, bailouts));\n } else {\n entries.push({\n kind: \"spread\",\n span: spanOf(id, props),\n value: expressionReference(id, props)\n });\n }\n }\n if (runtime.form === \"create-element\") {\n for (const child of args.slice(2)) {\n entries.push(...runtimeChildEntries(id, program, child, bailouts));\n }\n }\n return finalizeElement(\n {\n kind: \"element\",\n form: runtime.form,\n id,\n span: spanOf(id, call),\n propsSpan: props ? spanOf(id, props) : null,\n component\n },\n entries.sort((left, right) => left.span.start - right.span.start),\n bailouts.slice(bailoutStart)\n );\n}\nfunction styledDefinitions(candidate, id, program, imports, bailouts) {\n const definitions = [];\n walkAst(program, (node) => {\n if (node.type !== \"VariableDeclarator\") return;\n const identifier = childNode(node, \"id\");\n const name = identifierName(identifier);\n const call = childNode(node, \"init\");\n if (!name || !identifier || call?.type !== \"CallExpression\") return;\n const callee = childNode(call, \"callee\");\n const factoryName = callee && identifierName(callee);\n if (!factoryName) return;\n const binding = importBinding(program, factoryName);\n if (!binding || binding.imported !== \"styled\") return;\n const factory = hostImportProvenance(imports, binding.source, binding.imported);\n if (!factory) return;\n const definitionBailouts = [];\n const args = childNodes(call, \"arguments\");\n const baseNode = args[0];\n const objectForm = args[1]?.type === \"ObjectExpression\";\n const optionsNode = objectForm ? args[1] : args.length >= 3 ? args[2] : args[1];\n if (!baseNode || !optionsNode) {\n definitionBailouts.push(\n localBailout(\n \"local/unsupported-styled-definition\",\n spanOf(id, call),\n `styled definition ${name} must provide a base and options object`\n )\n );\n bailouts.push(...definitionBailouts);\n return;\n }\n const base = componentFromNode(\n candidate,\n id,\n program,\n imports,\n baseNode,\n definitionBailouts\n );\n if (!base) {\n bailouts.push(...definitionBailouts);\n return;\n }\n const baseClassNode = objectForm ? null : args.length >= 3 ? args[1] : null;\n const staticConfigNode = objectForm && args.length >= 3 ? args[2] : null;\n const baseDefinition = {\n kind: \"styled-definition\",\n id,\n name,\n span: spanOf(id, call),\n definitionSpan: spanOf(id, identifier),\n factory,\n base,\n baseClassName: baseClassNode ? elementValue(id, baseClassNode) : null,\n options: expressionReference(id, optionsNode),\n staticConfig: staticConfigNode ? expressionReference(id, staticConfigNode) : null\n };\n definitions.push(\n definitionBailouts.length === 0 ? { ...baseDefinition, complete: true, bailouts: [] } : {\n ...baseDefinition,\n complete: false,\n bailouts: definitionBailouts\n }\n );\n bailouts.push(...definitionBailouts);\n });\n return definitions.sort((left, right) => left.span.start - right.span.start);\n}\nconst DOM_STYLE_FRONTENDS = /* @__PURE__ */ new Set([\n \"tamagui/dom\",\n \"@tamagui/core/dom\",\n \"@tamagui/tailwind\"\n]);\nconst STYLE_FRONTENDS = /* @__PURE__ */ new Set([\n ...DOM_STYLE_FRONTENDS,\n \"tamagui\",\n \"@tamagui/core\",\n \"@tamagui/web\"\n]);\nfunction domStyleDefinitions(id, program, imports) {\n const definitions = [];\n walkAst(program, (node) => {\n if (node.type !== \"VariableDeclarator\") return;\n const identifier = childNode(node, \"id\");\n const name = identifierName(identifier);\n const call = childNode(node, \"init\");\n if (!name || !identifier || call?.type !== \"CallExpression\") return;\n const callee = childNode(call, \"callee\");\n const factoryName = callee && identifierName(callee);\n if (!factoryName) return;\n const binding = importBinding(program, factoryName);\n if (!binding || binding.imported !== \"style\" || !STYLE_FRONTENDS.has(binding.source)) {\n return;\n }\n const factory = hostImportProvenance(imports, binding.source, binding.imported);\n const value = childNodes(call, \"arguments\")[0];\n if (!factory || !value) return;\n definitions.push({\n kind: \"dom-style-definition\",\n id,\n name,\n span: spanOf(id, call),\n definitionSpan: spanOf(id, identifier),\n factory,\n value: expressionReference(id, value)\n });\n });\n return definitions.sort((left, right) => left.span.start - right.span.start);\n}\nfunction domStyleArgument(candidate, id, program, node) {\n let call = node;\n if (node.type === \"Identifier\") {\n const name = identifierName(node);\n const definition = name ? candidate.definitionOf(id, name) : null;\n if (!definition?.constant || !definition.initializer) return null;\n call = definition.initializer;\n }\n if (call.type !== \"CallExpression\") return null;\n const callee = childNode(call, \"callee\");\n const factoryName = callee && identifierName(callee);\n if (!factoryName) return null;\n const binding = importBinding(program, factoryName);\n if (!binding || binding.imported !== \"style\" || !STYLE_FRONTENDS.has(binding.source)) {\n return null;\n }\n return childNodes(call, \"arguments\")[0] ?? null;\n}\nfunction domStyleProgram(candidate, id, program, node) {\n if (node.type !== \"ArrayExpression\" || !Array.isArray(node.elements)) {\n const argument = domStyleArgument(candidate, id, program, node);\n return argument ? {\n kind: \"dom-style\",\n span: spanOf(id, node),\n items: [{ condition: null, value: expressionReference(id, argument) }]\n } : null;\n }\n const items = [];\n for (const rawItem of node.elements) {\n if (!isAstNode(rawItem)) return null;\n let item = rawItem;\n let condition = null;\n if (item.type === \"LogicalExpression\" && item.operator === \"&&\") {\n const left = childNode(item, \"left\");\n const right = childNode(item, \"right\");\n if (!left || !right) return null;\n condition = expressionReference(id, left);\n item = right;\n }\n const argument = domStyleArgument(candidate, id, program, item);\n if (!argument) {\n const staticValue = asStaticValue(item);\n if (staticValue === false || staticValue === null) continue;\n return null;\n }\n items.push({ condition, value: expressionReference(id, argument) });\n }\n return { kind: \"dom-style\", span: spanOf(id, node), items };\n}\nfunction normalizeElements(candidate, rawId, imports = []) {\n const id = resolvedModuleId(rawId);\n const program = candidate.programOf(id);\n const elements = [];\n const bailouts = [];\n walkAst(program, (node) => {\n if (node.type === \"JSXElement\") {\n const bailoutStart = bailouts.length;\n const opening = childNode(node, \"openingElement\");\n const target = opening && jsxComponentNode(opening);\n if (!opening || !target) return;\n const component = componentFromNode(\n candidate,\n id,\n program,\n imports,\n target,\n bailouts\n );\n if (!component) return;\n const closingElement = childNode(node, \"closingElement\");\n const closingName = closingElement && childNode(closingElement, \"name\");\n if (closingName) component.closingSpan = spanOf(id, closingName);\n const entries = jsxEntries(id, node, opening, bailouts);\n for (const entry of entries) {\n if (entry.kind !== \"prop\" || entry.name !== \"style\") continue;\n const raw = entry.value.kind === \"expression\" ? nodeAtSpan(program, entry.value.start, entry.value.end) : null;\n const styleProgram = raw && domStyleProgram(candidate, id, program, raw);\n const argument = raw && domStyleArgument(candidate, id, program, raw);\n if (styleProgram) entry.value = styleProgram;\n else if (argument) entry.value = expressionReference(id, argument);\n }\n elements.push(\n finalizeElement(\n {\n kind: \"element\",\n form: \"jsx\",\n id,\n span: spanOf(id, node),\n propsSpan: spanOf(id, opening),\n component\n },\n entries,\n bailouts.slice(bailoutStart)\n )\n );\n return;\n }\n if (node.type !== \"CallExpression\") return;\n const runtime = runtimeCall(program, node);\n if (!runtime) return;\n const element = normalizeRuntimeElement(\n candidate,\n id,\n program,\n imports,\n node,\n runtime,\n bailouts\n );\n if (element) {\n const entries = element.complete ? element.entries : element.bailedEntries;\n for (const entry of entries) {\n if (entry.kind !== \"prop\" || entry.name !== \"style\") continue;\n const raw = entry.value.kind === \"expression\" ? nodeAtSpan(program, entry.value.start, entry.value.end) : null;\n const styleProgram = raw && domStyleProgram(candidate, id, program, raw);\n const argument = raw && domStyleArgument(candidate, id, program, raw);\n if (styleProgram) entry.value = styleProgram;\n else if (argument) entry.value = expressionReference(id, argument);\n }\n elements.push(element);\n }\n });\n return {\n elements: elements.sort((left, right) => left.span.start - right.span.start),\n styledDefinitions: styledDefinitions(candidate, id, program, imports, bailouts),\n domStyleDefinitions: domStyleDefinitions(id, program, imports),\n declarationsAt: declarationsOffset(program),\n bailouts: bailouts.sort((left, right) => left.span.start - right.span.start)\n };\n}\nfunction declarationsOffset(program) {\n let offset = 0;\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type === \"ImportDeclaration\" || typeof statement.directive === \"string\") {\n offset = statement.end;\n } else break;\n }\n return offset;\n}\nfunction nodeAtSpan(program, start, end) {\n return findAstNode(program, (node) => node.start === start && node.end === end, {\n start,\n end\n });\n}\nfunction asAstNode(value, label) {\n if (!isAstNode(value)) throw new Error(`${label} is not an AST node`);\n return value;\n}\nexport {\n asAstNode,\n definitionFromDeclaration,\n nodeAtSpan,\n normalizeElements\n};\n//# sourceMappingURL=normalize.js.map\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/compiler-core",
3
- "version": "3.0.7",
3
+ "version": "3.0.8",
4
4
  "description": "Shared parser-independent Tamagui compiler graph and element IR",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  "yuku-analyzer": "0.6.1"
41
41
  },
42
42
  "devDependencies": {
43
- "@tamagui/build": "3.0.7",
43
+ "@tamagui/build": "3.0.8",
44
44
  "typescript": "7.0.2"
45
45
  },
46
46
  "repository": {
@@ -48,5 +48,5 @@
48
48
  "url": "git+https://github.com/tamagui/tamagui.git",
49
49
  "directory": "code/compiler/compiler-core"
50
50
  },
51
- "releaseSourceCommit": "96f8bc1f222af0381729a2e2202370aa4a9808ef"
51
+ "releaseSourceCommit": "b723356193510591d9ad15877b8937e8e6a31910"
52
52
  }
package/src/ir.ts CHANGED
@@ -136,6 +136,8 @@ export interface ElementIRResult {
136
136
  elements: ElementIR[]
137
137
  styledDefinitions: StyledDefinitionIR[]
138
138
  domStyleDefinitions: DOMStyleDefinitionIR[]
139
+ /** offset after the leading directives and imports, where generated module declarations go */
140
+ declarationsAt: number
139
141
  bailouts: BailoutReason[]
140
142
  }
141
143
 
package/src/lower.ts CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  type SourceEdit,
15
15
  } from './output'
16
16
 
17
- export const LOWERED_MODULE_PLAN_VERSION = 5
17
+ export const LOWERED_MODULE_PLAN_VERSION = 6
18
18
 
19
19
  export type CompilerTarget = 'web' | 'native'
20
20
 
@@ -424,8 +424,8 @@ export function lowerModule({
424
424
 
425
425
  for (const candidateImport of imports.values()) {
426
426
  edits.push({
427
- start: source.length,
428
- end: source.length,
427
+ start: module.declarationsAt,
428
+ end: module.declarationsAt,
429
429
  content: candidateImport.content,
430
430
  origin: candidateImport.origin,
431
431
  })
@@ -132,6 +132,7 @@ export interface MaterializedModule {
132
132
  elements: MaterializedElement[]
133
133
  styledDefinitions: MaterializedStyledDefinition[]
134
134
  domStyleDefinitions: MaterializedDOMStyleDefinition[]
135
+ declarationsAt: number
135
136
  diagnostics: BailoutReason[]
136
137
  dependencies: ResolvedModuleId[]
137
138
  }
@@ -377,6 +378,7 @@ export function materializeModule(
377
378
  ...definition,
378
379
  value: materializeValue(graph, definition.value),
379
380
  })),
381
+ declarationsAt: result.declarationsAt,
380
382
  diagnostics: graph.diagnostics().filter(({ span }) => span.id === id),
381
383
  }
382
384
  return { ...base, dependencies: collectDependencies(base) }
package/src/normalize.ts CHANGED
@@ -817,10 +817,26 @@ export function normalizeElements(
817
817
  elements: elements.sort((left, right) => left.span.start - right.span.start),
818
818
  styledDefinitions: styledDefinitions(candidate, id, program, imports, bailouts),
819
819
  domStyleDefinitions: domStyleDefinitions(id, program, imports),
820
+ declarationsAt: declarationsOffset(program),
820
821
  bailouts: bailouts.sort((left, right) => left.span.start - right.span.start),
821
822
  }
822
823
  }
823
824
 
825
+ // generated declarations must precede any module-scope use, so they go right
826
+ // after the import prologue instead of at the end of the module
827
+ function declarationsOffset(program: AstNode): number {
828
+ let offset = 0
829
+ for (const statement of childNodes(program, 'body')) {
830
+ if (
831
+ statement.type === 'ImportDeclaration' ||
832
+ typeof statement.directive === 'string'
833
+ ) {
834
+ offset = statement.end
835
+ } else break
836
+ }
837
+ return offset
838
+ }
839
+
824
840
  export function nodeAtSpan(program: AstNode, start: number, end: number): AstNode | null {
825
841
  return findAstNode(program, (node) => node.start === start && node.end === end, {
826
842
  start,
package/types/ir.d.ts CHANGED
@@ -114,6 +114,8 @@ export interface ElementIRResult {
114
114
  elements: ElementIR[];
115
115
  styledDefinitions: StyledDefinitionIR[];
116
116
  domStyleDefinitions: DOMStyleDefinitionIR[];
117
+ /** offset after the leading directives and imports, where generated module declarations go */
118
+ declarationsAt: number;
117
119
  bailouts: BailoutReason[];
118
120
  }
119
121
  export declare function hostImportProvenance(imports: readonly HostResolvedImport[], specifier: string, importedName: string): ComponentImportProvenance | null;
package/types/ir.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"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"}
package/types/lower.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { DynamicEvaluation } from './evaluate';
3
3
  import { type BailoutReason } from './diagnostics';
4
4
  import type { MaterializedElement, MaterializedModule, MaterializedStyledDefinition } from './materialize';
5
5
  import { type ApplicableLoweredModulePlan, type SourceEdit } from './output';
6
- export declare const LOWERED_MODULE_PLAN_VERSION = 5;
6
+ export declare const LOWERED_MODULE_PLAN_VERSION = 6;
7
7
  export type CompilerTarget = 'web' | 'native';
8
8
  export interface LoweredModuleStats {
9
9
  found: number;
@@ -114,6 +114,7 @@ export interface MaterializedModule {
114
114
  elements: MaterializedElement[];
115
115
  styledDefinitions: MaterializedStyledDefinition[];
116
116
  domStyleDefinitions: MaterializedDOMStyleDefinition[];
117
+ declarationsAt: number;
117
118
  diagnostics: BailoutReason[];
118
119
  dependencies: ResolvedModuleId[];
119
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../src/materialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../src/materialize.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAGxB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAMV,eAAe,EAQhB,MAAM,MAAM,CAAA;AAmBb,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAC1C,cAAc,CA8BhB;AAioBD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,kBAAkB,EAAO,GAC1C,eAAe,CAwFjB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKvF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGhE"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAGxB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAMV,eAAe,EAQhB,MAAM,MAAM,CAAA;AAmBb,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAC1C,cAAc,CA8BhB;AAioBD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,kBAAkB,EAAO,GAC1C,eAAe,CAyFjB;AAiBD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKvF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGhE"}