@tamagui/compiler-core 0.0.0-bootstrap.0 → 3.0.0-beta.637.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 +95 -0
  4. package/dist/cjs/contracts.cjs +62 -0
  5. package/dist/cjs/diagnostics.cjs +69 -0
  6. package/dist/cjs/evaluate.cjs +351 -0
  7. package/dist/cjs/graph.cjs +279 -0
  8. package/dist/cjs/hash.cjs +49 -0
  9. package/dist/cjs/index.cjs +44 -0
  10. package/dist/cjs/ir.cjs +33 -0
  11. package/dist/cjs/lower.cjs +225 -0
  12. package/dist/cjs/materialize.cjs +200 -0
  13. package/dist/cjs/normalize.cjs +622 -0
  14. package/dist/cjs/output.cjs +149 -0
  15. package/dist/cjs/planCache.cjs +224 -0
  16. package/dist/cjs/session.cjs +119 -0
  17. package/dist/cjs/yuku.cjs +159 -0
  18. package/dist/cjs/zero.cjs +387 -0
  19. package/dist/esm/ast.mjs +65 -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 +327 -0
  26. package/dist/esm/evaluate.mjs.map +1 -0
  27. package/dist/esm/graph.mjs +256 -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 +202 -0
  35. package/dist/esm/lower.mjs.map +1 -0
  36. package/dist/esm/materialize.mjs +179 -0
  37. package/dist/esm/materialize.mjs.map +1 -0
  38. package/dist/esm/normalize.mjs +596 -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 +194 -0
  43. package/dist/esm/planCache.mjs.map +1 -0
  44. package/dist/esm/session.mjs +99 -0
  45. package/dist/esm/session.mjs.map +1 -0
  46. package/dist/esm/yuku.mjs +136 -0
  47. package/dist/esm/yuku.mjs.map +1 -0
  48. package/dist/esm/zero.mjs +352 -0
  49. package/dist/esm/zero.mjs.map +1 -0
  50. package/package.json +42 -4
  51. package/src/ast.ts +86 -0
  52. package/src/contracts.ts +148 -0
  53. package/src/diagnostics.ts +96 -0
  54. package/src/evaluate.ts +497 -0
  55. package/src/graph.ts +347 -0
  56. package/src/hash.ts +36 -0
  57. package/src/index.ts +15 -0
  58. package/src/ir.ts +154 -0
  59. package/src/lower.ts +418 -0
  60. package/src/materialize.ts +330 -0
  61. package/src/normalize.ts +846 -0
  62. package/src/output.ts +175 -0
  63. package/src/planCache.ts +327 -0
  64. package/src/session.ts +172 -0
  65. package/src/yuku.ts +189 -0
  66. package/src/zero.ts +598 -0
  67. package/types/ast.d.ts +10 -0
  68. package/types/ast.d.ts.map +1 -0
  69. package/types/contracts.d.ts +97 -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 +36 -0
  74. package/types/evaluate.d.ts.map +1 -0
  75. package/types/graph.d.ts +37 -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 +118 -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 +104 -0
  86. package/types/materialize.d.ts.map +1 -0
  87. package/types/normalize.d.ts +8 -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 +113 -0
  92. package/types/planCache.d.ts.map +1 -0
  93. package/types/session.d.ts +44 -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 +98 -0
  98. package/types/zero.d.ts.map +1 -0
@@ -0,0 +1,97 @@
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
+ referencesOf(definition: DefinitionSite): ReferenceSite[];
61
+ dependenciesOf(id: string): string[];
62
+ dependentsOf(id: string): string[];
63
+ affectedBy(id: string): string[];
64
+ programOf(id: string): AstNode;
65
+ sourceOf(id: string): string;
66
+ parseCount(id: string): number;
67
+ diagnostics(): ParseDiagnostic[];
68
+ }
69
+ export interface ExpressionReference extends SourceSpan {
70
+ readonly kind: 'expression';
71
+ }
72
+ export interface SymbolDefinition {
73
+ id: ResolvedModuleId;
74
+ name: string;
75
+ span: SourceSpan;
76
+ initializer: ExpressionReference | null;
77
+ constant: boolean;
78
+ }
79
+ /** Parser-independent symbol access used by partial evaluation and element IR. */
80
+ export interface SymbolResolver {
81
+ resolveBinding(id: ResolvedModuleId, localName: string): SymbolDefinition | null;
82
+ expressionNode(reference: ExpressionReference): AstNode | null;
83
+ sourceOf(id: ResolvedModuleId): string;
84
+ }
85
+ export interface CandidateFactory {
86
+ name: AnalyzerCandidate['name'];
87
+ create(project: ProjectInput): AnalyzerCandidate;
88
+ /** Parser-owned static module scan; no parser-specific node types escape this boundary. */
89
+ scanImports(id: ResolvedModuleId, source: string): string[];
90
+ }
91
+ export declare function resolutionKey(importer: string, specifier: string): string;
92
+ export declare function resolveFromHost(resolutions: ReadonlyMap<string, string>, specifier: string, importer: string): string | null;
93
+ export declare function resolvedModuleId(id: string): ResolvedModuleId;
94
+ export declare function expressionReference(id: ResolvedModuleId, node: Pick<AstNode, 'start' | 'end'>): ExpressionReference;
95
+ export declare function spanOf(id: ResolvedModuleId, node: Pick<AstNode, 'start' | 'end'>): SourceSpan;
96
+ export declare function textOfSpan(source: string, span: Pick<SourceSpan, 'start' | 'end'>): string;
97
+ //# 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,36 @@
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 ConditionalEvaluation {
15
+ /** Span of the test expression, sliced verbatim into compiled output. */
16
+ test: SourceSpan;
17
+ whenTrue: {
18
+ value: StaticEvaluationValue;
19
+ dependencies: ResolvedModuleId[];
20
+ };
21
+ whenFalse: {
22
+ value: StaticEvaluationValue;
23
+ dependencies: ResolvedModuleId[];
24
+ };
25
+ }
26
+ /**
27
+ * A conditional whose test resists static evaluation while both branches
28
+ * evaluate: `cond ? 'body' : 'heading'`. Plain evaluation bails on the test;
29
+ * this recovers the branch values so a lowering can resolve each branch at
30
+ * compile time and leave only the test in the output. Returns null for any
31
+ * other expression shape — the caller keeps its ordinary bailout.
32
+ */
33
+ export declare function evaluateConditionalExpression(resolver: SymbolResolver, reference: ExpressionReference): ConditionalEvaluation | null;
34
+ export declare function evaluateExpression(resolver: SymbolResolver, reference: ExpressionReference): EvaluationResult;
35
+ export declare function evaluateBinding(resolver: SymbolResolver, id: ResolvedModuleId, localName: string): EvaluationResult;
36
+ //# 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;AAkWL,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,IAAI,EAAE,UAAU,CAAA;IAChB,QAAQ,EAAE;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,YAAY,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAA;IAC5E,SAAS,EAAE;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,YAAY,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAA;CAC9E;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,mBAAmB,GAC7B,qBAAqB,GAAG,IAAI,CAgC9B;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,mBAAmB,GAC7B,gBAAgB,CAyBlB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,MAAM,GAChB,gBAAgB,CA4BlB"}
@@ -0,0 +1,37 @@
1
+ import type { CandidateFactory, ExpressionReference, HostModuleInput, HostResolvedProject, ResolvedModuleId, SymbolDefinition, SymbolResolver } from './contracts';
2
+ import { type BailoutReason } from './diagnostics';
3
+ import { type ConditionalEvaluation, 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
+ affectedBy(id: ResolvedModuleId): ResolvedModuleId[];
26
+ parseCount(id: ResolvedModuleId): number;
27
+ resolveBinding(id: ResolvedModuleId, localName: string): SymbolDefinition | null;
28
+ expressionNode(reference: ExpressionReference): import("./contracts").AstNode | null;
29
+ evaluate(reference: ExpressionReference): EvaluationResult;
30
+ evaluateConditional(reference: ExpressionReference): ConditionalEvaluation | null;
31
+ evaluateBinding(id: ResolvedModuleId, localName: string): EvaluationResult;
32
+ elementsOf(id: ResolvedModuleId): ElementIRResult;
33
+ diagnostics(): BailoutReason[];
34
+ updateModule(input: HostModuleInput): GraphInvalidation;
35
+ removeModule(id: ResolvedModuleId): GraphInvalidation;
36
+ }
37
+ //# 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,gBAAgB,EAChB,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAIL,KAAK,qBAAqB,EAC1B,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,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,cAAc,CAAC,SAAS,EAAE,mBAAmB,wCAO5C;IAED,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,gBAAgB,CAEzD;IAED,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,IAAI,CAEhF;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,118 @@
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
+ }
91
+ export interface CompleteStyledDefinitionIR extends StyledDefinitionIRBase {
92
+ complete: true;
93
+ bailouts: readonly [];
94
+ }
95
+ export interface IncompleteStyledDefinitionIR extends StyledDefinitionIRBase {
96
+ complete: false;
97
+ bailouts: readonly [BailoutReason, ...BailoutReason[]];
98
+ }
99
+ export type StyledDefinitionIR = CompleteStyledDefinitionIR | IncompleteStyledDefinitionIR;
100
+ /** A compile-time style handle declared by the standalone DOM frontend. */
101
+ export interface DOMStyleDefinitionIR {
102
+ kind: 'dom-style-definition';
103
+ id: ResolvedModuleId;
104
+ name: string;
105
+ /** Span of the complete style(...) call. */
106
+ span: SourceSpan;
107
+ definitionSpan: SourceSpan;
108
+ factory: ComponentImportProvenance;
109
+ value: ExpressionReference;
110
+ }
111
+ export interface ElementIRResult {
112
+ elements: ElementIR[];
113
+ styledDefinitions: StyledDefinitionIR[];
114
+ domStyleDefinitions: DOMStyleDefinitionIR[];
115
+ bailouts: BailoutReason[];
116
+ }
117
+ export declare function hostImportProvenance(imports: readonly HostResolvedImport[], specifier: string, importedName: string): ComponentImportProvenance | null;
118
+ //# 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 = 2;
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,104 @@
1
+ import type { ResolvedModuleId, SourceSpan } from './contracts';
2
+ import type { BailoutReason } from './diagnostics';
3
+ import type { 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
+ } | {
23
+ /**
24
+ * A conditional whose branches evaluated statically while the test did
25
+ * not: `cond ? 'body' : 'heading'`. Lowerings that cannot use it treat
26
+ * it exactly like a bailout (the bailout it would otherwise have been
27
+ * is preserved for that purpose).
28
+ */
29
+ kind: 'conditional';
30
+ test: SourceSpan;
31
+ whenTrue: StaticEvaluationValue;
32
+ whenFalse: StaticEvaluationValue;
33
+ dependencies: ResolvedModuleId[];
34
+ bailout: BailoutReason;
35
+ span: SourceSpan;
36
+ } | {
37
+ kind: 'dom-style';
38
+ span: SourceSpan;
39
+ items: {
40
+ condition: SourceSpan | null;
41
+ value: Exclude<MaterializedValue, {
42
+ kind: 'dom-style';
43
+ }>;
44
+ }[];
45
+ };
46
+ export type MaterializedElementEntry = {
47
+ kind: 'prop';
48
+ name: string;
49
+ span: SourceSpan;
50
+ value: MaterializedValue;
51
+ } | {
52
+ kind: 'spread';
53
+ span: SourceSpan;
54
+ value: MaterializedValue;
55
+ } | {
56
+ kind: 'child';
57
+ span: SourceSpan;
58
+ value: MaterializedValue | {
59
+ kind: 'element';
60
+ span: SourceSpan;
61
+ } | {
62
+ kind: 'empty';
63
+ span: SourceSpan;
64
+ };
65
+ };
66
+ export interface MaterializedElement {
67
+ kind: 'element';
68
+ form: ElementIR['form'];
69
+ id: ResolvedModuleId;
70
+ span: SourceSpan;
71
+ propsSpan: SourceSpan | null;
72
+ component: ElementComponentIR;
73
+ complete: boolean;
74
+ entries: MaterializedElementEntry[];
75
+ bailouts: BailoutReason[];
76
+ }
77
+ export interface MaterializedStyledDefinition {
78
+ kind: 'styled-definition';
79
+ id: ResolvedModuleId;
80
+ name: string;
81
+ span: SourceSpan;
82
+ definitionSpan: SourceSpan;
83
+ factory: ComponentImportProvenance;
84
+ base: ElementComponentIR;
85
+ baseClassName: MaterializedValue | null;
86
+ options: MaterializedValue;
87
+ complete: boolean;
88
+ bailouts: BailoutReason[];
89
+ }
90
+ export interface MaterializedDOMStyleDefinition extends Omit<DOMStyleDefinitionIR, 'value'> {
91
+ value: MaterializedValue;
92
+ }
93
+ export interface MaterializedModule {
94
+ version: 1;
95
+ id: ResolvedModuleId;
96
+ inputHash: string;
97
+ elements: MaterializedElement[];
98
+ styledDefinitions: MaterializedStyledDefinition[];
99
+ domStyleDefinitions: MaterializedDOMStyleDefinition[];
100
+ diagnostics: BailoutReason[];
101
+ dependencies: ResolvedModuleId[];
102
+ }
103
+ export declare function materializeModule(graph: ProjectGraph, id: ResolvedModuleId): MaterializedModule;
104
+ //# 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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"}
@@ -0,0 +1,8 @@
1
+ import { type AnalyzerCandidate, type AstNode, type DefinitionSite, type HostResolvedImport } from './contracts';
2
+ import type { ElementIRResult } from './ir';
3
+ export declare function definitionFromDeclaration(id: string, name: string, program: AstNode, declaration: AstNode): DefinitionSite;
4
+ export declare function normalizeElements(candidate: AnalyzerCandidate, rawId: string, imports?: readonly HostResolvedImport[]): ElementIRResult;
5
+ export declare function declarationForName(program: AstNode, name: string): AstNode | null;
6
+ export declare function nodeAtSpan(program: AstNode, start: number, end: number): AstNode | null;
7
+ export declare function asAstNode(value: unknown, label: string): AstNode;
8
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAQA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAGxB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAMV,eAAe,EAQhB,MAAM,MAAM,CAAA;AAmBb,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,OAAO,GACnB,cAAc,CA8ChB;AAynBD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,kBAAkB,EAAO,GAC1C,eAAe,CAwFjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKjF;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAEvF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAGhE"}
@@ -0,0 +1,32 @@
1
+ import type { ResolvedModuleId, SourceSpan } from './contracts';
2
+ export interface SourceEdit {
3
+ /** UTF-16 source-string index, inclusive. */
4
+ start: number;
5
+ /** UTF-16 source-string index, exclusive. Equal to start for an insertion. */
6
+ end: number;
7
+ content: string;
8
+ origin: SourceSpan;
9
+ }
10
+ export interface CompilerSourceMap {
11
+ version: 3;
12
+ file?: string;
13
+ names: readonly string[];
14
+ sources: readonly (string | null)[];
15
+ sourcesContent: readonly (string | null)[];
16
+ mappings: string;
17
+ }
18
+ export interface AppliedLoweredModule {
19
+ changed: boolean;
20
+ code: string;
21
+ map: CompilerSourceMap | null;
22
+ }
23
+ export interface ApplicableLoweredModulePlan {
24
+ id: ResolvedModuleId;
25
+ sourceHash: string;
26
+ edits: readonly SourceEdit[];
27
+ }
28
+ export declare function sourceContentHash(source: string): string;
29
+ export declare function validateSourceEdits(source: string, edits: readonly SourceEdit[]): void;
30
+ /** The only compiler-core path that applies source edits and owns their source map. */
31
+ export declare function applyLoweredModule(source: string, id: ResolvedModuleId, plan: ApplicableLoweredModulePlan): AppliedLoweredModule;
32
+ //# sourceMappingURL=output.d.ts.map