@ngrx/data 21.0.0-rc.0 → 21.0.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.
- package/package.json +4 -4
- package/schematics/ng-add/index.js +130 -131
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.js +2 -0
- package/schematics-core/index.js +75 -24
- package/schematics-core/index.js.map +1 -1
- package/schematics-core/utility/ast-utils.js +234 -260
- package/schematics-core/utility/ast-utils.js.map +1 -1
- package/schematics-core/utility/change.js +82 -92
- package/schematics-core/utility/change.js.map +1 -1
- package/schematics-core/utility/config.js +13 -9
- package/schematics-core/utility/config.js.map +1 -1
- package/schematics-core/utility/find-component.js +35 -30
- package/schematics-core/utility/find-component.js.map +1 -1
- package/schematics-core/utility/find-module.js +38 -33
- package/schematics-core/utility/find-module.js.map +1 -1
- package/schematics-core/utility/json-utilts.js +8 -27
- package/schematics-core/utility/json-utilts.js.map +1 -1
- package/schematics-core/utility/libs-version.js +4 -1
- package/schematics-core/utility/libs-version.js.map +1 -1
- package/schematics-core/utility/ngrx-utils.js +129 -152
- package/schematics-core/utility/ngrx-utils.js.map +1 -1
- package/schematics-core/utility/package.js +6 -4
- package/schematics-core/utility/package.js.map +1 -1
- package/schematics-core/utility/parse-name.js +8 -5
- package/schematics-core/utility/parse-name.js.map +1 -1
- package/schematics-core/utility/project.js +23 -17
- package/schematics-core/utility/project.js.map +1 -1
- package/schematics-core/utility/standalone.js +141 -214
- package/schematics-core/utility/standalone.js.map +1 -1
- package/schematics-core/utility/strings.js +32 -21
- package/schematics-core/utility/strings.js.map +1 -1
- package/schematics-core/utility/update.js +18 -15
- package/schematics-core/utility/update.js.map +1 -1
- package/schematics-core/utility/visitors.js +104 -192
- package/schematics-core/utility/visitors.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngrx/data",
|
|
3
|
-
"version": "21.0.
|
|
3
|
+
"version": "21.0.1",
|
|
4
4
|
"description": "API management for NgRx",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"@angular/common": "^21.0.0",
|
|
24
24
|
"@angular/core": "^21.0.0",
|
|
25
|
-
"@ngrx/store": "21.0.
|
|
26
|
-
"@ngrx/effects": "21.0.
|
|
27
|
-
"@ngrx/entity": "21.0.
|
|
25
|
+
"@ngrx/store": "21.0.1",
|
|
26
|
+
"@ngrx/effects": "21.0.1",
|
|
27
|
+
"@ngrx/entity": "21.0.1",
|
|
28
28
|
"rxjs": "^6.5.3 || ^7.5.0"
|
|
29
29
|
},
|
|
30
30
|
"schematics": "./schematics/collection.json",
|
|
@@ -1,121 +1,124 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
-
if (!m) return o;
|
|
15
|
-
var i = m.call(o), r, ar = [], e;
|
|
16
|
-
try {
|
|
17
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
7
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
ar
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.default = default_1;
|
|
37
|
+
const ts = __importStar(require("typescript"));
|
|
38
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
39
|
+
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
40
|
+
const schematics_core_1 = require("../../schematics-core");
|
|
41
|
+
const project_1 = require("../../schematics-core/utility/project");
|
|
42
|
+
const standalone_1 = require("../../schematics-core/utility/standalone");
|
|
43
|
+
const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
|
|
44
44
|
function addNgRxDataToPackageJson() {
|
|
45
|
-
return
|
|
46
|
-
addPackageToPackageJson(host, 'dependencies', '@ngrx/data', platformVersion);
|
|
47
|
-
context.addTask(new NodePackageInstallTask());
|
|
45
|
+
return (host, context) => {
|
|
46
|
+
(0, schematics_core_1.addPackageToPackageJson)(host, 'dependencies', '@ngrx/data', schematics_core_1.platformVersion);
|
|
47
|
+
context.addTask(new tasks_1.NodePackageInstallTask());
|
|
48
48
|
return host;
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
function addEntityDataToNgModule(options) {
|
|
52
|
-
return
|
|
52
|
+
return (host) => {
|
|
53
53
|
throwIfModuleNotSpecified(host, options.module);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const modulePath = options.module;
|
|
55
|
+
const text = host.read(modulePath).toString();
|
|
56
|
+
const source = ts.createSourceFile(modulePath, text, ts.ScriptTarget.Latest, true);
|
|
57
|
+
const moduleToImport = options.effects
|
|
58
58
|
? 'EntityDataModule'
|
|
59
59
|
: 'EntityDataModuleWithoutEffects';
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
const effectsModuleImport = (0, schematics_core_1.insertImport)(source, modulePath, moduleToImport, '@ngrx/data');
|
|
61
|
+
const [dateEntityNgModuleImport] = (0, schematics_core_1.addImportToModule)(source, modulePath, options.entityConfig
|
|
62
62
|
? [moduleToImport, 'forRoot(entityConfig)'].join('.')
|
|
63
|
-
: moduleToImport, '')
|
|
64
|
-
|
|
63
|
+
: moduleToImport, '');
|
|
64
|
+
const changes = [effectsModuleImport, dateEntityNgModuleImport];
|
|
65
65
|
if (options.entityConfig) {
|
|
66
|
-
|
|
66
|
+
const entityConfigImport = (0, schematics_core_1.insertImport)(source, modulePath, 'entityConfig', './entity-metadata');
|
|
67
67
|
changes.push(entityConfigImport);
|
|
68
68
|
}
|
|
69
|
-
commitChanges(host, source.fileName, changes);
|
|
69
|
+
(0, schematics_core_1.commitChanges)(host, source.fileName, changes);
|
|
70
70
|
return host;
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
function addStandaloneConfig(options) {
|
|
74
|
-
return
|
|
75
|
-
|
|
74
|
+
return (host) => {
|
|
75
|
+
const mainFile = (0, project_1.getProjectMainFile)(host, options);
|
|
76
76
|
if (host.exists(mainFile)) {
|
|
77
|
-
|
|
78
|
-
if (callsProvidersFunction(host, mainFile, providerFn)) {
|
|
77
|
+
const providerFn = 'provideEntityData';
|
|
78
|
+
if ((0, standalone_1.callsProvidersFunction)(host, mainFile, providerFn)) {
|
|
79
79
|
// exit because the store config is already provided
|
|
80
80
|
return host;
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
82
|
+
const providerOptions = [
|
|
83
|
+
...(options.entityConfig
|
|
84
|
+
? [ts.factory.createIdentifier(`entityConfig`)]
|
|
85
|
+
: [ts.factory.createIdentifier(`{}`)]),
|
|
86
|
+
...(options.effects
|
|
87
|
+
? [ts.factory.createIdentifier(`withEffects()`)]
|
|
88
|
+
: []),
|
|
89
|
+
];
|
|
90
|
+
const patchedConfigFile = (0, standalone_1.addFunctionalProvidersToStandaloneBootstrap)(host, mainFile, providerFn, '@ngrx/data', providerOptions);
|
|
91
|
+
const configFileContent = host.read(patchedConfigFile);
|
|
92
|
+
const source = ts.createSourceFile(patchedConfigFile, configFileContent?.toString('utf-8') || '', ts.ScriptTarget.Latest, true);
|
|
93
|
+
const recorder = host.beginUpdate(patchedConfigFile);
|
|
94
|
+
const changes = [];
|
|
92
95
|
if (options.effects) {
|
|
93
|
-
|
|
96
|
+
const withEffectsImport = (0, schematics_core_1.insertImport)(source, patchedConfigFile, 'withEffects', '@ngrx/data');
|
|
94
97
|
changes.push(withEffectsImport);
|
|
95
98
|
}
|
|
96
99
|
if (options.entityConfig) {
|
|
97
|
-
|
|
100
|
+
const entityConfigImport = (0, schematics_core_1.insertImport)(source, patchedConfigFile, 'entityConfig', './entity-metadata');
|
|
98
101
|
changes.push(entityConfigImport);
|
|
99
102
|
}
|
|
100
|
-
changes.forEach(
|
|
101
|
-
|
|
103
|
+
changes.forEach((change) => {
|
|
104
|
+
recorder.insertLeft(change.pos, change.toAdd);
|
|
102
105
|
});
|
|
103
|
-
host.commitUpdate(
|
|
106
|
+
host.commitUpdate(recorder);
|
|
104
107
|
return host;
|
|
105
108
|
}
|
|
106
|
-
throw new SchematicsException(
|
|
109
|
+
throw new schematics_1.SchematicsException(`Main file not found for a project ${options.project}`);
|
|
107
110
|
};
|
|
108
111
|
}
|
|
109
|
-
|
|
112
|
+
const renames = {
|
|
110
113
|
NgrxDataModule: 'EntityDataModule',
|
|
111
114
|
NgrxDataModuleWithoutEffects: 'EntityDataModuleWithoutEffects',
|
|
112
115
|
NgrxDataModuleConfig: 'EntityDataModuleConfig',
|
|
113
116
|
};
|
|
114
117
|
function removeAngularNgRxDataFromPackageJson() {
|
|
115
|
-
return
|
|
118
|
+
return (host) => {
|
|
116
119
|
if (host.exists('package.json')) {
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
const sourceText = host.read('package.json').toString('utf-8');
|
|
121
|
+
const json = JSON.parse(sourceText);
|
|
119
122
|
if (json['dependencies'] && json['dependencies']['ngrx-data']) {
|
|
120
123
|
delete json['dependencies']['ngrx-data'];
|
|
121
124
|
}
|
|
@@ -125,64 +128,57 @@ function removeAngularNgRxDataFromPackageJson() {
|
|
|
125
128
|
};
|
|
126
129
|
}
|
|
127
130
|
function renameNgrxDataModule() {
|
|
128
|
-
return
|
|
129
|
-
visitTSSourceFiles(host,
|
|
130
|
-
|
|
131
|
+
return (host) => {
|
|
132
|
+
(0, schematics_core_1.visitTSSourceFiles)(host, (sourceFile) => {
|
|
133
|
+
const ngrxDataImports = sourceFile.statements
|
|
131
134
|
.filter(ts.isImportDeclaration)
|
|
132
|
-
.filter(
|
|
133
|
-
var moduleSpecifier = _a.moduleSpecifier;
|
|
134
|
-
return moduleSpecifier.getText(sourceFile) === "'ngrx-data'";
|
|
135
|
-
});
|
|
135
|
+
.filter(({ moduleSpecifier }) => moduleSpecifier.getText(sourceFile) === "'ngrx-data'");
|
|
136
136
|
if (ngrxDataImports.length === 0) {
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
const changes = [
|
|
140
|
+
...findNgrxDataImports(sourceFile, ngrxDataImports),
|
|
141
|
+
...findNgrxDataImportDeclarations(sourceFile, ngrxDataImports),
|
|
142
|
+
...findNgrxDataReplacements(sourceFile),
|
|
143
|
+
];
|
|
144
|
+
(0, schematics_core_1.commitChanges)(host, sourceFile.fileName, changes);
|
|
141
145
|
});
|
|
142
146
|
};
|
|
143
147
|
}
|
|
144
148
|
function findNgrxDataImports(sourceFile, imports) {
|
|
145
|
-
|
|
146
|
-
return createReplaceChange(sourceFile, specifier.moduleSpecifier, "'ngrx-data'", "'@ngrx/data'");
|
|
147
|
-
});
|
|
149
|
+
const changes = imports.map((specifier) => (0, schematics_core_1.createReplaceChange)(sourceFile, specifier.moduleSpecifier, "'ngrx-data'", "'@ngrx/data'"));
|
|
148
150
|
return changes;
|
|
149
151
|
}
|
|
150
152
|
function findNgrxDataImportDeclarations(sourceFile, imports) {
|
|
151
|
-
|
|
152
|
-
.map(
|
|
153
|
-
.reduce(
|
|
154
|
-
.map(
|
|
153
|
+
const changes = imports
|
|
154
|
+
.map((p) => p.importClause.namedBindings.elements)
|
|
155
|
+
.reduce((imports, curr) => imports.concat(curr), [])
|
|
156
|
+
.map((specifier) => {
|
|
155
157
|
if (!ts.isImportSpecifier(specifier)) {
|
|
156
158
|
return { hit: false };
|
|
157
159
|
}
|
|
158
|
-
|
|
160
|
+
const ngrxDataImports = Object.keys(renames);
|
|
159
161
|
if (ngrxDataImports.includes(specifier.name.text)) {
|
|
160
|
-
return { hit: true, specifier
|
|
162
|
+
return { hit: true, specifier, text: specifier.name.text };
|
|
161
163
|
}
|
|
162
164
|
// if import is renamed
|
|
163
165
|
if (specifier.propertyName &&
|
|
164
166
|
ngrxDataImports.includes(specifier.propertyName.text)) {
|
|
165
|
-
return { hit: true, specifier
|
|
167
|
+
return { hit: true, specifier, text: specifier.propertyName.text };
|
|
166
168
|
}
|
|
167
169
|
return { hit: false };
|
|
168
170
|
})
|
|
169
|
-
.filter(
|
|
170
|
-
|
|
171
|
-
return hit;
|
|
172
|
-
})
|
|
173
|
-
.map(function (_a) {
|
|
174
|
-
var specifier = _a.specifier, text = _a.text;
|
|
175
|
-
return createReplaceChange(sourceFile, specifier, text, renames[text]);
|
|
176
|
-
});
|
|
171
|
+
.filter(({ hit }) => hit)
|
|
172
|
+
.map(({ specifier, text }) => (0, schematics_core_1.createReplaceChange)(sourceFile, specifier, text, renames[text]));
|
|
177
173
|
return changes;
|
|
178
174
|
}
|
|
179
175
|
function findNgrxDataReplacements(sourceFile) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
ts.forEachChild(sourceFile,
|
|
176
|
+
const renameKeys = Object.keys(renames);
|
|
177
|
+
const changes = [];
|
|
178
|
+
ts.forEachChild(sourceFile, (node) => find(node, changes));
|
|
183
179
|
return changes;
|
|
184
180
|
function find(node, changes) {
|
|
185
|
-
|
|
181
|
+
let change = undefined;
|
|
186
182
|
if (ts.isPropertyAssignment(node) &&
|
|
187
183
|
renameKeys.includes(node.initializer.getText(sourceFile))) {
|
|
188
184
|
change = {
|
|
@@ -206,9 +202,9 @@ function findNgrxDataReplacements(sourceFile) {
|
|
|
206
202
|
};
|
|
207
203
|
}
|
|
208
204
|
if (change) {
|
|
209
|
-
changes.push(createReplaceChange(sourceFile, change.node, change.text, renames[change.text]));
|
|
205
|
+
changes.push((0, schematics_core_1.createReplaceChange)(sourceFile, change.node, change.text, renames[change.text]));
|
|
210
206
|
}
|
|
211
|
-
ts.forEachChild(node,
|
|
207
|
+
ts.forEachChild(node, (childNode) => find(childNode, changes));
|
|
212
208
|
}
|
|
213
209
|
}
|
|
214
210
|
function throwIfModuleNotSpecified(host, module) {
|
|
@@ -218,44 +214,47 @@ function throwIfModuleNotSpecified(host, module) {
|
|
|
218
214
|
if (!host.exists(module)) {
|
|
219
215
|
throw new Error('Specified module does not exist');
|
|
220
216
|
}
|
|
221
|
-
|
|
217
|
+
const text = host.read(module);
|
|
222
218
|
if (text === null) {
|
|
223
|
-
throw new SchematicsException(
|
|
219
|
+
throw new schematics_1.SchematicsException(`File ${module} does not exist.`);
|
|
224
220
|
}
|
|
225
221
|
}
|
|
226
222
|
function createEntityConfigFile(options, path) {
|
|
227
|
-
return mergeWith(apply(url('./files'), [
|
|
228
|
-
|
|
229
|
-
|
|
223
|
+
return (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)('./files'), [
|
|
224
|
+
(0, schematics_1.applyTemplates)({
|
|
225
|
+
...schematics_core_1.stringUtils,
|
|
226
|
+
...options,
|
|
227
|
+
}),
|
|
228
|
+
(0, schematics_1.move)(path),
|
|
230
229
|
]));
|
|
231
230
|
}
|
|
232
|
-
|
|
233
|
-
return
|
|
231
|
+
function default_1(options) {
|
|
232
|
+
return (host, context) => {
|
|
234
233
|
options.name = '';
|
|
235
|
-
options.path = getProjectPath(host, options);
|
|
236
|
-
|
|
237
|
-
|
|
234
|
+
options.path = (0, schematics_core_1.getProjectPath)(host, options);
|
|
235
|
+
const mainFile = (0, project_1.getProjectMainFile)(host, options);
|
|
236
|
+
const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(host, mainFile);
|
|
238
237
|
options.effects = options.effects === undefined ? true : options.effects;
|
|
239
238
|
options.module =
|
|
240
239
|
options.module && !isStandalone
|
|
241
|
-
? findModuleFromOptions(host, options)
|
|
240
|
+
? (0, schematics_core_1.findModuleFromOptions)(host, options)
|
|
242
241
|
: options.module;
|
|
243
|
-
|
|
242
|
+
const parsedPath = (0, schematics_core_1.parseName)(options.path, '');
|
|
244
243
|
options.path = parsedPath.path;
|
|
245
|
-
|
|
244
|
+
const configOrModuleUpdate = isStandalone
|
|
246
245
|
? addStandaloneConfig(options)
|
|
247
246
|
: addEntityDataToNgModule(options);
|
|
248
|
-
return chain([
|
|
249
|
-
options && options.skipPackageJson ? noop() : addNgRxDataToPackageJson(),
|
|
247
|
+
return (0, schematics_1.chain)([
|
|
248
|
+
options && options.skipPackageJson ? (0, schematics_1.noop)() : addNgRxDataToPackageJson(),
|
|
250
249
|
options.migrateNgrxData
|
|
251
|
-
? chain([
|
|
250
|
+
? (0, schematics_1.chain)([
|
|
252
251
|
removeAngularNgRxDataFromPackageJson(),
|
|
253
252
|
renameNgrxDataModule(),
|
|
254
253
|
])
|
|
255
|
-
: branchAndMerge(chain([configOrModuleUpdate])),
|
|
254
|
+
: (0, schematics_1.branchAndMerge)((0, schematics_1.chain)([configOrModuleUpdate])),
|
|
256
255
|
options.entityConfig
|
|
257
256
|
? createEntityConfigFile(options, parsedPath.path)
|
|
258
|
-
: noop(),
|
|
257
|
+
: (0, schematics_1.noop)(),
|
|
259
258
|
])(host, context);
|
|
260
259
|
};
|
|
261
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/data/schematics/ng-add/index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\nimport { Path } from '@angular-devkit/core';\nimport {\n apply,\n applyTemplates,\n branchAndMerge,\n chain,\n mergeWith,\n move,\n Rule,\n SchematicContext,\n SchematicsException,\n noop,\n Tree,\n url,\n} from '@angular-devkit/schematics';\nimport { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';\nimport {\n addImportToModule,\n addPackageToPackageJson,\n commitChanges,\n createReplaceChange,\n findModuleFromOptions,\n getProjectPath,\n insertImport,\n parseName,\n platformVersion,\n ReplaceChange,\n stringUtils,\n visitTSSourceFiles,\n} from '../../schematics-core';\nimport { Schema as EntityDataOptions } from './schema';\nimport { getProjectMainFile } from '../../schematics-core/utility/project';\nimport {\n addFunctionalProvidersToStandaloneBootstrap,\n callsProvidersFunction,\n} from '../../schematics-core/utility/standalone';\nimport { isStandaloneApp } from '@schematics/angular/utility/ng-ast-utils';\n\nfunction addNgRxDataToPackageJson() {\n return (host: Tree, context: SchematicContext) => {\n addPackageToPackageJson(\n host,\n 'dependencies',\n '@ngrx/data',\n platformVersion\n );\n context.addTask(new NodePackageInstallTask());\n return host;\n };\n}\n\nfunction addEntityDataToNgModule(options: EntityDataOptions): Rule {\n return (host: Tree) => {\n throwIfModuleNotSpecified(host, options.module);\n\n const modulePath = options.module!;\n const text = host.read(modulePath)!.toString();\n\n const source = ts.createSourceFile(\n modulePath,\n text,\n ts.ScriptTarget.Latest,\n true\n );\n\n const moduleToImport = options.effects\n ? 'EntityDataModule'\n : 'EntityDataModuleWithoutEffects';\n\n const effectsModuleImport = insertImport(\n source,\n modulePath,\n moduleToImport,\n '@ngrx/data'\n );\n\n const [dateEntityNgModuleImport] = addImportToModule(\n source,\n modulePath,\n options.entityConfig\n ? [moduleToImport, 'forRoot(entityConfig)'].join('.')\n : moduleToImport,\n ''\n );\n\n const changes = [effectsModuleImport, dateEntityNgModuleImport];\n\n if (options.entityConfig) {\n const entityConfigImport = insertImport(\n source,\n modulePath,\n 'entityConfig',\n './entity-metadata'\n );\n changes.push(entityConfigImport);\n }\n\n commitChanges(host, source.fileName, changes);\n\n return host;\n };\n}\n\nfunction addStandaloneConfig(options: EntityDataOptions): Rule {\n return (host: Tree) => {\n const mainFile = getProjectMainFile(host, options);\n if (host.exists(mainFile)) {\n const providerFn = 'provideEntityData';\n\n if (callsProvidersFunction(host, mainFile, providerFn)) {\n // exit because the store config is already provided\n return host;\n }\n\n const providerOptions = [\n ...(options.entityConfig\n ? [ts.factory.createIdentifier(`entityConfig`)]\n : [ts.factory.createIdentifier(`{}`)]),\n ...(options.effects\n ? [ts.factory.createIdentifier(`withEffects()`)]\n : []),\n ];\n\n const patchedConfigFile = addFunctionalProvidersToStandaloneBootstrap(\n host,\n mainFile,\n providerFn,\n '@ngrx/data',\n providerOptions\n );\n\n const configFileContent = host.read(patchedConfigFile);\n const source = ts.createSourceFile(\n patchedConfigFile,\n configFileContent?.toString('utf-8') || '',\n ts.ScriptTarget.Latest,\n true\n );\n\n const recorder = host.beginUpdate(patchedConfigFile);\n\n const changes = [];\n\n if (options.effects) {\n const withEffectsImport = insertImport(\n source,\n patchedConfigFile,\n 'withEffects',\n '@ngrx/data'\n );\n\n changes.push(withEffectsImport);\n }\n\n if (options.entityConfig) {\n const entityConfigImport = insertImport(\n source,\n patchedConfigFile,\n 'entityConfig',\n './entity-metadata'\n );\n\n changes.push(entityConfigImport);\n }\n\n changes.forEach((change: any) => {\n recorder.insertLeft(change.pos, change.toAdd);\n });\n\n host.commitUpdate(recorder);\n\n return host;\n }\n\n throw new SchematicsException(\n `Main file not found for a project ${options.project}`\n );\n };\n}\n\nconst renames = {\n NgrxDataModule: 'EntityDataModule',\n NgrxDataModuleWithoutEffects: 'EntityDataModuleWithoutEffects',\n NgrxDataModuleConfig: 'EntityDataModuleConfig',\n};\n\nfunction removeAngularNgRxDataFromPackageJson() {\n return (host: Tree) => {\n if (host.exists('package.json')) {\n const sourceText = host.read('package.json')!.toString('utf-8');\n const json = JSON.parse(sourceText);\n\n if (json['dependencies'] && json['dependencies']['ngrx-data']) {\n delete json['dependencies']['ngrx-data'];\n }\n\n host.overwrite('package.json', JSON.stringify(json, null, 2));\n }\n\n return host;\n };\n}\n\nfunction renameNgrxDataModule() {\n return (host: Tree) => {\n visitTSSourceFiles(host, (sourceFile) => {\n const ngrxDataImports = sourceFile.statements\n .filter(ts.isImportDeclaration)\n .filter(\n ({ moduleSpecifier }) =>\n moduleSpecifier.getText(sourceFile) === \"'ngrx-data'\"\n );\n\n if (ngrxDataImports.length === 0) {\n return;\n }\n\n const changes = [\n ...findNgrxDataImports(sourceFile, ngrxDataImports),\n ...findNgrxDataImportDeclarations(sourceFile, ngrxDataImports),\n ...findNgrxDataReplacements(sourceFile),\n ];\n\n commitChanges(host, sourceFile.fileName, changes);\n });\n };\n}\n\nfunction findNgrxDataImports(\n sourceFile: ts.SourceFile,\n imports: ts.ImportDeclaration[]\n) {\n const changes = imports.map((specifier) =>\n createReplaceChange(\n sourceFile,\n specifier.moduleSpecifier,\n \"'ngrx-data'\",\n \"'@ngrx/data'\"\n )\n );\n\n return changes;\n}\n\nfunction findNgrxDataImportDeclarations(\n sourceFile: ts.SourceFile,\n imports: ts.ImportDeclaration[]\n) {\n const changes = imports\n .map((p) => (p.importClause!.namedBindings! as ts.NamedImports).elements)\n .reduce((imports, curr) => imports.concat(curr), [] as ts.ImportSpecifier[])\n .map((specifier) => {\n if (!ts.isImportSpecifier(specifier)) {\n return { hit: false };\n }\n\n const ngrxDataImports = Object.keys(renames);\n if (ngrxDataImports.includes(specifier.name.text)) {\n return { hit: true, specifier, text: specifier.name.text };\n }\n\n // if import is renamed\n if (\n specifier.propertyName &&\n ngrxDataImports.includes(specifier.propertyName.text)\n ) {\n return { hit: true, specifier, text: specifier.propertyName.text };\n }\n\n return { hit: false };\n })\n .filter(({ hit }) => hit)\n .map(({ specifier, text }) =>\n createReplaceChange(\n sourceFile,\n specifier!,\n text!,\n (renames as any)[text!]\n )\n );\n\n return changes;\n}\n\nfunction findNgrxDataReplacements(sourceFile: ts.SourceFile) {\n const renameKeys = Object.keys(renames);\n const changes: ReplaceChange[] = [];\n ts.forEachChild(sourceFile, (node) => find(node, changes));\n return changes;\n\n function find(node: ts.Node, changes: ReplaceChange[]) {\n let change = undefined;\n\n if (\n ts.isPropertyAssignment(node) &&\n renameKeys.includes(node.initializer.getText(sourceFile))\n ) {\n change = {\n node: node.initializer,\n text: node.initializer.getText(sourceFile),\n };\n }\n\n if (\n ts.isPropertyAccessExpression(node) &&\n renameKeys.includes(node.expression.getText(sourceFile))\n ) {\n change = {\n node: node.expression,\n text: node.expression.getText(sourceFile),\n };\n }\n\n if (\n ts.isVariableDeclaration(node) &&\n node.type &&\n renameKeys.includes(node.type.getText(sourceFile))\n ) {\n change = {\n node: node.type,\n text: node.type.getText(sourceFile),\n };\n }\n\n if (change) {\n changes.push(\n createReplaceChange(\n sourceFile,\n change.node,\n change.text,\n (renames as any)[change.text]\n )\n );\n }\n\n ts.forEachChild(node, (childNode) => find(childNode, changes));\n }\n}\n\nfunction throwIfModuleNotSpecified(host: Tree, module?: string) {\n if (!module) {\n throw new Error('Module not specified');\n }\n\n if (!host.exists(module)) {\n throw new Error('Specified module does not exist');\n }\n\n const text = host.read(module);\n if (text === null) {\n throw new SchematicsException(`File ${module} does not exist.`);\n }\n}\n\nfunction createEntityConfigFile(options: EntityDataOptions, path: Path) {\n return mergeWith(\n apply(url('./files'), [\n applyTemplates({\n ...stringUtils,\n ...options,\n }),\n move(path),\n ])\n );\n}\n\nexport default function (options: EntityDataOptions): Rule {\n return (host: Tree, context: SchematicContext) => {\n (options as any).name = '';\n options.path = getProjectPath(host, options);\n const mainFile = getProjectMainFile(host, options);\n const isStandalone = isStandaloneApp(host, mainFile);\n options.effects = options.effects === undefined ? true : options.effects;\n options.module =\n options.module && !isStandalone\n ? findModuleFromOptions(host, options as any)\n : options.module;\n\n const parsedPath = parseName(options.path, '');\n options.path = parsedPath.path;\n\n const configOrModuleUpdate = isStandalone\n ? addStandaloneConfig(options)\n : addEntityDataToNgModule(options);\n\n return chain([\n options && options.skipPackageJson ? noop() : addNgRxDataToPackageJson(),\n options.migrateNgrxData\n ? chain([\n removeAngularNgRxDataFromPackageJson(),\n renameNgrxDataModule(),\n ])\n : branchAndMerge(chain([configOrModuleUpdate])),\n options.entityConfig\n ? createEntityConfigFile(options, parsedPath.path)\n : noop(),\n ])(host, context);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/data/schematics/ng-add/index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\nimport { Path } from '@angular-devkit/core';\nimport {\n apply,\n applyTemplates,\n branchAndMerge,\n chain,\n mergeWith,\n move,\n Rule,\n SchematicContext,\n SchematicsException,\n noop,\n Tree,\n url,\n} from '@angular-devkit/schematics';\nimport { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';\nimport {\n addImportToModule,\n addPackageToPackageJson,\n commitChanges,\n createReplaceChange,\n findModuleFromOptions,\n getProjectPath,\n insertImport,\n parseName,\n platformVersion,\n ReplaceChange,\n stringUtils,\n visitTSSourceFiles,\n} from '../../schematics-core';\nimport { Schema as EntityDataOptions } from './schema';\nimport { getProjectMainFile } from '../../schematics-core/utility/project';\nimport {\n addFunctionalProvidersToStandaloneBootstrap,\n callsProvidersFunction,\n} from '../../schematics-core/utility/standalone';\nimport { isStandaloneApp } from '@schematics/angular/utility/ng-ast-utils';\n\nfunction addNgRxDataToPackageJson() {\n return (host: Tree, context: SchematicContext) => {\n addPackageToPackageJson(\n host,\n 'dependencies',\n '@ngrx/data',\n platformVersion\n );\n context.addTask(new NodePackageInstallTask());\n return host;\n };\n}\n\nfunction addEntityDataToNgModule(options: EntityDataOptions): Rule {\n return (host: Tree) => {\n throwIfModuleNotSpecified(host, options.module);\n\n const modulePath = options.module!;\n const text = host.read(modulePath)!.toString();\n\n const source = ts.createSourceFile(\n modulePath,\n text,\n ts.ScriptTarget.Latest,\n true\n );\n\n const moduleToImport = options.effects\n ? 'EntityDataModule'\n : 'EntityDataModuleWithoutEffects';\n\n const effectsModuleImport = insertImport(\n source,\n modulePath,\n moduleToImport,\n '@ngrx/data'\n );\n\n const [dateEntityNgModuleImport] = addImportToModule(\n source,\n modulePath,\n options.entityConfig\n ? [moduleToImport, 'forRoot(entityConfig)'].join('.')\n : moduleToImport,\n ''\n );\n\n const changes = [effectsModuleImport, dateEntityNgModuleImport];\n\n if (options.entityConfig) {\n const entityConfigImport = insertImport(\n source,\n modulePath,\n 'entityConfig',\n './entity-metadata'\n );\n changes.push(entityConfigImport);\n }\n\n commitChanges(host, source.fileName, changes);\n\n return host;\n };\n}\n\nfunction addStandaloneConfig(options: EntityDataOptions): Rule {\n return (host: Tree) => {\n const mainFile = getProjectMainFile(host, options);\n if (host.exists(mainFile)) {\n const providerFn = 'provideEntityData';\n\n if (callsProvidersFunction(host, mainFile, providerFn)) {\n // exit because the store config is already provided\n return host;\n }\n\n const providerOptions = [\n ...(options.entityConfig\n ? [ts.factory.createIdentifier(`entityConfig`)]\n : [ts.factory.createIdentifier(`{}`)]),\n ...(options.effects\n ? [ts.factory.createIdentifier(`withEffects()`)]\n : []),\n ];\n\n const patchedConfigFile = addFunctionalProvidersToStandaloneBootstrap(\n host,\n mainFile,\n providerFn,\n '@ngrx/data',\n providerOptions\n );\n\n const configFileContent = host.read(patchedConfigFile);\n const source = ts.createSourceFile(\n patchedConfigFile,\n configFileContent?.toString('utf-8') || '',\n ts.ScriptTarget.Latest,\n true\n );\n\n const recorder = host.beginUpdate(patchedConfigFile);\n\n const changes = [];\n\n if (options.effects) {\n const withEffectsImport = insertImport(\n source,\n patchedConfigFile,\n 'withEffects',\n '@ngrx/data'\n );\n\n changes.push(withEffectsImport);\n }\n\n if (options.entityConfig) {\n const entityConfigImport = insertImport(\n source,\n patchedConfigFile,\n 'entityConfig',\n './entity-metadata'\n );\n\n changes.push(entityConfigImport);\n }\n\n changes.forEach((change: any) => {\n recorder.insertLeft(change.pos, change.toAdd);\n });\n\n host.commitUpdate(recorder);\n\n return host;\n }\n\n throw new SchematicsException(\n `Main file not found for a project ${options.project}`\n );\n };\n}\n\nconst renames = {\n NgrxDataModule: 'EntityDataModule',\n NgrxDataModuleWithoutEffects: 'EntityDataModuleWithoutEffects',\n NgrxDataModuleConfig: 'EntityDataModuleConfig',\n};\n\nfunction removeAngularNgRxDataFromPackageJson() {\n return (host: Tree) => {\n if (host.exists('package.json')) {\n const sourceText = host.read('package.json')!.toString('utf-8');\n const json = JSON.parse(sourceText);\n\n if (json['dependencies'] && json['dependencies']['ngrx-data']) {\n delete json['dependencies']['ngrx-data'];\n }\n\n host.overwrite('package.json', JSON.stringify(json, null, 2));\n }\n\n return host;\n };\n}\n\nfunction renameNgrxDataModule() {\n return (host: Tree) => {\n visitTSSourceFiles(host, (sourceFile) => {\n const ngrxDataImports = sourceFile.statements\n .filter(ts.isImportDeclaration)\n .filter(\n ({ moduleSpecifier }) =>\n moduleSpecifier.getText(sourceFile) === \"'ngrx-data'\"\n );\n\n if (ngrxDataImports.length === 0) {\n return;\n }\n\n const changes = [\n ...findNgrxDataImports(sourceFile, ngrxDataImports),\n ...findNgrxDataImportDeclarations(sourceFile, ngrxDataImports),\n ...findNgrxDataReplacements(sourceFile),\n ];\n\n commitChanges(host, sourceFile.fileName, changes);\n });\n };\n}\n\nfunction findNgrxDataImports(\n sourceFile: ts.SourceFile,\n imports: ts.ImportDeclaration[]\n) {\n const changes = imports.map((specifier) =>\n createReplaceChange(\n sourceFile,\n specifier.moduleSpecifier,\n \"'ngrx-data'\",\n \"'@ngrx/data'\"\n )\n );\n\n return changes;\n}\n\nfunction findNgrxDataImportDeclarations(\n sourceFile: ts.SourceFile,\n imports: ts.ImportDeclaration[]\n) {\n const changes = imports\n .map((p) => (p.importClause!.namedBindings! as ts.NamedImports).elements)\n .reduce((imports, curr) => imports.concat(curr), [] as ts.ImportSpecifier[])\n .map((specifier) => {\n if (!ts.isImportSpecifier(specifier)) {\n return { hit: false };\n }\n\n const ngrxDataImports = Object.keys(renames);\n if (ngrxDataImports.includes(specifier.name.text)) {\n return { hit: true, specifier, text: specifier.name.text };\n }\n\n // if import is renamed\n if (\n specifier.propertyName &&\n ngrxDataImports.includes(specifier.propertyName.text)\n ) {\n return { hit: true, specifier, text: specifier.propertyName.text };\n }\n\n return { hit: false };\n })\n .filter(({ hit }) => hit)\n .map(({ specifier, text }) =>\n createReplaceChange(\n sourceFile,\n specifier!,\n text!,\n (renames as any)[text!]\n )\n );\n\n return changes;\n}\n\nfunction findNgrxDataReplacements(sourceFile: ts.SourceFile) {\n const renameKeys = Object.keys(renames);\n const changes: ReplaceChange[] = [];\n ts.forEachChild(sourceFile, (node) => find(node, changes));\n return changes;\n\n function find(node: ts.Node, changes: ReplaceChange[]) {\n let change = undefined;\n\n if (\n ts.isPropertyAssignment(node) &&\n renameKeys.includes(node.initializer.getText(sourceFile))\n ) {\n change = {\n node: node.initializer,\n text: node.initializer.getText(sourceFile),\n };\n }\n\n if (\n ts.isPropertyAccessExpression(node) &&\n renameKeys.includes(node.expression.getText(sourceFile))\n ) {\n change = {\n node: node.expression,\n text: node.expression.getText(sourceFile),\n };\n }\n\n if (\n ts.isVariableDeclaration(node) &&\n node.type &&\n renameKeys.includes(node.type.getText(sourceFile))\n ) {\n change = {\n node: node.type,\n text: node.type.getText(sourceFile),\n };\n }\n\n if (change) {\n changes.push(\n createReplaceChange(\n sourceFile,\n change.node,\n change.text,\n (renames as any)[change.text]\n )\n );\n }\n\n ts.forEachChild(node, (childNode) => find(childNode, changes));\n }\n}\n\nfunction throwIfModuleNotSpecified(host: Tree, module?: string) {\n if (!module) {\n throw new Error('Module not specified');\n }\n\n if (!host.exists(module)) {\n throw new Error('Specified module does not exist');\n }\n\n const text = host.read(module);\n if (text === null) {\n throw new SchematicsException(`File ${module} does not exist.`);\n }\n}\n\nfunction createEntityConfigFile(options: EntityDataOptions, path: Path) {\n return mergeWith(\n apply(url('./files'), [\n applyTemplates({\n ...stringUtils,\n ...options,\n }),\n move(path),\n ])\n );\n}\n\nexport default function (options: EntityDataOptions): Rule {\n return (host: Tree, context: SchematicContext) => {\n (options as any).name = '';\n options.path = getProjectPath(host, options);\n const mainFile = getProjectMainFile(host, options);\n const isStandalone = isStandaloneApp(host, mainFile);\n options.effects = options.effects === undefined ? true : options.effects;\n options.module =\n options.module && !isStandalone\n ? findModuleFromOptions(host, options as any)\n : options.module;\n\n const parsedPath = parseName(options.path, '');\n options.path = parsedPath.path;\n\n const configOrModuleUpdate = isStandalone\n ? addStandaloneConfig(options)\n : addEntityDataToNgModule(options);\n\n return chain([\n options && options.skipPackageJson ? noop() : addNgRxDataToPackageJson(),\n options.migrateNgrxData\n ? chain([\n removeAngularNgRxDataFromPackageJson(),\n renameNgrxDataModule(),\n ])\n : branchAndMerge(chain([configOrModuleUpdate])),\n options.entityConfig\n ? createEntityConfigFile(options, parsedPath.path)\n : noop(),\n ])(host, context);\n };\n}\n"]}
|
package/schematics-core/index.js
CHANGED
|
@@ -1,26 +1,77 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.visitTemplates = exports.visitNgModules = exports.visitDecorator = exports.visitComponents = exports.visitNgModuleExports = exports.visitNgModuleImports = exports.visitTSSourceFiles = exports.platformVersion = exports.addPackageToPackageJson = exports.parseName = exports.updatePackage = exports.stringUtils = exports.isLib = exports.getProject = exports.getProjectPath = exports.getPrefix = exports.omit = exports.addReducerToActionReducerMap = exports.addReducerImportToNgModule = exports.addReducerToStateInterface = exports.addReducerToState = exports.findPropertyInAstObject = exports.buildRelativePath = exports.findModuleFromOptions = exports.findModule = exports.findComponentFromOptions = exports.getWorkspacePath = exports.getWorkspace = exports.commitChanges = exports.createChangeRecorder = exports.createReplaceChange = exports.ReplaceChange = exports.RemoveChange = exports.InsertChange = exports.NoopChange = exports.containsProperty = exports.replaceImport = exports.addProviderToModule = exports.addProviderToComponent = exports.addImportToModule = exports.addExportToModule = exports.addDeclarationToModule = exports.addBootstrapToModule = exports.insertImport = exports.insertAfterLastOccurrence = exports.getContentOfKeyLiteral = exports.getDecoratorMetadata = exports.getSourceNodes = exports.findNodes = void 0;
|
|
4
|
+
const strings_1 = require("./utility/strings");
|
|
5
|
+
var ast_utils_1 = require("./utility/ast-utils");
|
|
6
|
+
Object.defineProperty(exports, "findNodes", { enumerable: true, get: function () { return ast_utils_1.findNodes; } });
|
|
7
|
+
Object.defineProperty(exports, "getSourceNodes", { enumerable: true, get: function () { return ast_utils_1.getSourceNodes; } });
|
|
8
|
+
Object.defineProperty(exports, "getDecoratorMetadata", { enumerable: true, get: function () { return ast_utils_1.getDecoratorMetadata; } });
|
|
9
|
+
Object.defineProperty(exports, "getContentOfKeyLiteral", { enumerable: true, get: function () { return ast_utils_1.getContentOfKeyLiteral; } });
|
|
10
|
+
Object.defineProperty(exports, "insertAfterLastOccurrence", { enumerable: true, get: function () { return ast_utils_1.insertAfterLastOccurrence; } });
|
|
11
|
+
Object.defineProperty(exports, "insertImport", { enumerable: true, get: function () { return ast_utils_1.insertImport; } });
|
|
12
|
+
Object.defineProperty(exports, "addBootstrapToModule", { enumerable: true, get: function () { return ast_utils_1.addBootstrapToModule; } });
|
|
13
|
+
Object.defineProperty(exports, "addDeclarationToModule", { enumerable: true, get: function () { return ast_utils_1.addDeclarationToModule; } });
|
|
14
|
+
Object.defineProperty(exports, "addExportToModule", { enumerable: true, get: function () { return ast_utils_1.addExportToModule; } });
|
|
15
|
+
Object.defineProperty(exports, "addImportToModule", { enumerable: true, get: function () { return ast_utils_1.addImportToModule; } });
|
|
16
|
+
Object.defineProperty(exports, "addProviderToComponent", { enumerable: true, get: function () { return ast_utils_1.addProviderToComponent; } });
|
|
17
|
+
Object.defineProperty(exports, "addProviderToModule", { enumerable: true, get: function () { return ast_utils_1.addProviderToModule; } });
|
|
18
|
+
Object.defineProperty(exports, "replaceImport", { enumerable: true, get: function () { return ast_utils_1.replaceImport; } });
|
|
19
|
+
Object.defineProperty(exports, "containsProperty", { enumerable: true, get: function () { return ast_utils_1.containsProperty; } });
|
|
20
|
+
var change_1 = require("./utility/change");
|
|
21
|
+
Object.defineProperty(exports, "NoopChange", { enumerable: true, get: function () { return change_1.NoopChange; } });
|
|
22
|
+
Object.defineProperty(exports, "InsertChange", { enumerable: true, get: function () { return change_1.InsertChange; } });
|
|
23
|
+
Object.defineProperty(exports, "RemoveChange", { enumerable: true, get: function () { return change_1.RemoveChange; } });
|
|
24
|
+
Object.defineProperty(exports, "ReplaceChange", { enumerable: true, get: function () { return change_1.ReplaceChange; } });
|
|
25
|
+
Object.defineProperty(exports, "createReplaceChange", { enumerable: true, get: function () { return change_1.createReplaceChange; } });
|
|
26
|
+
Object.defineProperty(exports, "createChangeRecorder", { enumerable: true, get: function () { return change_1.createChangeRecorder; } });
|
|
27
|
+
Object.defineProperty(exports, "commitChanges", { enumerable: true, get: function () { return change_1.commitChanges; } });
|
|
28
|
+
var config_1 = require("./utility/config");
|
|
29
|
+
Object.defineProperty(exports, "getWorkspace", { enumerable: true, get: function () { return config_1.getWorkspace; } });
|
|
30
|
+
Object.defineProperty(exports, "getWorkspacePath", { enumerable: true, get: function () { return config_1.getWorkspacePath; } });
|
|
31
|
+
var find_component_1 = require("./utility/find-component");
|
|
32
|
+
Object.defineProperty(exports, "findComponentFromOptions", { enumerable: true, get: function () { return find_component_1.findComponentFromOptions; } });
|
|
33
|
+
var find_module_1 = require("./utility/find-module");
|
|
34
|
+
Object.defineProperty(exports, "findModule", { enumerable: true, get: function () { return find_module_1.findModule; } });
|
|
35
|
+
Object.defineProperty(exports, "findModuleFromOptions", { enumerable: true, get: function () { return find_module_1.findModuleFromOptions; } });
|
|
36
|
+
Object.defineProperty(exports, "buildRelativePath", { enumerable: true, get: function () { return find_module_1.buildRelativePath; } });
|
|
37
|
+
var json_utilts_1 = require("./utility/json-utilts");
|
|
38
|
+
Object.defineProperty(exports, "findPropertyInAstObject", { enumerable: true, get: function () { return json_utilts_1.findPropertyInAstObject; } });
|
|
39
|
+
var ngrx_utils_1 = require("./utility/ngrx-utils");
|
|
40
|
+
Object.defineProperty(exports, "addReducerToState", { enumerable: true, get: function () { return ngrx_utils_1.addReducerToState; } });
|
|
41
|
+
Object.defineProperty(exports, "addReducerToStateInterface", { enumerable: true, get: function () { return ngrx_utils_1.addReducerToStateInterface; } });
|
|
42
|
+
Object.defineProperty(exports, "addReducerImportToNgModule", { enumerable: true, get: function () { return ngrx_utils_1.addReducerImportToNgModule; } });
|
|
43
|
+
Object.defineProperty(exports, "addReducerToActionReducerMap", { enumerable: true, get: function () { return ngrx_utils_1.addReducerToActionReducerMap; } });
|
|
44
|
+
Object.defineProperty(exports, "omit", { enumerable: true, get: function () { return ngrx_utils_1.omit; } });
|
|
45
|
+
Object.defineProperty(exports, "getPrefix", { enumerable: true, get: function () { return ngrx_utils_1.getPrefix; } });
|
|
46
|
+
var project_1 = require("./utility/project");
|
|
47
|
+
Object.defineProperty(exports, "getProjectPath", { enumerable: true, get: function () { return project_1.getProjectPath; } });
|
|
48
|
+
Object.defineProperty(exports, "getProject", { enumerable: true, get: function () { return project_1.getProject; } });
|
|
49
|
+
Object.defineProperty(exports, "isLib", { enumerable: true, get: function () { return project_1.isLib; } });
|
|
50
|
+
exports.stringUtils = {
|
|
51
|
+
dasherize: strings_1.dasherize,
|
|
52
|
+
decamelize: strings_1.decamelize,
|
|
53
|
+
camelize: strings_1.camelize,
|
|
54
|
+
classify: strings_1.classify,
|
|
55
|
+
underscore: strings_1.underscore,
|
|
56
|
+
group: strings_1.group,
|
|
57
|
+
capitalize: strings_1.capitalize,
|
|
58
|
+
featurePath: strings_1.featurePath,
|
|
59
|
+
pluralize: strings_1.pluralize,
|
|
20
60
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
61
|
+
var update_1 = require("./utility/update");
|
|
62
|
+
Object.defineProperty(exports, "updatePackage", { enumerable: true, get: function () { return update_1.updatePackage; } });
|
|
63
|
+
var parse_name_1 = require("./utility/parse-name");
|
|
64
|
+
Object.defineProperty(exports, "parseName", { enumerable: true, get: function () { return parse_name_1.parseName; } });
|
|
65
|
+
var package_1 = require("./utility/package");
|
|
66
|
+
Object.defineProperty(exports, "addPackageToPackageJson", { enumerable: true, get: function () { return package_1.addPackageToPackageJson; } });
|
|
67
|
+
var libs_version_1 = require("./utility/libs-version");
|
|
68
|
+
Object.defineProperty(exports, "platformVersion", { enumerable: true, get: function () { return libs_version_1.platformVersion; } });
|
|
69
|
+
var visitors_1 = require("./utility/visitors");
|
|
70
|
+
Object.defineProperty(exports, "visitTSSourceFiles", { enumerable: true, get: function () { return visitors_1.visitTSSourceFiles; } });
|
|
71
|
+
Object.defineProperty(exports, "visitNgModuleImports", { enumerable: true, get: function () { return visitors_1.visitNgModuleImports; } });
|
|
72
|
+
Object.defineProperty(exports, "visitNgModuleExports", { enumerable: true, get: function () { return visitors_1.visitNgModuleExports; } });
|
|
73
|
+
Object.defineProperty(exports, "visitComponents", { enumerable: true, get: function () { return visitors_1.visitComponents; } });
|
|
74
|
+
Object.defineProperty(exports, "visitDecorator", { enumerable: true, get: function () { return visitors_1.visitDecorator; } });
|
|
75
|
+
Object.defineProperty(exports, "visitNgModules", { enumerable: true, get: function () { return visitors_1.visitNgModules; } });
|
|
76
|
+
Object.defineProperty(exports, "visitTemplates", { enumerable: true, get: function () { return visitors_1.visitTemplates; } });
|
|
26
77
|
//# sourceMappingURL=index.js.map
|