@analogjs/vite-plugin-angular 0.2.30-beta.2 → 0.2.30-beta.4
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 +1 -1
- package/src/lib/authoring/ng.js +57 -43
- package/src/lib/authoring/ng.js.map +1 -1
package/package.json
CHANGED
package/src/lib/authoring/ng.js
CHANGED
|
@@ -6,6 +6,7 @@ const SCRIPT_TAG_REGEX = /<script lang="ts">([\s\S]*?)<\/script>/i;
|
|
|
6
6
|
const TEMPLATE_TAG_REGEX = /<template>([\s\S]*?)<\/template>/i;
|
|
7
7
|
const STYLE_TAG_REGEX = /<style>([\s\S]*?)<\/style>/i;
|
|
8
8
|
const ON_INIT = 'onInit';
|
|
9
|
+
const ON_DESTROY = 'onDestroy';
|
|
9
10
|
function processNgFile(fileName, content, isProd = false) {
|
|
10
11
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
11
12
|
const { names } = require('@nx/devkit');
|
|
@@ -20,18 +21,24 @@ function processNgFile(fileName, content, isProd = false) {
|
|
|
20
21
|
TEMPLATE_TAG_REGEX.exec(content)?.pop()?.trim() || '',
|
|
21
22
|
STYLE_TAG_REGEX.exec(content)?.pop()?.trim() || '',
|
|
22
23
|
];
|
|
24
|
+
if (!scriptContent && !templateContent) {
|
|
25
|
+
throw new Error(`[Analog] Either <script> or <template> must exist in ${fileName}`);
|
|
26
|
+
}
|
|
27
|
+
const ngType = templateContent ? 'Component' : 'Directive';
|
|
23
28
|
if (styleContent) {
|
|
24
29
|
templateContent = `<style>${styleContent.replace(/\n/g, '')}</style>
|
|
25
30
|
${templateContent}`;
|
|
26
31
|
}
|
|
27
32
|
const source = `
|
|
28
|
-
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
33
|
+
import { ${ngType}${ngType === 'Component' ? ', ChangeDetectionStrategy' : ''} } from '@angular/core';
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
@${ngType}({
|
|
31
36
|
standalone: true,
|
|
32
37
|
selector: '${componentFileName},${className},${constantName}',
|
|
33
|
-
|
|
34
|
-
|
|
38
|
+
${ngType === 'Component'
|
|
39
|
+
? `changeDetection: ChangeDetectionStrategy.OnPush,
|
|
40
|
+
template: \`${templateContent}\``
|
|
41
|
+
: ''}
|
|
35
42
|
})
|
|
36
43
|
export default class AnalogNgEntity {
|
|
37
44
|
constructor() {}
|
|
@@ -41,12 +48,12 @@ export default class AnalogNgEntity {
|
|
|
41
48
|
const project = new ts_morph_1.Project({ useInMemoryFileSystem: true });
|
|
42
49
|
project.createSourceFile(fileName, scriptContent);
|
|
43
50
|
project.createSourceFile(`${fileName}.virtual.ts`, source);
|
|
44
|
-
return processNgScript(fileName, project, isProd);
|
|
51
|
+
return processNgScript(fileName, project, ngType, isProd);
|
|
45
52
|
}
|
|
46
53
|
return source;
|
|
47
54
|
}
|
|
48
55
|
exports.processNgFile = processNgFile;
|
|
49
|
-
function processNgScript(fileName, project, isProd) {
|
|
56
|
+
function processNgScript(fileName, project, ngType, isProd) {
|
|
50
57
|
const ngSourceFile = project.getSourceFile(fileName);
|
|
51
58
|
const targetSourceFile = project.getSourceFile(`${fileName}.virtual.ts`);
|
|
52
59
|
if (!ngSourceFile || !targetSourceFile) {
|
|
@@ -56,11 +63,11 @@ function processNgScript(fileName, project, isProd) {
|
|
|
56
63
|
if (!targetClass) {
|
|
57
64
|
throw new Error(`[Analog] Missing class ${fileName}`);
|
|
58
65
|
}
|
|
59
|
-
const targetMetadata = targetClass.getDecorator(
|
|
66
|
+
const targetMetadata = targetClass.getDecorator(ngType);
|
|
60
67
|
if (!targetMetadata) {
|
|
61
68
|
throw new Error(`[Analog] Missing metadata ${fileName}`);
|
|
62
69
|
}
|
|
63
|
-
|
|
70
|
+
const targetMetadataArguments = targetMetadata.getArguments()[0];
|
|
64
71
|
if (!ts_morph_1.Node.isObjectLiteralExpression(targetMetadataArguments)) {
|
|
65
72
|
throw new Error(`[Analog] invalid metadata arguments ${fileName}`);
|
|
66
73
|
}
|
|
@@ -69,7 +76,6 @@ function processNgScript(fileName, project, isProd) {
|
|
|
69
76
|
if (!ts_morph_1.Node.isBlock(targetConstructorBody)) {
|
|
70
77
|
throw new Error(`[Analog] invalid constructor body ${fileName}`);
|
|
71
78
|
}
|
|
72
|
-
let ngType = 'Component';
|
|
73
79
|
const declarations = [];
|
|
74
80
|
ngSourceFile.forEachChild((node) => {
|
|
75
81
|
// for ImportDeclaration (e.g: import ... from ...)
|
|
@@ -84,21 +90,32 @@ function processNgScript(fileName, project, isProd) {
|
|
|
84
90
|
}
|
|
85
91
|
// for VariableStatement (e.g: const ... = ...)
|
|
86
92
|
if (ts_morph_1.Node.isVariableStatement(node)) {
|
|
93
|
+
// NOTE: we do not support multiple declarations (i.e: const a, b, c)
|
|
87
94
|
const declarations = node.getDeclarations();
|
|
88
95
|
const declaration = declarations[0];
|
|
89
96
|
const initializer = declaration.getInitializer();
|
|
90
97
|
if (initializer) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
const declarationNameNode = declaration.getNameNode();
|
|
99
|
+
// destructures
|
|
100
|
+
if (ts_morph_1.Node.isArrayBindingPattern(declarationNameNode) ||
|
|
101
|
+
ts_morph_1.Node.isObjectBindingPattern(declarationNameNode)) {
|
|
102
|
+
targetConstructor.addStatements(node.getText());
|
|
103
|
+
const bindingElements = declarationNameNode.getDescendantsOfKind(ts_morph_1.SyntaxKind.BindingElement);
|
|
104
|
+
for (const bindingElement of bindingElements) {
|
|
105
|
+
const bindingElementName = bindingElement.getName();
|
|
106
|
+
targetClass.addProperty({
|
|
107
|
+
name: bindingElementName,
|
|
108
|
+
kind: ts_morph_1.StructureKind.Property,
|
|
109
|
+
scope: ts_morph_1.Scope.Protected,
|
|
110
|
+
});
|
|
111
|
+
targetConstructor.addStatements(`this.${bindingElementName} = ${bindingElementName};`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
addPropertyToClass(targetClass, targetConstructor, declaration.getName(), initializer, () => {
|
|
116
|
+
targetConstructor.addStatements(node.getText());
|
|
100
117
|
});
|
|
101
|
-
}
|
|
118
|
+
}
|
|
102
119
|
}
|
|
103
120
|
}
|
|
104
121
|
if (ts_morph_1.Node.isFunctionDeclaration(node)) {
|
|
@@ -119,31 +136,14 @@ function processNgScript(fileName, project, isProd) {
|
|
|
119
136
|
if (ts_morph_1.Node.isCallExpression(expression)) {
|
|
120
137
|
// hooks, effects, basically Function calls
|
|
121
138
|
const functionName = expression.getExpression().getText();
|
|
122
|
-
if (functionName
|
|
123
|
-
functionName.startsWith('define')) {
|
|
124
|
-
ngType = functionName
|
|
125
|
-
.replace('define', '')
|
|
126
|
-
.replace('Metadata', '');
|
|
139
|
+
if (functionName === 'defineMetadata') {
|
|
127
140
|
const metadata = expression.getArguments()[0];
|
|
128
|
-
|
|
129
|
-
if (ngType !== 'Component') {
|
|
130
|
-
targetMetadata.setExpression(ngType);
|
|
131
|
-
targetMetadata.addArgument(`{standalone: true}`);
|
|
132
|
-
targetMetadataArguments =
|
|
133
|
-
targetMetadata.getArguments()[0];
|
|
134
|
-
// add type import
|
|
135
|
-
targetSourceFile.addImportDeclaration({
|
|
136
|
-
moduleSpecifier: '@angular/core',
|
|
137
|
-
namedImports: [{ name: ngType }],
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
// process the metadata
|
|
141
|
-
processMetadata(metadata, targetMetadataArguments);
|
|
141
|
+
processMetadata(metadata, targetMetadataArguments, targetClass);
|
|
142
142
|
}
|
|
143
|
-
else if (functionName === ON_INIT) {
|
|
143
|
+
else if (functionName === ON_INIT || functionName === ON_DESTROY) {
|
|
144
144
|
const initFunction = expression.getArguments()[0];
|
|
145
145
|
if (ts_morph_1.Node.isArrowFunction(initFunction)) {
|
|
146
|
-
addPropertyToClass(targetClass, targetConstructor,
|
|
146
|
+
addPropertyToClass(targetClass, targetConstructor, functionName, initFunction, (propertyName, propertyInitializer) => {
|
|
147
147
|
targetConstructor.addFunction({
|
|
148
148
|
name: propertyName,
|
|
149
149
|
statements: propertyInitializer
|
|
@@ -151,7 +151,7 @@ function processNgScript(fileName, project, isProd) {
|
|
|
151
151
|
.map((statement) => statement.getText()),
|
|
152
152
|
});
|
|
153
153
|
targetClass.addMethod({
|
|
154
|
-
name: 'ngOnInit',
|
|
154
|
+
name: functionName === ON_INIT ? 'ngOnInit' : 'ngOnDestroy',
|
|
155
155
|
statements: `this.${propertyName}();`,
|
|
156
156
|
});
|
|
157
157
|
});
|
|
@@ -184,7 +184,7 @@ function processNgScript(fileName, project, isProd) {
|
|
|
184
184
|
}
|
|
185
185
|
return targetSourceFile.getText();
|
|
186
186
|
}
|
|
187
|
-
function processMetadata(metadataObject, targetMetadataArguments) {
|
|
187
|
+
function processMetadata(metadataObject, targetMetadataArguments, targetClass) {
|
|
188
188
|
metadataObject.getPropertiesWithComments().forEach((property) => {
|
|
189
189
|
if (ts_morph_1.Node.isPropertyAssignment(property)) {
|
|
190
190
|
const propertyName = property.getName();
|
|
@@ -199,7 +199,21 @@ function processMetadata(metadataObject, targetMetadataArguments) {
|
|
|
199
199
|
initializer: propertyInitializer.getText(),
|
|
200
200
|
});
|
|
201
201
|
}
|
|
202
|
-
else if (propertyName) {
|
|
202
|
+
else if (propertyName === 'exposes') {
|
|
203
|
+
// for exposes we're going to add the property to the class so they are accessible on the template
|
|
204
|
+
// parse the initializer to get the item in the exposes array
|
|
205
|
+
const exposes = propertyInitializer
|
|
206
|
+
.getText()
|
|
207
|
+
.replace(/[[\]]/g, '')
|
|
208
|
+
.split(',')
|
|
209
|
+
.map((item) => ({
|
|
210
|
+
name: item.trim(),
|
|
211
|
+
initializer: item.trim(),
|
|
212
|
+
scope: ts_morph_1.Scope.Protected,
|
|
213
|
+
}));
|
|
214
|
+
targetClass.addProperties(exposes);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
203
217
|
targetMetadataArguments.addPropertyAssignment({
|
|
204
218
|
name: propertyName,
|
|
205
219
|
initializer: propertyInitializer.getText(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-angular/src/lib/authoring/ng.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"ng.js","sourceRoot":"","sources":["../../../../../../packages/vite-plugin-angular/src/lib/authoring/ng.ts"],"names":[],"mappings":"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"}
|