@tamagui/compiler-core 3.0.0-beta.669.1 → 3.0.0-beta.719.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/ast.cjs CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
package/dist/cjs/hash.cjs CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
package/dist/cjs/ir.cjs CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
package/dist/cjs/yuku.cjs CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
package/dist/cjs/zero.cjs CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -27,6 +26,7 @@ __export(zero_exports, {
27
26
  ZERO_FAILURE_FOOTER: () => ZERO_FAILURE_FOOTER,
28
27
  ZERO_PROVIDER_EXPORTS: () => ZERO_PROVIDER_EXPORTS,
29
28
  ZERO_PROVIDER_MESSAGE: () => ZERO_PROVIDER_MESSAGE,
29
+ isTamaguiSpecifier: () => isTamaguiSpecifier,
30
30
  planZeroErasure: () => planZeroErasure,
31
31
  zeroConfigDriverMessage: () => zeroConfigDriverMessage,
32
32
  zeroIslandThemeMessage: () => zeroIslandThemeMessage,
@@ -126,6 +126,9 @@ function zeroViolationsFromPlan(plan) {
126
126
  }
127
127
  return violations;
128
128
  }
129
+ function isTamaguiSpecifier(specifier) {
130
+ return specifier === "tamagui" || specifier.startsWith("tamagui/") || specifier.startsWith("@tamagui/");
131
+ }
129
132
  function collectNameOccurrences(program) {
130
133
  const occurrences = /* @__PURE__ */ new Map();
131
134
  (0, import_ast.walkAst)(program, (node, parent, key) => {
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","names":[],"sources":["esm/evaluate.js"],"sourcesContent":["import { childNode, childNodes, identifierName, isAstNode, unwrapExpression } from \"./ast\";\nimport { expressionReference, spanOf } from \"./contracts\";\nimport { linkedBailout, localBailout } from \"./diagnostics\";\nfunction success(value) {\n return { ok: true, value };\n}\nfunction literal(node) {\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 unsupported(id, node, detail = `Expression ${node.type} is not statically supported`) {\n return {\n ok: false,\n bailout: localBailout(\"local/unsupported-expression\", spanOf(id, node), detail)\n };\n}\nfunction evaluateDefinition(resolver, definition, useSpan, state) {\n const key = `${definition.id}:${definition.span.start}`;\n if (state.activeDefinitions.has(key)) {\n return {\n ok: false,\n bailout: localBailout(\n \"local/static-evaluation-cycle\",\n useSpan,\n `Static evaluation cycle reached ${definition.name}`\n )\n };\n }\n if (!definition.initializer) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n useSpan,\n `Binding ${definition.name} has no static initializer`,\n definition.id\n )\n };\n }\n if (!definition.constant) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/unresolved-binding\",\n useSpan,\n `Binding ${definition.name} is mutable and cannot be statically evaluated`,\n definition.id\n )\n };\n }\n const initializer = resolver.expressionNode(definition.initializer);\n if (!initializer) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n useSpan,\n `Binding ${definition.name} initializer is outside the linked graph`,\n definition.id\n )\n };\n }\n state.dependencies.add(definition.id);\n state.activeDefinitions.add(key);\n try {\n return evaluateNode(resolver, definition.id, initializer, state);\n } finally {\n state.activeDefinitions.delete(key);\n }\n}\nfunction evaluateObject(resolver, id, node, state) {\n const output = {};\n for (const property of childNodes(node, \"properties\")) {\n if (property.type === \"SpreadElement\") {\n const argument = childNode(property, \"argument\");\n if (!argument) return unsupported(id, property);\n const spread = evaluateNode(resolver, id, argument, state);\n if (!spread.ok) return spread;\n if (!spread.value || typeof spread.value !== \"object\" || Array.isArray(spread.value)) {\n return {\n ok: false,\n bailout: localBailout(\n \"local/non-object-spread\",\n spanOf(id, property),\n \"Static object spread did not evaluate to an object\"\n )\n };\n }\n Object.assign(output, spread.value);\n continue;\n }\n if (property.type !== \"Property\" && property.type !== \"ObjectProperty\") {\n return unsupported(id, property);\n }\n const keyNode = childNode(property, \"key\");\n const valueNode = childNode(property, \"value\");\n if (!keyNode || !valueNode) return unsupported(id, property);\n let key = identifierName(keyNode) ?? void 0;\n if (property.computed === true || key === void 0) {\n const evaluatedKey = evaluateNode(resolver, id, keyNode, state);\n if (!evaluatedKey.ok) return evaluatedKey;\n key = evaluatedKey.value;\n }\n if (typeof key !== \"string\" && typeof key !== \"number\") {\n return unsupported(id, keyNode, \"Static object key is not a string or number\");\n }\n const value = evaluateNode(resolver, id, valueNode, state);\n if (!value.ok) return value;\n output[String(key)] = value.value;\n }\n return success(output);\n}\nfunction evaluateArray(resolver, id, node, state) {\n const output = [];\n const rawElements = node.elements;\n if (!Array.isArray(rawElements) || rawElements.some((element) => element === null || !isAstNode(element))) {\n return unsupported(id, node, \"Sparse arrays are not statically supported\");\n }\n for (const element of rawElements.filter(isAstNode)) {\n if (element.type === \"SpreadElement\") {\n const argument = childNode(element, \"argument\");\n if (!argument) return unsupported(id, element);\n const spread = evaluateNode(resolver, id, argument, state);\n if (!spread.ok) return spread;\n if (!Array.isArray(spread.value)) {\n return unsupported(\n id,\n element,\n \"Static array spread did not evaluate to an array\"\n );\n }\n output.push(...spread.value);\n continue;\n }\n const value = evaluateNode(resolver, id, element, state);\n if (!value.ok) return value;\n output.push(value.value);\n }\n return success(output);\n}\nfunction evaluateNode(resolver, id, input, state) {\n const node = unwrapExpression(input);\n const literalValue = literal(node);\n if (literalValue !== void 0) return success(literalValue);\n switch (node.type) {\n case \"Identifier\": {\n const name = identifierName(node);\n if (!name) return unsupported(id, node);\n const definition = resolver.resolveBinding(id, name);\n if (!definition) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/unresolved-binding\",\n spanOf(id, node),\n `Binding ${name} has no host-linked definition`\n )\n };\n }\n return evaluateDefinition(resolver, definition, spanOf(id, node), state);\n }\n case \"ObjectExpression\":\n return evaluateObject(resolver, id, node, state);\n case \"ArrayExpression\":\n return evaluateArray(resolver, id, node, state);\n case \"MemberExpression\": {\n const objectNode = childNode(node, \"object\");\n const propertyNode = childNode(node, \"property\");\n if (!objectNode || !propertyNode) return unsupported(id, node);\n const object = evaluateNode(resolver, id, objectNode, state);\n if (!object.ok) return object;\n let property = identifierName(propertyNode);\n if (node.computed === true || property === null) {\n const evaluatedProperty = evaluateNode(resolver, id, propertyNode, state);\n if (!evaluatedProperty.ok) return evaluatedProperty;\n property = evaluatedProperty.value;\n }\n if ((typeof object.value !== \"object\" || object.value === null) && typeof object.value !== \"string\") {\n return unsupported(id, node, \"Static member target is not indexable\");\n }\n if (typeof property !== \"string\" && typeof property !== \"number\") {\n return unsupported(\n id,\n propertyNode,\n \"Static member key is not a string or number\"\n );\n }\n const value = object.value[String(property)];\n return value === void 0 ? unsupported(id, node, `Static member ${String(property)} does not exist`) : success(value);\n }\n case \"UnaryExpression\": {\n const argument = childNode(node, \"argument\");\n if (!argument) return unsupported(id, node);\n const value = evaluateNode(resolver, id, argument, state);\n if (!value.ok) return value;\n if (node.operator === \"-\" && typeof value.value === \"number\") {\n return success(-value.value);\n }\n if (node.operator === \"+\" && typeof value.value === \"number\") {\n return success(value.value);\n }\n if (node.operator === \"!\") return success(!value.value);\n return unsupported(\n id,\n node,\n `Unary operator ${String(node.operator)} is unsupported`\n );\n }\n case \"BinaryExpression\":\n case \"LogicalExpression\": {\n const leftNode = childNode(node, \"left\");\n const rightNode = childNode(node, \"right\");\n if (!leftNode || !rightNode) return unsupported(id, node);\n const left = evaluateNode(resolver, id, leftNode, state);\n if (!left.ok) return left;\n if (node.type === \"LogicalExpression\") {\n if (node.operator === \"&&\" && !left.value) return left;\n if (node.operator === \"||\" && left.value) return left;\n if (node.operator === \"??\" && left.value !== null) return left;\n }\n const right = evaluateNode(resolver, id, rightNode, state);\n if (!right.ok) return right;\n switch (node.operator) {\n case \"+\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value + right.value);\n }\n if (typeof left.value === \"string\" || typeof right.value === \"string\") {\n return success(String(left.value) + String(right.value));\n }\n break;\n case \"-\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value - right.value);\n }\n break;\n case \"*\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value * right.value);\n }\n break;\n case \"/\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value / right.value);\n }\n break;\n case \"&&\":\n case \"||\":\n case \"??\":\n return right;\n }\n return unsupported(\n id,\n node,\n `Binary operator ${String(node.operator)} is unsupported`\n );\n }\n case \"ConditionalExpression\": {\n const testNode = childNode(node, \"test\");\n const consequent = childNode(node, \"consequent\");\n const alternate = childNode(node, \"alternate\");\n if (!testNode || !consequent || !alternate) return unsupported(id, node);\n const test = evaluateNode(resolver, id, testNode, state);\n if (!test.ok) return test;\n return evaluateNode(resolver, id, test.value ? consequent : alternate, state);\n }\n case \"TemplateLiteral\": {\n const quasis = childNodes(node, \"quasis\");\n const expressions = childNodes(node, \"expressions\");\n let output = \"\";\n for (let index = 0; index < quasis.length; index++) {\n const quasi = quasis[index];\n const cooked = quasi?.value?.cooked;\n const raw = quasi?.value?.raw;\n output += typeof cooked === \"string\" ? cooked : typeof raw === \"string\" ? raw : \"\";\n const expression = expressions[index];\n if (expression) {\n const value = evaluateNode(resolver, id, expression, state);\n if (!value.ok) return value;\n output += String(value.value);\n }\n }\n return success(output);\n }\n default:\n return unsupported(id, node);\n }\n}\nfunction dynamicPrimitive(value) {\n if (value === null) return \"null\";\n if (typeof value === \"number\") return \"number\";\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"boolean\") return \"boolean\";\n return null;\n}\nfunction evaluateDynamicNode(resolver, id, input, state) {\n const exact = evaluateNode(resolver, id, input, state);\n if (exact.ok) {\n const type = dynamicPrimitive(exact.value);\n return type ? { type, values: [exact.value] } : null;\n }\n const node = unwrapExpression(input);\n if (node.type === \"Identifier\") {\n if (!identifierName(node)) return null;\n const definition = resolver.resolveReference(expressionReference(id, node));\n if (!definition?.constant || !definition.initializer) return null;\n const key = `${definition.id}:${definition.span.start}`;\n if (state.activeDefinitions.has(key)) return null;\n const initializer = resolver.expressionNode(definition.initializer);\n if (!initializer) return null;\n state.dependencies.add(definition.id);\n state.activeDefinitions.add(key);\n try {\n return evaluateDynamicNode(resolver, definition.id, initializer, state);\n } finally {\n state.activeDefinitions.delete(key);\n }\n }\n if (node.type === \"MemberExpression\") {\n const objectNode = childNode(node, \"object\");\n const propertyNode = childNode(node, \"property\");\n if (!objectNode || !propertyNode) return null;\n const object = evaluateNode(resolver, id, objectNode, state);\n if (!object.ok || !Array.isArray(object.value)) return null;\n const property = evaluateDynamicNode(resolver, id, propertyNode, state);\n if (property?.type !== \"number\" || object.value.length > 32) return null;\n const values = [];\n let type = null;\n for (const value of object.value) {\n const nextType = dynamicPrimitive(value);\n if (!nextType || type && type !== nextType) return null;\n type = nextType;\n const primitive = value;\n if (!values.includes(primitive)) values.push(primitive);\n }\n return type ? { type, values } : null;\n }\n if (node.type === \"BinaryExpression\") {\n const leftNode = childNode(node, \"left\");\n const rightNode = childNode(node, \"right\");\n if (!leftNode || !rightNode) return null;\n const left = evaluateDynamicNode(resolver, id, leftNode, state);\n const right = evaluateDynamicNode(resolver, id, rightNode, state);\n if (node.operator === \"+\") {\n return left?.type === \"number\" && right?.type === \"number\" ? { type: \"number\" } : null;\n }\n if (node.operator === \"-\" || node.operator === \"*\" || node.operator === \"/\" || node.operator === \"%\" || node.operator === \"**\") {\n if (left?.type === \"number\" || right?.type === \"number\") {\n return { type: \"number\" };\n }\n }\n }\n return null;\n}\nfunction evaluateConditionalExpression(resolver, reference) {\n const node = resolver.expressionNode(reference);\n if (!node) return null;\n const expression = unwrapExpression(node);\n if (!isAstNode(expression) || expression.type !== \"ConditionalExpression\") return null;\n const testNode = childNode(expression, \"test\");\n const consequent = childNode(expression, \"consequent\");\n const alternate = childNode(expression, \"alternate\");\n if (!testNode || !consequent || !alternate) return null;\n const trueState = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const whenTrue = evaluateNode(resolver, reference.id, consequent, trueState);\n if (!whenTrue.ok) return null;\n const falseState = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const whenFalse = evaluateNode(resolver, reference.id, alternate, falseState);\n if (!whenFalse.ok) return null;\n return {\n test: spanOf(reference.id, testNode),\n whenTrue: {\n value: whenTrue.value,\n dependencies: [...trueState.dependencies].sort()\n },\n whenFalse: {\n value: whenFalse.value,\n dependencies: [...falseState.dependencies].sort()\n }\n };\n}\nfunction evaluateExpression(resolver, reference) {\n const node = resolver.expressionNode(reference);\n if (!node) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n reference,\n \"Expression is outside the linked project graph\",\n reference.id\n )\n };\n }\n const state = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const result = evaluateNode(resolver, reference.id, node, state);\n return result.ok ? {\n ok: true,\n value: result.value,\n dependencies: [...state.dependencies].sort()\n } : result;\n}\nfunction evaluateDynamicExpression(resolver, reference) {\n const node = resolver.expressionNode(reference);\n if (!node) return null;\n const state = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const result = evaluateDynamicNode(resolver, reference.id, node, state);\n return result ? { ...result, dependencies: [...state.dependencies].sort() } : null;\n}\nfunction evaluateBinding(resolver, id, localName) {\n const definition = resolver.resolveBinding(id, localName);\n if (!definition) {\n const emptySpan = { id, start: 0, end: 0 };\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/unresolved-binding\",\n emptySpan,\n `Binding ${localName} has no host-linked definition`\n )\n };\n }\n if (!definition.initializer) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n definition.span,\n `Binding ${localName} has no static initializer`,\n definition.id\n )\n };\n }\n return evaluateExpression(\n resolver,\n expressionReference(definition.id, definition.initializer)\n );\n}\nexport {\n evaluateBinding,\n evaluateConditionalExpression,\n evaluateDynamicExpression,\n evaluateExpression\n};\n//# sourceMappingURL=evaluate.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"evaluate.js","names":[],"sources":["esm/evaluate.js"],"sourcesContent":["import { childNode, childNodes, identifierName, isAstNode, unwrapExpression } from \"./ast\";\nimport { expressionReference, spanOf } from \"./contracts\";\nimport { linkedBailout, localBailout } from \"./diagnostics\";\nfunction success(value) {\n return { ok: true, value };\n}\nfunction literal(node) {\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 unsupported(id, node, detail = `Expression ${node.type} is not statically supported`) {\n return {\n ok: false,\n bailout: localBailout(\"local/unsupported-expression\", spanOf(id, node), detail)\n };\n}\nfunction evaluateDefinition(resolver, definition, useSpan, state) {\n const key = `${definition.id}:${definition.span.start}`;\n if (state.activeDefinitions.has(key)) {\n return {\n ok: false,\n bailout: localBailout(\n \"local/static-evaluation-cycle\",\n useSpan,\n `Static evaluation cycle reached ${definition.name}`\n )\n };\n }\n if (!definition.initializer) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n useSpan,\n `Binding ${definition.name} has no static initializer`,\n definition.id\n )\n };\n }\n if (!definition.constant) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/unresolved-binding\",\n useSpan,\n `Binding ${definition.name} is mutable and cannot be statically evaluated`,\n definition.id\n )\n };\n }\n const initializer = resolver.expressionNode(definition.initializer);\n if (!initializer) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n useSpan,\n `Binding ${definition.name} initializer is outside the linked graph`,\n definition.id\n )\n };\n }\n state.dependencies.add(definition.id);\n state.activeDefinitions.add(key);\n try {\n return evaluateNode(resolver, definition.id, initializer, state);\n } finally {\n state.activeDefinitions.delete(key);\n }\n}\nfunction evaluateObject(resolver, id, node, state) {\n const output = {};\n for (const property of childNodes(node, \"properties\")) {\n if (property.type === \"SpreadElement\") {\n const argument = childNode(property, \"argument\");\n if (!argument) return unsupported(id, property);\n const spread = evaluateNode(resolver, id, argument, state);\n if (!spread.ok) return spread;\n if (!spread.value || typeof spread.value !== \"object\" || Array.isArray(spread.value)) {\n return {\n ok: false,\n bailout: localBailout(\n \"local/non-object-spread\",\n spanOf(id, property),\n \"Static object spread did not evaluate to an object\"\n )\n };\n }\n Object.assign(output, spread.value);\n continue;\n }\n if (property.type !== \"Property\" && property.type !== \"ObjectProperty\") {\n return unsupported(id, property);\n }\n const keyNode = childNode(property, \"key\");\n const valueNode = childNode(property, \"value\");\n if (!keyNode || !valueNode) return unsupported(id, property);\n let key = identifierName(keyNode) ?? void 0;\n if (property.computed === true || key === void 0) {\n const evaluatedKey = evaluateNode(resolver, id, keyNode, state);\n if (!evaluatedKey.ok) return evaluatedKey;\n key = evaluatedKey.value;\n }\n if (typeof key !== \"string\" && typeof key !== \"number\") {\n return unsupported(id, keyNode, \"Static object key is not a string or number\");\n }\n const value = evaluateNode(resolver, id, valueNode, state);\n if (!value.ok) return value;\n output[String(key)] = value.value;\n }\n return success(output);\n}\nfunction evaluateArray(resolver, id, node, state) {\n const output = [];\n const rawElements = node.elements;\n if (!Array.isArray(rawElements) || rawElements.some((element) => element === null || !isAstNode(element))) {\n return unsupported(id, node, \"Sparse arrays are not statically supported\");\n }\n for (const element of rawElements.filter(isAstNode)) {\n if (element.type === \"SpreadElement\") {\n const argument = childNode(element, \"argument\");\n if (!argument) return unsupported(id, element);\n const spread = evaluateNode(resolver, id, argument, state);\n if (!spread.ok) return spread;\n if (!Array.isArray(spread.value)) {\n return unsupported(\n id,\n element,\n \"Static array spread did not evaluate to an array\"\n );\n }\n output.push(...spread.value);\n continue;\n }\n const value = evaluateNode(resolver, id, element, state);\n if (!value.ok) return value;\n output.push(value.value);\n }\n return success(output);\n}\nfunction evaluateNode(resolver, id, input, state) {\n const node = unwrapExpression(input);\n const literalValue = literal(node);\n if (literalValue !== void 0) return success(literalValue);\n switch (node.type) {\n case \"Identifier\": {\n const name = identifierName(node);\n if (!name) return unsupported(id, node);\n const definition = resolver.resolveBinding(id, name);\n if (!definition) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/unresolved-binding\",\n spanOf(id, node),\n `Binding ${name} has no host-linked definition`\n )\n };\n }\n return evaluateDefinition(resolver, definition, spanOf(id, node), state);\n }\n case \"ObjectExpression\":\n return evaluateObject(resolver, id, node, state);\n case \"ArrayExpression\":\n return evaluateArray(resolver, id, node, state);\n case \"MemberExpression\": {\n const objectNode = childNode(node, \"object\");\n const propertyNode = childNode(node, \"property\");\n if (!objectNode || !propertyNode) return unsupported(id, node);\n const object = evaluateNode(resolver, id, objectNode, state);\n if (!object.ok) return object;\n let property = identifierName(propertyNode);\n if (node.computed === true || property === null) {\n const evaluatedProperty = evaluateNode(resolver, id, propertyNode, state);\n if (!evaluatedProperty.ok) return evaluatedProperty;\n property = evaluatedProperty.value;\n }\n if ((typeof object.value !== \"object\" || object.value === null) && typeof object.value !== \"string\") {\n return unsupported(id, node, \"Static member target is not indexable\");\n }\n if (typeof property !== \"string\" && typeof property !== \"number\") {\n return unsupported(\n id,\n propertyNode,\n \"Static member key is not a string or number\"\n );\n }\n const value = object.value[String(property)];\n return value === void 0 ? unsupported(id, node, `Static member ${String(property)} does not exist`) : success(value);\n }\n case \"UnaryExpression\": {\n const argument = childNode(node, \"argument\");\n if (!argument) return unsupported(id, node);\n const value = evaluateNode(resolver, id, argument, state);\n if (!value.ok) return value;\n if (node.operator === \"-\" && typeof value.value === \"number\") {\n return success(-value.value);\n }\n if (node.operator === \"+\" && typeof value.value === \"number\") {\n return success(value.value);\n }\n if (node.operator === \"!\") return success(!value.value);\n return unsupported(\n id,\n node,\n `Unary operator ${String(node.operator)} is unsupported`\n );\n }\n case \"BinaryExpression\":\n case \"LogicalExpression\": {\n const leftNode = childNode(node, \"left\");\n const rightNode = childNode(node, \"right\");\n if (!leftNode || !rightNode) return unsupported(id, node);\n const left = evaluateNode(resolver, id, leftNode, state);\n if (!left.ok) return left;\n if (node.type === \"LogicalExpression\") {\n if (node.operator === \"&&\" && !left.value) return left;\n if (node.operator === \"||\" && left.value) return left;\n if (node.operator === \"??\" && left.value !== null) return left;\n }\n const right = evaluateNode(resolver, id, rightNode, state);\n if (!right.ok) return right;\n switch (node.operator) {\n case \"+\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value + right.value);\n }\n if (typeof left.value === \"string\" || typeof right.value === \"string\") {\n return success(String(left.value) + String(right.value));\n }\n break;\n case \"-\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value - right.value);\n }\n break;\n case \"*\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value * right.value);\n }\n break;\n case \"/\":\n if (typeof left.value === \"number\" && typeof right.value === \"number\") {\n return success(left.value / right.value);\n }\n break;\n case \"&&\":\n case \"||\":\n case \"??\":\n return right;\n }\n return unsupported(\n id,\n node,\n `Binary operator ${String(node.operator)} is unsupported`\n );\n }\n case \"ConditionalExpression\": {\n const testNode = childNode(node, \"test\");\n const consequent = childNode(node, \"consequent\");\n const alternate = childNode(node, \"alternate\");\n if (!testNode || !consequent || !alternate) return unsupported(id, node);\n const test = evaluateNode(resolver, id, testNode, state);\n if (!test.ok) return test;\n return evaluateNode(resolver, id, test.value ? consequent : alternate, state);\n }\n case \"TemplateLiteral\": {\n const quasis = childNodes(node, \"quasis\");\n const expressions = childNodes(node, \"expressions\");\n let output = \"\";\n for (let index = 0; index < quasis.length; index++) {\n const quasi = quasis[index];\n const cooked = quasi?.value?.cooked;\n const raw = quasi?.value?.raw;\n output += typeof cooked === \"string\" ? cooked : typeof raw === \"string\" ? raw : \"\";\n const expression = expressions[index];\n if (expression) {\n const value = evaluateNode(resolver, id, expression, state);\n if (!value.ok) return value;\n output += String(value.value);\n }\n }\n return success(output);\n }\n default:\n return unsupported(id, node);\n }\n}\nfunction dynamicPrimitive(value) {\n if (value === null) return \"null\";\n if (typeof value === \"number\") return \"number\";\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"boolean\") return \"boolean\";\n return null;\n}\nfunction evaluateDynamicNode(resolver, id, input, state) {\n const exact = evaluateNode(resolver, id, input, state);\n if (exact.ok) {\n const type = dynamicPrimitive(exact.value);\n return type ? { type, values: [exact.value] } : null;\n }\n const node = unwrapExpression(input);\n if (node.type === \"Identifier\") {\n if (!identifierName(node)) return null;\n const definition = resolver.resolveReference(expressionReference(id, node));\n if (!definition?.constant || !definition.initializer) return null;\n const key = `${definition.id}:${definition.span.start}`;\n if (state.activeDefinitions.has(key)) return null;\n const initializer = resolver.expressionNode(definition.initializer);\n if (!initializer) return null;\n state.dependencies.add(definition.id);\n state.activeDefinitions.add(key);\n try {\n return evaluateDynamicNode(resolver, definition.id, initializer, state);\n } finally {\n state.activeDefinitions.delete(key);\n }\n }\n if (node.type === \"MemberExpression\") {\n const objectNode = childNode(node, \"object\");\n const propertyNode = childNode(node, \"property\");\n if (!objectNode || !propertyNode) return null;\n const object = evaluateNode(resolver, id, objectNode, state);\n if (!object.ok || !Array.isArray(object.value)) return null;\n const property = evaluateDynamicNode(resolver, id, propertyNode, state);\n if (property?.type !== \"number\" || object.value.length > 32) return null;\n const values = [];\n let type = null;\n for (const value of object.value) {\n const nextType = dynamicPrimitive(value);\n if (!nextType || type && type !== nextType) return null;\n type = nextType;\n const primitive = value;\n if (!values.includes(primitive)) values.push(primitive);\n }\n return type ? { type, values } : null;\n }\n if (node.type === \"BinaryExpression\") {\n const leftNode = childNode(node, \"left\");\n const rightNode = childNode(node, \"right\");\n if (!leftNode || !rightNode) return null;\n const left = evaluateDynamicNode(resolver, id, leftNode, state);\n const right = evaluateDynamicNode(resolver, id, rightNode, state);\n if (node.operator === \"+\") {\n return left?.type === \"number\" && right?.type === \"number\" ? { type: \"number\" } : null;\n }\n if (node.operator === \"-\" || node.operator === \"*\" || node.operator === \"/\" || node.operator === \"%\" || node.operator === \"**\") {\n if (left?.type === \"number\" || right?.type === \"number\") {\n return { type: \"number\" };\n }\n }\n }\n return null;\n}\nfunction evaluateConditionalExpression(resolver, reference) {\n const node = resolver.expressionNode(reference);\n if (!node) return null;\n const expression = unwrapExpression(node);\n if (!isAstNode(expression) || expression.type !== \"ConditionalExpression\") return null;\n const testNode = childNode(expression, \"test\");\n const consequent = childNode(expression, \"consequent\");\n const alternate = childNode(expression, \"alternate\");\n if (!testNode || !consequent || !alternate) return null;\n const trueState = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const whenTrue = evaluateNode(resolver, reference.id, consequent, trueState);\n if (!whenTrue.ok) return null;\n const falseState = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const whenFalse = evaluateNode(resolver, reference.id, alternate, falseState);\n if (!whenFalse.ok) return null;\n return {\n test: spanOf(reference.id, testNode),\n whenTrue: {\n value: whenTrue.value,\n dependencies: [...trueState.dependencies].sort()\n },\n whenFalse: {\n value: whenFalse.value,\n dependencies: [...falseState.dependencies].sort()\n }\n };\n}\nfunction evaluateExpression(resolver, reference) {\n const node = resolver.expressionNode(reference);\n if (!node) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n reference,\n \"Expression is outside the linked project graph\",\n reference.id\n )\n };\n }\n const state = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const result = evaluateNode(resolver, reference.id, node, state);\n return result.ok ? {\n ok: true,\n value: result.value,\n dependencies: [...state.dependencies].sort()\n } : result;\n}\nfunction evaluateDynamicExpression(resolver, reference) {\n const node = resolver.expressionNode(reference);\n if (!node) return null;\n const state = {\n activeDefinitions: /* @__PURE__ */ new Set(),\n dependencies: /* @__PURE__ */ new Set()\n };\n const result = evaluateDynamicNode(resolver, reference.id, node, state);\n return result ? { ...result, dependencies: [...state.dependencies].sort() } : null;\n}\nfunction evaluateBinding(resolver, id, localName) {\n const definition = resolver.resolveBinding(id, localName);\n if (!definition) {\n const emptySpan = { id, start: 0, end: 0 };\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/unresolved-binding\",\n emptySpan,\n `Binding ${localName} has no host-linked definition`\n )\n };\n }\n if (!definition.initializer) {\n return {\n ok: false,\n bailout: linkedBailout(\n \"linked/missing-initializer\",\n definition.span,\n `Binding ${localName} has no static initializer`,\n definition.id\n )\n };\n }\n return evaluateExpression(\n resolver,\n expressionReference(definition.id, definition.initializer)\n );\n}\nexport {\n evaluateBinding,\n evaluateConditionalExpression,\n evaluateDynamicExpression,\n evaluateExpression\n};\n//# sourceMappingURL=evaluate.js.map\n"],"mappings":";;;;;AAGA,SAAS,QAAQ,OAAO;CACtB,OAAO;EAAE,IAAI;EAAM;CAAM;AAC3B;AACA,SAAS,QAAQ,MAAM;CACrB,IAAI,KAAK,SAAS,eAAe,OAAO;CACxC,IAAI,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,SAAS,GAAG;EAC5D,MAAM,QAAQ,KAAK;EACnB,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,UAAU,MAAM;GAC1G,OAAO;EACT;CACF;CACA,OAAO,KAAK;AACd;AACA,SAAS,YAAY,IAAI,MAAM,SAAS,cAAc,KAAK,KAAK,+BAA+B;CAC7F,OAAO;EACL,IAAI;EACJ,SAAS,aAAa,gCAAgC,OAAO,IAAI,IAAI,GAAG,MAAM;CAChF;AACF;AACA,SAAS,mBAAmB,UAAU,YAAY,SAAS,OAAO;CAChE,MAAM,MAAM,GAAG,WAAW,GAAG,GAAG,WAAW,KAAK;CAChD,IAAI,MAAM,kBAAkB,IAAI,GAAG,GAAG;EACpC,OAAO;GACL,IAAI;GACJ,SAAS,aACP,iCACA,SACA,mCAAmC,WAAW,MAChD;EACF;CACF;CACA,IAAI,CAAC,WAAW,aAAa;EAC3B,OAAO;GACL,IAAI;GACJ,SAAS,cACP,8BACA,SACA,WAAW,WAAW,KAAK,6BAC3B,WAAW,EACb;EACF;CACF;CACA,IAAI,CAAC,WAAW,UAAU;EACxB,OAAO;GACL,IAAI;GACJ,SAAS,cACP,6BACA,SACA,WAAW,WAAW,KAAK,iDAC3B,WAAW,EACb;EACF;CACF;CACA,MAAM,cAAc,SAAS,eAAe,WAAW,WAAW;CAClE,IAAI,CAAC,aAAa;EAChB,OAAO;GACL,IAAI;GACJ,SAAS,cACP,8BACA,SACA,WAAW,WAAW,KAAK,2CAC3B,WAAW,EACb;EACF;CACF;CACA,MAAM,aAAa,IAAI,WAAW,EAAE;CACpC,MAAM,kBAAkB,IAAI,GAAG;CAC/B,IAAI;EACF,OAAO,aAAa,UAAU,WAAW,IAAI,aAAa,KAAK;CACjE,UAAU;EACR,MAAM,kBAAkB,OAAO,GAAG;CACpC;AACF;AACA,SAAS,eAAe,UAAU,IAAI,MAAM,OAAO;CACjD,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,YAAY,WAAW,MAAM,YAAY,GAAG;EACrD,IAAI,SAAS,SAAS,iBAAiB;GACrC,MAAM,WAAW,UAAU,UAAU,UAAU;GAC/C,IAAI,CAAC,UAAU,OAAO,YAAY,IAAI,QAAQ;GAC9C,MAAM,SAAS,aAAa,UAAU,IAAI,UAAU,KAAK;GACzD,IAAI,CAAC,OAAO,IAAI,OAAO;GACvB,IAAI,CAAC,OAAO,SAAS,OAAO,OAAO,UAAU,YAAY,MAAM,QAAQ,OAAO,KAAK,GAAG;IACpF,OAAO;KACL,IAAI;KACJ,SAAS,aACP,2BACA,OAAO,IAAI,QAAQ,GACnB,oDACF;IACF;GACF;GACA,OAAO,OAAO,QAAQ,OAAO,KAAK;GAClC;EACF;EACA,IAAI,SAAS,SAAS,cAAc,SAAS,SAAS,kBAAkB;GACtE,OAAO,YAAY,IAAI,QAAQ;EACjC;EACA,MAAM,UAAU,UAAU,UAAU,KAAK;EACzC,MAAM,YAAY,UAAU,UAAU,OAAO;EAC7C,IAAI,CAAC,WAAW,CAAC,WAAW,OAAO,YAAY,IAAI,QAAQ;EAC3D,IAAI,MAAM,eAAe,OAAO,KAAK,KAAK;EAC1C,IAAI,SAAS,aAAa,QAAQ,QAAQ,KAAK,GAAG;GAChD,MAAM,eAAe,aAAa,UAAU,IAAI,SAAS,KAAK;GAC9D,IAAI,CAAC,aAAa,IAAI,OAAO;GAC7B,MAAM,aAAa;EACrB;EACA,IAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;GACtD,OAAO,YAAY,IAAI,SAAS,6CAA6C;EAC/E;EACA,MAAM,QAAQ,aAAa,UAAU,IAAI,WAAW,KAAK;EACzD,IAAI,CAAC,MAAM,IAAI,OAAO;EACtB,OAAO,OAAO,GAAG,KAAK,MAAM;CAC9B;CACA,OAAO,QAAQ,MAAM;AACvB;AACA,SAAS,cAAc,UAAU,IAAI,MAAM,OAAO;CAChD,MAAM,SAAS,CAAC;CAChB,MAAM,cAAc,KAAK;CACzB,IAAI,CAAC,MAAM,QAAQ,WAAW,KAAK,YAAY,MAAM,YAAY,YAAY,QAAQ,CAAC,UAAU,OAAO,CAAC,GAAG;EACzG,OAAO,YAAY,IAAI,MAAM,4CAA4C;CAC3E;CACA,KAAK,MAAM,WAAW,YAAY,OAAO,SAAS,GAAG;EACnD,IAAI,QAAQ,SAAS,iBAAiB;GACpC,MAAM,WAAW,UAAU,SAAS,UAAU;GAC9C,IAAI,CAAC,UAAU,OAAO,YAAY,IAAI,OAAO;GAC7C,MAAM,SAAS,aAAa,UAAU,IAAI,UAAU,KAAK;GACzD,IAAI,CAAC,OAAO,IAAI,OAAO;GACvB,IAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,GAAG;IAChC,OAAO,YACL,IACA,SACA,kDACF;GACF;GACA,OAAO,KAAK,GAAG,OAAO,KAAK;GAC3B;EACF;EACA,MAAM,QAAQ,aAAa,UAAU,IAAI,SAAS,KAAK;EACvD,IAAI,CAAC,MAAM,IAAI,OAAO;EACtB,OAAO,KAAK,MAAM,KAAK;CACzB;CACA,OAAO,QAAQ,MAAM;AACvB;AACA,SAAS,aAAa,UAAU,IAAI,OAAO,OAAO;CAChD,MAAM,OAAO,iBAAiB,KAAK;CACnC,MAAM,eAAe,QAAQ,IAAI;CACjC,IAAI,iBAAiB,KAAK,GAAG,OAAO,QAAQ,YAAY;CACxD,QAAQ,KAAK,MAAb;EACE,KAAK,cAAc;GACjB,MAAM,OAAO,eAAe,IAAI;GAChC,IAAI,CAAC,MAAM,OAAO,YAAY,IAAI,IAAI;GACtC,MAAM,aAAa,SAAS,eAAe,IAAI,IAAI;GACnD,IAAI,CAAC,YAAY;IACf,OAAO;KACL,IAAI;KACJ,SAAS,cACP,6BACA,OAAO,IAAI,IAAI,GACf,WAAW,KAAK,+BAClB;IACF;GACF;GACA,OAAO,mBAAmB,UAAU,YAAY,OAAO,IAAI,IAAI,GAAG,KAAK;EACzE;EACA,KAAK,oBACH,OAAO,eAAe,UAAU,IAAI,MAAM,KAAK;EACjD,KAAK,mBACH,OAAO,cAAc,UAAU,IAAI,MAAM,KAAK;EAChD,KAAK,oBAAoB;GACvB,MAAM,aAAa,UAAU,MAAM,QAAQ;GAC3C,MAAM,eAAe,UAAU,MAAM,UAAU;GAC/C,IAAI,CAAC,cAAc,CAAC,cAAc,OAAO,YAAY,IAAI,IAAI;GAC7D,MAAM,SAAS,aAAa,UAAU,IAAI,YAAY,KAAK;GAC3D,IAAI,CAAC,OAAO,IAAI,OAAO;GACvB,IAAI,WAAW,eAAe,YAAY;GAC1C,IAAI,KAAK,aAAa,QAAQ,aAAa,MAAM;IAC/C,MAAM,oBAAoB,aAAa,UAAU,IAAI,cAAc,KAAK;IACxE,IAAI,CAAC,kBAAkB,IAAI,OAAO;IAClC,WAAW,kBAAkB;GAC/B;GACA,KAAK,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,SAAS,OAAO,OAAO,UAAU,UAAU;IACnG,OAAO,YAAY,IAAI,MAAM,uCAAuC;GACtE;GACA,IAAI,OAAO,aAAa,YAAY,OAAO,aAAa,UAAU;IAChE,OAAO,YACL,IACA,cACA,6CACF;GACF;GACA,MAAM,QAAQ,OAAO,MAAM,OAAO,QAAQ;GAC1C,OAAO,UAAU,KAAK,IAAI,YAAY,IAAI,MAAM,iBAAiB,OAAO,QAAQ,EAAE,gBAAgB,IAAI,QAAQ,KAAK;EACrH;EACA,KAAK,mBAAmB;GACtB,MAAM,WAAW,UAAU,MAAM,UAAU;GAC3C,IAAI,CAAC,UAAU,OAAO,YAAY,IAAI,IAAI;GAC1C,MAAM,QAAQ,aAAa,UAAU,IAAI,UAAU,KAAK;GACxD,IAAI,CAAC,MAAM,IAAI,OAAO;GACtB,IAAI,KAAK,aAAa,OAAO,OAAO,MAAM,UAAU,UAAU;IAC5D,OAAO,QAAQ,CAAC,MAAM,KAAK;GAC7B;GACA,IAAI,KAAK,aAAa,OAAO,OAAO,MAAM,UAAU,UAAU;IAC5D,OAAO,QAAQ,MAAM,KAAK;GAC5B;GACA,IAAI,KAAK,aAAa,KAAK,OAAO,QAAQ,CAAC,MAAM,KAAK;GACtD,OAAO,YACL,IACA,MACA,kBAAkB,OAAO,KAAK,QAAQ,EAAE,gBAC1C;EACF;EACA,KAAK;EACL,KAAK,qBAAqB;GACxB,MAAM,WAAW,UAAU,MAAM,MAAM;GACvC,MAAM,YAAY,UAAU,MAAM,OAAO;GACzC,IAAI,CAAC,YAAY,CAAC,WAAW,OAAO,YAAY,IAAI,IAAI;GACxD,MAAM,OAAO,aAAa,UAAU,IAAI,UAAU,KAAK;GACvD,IAAI,CAAC,KAAK,IAAI,OAAO;GACrB,IAAI,KAAK,SAAS,qBAAqB;IACrC,IAAI,KAAK,aAAa,QAAQ,CAAC,KAAK,OAAO,OAAO;IAClD,IAAI,KAAK,aAAa,QAAQ,KAAK,OAAO,OAAO;IACjD,IAAI,KAAK,aAAa,QAAQ,KAAK,UAAU,MAAM,OAAO;GAC5D;GACA,MAAM,QAAQ,aAAa,UAAU,IAAI,WAAW,KAAK;GACzD,IAAI,CAAC,MAAM,IAAI,OAAO;GACtB,QAAQ,KAAK,UAAb;IACE,KAAK;KACH,IAAI,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,UAAU;MACrE,OAAO,QAAQ,KAAK,QAAQ,MAAM,KAAK;KACzC;KACA,IAAI,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,UAAU;MACrE,OAAO,QAAQ,OAAO,KAAK,KAAK,IAAI,OAAO,MAAM,KAAK,CAAC;KACzD;KACA;IACF,KAAK;KACH,IAAI,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,UAAU;MACrE,OAAO,QAAQ,KAAK,QAAQ,MAAM,KAAK;KACzC;KACA;IACF,KAAK;KACH,IAAI,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,UAAU;MACrE,OAAO,QAAQ,KAAK,QAAQ,MAAM,KAAK;KACzC;KACA;IACF,KAAK;KACH,IAAI,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,UAAU;MACrE,OAAO,QAAQ,KAAK,QAAQ,MAAM,KAAK;KACzC;KACA;IACF,KAAK;IACL,KAAK;IACL,KAAK,MACH,OAAO;GACX;GACA,OAAO,YACL,IACA,MACA,mBAAmB,OAAO,KAAK,QAAQ,EAAE,gBAC3C;EACF;EACA,KAAK,yBAAyB;GAC5B,MAAM,WAAW,UAAU,MAAM,MAAM;GACvC,MAAM,aAAa,UAAU,MAAM,YAAY;GAC/C,MAAM,YAAY,UAAU,MAAM,WAAW;GAC7C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,OAAO,YAAY,IAAI,IAAI;GACvE,MAAM,OAAO,aAAa,UAAU,IAAI,UAAU,KAAK;GACvD,IAAI,CAAC,KAAK,IAAI,OAAO;GACrB,OAAO,aAAa,UAAU,IAAI,KAAK,QAAQ,aAAa,WAAW,KAAK;EAC9E;EACA,KAAK,mBAAmB;GACtB,MAAM,SAAS,WAAW,MAAM,QAAQ;GACxC,MAAM,cAAc,WAAW,MAAM,aAAa;GAClD,IAAI,SAAS;GACb,KAAK,IAAI,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS;IAClD,MAAM,QAAQ,OAAO;IACrB,MAAM,SAAS,OAAO,OAAO;IAC7B,MAAM,MAAM,OAAO,OAAO;IAC1B,UAAU,OAAO,WAAW,WAAW,SAAS,OAAO,QAAQ,WAAW,MAAM;IAChF,MAAM,aAAa,YAAY;IAC/B,IAAI,YAAY;KACd,MAAM,QAAQ,aAAa,UAAU,IAAI,YAAY,KAAK;KAC1D,IAAI,CAAC,MAAM,IAAI,OAAO;KACtB,UAAU,OAAO,MAAM,KAAK;IAC9B;GACF;GACA,OAAO,QAAQ,MAAM;EACvB;EACA,SACE,OAAO,YAAY,IAAI,IAAI;CAC/B;AACF;AACA,SAAS,iBAAiB,OAAO;CAC/B,IAAI,UAAU,MAAM,OAAO;CAC3B,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI,OAAO,UAAU,WAAW,OAAO;CACvC,OAAO;AACT;AACA,SAAS,oBAAoB,UAAU,IAAI,OAAO,OAAO;CACvD,MAAM,QAAQ,aAAa,UAAU,IAAI,OAAO,KAAK;CACrD,IAAI,MAAM,IAAI;EACZ,MAAM,OAAO,iBAAiB,MAAM,KAAK;EACzC,OAAO,OAAO;GAAE;GAAM,QAAQ,CAAC,MAAM,KAAK;EAAE,IAAI;CAClD;CACA,MAAM,OAAO,iBAAiB,KAAK;CACnC,IAAI,KAAK,SAAS,cAAc;EAC9B,IAAI,CAAC,eAAe,IAAI,GAAG,OAAO;EAClC,MAAM,aAAa,SAAS,iBAAiB,oBAAoB,IAAI,IAAI,CAAC;EAC1E,IAAI,CAAC,YAAY,YAAY,CAAC,WAAW,aAAa,OAAO;EAC7D,MAAM,MAAM,GAAG,WAAW,GAAG,GAAG,WAAW,KAAK;EAChD,IAAI,MAAM,kBAAkB,IAAI,GAAG,GAAG,OAAO;EAC7C,MAAM,cAAc,SAAS,eAAe,WAAW,WAAW;EAClE,IAAI,CAAC,aAAa,OAAO;EACzB,MAAM,aAAa,IAAI,WAAW,EAAE;EACpC,MAAM,kBAAkB,IAAI,GAAG;EAC/B,IAAI;GACF,OAAO,oBAAoB,UAAU,WAAW,IAAI,aAAa,KAAK;EACxE,UAAU;GACR,MAAM,kBAAkB,OAAO,GAAG;EACpC;CACF;CACA,IAAI,KAAK,SAAS,oBAAoB;EACpC,MAAM,aAAa,UAAU,MAAM,QAAQ;EAC3C,MAAM,eAAe,UAAU,MAAM,UAAU;EAC/C,IAAI,CAAC,cAAc,CAAC,cAAc,OAAO;EACzC,MAAM,SAAS,aAAa,UAAU,IAAI,YAAY,KAAK;EAC3D,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,QAAQ,OAAO,KAAK,GAAG,OAAO;EACvD,MAAM,WAAW,oBAAoB,UAAU,IAAI,cAAc,KAAK;EACtE,IAAI,UAAU,SAAS,YAAY,OAAO,MAAM,SAAS,IAAI,OAAO;EACpE,MAAM,SAAS,CAAC;EAChB,IAAI,OAAO;EACX,KAAK,MAAM,SAAS,OAAO,OAAO;GAChC,MAAM,WAAW,iBAAiB,KAAK;GACvC,IAAI,CAAC,YAAY,QAAQ,SAAS,UAAU,OAAO;GACnD,OAAO;GACP,MAAM,YAAY;GAClB,IAAI,CAAC,OAAO,SAAS,SAAS,GAAG,OAAO,KAAK,SAAS;EACxD;EACA,OAAO,OAAO;GAAE;GAAM;EAAO,IAAI;CACnC;CACA,IAAI,KAAK,SAAS,oBAAoB;EACpC,MAAM,WAAW,UAAU,MAAM,MAAM;EACvC,MAAM,YAAY,UAAU,MAAM,OAAO;EACzC,IAAI,CAAC,YAAY,CAAC,WAAW,OAAO;EACpC,MAAM,OAAO,oBAAoB,UAAU,IAAI,UAAU,KAAK;EAC9D,MAAM,QAAQ,oBAAoB,UAAU,IAAI,WAAW,KAAK;EAChE,IAAI,KAAK,aAAa,KAAK;GACzB,OAAO,MAAM,SAAS,YAAY,OAAO,SAAS,WAAW,EAAE,MAAM,SAAS,IAAI;EACpF;EACA,IAAI,KAAK,aAAa,OAAO,KAAK,aAAa,OAAO,KAAK,aAAa,OAAO,KAAK,aAAa,OAAO,KAAK,aAAa,MAAM;GAC9H,IAAI,MAAM,SAAS,YAAY,OAAO,SAAS,UAAU;IACvD,OAAO,EAAE,MAAM,SAAS;GAC1B;EACF;CACF;CACA,OAAO;AACT;AACA,SAAS,8BAA8B,UAAU,WAAW;CAC1D,MAAM,OAAO,SAAS,eAAe,SAAS;CAC9C,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,aAAa,iBAAiB,IAAI;CACxC,IAAI,CAAC,UAAU,UAAU,KAAK,WAAW,SAAS,yBAAyB,OAAO;CAClF,MAAM,WAAW,UAAU,YAAY,MAAM;CAC7C,MAAM,aAAa,UAAU,YAAY,YAAY;CACrD,MAAM,YAAY,UAAU,YAAY,WAAW;CACnD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,OAAO;CACnD,MAAM,YAAY;EAChB,mCAAmC,IAAI,IAAI;EAC3C,8BAA8B,IAAI,IAAI;CACxC;CACA,MAAM,WAAW,aAAa,UAAU,UAAU,IAAI,YAAY,SAAS;CAC3E,IAAI,CAAC,SAAS,IAAI,OAAO;CACzB,MAAM,aAAa;EACjB,mCAAmC,IAAI,IAAI;EAC3C,8BAA8B,IAAI,IAAI;CACxC;CACA,MAAM,YAAY,aAAa,UAAU,UAAU,IAAI,WAAW,UAAU;CAC5E,IAAI,CAAC,UAAU,IAAI,OAAO;CAC1B,OAAO;EACL,MAAM,OAAO,UAAU,IAAI,QAAQ;EACnC,UAAU;GACR,OAAO,SAAS;GAChB,cAAc,CAAC,GAAG,UAAU,YAAY,CAAC,CAAC,KAAK;EACjD;EACA,WAAW;GACT,OAAO,UAAU;GACjB,cAAc,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC,KAAK;EAClD;CACF;AACF;AACA,SAAS,mBAAmB,UAAU,WAAW;CAC/C,MAAM,OAAO,SAAS,eAAe,SAAS;CAC9C,IAAI,CAAC,MAAM;EACT,OAAO;GACL,IAAI;GACJ,SAAS,cACP,8BACA,WACA,kDACA,UAAU,EACZ;EACF;CACF;CACA,MAAM,QAAQ;EACZ,mCAAmC,IAAI,IAAI;EAC3C,8BAA8B,IAAI,IAAI;CACxC;CACA,MAAM,SAAS,aAAa,UAAU,UAAU,IAAI,MAAM,KAAK;CAC/D,OAAO,OAAO,KAAK;EACjB,IAAI;EACJ,OAAO,OAAO;EACd,cAAc,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,KAAK;CAC7C,IAAI;AACN;AACA,SAAS,0BAA0B,UAAU,WAAW;CACtD,MAAM,OAAO,SAAS,eAAe,SAAS;CAC9C,IAAI,CAAC,MAAM,OAAO;CAClB,MAAM,QAAQ;EACZ,mCAAmC,IAAI,IAAI;EAC3C,8BAA8B,IAAI,IAAI;CACxC;CACA,MAAM,SAAS,oBAAoB,UAAU,UAAU,IAAI,MAAM,KAAK;CACtE,OAAO,SAAS;EAAE,GAAG;EAAQ,cAAc,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC,KAAK;CAAE,IAAI;AAChF;AACA,SAAS,gBAAgB,UAAU,IAAI,WAAW;CAChD,MAAM,aAAa,SAAS,eAAe,IAAI,SAAS;CACxD,IAAI,CAAC,YAAY;EACf,MAAM,YAAY;GAAE;GAAI,OAAO;GAAG,KAAK;EAAE;EACzC,OAAO;GACL,IAAI;GACJ,SAAS,cACP,6BACA,WACA,WAAW,UAAU,+BACvB;EACF;CACF;CACA,IAAI,CAAC,WAAW,aAAa;EAC3B,OAAO;GACL,IAAI;GACJ,SAAS,cACP,8BACA,WAAW,MACX,WAAW,UAAU,6BACrB,WAAW,EACb;EACF;CACF;CACA,OAAO,mBACL,UACA,oBAAoB,WAAW,IAAI,WAAW,WAAW,CAC3D;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","names":["#installHostRecord","#files","#resolutions","#candidate","#modules","#dependencies","#dependents","#elementCache","#removeOutgoingEdges","#removeResolutions"],"sources":["esm/graph.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { expressionReference, resolutionKey, resolvedModuleId } from \"./contracts\";\nimport { linkedBailout, localBailout } from \"./diagnostics\";\nimport {\n evaluateBinding,\n evaluateConditionalExpression,\n evaluateDynamicExpression,\n evaluateExpression\n} from \"./evaluate\";\nimport { nodeAtSpan, normalizeElements } from \"./normalize\";\nfunction compareIds(left, right) {\n return compareCodeUnits(left, right);\n}\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction stableImports(imports) {\n return [...imports].sort((left, right) => {\n const bySpecifier = compareCodeUnits(left.specifier, right.specifier);\n return bySpecifier || compareCodeUnits(left.resolvedId, right.resolvedId);\n });\n}\nfunction moduleContentHash(input) {\n const hash = createHash(\"sha256\");\n hash.update(input.source);\n hash.update(\"\\0\");\n for (const dependency of stableImports(input.imports)) {\n hash.update(dependency.specifier);\n hash.update(\"\\0\");\n hash.update(dependency.resolvedId);\n hash.update(\"\\0\");\n hash.update(dependency.external ? \"external\" : \"internal\");\n hash.update(\"\\0\");\n }\n return hash.digest(\"hex\");\n}\nclass ProjectGraph {\n #files = /* @__PURE__ */ new Map();\n #resolutions = /* @__PURE__ */ new Map();\n #modules = /* @__PURE__ */ new Map();\n #dependencies = /* @__PURE__ */ new Map();\n #dependents = /* @__PURE__ */ new Map();\n #elementCache = /* @__PURE__ */ new Map();\n #candidate;\n constructor(factory, project) {\n for (const input of project.modules) this.#installHostRecord(input);\n const candidateProject = {\n files: this.#files,\n resolutions: this.#resolutions\n };\n this.#candidate = factory.create(candidateProject);\n this.#candidate.link();\n }\n moduleIds() {\n return [...this.#modules.keys()].sort(compareIds);\n }\n contentHash(id) {\n return this.#modules.get(id)?.hash ?? null;\n }\n sourceOf(id) {\n const source = this.#modules.get(id)?.input.source;\n if (source === void 0) throw new Error(`Unknown host module ${id}`);\n return source;\n }\n dependenciesOf(id) {\n return [...this.#dependencies.get(id) ?? []].sort(compareIds);\n }\n dependentsOf(id) {\n return [...this.#dependents.get(id) ?? []].sort(compareIds);\n }\n affectedBy(id) {\n const affected = /* @__PURE__ */ new Set([id]);\n const queue = [id];\n while (queue.length) {\n const current = queue.shift();\n for (const dependent of this.#dependents.get(current) ?? []) {\n if (affected.has(dependent)) continue;\n affected.add(dependent);\n queue.push(dependent);\n }\n }\n return [...affected].sort(compareIds);\n }\n parseCount(id) {\n return this.#candidate.parseCount(id);\n }\n resolveBinding(id, localName) {\n const definition = this.#candidate.definitionOf(id, localName);\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 }\n resolveReference(reference) {\n const definition = this.#candidate.definitionAt(\n reference.id,\n reference.start,\n reference.end\n );\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 }\n expressionNode(reference) {\n if (!this.#modules.has(reference.id)) return null;\n return nodeAtSpan(\n this.#candidate.programOf(reference.id),\n reference.start,\n reference.end\n );\n }\n evaluate(reference) {\n return evaluateExpression(this, reference);\n }\n evaluateConditional(reference) {\n return evaluateConditionalExpression(this, reference);\n }\n evaluateDynamic(reference) {\n return evaluateDynamicExpression(this, reference);\n }\n evaluateBinding(id, localName) {\n return evaluateBinding(this, id, localName);\n }\n elementsOf(id) {\n const record = this.#modules.get(id);\n if (!record) throw new Error(`Unknown host module ${id}`);\n const cached = this.#elementCache.get(id);\n if (cached?.hash === record.hash) return cached.result;\n const result = normalizeElements(this.#candidate, id, record.input.imports);\n this.#elementCache.set(id, { hash: record.hash, result });\n return result;\n }\n diagnostics() {\n const diagnostics = this.#candidate.diagnostics().map(\n (diagnostic) => diagnostic.kind === \"parse\" ? localBailout(\n \"local/parse-error\",\n { id: diagnostic.id, start: 0, end: 0 },\n diagnostic.message\n ) : linkedBailout(\n \"linked/unresolved-binding\",\n { id: diagnostic.id, start: 0, end: 0 },\n diagnostic.message\n )\n );\n for (const [id, record] of this.#modules) {\n for (const dependency of record.input.imports) {\n if (dependency.external) continue;\n if (this.#modules.has(dependency.resolvedId)) continue;\n diagnostics.push(\n linkedBailout(\n \"linked/unresolved-import\",\n { id, start: 0, end: 0 },\n `Host-resolved import ${dependency.specifier} points outside the project graph`,\n dependency.resolvedId\n )\n );\n }\n }\n return diagnostics.sort((left, right) => {\n const byId = compareCodeUnits(left.span.id, right.span.id);\n return byId || left.span.start - right.span.start || compareCodeUnits(left.code, right.code);\n });\n }\n updateModule(input) {\n const previous = this.#modules.get(input.id);\n const nextHash = moduleContentHash(input);\n if (previous?.hash === nextHash) {\n return {\n changed: false,\n id: input.id,\n previousHash: previous.hash,\n contentHash: previous.hash,\n invalidatedIds: []\n };\n }\n const invalidatedIds = this.affectedBy(input.id);\n const previousHash = previous?.hash ?? null;\n if (previous) this.#candidate.removeFile(input.id);\n this.#installHostRecord(input);\n this.#candidate.addFile(input.id, input.source);\n this.#candidate.link();\n for (const id of invalidatedIds) this.#elementCache.delete(id);\n return {\n changed: true,\n id: input.id,\n previousHash,\n contentHash: nextHash,\n invalidatedIds\n };\n }\n removeModule(id) {\n const previous = this.#modules.get(id);\n if (!previous) {\n return {\n changed: false,\n id,\n previousHash: null,\n contentHash: null,\n invalidatedIds: []\n };\n }\n const invalidatedIds = this.affectedBy(id);\n this.#candidate.removeFile(id);\n this.#removeOutgoingEdges(id);\n this.#removeResolutions(id);\n this.#modules.delete(id);\n this.#files.delete(id);\n this.#candidate.link();\n for (const invalidated of invalidatedIds) this.#elementCache.delete(invalidated);\n return {\n changed: true,\n id,\n previousHash: previous.hash,\n contentHash: null,\n invalidatedIds\n };\n }\n #installHostRecord(input) {\n resolvedModuleId(input.id);\n const seenSpecifiers = /* @__PURE__ */ new Set();\n for (const dependency of input.imports) {\n resolvedModuleId(dependency.resolvedId);\n if (seenSpecifiers.has(dependency.specifier)) {\n throw new Error(\n `Duplicate host resolution for ${input.id}:${dependency.specifier}`\n );\n }\n seenSpecifiers.add(dependency.specifier);\n }\n this.#removeOutgoingEdges(input.id);\n this.#removeResolutions(input.id);\n const dependencies = new Set(\n input.imports.filter(({ external }) => !external).map(({ resolvedId }) => resolvedId)\n );\n this.#dependencies.set(input.id, dependencies);\n for (const dependency of dependencies) {\n let reverse = this.#dependents.get(dependency);\n if (!reverse) {\n reverse = /* @__PURE__ */ new Set();\n this.#dependents.set(dependency, reverse);\n }\n reverse.add(input.id);\n }\n for (const dependency of input.imports) {\n if (dependency.external) continue;\n this.#resolutions.set(\n resolutionKey(input.id, dependency.specifier),\n dependency.resolvedId\n );\n }\n const installedInput = {\n ...input,\n imports: input.imports.map((dependency) => ({ ...dependency }))\n };\n this.#files.set(installedInput.id, installedInput.source);\n this.#modules.set(installedInput.id, {\n input: installedInput,\n hash: moduleContentHash(installedInput)\n });\n }\n #removeOutgoingEdges(id) {\n for (const dependency of this.#dependencies.get(id) ?? []) {\n const reverse = this.#dependents.get(dependency);\n reverse?.delete(id);\n if (reverse?.size === 0) this.#dependents.delete(dependency);\n }\n this.#dependencies.delete(id);\n }\n #removeResolutions(id) {\n const prefix = `${id}\\0`;\n for (const key of this.#resolutions.keys()) {\n if (key.startsWith(prefix)) this.#resolutions.delete(key);\n }\n }\n}\nexport {\n ProjectGraph,\n moduleContentHash\n};\n//# sourceMappingURL=graph.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","names":["#installHostRecord","#files","#resolutions","#candidate","#modules","#dependencies","#dependents","#elementCache","#removeOutgoingEdges","#removeResolutions"],"sources":["esm/graph.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { expressionReference, resolutionKey, resolvedModuleId } from \"./contracts\";\nimport { linkedBailout, localBailout } from \"./diagnostics\";\nimport {\n evaluateBinding,\n evaluateConditionalExpression,\n evaluateDynamicExpression,\n evaluateExpression\n} from \"./evaluate\";\nimport { nodeAtSpan, normalizeElements } from \"./normalize\";\nfunction compareIds(left, right) {\n return compareCodeUnits(left, right);\n}\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction stableImports(imports) {\n return [...imports].sort((left, right) => {\n const bySpecifier = compareCodeUnits(left.specifier, right.specifier);\n return bySpecifier || compareCodeUnits(left.resolvedId, right.resolvedId);\n });\n}\nfunction moduleContentHash(input) {\n const hash = createHash(\"sha256\");\n hash.update(input.source);\n hash.update(\"\\0\");\n for (const dependency of stableImports(input.imports)) {\n hash.update(dependency.specifier);\n hash.update(\"\\0\");\n hash.update(dependency.resolvedId);\n hash.update(\"\\0\");\n hash.update(dependency.external ? \"external\" : \"internal\");\n hash.update(\"\\0\");\n }\n return hash.digest(\"hex\");\n}\nclass ProjectGraph {\n #files = /* @__PURE__ */ new Map();\n #resolutions = /* @__PURE__ */ new Map();\n #modules = /* @__PURE__ */ new Map();\n #dependencies = /* @__PURE__ */ new Map();\n #dependents = /* @__PURE__ */ new Map();\n #elementCache = /* @__PURE__ */ new Map();\n #candidate;\n constructor(factory, project) {\n for (const input of project.modules) this.#installHostRecord(input);\n const candidateProject = {\n files: this.#files,\n resolutions: this.#resolutions\n };\n this.#candidate = factory.create(candidateProject);\n this.#candidate.link();\n }\n moduleIds() {\n return [...this.#modules.keys()].sort(compareIds);\n }\n contentHash(id) {\n return this.#modules.get(id)?.hash ?? null;\n }\n sourceOf(id) {\n const source = this.#modules.get(id)?.input.source;\n if (source === void 0) throw new Error(`Unknown host module ${id}`);\n return source;\n }\n dependenciesOf(id) {\n return [...this.#dependencies.get(id) ?? []].sort(compareIds);\n }\n dependentsOf(id) {\n return [...this.#dependents.get(id) ?? []].sort(compareIds);\n }\n affectedBy(id) {\n const affected = /* @__PURE__ */ new Set([id]);\n const queue = [id];\n while (queue.length) {\n const current = queue.shift();\n for (const dependent of this.#dependents.get(current) ?? []) {\n if (affected.has(dependent)) continue;\n affected.add(dependent);\n queue.push(dependent);\n }\n }\n return [...affected].sort(compareIds);\n }\n parseCount(id) {\n return this.#candidate.parseCount(id);\n }\n resolveBinding(id, localName) {\n const definition = this.#candidate.definitionOf(id, localName);\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 }\n resolveReference(reference) {\n const definition = this.#candidate.definitionAt(\n reference.id,\n reference.start,\n reference.end\n );\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 }\n expressionNode(reference) {\n if (!this.#modules.has(reference.id)) return null;\n return nodeAtSpan(\n this.#candidate.programOf(reference.id),\n reference.start,\n reference.end\n );\n }\n evaluate(reference) {\n return evaluateExpression(this, reference);\n }\n evaluateConditional(reference) {\n return evaluateConditionalExpression(this, reference);\n }\n evaluateDynamic(reference) {\n return evaluateDynamicExpression(this, reference);\n }\n evaluateBinding(id, localName) {\n return evaluateBinding(this, id, localName);\n }\n elementsOf(id) {\n const record = this.#modules.get(id);\n if (!record) throw new Error(`Unknown host module ${id}`);\n const cached = this.#elementCache.get(id);\n if (cached?.hash === record.hash) return cached.result;\n const result = normalizeElements(this.#candidate, id, record.input.imports);\n this.#elementCache.set(id, { hash: record.hash, result });\n return result;\n }\n diagnostics() {\n const diagnostics = this.#candidate.diagnostics().map(\n (diagnostic) => diagnostic.kind === \"parse\" ? localBailout(\n \"local/parse-error\",\n { id: diagnostic.id, start: 0, end: 0 },\n diagnostic.message\n ) : linkedBailout(\n \"linked/unresolved-binding\",\n { id: diagnostic.id, start: 0, end: 0 },\n diagnostic.message\n )\n );\n for (const [id, record] of this.#modules) {\n for (const dependency of record.input.imports) {\n if (dependency.external) continue;\n if (this.#modules.has(dependency.resolvedId)) continue;\n diagnostics.push(\n linkedBailout(\n \"linked/unresolved-import\",\n { id, start: 0, end: 0 },\n `Host-resolved import ${dependency.specifier} points outside the project graph`,\n dependency.resolvedId\n )\n );\n }\n }\n return diagnostics.sort((left, right) => {\n const byId = compareCodeUnits(left.span.id, right.span.id);\n return byId || left.span.start - right.span.start || compareCodeUnits(left.code, right.code);\n });\n }\n updateModule(input) {\n const previous = this.#modules.get(input.id);\n const nextHash = moduleContentHash(input);\n if (previous?.hash === nextHash) {\n return {\n changed: false,\n id: input.id,\n previousHash: previous.hash,\n contentHash: previous.hash,\n invalidatedIds: []\n };\n }\n const invalidatedIds = this.affectedBy(input.id);\n const previousHash = previous?.hash ?? null;\n if (previous) this.#candidate.removeFile(input.id);\n this.#installHostRecord(input);\n this.#candidate.addFile(input.id, input.source);\n this.#candidate.link();\n for (const id of invalidatedIds) this.#elementCache.delete(id);\n return {\n changed: true,\n id: input.id,\n previousHash,\n contentHash: nextHash,\n invalidatedIds\n };\n }\n removeModule(id) {\n const previous = this.#modules.get(id);\n if (!previous) {\n return {\n changed: false,\n id,\n previousHash: null,\n contentHash: null,\n invalidatedIds: []\n };\n }\n const invalidatedIds = this.affectedBy(id);\n this.#candidate.removeFile(id);\n this.#removeOutgoingEdges(id);\n this.#removeResolutions(id);\n this.#modules.delete(id);\n this.#files.delete(id);\n this.#candidate.link();\n for (const invalidated of invalidatedIds) this.#elementCache.delete(invalidated);\n return {\n changed: true,\n id,\n previousHash: previous.hash,\n contentHash: null,\n invalidatedIds\n };\n }\n #installHostRecord(input) {\n resolvedModuleId(input.id);\n const seenSpecifiers = /* @__PURE__ */ new Set();\n for (const dependency of input.imports) {\n resolvedModuleId(dependency.resolvedId);\n if (seenSpecifiers.has(dependency.specifier)) {\n throw new Error(\n `Duplicate host resolution for ${input.id}:${dependency.specifier}`\n );\n }\n seenSpecifiers.add(dependency.specifier);\n }\n this.#removeOutgoingEdges(input.id);\n this.#removeResolutions(input.id);\n const dependencies = new Set(\n input.imports.filter(({ external }) => !external).map(({ resolvedId }) => resolvedId)\n );\n this.#dependencies.set(input.id, dependencies);\n for (const dependency of dependencies) {\n let reverse = this.#dependents.get(dependency);\n if (!reverse) {\n reverse = /* @__PURE__ */ new Set();\n this.#dependents.set(dependency, reverse);\n }\n reverse.add(input.id);\n }\n for (const dependency of input.imports) {\n if (dependency.external) continue;\n this.#resolutions.set(\n resolutionKey(input.id, dependency.specifier),\n dependency.resolvedId\n );\n }\n const installedInput = {\n ...input,\n imports: input.imports.map((dependency) => ({ ...dependency }))\n };\n this.#files.set(installedInput.id, installedInput.source);\n this.#modules.set(installedInput.id, {\n input: installedInput,\n hash: moduleContentHash(installedInput)\n });\n }\n #removeOutgoingEdges(id) {\n for (const dependency of this.#dependencies.get(id) ?? []) {\n const reverse = this.#dependents.get(dependency);\n reverse?.delete(id);\n if (reverse?.size === 0) this.#dependents.delete(dependency);\n }\n this.#dependencies.delete(id);\n }\n #removeResolutions(id) {\n const prefix = `${id}\\0`;\n for (const key of this.#resolutions.keys()) {\n if (key.startsWith(prefix)) this.#resolutions.delete(key);\n }\n }\n}\nexport {\n ProjectGraph,\n moduleContentHash\n};\n//# sourceMappingURL=graph.js.map\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","names":[],"sources":["esm/hash.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nfunction contentHash(value) {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction stringify(value) {\n if (Array.isArray(value)) {\n return `[${value.map((child) => stringify(child) ?? \"null\").join(\",\")}]`;\n }\n if (value && typeof value === \"object\") {\n const entries = Object.entries(value).sort(([left], [right]) => compareCodeUnits(left, right)).map(([key, child]) => [key, stringify(child)]).filter((entry) => entry[1] !== void 0);\n return `{${entries.map(([key, child]) => `${JSON.stringify(key)}:${child}`).join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\nfunction stableStringify(value) {\n const serialized = stringify(value);\n if (serialized === void 0) throw new Error(\"Cannot serialize undefined cache root\");\n return serialized;\n}\nexport {\n contentHash,\n stableStringify\n};\n//# sourceMappingURL=hash.js.map\n"],"mappings":";;;AACA,SAAS,YAAY,OAAO;CAC1B,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AACxD;AACA,SAAS,iBAAiB,MAAM,OAAO;CACrC,OAAO,OAAO,QAAQ,CAAC,IAAI,OAAO,QAAQ,IAAI;AAChD;AACA,SAAS,UAAU,OAAO;CACxB,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxB,OAAO,IAAI,MAAM,KAAK,UAAU,UAAU,KAAK,KAAK,MAAM,EAAE,KAAK,GAAG,EAAE;CACxE;CACA,IAAI,SAAS,OAAO,UAAU,UAAU;EACtC,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,iBAAiB,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC,EAAE,QAAQ,UAAU,MAAM,OAAO,KAAK,CAAC;EACnL,OAAO,IAAI,QAAQ,KAAK,CAAC,KAAK,WAAW,GAAG,KAAK,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,GAAG,EAAE;CACxF;CACA,OAAO,KAAK,UAAU,KAAK;AAC7B;AACA,SAAS,gBAAgB,OAAO;CAC9B,MAAM,aAAa,UAAU,KAAK;CAClC,IAAI,eAAe,KAAK,GAAG,MAAM,IAAI,MAAM,uCAAuC;CAClF,OAAO;AACT"}
1
+ {"version":3,"file":"hash.js","names":[],"sources":["esm/hash.js"],"sourcesContent":["import { createHash } from \"node:crypto\";\nfunction contentHash(value) {\n return createHash(\"sha256\").update(value).digest(\"hex\");\n}\nfunction compareCodeUnits(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nfunction stringify(value) {\n if (Array.isArray(value)) {\n return `[${value.map((child) => stringify(child) ?? \"null\").join(\",\")}]`;\n }\n if (value && typeof value === \"object\") {\n const entries = Object.entries(value).sort(([left], [right]) => compareCodeUnits(left, right)).map(([key, child]) => [key, stringify(child)]).filter((entry) => entry[1] !== void 0);\n return `{${entries.map(([key, child]) => `${JSON.stringify(key)}:${child}`).join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\nfunction stableStringify(value) {\n const serialized = stringify(value);\n if (serialized === void 0) throw new Error(\"Cannot serialize undefined cache root\");\n return serialized;\n}\nexport {\n contentHash,\n stableStringify\n};\n//# sourceMappingURL=hash.js.map\n"],"mappings":";;;AACA,SAAS,YAAY,OAAO;CAC1B,OAAO,WAAW,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK;AACxD;AACA,SAAS,iBAAiB,MAAM,OAAO;CACrC,OAAO,OAAO,QAAQ,CAAC,IAAI,OAAO,QAAQ,IAAI;AAChD;AACA,SAAS,UAAU,OAAO;CACxB,IAAI,MAAM,QAAQ,KAAK,GAAG;EACxB,OAAO,IAAI,MAAM,KAAK,UAAU,UAAU,KAAK,KAAK,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE;CACxE;CACA,IAAI,SAAS,OAAO,UAAU,UAAU;EACtC,MAAM,UAAU,OAAO,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,iBAAiB,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,UAAU,MAAM,OAAO,KAAK,CAAC;EACnL,OAAO,IAAI,QAAQ,KAAK,CAAC,KAAK,WAAW,GAAG,KAAK,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,EAAE;CACxF;CACA,OAAO,KAAK,UAAU,KAAK;AAC7B;AACA,SAAS,gBAAgB,OAAO;CAC9B,MAAM,aAAa,UAAU,KAAK;CAClC,IAAI,eAAe,KAAK,GAAG,MAAM,IAAI,MAAM,uCAAuC;CAClF,OAAO;AACT"}
@@ -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 = 3;\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?.(entry.name, component, entry.value.kind)) {\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 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 = 3;\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?.(entry.name, component, entry.value.kind)) {\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 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 +1 @@
1
- {"version":3,"file":"materialize.js","names":[],"sources":["esm/materialize.js"],"sourcesContent":["function 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 conditional = graph.evaluateConditional(value);\n if (conditional) {\n return {\n kind: \"conditional\",\n test: conditional.test,\n whenTrue: conditional.whenTrue.value,\n whenFalse: conditional.whenFalse.value,\n dependencies: [\n .../* @__PURE__ */ new Set([\n ...conditional.whenTrue.dependencies,\n ...conditional.whenFalse.dependencies\n ])\n ].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 materializeEntry(graph, entry) {\n if (entry.kind === \"prop\") {\n return {\n kind: entry.kind,\n name: entry.name,\n span: entry.span,\n value: materializeValue(graph, entry.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 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 {\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 }\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":["function 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 conditional = graph.evaluateConditional(value);\n if (conditional) {\n return {\n kind: \"conditional\",\n test: conditional.test,\n whenTrue: conditional.whenTrue.value,\n whenFalse: conditional.whenFalse.value,\n dependencies: [\n .../* @__PURE__ */ new Set([\n ...conditional.whenTrue.dependencies,\n ...conditional.whenFalse.dependencies\n ])\n ].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 materializeEntry(graph, entry) {\n if (entry.kind === \"prop\") {\n return {\n kind: entry.kind,\n name: entry.name,\n span: entry.span,\n value: materializeValue(graph, entry.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 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 {\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 }\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 +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, program, declaration) {\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 constant = !!findAstNode(\n program,\n (node) => node.type === \"VariableDeclaration\" && node.kind === \"const\" && childNodes(node, \"declarations\").some(\n (candidate) => candidate.start === declaration.start\n )\n );\n } else if (declaration.type === \"Identifier\") {\n const declarator = findAstNode(\n program,\n (node) => node.type === \"VariableDeclarator\" && childNode(node, \"id\")?.start === declaration.start\n );\n if (declarator) {\n initializer = childNode(declarator, \"init\");\n constant = !!findAstNode(\n program,\n (node) => node.type === \"VariableDeclaration\" && node.kind === \"const\" && childNodes(node, \"declarations\").some(\n (candidate) => candidate.start === declarator.start\n )\n );\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 optionsNode = 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 = args.length >= 3 ? args[1] : 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 };\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]);\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\" || !DOM_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\" || !DOM_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 declarationForName(program, name) {\n return findAstNode(program, (node) => {\n if (node.type !== \"VariableDeclarator\") return false;\n return identifierName(childNode(node, \"id\")) === name;\n });\n}\nfunction nodeAtSpan(program, start, end) {\n return findAstNode(program, (node) => node.start === start && node.end === end);\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 declarationForName,\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, program, declaration) {\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 constant = !!findAstNode(\n program,\n (node) => node.type === \"VariableDeclaration\" && node.kind === \"const\" && childNodes(node, \"declarations\").some(\n (candidate) => candidate.start === declaration.start\n )\n );\n } else if (declaration.type === \"Identifier\") {\n const declarator = findAstNode(\n program,\n (node) => node.type === \"VariableDeclarator\" && childNode(node, \"id\")?.start === declaration.start\n );\n if (declarator) {\n initializer = childNode(declarator, \"init\");\n constant = !!findAstNode(\n program,\n (node) => node.type === \"VariableDeclaration\" && node.kind === \"const\" && childNodes(node, \"declarations\").some(\n (candidate) => candidate.start === declarator.start\n )\n );\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 optionsNode = 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 = args.length >= 3 ? args[1] : 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 };\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]);\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\" || !DOM_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\" || !DOM_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 declarationForName(program, name) {\n return findAstNode(program, (node) => {\n if (node.type !== \"VariableDeclarator\") return false;\n return identifierName(childNode(node, \"id\")) === name;\n });\n}\nfunction nodeAtSpan(program, start, end) {\n return findAstNode(program, (node) => node.start === start && node.end === end);\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 declarationForName,\n definitionFromDeclaration,\n nodeAtSpan,\n normalizeElements\n};\n//# sourceMappingURL=normalize.js.map\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","names":[],"sources":["esm/output.js"],"sourcesContent":["import {\n GenMapping,\n addSegment,\n setSourceContent,\n toEncodedMap\n} from \"@jridgewell/gen-mapping\";\nimport MagicString from \"magic-string\";\nimport { contentHash } from \"./hash\";\nfunction compareEdits(left, right) {\n return left.start - right.start || left.end - right.end || left.index - right.index;\n}\nfunction sourceContentHash(source) {\n return contentHash(source);\n}\nfunction validateSourceEdits(source, edits) {\n const sorted = edits.map((edit, index) => ({ ...edit, index })).sort(compareEdits);\n let previousEnd = 0;\n for (const edit of sorted) {\n if (!Number.isInteger(edit.start) || !Number.isInteger(edit.end) || edit.start < 0 || edit.end < edit.start || edit.end > source.length) {\n throw new Error(`Invalid UTF-16 source edit [${edit.start}, ${edit.end})`);\n }\n if (edit.start < previousEnd) {\n throw new Error(`Overlapping UTF-16 source edit at ${edit.start}`);\n }\n previousEnd = Math.max(previousEnd, edit.end);\n }\n}\nfunction sourcePositions(source) {\n const positions = new Array(source.length + 1);\n let line = 0;\n let column = 0;\n for (let index = 0; index <= source.length; index++) {\n positions[index] = { line, column };\n if (index === source.length) break;\n if (source.charCodeAt(index) === 10) {\n line++;\n column = 0;\n } else {\n column++;\n }\n }\n return positions;\n}\nfunction mappedSourceMap(source, id, edits) {\n const map = new GenMapping();\n setSourceContent(map, id, source);\n const positions = sourcePositions(source);\n let generatedLine = 0;\n let generatedColumn = 0;\n let sourceCursor = 0;\n const emit = (content, sourceStart, sourceEnd) => {\n const available = Math.max(1, sourceEnd - sourceStart);\n for (let offset = 0; offset < content.length; offset++) {\n const originalIndex = Math.min(sourceStart + offset, sourceStart + available - 1);\n const original = positions[originalIndex];\n addSegment(map, generatedLine, generatedColumn, id, original.line, original.column);\n if (content.charCodeAt(offset) === 10) {\n generatedLine++;\n generatedColumn = 0;\n } else {\n generatedColumn++;\n }\n }\n };\n for (const edit of edits) {\n emit(source.slice(sourceCursor, edit.start), sourceCursor, edit.start);\n if (edit.origin.id !== id) {\n throw new Error(`Source edit for ${id} must use a local mapping origin`);\n }\n emit(\n edit.content,\n edit.origin.start,\n edit.start === edit.end ? edit.origin.start + 1 : edit.origin.end\n );\n sourceCursor = edit.end;\n }\n emit(source.slice(sourceCursor), sourceCursor, source.length);\n const encoded = toEncodedMap(map);\n return {\n version: 3,\n file: encoded.file ?? void 0,\n names: encoded.names,\n sources: encoded.sources,\n sourcesContent: encoded.sourcesContent ?? [source],\n mappings: encoded.mappings\n };\n}\nfunction applyLoweredModule(source, id, plan) {\n if (plan.id !== id) {\n throw new Error(`Lowered module plan ${plan.id} cannot be applied to ${id}`);\n }\n if (plan.sourceHash !== sourceContentHash(source)) {\n throw new Error(`Lowered module plan for ${id} does not match the supplied source`);\n }\n if (plan.edits.length === 0) return { changed: false, code: source, map: null };\n validateSourceEdits(source, plan.edits);\n const output = new MagicString(source);\n const sorted = plan.edits.map((edit, index) => ({ ...edit, index })).sort(compareEdits);\n for (const edit of sorted) {\n if (edit.start === edit.end) {\n output.appendLeft(edit.start, edit.content);\n } else {\n output.overwrite(edit.start, edit.end, edit.content);\n }\n }\n return {\n changed: true,\n code: output.toString(),\n map: mappedSourceMap(source, id, sorted)\n };\n}\nexport {\n applyLoweredModule,\n sourceContentHash,\n validateSourceEdits\n};\n//# sourceMappingURL=output.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"output.js","names":[],"sources":["esm/output.js"],"sourcesContent":["import {\n GenMapping,\n addSegment,\n setSourceContent,\n toEncodedMap\n} from \"@jridgewell/gen-mapping\";\nimport MagicString from \"magic-string\";\nimport { contentHash } from \"./hash\";\nfunction compareEdits(left, right) {\n return left.start - right.start || left.end - right.end || left.index - right.index;\n}\nfunction sourceContentHash(source) {\n return contentHash(source);\n}\nfunction validateSourceEdits(source, edits) {\n const sorted = edits.map((edit, index) => ({ ...edit, index })).sort(compareEdits);\n let previousEnd = 0;\n for (const edit of sorted) {\n if (!Number.isInteger(edit.start) || !Number.isInteger(edit.end) || edit.start < 0 || edit.end < edit.start || edit.end > source.length) {\n throw new Error(`Invalid UTF-16 source edit [${edit.start}, ${edit.end})`);\n }\n if (edit.start < previousEnd) {\n throw new Error(`Overlapping UTF-16 source edit at ${edit.start}`);\n }\n previousEnd = Math.max(previousEnd, edit.end);\n }\n}\nfunction sourcePositions(source) {\n const positions = new Array(source.length + 1);\n let line = 0;\n let column = 0;\n for (let index = 0; index <= source.length; index++) {\n positions[index] = { line, column };\n if (index === source.length) break;\n if (source.charCodeAt(index) === 10) {\n line++;\n column = 0;\n } else {\n column++;\n }\n }\n return positions;\n}\nfunction mappedSourceMap(source, id, edits) {\n const map = new GenMapping();\n setSourceContent(map, id, source);\n const positions = sourcePositions(source);\n let generatedLine = 0;\n let generatedColumn = 0;\n let sourceCursor = 0;\n const emit = (content, sourceStart, sourceEnd) => {\n const available = Math.max(1, sourceEnd - sourceStart);\n for (let offset = 0; offset < content.length; offset++) {\n const originalIndex = Math.min(sourceStart + offset, sourceStart + available - 1);\n const original = positions[originalIndex];\n addSegment(map, generatedLine, generatedColumn, id, original.line, original.column);\n if (content.charCodeAt(offset) === 10) {\n generatedLine++;\n generatedColumn = 0;\n } else {\n generatedColumn++;\n }\n }\n };\n for (const edit of edits) {\n emit(source.slice(sourceCursor, edit.start), sourceCursor, edit.start);\n if (edit.origin.id !== id) {\n throw new Error(`Source edit for ${id} must use a local mapping origin`);\n }\n emit(\n edit.content,\n edit.origin.start,\n edit.start === edit.end ? edit.origin.start + 1 : edit.origin.end\n );\n sourceCursor = edit.end;\n }\n emit(source.slice(sourceCursor), sourceCursor, source.length);\n const encoded = toEncodedMap(map);\n return {\n version: 3,\n file: encoded.file ?? void 0,\n names: encoded.names,\n sources: encoded.sources,\n sourcesContent: encoded.sourcesContent ?? [source],\n mappings: encoded.mappings\n };\n}\nfunction applyLoweredModule(source, id, plan) {\n if (plan.id !== id) {\n throw new Error(`Lowered module plan ${plan.id} cannot be applied to ${id}`);\n }\n if (plan.sourceHash !== sourceContentHash(source)) {\n throw new Error(`Lowered module plan for ${id} does not match the supplied source`);\n }\n if (plan.edits.length === 0) return { changed: false, code: source, map: null };\n validateSourceEdits(source, plan.edits);\n const output = new MagicString(source);\n const sorted = plan.edits.map((edit, index) => ({ ...edit, index })).sort(compareEdits);\n for (const edit of sorted) {\n if (edit.start === edit.end) {\n output.appendLeft(edit.start, edit.content);\n } else {\n output.overwrite(edit.start, edit.end, edit.content);\n }\n }\n return {\n changed: true,\n code: output.toString(),\n map: mappedSourceMap(source, id, sorted)\n };\n}\nexport {\n applyLoweredModule,\n sourceContentHash,\n validateSourceEdits\n};\n//# sourceMappingURL=output.js.map\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"planCache.js","names":["#hits","#misses","#writes","#path","#created","#writesSincePrune","#prunedThisProcess","#prune","#files"],"sources":["esm/planCache.js"],"sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport {\n mkdir,\n readdir,\n readFile,\n rename,\n stat,\n unlink,\n writeFile\n} from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { contentHash, stableStringify } from \"./hash\";\nimport { LOWERED_MODULE_PLAN_VERSION } from \"./lower\";\nimport { moduleContentHash } from \"./graph\";\nconst PLAN_CACHE_SCHEMA_VERSION = 1;\nconst PLAN_CACHE_MAX_ENTRIES = 2e4;\nfunction tamaguiCacheRoot(projectRoot) {\n return join(projectRoot, \"node_modules\", \".cache\", \"tamagui\");\n}\nfunction defaultPlanCacheRoot(projectRoot, target) {\n return join(tamaguiCacheRoot(projectRoot), \"plans\", target);\n}\nfunction moduleClosureNode(input) {\n return {\n contentHash: moduleContentHash(input),\n dependencies: input.imports.filter(({ external }) => !external).map(({ resolvedId }) => resolvedId)\n };\n}\nfunction moduleClosureDigest(id, lookup, memo) {\n const cached = memo?.get(id);\n if (cached !== void 0) return cached;\n const reached = /* @__PURE__ */ new Map();\n const queue = [id];\n let complete = true;\n while (queue.length) {\n const current = queue.pop();\n if (reached.has(current)) continue;\n const node = lookup(current);\n if (!node) {\n complete = false;\n break;\n }\n reached.set(current, node.contentHash);\n for (const dependency of node.dependencies) queue.push(dependency);\n }\n const digest = complete ? contentHash(\n [...reached].sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([current, hash]) => `${current}\\0${hash}`).join(\"\\0\")\n ) : null;\n memo?.set(id, digest);\n return digest;\n}\nfunction planCacheKey(identity, id, closureDigest) {\n return contentHash(\n stableStringify({\n schema: PLAN_CACHE_SCHEMA_VERSION,\n plan: LOWERED_MODULE_PLAN_VERSION,\n stamp: identity.stamp,\n target: identity.target,\n structuralPassHash: identity.structuralPassHash,\n id,\n closureDigest\n })\n );\n}\nclass JsonFileCache {\n constructor(root, schemaVersion, maxEntries = PLAN_CACHE_MAX_ENTRIES) {\n this.root = root;\n this.schemaVersion = schemaVersion;\n this.maxEntries = maxEntries;\n }\n root;\n schemaVersion;\n maxEntries;\n #hits = 0;\n #misses = 0;\n #writes = 0;\n #writesSincePrune = 0;\n #prunedThisProcess = false;\n #created = /* @__PURE__ */ new Set();\n get stats() {\n return { hits: this.#hits, misses: this.#misses, writes: this.#writes };\n }\n resetStats() {\n this.#hits = 0;\n this.#misses = 0;\n this.#writes = 0;\n }\n #path(key) {\n return join(this.root, `v${this.schemaVersion}`, key.slice(0, 2), `${key}.json`);\n }\n /**\n * Null on anything short of an entry `validate` fully accepts. A miss\n * recompiles; nothing here repairs or partially trusts an entry, and a later\n * successful compile overwrites the bad file.\n */\n async read(key, validate) {\n let parsed;\n try {\n parsed = JSON.parse(await readFile(this.#path(key), \"utf8\"));\n } catch {\n this.#misses++;\n return null;\n }\n const entry = validate(parsed);\n if (entry === null) {\n this.#misses++;\n return null;\n }\n this.#hits++;\n return entry;\n }\n async write(key, value) {\n const path = this.#path(key);\n const directory = dirname(path);\n if (!this.#created.has(directory)) {\n await mkdir(directory, { recursive: true });\n this.#created.add(directory);\n }\n const temporaryPath = `${path}.${process.pid}-${randomBytes(6).toString(\"hex\")}.tmp`;\n await writeFile(temporaryPath, `${stableStringify(value)}\n`, \"utf8\");\n await rename(temporaryPath, path);\n this.#writes++;\n this.#writesSincePrune++;\n const batch = Math.max(1, Math.floor(this.maxEntries / 4));\n if (!this.#prunedThisProcess || this.#writesSincePrune >= batch) {\n this.#prunedThisProcess = true;\n this.#writesSincePrune = 0;\n await this.#prune();\n }\n }\n /**\n * Drops the oldest entries once the store exceeds its cap, oldest by the later\n * of read and write time so an entry a build keeps hitting is not treated as\n * dead on filesystems that maintain access times.\n */\n async #prune() {\n const versionRoot = join(this.root, `v${this.schemaVersion}`);\n let shards;\n try {\n shards = await readdir(versionRoot);\n } catch {\n return;\n }\n const paths = [];\n for (const shard of shards) {\n const directory = join(versionRoot, shard);\n let files;\n try {\n files = await readdir(directory);\n } catch {\n continue;\n }\n for (const file of files) {\n if (file.endsWith(\".json\")) paths.push(join(directory, file));\n }\n }\n if (paths.length <= this.maxEntries) return;\n const entries = [];\n for (const path of paths) {\n try {\n const stats = await stat(path);\n entries.push({ path, usedAt: Math.max(stats.atimeMs, stats.mtimeMs) });\n } catch {\n }\n }\n entries.sort((left, right) => left.usedAt - right.usedAt);\n for (const entry of entries.slice(0, Math.max(0, entries.length - this.maxEntries))) {\n await unlink(entry.path).catch(() => {\n });\n }\n }\n}\nclass ModulePlanCache {\n constructor(root) {\n this.root = root;\n this.#files = new JsonFileCache(root, PLAN_CACHE_SCHEMA_VERSION);\n }\n root;\n #files;\n get stats() {\n return this.#files.stats;\n }\n resetStats() {\n this.#files.resetStats();\n }\n read(key, id, closureDigest) {\n return this.#files.read(key, (value) => {\n const entry = value;\n const plan = entry?.plan;\n return entry?.schemaVersion === PLAN_CACHE_SCHEMA_VERSION && entry.moduleId === id && entry.closureDigest === closureDigest && plan && plan.version === LOWERED_MODULE_PLAN_VERSION && plan.id === id && typeof plan.sourceHash === \"string\" && typeof plan.css === \"string\" && Array.isArray(plan.edits) && Array.isArray(plan.diagnostics) && Array.isArray(plan.dependencies) && !!plan.stats ? entry : null;\n });\n }\n write(key, entry) {\n return this.#files.write(key, entry);\n }\n}\nexport {\n JsonFileCache,\n ModulePlanCache,\n PLAN_CACHE_MAX_ENTRIES,\n PLAN_CACHE_SCHEMA_VERSION,\n defaultPlanCacheRoot,\n moduleClosureDigest,\n moduleClosureNode,\n planCacheKey,\n tamaguiCacheRoot\n};\n//# sourceMappingURL=planCache.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"planCache.js","names":["#hits","#misses","#writes","#path","#created","#writesSincePrune","#prunedThisProcess","#prune","#files"],"sources":["esm/planCache.js"],"sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport {\n mkdir,\n readdir,\n readFile,\n rename,\n stat,\n unlink,\n writeFile\n} from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport { contentHash, stableStringify } from \"./hash\";\nimport { LOWERED_MODULE_PLAN_VERSION } from \"./lower\";\nimport { moduleContentHash } from \"./graph\";\nconst PLAN_CACHE_SCHEMA_VERSION = 1;\nconst PLAN_CACHE_MAX_ENTRIES = 2e4;\nfunction tamaguiCacheRoot(projectRoot) {\n return join(projectRoot, \"node_modules\", \".cache\", \"tamagui\");\n}\nfunction defaultPlanCacheRoot(projectRoot, target) {\n return join(tamaguiCacheRoot(projectRoot), \"plans\", target);\n}\nfunction moduleClosureNode(input) {\n return {\n contentHash: moduleContentHash(input),\n dependencies: input.imports.filter(({ external }) => !external).map(({ resolvedId }) => resolvedId)\n };\n}\nfunction moduleClosureDigest(id, lookup, memo) {\n const cached = memo?.get(id);\n if (cached !== void 0) return cached;\n const reached = /* @__PURE__ */ new Map();\n const queue = [id];\n let complete = true;\n while (queue.length) {\n const current = queue.pop();\n if (reached.has(current)) continue;\n const node = lookup(current);\n if (!node) {\n complete = false;\n break;\n }\n reached.set(current, node.contentHash);\n for (const dependency of node.dependencies) queue.push(dependency);\n }\n const digest = complete ? contentHash(\n [...reached].sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([current, hash]) => `${current}\\0${hash}`).join(\"\\0\")\n ) : null;\n memo?.set(id, digest);\n return digest;\n}\nfunction planCacheKey(identity, id, closureDigest) {\n return contentHash(\n stableStringify({\n schema: PLAN_CACHE_SCHEMA_VERSION,\n plan: LOWERED_MODULE_PLAN_VERSION,\n stamp: identity.stamp,\n target: identity.target,\n structuralPassHash: identity.structuralPassHash,\n id,\n closureDigest\n })\n );\n}\nclass JsonFileCache {\n constructor(root, schemaVersion, maxEntries = PLAN_CACHE_MAX_ENTRIES) {\n this.root = root;\n this.schemaVersion = schemaVersion;\n this.maxEntries = maxEntries;\n }\n root;\n schemaVersion;\n maxEntries;\n #hits = 0;\n #misses = 0;\n #writes = 0;\n #writesSincePrune = 0;\n #prunedThisProcess = false;\n #created = /* @__PURE__ */ new Set();\n get stats() {\n return { hits: this.#hits, misses: this.#misses, writes: this.#writes };\n }\n resetStats() {\n this.#hits = 0;\n this.#misses = 0;\n this.#writes = 0;\n }\n #path(key) {\n return join(this.root, `v${this.schemaVersion}`, key.slice(0, 2), `${key}.json`);\n }\n /**\n * Null on anything short of an entry `validate` fully accepts. A miss\n * recompiles; nothing here repairs or partially trusts an entry, and a later\n * successful compile overwrites the bad file.\n */\n async read(key, validate) {\n let parsed;\n try {\n parsed = JSON.parse(await readFile(this.#path(key), \"utf8\"));\n } catch {\n this.#misses++;\n return null;\n }\n const entry = validate(parsed);\n if (entry === null) {\n this.#misses++;\n return null;\n }\n this.#hits++;\n return entry;\n }\n async write(key, value) {\n const path = this.#path(key);\n const directory = dirname(path);\n if (!this.#created.has(directory)) {\n await mkdir(directory, { recursive: true });\n this.#created.add(directory);\n }\n const temporaryPath = `${path}.${process.pid}-${randomBytes(6).toString(\"hex\")}.tmp`;\n await writeFile(temporaryPath, `${stableStringify(value)}\n`, \"utf8\");\n await rename(temporaryPath, path);\n this.#writes++;\n this.#writesSincePrune++;\n const batch = Math.max(1, Math.floor(this.maxEntries / 4));\n if (!this.#prunedThisProcess || this.#writesSincePrune >= batch) {\n this.#prunedThisProcess = true;\n this.#writesSincePrune = 0;\n await this.#prune();\n }\n }\n /**\n * Drops the oldest entries once the store exceeds its cap, oldest by the later\n * of read and write time so an entry a build keeps hitting is not treated as\n * dead on filesystems that maintain access times.\n */\n async #prune() {\n const versionRoot = join(this.root, `v${this.schemaVersion}`);\n let shards;\n try {\n shards = await readdir(versionRoot);\n } catch {\n return;\n }\n const paths = [];\n for (const shard of shards) {\n const directory = join(versionRoot, shard);\n let files;\n try {\n files = await readdir(directory);\n } catch {\n continue;\n }\n for (const file of files) {\n if (file.endsWith(\".json\")) paths.push(join(directory, file));\n }\n }\n if (paths.length <= this.maxEntries) return;\n const entries = [];\n for (const path of paths) {\n try {\n const stats = await stat(path);\n entries.push({ path, usedAt: Math.max(stats.atimeMs, stats.mtimeMs) });\n } catch {\n }\n }\n entries.sort((left, right) => left.usedAt - right.usedAt);\n for (const entry of entries.slice(0, Math.max(0, entries.length - this.maxEntries))) {\n await unlink(entry.path).catch(() => {\n });\n }\n }\n}\nclass ModulePlanCache {\n constructor(root) {\n this.root = root;\n this.#files = new JsonFileCache(root, PLAN_CACHE_SCHEMA_VERSION);\n }\n root;\n #files;\n get stats() {\n return this.#files.stats;\n }\n resetStats() {\n this.#files.resetStats();\n }\n read(key, id, closureDigest) {\n return this.#files.read(key, (value) => {\n const entry = value;\n const plan = entry?.plan;\n return entry?.schemaVersion === PLAN_CACHE_SCHEMA_VERSION && entry.moduleId === id && entry.closureDigest === closureDigest && plan && plan.version === LOWERED_MODULE_PLAN_VERSION && plan.id === id && typeof plan.sourceHash === \"string\" && typeof plan.css === \"string\" && Array.isArray(plan.edits) && Array.isArray(plan.diagnostics) && Array.isArray(plan.dependencies) && !!plan.stats ? entry : null;\n });\n }\n write(key, entry) {\n return this.#files.write(key, entry);\n }\n}\nexport {\n JsonFileCache,\n ModulePlanCache,\n PLAN_CACHE_MAX_ENTRIES,\n PLAN_CACHE_SCHEMA_VERSION,\n defaultPlanCacheRoot,\n moduleClosureDigest,\n moduleClosureNode,\n planCacheKey,\n tamaguiCacheRoot\n};\n//# sourceMappingURL=planCache.js.map\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","names":["#queue","#compile","#enqueue","#graph","#install"],"sources":["esm/session.js"],"sourcesContent":["import { ProjectGraph } from \"./graph\";\nimport { lowerModule } from \"./lower\";\nimport { materializeModule } from \"./materialize\";\nimport { applyLoweredModule } from \"./output\";\nimport { PLAN_CACHE_SCHEMA_VERSION, moduleClosureDigest, planCacheKey } from \"./planCache\";\nimport { yukuFactory } from \"./yuku\";\nfunction compareIds(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nclass CompilerSession {\n #graph = new ProjectGraph(yukuFactory, { modules: [] });\n #queue = Promise.resolve();\n compile(input) {\n const operation = this.#queue.then(() => this.#compile(input));\n this.#queue = operation.catch(() => void 0);\n return operation;\n }\n update(module) {\n return this.#enqueue(() => this.#graph.updateModule(module).invalidatedIds);\n }\n has(id) {\n return this.#graph.contentHash(id) !== null;\n }\n dependentsOf(id) {\n return this.#graph.dependentsOf(id);\n }\n remove(id) {\n return this.#enqueue(() => this.#graph.removeModule(id));\n }\n parseCount(id) {\n return this.#graph.parseCount(id);\n }\n #enqueue(operation) {\n const queued = this.#queue.then(operation);\n this.#queue = queued.catch(() => void 0);\n return queued;\n }\n async #compile({\n module,\n adapter,\n structuralPass\n }) {\n const invalidated = /* @__PURE__ */ new Set();\n await this.#install(module, adapter, /* @__PURE__ */ new Set(), invalidated);\n const graph = this.#graph;\n const cache = adapter.planCache?.stamp ? adapter.planCache : null;\n const closureDigest = cache ? moduleClosureDigest(module.id, (id) => {\n const hash = graph.contentHash(id);\n return hash ? { contentHash: hash, dependencies: graph.dependenciesOf(id) } : null;\n }) : null;\n const entry = cache && closureDigest ? {\n store: cache.store,\n digest: closureDigest,\n key: planCacheKey(\n {\n stamp: cache.stamp,\n target: adapter.target,\n structuralPassHash: structuralPass?.versionHash ?? `${adapter.target}-noop-v1`\n },\n module.id,\n closureDigest\n )\n } : null;\n const cached = entry ? await entry.store.read(entry.key, module.id, entry.digest) : null;\n const plan = cached?.plan ?? lowerModule({\n module: materializeModule(graph, module.id),\n source: module.source,\n target: adapter.target,\n host: adapter.host,\n options: { projectGeneration: adapter.projectGeneration },\n structuralPass\n });\n if (entry && !cached) {\n await entry.store.write(entry.key, {\n schemaVersion: PLAN_CACHE_SCHEMA_VERSION,\n moduleId: module.id,\n closureDigest: entry.digest,\n plan\n });\n }\n return {\n plan,\n output: applyLoweredModule(module.source, module.id, plan),\n invalidatedIds: [...invalidated].sort(compareIds)\n };\n }\n async #install(module, adapter, visited, invalidated) {\n if (visited.has(module.id)) return;\n visited.add(module.id);\n for (const dependency of module.imports) {\n if (dependency.external || this.has(dependency.resolvedId)) continue;\n const loaded = await adapter.load(dependency.resolvedId);\n if (loaded) {\n await this.#install(loaded, adapter, visited, invalidated);\n }\n }\n const update = this.#graph.updateModule(module);\n for (const id of update.invalidatedIds) invalidated.add(id);\n }\n}\nexport {\n CompilerSession\n};\n//# sourceMappingURL=session.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"session.js","names":["#queue","#compile","#enqueue","#graph","#install"],"sources":["esm/session.js"],"sourcesContent":["import { ProjectGraph } from \"./graph\";\nimport { lowerModule } from \"./lower\";\nimport { materializeModule } from \"./materialize\";\nimport { applyLoweredModule } from \"./output\";\nimport { PLAN_CACHE_SCHEMA_VERSION, moduleClosureDigest, planCacheKey } from \"./planCache\";\nimport { yukuFactory } from \"./yuku\";\nfunction compareIds(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\nclass CompilerSession {\n #graph = new ProjectGraph(yukuFactory, { modules: [] });\n #queue = Promise.resolve();\n compile(input) {\n const operation = this.#queue.then(() => this.#compile(input));\n this.#queue = operation.catch(() => void 0);\n return operation;\n }\n update(module) {\n return this.#enqueue(() => this.#graph.updateModule(module).invalidatedIds);\n }\n has(id) {\n return this.#graph.contentHash(id) !== null;\n }\n dependentsOf(id) {\n return this.#graph.dependentsOf(id);\n }\n remove(id) {\n return this.#enqueue(() => this.#graph.removeModule(id));\n }\n parseCount(id) {\n return this.#graph.parseCount(id);\n }\n #enqueue(operation) {\n const queued = this.#queue.then(operation);\n this.#queue = queued.catch(() => void 0);\n return queued;\n }\n async #compile({\n module,\n adapter,\n structuralPass\n }) {\n const invalidated = /* @__PURE__ */ new Set();\n await this.#install(module, adapter, /* @__PURE__ */ new Set(), invalidated);\n const graph = this.#graph;\n const cache = adapter.planCache?.stamp ? adapter.planCache : null;\n const closureDigest = cache ? moduleClosureDigest(module.id, (id) => {\n const hash = graph.contentHash(id);\n return hash ? { contentHash: hash, dependencies: graph.dependenciesOf(id) } : null;\n }) : null;\n const entry = cache && closureDigest ? {\n store: cache.store,\n digest: closureDigest,\n key: planCacheKey(\n {\n stamp: cache.stamp,\n target: adapter.target,\n structuralPassHash: structuralPass?.versionHash ?? `${adapter.target}-noop-v1`\n },\n module.id,\n closureDigest\n )\n } : null;\n const cached = entry ? await entry.store.read(entry.key, module.id, entry.digest) : null;\n const plan = cached?.plan ?? lowerModule({\n module: materializeModule(graph, module.id),\n source: module.source,\n target: adapter.target,\n host: adapter.host,\n options: { projectGeneration: adapter.projectGeneration },\n structuralPass\n });\n if (entry && !cached) {\n await entry.store.write(entry.key, {\n schemaVersion: PLAN_CACHE_SCHEMA_VERSION,\n moduleId: module.id,\n closureDigest: entry.digest,\n plan\n });\n }\n return {\n plan,\n output: applyLoweredModule(module.source, module.id, plan),\n invalidatedIds: [...invalidated].sort(compareIds)\n };\n }\n async #install(module, adapter, visited, invalidated) {\n if (visited.has(module.id)) return;\n visited.add(module.id);\n for (const dependency of module.imports) {\n if (dependency.external || this.has(dependency.resolvedId)) continue;\n const loaded = await adapter.load(dependency.resolvedId);\n if (loaded) {\n await this.#install(loaded, adapter, visited, invalidated);\n }\n }\n const update = this.#graph.updateModule(module);\n for (const id of update.invalidatedIds) invalidated.add(id);\n }\n}\nexport {\n CompilerSession\n};\n//# sourceMappingURL=session.js.map\n"],"mappings":";;;;;;;;AAMA,SAAS,WAAW,MAAM,OAAO;CAC/B,OAAO,OAAO,QAAQ,CAAC,IAAI,OAAO,QAAQ,IAAI;AAChD;AACA,IAAM,kBAAN,MAAsB;CACpB,SAAS,IAAI,aAAa,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;CACtD,SAAS,QAAQ,QAAQ;CACzB,QAAQ,OAAO;EACb,MAAM,YAAY,KAAKA,OAAO,WAAW,KAAKC,SAAS,KAAK,CAAC;EAC7D,KAAKD,SAAS,UAAU,YAAY,KAAK,CAAC;EAC1C,OAAO;CACT;CACA,OAAO,QAAQ;EACb,OAAO,KAAKE,eAAe,KAAKC,OAAO,aAAa,MAAM,CAAC,CAAC,cAAc;CAC5E;CACA,IAAI,IAAI;EACN,OAAO,KAAKA,OAAO,YAAY,EAAE,MAAM;CACzC;CACA,aAAa,IAAI;EACf,OAAO,KAAKA,OAAO,aAAa,EAAE;CACpC;CACA,OAAO,IAAI;EACT,OAAO,KAAKD,eAAe,KAAKC,OAAO,aAAa,EAAE,CAAC;CACzD;CACA,WAAW,IAAI;EACb,OAAO,KAAKA,OAAO,WAAW,EAAE;CAClC;CACA,SAAS,WAAW;EAClB,MAAM,SAAS,KAAKH,OAAO,KAAK,SAAS;EACzC,KAAKA,SAAS,OAAO,YAAY,KAAK,CAAC;EACvC,OAAO;CACT;CACA,MAAMC,SAAS,EACb,QACA,SACA,kBACC;EACD,MAAM,8BAA8B,IAAI,IAAI;EAC5C,MAAM,KAAKG,SAAS,QAAQ,yBAAyB,IAAI,IAAI,GAAG,WAAW;EAC3E,MAAM,QAAQ,KAAKD;EACnB,MAAM,QAAQ,QAAQ,WAAW,QAAQ,QAAQ,YAAY;EAC7D,MAAM,gBAAgB,QAAQ,oBAAoB,OAAO,KAAK,OAAO;GACnE,MAAM,OAAO,MAAM,YAAY,EAAE;GACjC,OAAO,OAAO;IAAE,aAAa;IAAM,cAAc,MAAM,eAAe,EAAE;GAAE,IAAI;EAChF,CAAC,IAAI;EACL,MAAM,QAAQ,SAAS,gBAAgB;GACrC,OAAO,MAAM;GACb,QAAQ;GACR,KAAK,aACH;IACE,OAAO,MAAM;IACb,QAAQ,QAAQ;IAChB,oBAAoB,gBAAgB,eAAe,GAAG,QAAQ,OAAO;GACvE,GACA,OAAO,IACP,aACF;EACF,IAAI;EACJ,MAAM,SAAS,QAAQ,MAAM,MAAM,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM,IAAI;EACpF,MAAM,OAAO,QAAQ,QAAQ,YAAY;GACvC,QAAQ,kBAAkB,OAAO,OAAO,EAAE;GAC1C,QAAQ,OAAO;GACf,QAAQ,QAAQ;GAChB,MAAM,QAAQ;GACd,SAAS,EAAE,mBAAmB,QAAQ,kBAAkB;GACxD;EACF,CAAC;EACD,IAAI,SAAS,CAAC,QAAQ;GACpB,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK;IACjC,eAAe;IACf,UAAU,OAAO;IACjB,eAAe,MAAM;IACrB;GACF,CAAC;EACH;EACA,OAAO;GACL;GACA,QAAQ,mBAAmB,OAAO,QAAQ,OAAO,IAAI,IAAI;GACzD,gBAAgB,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,UAAU;EAClD;CACF;CACA,MAAMC,SAAS,QAAQ,SAAS,SAAS,aAAa;EACpD,IAAI,QAAQ,IAAI,OAAO,EAAE,GAAG;EAC5B,QAAQ,IAAI,OAAO,EAAE;EACrB,KAAK,MAAM,cAAc,OAAO,SAAS;GACvC,IAAI,WAAW,YAAY,KAAK,IAAI,WAAW,UAAU,GAAG;GAC5D,MAAM,SAAS,MAAM,QAAQ,KAAK,WAAW,UAAU;GACvD,IAAI,QAAQ;IACV,MAAM,KAAKA,SAAS,QAAQ,SAAS,SAAS,WAAW;GAC3D;EACF;EACA,MAAM,SAAS,KAAKD,OAAO,aAAa,MAAM;EAC9C,KAAK,MAAM,MAAM,OAAO,gBAAgB,YAAY,IAAI,EAAE;CAC5D;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"yuku.js","names":["#analyzer","#parseCounts","#module","#canonicalSymbol","#definitionSite"],"sources":["esm/yuku.js"],"sourcesContent":["import { Analyzer } from \"yuku-analyzer\";\nimport { resolveFromHost, resolvedModuleId } from \"./contracts\";\nimport { childNode, walkAst } from \"./ast\";\nimport {\n asAstNode,\n declarationForName,\n definitionFromDeclaration,\n nodeAtSpan\n} from \"./normalize\";\nclass YukuCandidate {\n constructor(project) {\n this.project = project;\n this.#analyzer = new Analyzer({\n resolve: (specifier, importer) => resolveFromHost(this.project.resolutions, specifier, importer)\n });\n for (const [id, source] of project.files) this.addFile(id, source);\n }\n project;\n name = \"yuku\";\n #analyzer;\n #parseCounts = /* @__PURE__ */ new Map();\n addFile(id, source) {\n this.#analyzer.addFile(id, source, { preserveParens: true, sourceType: \"module\" });\n this.#parseCounts.set(id, (this.#parseCounts.get(id) ?? 0) + 1);\n }\n removeFile(id) {\n return this.#analyzer.removeFile(id);\n }\n link() {\n this.#analyzer.link();\n }\n #module(id) {\n const module = this.#analyzer.module(id);\n if (!module) throw new Error(`yuku: unknown module ${id}`);\n return module;\n }\n #canonicalSymbol(id, localName) {\n const symbol = this.#module(id).resolve(localName);\n return symbol ? this.#analyzer.definitionOf(symbol)?.symbol ?? null : null;\n }\n #definitionSite(symbol) {\n const declaration = symbol.declarations[0];\n if (!declaration) return null;\n const program = asAstNode(symbol.module.ast, `${symbol.module.path} program`);\n const normalizedDeclaration = declarationForName(program, symbol.name) ?? asAstNode(declaration, `${symbol.name} declaration`);\n return definitionFromDeclaration(\n symbol.module.path,\n symbol.name,\n program,\n normalizedDeclaration\n );\n }\n definitionOf(id, localName) {\n const symbol = this.#canonicalSymbol(id, localName);\n return symbol ? this.#definitionSite(symbol) : null;\n }\n definitionAt(id, start, end) {\n const module = this.#module(id);\n const node = nodeAtSpan(asAstNode(module.ast, `${module.path} program`), start, end);\n if (!node) return null;\n const symbol = module.symbolOf(node);\n const definition = symbol && this.#analyzer.definitionOf(symbol)?.symbol;\n return definition ? this.#definitionSite(definition) : null;\n }\n referencesOf(definition) {\n const symbol = this.#canonicalSymbol(definition.id, definition.name);\n if (!symbol) return [];\n return this.#analyzer.referencesOf(symbol).map(({ module, reference }) => ({\n id: resolvedModuleId(module.path),\n name: reference.name,\n start: reference.node.start,\n end: reference.node.end\n }));\n }\n dependenciesOf(id) {\n return this.#module(id).dependencies.map((module) => module.path).sort();\n }\n dependentsOf(id) {\n return this.#module(id).dependents.map((module) => module.path).sort();\n }\n affectedBy(id) {\n const affected = /* @__PURE__ */ new Set([id]);\n const queue = [id];\n while (queue.length) {\n const current = queue.shift();\n for (const dependent of this.dependentsOf(current)) {\n if (!affected.has(dependent)) {\n affected.add(dependent);\n queue.push(dependent);\n }\n }\n }\n return [...affected].sort();\n }\n programOf(id) {\n return asAstNode(this.#module(id).ast, `${id} program`);\n }\n sourceOf(id) {\n return this.#module(id).source;\n }\n parseCount(id) {\n return this.#parseCounts.get(id) ?? 0;\n }\n diagnostics() {\n const parseDiagnostics = [...this.#analyzer.modules.values()].flatMap(\n (module) => module.diagnostics.map((diagnostic) => ({\n kind: \"parse\",\n id: resolvedModuleId(module.path),\n message: diagnostic.message\n }))\n );\n return [\n ...parseDiagnostics,\n ...this.#analyzer.diagnostics.map((diagnostic) => ({\n kind: \"link\",\n id: resolvedModuleId(diagnostic.module),\n message: diagnostic.message\n }))\n ];\n }\n}\nconst yukuFactory = {\n name: \"yuku\",\n create: (project) => new YukuCandidate(project),\n scanImports(id, source) {\n const candidate = new YukuCandidate({\n files: /* @__PURE__ */ new Map([[id, source]]),\n resolutions: /* @__PURE__ */ new Map()\n });\n const found = [];\n walkAst(candidate.programOf(id), (node) => {\n if (node.type !== \"ImportDeclaration\" && node.type !== \"ExportNamedDeclaration\" && node.type !== \"ExportAllDeclaration\" && node.type !== \"ImportExpression\") {\n return;\n }\n const sourceNode = childNode(node, \"source\");\n if (sourceNode && typeof sourceNode.value === \"string\") {\n found.push({ start: node.start, specifier: sourceNode.value });\n }\n });\n return [\n ...new Set(\n found.sort((left, right) => left.start - right.start).map(({ specifier }) => specifier)\n )\n ];\n }\n};\nfunction parseModuleAst(source, id = \"/tamagui/compiler-module.tsx\") {\n const candidate = yukuFactory.create({\n files: /* @__PURE__ */ new Map([[id, source]]),\n resolutions: /* @__PURE__ */ new Map()\n });\n const diagnostics = candidate.diagnostics().filter((diagnostic) => diagnostic.kind === \"parse\");\n if (diagnostics.length) {\n throw new Error(\n `Unable to parse ${id}: ${diagnostics.map(({ message }) => message).join(\"; \")}`\n );\n }\n return candidate.programOf(id);\n}\nexport {\n parseModuleAst,\n yukuFactory\n};\n//# sourceMappingURL=yuku.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"yuku.js","names":["#analyzer","#parseCounts","#module","#canonicalSymbol","#definitionSite"],"sources":["esm/yuku.js"],"sourcesContent":["import { Analyzer } from \"yuku-analyzer\";\nimport { resolveFromHost, resolvedModuleId } from \"./contracts\";\nimport { childNode, walkAst } from \"./ast\";\nimport {\n asAstNode,\n declarationForName,\n definitionFromDeclaration,\n nodeAtSpan\n} from \"./normalize\";\nclass YukuCandidate {\n constructor(project) {\n this.project = project;\n this.#analyzer = new Analyzer({\n resolve: (specifier, importer) => resolveFromHost(this.project.resolutions, specifier, importer)\n });\n for (const [id, source] of project.files) this.addFile(id, source);\n }\n project;\n name = \"yuku\";\n #analyzer;\n #parseCounts = /* @__PURE__ */ new Map();\n addFile(id, source) {\n this.#analyzer.addFile(id, source, { preserveParens: true, sourceType: \"module\" });\n this.#parseCounts.set(id, (this.#parseCounts.get(id) ?? 0) + 1);\n }\n removeFile(id) {\n return this.#analyzer.removeFile(id);\n }\n link() {\n this.#analyzer.link();\n }\n #module(id) {\n const module = this.#analyzer.module(id);\n if (!module) throw new Error(`yuku: unknown module ${id}`);\n return module;\n }\n #canonicalSymbol(id, localName) {\n const symbol = this.#module(id).resolve(localName);\n return symbol ? this.#analyzer.definitionOf(symbol)?.symbol ?? null : null;\n }\n #definitionSite(symbol) {\n const declaration = symbol.declarations[0];\n if (!declaration) return null;\n const program = asAstNode(symbol.module.ast, `${symbol.module.path} program`);\n const normalizedDeclaration = declarationForName(program, symbol.name) ?? asAstNode(declaration, `${symbol.name} declaration`);\n return definitionFromDeclaration(\n symbol.module.path,\n symbol.name,\n program,\n normalizedDeclaration\n );\n }\n definitionOf(id, localName) {\n const symbol = this.#canonicalSymbol(id, localName);\n return symbol ? this.#definitionSite(symbol) : null;\n }\n definitionAt(id, start, end) {\n const module = this.#module(id);\n const node = nodeAtSpan(asAstNode(module.ast, `${module.path} program`), start, end);\n if (!node) return null;\n const symbol = module.symbolOf(node);\n const definition = symbol && this.#analyzer.definitionOf(symbol)?.symbol;\n return definition ? this.#definitionSite(definition) : null;\n }\n referencesOf(definition) {\n const symbol = this.#canonicalSymbol(definition.id, definition.name);\n if (!symbol) return [];\n return this.#analyzer.referencesOf(symbol).map(({ module, reference }) => ({\n id: resolvedModuleId(module.path),\n name: reference.name,\n start: reference.node.start,\n end: reference.node.end\n }));\n }\n dependenciesOf(id) {\n return this.#module(id).dependencies.map((module) => module.path).sort();\n }\n dependentsOf(id) {\n return this.#module(id).dependents.map((module) => module.path).sort();\n }\n affectedBy(id) {\n const affected = /* @__PURE__ */ new Set([id]);\n const queue = [id];\n while (queue.length) {\n const current = queue.shift();\n for (const dependent of this.dependentsOf(current)) {\n if (!affected.has(dependent)) {\n affected.add(dependent);\n queue.push(dependent);\n }\n }\n }\n return [...affected].sort();\n }\n programOf(id) {\n return asAstNode(this.#module(id).ast, `${id} program`);\n }\n sourceOf(id) {\n return this.#module(id).source;\n }\n parseCount(id) {\n return this.#parseCounts.get(id) ?? 0;\n }\n diagnostics() {\n const parseDiagnostics = [...this.#analyzer.modules.values()].flatMap(\n (module) => module.diagnostics.map((diagnostic) => ({\n kind: \"parse\",\n id: resolvedModuleId(module.path),\n message: diagnostic.message\n }))\n );\n return [\n ...parseDiagnostics,\n ...this.#analyzer.diagnostics.map((diagnostic) => ({\n kind: \"link\",\n id: resolvedModuleId(diagnostic.module),\n message: diagnostic.message\n }))\n ];\n }\n}\nconst yukuFactory = {\n name: \"yuku\",\n create: (project) => new YukuCandidate(project),\n scanImports(id, source) {\n const candidate = new YukuCandidate({\n files: /* @__PURE__ */ new Map([[id, source]]),\n resolutions: /* @__PURE__ */ new Map()\n });\n const found = [];\n walkAst(candidate.programOf(id), (node) => {\n if (node.type !== \"ImportDeclaration\" && node.type !== \"ExportNamedDeclaration\" && node.type !== \"ExportAllDeclaration\" && node.type !== \"ImportExpression\") {\n return;\n }\n const sourceNode = childNode(node, \"source\");\n if (sourceNode && typeof sourceNode.value === \"string\") {\n found.push({ start: node.start, specifier: sourceNode.value });\n }\n });\n return [\n ...new Set(\n found.sort((left, right) => left.start - right.start).map(({ specifier }) => specifier)\n )\n ];\n }\n};\nfunction parseModuleAst(source, id = \"/tamagui/compiler-module.tsx\") {\n const candidate = yukuFactory.create({\n files: /* @__PURE__ */ new Map([[id, source]]),\n resolutions: /* @__PURE__ */ new Map()\n });\n const diagnostics = candidate.diagnostics().filter((diagnostic) => diagnostic.kind === \"parse\");\n if (diagnostics.length) {\n throw new Error(\n `Unable to parse ${id}: ${diagnostics.map(({ message }) => message).join(\"; \")}`\n );\n }\n return candidate.programOf(id);\n}\nexport {\n parseModuleAst,\n yukuFactory\n};\n//# sourceMappingURL=yuku.js.map\n"],"mappings":"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"}
package/dist/esm/zero.mjs CHANGED
@@ -88,6 +88,9 @@ function zeroViolationsFromPlan(plan) {
88
88
  }
89
89
  return violations;
90
90
  }
91
+ function isTamaguiSpecifier(specifier) {
92
+ return specifier === "tamagui" || specifier.startsWith("tamagui/") || specifier.startsWith("@tamagui/");
93
+ }
91
94
  function collectNameOccurrences(program) {
92
95
  const occurrences = /* @__PURE__ */ new Map();
93
96
  walkAst(program, (node, parent, key) => {
@@ -348,5 +351,5 @@ function planZeroErasure(input) {
348
351
  };
349
352
  }
350
353
 
351
- export { ZERO_ANIMATED_NUMBER_HOOKS, ZERO_ANIMATED_NUMBER_MODULE, ZERO_DESIGN_STATE_APIS, ZERO_FAILURE_FOOTER, ZERO_PROVIDER_EXPORTS, ZERO_PROVIDER_MESSAGE, planZeroErasure, zeroConfigDriverMessage, zeroIslandThemeMessage, zeroRuleMessage, zeroSideEffectImportMessage, zeroStaticIslandImportMessage, zeroThemeBoundaryMessage, zeroViolationsFromPlan };
354
+ export { ZERO_ANIMATED_NUMBER_HOOKS, ZERO_ANIMATED_NUMBER_MODULE, ZERO_DESIGN_STATE_APIS, ZERO_FAILURE_FOOTER, ZERO_PROVIDER_EXPORTS, ZERO_PROVIDER_MESSAGE, isTamaguiSpecifier, planZeroErasure, zeroConfigDriverMessage, zeroIslandThemeMessage, zeroRuleMessage, zeroSideEffectImportMessage, zeroStaticIslandImportMessage, zeroThemeBoundaryMessage, zeroViolationsFromPlan };
352
355
  //# sourceMappingURL=zero.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"zero.js","names":[],"sources":["esm/zero.js"],"sourcesContent":["import { childNode, childNodes, walkAst } from \"./ast\";\nimport { zeroRuleForBailout } from \"./diagnostics\";\nimport { parseModuleAst } from \"./yuku\";\nconst ZERO_FAILURE_FOOTER = \"Fix every site or move the owning module to a declared full-runtime island. Zero-runtime never retains one component as a fallback.\";\nconst ZERO_DESIGN_STATE_APIS = /* @__PURE__ */ new Set([\n \"useMedia\",\n \"useTheme\",\n \"useThemeName\",\n \"useProps\",\n \"usePropsAndStyle\",\n \"getConfig\",\n \"getTokens\",\n \"useTokens\",\n \"getVariableValue\",\n \"getToken\",\n \"getTokenValue\",\n \"useConfiguration\",\n \"useAnimationDriver\",\n \"updateTheme\",\n \"addTheme\",\n \"replaceTheme\",\n \"forceUpdateThemes\"\n]);\nconst ZERO_PROVIDER_EXPORTS = /* @__PURE__ */ new Set([\n \"TamaguiProvider\",\n \"ThemeProvider\",\n \"TamaguiRoot\"\n]);\nconst ZERO_ANIMATED_NUMBER_HOOKS = /* @__PURE__ */ new Set([\n \"useAnimatedNumber\",\n \"useAnimatedNumberStyle\",\n \"useAnimatedNumbersStyle\",\n \"useAnimatedNumberReaction\"\n]);\nconst ZERO_ANIMATED_NUMBER_MODULE = \"@tamagui/animations-css/animated-number\";\nfunction zeroRuleMessage(rule, params) {\n const component = params.component ?? \"this component\";\n switch (rule) {\n case 1:\n return `Zero-runtime rule 1: ${component} cannot receive a prop spread because the compiler cannot prove it is style-free. Pass non-style props explicitly or move this module to a full-runtime island.`;\n case 2:\n return `Zero-runtime rule 2: component expression ${params.expression ?? component} does not resolve to one literal lowerable host component. Use a literal Tamagui or html.* component, or move this module to a full-runtime island.`;\n case 3:\n return `Zero-runtime rule 3: value for ${params.prop ?? \"a style prop\"} on ${component} cannot be lowered: ${params.detail ?? \"the compiler could not evaluate it\"}. Use a supported build-time value or move this module to a full-runtime island.`;\n case 4:\n return `Zero-runtime rule 4: ${params.detail ?? component} requires runtime theme or config state. Theme names and modifier targets must be statically enumerable, Theme value props and config must be build-time data, and runtime mutation belongs in a full-runtime island.`;\n case 5:\n return `Zero-runtime rule 5: ${params.detail ?? component} requires a component animation runtime. Use a static CSS transition or move this module to a full-runtime island.`;\n case 6:\n return `Zero-runtime rule 6: ${component} does not lower to one host element with className and is island-only. Move this module to a declared full-runtime island.`;\n case 7:\n return `Zero-runtime rule 7: ${params.api ?? component} reads Tamagui design state in JavaScript. Express the condition in CSS or move this module to a full-runtime island.`;\n case 8:\n return `Zero-runtime rule 8: ${params.detail ?? \"a module-level import\"} defeats the zero-runtime graph. ${params.remediation ?? \"\"}`.trimEnd();\n }\n}\nfunction zeroSideEffectImportMessage(specifier) {\n return zeroRuleMessage(8, {\n detail: `the bare side-effect import of \"${specifier}\", whose effects zero-runtime cannot prove or erase,`,\n remediation: `Remove it, or import the values this module uses so the compiler can lower and erase them.`\n });\n}\nfunction zeroStaticIslandImportMessage(specifier, islandId) {\n return zeroRuleMessage(8, {\n detail: `the static import of \"${specifier}\", which is declared as full-runtime island \"${islandId}\",`,\n remediation: `Import the generated island loader instead; the island is a separately built entry and the zero graph never contains it.`\n });\n}\nconst ZERO_PROVIDER_MESSAGE = \"[tamagui zero-runtime] Rule 4: TamaguiProvider is not used by a zero-runtime root. The bundler loads generated CSS and the compiler lowers static Theme nodes. Remove this provider or make this entry full-runtime.\";\nfunction zeroThemeBoundaryMessage(component, prop) {\n return `[tamagui zero-runtime] Rule 4: ${component} uses ${prop}, which creates a runtime component theme boundary. Replace it with a static <Theme name=\"...\"> wrapper (use name=\"inverse\" for themeInverse) or move this module to a full-runtime island.`;\n}\nfunction zeroConfigDriverMessage(name, outputStyle) {\n return `[tamagui zero-runtime] Rule 5: createTamagui animations must resolve to the CSS driver. Driver ${name} has outputStyle=${String(outputStyle)}. Remove it from the zero entry or move its consumers to a full-runtime island.`;\n}\nfunction zeroIslandThemeMessage(entry) {\n return `[tamagui zero-runtime] Rule 4: island ${entry} has no statically resolved theme context at this mount. Place the island boundary under a compiler-visible static <Theme> or make this entry full-runtime.`;\n}\nfunction zeroViolationsFromPlan(plan) {\n const violations = [];\n for (const diagnostic of plan.diagnostics) {\n if (!diagnostic.blocking) continue;\n const rule = zeroRuleForBailout(diagnostic);\n violations.push({\n rule,\n code: diagnostic.code,\n span: diagnostic.span,\n component: diagnostic.component,\n message: diagnostic.zeroMessage ?? zeroRuleMessage(rule, {\n component: diagnostic.component,\n prop: diagnostic.prop,\n detail: diagnostic.message\n })\n });\n }\n return violations;\n}\nfunction collectNameOccurrences(program) {\n const occurrences = /* @__PURE__ */ new Map();\n walkAst(program, (node, parent, key) => {\n if (node.type !== \"Identifier\" && node.type !== \"JSXIdentifier\") return;\n const name = typeof node.name === \"string\" ? node.name : null;\n if (!name) return;\n if (parent) {\n if (parent.type === \"ImportSpecifier\" || parent.type === \"ImportDefaultSpecifier\" || parent.type === \"ImportNamespaceSpecifier\" || parent.type === \"ExportSpecifier\") {\n return;\n }\n if ((parent.type === \"MemberExpression\" || parent.type === \"JSXMemberExpression\" || parent.type === \"OptionalMemberExpression\") && key === \"property\" && !parent.computed) {\n return;\n }\n if ((parent.type === \"Property\" || parent.type === \"PropertyDefinition\") && key === \"key\" && !parent.computed) {\n return;\n }\n if (parent.type === \"JSXAttribute\" && key === \"name\") return;\n if ((parent.type === \"VariableDeclarator\" || parent.type === \"FunctionDeclaration\" || parent.type === \"ClassDeclaration\") && key === \"id\") {\n return;\n }\n }\n const entry = { start: node.start, end: node.end, parent: parent ?? null };\n const list = occurrences.get(name);\n if (list) list.push(entry);\n else occurrences.set(name, [entry]);\n });\n return occurrences;\n}\nfunction coversRange(outer, inner) {\n return outer.start <= inner.start && outer.end >= inner.end;\n}\nfunction stringValueOf(node) {\n return node && typeof node.value === \"string\" ? node.value : null;\n}\nfunction identifierNameOf(node) {\n return node && node.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : null;\n}\nfunction referenceExpression(source, reference) {\n const parent = reference.parent;\n const node = parent && (parent.type === \"ConditionalExpression\" || parent.type === \"LogicalExpression\" || parent.type === \"CallExpression\" || parent.type === \"MemberExpression\" || parent.type === \"ArrayExpression\") ? parent : reference;\n const text = source.slice(node.start, node.end).replace(/\\s+/g, \" \").trim();\n return text.length > 80 ? `${text.slice(0, 77)}...` : text;\n}\nfunction collectStyledDeclarators(program, styledLocals) {\n const found = [];\n for (const statement of childNodes(program, \"body\")) {\n const exported = statement.type === \"ExportNamedDeclaration\";\n const declaration = exported ? childNode(statement, \"declaration\") : statement;\n if (!declaration || declaration.type !== \"VariableDeclaration\") continue;\n const declarators = childNodes(declaration, \"declarations\");\n if (declarators.length !== 1) continue;\n const declarator = declarators[0];\n const name = identifierNameOf(childNode(declarator, \"id\"));\n const init = childNode(declarator, \"init\");\n if (!name || !init || init.type !== \"CallExpression\") continue;\n const callee = identifierNameOf(childNode(init, \"callee\"));\n if (!callee || !styledLocals.has(callee)) continue;\n found.push({\n name,\n declarator,\n declaration: exported ? statement : declaration,\n exported\n });\n }\n return found;\n}\nfunction planZeroErasure(input) {\n const { id, source, loweredEdits } = input;\n const program = parseModuleAst(source, id);\n const violations = [];\n const span = (node) => ({ id, start: node.start, end: node.end });\n const bindings = [];\n const tamaguiDeclarations = [];\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n if (statement.importKind === \"type\") continue;\n const moduleSpecifier = stringValueOf(childNode(statement, \"source\"));\n if (!moduleSpecifier) continue;\n const islandId = input.islandIdFor(moduleSpecifier);\n if (islandId) {\n violations.push({\n rule: 8,\n code: \"zero/static-island-import\",\n span: span(statement),\n message: zeroStaticIslandImportMessage(moduleSpecifier, islandId)\n });\n continue;\n }\n if (!input.isTamaguiSpecifier(moduleSpecifier)) continue;\n tamaguiDeclarations.push(statement);\n const specifiers = childNodes(statement, \"specifiers\");\n if (specifiers.length === 0) {\n violations.push({\n rule: 8,\n code: \"zero/side-effect-import\",\n span: span(statement),\n message: zeroSideEffectImportMessage(moduleSpecifier)\n });\n continue;\n }\n for (const specifier of specifiers) {\n if (specifier.importKind === \"type\") continue;\n const local = identifierNameOf(childNode(specifier, \"local\"));\n if (!local) continue;\n bindings.push({\n local,\n imported: identifierNameOf(childNode(specifier, \"imported\")) ?? local,\n specifierNode: specifier,\n declaration: statement,\n moduleSpecifier\n });\n }\n }\n if (bindings.length === 0) {\n return {\n edits: [],\n removedModules: [],\n removedBindings: [],\n erasedStyledDefinitions: [],\n erasedExports: [],\n rewrittenAnimatedNumberHooks: [],\n liveBindings: [],\n violations\n };\n }\n const consumed = loweredEdits.filter((edit) => edit.end > edit.start).map((edit) => ({ start: edit.start, end: edit.end }));\n const occurrences = collectNameOccurrences(program);\n const referencesOf = (local) => occurrences.get(local) ?? [];\n const isConsumed = (reference) => consumed.some((range) => coversRange(range, reference));\n const styledLocals = new Set(\n bindings.filter((binding) => binding.imported === \"styled\").map((b) => b.local)\n );\n const erasedStyledDefinitions = [];\n const erasedExports = [];\n const styledEdits = [];\n for (const definition of collectStyledDeclarators(program, styledLocals)) {\n const references = referencesOf(definition.name);\n if (references.length === 0) continue;\n if (!references.every(isConsumed)) continue;\n styledEdits.push({\n start: definition.declaration.start,\n end: definition.declaration.end,\n content: \"\",\n origin: span(definition.declaration)\n });\n consumed.push({\n start: definition.declaration.start,\n end: definition.declaration.end\n });\n erasedStyledDefinitions.push(definition.name);\n if (definition.exported) erasedExports.push(definition.name);\n }\n const animatedNumberBindings = bindings.filter(\n (binding) => ZERO_ANIMATED_NUMBER_HOOKS.has(binding.imported) && referencesOf(binding.local).some((reference) => !isConsumed(reference))\n );\n const rewrittenAnimatedNumberHooks = animatedNumberBindings.map(\n (binding) => binding.imported\n );\n const animatedNumberSpecifiers = new Set(\n animatedNumberBindings.map((binding) => binding.specifierNode)\n );\n const leafImportEdits = [];\n for (const declaration of tamaguiDeclarations) {\n const rewritten = animatedNumberBindings.filter(\n (binding) => binding.declaration === declaration\n );\n if (rewritten.length === 0) continue;\n leafImportEdits.push({\n start: declaration.start,\n end: declaration.start,\n content: `import { ${rewritten.map(\n (binding) => binding.imported === binding.local ? binding.imported : `${binding.imported} as ${binding.local}`\n ).join(\", \")} } from ${JSON.stringify(ZERO_ANIMATED_NUMBER_MODULE)};\n`,\n origin: span(declaration)\n });\n }\n const deadBindings = new Set(animatedNumberSpecifiers);\n const removedBindings = [];\n const liveBindings = [];\n for (const binding of bindings) {\n if (animatedNumberSpecifiers.has(binding.specifierNode)) continue;\n const references = referencesOf(binding.local);\n if (references.length > 0 && !references.every(isConsumed)) {\n liveBindings.push(binding);\n continue;\n }\n deadBindings.add(binding.specifierNode);\n removedBindings.push(binding.local);\n }\n const edits = [...styledEdits, ...leafImportEdits];\n const removedModules = [];\n for (const declaration of tamaguiDeclarations) {\n const specifiers = childNodes(declaration, \"specifiers\").filter(\n (specifier) => specifier.importKind !== \"type\"\n );\n if (specifiers.length === 0) continue;\n const dead = specifiers.filter((specifier) => deadBindings.has(specifier));\n if (dead.length === 0) continue;\n if (dead.length === specifiers.length) {\n edits.push({\n start: declaration.start,\n end: declaration.end,\n content: \"\",\n origin: span(declaration)\n });\n removedModules.push(stringValueOf(childNode(declaration, \"source\")));\n continue;\n }\n const survivors = specifiers.filter((specifier) => !deadBindings.has(specifier));\n const braceStart = specifiers[0].start;\n const braceEnd = specifiers[specifiers.length - 1].end;\n edits.push({\n start: braceStart,\n end: braceEnd,\n content: survivors.map((specifier) => source.slice(specifier.start, specifier.end)).join(\", \"),\n origin: span({ start: braceStart, end: braceEnd })\n });\n }\n for (const binding of liveBindings) {\n const live = referencesOf(binding.local).filter(\n (reference) => !isConsumed(reference)\n )[0];\n if (ZERO_DESIGN_STATE_APIS.has(binding.imported)) {\n violations.push({\n rule: 7,\n code: \"zero/design-state-read\",\n span: span(live),\n message: zeroRuleMessage(7, { api: binding.imported })\n });\n continue;\n }\n if (ZERO_PROVIDER_EXPORTS.has(binding.imported)) {\n violations.push({\n rule: 4,\n code: \"zero/runtime-provider\",\n span: span(live),\n component: binding.imported,\n message: ZERO_PROVIDER_MESSAGE\n });\n continue;\n }\n violations.push({\n rule: 2,\n code: \"zero/live-tamagui-reference\",\n span: span(live),\n component: binding.local,\n message: zeroRuleMessage(2, { expression: referenceExpression(source, live) })\n });\n }\n return {\n edits,\n removedModules,\n removedBindings,\n erasedStyledDefinitions,\n erasedExports,\n rewrittenAnimatedNumberHooks,\n liveBindings: liveBindings.map((binding) => binding.local),\n violations\n };\n}\nexport {\n ZERO_ANIMATED_NUMBER_HOOKS,\n ZERO_ANIMATED_NUMBER_MODULE,\n ZERO_DESIGN_STATE_APIS,\n ZERO_FAILURE_FOOTER,\n ZERO_PROVIDER_EXPORTS,\n ZERO_PROVIDER_MESSAGE,\n planZeroErasure,\n zeroConfigDriverMessage,\n zeroIslandThemeMessage,\n zeroRuleMessage,\n zeroSideEffectImportMessage,\n zeroStaticIslandImportMessage,\n zeroThemeBoundaryMessage,\n zeroViolationsFromPlan\n};\n//# sourceMappingURL=zero.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"zero.js","names":[],"sources":["esm/zero.js"],"sourcesContent":["import { childNode, childNodes, walkAst } from \"./ast\";\nimport { zeroRuleForBailout } from \"./diagnostics\";\nimport { parseModuleAst } from \"./yuku\";\nconst ZERO_FAILURE_FOOTER = \"Fix every site or move the owning module to a declared full-runtime island. Zero-runtime never retains one component as a fallback.\";\nconst ZERO_DESIGN_STATE_APIS = /* @__PURE__ */ new Set([\n \"useMedia\",\n \"useTheme\",\n \"useThemeName\",\n \"useProps\",\n \"usePropsAndStyle\",\n \"getConfig\",\n \"getTokens\",\n \"useTokens\",\n \"getVariableValue\",\n \"getToken\",\n \"getTokenValue\",\n \"useConfiguration\",\n \"useAnimationDriver\",\n \"updateTheme\",\n \"addTheme\",\n \"replaceTheme\",\n \"forceUpdateThemes\"\n]);\nconst ZERO_PROVIDER_EXPORTS = /* @__PURE__ */ new Set([\n \"TamaguiProvider\",\n \"ThemeProvider\",\n \"TamaguiRoot\"\n]);\nconst ZERO_ANIMATED_NUMBER_HOOKS = /* @__PURE__ */ new Set([\n \"useAnimatedNumber\",\n \"useAnimatedNumberStyle\",\n \"useAnimatedNumbersStyle\",\n \"useAnimatedNumberReaction\"\n]);\nconst ZERO_ANIMATED_NUMBER_MODULE = \"@tamagui/animations-css/animated-number\";\nfunction zeroRuleMessage(rule, params) {\n const component = params.component ?? \"this component\";\n switch (rule) {\n case 1:\n return `Zero-runtime rule 1: ${component} cannot receive a prop spread because the compiler cannot prove it is style-free. Pass non-style props explicitly or move this module to a full-runtime island.`;\n case 2:\n return `Zero-runtime rule 2: component expression ${params.expression ?? component} does not resolve to one literal lowerable host component. Use a literal Tamagui or html.* component, or move this module to a full-runtime island.`;\n case 3:\n return `Zero-runtime rule 3: value for ${params.prop ?? \"a style prop\"} on ${component} cannot be lowered: ${params.detail ?? \"the compiler could not evaluate it\"}. Use a supported build-time value or move this module to a full-runtime island.`;\n case 4:\n return `Zero-runtime rule 4: ${params.detail ?? component} requires runtime theme or config state. Theme names and modifier targets must be statically enumerable, Theme value props and config must be build-time data, and runtime mutation belongs in a full-runtime island.`;\n case 5:\n return `Zero-runtime rule 5: ${params.detail ?? component} requires a component animation runtime. Use a static CSS transition or move this module to a full-runtime island.`;\n case 6:\n return `Zero-runtime rule 6: ${component} does not lower to one host element with className and is island-only. Move this module to a declared full-runtime island.`;\n case 7:\n return `Zero-runtime rule 7: ${params.api ?? component} reads Tamagui design state in JavaScript. Express the condition in CSS or move this module to a full-runtime island.`;\n case 8:\n return `Zero-runtime rule 8: ${params.detail ?? \"a module-level import\"} defeats the zero-runtime graph. ${params.remediation ?? \"\"}`.trimEnd();\n }\n}\nfunction zeroSideEffectImportMessage(specifier) {\n return zeroRuleMessage(8, {\n detail: `the bare side-effect import of \"${specifier}\", whose effects zero-runtime cannot prove or erase,`,\n remediation: `Remove it, or import the values this module uses so the compiler can lower and erase them.`\n });\n}\nfunction zeroStaticIslandImportMessage(specifier, islandId) {\n return zeroRuleMessage(8, {\n detail: `the static import of \"${specifier}\", which is declared as full-runtime island \"${islandId}\",`,\n remediation: `Import the generated island loader instead; the island is a separately built entry and the zero graph never contains it.`\n });\n}\nconst ZERO_PROVIDER_MESSAGE = \"[tamagui zero-runtime] Rule 4: TamaguiProvider is not used by a zero-runtime root. The bundler loads generated CSS and the compiler lowers static Theme nodes. Remove this provider or make this entry full-runtime.\";\nfunction zeroThemeBoundaryMessage(component, prop) {\n return `[tamagui zero-runtime] Rule 4: ${component} uses ${prop}, which creates a runtime component theme boundary. Replace it with a static <Theme name=\"...\"> wrapper (use name=\"inverse\" for themeInverse) or move this module to a full-runtime island.`;\n}\nfunction zeroConfigDriverMessage(name, outputStyle) {\n return `[tamagui zero-runtime] Rule 5: createTamagui animations must resolve to the CSS driver. Driver ${name} has outputStyle=${String(outputStyle)}. Remove it from the zero entry or move its consumers to a full-runtime island.`;\n}\nfunction zeroIslandThemeMessage(entry) {\n return `[tamagui zero-runtime] Rule 4: island ${entry} has no statically resolved theme context at this mount. Place the island boundary under a compiler-visible static <Theme> or make this entry full-runtime.`;\n}\nfunction zeroViolationsFromPlan(plan) {\n const violations = [];\n for (const diagnostic of plan.diagnostics) {\n if (!diagnostic.blocking) continue;\n const rule = zeroRuleForBailout(diagnostic);\n violations.push({\n rule,\n code: diagnostic.code,\n span: diagnostic.span,\n component: diagnostic.component,\n message: diagnostic.zeroMessage ?? zeroRuleMessage(rule, {\n component: diagnostic.component,\n prop: diagnostic.prop,\n detail: diagnostic.message\n })\n });\n }\n return violations;\n}\nfunction isTamaguiSpecifier(specifier) {\n return specifier === \"tamagui\" || specifier.startsWith(\"tamagui/\") || specifier.startsWith(\"@tamagui/\");\n}\nfunction collectNameOccurrences(program) {\n const occurrences = /* @__PURE__ */ new Map();\n walkAst(program, (node, parent, key) => {\n if (node.type !== \"Identifier\" && node.type !== \"JSXIdentifier\") return;\n const name = typeof node.name === \"string\" ? node.name : null;\n if (!name) return;\n if (parent) {\n if (parent.type === \"ImportSpecifier\" || parent.type === \"ImportDefaultSpecifier\" || parent.type === \"ImportNamespaceSpecifier\" || parent.type === \"ExportSpecifier\") {\n return;\n }\n if ((parent.type === \"MemberExpression\" || parent.type === \"JSXMemberExpression\" || parent.type === \"OptionalMemberExpression\") && key === \"property\" && !parent.computed) {\n return;\n }\n if ((parent.type === \"Property\" || parent.type === \"PropertyDefinition\") && key === \"key\" && !parent.computed) {\n return;\n }\n if (parent.type === \"JSXAttribute\" && key === \"name\") return;\n if ((parent.type === \"VariableDeclarator\" || parent.type === \"FunctionDeclaration\" || parent.type === \"ClassDeclaration\") && key === \"id\") {\n return;\n }\n }\n const entry = { start: node.start, end: node.end, parent: parent ?? null };\n const list = occurrences.get(name);\n if (list) list.push(entry);\n else occurrences.set(name, [entry]);\n });\n return occurrences;\n}\nfunction coversRange(outer, inner) {\n return outer.start <= inner.start && outer.end >= inner.end;\n}\nfunction stringValueOf(node) {\n return node && typeof node.value === \"string\" ? node.value : null;\n}\nfunction identifierNameOf(node) {\n return node && node.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : null;\n}\nfunction referenceExpression(source, reference) {\n const parent = reference.parent;\n const node = parent && (parent.type === \"ConditionalExpression\" || parent.type === \"LogicalExpression\" || parent.type === \"CallExpression\" || parent.type === \"MemberExpression\" || parent.type === \"ArrayExpression\") ? parent : reference;\n const text = source.slice(node.start, node.end).replace(/\\s+/g, \" \").trim();\n return text.length > 80 ? `${text.slice(0, 77)}...` : text;\n}\nfunction collectStyledDeclarators(program, styledLocals) {\n const found = [];\n for (const statement of childNodes(program, \"body\")) {\n const exported = statement.type === \"ExportNamedDeclaration\";\n const declaration = exported ? childNode(statement, \"declaration\") : statement;\n if (!declaration || declaration.type !== \"VariableDeclaration\") continue;\n const declarators = childNodes(declaration, \"declarations\");\n if (declarators.length !== 1) continue;\n const declarator = declarators[0];\n const name = identifierNameOf(childNode(declarator, \"id\"));\n const init = childNode(declarator, \"init\");\n if (!name || !init || init.type !== \"CallExpression\") continue;\n const callee = identifierNameOf(childNode(init, \"callee\"));\n if (!callee || !styledLocals.has(callee)) continue;\n found.push({\n name,\n declarator,\n declaration: exported ? statement : declaration,\n exported\n });\n }\n return found;\n}\nfunction planZeroErasure(input) {\n const { id, source, loweredEdits } = input;\n const program = parseModuleAst(source, id);\n const violations = [];\n const span = (node) => ({ id, start: node.start, end: node.end });\n const bindings = [];\n const tamaguiDeclarations = [];\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n if (statement.importKind === \"type\") continue;\n const moduleSpecifier = stringValueOf(childNode(statement, \"source\"));\n if (!moduleSpecifier) continue;\n const islandId = input.islandIdFor(moduleSpecifier);\n if (islandId) {\n violations.push({\n rule: 8,\n code: \"zero/static-island-import\",\n span: span(statement),\n message: zeroStaticIslandImportMessage(moduleSpecifier, islandId)\n });\n continue;\n }\n if (!input.isTamaguiSpecifier(moduleSpecifier)) continue;\n tamaguiDeclarations.push(statement);\n const specifiers = childNodes(statement, \"specifiers\");\n if (specifiers.length === 0) {\n violations.push({\n rule: 8,\n code: \"zero/side-effect-import\",\n span: span(statement),\n message: zeroSideEffectImportMessage(moduleSpecifier)\n });\n continue;\n }\n for (const specifier of specifiers) {\n if (specifier.importKind === \"type\") continue;\n const local = identifierNameOf(childNode(specifier, \"local\"));\n if (!local) continue;\n bindings.push({\n local,\n imported: identifierNameOf(childNode(specifier, \"imported\")) ?? local,\n specifierNode: specifier,\n declaration: statement,\n moduleSpecifier\n });\n }\n }\n if (bindings.length === 0) {\n return {\n edits: [],\n removedModules: [],\n removedBindings: [],\n erasedStyledDefinitions: [],\n erasedExports: [],\n rewrittenAnimatedNumberHooks: [],\n liveBindings: [],\n violations\n };\n }\n const consumed = loweredEdits.filter((edit) => edit.end > edit.start).map((edit) => ({ start: edit.start, end: edit.end }));\n const occurrences = collectNameOccurrences(program);\n const referencesOf = (local) => occurrences.get(local) ?? [];\n const isConsumed = (reference) => consumed.some((range) => coversRange(range, reference));\n const styledLocals = new Set(\n bindings.filter((binding) => binding.imported === \"styled\").map((b) => b.local)\n );\n const erasedStyledDefinitions = [];\n const erasedExports = [];\n const styledEdits = [];\n for (const definition of collectStyledDeclarators(program, styledLocals)) {\n const references = referencesOf(definition.name);\n if (references.length === 0) continue;\n if (!references.every(isConsumed)) continue;\n styledEdits.push({\n start: definition.declaration.start,\n end: definition.declaration.end,\n content: \"\",\n origin: span(definition.declaration)\n });\n consumed.push({\n start: definition.declaration.start,\n end: definition.declaration.end\n });\n erasedStyledDefinitions.push(definition.name);\n if (definition.exported) erasedExports.push(definition.name);\n }\n const animatedNumberBindings = bindings.filter(\n (binding) => ZERO_ANIMATED_NUMBER_HOOKS.has(binding.imported) && referencesOf(binding.local).some((reference) => !isConsumed(reference))\n );\n const rewrittenAnimatedNumberHooks = animatedNumberBindings.map(\n (binding) => binding.imported\n );\n const animatedNumberSpecifiers = new Set(\n animatedNumberBindings.map((binding) => binding.specifierNode)\n );\n const leafImportEdits = [];\n for (const declaration of tamaguiDeclarations) {\n const rewritten = animatedNumberBindings.filter(\n (binding) => binding.declaration === declaration\n );\n if (rewritten.length === 0) continue;\n leafImportEdits.push({\n start: declaration.start,\n end: declaration.start,\n content: `import { ${rewritten.map(\n (binding) => binding.imported === binding.local ? binding.imported : `${binding.imported} as ${binding.local}`\n ).join(\", \")} } from ${JSON.stringify(ZERO_ANIMATED_NUMBER_MODULE)};\n`,\n origin: span(declaration)\n });\n }\n const deadBindings = new Set(animatedNumberSpecifiers);\n const removedBindings = [];\n const liveBindings = [];\n for (const binding of bindings) {\n if (animatedNumberSpecifiers.has(binding.specifierNode)) continue;\n const references = referencesOf(binding.local);\n if (references.length > 0 && !references.every(isConsumed)) {\n liveBindings.push(binding);\n continue;\n }\n deadBindings.add(binding.specifierNode);\n removedBindings.push(binding.local);\n }\n const edits = [...styledEdits, ...leafImportEdits];\n const removedModules = [];\n for (const declaration of tamaguiDeclarations) {\n const specifiers = childNodes(declaration, \"specifiers\").filter(\n (specifier) => specifier.importKind !== \"type\"\n );\n if (specifiers.length === 0) continue;\n const dead = specifiers.filter((specifier) => deadBindings.has(specifier));\n if (dead.length === 0) continue;\n if (dead.length === specifiers.length) {\n edits.push({\n start: declaration.start,\n end: declaration.end,\n content: \"\",\n origin: span(declaration)\n });\n removedModules.push(stringValueOf(childNode(declaration, \"source\")));\n continue;\n }\n const survivors = specifiers.filter((specifier) => !deadBindings.has(specifier));\n const braceStart = specifiers[0].start;\n const braceEnd = specifiers[specifiers.length - 1].end;\n edits.push({\n start: braceStart,\n end: braceEnd,\n content: survivors.map((specifier) => source.slice(specifier.start, specifier.end)).join(\", \"),\n origin: span({ start: braceStart, end: braceEnd })\n });\n }\n for (const binding of liveBindings) {\n const live = referencesOf(binding.local).filter(\n (reference) => !isConsumed(reference)\n )[0];\n if (ZERO_DESIGN_STATE_APIS.has(binding.imported)) {\n violations.push({\n rule: 7,\n code: \"zero/design-state-read\",\n span: span(live),\n message: zeroRuleMessage(7, { api: binding.imported })\n });\n continue;\n }\n if (ZERO_PROVIDER_EXPORTS.has(binding.imported)) {\n violations.push({\n rule: 4,\n code: \"zero/runtime-provider\",\n span: span(live),\n component: binding.imported,\n message: ZERO_PROVIDER_MESSAGE\n });\n continue;\n }\n violations.push({\n rule: 2,\n code: \"zero/live-tamagui-reference\",\n span: span(live),\n component: binding.local,\n message: zeroRuleMessage(2, { expression: referenceExpression(source, live) })\n });\n }\n return {\n edits,\n removedModules,\n removedBindings,\n erasedStyledDefinitions,\n erasedExports,\n rewrittenAnimatedNumberHooks,\n liveBindings: liveBindings.map((binding) => binding.local),\n violations\n };\n}\nexport {\n ZERO_ANIMATED_NUMBER_HOOKS,\n ZERO_ANIMATED_NUMBER_MODULE,\n ZERO_DESIGN_STATE_APIS,\n ZERO_FAILURE_FOOTER,\n ZERO_PROVIDER_EXPORTS,\n ZERO_PROVIDER_MESSAGE,\n isTamaguiSpecifier,\n planZeroErasure,\n zeroConfigDriverMessage,\n zeroIslandThemeMessage,\n zeroRuleMessage,\n zeroSideEffectImportMessage,\n zeroStaticIslandImportMessage,\n zeroThemeBoundaryMessage,\n zeroViolationsFromPlan\n};\n//# sourceMappingURL=zero.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.0-beta.669.1",
3
+ "version": "3.0.0-beta.719.1",
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.0-beta.669.1",
43
+ "@tamagui/build": "3.0.0-beta.719.1",
44
44
  "typescript": "~6.0.3"
45
45
  },
46
46
  "repository": {
package/src/zero.ts CHANGED
@@ -185,6 +185,18 @@ export function zeroViolationsFromPlan(plan: LoweredModulePlan): ZeroViolation[]
185
185
  return violations
186
186
  }
187
187
 
188
+ // every bundler plugin resolves the zero-forbidden surface through this one
189
+ // predicate. subpaths count: `tamagui/theme-update` is as much runtime surface
190
+ // as `tamagui` itself, and a plugin that missed them read <ThemeUpdate> as an
191
+ // opaque component and failed rule 4 at every island mount beneath it.
192
+ export function isTamaguiSpecifier(specifier: string): boolean {
193
+ return (
194
+ specifier === 'tamagui' ||
195
+ specifier.startsWith('tamagui/') ||
196
+ specifier.startsWith('@tamagui/')
197
+ )
198
+ }
199
+
188
200
  export interface ZeroErasureInput {
189
201
  id: ResolvedModuleId
190
202
  source: string
package/types/zero.d.ts CHANGED
@@ -69,6 +69,7 @@ export declare function zeroIslandThemeMessage(entry: string): string;
69
69
  * runtime behind.
70
70
  */
71
71
  export declare function zeroViolationsFromPlan(plan: LoweredModulePlan): ZeroViolation[];
72
+ export declare function isTamaguiSpecifier(specifier: string): boolean;
72
73
  export interface ZeroErasureInput {
73
74
  id: ResolvedModuleId;
74
75
  source: string;
@@ -1 +1 @@
1
- {"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../src/zero.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1C;;;;;;;;GAQG;AAEH,YAAY,EAAE,QAAQ,EAAE,CAAA;AAExB,MAAM,MAAM,iBAAiB,GACzB,2BAA2B,GAC3B,yBAAyB,GACzB,6BAA6B,GAC7B,wBAAwB,GACxB,uBAAuB,GACvB,aAAa,CAAC,MAAM,CAAC,CAAA;AAEzB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,iBAAiB,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,kEAAkE;AAClE,eAAO,MAAM,mBAAmB,wIACuG,CAAA;AAEvI;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aAkBjC,CAAA;AAEF,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,aAIhC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,aAKrC,CAAA;AAEF,eAAO,MAAM,2BAA2B,4CAA4C,CAAA;AAEpF,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAoB9E;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAKR;AAED,eAAO,MAAM,qBAAqB,yNACsL,CAAA;AAExN,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAElF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa,EAAE,CAoB/E;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,gBAAgB,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,YAAY,EAAE,SAAS,UAAU,EAAE,CAAA;IACnC,gFAAgF;IAChF,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAC9C,gFAAgF;IAChF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,uBAAuB,EAAE,MAAM,EAAE,CAAA;IACjC;;;OAGG;IACH,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,2EAA2E;IAC3E,4BAA4B,EAAE,MAAM,EAAE,CAAA;IACtC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,UAAU,EAAE,aAAa,EAAE,CAAA;CAC5B;AAoJD,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA6O1E"}
1
+ {"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../src/zero.ts"],"names":[],"mappings":"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"}