@tamagui/compiler-core 0.0.0-bootstrap.0 → 3.0.0-beta.1093.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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -1
  3. package/dist/cjs/ast.cjs +108 -0
  4. package/dist/cjs/contracts.cjs +61 -0
  5. package/dist/cjs/diagnostics.cjs +68 -0
  6. package/dist/cjs/evaluate.cjs +602 -0
  7. package/dist/cjs/graph.cjs +335 -0
  8. package/dist/cjs/hash.cjs +48 -0
  9. package/dist/cjs/index.cjs +43 -0
  10. package/dist/cjs/ir.cjs +32 -0
  11. package/dist/cjs/lower.cjs +232 -0
  12. package/dist/cjs/materialize.cjs +222 -0
  13. package/dist/cjs/normalize.cjs +628 -0
  14. package/dist/cjs/output.cjs +148 -0
  15. package/dist/cjs/planCache.cjs +262 -0
  16. package/dist/cjs/session.cjs +127 -0
  17. package/dist/cjs/yuku.cjs +166 -0
  18. package/dist/cjs/zero.cjs +389 -0
  19. package/dist/esm/ast.mjs +79 -0
  20. package/dist/esm/ast.mjs.map +1 -0
  21. package/dist/esm/contracts.mjs +34 -0
  22. package/dist/esm/contracts.mjs.map +1 -0
  23. package/dist/esm/diagnostics.mjs +44 -0
  24. package/dist/esm/diagnostics.mjs.map +1 -0
  25. package/dist/esm/evaluate.mjs +576 -0
  26. package/dist/esm/evaluate.mjs.map +1 -0
  27. package/dist/esm/graph.mjs +313 -0
  28. package/dist/esm/graph.mjs.map +1 -0
  29. package/dist/esm/hash.mjs +26 -0
  30. package/dist/esm/hash.mjs.map +1 -0
  31. package/dist/esm/index.mjs +30 -0
  32. package/dist/esm/ir.mjs +12 -0
  33. package/dist/esm/ir.mjs.map +1 -0
  34. package/dist/esm/lower.mjs +210 -0
  35. package/dist/esm/lower.mjs.map +1 -0
  36. package/dist/esm/materialize.mjs +203 -0
  37. package/dist/esm/materialize.mjs.map +1 -0
  38. package/dist/esm/normalize.mjs +604 -0
  39. package/dist/esm/normalize.mjs.map +1 -0
  40. package/dist/esm/output.mjs +119 -0
  41. package/dist/esm/output.mjs.map +1 -0
  42. package/dist/esm/planCache.mjs +232 -0
  43. package/dist/esm/planCache.mjs.map +1 -0
  44. package/dist/esm/session.mjs +108 -0
  45. package/dist/esm/session.mjs.map +1 -0
  46. package/dist/esm/yuku.mjs +144 -0
  47. package/dist/esm/yuku.mjs.map +1 -0
  48. package/dist/esm/zero.mjs +354 -0
  49. package/dist/esm/zero.mjs.map +1 -0
  50. package/package.json +42 -4
  51. package/src/ast.ts +106 -0
  52. package/src/contracts.ts +150 -0
  53. package/src/diagnostics.ts +96 -0
  54. package/src/evaluate.ts +875 -0
  55. package/src/graph.ts +425 -0
  56. package/src/hash.ts +36 -0
  57. package/src/index.ts +15 -0
  58. package/src/ir.ts +156 -0
  59. package/src/lower.ts +435 -0
  60. package/src/materialize.ts +383 -0
  61. package/src/normalize.ts +834 -0
  62. package/src/output.ts +175 -0
  63. package/src/planCache.ts +362 -0
  64. package/src/session.ts +192 -0
  65. package/src/yuku.ts +197 -0
  66. package/src/zero.ts +609 -0
  67. package/types/ast.d.ts +11 -0
  68. package/types/ast.d.ts.map +1 -0
  69. package/types/contracts.d.ts +99 -0
  70. package/types/contracts.d.ts.map +1 -0
  71. package/types/diagnostics.d.ts +31 -0
  72. package/types/diagnostics.d.ts.map +1 -0
  73. package/types/evaluate.d.ts +48 -0
  74. package/types/evaluate.d.ts.map +1 -0
  75. package/types/graph.d.ts +51 -0
  76. package/types/graph.d.ts.map +1 -0
  77. package/types/hash.d.ts +8 -0
  78. package/types/hash.d.ts.map +1 -0
  79. package/types/index.d.ts +16 -0
  80. package/types/index.d.ts.map +1 -0
  81. package/types/ir.d.ts +120 -0
  82. package/types/ir.d.ts.map +1 -0
  83. package/types/lower.d.ts +99 -0
  84. package/types/lower.d.ts.map +1 -0
  85. package/types/materialize.d.ts +121 -0
  86. package/types/materialize.d.ts.map +1 -0
  87. package/types/normalize.d.ts +7 -0
  88. package/types/normalize.d.ts.map +1 -0
  89. package/types/output.d.ts +32 -0
  90. package/types/output.d.ts.map +1 -0
  91. package/types/planCache.d.ts +123 -0
  92. package/types/planCache.d.ts.map +1 -0
  93. package/types/session.d.ts +52 -0
  94. package/types/session.d.ts.map +1 -0
  95. package/types/yuku.d.ts +4 -0
  96. package/types/yuku.d.ts.map +1 -0
  97. package/types/zero.d.ts +99 -0
  98. package/types/zero.d.ts.map +1 -0
@@ -0,0 +1,99 @@
1
+ export interface AstNode {
2
+ type: string;
3
+ start: number;
4
+ end: number;
5
+ [key: string]: unknown;
6
+ }
7
+ export type ResolvedModuleId = string & {
8
+ readonly __resolvedModuleId: unique symbol;
9
+ };
10
+ export interface SourceSpan {
11
+ id: ResolvedModuleId;
12
+ /** UTF-16 source-string index, inclusive. */
13
+ start: number;
14
+ /** UTF-16 source-string index, exclusive. */
15
+ end: number;
16
+ }
17
+ export interface HostResolvedImport {
18
+ specifier: string;
19
+ resolvedId: ResolvedModuleId;
20
+ external?: boolean;
21
+ }
22
+ export interface HostModuleInput {
23
+ id: ResolvedModuleId;
24
+ source: string;
25
+ /** Every import identity is canonical and resolved before the compiler sees it. */
26
+ imports: readonly HostResolvedImport[];
27
+ }
28
+ export interface HostResolvedProject {
29
+ modules: readonly HostModuleInput[];
30
+ }
31
+ export interface ProjectInput {
32
+ files: ReadonlyMap<string, string>;
33
+ resolutions: ReadonlyMap<string, string>;
34
+ }
35
+ export interface DefinitionSite {
36
+ id: ResolvedModuleId;
37
+ name: string;
38
+ start: number;
39
+ end: number;
40
+ initializer: AstNode | null;
41
+ constant: boolean;
42
+ }
43
+ export interface ReferenceSite {
44
+ id: ResolvedModuleId;
45
+ name: string;
46
+ start: number;
47
+ end: number;
48
+ }
49
+ export interface ParseDiagnostic {
50
+ kind: 'parse' | 'link';
51
+ id: ResolvedModuleId;
52
+ message: string;
53
+ }
54
+ export interface AnalyzerCandidate {
55
+ readonly name: string;
56
+ addFile(id: string, source: string): void;
57
+ removeFile(id: string): boolean;
58
+ link(): void;
59
+ definitionOf(id: string, localName: string): DefinitionSite | null;
60
+ definitionAt(id: string, start: number, end: number): DefinitionSite | null;
61
+ referencesOf(definition: DefinitionSite): ReferenceSite[];
62
+ dependenciesOf(id: string): string[];
63
+ dependentsOf(id: string): string[];
64
+ affectedBy(id: string): string[];
65
+ programOf(id: string): AstNode;
66
+ sourceOf(id: string): string;
67
+ parseCount(id: string): number;
68
+ diagnostics(): ParseDiagnostic[];
69
+ }
70
+ export interface ExpressionReference extends SourceSpan {
71
+ readonly kind: 'expression';
72
+ }
73
+ export interface SymbolDefinition {
74
+ id: ResolvedModuleId;
75
+ name: string;
76
+ span: SourceSpan;
77
+ initializer: ExpressionReference | null;
78
+ constant: boolean;
79
+ }
80
+ /** Parser-independent symbol access used by partial evaluation and element IR. */
81
+ export interface SymbolResolver {
82
+ resolveBinding(id: ResolvedModuleId, localName: string): SymbolDefinition | null;
83
+ resolveReference(reference: ExpressionReference): SymbolDefinition | null;
84
+ expressionNode(reference: ExpressionReference): AstNode | null;
85
+ sourceOf(id: ResolvedModuleId): string;
86
+ }
87
+ export interface CandidateFactory {
88
+ name: AnalyzerCandidate['name'];
89
+ create(project: ProjectInput): AnalyzerCandidate;
90
+ /** Parser-owned static module scan; no parser-specific node types escape this boundary. */
91
+ scanImports(id: ResolvedModuleId, source: string): string[];
92
+ }
93
+ export declare function resolutionKey(importer: string, specifier: string): string;
94
+ export declare function resolveFromHost(resolutions: ReadonlyMap<string, string>, specifier: string, importer: string): string | null;
95
+ export declare function resolvedModuleId(id: string): ResolvedModuleId;
96
+ export declare function expressionReference(id: ResolvedModuleId, node: Pick<AstNode, 'start' | 'end'>): ExpressionReference;
97
+ export declare function spanOf(id: ResolvedModuleId, node: Pick<AstNode, 'start' | 'end'>): SourceSpan;
98
+ export declare function textOfSpan(source: string, span: Pick<SourceSpan, 'start' | 'end'>): string;
99
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ResolvedModuleId, SourceSpan } from './contracts';
2
+ export type BailoutCode = 'local/invalid-element-call' | 'local/unsupported-element-name' | 'local/unsupported-prop-key' | 'local/unsupported-child' | 'local/unsupported-expression' | 'local/unsupported-styled-definition' | 'local/dynamic-style-value' | 'local/unsafe-style-spread' | 'local/unsupported-target' | 'local/style-resolution-failed' | 'local/overlapping-edit' | 'local/non-object-spread' | 'local/static-evaluation-cycle' | 'local/parse-error' | 'linked/unresolved-component-binding' | 'linked/unresolved-binding' | 'linked/missing-initializer' | 'linked/unresolved-import' | 'linked/unresolved-component-config';
3
+ /**
4
+ * The zero-runtime rule a diagnostic belongs to. Set by whichever site knows the
5
+ * reason; `zeroRuleForBailout` supplies the default for the rest.
6
+ */
7
+ export type ZeroRule = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
8
+ export interface BailoutReason {
9
+ code: BailoutCode;
10
+ kind: 'local' | 'linked';
11
+ message: string;
12
+ span: SourceSpan;
13
+ dependencyId?: ResolvedModuleId;
14
+ component?: string;
15
+ specifier?: string;
16
+ prop?: string;
17
+ /**
18
+ * True when this diagnostic stopped its candidate from lowering. Zero mode
19
+ * reports exactly these: a diagnostic recorded alongside a successful
20
+ * lowering describes a dropped prop, not a retained runtime.
21
+ */
22
+ blocking?: boolean;
23
+ /** Set where the reporting site knows better than the code-level default. */
24
+ zeroRule?: ZeroRule;
25
+ /** The design's fixed text for sites that have one, used verbatim. */
26
+ zeroMessage?: string;
27
+ }
28
+ export declare function zeroRuleForBailout(reason: BailoutReason): ZeroRule;
29
+ export declare function localBailout(code: Extract<BailoutCode, `local/${string}`>, span: SourceSpan, message: string): BailoutReason;
30
+ export declare function linkedBailout(code: Extract<BailoutCode, `linked/${string}`>, span: SourceSpan, message: string, dependencyId?: ResolvedModuleId): BailoutReason;
31
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,MAAM,WAAW,GACnB,4BAA4B,GAC5B,gCAAgC,GAChC,4BAA4B,GAC5B,yBAAyB,GACzB,8BAA8B,GAC9B,qCAAqC,GACrC,2BAA2B,GAC3B,2BAA2B,GAC3B,0BAA0B,GAC1B,+BAA+B,GAC/B,wBAAwB,GACxB,yBAAyB,GACzB,+BAA+B,GAC/B,mBAAmB,GACnB,qCAAqC,GACrC,2BAA2B,GAC3B,4BAA4B,GAC5B,0BAA0B,GAC1B,oCAAoC,CAAA;AAExC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AA4BD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAElE;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC,EAC7C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,GACd,aAAa,CAEf;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,UAAU,MAAM,EAAE,CAAC,EAC9C,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,gBAAgB,GAC9B,aAAa,CAEf"}
@@ -0,0 +1,48 @@
1
+ import type { ExpressionReference, ResolvedModuleId, SourceSpan, SymbolResolver } from './contracts';
2
+ import { type BailoutReason } from './diagnostics';
3
+ export type StaticEvaluationValue = string | number | boolean | null | StaticEvaluationValue[] | {
4
+ [key: string]: StaticEvaluationValue;
5
+ };
6
+ export type EvaluationResult = {
7
+ ok: true;
8
+ value: StaticEvaluationValue;
9
+ dependencies: ResolvedModuleId[];
10
+ } | {
11
+ ok: false;
12
+ bailout: BailoutReason;
13
+ };
14
+ export interface DynamicEvaluation {
15
+ type: 'number' | 'string' | 'boolean' | 'null';
16
+ values?: (number | string | boolean | null)[];
17
+ dependencies: ResolvedModuleId[];
18
+ }
19
+ export type BranchDecisionNode = {
20
+ kind: 'leaf';
21
+ value?: StaticEvaluationValue;
22
+ dependencies: ResolvedModuleId[];
23
+ } | {
24
+ kind: 'branch';
25
+ test: SourceSpan;
26
+ whenTrue: BranchDecisionNode;
27
+ whenFalse: BranchDecisionNode;
28
+ };
29
+ export declare function collectLeaves(node: BranchDecisionNode): {
30
+ value?: StaticEvaluationValue;
31
+ dependencies: ResolvedModuleId[];
32
+ }[];
33
+ export declare function collectBranchDependencies(node: BranchDecisionNode): ResolvedModuleId[];
34
+ /**
35
+ * A conditional or logical expression whose test resists static evaluation while
36
+ * its branch values evaluate statically or form a decision tree.
37
+ */
38
+ export declare function evaluateBranches(resolver: SymbolResolver, reference: ExpressionReference): BranchDecisionNode | null;
39
+ export declare function evaluateExpression(resolver: SymbolResolver, reference: ExpressionReference): EvaluationResult;
40
+ /**
41
+ * proves the runtime domain of a dynamic expression without evaluating its
42
+ * changing inputs. this is deliberately narrow: numeric arithmetic and a
43
+ * bounded lookup into a static primitive array are the two forms a host style
44
+ * can consume directly without retaining the full Tamagui resolver.
45
+ */
46
+ export declare function evaluateDynamicExpression(resolver: SymbolResolver, reference: ExpressionReference): DynamicEvaluation | null;
47
+ export declare function evaluateBinding(resolver: SymbolResolver, id: ResolvedModuleId, localName: string): EvaluationResult;
48
+ //# sourceMappingURL=evaluate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EAEV,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAE/E,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,qBAAqB,EAAE,GACvB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAAA;CAAE,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GACxB;IACE,EAAE,EAAE,IAAI,CAAA;IACR,KAAK,EAAE,qBAAqB,CAAA;IAC5B,YAAY,EAAE,gBAAgB,EAAE,CAAA;CACjC,GACD;IACE,EAAE,EAAE,KAAK,CAAA;IACT,OAAO,EAAE,aAAa,CAAA;CACvB,CAAA;AAEL,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IAC9C,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAA;IAC7C,YAAY,EAAE,gBAAgB,EAAE,CAAA;CACjC;AA6dD,MAAM,MAAM,kBAAkB,GAC1B;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,YAAY,EAAE,gBAAgB,EAAE,CAAA;CACjC,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,SAAS,EAAE,kBAAkB,CAAA;CAC9B,CAAA;AAEL,wBAAgB,aAAa,CAC3B,IAAI,EAAE,kBAAkB,GACvB;IAAE,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAAC,YAAY,EAAE,gBAAgB,EAAE,CAAA;CAAE,EAAE,CAGvE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,GAAG,gBAAgB,EAAE,CAQtF;AA0OD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,mBAAmB,GAC7B,kBAAkB,GAAG,IAAI,CAS3B;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,mBAAmB,GAC7B,gBAAgB,CAyBlB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,mBAAmB,GAC7B,iBAAiB,GAAG,IAAI,CAS1B;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,MAAM,GAChB,gBAAgB,CA4BlB"}
@@ -0,0 +1,51 @@
1
+ import type { CandidateFactory, ExpressionReference, HostModuleInput, HostResolvedProject, ResolvedModuleId, SourceSpan, SymbolDefinition, SymbolResolver } from './contracts';
2
+ import { type BailoutReason } from './diagnostics';
3
+ import { type BranchDecisionNode, type DynamicEvaluation, type EvaluationResult } from './evaluate';
4
+ import type { ElementIRResult } from './ir';
5
+ export interface GraphInvalidation {
6
+ changed: boolean;
7
+ id: ResolvedModuleId;
8
+ previousHash: string | null;
9
+ contentHash: string | null;
10
+ invalidatedIds: ResolvedModuleId[];
11
+ }
12
+ export declare function moduleContentHash(input: HostModuleInput): string;
13
+ /**
14
+ * Long-lived semantic graph. The host owns resolution and supplies every canonical id;
15
+ * this service owns parsing, linking, hashes, reverse edges, IR, and evaluation caches.
16
+ */
17
+ export declare class ProjectGraph implements SymbolResolver {
18
+ #private;
19
+ constructor(factory: CandidateFactory, project: HostResolvedProject);
20
+ moduleIds(): ResolvedModuleId[];
21
+ contentHash(id: ResolvedModuleId): string | null;
22
+ sourceOf(id: ResolvedModuleId): string;
23
+ dependenciesOf(id: ResolvedModuleId): ResolvedModuleId[];
24
+ dependentsOf(id: ResolvedModuleId): ResolvedModuleId[];
25
+ /** resolved ids a module imports that the graph does not own (package entries) */
26
+ externalImportsOf(id: ResolvedModuleId): ResolvedModuleId[];
27
+ affectedBy(id: ResolvedModuleId): ResolvedModuleId[];
28
+ parseCount(id: ResolvedModuleId): number;
29
+ resolveBinding(id: ResolvedModuleId, localName: string): SymbolDefinition | null;
30
+ resolveReference(reference: ExpressionReference): SymbolDefinition | null;
31
+ expressionNode(reference: ExpressionReference): import("./contracts").AstNode | null;
32
+ /**
33
+ * The members of a plain object literal, each as its own expression:
34
+ * `{ width: expr, height: 10 }`. Null for anything else, and for an object
35
+ * that spreads, computes a key, or defines a method or accessor.
36
+ */
37
+ objectMembers(reference: ExpressionReference): {
38
+ name: string;
39
+ span: SourceSpan;
40
+ value: ExpressionReference;
41
+ }[] | null;
42
+ evaluate(reference: ExpressionReference): EvaluationResult;
43
+ evaluateBranches(reference: ExpressionReference): BranchDecisionNode | null;
44
+ evaluateDynamic(reference: ExpressionReference): DynamicEvaluation | null;
45
+ evaluateBinding(id: ResolvedModuleId, localName: string): EvaluationResult;
46
+ elementsOf(id: ResolvedModuleId): ElementIRResult;
47
+ diagnostics(): BailoutReason[];
48
+ updateModule(input: HostModuleInput): GraphInvalidation;
49
+ removeModule(id: ResolvedModuleId): GraphInvalidation;
50
+ }
51
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAEf,mBAAmB,EAEnB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAKL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AAa3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,EAAE,EAAE,gBAAgB,CAAA;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,cAAc,EAAE,gBAAgB,EAAE,CAAA;CACnC;AAiBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAahE;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,cAAc;;IASjD,YAAY,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,EAQlE;IAED,SAAS,IAAI,gBAAgB,EAAE,CAE9B;IAED,WAAW,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAE/C;IAED,QAAQ,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAIrC;IAED,cAAc,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAEvD;IAED,YAAY,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAErD;IAED,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAQ1D;IAED,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAYnD;IAED,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAEvC;IAED,cAAc,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAgB/E;IAED,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,IAAI,CAoBxE;IAED,cAAc,CAAC,SAAS,EAAE,mBAAmB,wCAO5C;IAED;;;;OAIG;IACH,aAAa,CACX,SAAS,EAAE,mBAAmB,GAC7B;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,EAAE,GAAG,IAAI,CA4BzE;IAED,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,gBAAgB,CAEzD;IAED,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,IAAI,CAE1E;IAED,eAAe,CAAC,SAAS,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAExE;IAED,eAAe,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAEzE;IAED,UAAU,CAAC,EAAE,EAAE,gBAAgB,GAAG,eAAe,CAQhD;IAED,WAAW,IAAI,aAAa,EAAE,CAsC7B;IAED,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CA4BtD;IAED,YAAY,CAAC,EAAE,EAAE,gBAAgB,GAAG,iBAAiB,CA0BpD;CAgEF"}
@@ -0,0 +1,8 @@
1
+ /** The one content hash every compiler cache identity is built from. */
2
+ export declare function contentHash(value: string | Uint8Array): string;
3
+ /**
4
+ * Key-order-independent JSON. Cache identities are hashed from this, so two
5
+ * objects that differ only in property order must serialize identically.
6
+ */
7
+ export declare function stableStringify(value: unknown): string;
8
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAE9D;AAsBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAItD"}
@@ -0,0 +1,16 @@
1
+ export * from './ast';
2
+ export * from './contracts';
3
+ export * from './diagnostics';
4
+ export * from './evaluate';
5
+ export * from './graph';
6
+ export * from './hash';
7
+ export * from './ir';
8
+ export * from './lower';
9
+ export * from './materialize';
10
+ export * from './output';
11
+ export * from './planCache';
12
+ export * from './session';
13
+ export { normalizeElements } from './normalize';
14
+ export * from './zero';
15
+ export { parseModuleAst, yukuFactory } from './yuku';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,MAAM,CAAA;AACpB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA"}
package/types/ir.d.ts ADDED
@@ -0,0 +1,120 @@
1
+ import type { ExpressionReference, HostResolvedImport, ResolvedModuleId, SourceSpan, SymbolDefinition } from './contracts';
2
+ import type { BailoutReason } from './diagnostics';
3
+ export type ElementForm = 'jsx' | 'jsx-runtime' | 'create-element';
4
+ export type StaticValue = string | number | boolean | null;
5
+ export type ElementValue = {
6
+ kind: 'static';
7
+ value: StaticValue;
8
+ span: SourceSpan;
9
+ } | ExpressionReference | DOMStyleProgramIR;
10
+ export interface DOMStyleProgramIR {
11
+ kind: 'dom-style';
12
+ span: SourceSpan;
13
+ items: {
14
+ condition: ExpressionReference | null;
15
+ value: ExpressionReference;
16
+ }[];
17
+ }
18
+ export interface ComponentImportProvenance {
19
+ specifier: string;
20
+ importedName: string;
21
+ resolvedId: ResolvedModuleId;
22
+ external: boolean;
23
+ }
24
+ export interface ElementComponentIR {
25
+ kind: 'binding' | 'intrinsic';
26
+ name: string;
27
+ span: SourceSpan;
28
+ closingSpan: SourceSpan | null;
29
+ definition: SymbolDefinition | null;
30
+ provenance: ComponentImportProvenance | null;
31
+ }
32
+ export interface ElementPropIR {
33
+ kind: 'prop';
34
+ name: string;
35
+ span: SourceSpan;
36
+ value: ElementValue;
37
+ }
38
+ export interface ElementSpreadIR {
39
+ kind: 'spread';
40
+ span: SourceSpan;
41
+ value: ExpressionReference;
42
+ }
43
+ export interface ElementChildIR {
44
+ kind: 'child';
45
+ span: SourceSpan;
46
+ value: ElementValue | {
47
+ kind: 'element';
48
+ span: SourceSpan;
49
+ } | {
50
+ kind: 'empty';
51
+ span: SourceSpan;
52
+ };
53
+ }
54
+ /**
55
+ * Entries remain in source order. Consumers must apply duplicate props in this order;
56
+ * the last statically evaluated value wins exactly as it does at runtime.
57
+ */
58
+ export type ElementEntryIR = ElementPropIR | ElementSpreadIR | ElementChildIR;
59
+ export interface ElementIRBase {
60
+ kind: 'element';
61
+ form: ElementForm;
62
+ id: ResolvedModuleId;
63
+ span: SourceSpan;
64
+ /** JSX opening element or compiled props argument, used for punctuation-safe edits. */
65
+ propsSpan: SourceSpan | null;
66
+ component: ElementComponentIR;
67
+ }
68
+ export interface CompleteElementIR extends ElementIRBase {
69
+ complete: true;
70
+ entries: ElementEntryIR[];
71
+ bailouts: readonly [];
72
+ }
73
+ export interface IncompleteElementIR extends ElementIRBase {
74
+ complete: false;
75
+ /** Preserved only for diagnostics; incomplete entries must never be optimized. */
76
+ bailedEntries: ElementEntryIR[];
77
+ bailouts: readonly [BailoutReason, ...BailoutReason[]];
78
+ }
79
+ export type ElementIR = CompleteElementIR | IncompleteElementIR;
80
+ export interface StyledDefinitionIRBase {
81
+ kind: 'styled-definition';
82
+ id: ResolvedModuleId;
83
+ name: string;
84
+ span: SourceSpan;
85
+ definitionSpan: SourceSpan;
86
+ factory: ComponentImportProvenance;
87
+ base: ElementComponentIR;
88
+ baseClassName: ElementValue | null;
89
+ options: ExpressionReference;
90
+ /** the object form's third argument, `styled(Base, options, staticConfig)` */
91
+ staticConfig: ExpressionReference | null;
92
+ }
93
+ export interface CompleteStyledDefinitionIR extends StyledDefinitionIRBase {
94
+ complete: true;
95
+ bailouts: readonly [];
96
+ }
97
+ export interface IncompleteStyledDefinitionIR extends StyledDefinitionIRBase {
98
+ complete: false;
99
+ bailouts: readonly [BailoutReason, ...BailoutReason[]];
100
+ }
101
+ export type StyledDefinitionIR = CompleteStyledDefinitionIR | IncompleteStyledDefinitionIR;
102
+ /** A compile-time style handle declared by a Tamagui style frontend. */
103
+ export interface DOMStyleDefinitionIR {
104
+ kind: 'dom-style-definition';
105
+ id: ResolvedModuleId;
106
+ name: string;
107
+ /** Span of the complete style(...) call. */
108
+ span: SourceSpan;
109
+ definitionSpan: SourceSpan;
110
+ factory: ComponentImportProvenance;
111
+ value: ExpressionReference;
112
+ }
113
+ export interface ElementIRResult {
114
+ elements: ElementIR[];
115
+ styledDefinitions: StyledDefinitionIR[];
116
+ domStyleDefinitions: DOMStyleDefinitionIR[];
117
+ bailouts: BailoutReason[];
118
+ }
119
+ export declare function hostImportProvenance(imports: readonly HostResolvedImport[], specifier: string, importedName: string): ComponentImportProvenance | null;
120
+ //# sourceMappingURL=ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import type { ResolvedModuleId, SourceSpan } from './contracts';
2
+ import { type BailoutReason } from './diagnostics';
3
+ import type { MaterializedElement, MaterializedModule, MaterializedStyledDefinition } from './materialize';
4
+ import { type ApplicableLoweredModulePlan, type SourceEdit } from './output';
5
+ export declare const LOWERED_MODULE_PLAN_VERSION = 3;
6
+ export type CompilerTarget = 'web' | 'native';
7
+ export interface LoweredModuleStats {
8
+ found: number;
9
+ lowered: number;
10
+ flattened: number;
11
+ styled: number;
12
+ bailed: number;
13
+ }
14
+ export interface LoweringComponent {
15
+ /** Canonical resolved module id plus export name, supplied by the host registry. */
16
+ key: string;
17
+ canFlatten: boolean;
18
+ staticConfig: unknown;
19
+ }
20
+ export interface LoweringCandidateInput {
21
+ id: ResolvedModuleId;
22
+ source: string;
23
+ target: CompilerTarget;
24
+ module: MaterializedModule;
25
+ element: MaterializedElement;
26
+ styledDefinition: MaterializedStyledDefinition | null;
27
+ component: LoweringComponent;
28
+ }
29
+ export interface CandidateImport {
30
+ content: string;
31
+ origin: SourceSpan;
32
+ }
33
+ export type LoweringCandidateResult = {
34
+ ok: true;
35
+ edits: SourceEdit[];
36
+ css: string[];
37
+ imports: CandidateImport[];
38
+ dependencies?: ResolvedModuleId[];
39
+ diagnostics?: BailoutReason[];
40
+ flattened?: boolean;
41
+ } | {
42
+ ok: false;
43
+ bailout: BailoutReason;
44
+ };
45
+ /**
46
+ * Tamagui's static adapter supplies stable style primitives and registry data. It does
47
+ * not traverse modules, apply edits, commit partial candidates, or choose a fallback.
48
+ */
49
+ export interface CompilerLoweringHost {
50
+ resolveComponent(element: MaterializedElement, styledDefinition: MaterializedStyledDefinition | null): LoweringComponent | null;
51
+ isStyleProp(name: string, component: LoweringComponent): boolean;
52
+ /** The host can retain this dynamic prop while committing other safe candidate edits. */
53
+ canLowerDynamicStyleProp?(name: string, component: LoweringComponent, valueKind?: 'bailout' | 'conditional'): boolean;
54
+ lowerCandidate(input: LoweringCandidateInput): LoweringCandidateResult;
55
+ /** Development-only source instrumentation for an existing component debug channel. */
56
+ developmentDebugInstrumentation?(input: LoweringCandidateInput, result: LoweringCandidateResult): SourceEdit[] | undefined;
57
+ }
58
+ export interface LowerModuleOptions {
59
+ projectGeneration: string;
60
+ }
61
+ export interface StructuralModulePassResult {
62
+ module: MaterializedModule;
63
+ edits: SourceEdit[];
64
+ imports: CandidateImport[];
65
+ diagnostics: BailoutReason[];
66
+ dependencies: ResolvedModuleId[];
67
+ }
68
+ export interface StructuralModulePass {
69
+ /** Stable implementation/data hash included in every lowerer cache identity. */
70
+ versionHash: string;
71
+ transform(input: {
72
+ module: MaterializedModule;
73
+ source: string;
74
+ target: CompilerTarget;
75
+ }): StructuralModulePassResult;
76
+ }
77
+ export interface LoweredModulePlan extends ApplicableLoweredModulePlan {
78
+ version: typeof LOWERED_MODULE_PLAN_VERSION;
79
+ target: CompilerTarget;
80
+ inputHash: string;
81
+ projectGeneration: string;
82
+ structuralPassHash: string;
83
+ edits: SourceEdit[];
84
+ css: string;
85
+ diagnostics: BailoutReason[];
86
+ dependencies: ResolvedModuleId[];
87
+ stats: LoweredModuleStats;
88
+ }
89
+ export interface LowerModuleInput {
90
+ module: MaterializedModule;
91
+ source: string;
92
+ target: CompilerTarget;
93
+ host: CompilerLoweringHost;
94
+ options: LowerModuleOptions;
95
+ structuralPass?: StructuralModulePass;
96
+ }
97
+ /** Builds one JSON-safe plan. Each recognized candidate commits all edits/CSS/imports or none. */
98
+ export declare function lowerModule({ module, source, target, host, options, structuralPass, }: LowerModuleInput): LoweredModulePlan;
99
+ //# sourceMappingURL=lower.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import type { ResolvedModuleId, SourceSpan } from './contracts';
2
+ import type { BailoutReason } from './diagnostics';
3
+ import type { BranchDecisionNode, StaticEvaluationValue } from './evaluate';
4
+ import type { ProjectGraph } from './graph';
5
+ import type { ComponentImportProvenance, ElementComponentIR, ElementIR, DOMStyleDefinitionIR } from './ir';
6
+ export type MaterializedValue = {
7
+ kind: 'static';
8
+ value: StaticEvaluationValue;
9
+ dependencies: ResolvedModuleId[];
10
+ span: SourceSpan;
11
+ /**
12
+ * Present only when normalization received syntax-level literal input:
13
+ * a string, number, boolean, or null AST literal, or JSXText. Template
14
+ * literals, constant-folded expressions, and values reached through a
15
+ * binding are evaluated static values but do not have literal origin.
16
+ */
17
+ literalOrigin?: true;
18
+ } | {
19
+ kind: 'bailout';
20
+ bailout: BailoutReason;
21
+ span: SourceSpan;
22
+ dynamic: ReturnType<ProjectGraph['evaluateDynamic']>;
23
+ } | {
24
+ /**
25
+ * A conditional whose branches evaluated statically while the test did
26
+ * not: `cond ? 'body' : 'heading'`. Lowerings that cannot use it treat
27
+ * it exactly like a bailout (the bailout it would otherwise have been
28
+ * is preserved for that purpose).
29
+ */
30
+ kind: 'conditional';
31
+ tree: BranchDecisionNode;
32
+ dependencies: ResolvedModuleId[];
33
+ bailout: BailoutReason;
34
+ span: SourceSpan;
35
+ } | {
36
+ kind: 'dom-style';
37
+ span: SourceSpan;
38
+ items: {
39
+ condition: SourceSpan | null;
40
+ value: Exclude<MaterializedValue, {
41
+ kind: 'dom-style';
42
+ }>;
43
+ }[];
44
+ } | {
45
+ /**
46
+ * A `style` object literal that did not evaluate as a whole:
47
+ * `style={{ width: expr, height: 10 }}`. Each member carries its own
48
+ * value, so a lowering keeps the static members as one style object and
49
+ * treats each dynamic member like the direct prop of its name.
50
+ */
51
+ kind: 'object';
52
+ span: SourceSpan;
53
+ members: {
54
+ name: string;
55
+ span: SourceSpan;
56
+ value: Exclude<MaterializedValue, {
57
+ kind: 'dom-style' | 'object';
58
+ }>;
59
+ }[];
60
+ bailout: BailoutReason;
61
+ };
62
+ export type MaterializedElementEntry = {
63
+ kind: 'prop';
64
+ name: string;
65
+ span: SourceSpan;
66
+ value: MaterializedValue;
67
+ } | {
68
+ kind: 'spread';
69
+ span: SourceSpan;
70
+ value: MaterializedValue;
71
+ } | {
72
+ kind: 'child';
73
+ span: SourceSpan;
74
+ value: MaterializedValue | {
75
+ kind: 'element';
76
+ span: SourceSpan;
77
+ } | {
78
+ kind: 'empty';
79
+ span: SourceSpan;
80
+ };
81
+ };
82
+ export interface MaterializedElement {
83
+ kind: 'element';
84
+ form: ElementIR['form'];
85
+ id: ResolvedModuleId;
86
+ span: SourceSpan;
87
+ propsSpan: SourceSpan | null;
88
+ component: ElementComponentIR;
89
+ complete: boolean;
90
+ entries: MaterializedElementEntry[];
91
+ bailouts: BailoutReason[];
92
+ }
93
+ export interface MaterializedStyledDefinition {
94
+ kind: 'styled-definition';
95
+ id: ResolvedModuleId;
96
+ name: string;
97
+ span: SourceSpan;
98
+ definitionSpan: SourceSpan;
99
+ factory: ComponentImportProvenance;
100
+ base: ElementComponentIR;
101
+ baseClassName: MaterializedValue | null;
102
+ options: MaterializedValue;
103
+ staticConfig: MaterializedValue | null;
104
+ complete: boolean;
105
+ bailouts: BailoutReason[];
106
+ }
107
+ export interface MaterializedDOMStyleDefinition extends Omit<DOMStyleDefinitionIR, 'value'> {
108
+ value: MaterializedValue;
109
+ }
110
+ export interface MaterializedModule {
111
+ version: 1;
112
+ id: ResolvedModuleId;
113
+ inputHash: string;
114
+ elements: MaterializedElement[];
115
+ styledDefinitions: MaterializedStyledDefinition[];
116
+ domStyleDefinitions: MaterializedDOMStyleDefinition[];
117
+ diagnostics: BailoutReason[];
118
+ dependencies: ResolvedModuleId[];
119
+ }
120
+ export declare function materializeModule(graph: ProjectGraph, id: ResolvedModuleId): MaterializedModule;
121
+ //# sourceMappingURL=materialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../src/materialize.ts"],"names":[],"mappings":"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"}