@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,465 @@
1
+ import * as ts from 'typescript';
2
+ import * as o from '@angular/compiler';
3
+ import { unwrapForwardRef } from './utils.js';
4
+ function getCallApi(call) {
5
+ const expr = call.expression;
6
+ if (ts.isIdentifier(expr)) {
7
+ return { api: expr.text, required: false };
8
+ }
9
+ if (ts.isPropertyAccessExpression(expr) &&
10
+ ts.isIdentifier(expr.expression) &&
11
+ expr.name.text === 'required') {
12
+ return { api: expr.expression.text, required: true };
13
+ }
14
+ return null;
15
+ }
16
+ /**
17
+ * Extract decorator metadata from an Angular decorator AST node.
18
+ * Parses @Component, @Directive, @Pipe, @Injectable, @NgModule arguments.
19
+ */
20
+ export function extractMetadata(dec) {
21
+ if (!dec)
22
+ return null;
23
+ const call = dec.expression;
24
+ const obj = call.arguments[0];
25
+ const meta = {
26
+ hostRaw: {},
27
+ inputs: {},
28
+ outputs: {},
29
+ standalone: true,
30
+ imports: [],
31
+ providers: null,
32
+ viewProviders: null,
33
+ animations: null,
34
+ changeDetection: 1,
35
+ encapsulation: 0,
36
+ preserveWhitespaces: false,
37
+ exportAs: null,
38
+ selector: undefined,
39
+ styles: [],
40
+ templateUrl: null,
41
+ styleUrls: [],
42
+ };
43
+ if (!obj)
44
+ return meta;
45
+ obj.properties.forEach((p) => {
46
+ if (!ts.isPropertyAssignment(p))
47
+ return;
48
+ const key = p.name.getText().replace(/['"`]/g, ''), valNode = p.initializer, valText = valNode.getText();
49
+ switch (key) {
50
+ case 'host':
51
+ if (ts.isObjectLiteralExpression(valNode))
52
+ valNode.properties.forEach((hp) => {
53
+ if (ts.isPropertyAssignment(hp))
54
+ meta.hostRaw[hp.name.getText().replace(/['"`]/g, '')] =
55
+ hp.initializer.getText().replace(/['"`]/g, '');
56
+ });
57
+ break;
58
+ case 'changeDetection':
59
+ meta.changeDetection = valText.includes('OnPush') ? 0 : 1;
60
+ break;
61
+ case 'encapsulation':
62
+ meta.encapsulation = valText.includes('None')
63
+ ? 2
64
+ : valText.includes('ShadowDom')
65
+ ? 3
66
+ : 0;
67
+ break;
68
+ case 'preserveWhitespaces':
69
+ meta.preserveWhitespaces = valText === 'true';
70
+ break;
71
+ case 'pure':
72
+ case 'standalone':
73
+ meta[key] = valText !== 'false';
74
+ break;
75
+ case 'template':
76
+ case 'selector':
77
+ case 'name':
78
+ case 'exportAs':
79
+ case 'templateUrl':
80
+ case 'providedIn':
81
+ // Extract the actual string content, preserving internal quotes
82
+ if (ts.isStringLiteral(valNode) ||
83
+ ts.isNoSubstitutionTemplateLiteral(valNode)) {
84
+ meta[key] = valNode.text;
85
+ }
86
+ else {
87
+ meta[key] = valText.replace(/['"`]/g, '');
88
+ }
89
+ if (key === 'exportAs')
90
+ meta.exportAs = [meta.exportAs];
91
+ break;
92
+ case 'styleUrl':
93
+ // Angular supports singular styleUrl as shorthand
94
+ if (ts.isStringLiteral(valNode) ||
95
+ ts.isNoSubstitutionTemplateLiteral(valNode)) {
96
+ meta.styleUrls = [valNode.text];
97
+ }
98
+ else {
99
+ meta.styleUrls = [valText.replace(/['"`]/g, '')];
100
+ }
101
+ break;
102
+ case 'styleUrls':
103
+ if (ts.isArrayLiteralExpression(valNode))
104
+ meta.styleUrls = valNode.elements.map((e) => ts.isStringLiteral(e) ? e.text : e.getText().replace(/['"`]/g, ''));
105
+ break;
106
+ case 'styles':
107
+ if (ts.isArrayLiteralExpression(valNode)) {
108
+ meta.styles = valNode.elements.map((e) => ts.isStringLiteral(e) || ts.isNoSubstitutionTemplateLiteral(e)
109
+ ? e.text
110
+ : e.getText().replace(/['"`]/g, ''));
111
+ }
112
+ else if (ts.isStringLiteral(valNode) ||
113
+ ts.isNoSubstitutionTemplateLiteral(valNode)) {
114
+ // Angular supports singular styles as a string
115
+ meta.styles = [valNode.text];
116
+ }
117
+ break;
118
+ case 'imports':
119
+ case 'providers':
120
+ case 'viewProviders':
121
+ case 'animations':
122
+ case 'rawImports':
123
+ case 'declarations':
124
+ case 'exports':
125
+ case 'bootstrap':
126
+ if (ts.isArrayLiteralExpression(valNode))
127
+ meta[key] = valNode.elements.map((e) => new o.WrappedNodeExpr(unwrapForwardRef(e)));
128
+ break;
129
+ default:
130
+ meta[key] = valText.replace(/['"`]/g, '');
131
+ }
132
+ });
133
+ return meta;
134
+ }
135
+ /**
136
+ * Detect signal-based APIs on class members: input(), model(), output(),
137
+ * viewChild(), contentChild(), viewChildren(), contentChildren().
138
+ */
139
+ export function detectSignals(node) {
140
+ const inputs = {}, outputs = {}, viewQueries = [], contentQueries = [];
141
+ node.members.forEach((m) => {
142
+ if (ts.isPropertyDeclaration(m) &&
143
+ m.initializer &&
144
+ ts.isCallExpression(m.initializer)) {
145
+ const name = m.name.getText();
146
+ const signalCall = getCallApi(m.initializer);
147
+ if (!signalCall)
148
+ return;
149
+ const { api, required } = signalCall;
150
+ // 1. SIGNAL INPUTS (Standard & Required)
151
+ if (api === 'input') {
152
+ // Extract transform from options: input(val, { transform }) or input.required({ transform })
153
+ let transform = null;
154
+ const optionsArg = required
155
+ ? m.initializer.arguments[0]
156
+ : m.initializer.arguments[1];
157
+ if (optionsArg && ts.isObjectLiteralExpression(optionsArg)) {
158
+ for (const prop of optionsArg.properties) {
159
+ if (ts.isPropertyAssignment(prop) &&
160
+ prop.name.getText() === 'transform') {
161
+ transform = new o.WrappedNodeExpr(prop.initializer);
162
+ }
163
+ }
164
+ }
165
+ inputs[name] = {
166
+ classPropertyName: name,
167
+ bindingPropertyName: name,
168
+ isSignal: true,
169
+ required,
170
+ transform,
171
+ };
172
+ }
173
+ // 2. MODEL SIGNALS (Writable Inputs)
174
+ else if (api === 'model') {
175
+ // Models are signals (flag 3) and generate an automatic output
176
+ inputs[name] = {
177
+ classPropertyName: name,
178
+ bindingPropertyName: name,
179
+ isSignal: true,
180
+ };
181
+ outputs[name + 'Change'] = name + 'Change';
182
+ }
183
+ // 3. SIGNAL QUERIES (viewChild, contentChild)
184
+ else if (api === 'viewChild' ||
185
+ api === 'viewChildren' ||
186
+ api === 'contentChild' ||
187
+ api === 'contentChildren') {
188
+ const isSignalQuery = true;
189
+ const isViewQuery = api === 'viewChild' || api === 'viewChildren';
190
+ const isChildrenQuery = api === 'viewChildren' || api === 'contentChildren';
191
+ const query = {
192
+ propertyName: name,
193
+ predicate: ts.isStringLiteral(m.initializer.arguments[0])
194
+ ? [m.initializer.arguments[0].text]
195
+ : new o.WrappedNodeExpr(m.initializer.arguments[0]),
196
+ first: !isChildrenQuery,
197
+ descendants: true,
198
+ read: null,
199
+ static: false,
200
+ emitFlags: 0,
201
+ isSignal: isSignalQuery, // Critical for v21 query reactivity
202
+ };
203
+ if (isViewQuery)
204
+ viewQueries.push(query);
205
+ else
206
+ contentQueries.push(query);
207
+ }
208
+ // 4. STANDARD OUTPUTS (output() and outputFromObservable())
209
+ else if (api === 'output' || api === 'outputFromObservable') {
210
+ // Extract alias from options: output({alias: 'publicName'})
211
+ let alias = name;
212
+ const optArg = m.initializer.arguments[0];
213
+ if (optArg && ts.isObjectLiteralExpression(optArg)) {
214
+ for (const prop of optArg.properties) {
215
+ if (ts.isPropertyAssignment(prop) &&
216
+ prop.name.getText() === 'alias' &&
217
+ ts.isStringLiteral(prop.initializer)) {
218
+ alias = prop.initializer.text;
219
+ }
220
+ }
221
+ }
222
+ outputs[name] = alias;
223
+ }
224
+ }
225
+ });
226
+ return { inputs, outputs, viewQueries, contentQueries };
227
+ }
228
+ /**
229
+ * Detect decorator-based field metadata: @Input, @Output, @ViewChild,
230
+ * @ContentChild, @ViewChildren, @ContentChildren, @HostBinding, @HostListener.
231
+ */
232
+ export function detectFieldDecorators(node) {
233
+ const inputs = {};
234
+ const outputs = {};
235
+ const viewQueries = [];
236
+ const contentQueries = [];
237
+ const hostProperties = {};
238
+ const hostListeners = {};
239
+ for (const member of node.members) {
240
+ const decorators = ts.getDecorators(member);
241
+ if (!decorators)
242
+ continue;
243
+ const memberName = member.name?.getText() || '';
244
+ for (const dec of decorators) {
245
+ if (!ts.isCallExpression(dec.expression))
246
+ continue;
247
+ const decName = dec.expression.expression.getText();
248
+ const args = dec.expression.arguments;
249
+ switch (decName) {
250
+ case 'Input': {
251
+ let bindingName = memberName;
252
+ let required = false;
253
+ let transformFunction = null;
254
+ if (args.length > 0) {
255
+ const arg = args[0];
256
+ if (ts.isStringLiteral(arg)) {
257
+ bindingName = arg.text;
258
+ }
259
+ else if (ts.isObjectLiteralExpression(arg)) {
260
+ for (const prop of arg.properties) {
261
+ if (!ts.isPropertyAssignment(prop))
262
+ continue;
263
+ const key = prop.name.getText();
264
+ if (key === 'alias' && ts.isStringLiteral(prop.initializer))
265
+ bindingName = prop.initializer.text;
266
+ if (key === 'required')
267
+ required = prop.initializer.getText() === 'true';
268
+ if (key === 'transform')
269
+ transformFunction = new o.WrappedNodeExpr(prop.initializer);
270
+ }
271
+ }
272
+ }
273
+ inputs[memberName] = {
274
+ classPropertyName: memberName,
275
+ bindingPropertyName: bindingName,
276
+ isSignal: false,
277
+ required,
278
+ transformFunction,
279
+ };
280
+ break;
281
+ }
282
+ case 'Output': {
283
+ const alias = args.length > 0 && ts.isStringLiteral(args[0])
284
+ ? args[0].text
285
+ : memberName;
286
+ outputs[memberName] = alias;
287
+ break;
288
+ }
289
+ case 'ViewChild':
290
+ case 'ViewChildren':
291
+ case 'ContentChild':
292
+ case 'ContentChildren': {
293
+ const isView = decName.startsWith('View');
294
+ const isFirst = decName === 'ViewChild' || decName === 'ContentChild';
295
+ let predicate = memberName;
296
+ if (args.length > 0) {
297
+ const pred = args[0];
298
+ if (ts.isStringLiteral(pred)) {
299
+ predicate = [pred.text];
300
+ }
301
+ else {
302
+ predicate = new o.WrappedNodeExpr(unwrapForwardRef(pred));
303
+ }
304
+ }
305
+ let read = null;
306
+ let isStatic = false;
307
+ let descendants = isView || isFirst; // ContentChildren defaults to false
308
+ if (args.length > 1 && ts.isObjectLiteralExpression(args[1])) {
309
+ for (const prop of args[1]
310
+ .properties) {
311
+ if (!ts.isPropertyAssignment(prop))
312
+ continue;
313
+ const key = prop.name.getText();
314
+ if (key === 'read')
315
+ read = new o.WrappedNodeExpr(prop.initializer);
316
+ if (key === 'static')
317
+ isStatic = prop.initializer.getText() === 'true';
318
+ if (key === 'descendants')
319
+ descendants = prop.initializer.getText() === 'true';
320
+ }
321
+ }
322
+ const query = {
323
+ propertyName: memberName,
324
+ predicate,
325
+ first: isFirst,
326
+ descendants,
327
+ read,
328
+ static: isStatic,
329
+ emitFlags: 0,
330
+ isSignal: false,
331
+ };
332
+ if (isView)
333
+ viewQueries.push(query);
334
+ else
335
+ contentQueries.push(query);
336
+ break;
337
+ }
338
+ case 'HostBinding': {
339
+ const target = args.length > 0 && ts.isStringLiteral(args[0])
340
+ ? args[0].text
341
+ : memberName;
342
+ hostProperties[target] = memberName;
343
+ break;
344
+ }
345
+ case 'HostListener': {
346
+ if (args.length > 0 && ts.isStringLiteral(args[0])) {
347
+ const event = args[0].text;
348
+ let handler = `${memberName}()`;
349
+ if (args.length > 1 && ts.isArrayLiteralExpression(args[1])) {
350
+ const handlerArgs = args[1].elements
351
+ .filter(ts.isStringLiteral)
352
+ .map((e) => e.text)
353
+ .join(', ');
354
+ handler = `${memberName}(${handlerArgs})`;
355
+ }
356
+ hostListeners[event] = handler;
357
+ }
358
+ break;
359
+ }
360
+ }
361
+ }
362
+ }
363
+ return {
364
+ inputs,
365
+ outputs,
366
+ viewQueries,
367
+ contentQueries,
368
+ hostProperties,
369
+ hostListeners,
370
+ };
371
+ }
372
+ /**
373
+ * Analyze constructor parameters for dependency injection.
374
+ * Returns:
375
+ * - R3DependencyMetadata[] for normal constructors
376
+ * - null if class extends another without own constructor (use inherited factory)
377
+ * - 'invalid' if any parameter has a type-only import token
378
+ */
379
+ export function extractConstructorDeps(node, typeOnlyImports) {
380
+ const hasSuper = node.heritageClauses?.some((h) => h.token === ts.SyntaxKind.ExtendsKeyword);
381
+ const ctor = node.members.find(ts.isConstructorDeclaration);
382
+ if (!ctor) {
383
+ return hasSuper ? null : []; // Inherited factory or zero-arg
384
+ }
385
+ const deps = [];
386
+ let invalid = false;
387
+ for (const param of ctor.parameters) {
388
+ let token = null;
389
+ let attributeNameType = null;
390
+ let host = false, optional = false, self = false, skipSelf = false;
391
+ // Extract type annotation as token
392
+ if (param.type && ts.isTypeReferenceNode(param.type)) {
393
+ token = param.type.typeName.getText();
394
+ }
395
+ else if (param.type && ts.isUnionTypeNode(param.type)) {
396
+ // Handle `Service | null` — find first TypeReference
397
+ for (const t of param.type.types) {
398
+ if (ts.isTypeReferenceNode(t)) {
399
+ token = t.typeName.getText();
400
+ break;
401
+ }
402
+ }
403
+ }
404
+ // Process parameter decorators
405
+ const paramDecorators = ts.getDecorators(param);
406
+ if (paramDecorators) {
407
+ for (const dec of paramDecorators) {
408
+ if (!ts.isCallExpression(dec.expression))
409
+ continue;
410
+ const decName = dec.expression.expression.getText();
411
+ const args = dec.expression.arguments;
412
+ switch (decName) {
413
+ case 'Inject':
414
+ if (args.length > 0) {
415
+ if (ts.isStringLiteral(args[0])) {
416
+ token = args[0].text;
417
+ }
418
+ else {
419
+ token = args[0].getText();
420
+ }
421
+ }
422
+ break;
423
+ case 'Optional':
424
+ optional = true;
425
+ break;
426
+ case 'Self':
427
+ self = true;
428
+ break;
429
+ case 'SkipSelf':
430
+ skipSelf = true;
431
+ break;
432
+ case 'Host':
433
+ host = true;
434
+ break;
435
+ case 'Attribute':
436
+ if (args.length > 0 && ts.isStringLiteral(args[0])) {
437
+ attributeNameType = new o.LiteralExpr(args[0].text);
438
+ token = ''; // Attribute injection has no class token
439
+ }
440
+ break;
441
+ }
442
+ }
443
+ }
444
+ if (!token && !attributeNameType) {
445
+ invalid = true;
446
+ continue;
447
+ }
448
+ if (token && typeOnlyImports.has(token)) {
449
+ invalid = true;
450
+ continue;
451
+ }
452
+ deps.push({
453
+ token: token
454
+ ? new o.WrappedNodeExpr(ts.factory.createIdentifier(token))
455
+ : new o.LiteralExpr(null),
456
+ attributeNameType,
457
+ host,
458
+ optional,
459
+ self,
460
+ skipSelf,
461
+ });
462
+ }
463
+ return invalid ? 'invalid' : deps;
464
+ }
465
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../../packages/angular-compiler/src/lib/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export interface RegistryInput {
2
+ classPropertyName: string;
3
+ bindingPropertyName: string;
4
+ isSignal: boolean;
5
+ required: boolean;
6
+ transform?: any;
7
+ }
8
+ export interface RegistryEntry {
9
+ /** CSS selector for components/directives, pipe name for pipes, class name for NgModules */
10
+ selector: string;
11
+ /** What kind of Angular declaration this is */
12
+ kind: 'component' | 'directive' | 'pipe' | 'ngmodule';
13
+ /** The pipe name (only for pipes) */
14
+ pipeName?: string;
15
+ /** Exported class names (only for NgModules) */
16
+ exports?: string[];
17
+ /** The source file this declaration was found in */
18
+ fileName: string;
19
+ /** The class name */
20
+ className: string;
21
+ /** Input bindings (from signal APIs and @Input decorators) */
22
+ inputs?: Record<string, RegistryInput>;
23
+ /** Output bindings (from signal APIs and @Output decorators) */
24
+ outputs?: Record<string, string>;
25
+ }
26
+ /** Maps class name → registry entry */
27
+ export type ComponentRegistry = Map<string, RegistryEntry>;
28
+ /**
29
+ * Lightweight scan of a TypeScript file to extract Angular decorator metadata
30
+ * without performing full compilation. Uses OXC's native Rust parser for speed.
31
+ */
32
+ export declare function scanFile(code: string, fileName: string): RegistryEntry[];