This commit is contained in:
CHEVALLIER Abel
2025-11-13 16:23:22 +01:00
parent de9c515a47
commit cb235644dc
34924 changed files with 3811102 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
"use strict";
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClassNamesMigration = void 0;
const schematics_1 = require("@angular/cdk/schematics");
const ts = require("typescript");
const module_specifiers_1 = require("../../utils/ng-update/module-specifiers");
const upgrade_data_1 = require("../upgrade-data");
class ClassNamesMigration extends schematics_1.Migration {
constructor() {
super(...arguments);
/** Change data that upgrades to the specified target version. */
this.data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'classNames');
/**
* List of identifier names that have been imported from `@ng-zorro-antd`
* in the current source file and therefore can be considered trusted.
*/
this.trustedIdentifiers = new Set();
/** List of namespaces that have been imported from `@ng-zorro-antd`. */
this.trustedNamespaces = new Set();
// Only enable the migration rule if there is upgrade data.
this.enabled = this.data.length !== 0;
}
visitNode(node) {
if (ts.isIdentifier(node)) {
this.visitIdentifier(node);
}
}
/** Method that is called for every identifier inside of the specified project. */
visitIdentifier(identifier) {
if (!this.data.some(data => data.replace === identifier.text)) {
return;
}
if ((0, schematics_1.isNamespaceImportNode)(identifier) && (0, module_specifiers_1.isNgZorroImportDeclaration)(identifier)) {
this.trustedNamespaces.add(identifier.text);
return this._createFailureWithReplacement(identifier);
}
if ((0, schematics_1.isExportSpecifierNode)(identifier) && (0, module_specifiers_1.isNgZorroExportDeclaration)(identifier)) {
return this._createFailureWithReplacement(identifier);
}
if ((0, schematics_1.isImportSpecifierNode)(identifier) && (0, module_specifiers_1.isNgZorroImportDeclaration)(identifier)) {
this.trustedIdentifiers.add(identifier.text);
return this._createFailureWithReplacement(identifier);
}
if (ts.isPropertyAccessExpression(identifier.parent)) {
const expression = identifier.parent.expression;
if (ts.isIdentifier(expression) && this.trustedNamespaces.has(expression.text)) {
return this._createFailureWithReplacement(identifier);
}
}
else if (this.trustedIdentifiers.has(identifier.text)) {
return this._createFailureWithReplacement(identifier);
}
}
/** Creates a failure and replacement for the specified identifier. */
_createFailureWithReplacement(identifier) {
const classData = this.data.find(data => data.replace === identifier.text);
const filePath = this.fileSystem.resolve(identifier.getSourceFile().fileName);
this.fileSystem.edit(filePath)
.remove(identifier.getStart(), identifier.getWidth())
.insertRight(identifier.getStart(), classData.replaceWith);
}
}
exports.ClassNamesMigration = ClassNamesMigration;
//# sourceMappingURL=class-names.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"class-names.js","sourceRoot":"","sources":["../../../../schematics/ng-update/migrations/class-names.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,42 @@
"use strict";
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ImportSpecifiersMigration = void 0;
const schematics_1 = require("@angular/cdk/schematics");
const ts = require("typescript");
const module_specifiers_1 = require("../../utils/ng-update/module-specifiers");
const upgrade_data_1 = require("../upgrade-data");
class ImportSpecifiersMigration extends schematics_1.Migration {
constructor() {
super(...arguments);
/** Change data that upgrades to the specified target version. */
this.data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'importSpecifiers');
// Only enable the migration rule if there is upgrade data.
this.enabled = this.data.length !== 0;
}
visitNode(node) {
if (ts.isImportDeclaration(node)) {
this.visitImportDeclaration(node);
}
}
visitImportDeclaration(node) {
if ((0, module_specifiers_1.isNgZorroImportDeclaration)(node)) {
return this._createFailureWithReplacement(node);
}
}
/** Creates a failure and replacement for the specified identifier. */
_createFailureWithReplacement(identifier) {
const upgradeData = this.data.find(({ replace }) => identifier.moduleSpecifier.getText().indexOf(replace) !== -1);
if (upgradeData) {
const filePath = this.fileSystem.resolve(identifier.getSourceFile().fileName);
this.fileSystem.edit(filePath)
.remove(identifier.moduleSpecifier.getStart() + 1, identifier.moduleSpecifier.getWidth() - 2) // quotes
.insertRight(identifier.moduleSpecifier.getStart() + 1, upgradeData.replaceWith);
}
}
}
exports.ImportSpecifiersMigration = ImportSpecifiersMigration;
//# sourceMappingURL=import-specifiers.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"import-specifiers.js","sourceRoot":"","sources":["../../../../schematics/ng-update/migrations/import-specifiers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,wDAAoD;AAEpD,iCAAiC;AAEjC,+EAAqF;AAErF,kDAAuE;AAEvE,MAAa,yBAA0B,SAAQ,sBAAwB;IAAvE;;QACE,iEAAiE;QACjE,SAAI,GAAiC,IAAA,oCAAqB,EAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAGrF,2DAA2D;QAC3D,YAAO,GAAY,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IA0B5C,CAAC;IAxBC,SAAS,CAAC,IAAa;QACrB,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,IAA0B;QACvD,IAAI,IAAA,8CAA0B,EAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,sEAAsE;IAC9D,6BAA6B,CAAC,UAAgC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAEnH,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC;YAE9E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS;iBACtG,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;CACF;AAhCD,8DAgCC"}

View File

@@ -0,0 +1,16 @@
"use strict";
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.nzMigrations = void 0;
const class_names_1 = require("./class-names");
const import_specifiers_1 = require("./import-specifiers");
const output_names_1 = require("./output-names");
exports.nzMigrations = [
class_names_1.ClassNamesMigration,
import_specifiers_1.ImportSpecifiersMigration,
output_names_1.OutputNamesMigration
];
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schematics/ng-update/migrations/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,+CAAoD;AACpD,2DAAgE;AAChE,iDAAsD;AAEzC,QAAA,YAAY,GAA8B;IACrD,iCAAmB;IACnB,6CAAyB;IACzB,mCAAoB;CACrB,CAAC"}

View File

@@ -0,0 +1,54 @@
"use strict";
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.InputNamesMigration = void 0;
const schematics_1 = require("@angular/cdk/schematics");
const upgrade_data_1 = require("../upgrade-data");
/**
* Migration that walks through every template or stylesheet and replaces outdated input
* names to the new input name. Selectors in stylesheets could also target input
* bindings declared as static attribute. See for example:
*
* e.g. `<my-component color="primary">` becomes `my-component[color]`
*/
class InputNamesMigration extends schematics_1.Migration {
constructor() {
super(...arguments);
/** Change data that upgrades to the specified target version. */
this.data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'inputNames');
// Only enable the migration rule if there is upgrade data.
this.enabled = this.data.length !== 0;
}
visitStylesheet(stylesheet) {
this.data.forEach(name => {
const currentSelector = `[${name.replace}]`;
const updatedSelector = `[${name.replaceWith}]`;
(0, schematics_1.findAllSubstringIndices)(stylesheet.content, currentSelector)
.map(offset => stylesheet.start + offset)
.forEach(start => this._replaceInputName(stylesheet.filePath, start, currentSelector.length, updatedSelector));
});
}
visitTemplate(template) {
this.data.forEach(name => {
const limitedTo = name.limitedTo;
const relativeOffsets = [];
if (limitedTo.attributes) {
relativeOffsets.push(...(0, schematics_1.findInputsOnElementWithAttr)(template.content, name.replace, limitedTo.attributes));
}
if (limitedTo.elements) {
relativeOffsets.push(...(0, schematics_1.findInputsOnElementWithTag)(template.content, name.replace, limitedTo.elements));
}
relativeOffsets
.map(offset => template.start + offset)
.forEach(start => this._replaceInputName(template.filePath, start, name.replace.length, name.replaceWith));
});
}
_replaceInputName(filePath, start, width, newName) {
this.fileSystem.edit(filePath).remove(start, width).insertRight(start, newName);
}
}
exports.InputNamesMigration = InputNamesMigration;
//# sourceMappingURL=input-names.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"input-names.js","sourceRoot":"","sources":["../../../../schematics/ng-update/migrations/input-names.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,wDAQiC;AAEjC,kDAAuE;AAEvE;;;;;;GAMG;AACH,MAAa,mBAAoB,SAAQ,sBAAwB;IAAjE;;QACE,iEAAiE;QACjE,SAAI,GAA2B,IAAA,oCAAqB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAEzE,2DAA2D;QAC3D,YAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAqDnC,CAAC;IAnDU,eAAe,CAAC,UAA4B;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;YAC5C,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;YAEhD,IAAA,oCAAuB,EAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC;iBACzD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC;iBACxC,OAAO,CAAC,KAAK,CAAC,EAAE,CACf,IAAI,CAAC,iBAAiB,CACpB,UAAU,CAAC,QAAQ,EACnB,KAAK,EACL,eAAe,CAAC,MAAM,EACtB,eAAe,CAChB,CACF,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,aAAa,CAAC,QAA0B;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,eAAe,GAAa,EAAE,CAAC;YAErC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,eAAe,CAAC,IAAI,CAClB,GAAG,IAAA,wCAA2B,EAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CACrF,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,eAAe,CAAC,IAAI,CAClB,GAAG,IAAA,uCAA0B,EAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAClF,CAAC;YACJ,CAAC;YAED,eAAe;iBACZ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;iBACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CACf,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CACxF,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CACvB,QAAuB,EACvB,KAAa,EACb,KAAa,EACb,OAAe;QAEf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;CACF;AA1DD,kDA0DC"}

View File

@@ -0,0 +1,42 @@
"use strict";
/**
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.OutputNamesMigration = void 0;
const schematics_1 = require("@angular/cdk/schematics");
const upgrade_data_1 = require("../upgrade-data");
/**
* Migration that walks through every inline or external HTML template and switches
* changed output binding names to the proper new output name.
*/
class OutputNamesMigration extends schematics_1.Migration {
constructor() {
super(...arguments);
/** Change data that upgrades to the specified target version. */
this.data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'outputNames');
// Only enable the migration rule if there is upgrade data.
this.enabled = this.data.length !== 0;
}
visitTemplate(template) {
this.data.forEach(name => {
const limitedTo = name.limitedTo;
const relativeOffsets = [];
if (limitedTo.attributes) {
relativeOffsets.push(...(0, schematics_1.findOutputsOnElementWithAttr)(template.content, name.replace, limitedTo.attributes));
}
if (limitedTo.elements) {
relativeOffsets.push(...(0, schematics_1.findOutputsOnElementWithTag)(template.content, name.replace, limitedTo.elements));
}
relativeOffsets
.map(offset => template.start + offset)
.forEach(start => this._replaceOutputName(template.filePath, start, name.replace.length, name.replaceWith));
});
}
_replaceOutputName(filePath, start, width, newName) {
this.fileSystem.edit(filePath).remove(start, width).insertRight(start, newName);
}
}
exports.OutputNamesMigration = OutputNamesMigration;
//# sourceMappingURL=output-names.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"output-names.js","sourceRoot":"","sources":["../../../../schematics/ng-update/migrations/output-names.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,wDAOiC;AAEjC,kDAAuE;AAEvE;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,sBAAwB;IAAlE;;QACE,iEAAiE;QACjE,SAAI,GAA4B,IAAA,oCAAqB,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAE3E,2DAA2D;QAC3D,YAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAmCnC,CAAC;IAjCU,aAAa,CAAC,QAA0B;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,MAAM,eAAe,GAAa,EAAE,CAAC;YAErC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,eAAe,CAAC,IAAI,CAClB,GAAG,IAAA,yCAA4B,EAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CACtF,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;gBACvB,eAAe,CAAC,IAAI,CAClB,GAAG,IAAA,wCAA2B,EAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CACnF,CAAC;YACJ,CAAC;YAED,eAAe;iBACZ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;iBACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CACf,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CACzF,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CACxB,QAAuB,EACvB,KAAa,EACb,KAAa,EACb,OAAe;QAEf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;CACF;AAxCD,oDAwCC"}