@analogjs/vite-plugin-angular 2.7.0-beta.7 → 2.7.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/vite-plugin-angular",
3
- "version": "2.7.0-beta.7",
3
+ "version": "2.7.0-beta.8",
4
4
  "description": "Vite Plugin for Angular",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -56,8 +56,7 @@
56
56
  "magic-string": "^0.30.21",
57
57
  "obug": "^2.1.1",
58
58
  "oxc-parser": "^0.121.0",
59
- "tinyglobby": "^0.2.14",
60
- "ts-morph": "^21.0.0"
59
+ "tinyglobby": "^0.2.14"
61
60
  },
62
61
  "builders": "./src/lib/tools/builders.json",
63
62
  "ng-update": {
@@ -1,5 +1,5 @@
1
1
  import { dirname, resolve } from 'node:path';
2
- import { Project, SyntaxKind, } from 'ts-morph';
2
+ import { parseSync } from 'oxc-parser';
3
3
  import { normalizePath } from 'vite';
4
4
  export class StyleUrlsResolver {
5
5
  // These resolvers may be called multiple times during the same
@@ -19,40 +19,84 @@ export class StyleUrlsResolver {
19
19
  return styleUrls;
20
20
  }
21
21
  }
22
- // Shared project so template and style extraction for the same code reuse a
22
+ // Shared memo so template and style extraction for the same code reuse a
23
23
  // single parse. `resolve()` is synchronous, so the last-parse memo cannot be
24
24
  // interleaved by another file's code.
25
- const project = new Project({ useInMemoryFileSystem: true });
26
25
  let lastParsedCode;
27
- let lastParsedProperties = [];
28
- function getPropertyAssignments(code) {
26
+ let lastParsedUrls = { templateUrls: [], styleUrls: [] };
27
+ function getResourceUrls(code) {
29
28
  if (code === lastParsedCode) {
30
- return lastParsedProperties;
29
+ return lastParsedUrls;
31
30
  }
32
- const sourceFile = project.createSourceFile('cmp.ts', code, {
33
- overwrite: true,
34
- });
31
+ const urls = { templateUrls: [], styleUrls: [] };
32
+ // A fixed TypeScript filename keeps decorator parsing independent of the
33
+ // module id, which may carry Vite query suffixes.
34
+ const { program } = parseSync('cmp.ts', code);
35
+ visit(program, urls);
35
36
  lastParsedCode = code;
36
- lastParsedProperties = sourceFile.getDescendantsOfKind(SyntaxKind.PropertyAssignment);
37
- return lastParsedProperties;
37
+ lastParsedUrls = urls;
38
+ return urls;
38
39
  }
39
- function getTextByProperty(name, properties) {
40
- return properties
41
- .filter((property) => property.getName() === name)
42
- .map((property) => property.getInitializer()?.getText().replace(/['"`]/g, ''))
43
- .filter((url) => url !== undefined);
40
+ /** Value of a string literal or a template literal without interpolations. */
41
+ function getStringValue(node) {
42
+ if (node?.type === 'Literal' && typeof node.value === 'string') {
43
+ return node.value;
44
+ }
45
+ if (node?.type === 'TemplateLiteral' && node.quasis?.length === 1) {
46
+ return node.quasis[0].value.cooked ?? node.quasis[0].value.raw;
47
+ }
48
+ return undefined;
49
+ }
50
+ function collectFromObjectExpression(node, urls) {
51
+ for (const property of node.properties ?? []) {
52
+ if (property.type !== 'Property')
53
+ continue;
54
+ const key = property.key?.name ?? property.key?.value;
55
+ const value = property.value;
56
+ if (key === 'templateUrl') {
57
+ const url = getStringValue(value);
58
+ if (url !== undefined)
59
+ urls.templateUrls.push(url);
60
+ }
61
+ else if (key === 'styleUrl') {
62
+ const url = getStringValue(value);
63
+ if (url !== undefined)
64
+ urls.styleUrls.push(url);
65
+ }
66
+ else if (key === 'styleUrls' && value?.type === 'ArrayExpression') {
67
+ for (const element of value.elements) {
68
+ const url = getStringValue(element);
69
+ if (url !== undefined)
70
+ urls.styleUrls.push(url);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ // Object literals holding these properties are not always decorator arguments
76
+ // on a top-level class, so every object expression in the file is inspected.
77
+ function visit(node, urls) {
78
+ // Array holes (`[a, , b]`) are `null` entries in the AST.
79
+ if (!node)
80
+ return;
81
+ if (Array.isArray(node)) {
82
+ for (const element of node)
83
+ visit(element, urls);
84
+ return;
85
+ }
86
+ if (node.type === 'ObjectExpression') {
87
+ collectFromObjectExpression(node, urls);
88
+ }
89
+ for (const key in node) {
90
+ const child = node[key];
91
+ if (child && typeof child === 'object')
92
+ visit(child, urls);
93
+ }
44
94
  }
45
95
  export function getStyleUrls(code) {
46
- const properties = getPropertyAssignments(code);
47
- const styleUrl = getTextByProperty('styleUrl', properties);
48
- const styleUrls = properties
49
- .filter((property) => property.getName() === 'styleUrls')
50
- .map((property) => property.getInitializer())
51
- .flatMap((array) => array.getElements().map((el) => el.getText().replace(/['"`]/g, '')));
52
- return [...styleUrls, ...styleUrl];
96
+ return getResourceUrls(code).styleUrls;
53
97
  }
54
98
  export function getTemplateUrls(code) {
55
- return getTextByProperty('templateUrl', getPropertyAssignments(code));
99
+ return getResourceUrls(code).templateUrls;
56
100
  }
57
101
  export class TemplateUrlsResolver {
58
102
  templateUrlsCache = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"component-resolvers.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-angular/src/lib/component-resolvers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-resolvers.js","sourceRoot":"","sources":["../../../../../packages/vite-plugin-angular/src/lib/component-resolvers.ts"],"names":[],"mappings":"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"}