@analogjs/angular-compiler 2.5.0-beta.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 (54) hide show
  1. package/COMPILER.md +474 -0
  2. package/README.md +5 -0
  3. package/package.json +51 -0
  4. package/src/index.d.ts +5 -0
  5. package/src/index.js +6 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/ast-translator.d.ts +40 -0
  8. package/src/lib/ast-translator.js +243 -0
  9. package/src/lib/ast-translator.js.map +1 -0
  10. package/src/lib/compile.d.ts +24 -0
  11. package/src/lib/compile.js +630 -0
  12. package/src/lib/compile.js.map +1 -0
  13. package/src/lib/defer.d.ts +23 -0
  14. package/src/lib/defer.js +158 -0
  15. package/src/lib/defer.js.map +1 -0
  16. package/src/lib/dts-reader.d.ts +25 -0
  17. package/src/lib/dts-reader.js +326 -0
  18. package/src/lib/dts-reader.js.map +1 -0
  19. package/src/lib/hmr.d.ts +12 -0
  20. package/src/lib/hmr.js +49 -0
  21. package/src/lib/hmr.js.map +1 -0
  22. package/src/lib/index.d.ts +5 -0
  23. package/src/lib/index.js +6 -0
  24. package/src/lib/index.js.map +1 -0
  25. package/src/lib/jit-metadata.d.ts +11 -0
  26. package/src/lib/jit-metadata.js +201 -0
  27. package/src/lib/jit-metadata.js.map +1 -0
  28. package/src/lib/jit-transform.d.ts +21 -0
  29. package/src/lib/jit-transform.js +207 -0
  30. package/src/lib/jit-transform.js.map +1 -0
  31. package/src/lib/js-emitter.d.ts +8 -0
  32. package/src/lib/js-emitter.js +317 -0
  33. package/src/lib/js-emitter.js.map +1 -0
  34. package/src/lib/metadata.d.ts +36 -0
  35. package/src/lib/metadata.js +465 -0
  36. package/src/lib/metadata.js.map +1 -0
  37. package/src/lib/registry.d.ts +32 -0
  38. package/src/lib/registry.js +177 -0
  39. package/src/lib/registry.js.map +1 -0
  40. package/src/lib/resource-inliner.d.ts +17 -0
  41. package/src/lib/resource-inliner.js +109 -0
  42. package/src/lib/resource-inliner.js.map +1 -0
  43. package/src/lib/style-ast.d.ts +8 -0
  44. package/src/lib/style-ast.js +110 -0
  45. package/src/lib/style-ast.js.map +1 -0
  46. package/src/lib/styles.d.ts +13 -0
  47. package/src/lib/styles.js +60 -0
  48. package/src/lib/styles.js.map +1 -0
  49. package/src/lib/utils.d.ts +8 -0
  50. package/src/lib/utils.js +71 -0
  51. package/src/lib/utils.js.map +1 -0
  52. package/vite.config.d.ts +2 -0
  53. package/vite.config.js +19 -0
  54. package/vite.config.js.map +1 -0
@@ -0,0 +1,317 @@
1
+ import * as ts from 'typescript';
2
+ import * as o from '@angular/compiler';
3
+ /** Shared printer — only used as fallback for complex WrappedNodeExpr (e.g. decorator args). */
4
+ const sharedPrinter = ts.createPrinter({ removeComments: true });
5
+ const emptySourceFile = ts.createSourceFile('_.ts', '', ts.ScriptTarget.Latest, false);
6
+ const BINARY_OP_STR = {
7
+ [o.BinaryOperator.Equals]: '==',
8
+ [o.BinaryOperator.NotEquals]: '!=',
9
+ [o.BinaryOperator.Assign]: '=',
10
+ [o.BinaryOperator.Identical]: '===',
11
+ [o.BinaryOperator.NotIdentical]: '!==',
12
+ [o.BinaryOperator.Minus]: '-',
13
+ [o.BinaryOperator.Plus]: '+',
14
+ [o.BinaryOperator.Divide]: '/',
15
+ [o.BinaryOperator.Multiply]: '*',
16
+ [o.BinaryOperator.Modulo]: '%',
17
+ [o.BinaryOperator.And]: '&&',
18
+ [o.BinaryOperator.Or]: '||',
19
+ [o.BinaryOperator.BitwiseOr]: '|',
20
+ [o.BinaryOperator.BitwiseAnd]: '&',
21
+ [o.BinaryOperator.Lower]: '<',
22
+ [o.BinaryOperator.LowerEquals]: '<=',
23
+ [o.BinaryOperator.Bigger]: '>',
24
+ [o.BinaryOperator.BiggerEquals]: '>=',
25
+ [o.BinaryOperator.NullishCoalesce]: '??',
26
+ [o.BinaryOperator.Exponentiation]: '**',
27
+ [o.BinaryOperator.In]: 'in',
28
+ [o.BinaryOperator.InstanceOf]: 'instanceof',
29
+ [o.BinaryOperator.AdditionAssignment]: '+=',
30
+ [o.BinaryOperator.SubtractionAssignment]: '-=',
31
+ [o.BinaryOperator.MultiplicationAssignment]: '*=',
32
+ [o.BinaryOperator.DivisionAssignment]: '/=',
33
+ [o.BinaryOperator.RemainderAssignment]: '%=',
34
+ [o.BinaryOperator.ExponentiationAssignment]: '**=',
35
+ [o.BinaryOperator.AndAssignment]: '&&=',
36
+ [o.BinaryOperator.OrAssignment]: '||=',
37
+ [o.BinaryOperator.NullishCoalesceAssignment]: '??=',
38
+ };
39
+ /**
40
+ * Emits Angular output AST directly to JavaScript strings, bypassing
41
+ * ts.factory node creation and ts.Printer serialization (~4x faster).
42
+ */
43
+ class JSEmitter {
44
+ /** Set by compile() so WrappedNodeExpr fallback can print with correct source context. */
45
+ static _currentSourceFile;
46
+ emitExpr(e) {
47
+ if (!e)
48
+ return 'null';
49
+ if (typeof e.visitExpression === 'function')
50
+ return e.visitExpression(this, null);
51
+ // Angular v21 LiteralMapPropertyAssignment: {key, value, quoted}
52
+ if ('key' in e && 'value' in e) {
53
+ const key = e.quoted ? JSON.stringify(e.key) : e.key;
54
+ return key + ': ' + this.emitExpr(e.value);
55
+ }
56
+ return 'null';
57
+ }
58
+ visitWrappedNodeExpr(ast) {
59
+ const node = ast.node;
60
+ if (node.kind === ts.SyntaxKind.Identifier)
61
+ return node.escapedText;
62
+ if (node.kind === ts.SyntaxKind.StringLiteral)
63
+ return JSON.stringify(node.text);
64
+ if (node.kind === ts.SyntaxKind.NumericLiteral)
65
+ return node.text;
66
+ if (node.kind === ts.SyntaxKind.TrueKeyword)
67
+ return 'true';
68
+ if (node.kind === ts.SyntaxKind.FalseKeyword)
69
+ return 'false';
70
+ if (node.kind === ts.SyntaxKind.NullKeyword)
71
+ return 'null';
72
+ if (node.kind === ts.SyntaxKind.NoSubstitutionTemplateLiteral)
73
+ return '`' + node.text + '`';
74
+ // Fallback for complex wrapped nodes (e.g. decorator arguments, array literals).
75
+ // Use currentSourceFile when available for correct position-based printing.
76
+ return sharedPrinter.printNode(ts.EmitHint.Unspecified, node, JSEmitter._currentSourceFile || emptySourceFile);
77
+ }
78
+ visitExternalExpr(ast) {
79
+ const name = ast.value.name;
80
+ if (name === 'ngDevMode')
81
+ return name;
82
+ return 'i0.' + name;
83
+ }
84
+ visitLiteralExpr(ast) {
85
+ const v = ast.value;
86
+ if (typeof v === 'string')
87
+ return JSON.stringify(v);
88
+ if (typeof v === 'number')
89
+ return v < 0 ? '(-' + -v + ')' : '' + v;
90
+ if (typeof v === 'boolean')
91
+ return v ? 'true' : 'false';
92
+ if (v === undefined)
93
+ return 'void 0';
94
+ return 'null';
95
+ }
96
+ visitLiteralArrayExpr(ast) {
97
+ return '[' + ast.entries.map((e) => this.emitExpr(e)).join(', ') + ']';
98
+ }
99
+ visitLiteralMapExpr(ast) {
100
+ return '{' + ast.entries.map((e) => this.emitExpr(e)).join(', ') + '}';
101
+ }
102
+ visitInvokeFunctionExpr(ast) {
103
+ const fn = ast.fn.visitExpression(this, null);
104
+ const args = ast.args
105
+ .map((a) => a.visitExpression(this, null))
106
+ .join(', ');
107
+ // Wrap arrow/function expressions in parens for valid IIFE syntax
108
+ if (ast.fn instanceof o.ArrowFunctionExpr ||
109
+ ast.fn instanceof o.FunctionExpr) {
110
+ return '(' + fn + ')(' + args + ')';
111
+ }
112
+ return fn + '(' + args + ')';
113
+ }
114
+ visitReadVarExpr(ast) {
115
+ if (ast.name === 'this')
116
+ return 'this';
117
+ if (ast.name === 'super')
118
+ return 'super';
119
+ return ast.name;
120
+ }
121
+ visitReadPropExpr(ast) {
122
+ return ast.receiver.visitExpression(this, null) + '.' + ast.name;
123
+ }
124
+ visitReadKeyExpr(ast) {
125
+ return (ast.receiver.visitExpression(this, null) +
126
+ '[' +
127
+ ast.index.visitExpression(this, null) +
128
+ ']');
129
+ }
130
+ visitConditionalExpr(ast) {
131
+ return ('(' +
132
+ ast.condition.visitExpression(this, null) +
133
+ ' ? ' +
134
+ ast.trueCase.visitExpression(this, null) +
135
+ ' : ' +
136
+ ast.falseCase.visitExpression(this, null) +
137
+ ')');
138
+ }
139
+ visitBinaryOperatorExpr(ast) {
140
+ const op = BINARY_OP_STR[ast.operator] || '=';
141
+ const expr = ast.lhs.visitExpression(this, null) +
142
+ ' ' +
143
+ op +
144
+ ' ' +
145
+ ast.rhs.visitExpression(this, null);
146
+ // Wrap assignments in parens so they work correctly as ternary conditions:
147
+ // (tmp = val) ? a : b vs tmp = val ? a : b
148
+ if (ast.operator === o.BinaryOperator.Assign) {
149
+ return '(' + expr + ')';
150
+ }
151
+ return expr;
152
+ }
153
+ visitNotExpr(ast) {
154
+ return '!(' + ast.condition.visitExpression(this, null) + ')';
155
+ }
156
+ visitFunctionExpr(ast) {
157
+ return ('(' +
158
+ ast.params.map((p) => p.name).join(', ') +
159
+ ') => {' +
160
+ ast.statements.map((s) => s.visitStatement(this, null)).join(' ') +
161
+ '}');
162
+ }
163
+ visitArrowFunctionExpr(ast) {
164
+ const params = '(' + ast.params.map((p) => p.name).join(', ') + ')';
165
+ if (Array.isArray(ast.body))
166
+ return (params +
167
+ ' => {' +
168
+ ast.body.map((s) => s.visitStatement(this, null)).join(' ') +
169
+ '}');
170
+ const bodyExpr = ast.body.visitExpression(this, null);
171
+ // Wrap object literals in parens so `() => {key: val}` isn't parsed
172
+ // as a block with a labeled statement.
173
+ if (ast.body instanceof o.LiteralMapExpr) {
174
+ return params + ' => (' + bodyExpr + ')';
175
+ }
176
+ return params + ' => ' + bodyExpr;
177
+ }
178
+ visitWriteVarExpr(ast) {
179
+ return ast.name + ' = ' + ast.value.visitExpression(this, null);
180
+ }
181
+ visitWritePropExpr(ast) {
182
+ return (ast.receiver.visitExpression(this, null) +
183
+ '.' +
184
+ ast.name +
185
+ ' = ' +
186
+ ast.value.visitExpression(this, null));
187
+ }
188
+ visitWriteKeyExpr(ast) {
189
+ return (ast.receiver.visitExpression(this, null) +
190
+ '[' +
191
+ ast.index.visitExpression(this, null) +
192
+ '] = ' +
193
+ ast.value.visitExpression(this, null));
194
+ }
195
+ visitInvokeMethodExpr(ast) {
196
+ return (ast.receiver.visitExpression(this, null) +
197
+ '.' +
198
+ ast.name +
199
+ '(' +
200
+ ast.args.map((a) => a.visitExpression(this, null)).join(', ') +
201
+ ')');
202
+ }
203
+ visitTypeofExpr(ast) {
204
+ return 'typeof ' + ast.expr.visitExpression(this, null);
205
+ }
206
+ visitUnaryOperatorExpr(ast) {
207
+ return '-(' + ast.expr.visitExpression(this, null) + ')';
208
+ }
209
+ visitInstantiateExpr(ast) {
210
+ return ('new (' +
211
+ ast.classExpr.visitExpression(this, null) +
212
+ ')(' +
213
+ ast.args.map((a) => a.visitExpression(this, null)).join(', ') +
214
+ ')');
215
+ }
216
+ visitCommaExpr(ast) {
217
+ return ast.parts.map((p) => p.visitExpression(this, null)).join(', ');
218
+ }
219
+ visitParenthesizedExpr(ast) {
220
+ return '(' + ast.expr.visitExpression(this, null) + ')';
221
+ }
222
+ visitVoidExpr(ast) {
223
+ return 'void ' + ast.expr.visitExpression(this, null);
224
+ }
225
+ visitSpreadElementExpr(ast) {
226
+ return '...' + ast.expression.visitExpression(this, null);
227
+ }
228
+ visitDynamicImportExpr(ast) {
229
+ return ('import(' +
230
+ (typeof ast.url === 'string'
231
+ ? JSON.stringify(ast.url)
232
+ : ast.url.visitExpression(this, null)) +
233
+ ')');
234
+ }
235
+ visitTemplateLiteralExpr(ast) {
236
+ return ('`' +
237
+ ast.elements[0].text +
238
+ ast.expressions
239
+ .map((e, i) => '${' +
240
+ e.visitExpression(this, null) +
241
+ '}' +
242
+ ast.elements[i + 1].text)
243
+ .join('') +
244
+ '`');
245
+ }
246
+ visitTaggedTemplateLiteralExpr(ast) {
247
+ const elements = ast.template.elements;
248
+ const expressions = ast.template.expressions;
249
+ const head = elements[0].text;
250
+ const spans = expressions
251
+ .map((e, i) => '${' + e.visitExpression(this, null) + '}' + elements[i + 1].text)
252
+ .join('');
253
+ return ast.tag.visitExpression(this, null) + '`' + head + spans + '`';
254
+ }
255
+ visitLocalizedString() {
256
+ throw new Error('i18n not supported');
257
+ }
258
+ visitRegularExpressionLiteral(ast) {
259
+ return '/' + (ast.body ?? ast.pattern) + '/' + ast.flags;
260
+ }
261
+ visitTemplateLiteralElementExpr(ast) {
262
+ return JSON.stringify(ast.text);
263
+ }
264
+ // Statement visitors
265
+ visitReturnStmt(stmt) {
266
+ return 'return ' + stmt.value.visitExpression(this, null) + ';';
267
+ }
268
+ visitExpressionStmt(stmt) {
269
+ return stmt.expr.visitExpression(this, null) + ';';
270
+ }
271
+ visitIfStmt(stmt) {
272
+ let s = 'if (' +
273
+ stmt.condition.visitExpression(this, null) +
274
+ ') {' +
275
+ stmt.trueCase.map((s2) => s2.visitStatement(this, null)).join(' ') +
276
+ '}';
277
+ if (stmt.falseCase.length)
278
+ s +=
279
+ ' else {' +
280
+ stmt.falseCase
281
+ .map((s2) => s2.visitStatement(this, null))
282
+ .join(' ') +
283
+ '}';
284
+ return s;
285
+ }
286
+ visitDeclareVarStmt(stmt) {
287
+ const kw = stmt.hasModifier(o.StmtModifier.Final) ? 'const' : 'let';
288
+ return (kw +
289
+ ' ' +
290
+ stmt.name +
291
+ (stmt.value ? ' = ' + stmt.value.visitExpression(this, null) : '') +
292
+ ';');
293
+ }
294
+ visitDeclareFunctionStmt(stmt) {
295
+ return ('function ' +
296
+ stmt.name +
297
+ '(' +
298
+ stmt.params.map((p) => p.name).join(', ') +
299
+ ') {' +
300
+ stmt.statements.map((s) => s.visitStatement(this, null)).join(' ') +
301
+ '}');
302
+ }
303
+ }
304
+ const stringEmitter = new JSEmitter();
305
+ /** Emit Angular output AST expression directly to a JavaScript string. */
306
+ export function emitAngularExpr(expr) {
307
+ return expr.visitExpression(stringEmitter, null);
308
+ }
309
+ /** Emit Angular output AST statement directly to a JavaScript string. */
310
+ export function emitAngularStmt(stmt) {
311
+ return stmt.visitStatement(stringEmitter, null);
312
+ }
313
+ /** Set the current source file for WrappedNodeExpr fallback printing. */
314
+ export function setEmitterSourceFile(sf) {
315
+ JSEmitter._currentSourceFile = sf;
316
+ }
317
+ //# sourceMappingURL=js-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-emitter.js","sourceRoot":"","sources":["../../../../../packages/angular-compiler/src/lib/js-emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import * as ts from 'typescript';
2
+ /**
3
+ * Extract decorator metadata from an Angular decorator AST node.
4
+ * Parses @Component, @Directive, @Pipe, @Injectable, @NgModule arguments.
5
+ */
6
+ export declare function extractMetadata(dec: ts.Decorator | undefined): any;
7
+ /**
8
+ * Detect signal-based APIs on class members: input(), model(), output(),
9
+ * viewChild(), contentChild(), viewChildren(), contentChildren().
10
+ */
11
+ export declare function detectSignals(node: ts.ClassDeclaration): {
12
+ inputs: any;
13
+ outputs: any;
14
+ viewQueries: any[];
15
+ contentQueries: any[];
16
+ };
17
+ /**
18
+ * Detect decorator-based field metadata: @Input, @Output, @ViewChild,
19
+ * @ContentChild, @ViewChildren, @ContentChildren, @HostBinding, @HostListener.
20
+ */
21
+ export declare function detectFieldDecorators(node: ts.ClassDeclaration): {
22
+ inputs: any;
23
+ outputs: any;
24
+ viewQueries: any[];
25
+ contentQueries: any[];
26
+ hostProperties: Record<string, string>;
27
+ hostListeners: Record<string, string>;
28
+ };
29
+ /**
30
+ * Analyze constructor parameters for dependency injection.
31
+ * Returns:
32
+ * - R3DependencyMetadata[] for normal constructors
33
+ * - null if class extends another without own constructor (use inherited factory)
34
+ * - 'invalid' if any parameter has a type-only import token
35
+ */
36
+ export declare function extractConstructorDeps(node: ts.ClassDeclaration, typeOnlyImports: Set<string>): any[] | 'invalid' | null;