@angular/core 19.2.0-next.3 → 19.2.0-rc.0
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/fesm2022/core.mjs +973 -988
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/signals.mjs +5 -5
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +4 -4
- package/index.d.ts +68 -35
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +2 -2
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/apply_import_manager-a930fcf1.js +71 -0
- package/schematics/bundles/{checker-32db85a6.js → checker-2eecc677.js} +17 -16
- package/schematics/bundles/cleanup-unused-imports.js +16 -15
- package/schematics/bundles/{compiler_host-540e221c.js → compiler_host-c280a924.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +3 -3
- package/schematics/bundles/imports-abe29092.js +1 -1
- package/schematics/bundles/{index-d5020c9c.js → index-24a2ad1e.js} +9 -9
- package/schematics/bundles/{index-7ee8967e.js → index-3891dd55.js} +4 -4
- package/schematics/bundles/inject-migration.js +8 -7
- package/schematics/bundles/leading_space-d190b83b.js +1 -1
- package/schematics/bundles/{migrate_ts_type_references-26986908.js → migrate_ts_type_references-71b3a951.js} +20 -20
- package/schematics/bundles/{nodes-a9f0b985.js → ng_decorators-e699c081.js} +1 -14
- package/schematics/bundles/nodes-a535b2be.js +27 -0
- package/schematics/bundles/output-migration.js +21 -20
- package/schematics/bundles/pending-tasks.js +3 -3
- package/schematics/bundles/{program-507de2f1.js → program-24da9092.js} +90 -45
- package/schematics/bundles/{apply_import_manager-f4d044b2.js → project_paths-b073c4d6.js} +3 -57
- package/schematics/bundles/project_tsconfig_paths-e9ccccbf.js +1 -1
- package/schematics/bundles/property_name-7c8433f5.js +31 -0
- package/schematics/bundles/provide-initializer.js +3 -3
- package/schematics/bundles/route-lazy-loading.js +8 -12
- package/schematics/bundles/self-closing-tags-migration.js +448 -0
- package/schematics/bundles/signal-input-migration.js +20 -19
- package/schematics/bundles/signal-queries-migration.js +26 -25
- package/schematics/bundles/signals.js +7 -6
- package/schematics/bundles/standalone-migration.js +12 -11
- package/schematics/collection.json +6 -0
- package/schematics/ng-generate/self-closing-tags-migration/schema.json +14 -0
- package/testing/index.d.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.2.0-
|
|
3
|
+
* @license Angular v19.2.0-rc.0
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,15 +10,16 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
13
|
-
var
|
|
13
|
+
var project_paths = require('./project_paths-b073c4d6.js');
|
|
14
14
|
require('os');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var checker = require('./checker-
|
|
17
|
-
var program = require('./program-
|
|
16
|
+
var checker = require('./checker-2eecc677.js');
|
|
17
|
+
var program = require('./program-24da9092.js');
|
|
18
18
|
require('path');
|
|
19
|
-
var
|
|
19
|
+
var apply_import_manager = require('./apply_import_manager-a930fcf1.js');
|
|
20
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-71b3a951.js');
|
|
20
21
|
var assert = require('assert');
|
|
21
|
-
var index = require('./index-
|
|
22
|
+
var index = require('./index-24a2ad1e.js');
|
|
22
23
|
require('@angular-devkit/core');
|
|
23
24
|
require('node:path/posix');
|
|
24
25
|
require('fs');
|
|
@@ -63,7 +64,7 @@ function migrateHostBindings(host, references, info) {
|
|
|
63
64
|
const appendText = reference.from.isObjectShorthandExpression
|
|
64
65
|
? `: ${reference.from.read.name}()`
|
|
65
66
|
: `()`;
|
|
66
|
-
host.replacements.push(new
|
|
67
|
+
host.replacements.push(new project_paths.Replacement(project_paths.projectFile(bindingField.getSourceFile(), info), new project_paths.TextUpdate({ position: readEndPos, end: readEndPos, toInsert: appendText })));
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
|
|
@@ -92,7 +93,7 @@ function migrateTemplateReferences(host, references) {
|
|
|
92
93
|
const appendText = reference.from.isObjectShorthandExpression
|
|
93
94
|
? `: ${reference.from.read.name}()`
|
|
94
95
|
: `()`;
|
|
95
|
-
host.replacements.push(new
|
|
96
|
+
host.replacements.push(new project_paths.Replacement(reference.from.templateFile, new project_paths.TextUpdate({
|
|
96
97
|
position: reference.from.read.sourceSpan.end,
|
|
97
98
|
end: reference.from.read.sourceSpan.end,
|
|
98
99
|
toInsert: appendText,
|
|
@@ -223,7 +224,7 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
|
|
|
223
224
|
resolvedReadType === null && type !== undefined ? [type] : undefined, args);
|
|
224
225
|
const updated = ts__default["default"].factory.createPropertyDeclaration([ts__default["default"].factory.createModifier(ts__default["default"].SyntaxKind.ReadonlyKeyword)], node.name, undefined, undefined, call);
|
|
225
226
|
return [
|
|
226
|
-
new
|
|
227
|
+
new project_paths.Replacement(project_paths.projectFile(node.getSourceFile(), info), new project_paths.TextUpdate({
|
|
227
228
|
position: node.getStart(),
|
|
228
229
|
end: node.getEnd(),
|
|
229
230
|
toInsert: printer.printNode(ts__default["default"].EmitHint.Unspecified, updated, sf),
|
|
@@ -264,7 +265,7 @@ function getUniqueIDForClassProperty(property, info) {
|
|
|
264
265
|
if (property.name === undefined) {
|
|
265
266
|
return null;
|
|
266
267
|
}
|
|
267
|
-
const id =
|
|
268
|
+
const id = project_paths.projectFile(property.getSourceFile(), info).id.replace(/\.d\.ts$/, '.ts');
|
|
268
269
|
// Note: If a class is nested, there could be an ID clash.
|
|
269
270
|
// This is highly unlikely though, and this is not a problem because
|
|
270
271
|
// in such cases, there is even less chance there are any references to
|
|
@@ -388,7 +389,7 @@ class KnownQueries {
|
|
|
388
389
|
});
|
|
389
390
|
this.knownQueryIDs.set(id, { key: id, node: queryField });
|
|
390
391
|
const descriptor = { key: id, node: queryField };
|
|
391
|
-
const file =
|
|
392
|
+
const file = project_paths.projectFile(queryField.getSourceFile(), this.info);
|
|
392
393
|
if (this.config.shouldMigrateQuery !== undefined &&
|
|
393
394
|
!this.config.shouldMigrateQuery(descriptor, file)) {
|
|
394
395
|
this.markFieldIncompatible(descriptor, {
|
|
@@ -587,7 +588,7 @@ function removeQueryListToArrayCall(ref, info, globalMetadata, knownQueries, rep
|
|
|
587
588
|
return;
|
|
588
589
|
}
|
|
589
590
|
const toArrayExpr = toArrayCallExpr.expression;
|
|
590
|
-
replacements.push(new
|
|
591
|
+
replacements.push(new project_paths.Replacement(project_paths.projectFile(toArrayExpr.getSourceFile(), info), new project_paths.TextUpdate({
|
|
591
592
|
// Delete from expression end to call end. E.g. `.toArray(<..>)`.
|
|
592
593
|
position: toArrayExpr.expression.getEnd(),
|
|
593
594
|
end: toArrayCallExpr.getEnd(),
|
|
@@ -602,7 +603,7 @@ function removeQueryListToArrayCall(ref, info, globalMetadata, knownQueries, rep
|
|
|
602
603
|
}
|
|
603
604
|
const file = index.isHostBindingReference(ref) ? ref.from.file : ref.from.templateFile;
|
|
604
605
|
const offset = index.isHostBindingReference(ref) ? ref.from.hostPropertyNode.getStart() + 1 : 0;
|
|
605
|
-
replacements.push(new
|
|
606
|
+
replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
|
|
606
607
|
// Delete from expression end to call end. E.g. `.toArray(<..>)`.
|
|
607
608
|
position: offset + callExpr.receiver.receiver.sourceSpan.end,
|
|
608
609
|
end: offset + callExpr.sourceSpan.end,
|
|
@@ -626,7 +627,7 @@ function replaceQueryListGetCall(ref, info, globalMetadata, knownQueries, replac
|
|
|
626
627
|
return;
|
|
627
628
|
}
|
|
628
629
|
const getExpr = getCallExpr.expression;
|
|
629
|
-
replacements.push(new
|
|
630
|
+
replacements.push(new project_paths.Replacement(project_paths.projectFile(getExpr.getSourceFile(), info), new project_paths.TextUpdate({
|
|
630
631
|
position: getExpr.name.getStart(),
|
|
631
632
|
end: getExpr.name.getEnd(),
|
|
632
633
|
toInsert: 'at',
|
|
@@ -640,7 +641,7 @@ function replaceQueryListGetCall(ref, info, globalMetadata, knownQueries, replac
|
|
|
640
641
|
}
|
|
641
642
|
const file = index.isHostBindingReference(ref) ? ref.from.file : ref.from.templateFile;
|
|
642
643
|
const offset = index.isHostBindingReference(ref) ? ref.from.hostPropertyNode.getStart() + 1 : 0;
|
|
643
|
-
replacements.push(new
|
|
644
|
+
replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
|
|
644
645
|
position: offset + callExpr.receiver.nameSpan.start,
|
|
645
646
|
end: offset + callExpr.receiver.nameSpan.end,
|
|
646
647
|
toInsert: 'at',
|
|
@@ -695,7 +696,7 @@ function replaceQueryListFirstAndLastReferences(ref, info, globalMetadata, known
|
|
|
695
696
|
if (expr === null) {
|
|
696
697
|
return;
|
|
697
698
|
}
|
|
698
|
-
replacements.push(new
|
|
699
|
+
replacements.push(new project_paths.Replacement(project_paths.projectFile(expr.getSourceFile(), info), new project_paths.TextUpdate({
|
|
699
700
|
position: expr.name.getStart(),
|
|
700
701
|
end: expr.name.getEnd(),
|
|
701
702
|
toInsert: mapping.get(expr.name.text),
|
|
@@ -709,14 +710,14 @@ function replaceQueryListFirstAndLastReferences(ref, info, globalMetadata, known
|
|
|
709
710
|
}
|
|
710
711
|
const file = index.isHostBindingReference(ref) ? ref.from.file : ref.from.templateFile;
|
|
711
712
|
const offset = index.isHostBindingReference(ref) ? ref.from.hostPropertyNode.getStart() + 1 : 0;
|
|
712
|
-
replacements.push(new
|
|
713
|
+
replacements.push(new project_paths.Replacement(file, new project_paths.TextUpdate({
|
|
713
714
|
position: offset + expr.nameSpan.start,
|
|
714
715
|
end: offset + expr.nameSpan.end,
|
|
715
716
|
toInsert: mapping.get(expr.name),
|
|
716
717
|
})));
|
|
717
718
|
}
|
|
718
719
|
|
|
719
|
-
class SignalQueriesMigration extends
|
|
720
|
+
class SignalQueriesMigration extends project_paths.TsurgeComplexMigration {
|
|
720
721
|
config;
|
|
721
722
|
constructor(config = {}) {
|
|
722
723
|
super();
|
|
@@ -754,7 +755,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
|
|
|
754
755
|
key: extractedQuery.id,
|
|
755
756
|
node: queryNode,
|
|
756
757
|
};
|
|
757
|
-
const containingFile =
|
|
758
|
+
const containingFile = project_paths.projectFile(queryNode.getSourceFile(), info);
|
|
758
759
|
// If we have a config filter function, use it here for later
|
|
759
760
|
// perf-boosted reference lookups. Useful in non-batch mode.
|
|
760
761
|
if (this.config.shouldMigrateQuery === undefined ||
|
|
@@ -858,7 +859,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
|
|
|
858
859
|
if (this.config.assumeNonBatch) {
|
|
859
860
|
res.reusableAnalysisReferences = referenceResult.references;
|
|
860
861
|
}
|
|
861
|
-
return
|
|
862
|
+
return project_paths.confirmAsSerializable(res);
|
|
862
863
|
}
|
|
863
864
|
async combine(unitA, unitB) {
|
|
864
865
|
const combined = {
|
|
@@ -898,7 +899,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
|
|
|
898
899
|
}
|
|
899
900
|
}
|
|
900
901
|
}
|
|
901
|
-
return
|
|
902
|
+
return project_paths.confirmAsSerializable(combined);
|
|
902
903
|
}
|
|
903
904
|
async globalMeta(combinedData) {
|
|
904
905
|
const globalUnitData = {
|
|
@@ -911,7 +912,7 @@ class SignalQueriesMigration extends apply_import_manager.TsurgeComplexMigration
|
|
|
911
912
|
markFieldIncompatibleInMetadata(globalUnitData.problematicQueries, id, migrate_ts_type_references.FieldIncompatibilityReason.SignalQueries__QueryListProblematicFieldAccessed);
|
|
912
913
|
}
|
|
913
914
|
}
|
|
914
|
-
return
|
|
915
|
+
return project_paths.confirmAsSerializable(globalUnitData);
|
|
915
916
|
}
|
|
916
917
|
async migrate(globalMetadata, info) {
|
|
917
918
|
// Pre-Analyze the program and get access to the template type checker.
|
|
@@ -1116,7 +1117,7 @@ function migrate(options) {
|
|
|
1116
1117
|
if (!buildPaths.length && !testPaths.length) {
|
|
1117
1118
|
throw new schematics.SchematicsException('Could not find any tsconfig file. Cannot run signal queries migration.');
|
|
1118
1119
|
}
|
|
1119
|
-
const fs = new
|
|
1120
|
+
const fs = new project_paths.DevkitMigrationFilesystem(tree);
|
|
1120
1121
|
checker.setFileSystem(fs);
|
|
1121
1122
|
const migration = new SignalQueriesMigration({
|
|
1122
1123
|
bestEffortMode: options.bestEffortMode,
|
|
@@ -1148,7 +1149,7 @@ function migrate(options) {
|
|
|
1148
1149
|
context.logger.info(``);
|
|
1149
1150
|
context.logger.info(`Processing analysis data between targets..`);
|
|
1150
1151
|
context.logger.info(``);
|
|
1151
|
-
const combined = await
|
|
1152
|
+
const combined = await project_paths.synchronouslyCombineUnitData(migration, unitResults);
|
|
1152
1153
|
if (combined === null) {
|
|
1153
1154
|
context.logger.error('Migration failed unexpectedly with no analysis data');
|
|
1154
1155
|
return;
|
|
@@ -1158,7 +1159,7 @@ function migrate(options) {
|
|
|
1158
1159
|
for (const { info, tsconfigPath } of programInfos) {
|
|
1159
1160
|
context.logger.info(`Migrating: ${tsconfigPath}..`);
|
|
1160
1161
|
const { replacements } = await migration.migrate(globalMeta, info);
|
|
1161
|
-
const changesPerFile =
|
|
1162
|
+
const changesPerFile = project_paths.groupReplacementsByFile(replacements);
|
|
1162
1163
|
for (const [file, changes] of changesPerFile) {
|
|
1163
1164
|
if (!replacementsPerFile.has(file)) {
|
|
1164
1165
|
replacementsPerFile.set(file, changes);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.2.0-
|
|
3
|
+
* @license Angular v19.2.0-rc.0
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -14,19 +14,20 @@ var signalInputMigration = require('./signal-input-migration.js');
|
|
|
14
14
|
var outputMigration = require('./output-migration.js');
|
|
15
15
|
require('./project_tsconfig_paths-e9ccccbf.js');
|
|
16
16
|
require('@angular-devkit/core');
|
|
17
|
-
require('./
|
|
17
|
+
require('./project_paths-b073c4d6.js');
|
|
18
18
|
require('node:path/posix');
|
|
19
19
|
require('os');
|
|
20
20
|
require('typescript');
|
|
21
|
-
require('./checker-
|
|
21
|
+
require('./checker-2eecc677.js');
|
|
22
22
|
require('fs');
|
|
23
23
|
require('module');
|
|
24
24
|
require('path');
|
|
25
25
|
require('url');
|
|
26
|
-
require('./program-
|
|
27
|
-
require('./
|
|
26
|
+
require('./program-24da9092.js');
|
|
27
|
+
require('./apply_import_manager-a930fcf1.js');
|
|
28
|
+
require('./migrate_ts_type_references-71b3a951.js');
|
|
28
29
|
require('assert');
|
|
29
|
-
require('./index-
|
|
30
|
+
require('./index-24a2ad1e.js');
|
|
30
31
|
require('./leading_space-d190b83b.js');
|
|
31
32
|
|
|
32
33
|
function migrate(options) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.2.0-
|
|
3
|
+
* @license Angular v19.2.0-rc.0
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -9,17 +9,18 @@
|
|
|
9
9
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
|
-
require('./index-
|
|
12
|
+
require('./index-3891dd55.js');
|
|
13
13
|
var fs = require('fs');
|
|
14
14
|
var p = require('path');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var compiler_host = require('./compiler_host-
|
|
16
|
+
var compiler_host = require('./compiler_host-c280a924.js');
|
|
17
17
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
18
|
-
var
|
|
18
|
+
var ng_decorators = require('./ng_decorators-e699c081.js');
|
|
19
|
+
var nodes = require('./nodes-a535b2be.js');
|
|
19
20
|
var imports = require('./imports-abe29092.js');
|
|
20
|
-
var checker = require('./checker-
|
|
21
|
+
var checker = require('./checker-2eecc677.js');
|
|
21
22
|
require('os');
|
|
22
|
-
var program = require('./program-
|
|
23
|
+
var program = require('./program-24da9092.js');
|
|
23
24
|
require('@angular-devkit/core');
|
|
24
25
|
require('module');
|
|
25
26
|
require('url');
|
|
@@ -671,7 +672,7 @@ function findNgModuleClassesToMigrate(sourceFile, typeChecker) {
|
|
|
671
672
|
if (imports.getImportSpecifier(sourceFile, '@angular/core', 'NgModule')) {
|
|
672
673
|
sourceFile.forEachChild(function walk(node) {
|
|
673
674
|
if (ts__default["default"].isClassDeclaration(node)) {
|
|
674
|
-
const decorator =
|
|
675
|
+
const decorator = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(node) || []).find((current) => current.name === 'NgModule');
|
|
675
676
|
const metadata = decorator ? extractMetadataLiteral(decorator.node) : null;
|
|
676
677
|
if (metadata) {
|
|
677
678
|
const declarations = findLiteralProperty(metadata, 'declarations');
|
|
@@ -854,7 +855,7 @@ function analyzeTestingModules(testObjects, typeChecker) {
|
|
|
854
855
|
if (seenDeclarations.has(decl)) {
|
|
855
856
|
continue;
|
|
856
857
|
}
|
|
857
|
-
const [decorator] =
|
|
858
|
+
const [decorator] = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(decl) || []);
|
|
858
859
|
if (decorator) {
|
|
859
860
|
seenDeclarations.add(decl);
|
|
860
861
|
decorators.push(decorator);
|
|
@@ -1391,7 +1392,7 @@ function addRemovalTodos(nodes, tracker) {
|
|
|
1391
1392
|
}
|
|
1392
1393
|
/** Finds the `NgModule` decorator in a class, if it exists. */
|
|
1393
1394
|
function findNgModuleDecorator(node, typeChecker) {
|
|
1394
|
-
const decorators =
|
|
1395
|
+
const decorators = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(node) || []);
|
|
1395
1396
|
return decorators.find((decorator) => decorator.name === 'NgModule') || null;
|
|
1396
1397
|
}
|
|
1397
1398
|
/**
|
|
@@ -1467,7 +1468,7 @@ function analyzeBootstrapCall(call, typeChecker, templateTypeChecker) {
|
|
|
1467
1468
|
if (!declaration) {
|
|
1468
1469
|
return null;
|
|
1469
1470
|
}
|
|
1470
|
-
const decorator =
|
|
1471
|
+
const decorator = ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(declaration) || []).find((decorator) => decorator.name === 'NgModule');
|
|
1471
1472
|
if (!decorator ||
|
|
1472
1473
|
decorator.node.expression.arguments.length === 0 ||
|
|
1473
1474
|
!ts__default["default"].isObjectLiteralExpression(decorator.node.expression.arguments[0])) {
|
|
@@ -1656,7 +1657,7 @@ function migrateImportsForBootstrapCall(sourceFile, imports, nodeLookup, imports
|
|
|
1656
1657
|
: element;
|
|
1657
1658
|
const classDeclaration = findClassDeclaration(target, typeChecker);
|
|
1658
1659
|
const decorators = classDeclaration
|
|
1659
|
-
?
|
|
1660
|
+
? ng_decorators.getAngularDecorators(typeChecker, ts__default["default"].getDecorators(classDeclaration) || [])
|
|
1660
1661
|
: undefined;
|
|
1661
1662
|
if (!decorators ||
|
|
1662
1663
|
decorators.length === 0 ||
|
|
@@ -51,6 +51,12 @@
|
|
|
51
51
|
"description": "Removes unused imports from standalone components.",
|
|
52
52
|
"factory": "./bundles/cleanup-unused-imports#migrate",
|
|
53
53
|
"schema": "./ng-generate/cleanup-unused-imports/schema.json"
|
|
54
|
+
},
|
|
55
|
+
"self-closing-tags-migration": {
|
|
56
|
+
"description": "Updates the components templates to use self-closing tags where possible",
|
|
57
|
+
"factory": "./bundles/self-closing-tags-migration#migrate",
|
|
58
|
+
"schema": "./ng-generate/self-closing-tags-migration/schema.json",
|
|
59
|
+
"aliases": ["self-closing-tag"]
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema",
|
|
3
|
+
"$id": "AngularSelfClosingTagMigration",
|
|
4
|
+
"title": "Angular Self Closing Tag Migration Schema",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"path": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Path to the directory where all templates should be migrated.",
|
|
10
|
+
"x-prompt": "Which directory do you want to migrate?",
|
|
11
|
+
"default": "./"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
package/testing/index.d.ts
CHANGED