@lukfel/ng-scaffold 20.0.52 → 20.0.54
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/schematics/ng-add/add-config.d.ts +2 -0
- package/schematics/ng-add/add-config.js +87 -0
- package/schematics/ng-add/add-config.js.map +1 -0
- package/schematics/ng-add/add-module.d.ts +2 -0
- package/schematics/ng-add/add-module.js +103 -0
- package/schematics/ng-add/add-module.js.map +1 -0
- package/schematics/ng-add/add-styles.js +1 -1
- package/schematics/ng-add/add-template.d.ts +2 -0
- package/schematics/ng-add/add-template.js +27 -0
- package/schematics/ng-add/add-template.js.map +1 -0
- package/schematics/ng-add/index.js +6 -6
- package/schematics/ng-add/index.js.map +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addConfig = addConfig;
|
|
4
|
+
const ts = require("typescript");
|
|
5
|
+
function addConfig() {
|
|
6
|
+
return (tree, context) => {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
context.logger.info('[Config] Searching for root component ...');
|
|
9
|
+
const possiblePaths = [
|
|
10
|
+
'src/app/app.component.ts',
|
|
11
|
+
'src/app/app.ts'
|
|
12
|
+
];
|
|
13
|
+
const filePath = possiblePaths.find(p => tree.exists(p));
|
|
14
|
+
if (!filePath) {
|
|
15
|
+
context.logger.warn('[Config] No root component file found. Skipping.');
|
|
16
|
+
return tree;
|
|
17
|
+
}
|
|
18
|
+
const content = tree.read(filePath).toString('utf-8');
|
|
19
|
+
if (content.includes('from \'@lukfel/ng-scaffold\'')) {
|
|
20
|
+
context.logger.info('[Config] Config already added. Skip.');
|
|
21
|
+
return tree;
|
|
22
|
+
}
|
|
23
|
+
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
|
24
|
+
const recorder = tree.beginUpdate(filePath);
|
|
25
|
+
if (!content.includes('from \'@lukfel/ng-scaffold\'')) {
|
|
26
|
+
context.logger.info('[Config] Adding config import ...');
|
|
27
|
+
recorder.insertLeft(0, 'import { ScaffoldConfig, ScaffoldService } from \'@lukfel/ng-scaffold\';\n');
|
|
28
|
+
}
|
|
29
|
+
if (!content.includes('inject')) {
|
|
30
|
+
context.logger.info('[Config] Adding inject import ...');
|
|
31
|
+
recorder.insertLeft(0, 'import { inject } from \'@angular/core\';\n');
|
|
32
|
+
}
|
|
33
|
+
const classNode = findFirstClass(sourceFile);
|
|
34
|
+
if (!classNode) {
|
|
35
|
+
context.logger.warn('[Config] Could not find any class in the root component. Skipping.');
|
|
36
|
+
return tree;
|
|
37
|
+
}
|
|
38
|
+
const className = (_b = (_a = classNode.name) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : '<unknown>';
|
|
39
|
+
context.logger.info(`[Config] Modifying class ${className}`);
|
|
40
|
+
const constructorNode = classNode.members.find(ts.isConstructorDeclaration);
|
|
41
|
+
if (constructorNode) {
|
|
42
|
+
const paramExists = constructorNode.parameters.some(p => { var _a; return (_a = p.type) === null || _a === void 0 ? void 0 : _a.getText(sourceFile).includes('ScaffoldService'); });
|
|
43
|
+
if (!paramExists) {
|
|
44
|
+
const ctorStart = constructorNode.getStart(sourceFile);
|
|
45
|
+
const ctorText = constructorNode.getFullText(sourceFile);
|
|
46
|
+
const insertPos = ctorStart + ctorText.indexOf('(') + 1;
|
|
47
|
+
recorder.insertLeft(insertPos, 'private scaffoldService: ScaffoldService, ');
|
|
48
|
+
}
|
|
49
|
+
const bodyStart = constructorNode.body.getStart(sourceFile);
|
|
50
|
+
const bodyEnd = constructorNode.body.getEnd();
|
|
51
|
+
const bodyText = content.slice(bodyStart, bodyEnd);
|
|
52
|
+
if (!bodyText.includes('this.scaffoldService.scaffoldConfig')) {
|
|
53
|
+
recorder.insertLeft(bodyEnd - 1, '\n this.scaffoldService.scaffoldConfig = this.scaffoldConfig;\n');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const snippet = `
|
|
58
|
+
private scaffoldService = inject(ScaffoldService);
|
|
59
|
+
private scaffoldConfig: ScaffoldConfig = {
|
|
60
|
+
// Create your own config or generate it at https://lukfel.github.io/ng-scaffold
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
constructor() {
|
|
64
|
+
this.scaffoldService.scaffoldConfig = this.scaffoldConfig;
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
recorder.insertLeft(classNode.members.pos, snippet);
|
|
68
|
+
}
|
|
69
|
+
tree.commitUpdate(recorder);
|
|
70
|
+
context.logger.info('[Config] ScaffoldService configuration added successfully.');
|
|
71
|
+
return tree;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Helper: find the first class declaration
|
|
75
|
+
function findFirstClass(sourceFile) {
|
|
76
|
+
let classNode;
|
|
77
|
+
function visit(node) {
|
|
78
|
+
if (ts.isClassDeclaration(node)) {
|
|
79
|
+
classNode = node;
|
|
80
|
+
}
|
|
81
|
+
else
|
|
82
|
+
ts.forEachChild(node, visit);
|
|
83
|
+
}
|
|
84
|
+
visit(sourceFile);
|
|
85
|
+
return classNode;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=add-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-config.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-config.ts"],"names":[],"mappings":";;AAGA,8BAiFC;AAnFD,iCAAiC;AAEjC,SAAgB,SAAS;IACrB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;;QAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAEjE,MAAM,aAAa,GAAG;YAClB,0BAA0B;YAC1B,gBAAgB;SACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACzD,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACzD,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,6CAA6C,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YAC1F,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,MAAA,MAAA,SAAS,CAAC,IAAI,0CAAE,IAAI,mCAAI,WAAW,CAAC;QACtD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QAE7D,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC;QAE5E,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WACpD,OAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA,EAAA,CAC1D,CAAC;YACF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxD,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,SAAS,GAAG,eAAe,CAAC,IAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,eAAe,CAAC,IAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;gBAC5D,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,oEAAoE,CAAC,CAAC;YAC3G,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,OAAO,GAAG;;;;;;;;;CAS3B,CAAC;YACU,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAElF,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC;AAED,2CAA2C;AAC3C,SAAS,cAAc,CAAC,UAAyB;IAC7C,IAAI,SAA0C,CAAC;IAC/C,SAAS,KAAK,CAAC,IAAa;QACxB,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC;;YAAM,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addModule = addModule;
|
|
4
|
+
const ts = require("typescript");
|
|
5
|
+
function addModule() {
|
|
6
|
+
return (tree, context) => {
|
|
7
|
+
context.logger.info('[Module] Searching for root module ...');
|
|
8
|
+
const possiblePaths = ['src/app/app.module.ts', 'src/app/app-module.ts'];
|
|
9
|
+
const path = possiblePaths.find(p => tree.exists(p));
|
|
10
|
+
if (path) {
|
|
11
|
+
return addToNgModule(tree, context, path);
|
|
12
|
+
}
|
|
13
|
+
return addToStandalone(tree, context);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/** Add ScaffoldModule to NgModule app */
|
|
17
|
+
function addToNgModule(tree, context, path) {
|
|
18
|
+
const text = tree.read(path).toString('utf-8');
|
|
19
|
+
if (text.includes('ScaffoldModule')) {
|
|
20
|
+
context.logger.info('[Module] ScaffoldModule already imported. Skip.');
|
|
21
|
+
return tree;
|
|
22
|
+
}
|
|
23
|
+
const recorder = tree.beginUpdate(path);
|
|
24
|
+
recorder.insertLeft(0, 'import { ScaffoldModule } from \'@lukfel/ng-scaffold\';\n');
|
|
25
|
+
const sourceFile = ts.createSourceFile(path, text, ts.ScriptTarget.Latest, true);
|
|
26
|
+
const ngModuleDecoratorCall = findNgModuleDecorator(sourceFile);
|
|
27
|
+
if (!ngModuleDecoratorCall) {
|
|
28
|
+
context.logger.warn('[Module] No @NgModule decorator found. Skip.');
|
|
29
|
+
tree.commitUpdate(recorder);
|
|
30
|
+
return tree;
|
|
31
|
+
}
|
|
32
|
+
const arg = ngModuleDecoratorCall.arguments[0];
|
|
33
|
+
if (!arg || !ts.isObjectLiteralExpression(arg)) {
|
|
34
|
+
context.logger.warn('[Module] Invalid @NgModule metadata. Skip.');
|
|
35
|
+
tree.commitUpdate(recorder);
|
|
36
|
+
return tree;
|
|
37
|
+
}
|
|
38
|
+
const importsProp = arg.properties.find(p => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === 'imports');
|
|
39
|
+
if (!importsProp || !ts.isArrayLiteralExpression(importsProp.initializer)) {
|
|
40
|
+
context.logger.warn('[Module] No imports[] found in @NgModule. Skip.');
|
|
41
|
+
tree.commitUpdate(recorder);
|
|
42
|
+
return tree;
|
|
43
|
+
}
|
|
44
|
+
const importsArray = importsProp.initializer;
|
|
45
|
+
recorder.insertRight(importsArray.getEnd() - 1, `${importsArray.elements.length ? ', ' : ''}ScaffoldModule`);
|
|
46
|
+
tree.commitUpdate(recorder);
|
|
47
|
+
context.logger.info('[Module] Successfully added ScaffoldModule to NgModule.');
|
|
48
|
+
return tree;
|
|
49
|
+
}
|
|
50
|
+
/** Helper to find @NgModule decorator in a class */
|
|
51
|
+
function findNgModuleDecorator(sourceFile) {
|
|
52
|
+
var _a;
|
|
53
|
+
const classes = sourceFile.statements.filter(ts.isClassDeclaration);
|
|
54
|
+
for (const cls of classes) {
|
|
55
|
+
const decorators = (_a = ts.getDecorators(cls)) !== null && _a !== void 0 ? _a : [];
|
|
56
|
+
for (const decorator of decorators) {
|
|
57
|
+
if (!ts.isCallExpression(decorator.expression))
|
|
58
|
+
continue;
|
|
59
|
+
const expr = decorator.expression;
|
|
60
|
+
if (ts.isIdentifier(expr.expression) && expr.expression.text === 'NgModule') {
|
|
61
|
+
return expr;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
/** Add ScaffoldModule to standalone bootstrapApplication */
|
|
68
|
+
function addToStandalone(tree, context) {
|
|
69
|
+
const path = 'src/main.ts';
|
|
70
|
+
if (!tree.exists(path)) {
|
|
71
|
+
context.logger.warn('[Module] main.ts not found. Skip.');
|
|
72
|
+
return tree;
|
|
73
|
+
}
|
|
74
|
+
const text = tree.read(path).toString('utf8');
|
|
75
|
+
if (text.includes('ScaffoldModule')) {
|
|
76
|
+
context.logger.info('[Module] ScaffoldModule already imported. Skip.');
|
|
77
|
+
return tree;
|
|
78
|
+
}
|
|
79
|
+
const importText = `
|
|
80
|
+
import { importProvidersFrom } from '@angular/core';
|
|
81
|
+
import { ScaffoldModule } from '@lukfel/ng-scaffold';
|
|
82
|
+
|
|
83
|
+
`;
|
|
84
|
+
const recorder = tree.beginUpdate(path);
|
|
85
|
+
recorder.insertLeft(0, importText);
|
|
86
|
+
const providersRegex = /providers\s*:\s*\[([\s\S]*?)\]/;
|
|
87
|
+
const match = text.match(providersRegex);
|
|
88
|
+
if (match) {
|
|
89
|
+
const full = match[0];
|
|
90
|
+
const inner = match[1];
|
|
91
|
+
const updated = full.replace(inner, `${inner}${inner.trim().length > 0 ? ', ' : ''}importProvidersFrom(ScaffoldModule)`);
|
|
92
|
+
const newText = text.replace(full, updated);
|
|
93
|
+
recorder.remove(0, text.length);
|
|
94
|
+
recorder.insertLeft(0, newText);
|
|
95
|
+
tree.commitUpdate(recorder);
|
|
96
|
+
context.logger.info('[Module] Added ScaffoldModule to standalone providers.');
|
|
97
|
+
return tree;
|
|
98
|
+
}
|
|
99
|
+
context.logger.warn('[Module] No providers[] found in bootstrapApplication. Skip.');
|
|
100
|
+
tree.commitUpdate(recorder);
|
|
101
|
+
return tree;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=add-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-module.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ $theme2: (
|
|
|
27
27
|
`;
|
|
28
28
|
function addStyles() {
|
|
29
29
|
return (tree, context) => {
|
|
30
|
-
context.logger.info('[Styles] Searching for styles
|
|
30
|
+
context.logger.info('[Styles] Searching for root styles ...');
|
|
31
31
|
const possiblePaths = [
|
|
32
32
|
'src/styles.scss',
|
|
33
33
|
'src/styles.sass',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addTemplate = addTemplate;
|
|
4
|
+
function addTemplate() {
|
|
5
|
+
return (tree, context) => {
|
|
6
|
+
context.logger.info('[Template] Searching for root template ...');
|
|
7
|
+
const possiblePaths = [
|
|
8
|
+
'src/app/app.component.html',
|
|
9
|
+
'src/app/app.html'
|
|
10
|
+
];
|
|
11
|
+
const path = possiblePaths.find(p => tree.exists(p));
|
|
12
|
+
if (!path) {
|
|
13
|
+
context.logger.warn('[Template] No global template file found. Skip.');
|
|
14
|
+
return tree;
|
|
15
|
+
}
|
|
16
|
+
const content = tree.read(path).toString('utf8');
|
|
17
|
+
if (content.includes('<lf-scaffold')) {
|
|
18
|
+
context.logger.info('[Template] Template already added. Skip.');
|
|
19
|
+
return tree;
|
|
20
|
+
}
|
|
21
|
+
const newContent = `<lf-scaffold>\n${content}\n</lf-scaffold>`;
|
|
22
|
+
tree.overwrite(path, newContent);
|
|
23
|
+
context.logger.info(`[Template] Successfully added ${path}.`);
|
|
24
|
+
return tree;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=add-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-template.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/add-template.ts"],"names":[],"mappings":";;AAEA,kCA0BC;AA1BD,SAAgB,WAAW;IACvB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC7C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAElE,MAAM,aAAa,GAAG;YAClB,4BAA4B;YAC5B,kBAAkB;SACrB,CAAC;QAEF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,UAAU,GAAG,kBAAkB,OAAO,kBAAkB,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,IAAI,GAAG,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ngAdd = ngAdd;
|
|
4
4
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const add_config_1 = require("./add-config");
|
|
6
|
+
const add_module_1 = require("./add-module");
|
|
7
7
|
const add_styles_1 = require("./add-styles");
|
|
8
|
-
|
|
8
|
+
const add_template_1 = require("./add-template");
|
|
9
9
|
function ngAdd() {
|
|
10
10
|
return (0, schematics_1.chain)([
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
(0, add_module_1.addModule)(),
|
|
12
|
+
(0, add_config_1.addConfig)(),
|
|
13
|
+
(0, add_template_1.addTemplate)(),
|
|
14
14
|
(0, add_styles_1.addStyles)()
|
|
15
15
|
]);
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/index.ts"],"names":[],"mappings":";;AAMA,sBAOC;AAbD,2DAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ng-scaffold/schematics/ng-add/index.ts"],"names":[],"mappings":";;AAMA,sBAOC;AAbD,2DAAyD;AACzD,6CAAyC;AACzC,6CAAyC;AACzC,6CAAyC;AACzC,iDAA6C;AAE7C,SAAgB,KAAK;IACjB,OAAO,IAAA,kBAAK,EAAC;QACT,IAAA,sBAAS,GAAE;QACX,IAAA,sBAAS,GAAE;QACX,IAAA,0BAAW,GAAE;QACb,IAAA,sBAAS,GAAE;KACd,CAAC,CAAC;AACP,CAAC"}
|