@openrewrite/recipes-angular 1.1.3 → 1.1.5
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/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -1
- package/dist/index.js.map +1 -1
- package/dist/libraries/primeng/18/add-primeng-provider.d.ts +45 -0
- package/dist/libraries/primeng/18/add-primeng-provider.d.ts.map +1 -0
- package/dist/libraries/primeng/18/add-primeng-provider.js +354 -0
- package/dist/libraries/primeng/18/add-primeng-provider.js.map +1 -0
- package/dist/libraries/primeng/18/index.d.ts +19 -0
- package/dist/libraries/primeng/18/index.d.ts.map +1 -0
- package/dist/libraries/primeng/18/index.js +45 -0
- package/dist/libraries/primeng/18/index.js.map +1 -0
- package/dist/libraries/primeng/18/manual-migration-steps.d.ts +19 -0
- package/dist/libraries/primeng/18/manual-migration-steps.d.ts.map +1 -0
- package/dist/libraries/primeng/18/manual-migration-steps.js +45 -0
- package/dist/libraries/primeng/18/manual-migration-steps.js.map +1 -0
- package/dist/libraries/primeng/18/mark-deprecated-components.d.ts +9 -0
- package/dist/libraries/primeng/18/mark-deprecated-components.d.ts.map +1 -0
- package/dist/libraries/primeng/18/mark-deprecated-components.js +125 -0
- package/dist/libraries/primeng/18/mark-deprecated-components.js.map +1 -0
- package/dist/libraries/primeng/18/mark-deprecated-css-classes.d.ts +15 -0
- package/dist/libraries/primeng/18/mark-deprecated-css-classes.d.ts.map +1 -0
- package/dist/libraries/primeng/18/mark-deprecated-css-classes.js +108 -0
- package/dist/libraries/primeng/18/mark-deprecated-css-classes.js.map +1 -0
- package/dist/libraries/primeng/18/mark-drawer-size.d.ts +16 -0
- package/dist/libraries/primeng/18/mark-drawer-size.d.ts.map +1 -0
- package/dist/libraries/primeng/18/mark-drawer-size.js +90 -0
- package/dist/libraries/primeng/18/mark-drawer-size.js.map +1 -0
- package/dist/libraries/primeng/18/mark-removed-primeng-modules.d.ts +9 -0
- package/dist/libraries/primeng/18/mark-removed-primeng-modules.d.ts.map +1 -0
- package/dist/libraries/primeng/18/mark-removed-primeng-modules.js +186 -0
- package/dist/libraries/primeng/18/mark-removed-primeng-modules.js.map +1 -0
- package/dist/libraries/primeng/18/migrate-messages-to-message-loop.d.ts +15 -0
- package/dist/libraries/primeng/18/migrate-messages-to-message-loop.d.ts.map +1 -0
- package/dist/libraries/primeng/18/migrate-messages-to-message-loop.js +78 -0
- package/dist/libraries/primeng/18/migrate-messages-to-message-loop.js.map +1 -0
- package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.d.ts +27 -0
- package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.d.ts.map +1 -0
- package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.js +495 -0
- package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.js.map +1 -0
- package/dist/libraries/primeng/18/migrate-primeng-config.d.ts +8 -0
- package/dist/libraries/primeng/18/migrate-primeng-config.d.ts.map +1 -0
- package/dist/libraries/primeng/18/migrate-primeng-config.js +154 -0
- package/dist/libraries/primeng/18/migrate-primeng-config.js.map +1 -0
- package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.d.ts +12 -0
- package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.d.ts.map +1 -0
- package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.js +112 -0
- package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.js.map +1 -0
- package/dist/libraries/primeng/18/rename-calendar-to-datepicker.d.ts +8 -0
- package/dist/libraries/primeng/18/rename-calendar-to-datepicker.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-calendar-to-datepicker.js +114 -0
- package/dist/libraries/primeng/18/rename-calendar-to-datepicker.js.map +1 -0
- package/dist/libraries/primeng/18/rename-dropdown-to-select.d.ts +8 -0
- package/dist/libraries/primeng/18/rename-dropdown-to-select.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-dropdown-to-select.js +114 -0
- package/dist/libraries/primeng/18/rename-dropdown-to-select.js.map +1 -0
- package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.d.ts +8 -0
- package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.js +114 -0
- package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.js.map +1 -0
- package/dist/libraries/primeng/18/rename-message-interface.d.ts +8 -0
- package/dist/libraries/primeng/18/rename-message-interface.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-message-interface.js +107 -0
- package/dist/libraries/primeng/18/rename-message-interface.js.map +1 -0
- package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.d.ts +8 -0
- package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.js +114 -0
- package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.js.map +1 -0
- package/dist/libraries/primeng/18/rename-sidebar-to-drawer.d.ts +8 -0
- package/dist/libraries/primeng/18/rename-sidebar-to-drawer.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-sidebar-to-drawer.js +114 -0
- package/dist/libraries/primeng/18/rename-sidebar-to-drawer.js.map +1 -0
- package/dist/libraries/primeng/18/rename-template-selectors.d.ts +12 -0
- package/dist/libraries/primeng/18/rename-template-selectors.d.ts.map +1 -0
- package/dist/libraries/primeng/18/rename-template-selectors.js +79 -0
- package/dist/libraries/primeng/18/rename-template-selectors.js.map +1 -0
- package/dist/libraries/primeng/18/upgrade-components-to-18.d.ts +8 -0
- package/dist/libraries/primeng/18/upgrade-components-to-18.d.ts.map +1 -0
- package/dist/libraries/primeng/18/upgrade-components-to-18.js +73 -0
- package/dist/libraries/primeng/18/upgrade-components-to-18.js.map +1 -0
- package/dist/libraries/primeng/18/upgrade-to-primeng-18.d.ts +8 -0
- package/dist/libraries/primeng/18/upgrade-to-primeng-18.d.ts.map +1 -0
- package/dist/libraries/primeng/18/upgrade-to-primeng-18.js +68 -0
- package/dist/libraries/primeng/18/upgrade-to-primeng-18.js.map +1 -0
- package/dist/migration/explicit-standalone-flag.d.ts.map +1 -1
- package/dist/migration/explicit-standalone-flag.js +12 -5
- package/dist/migration/explicit-standalone-flag.js.map +1 -1
- package/dist/migration/replace-untyped-forms.d.ts +14 -2
- package/dist/migration/replace-untyped-forms.d.ts.map +1 -1
- package/dist/migration/replace-untyped-forms.js +108 -36
- package/dist/migration/replace-untyped-forms.js.map +1 -1
- package/dist/migration/upgrade-angular-peer-libs-to-18.d.ts +17 -0
- package/dist/migration/upgrade-angular-peer-libs-to-18.d.ts.map +1 -0
- package/dist/migration/upgrade-angular-peer-libs-to-18.js +49 -0
- package/dist/migration/upgrade-angular-peer-libs-to-18.js.map +1 -0
- package/dist/migration/upgrade-to-angular-18.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-18.js +16 -7
- package/dist/migration/upgrade-to-angular-18.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +57 -0
- package/src/libraries/primeng/18/add-primeng-provider.ts +359 -0
- package/src/libraries/primeng/18/index.ts +24 -0
- package/src/libraries/primeng/18/manual-migration-steps.ts +37 -0
- package/src/libraries/primeng/18/mark-deprecated-components.ts +128 -0
- package/src/libraries/primeng/18/mark-deprecated-css-classes.ts +109 -0
- package/src/libraries/primeng/18/mark-drawer-size.ts +85 -0
- package/src/libraries/primeng/18/mark-removed-primeng-modules.ts +198 -0
- package/src/libraries/primeng/18/migrate-messages-to-message-loop.ts +72 -0
- package/src/libraries/primeng/18/migrate-p-fluid-to-wrapper.ts +439 -0
- package/src/libraries/primeng/18/migrate-primeng-config.ts +112 -0
- package/src/libraries/primeng/18/migrate-primeng-signal-assignments.ts +83 -0
- package/src/libraries/primeng/18/rename-calendar-to-datepicker.ts +81 -0
- package/src/libraries/primeng/18/rename-dropdown-to-select.ts +81 -0
- package/src/libraries/primeng/18/rename-inputswitch-to-toggleswitch.ts +81 -0
- package/src/libraries/primeng/18/rename-message-interface.ts +78 -0
- package/src/libraries/primeng/18/rename-overlaypanel-to-popover.ts +81 -0
- package/src/libraries/primeng/18/rename-sidebar-to-drawer.ts +81 -0
- package/src/libraries/primeng/18/rename-template-selectors.ts +63 -0
- package/src/libraries/primeng/18/upgrade-components-to-18.ts +57 -0
- package/src/libraries/primeng/18/upgrade-to-primeng-18.ts +52 -0
- package/src/migration/explicit-standalone-flag.ts +11 -5
- package/src/migration/replace-untyped-forms.ts +111 -39
- package/src/migration/upgrade-angular-peer-libs-to-18.ts +33 -0
- package/src/migration/upgrade-to-angular-18.ts +16 -7
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
*
|
|
5
|
+
* Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MarkDeprecatedPrimengComponents = void 0;
|
|
18
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
19
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
20
|
+
const java_1 = require("@openrewrite/rewrite/java");
|
|
21
|
+
const manual_migration_steps_1 = require("./manual-migration-steps");
|
|
22
|
+
// Modules that still exist in PrimeNG 18 but are deprecated. Their replacement components
|
|
23
|
+
// have different APIs / template structures and cannot be migrated automatically, so we
|
|
24
|
+
// only mark them: leading TODO comment on the import + a row in `ManualMigrationSteps`.
|
|
25
|
+
// (Chips, TriStateCheckbox, Messages, DataViewLayoutOptions, pAnimate are *removed*, not
|
|
26
|
+
// deprecated — they're handled by `MarkRemovedPrimengModules`.)
|
|
27
|
+
const DEPRECATED_MODULES = {
|
|
28
|
+
'primeng/tabmenu': {
|
|
29
|
+
members: ['TabMenu', 'TabMenuModule'],
|
|
30
|
+
todo: "`TabMenu` is deprecated in PrimeNG 18. Use `Tabs` without panels (import from `primeng/tabs`).",
|
|
31
|
+
},
|
|
32
|
+
'primeng/steps': {
|
|
33
|
+
members: ['Steps', 'StepsModule'],
|
|
34
|
+
todo: "`Steps` is deprecated in PrimeNG 18. Use `Stepper` without panels (import from `primeng/stepper`).",
|
|
35
|
+
},
|
|
36
|
+
'primeng/inlinemessage': {
|
|
37
|
+
members: ['InlineMessage', 'InlineMessageModule'],
|
|
38
|
+
todo: "`InlineMessage` is deprecated in PrimeNG 18. Use the `Message` component (import from `primeng/message`).",
|
|
39
|
+
},
|
|
40
|
+
'primeng/tabview': {
|
|
41
|
+
members: ['TabView', 'TabViewModule', 'TabPanel'],
|
|
42
|
+
todo: "`TabView`/`TabPanel` are deprecated in PrimeNG 18. Use the new `Tabs`+`TabList`+`Tab`+`TabPanels`+`TabPanel` set (import from `primeng/tabs`).",
|
|
43
|
+
},
|
|
44
|
+
'primeng/defer': {
|
|
45
|
+
members: ['DeferModule'],
|
|
46
|
+
todo: "`pDefer` is deprecated in PrimeNG 18. Use Angular's `@defer` control flow instead.",
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
class MarkDeprecatedPrimengComponents extends rewrite_1.Recipe {
|
|
50
|
+
constructor() {
|
|
51
|
+
super(...arguments);
|
|
52
|
+
this.name = "org.openrewrite.primeng.MarkDeprecatedPrimengComponents";
|
|
53
|
+
this.displayName = "Mark deprecated PrimeNG components with TODO comments";
|
|
54
|
+
this.description = "For every TS file that imports a component / module deprecated in PrimeNG 18 " +
|
|
55
|
+
"(`TabMenu`, `Steps`, `InlineMessage`, `TabView`, `pDefer`), prepends a TODO comment to the import " +
|
|
56
|
+
"describing the recommended v18 replacement and writes a row to the `ManualMigrationSteps` data " +
|
|
57
|
+
"table. The import itself is left intact — these modules still exist in v18 but their replacements " +
|
|
58
|
+
"have different APIs that require manual migration.";
|
|
59
|
+
this.dataTable = new rewrite_1.DataTable(manual_migration_steps_1.MANUAL_MIGRATION_STEPS_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DISPLAY_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DESCRIPTION, manual_migration_steps_1.ManualMigrationStep);
|
|
60
|
+
}
|
|
61
|
+
editor() {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const recipeName = this.name;
|
|
64
|
+
const dataTable = this.dataTable;
|
|
65
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
66
|
+
visitImportDeclaration(jsImport, p) {
|
|
67
|
+
const _super = Object.create(null, {
|
|
68
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
69
|
+
});
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
var _a, _b, _c, _d, _e, _f;
|
|
72
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
73
|
+
if (!(imp === null || imp === void 0 ? void 0 : imp.moduleSpecifier))
|
|
74
|
+
return imp;
|
|
75
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
76
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
77
|
+
return imp;
|
|
78
|
+
const moduleName = moduleSpec.value;
|
|
79
|
+
const deprecation = DEPRECATED_MODULES[moduleName];
|
|
80
|
+
if (!deprecation)
|
|
81
|
+
return imp;
|
|
82
|
+
// Idempotence: skip if our TODO marker is already attached.
|
|
83
|
+
const existingComments = (_b = (_a = imp.prefix) === null || _a === void 0 ? void 0 : _a.comments) !== null && _b !== void 0 ? _b : [];
|
|
84
|
+
if (existingComments.some(c => { var _a; return (_a = c.text) === null || _a === void 0 ? void 0 : _a.includes('TODO: PrimeNG 18'); })) {
|
|
85
|
+
return imp;
|
|
86
|
+
}
|
|
87
|
+
const importedNames = [];
|
|
88
|
+
const namedBindings = (_c = imp.importClause) === null || _c === void 0 ? void 0 : _c.namedBindings;
|
|
89
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
90
|
+
for (const specifier of namedBindings.elements.elements) {
|
|
91
|
+
const spec = specifier.element;
|
|
92
|
+
if ((0, java_1.isIdentifier)(spec.specifier)) {
|
|
93
|
+
importedNames.push(spec.specifier.simpleName);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (importedNames.length === 0)
|
|
98
|
+
return imp;
|
|
99
|
+
const sourcePath = (_e = ((_d = this.cursor.firstEnclosing((o) => !!(o === null || o === void 0 ? void 0 : o.sourcePath))) === null || _d === void 0 ? void 0 : _d.sourcePath)) !== null && _e !== void 0 ? _e : '';
|
|
100
|
+
for (const name of importedNames) {
|
|
101
|
+
dataTable.insertRow(p, {
|
|
102
|
+
sourcePath,
|
|
103
|
+
recipe: recipeName,
|
|
104
|
+
subject: `${name} (${moduleName})`,
|
|
105
|
+
reason: "Component deprecated in PrimeNG 18; replacement has a different API.",
|
|
106
|
+
action: deprecation.todo,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
const todoComment = {
|
|
110
|
+
kind: java_1.J.Kind.TextComment,
|
|
111
|
+
multiline: true,
|
|
112
|
+
text: ` TODO: PrimeNG 18 — ${deprecation.todo} (import: \`{ ${importedNames.join(', ')} } from '${moduleName}'\`) `,
|
|
113
|
+
suffix: '\n',
|
|
114
|
+
markers: { kind: 'org.openrewrite.marker.Markers', id: imp.id, markers: [] },
|
|
115
|
+
};
|
|
116
|
+
const originalPrefix = (_f = imp.prefix) !== null && _f !== void 0 ? _f : { kind: java_1.J.Kind.Space, whitespace: '', comments: [] };
|
|
117
|
+
return Object.assign(Object.assign({}, imp), { prefix: Object.assign(Object.assign({}, originalPrefix), { comments: [...existingComments, todoComment] }) });
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.MarkDeprecatedPrimengComponents = MarkDeprecatedPrimengComponents;
|
|
125
|
+
//# sourceMappingURL=mark-deprecated-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-deprecated-components.js","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-deprecated-components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
/**
|
|
3
|
+
* Mark every occurrence of a removed PrimeNG v17 CSS class (`p-link`, `p-highlight`,
|
|
4
|
+
* `p-fluid`) in HTML templates with an HTML TODO comment, and write a row to the
|
|
5
|
+
* `ManualMigrationSteps` data table. The class itself is left in place — replacements
|
|
6
|
+
* are component-specific and need a human/AI agent to choose the right substitute.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MarkDeprecatedPrimengCssClasses extends Recipe {
|
|
9
|
+
readonly name = "org.openrewrite.primeng.MarkDeprecatedPrimengCssClasses";
|
|
10
|
+
readonly displayName = "Mark deprecated PrimeNG CSS classes with TODO comments";
|
|
11
|
+
readonly description: string;
|
|
12
|
+
private dataTable;
|
|
13
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=mark-deprecated-css-classes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-deprecated-css-classes.d.ts","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-deprecated-css-classes.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA2BtF;;;;;GAKG;AACH,qBAAa,+BAAgC,SAAQ,MAAM;IACvD,QAAQ,CAAC,IAAI,6DAA6D;IAC1E,QAAQ,CAAC,WAAW,4DAA4D;IAChF,QAAQ,CAAC,WAAW,SAI8C;IAElE,OAAO,CAAC,SAAS,CAKf;IAEI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAqD9D"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
*
|
|
5
|
+
* Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MarkDeprecatedPrimengCssClasses = void 0;
|
|
18
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
19
|
+
const text_1 = require("@openrewrite/rewrite/text");
|
|
20
|
+
const manual_migration_steps_1 = require("./manual-migration-steps");
|
|
21
|
+
const DEPRECATED_CLASSES = [
|
|
22
|
+
{
|
|
23
|
+
className: 'p-link',
|
|
24
|
+
todo: "`.p-link` CSS class is removed in PrimeNG 18. Replace `<a class=\"p-link\">` with a `<p-button [link]=\"true\">` (or a `pButton` with `[link]=\"true\"`).",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
className: 'p-highlight',
|
|
28
|
+
todo: "`.p-highlight` CSS class is removed in PrimeNG 18. Each component now has its own class — replace with the component-specific selector (e.g. `.p-select-option-selected`, `.p-datatable-row-selected`, `.p-tree-node-selected`).",
|
|
29
|
+
},
|
|
30
|
+
// Note: `.p-fluid` is auto-migrated by `MigratePFluidToWrapper` (rewrites `<div class="…p-fluid…">`
|
|
31
|
+
// to `<p-fluid class="…">` and adds the FluidModule import). It's intentionally not flagged here.
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Mark every occurrence of a removed PrimeNG v17 CSS class (`p-link`, `p-highlight`,
|
|
35
|
+
* `p-fluid`) in HTML templates with an HTML TODO comment, and write a row to the
|
|
36
|
+
* `ManualMigrationSteps` data table. The class itself is left in place — replacements
|
|
37
|
+
* are component-specific and need a human/AI agent to choose the right substitute.
|
|
38
|
+
*/
|
|
39
|
+
class MarkDeprecatedPrimengCssClasses extends rewrite_1.Recipe {
|
|
40
|
+
constructor() {
|
|
41
|
+
super(...arguments);
|
|
42
|
+
this.name = "org.openrewrite.primeng.MarkDeprecatedPrimengCssClasses";
|
|
43
|
+
this.displayName = "Mark deprecated PrimeNG CSS classes with TODO comments";
|
|
44
|
+
this.description = "For every HTML template that references a CSS class removed in PrimeNG 18 " +
|
|
45
|
+
"(`.p-link`, `.p-highlight`, `.p-fluid`), inserts a `<!-- TODO: ... -->` comment immediately before " +
|
|
46
|
+
"the offending element and writes a row to the `ManualMigrationSteps` data table. The class itself " +
|
|
47
|
+
"is left in place — the replacements are context-dependent (component-specific selectors, the new " +
|
|
48
|
+
"`fluid` input, etc.) and need a human or AI agent to apply.";
|
|
49
|
+
this.dataTable = new rewrite_1.DataTable(manual_migration_steps_1.MANUAL_MIGRATION_STEPS_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DISPLAY_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DESCRIPTION, manual_migration_steps_1.ManualMigrationStep);
|
|
50
|
+
}
|
|
51
|
+
editor() {
|
|
52
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const recipeName = this.name;
|
|
54
|
+
const dataTable = this.dataTable;
|
|
55
|
+
return new class extends text_1.PlainTextVisitor {
|
|
56
|
+
visitText(text, p) {
|
|
57
|
+
const _super = Object.create(null, {
|
|
58
|
+
visitText: { get: () => super.visitText }
|
|
59
|
+
});
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const t = yield _super.visitText.call(this, text, p);
|
|
62
|
+
if (!t)
|
|
63
|
+
return t;
|
|
64
|
+
if (!t.sourcePath.endsWith('.html'))
|
|
65
|
+
return t;
|
|
66
|
+
let updated = t.text;
|
|
67
|
+
let modified = false;
|
|
68
|
+
for (const { className, todo } of DEPRECATED_CLASSES) {
|
|
69
|
+
// Match an opening tag whose attributes contain the deprecated class name
|
|
70
|
+
// either as a bare class token (`class="… p-link …"`) or via a binding
|
|
71
|
+
// (`[class.p-link]="…"` / `[ngClass]="… p-link …"`). We don't try to be
|
|
72
|
+
// perfect about parsing HTML — false positives are tolerable for a
|
|
73
|
+
// search-style recipe; missed matches are not.
|
|
74
|
+
const tagRe = new RegExp(`(^|\\n)([ \\t]*)(<[a-zA-Z][\\w-]*(?:\\s+[^>]*?)?\\b(?:class\\s*=\\s*"[^"]*\\b${className}\\b[^"]*"|class\\s*=\\s*'[^']*\\b${className}\\b[^']*')[^>]*>)`, 'g');
|
|
75
|
+
const todoMarker = `<!-- TODO: PrimeNG 18 — ${todo} -->`;
|
|
76
|
+
let alreadyMarked = false;
|
|
77
|
+
updated = updated.replace(tagRe, (match, lead, indent, tag) => {
|
|
78
|
+
// Idempotence: skip if a previous run already inserted this exact TODO above.
|
|
79
|
+
const before = match.indexOf(tag);
|
|
80
|
+
const precedingChunk = updated.slice(0, updated.indexOf(match) + before);
|
|
81
|
+
if (precedingChunk.endsWith(todoMarker + '\n' + indent)
|
|
82
|
+
|| precedingChunk.endsWith(todoMarker + indent)) {
|
|
83
|
+
alreadyMarked = true;
|
|
84
|
+
return match;
|
|
85
|
+
}
|
|
86
|
+
modified = true;
|
|
87
|
+
dataTable.insertRow(p, {
|
|
88
|
+
sourcePath: t.sourcePath,
|
|
89
|
+
recipe: recipeName,
|
|
90
|
+
subject: `class .${className}`,
|
|
91
|
+
reason: "PrimeNG 18 removed this CSS class; replacement is component-specific.",
|
|
92
|
+
action: todo,
|
|
93
|
+
});
|
|
94
|
+
return `${lead}${indent}${todoMarker}\n${indent}${tag}`;
|
|
95
|
+
});
|
|
96
|
+
void alreadyMarked;
|
|
97
|
+
}
|
|
98
|
+
if (!modified)
|
|
99
|
+
return t;
|
|
100
|
+
return Object.assign(Object.assign({}, t), { text: updated, snippets: [] });
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}();
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.MarkDeprecatedPrimengCssClasses = MarkDeprecatedPrimengCssClasses;
|
|
108
|
+
//# sourceMappingURL=mark-deprecated-css-classes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-deprecated-css-classes.js","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-deprecated-css-classes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
/**
|
|
3
|
+
* Mark `<p-drawer>` and `<p-sidebar>` elements that bind the removed `size` input in
|
|
4
|
+
* templates. Adds an HTML TODO comment immediately before the element and writes a row
|
|
5
|
+
* to the `ManualMigrationSteps` data table. The attribute itself is left in place because
|
|
6
|
+
* the right replacement is template-context-dependent (responsive style class, fixed
|
|
7
|
+
* width, etc.).
|
|
8
|
+
*/
|
|
9
|
+
export declare class MarkDrawerSize extends Recipe {
|
|
10
|
+
readonly name = "org.openrewrite.primeng.MarkDrawerSize";
|
|
11
|
+
readonly displayName = "Mark `<p-drawer>` / `<p-sidebar>` `size` usages with TODO comments";
|
|
12
|
+
readonly description: string;
|
|
13
|
+
private dataTable;
|
|
14
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=mark-drawer-size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-drawer-size.d.ts","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-drawer-size.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAYtF;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,MAAM;IACtC,QAAQ,CAAC,IAAI,4CAA4C;IACzD,QAAQ,CAAC,WAAW,wEAAwE;IAC5F,QAAQ,CAAC,WAAW,SAIuD;IAE3E,OAAO,CAAC,SAAS,CAKf;IAEI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA2C9D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
*
|
|
5
|
+
* Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MarkDrawerSize = void 0;
|
|
18
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
19
|
+
const text_1 = require("@openrewrite/rewrite/text");
|
|
20
|
+
const manual_migration_steps_1 = require("./manual-migration-steps");
|
|
21
|
+
const TARGET_TAGS = ['p-drawer', 'p-sidebar'];
|
|
22
|
+
const TODO_TEXT = "PrimeNG 18 removed the `size` input on `<p-drawer>`/`<p-sidebar>`. Replace `[size]=\"...\"` / `size=\"...\"` with a responsive CSS utility on the `[style]` input or `styleClass`.";
|
|
23
|
+
/**
|
|
24
|
+
* Mark `<p-drawer>` and `<p-sidebar>` elements that bind the removed `size` input in
|
|
25
|
+
* templates. Adds an HTML TODO comment immediately before the element and writes a row
|
|
26
|
+
* to the `ManualMigrationSteps` data table. The attribute itself is left in place because
|
|
27
|
+
* the right replacement is template-context-dependent (responsive style class, fixed
|
|
28
|
+
* width, etc.).
|
|
29
|
+
*/
|
|
30
|
+
class MarkDrawerSize extends rewrite_1.Recipe {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.name = "org.openrewrite.primeng.MarkDrawerSize";
|
|
34
|
+
this.displayName = "Mark `<p-drawer>` / `<p-sidebar>` `size` usages with TODO comments";
|
|
35
|
+
this.description = "Inserts an HTML `<!-- TODO: ... -->` comment before any `<p-drawer>` or " +
|
|
36
|
+
"`<p-sidebar>` element that binds the removed `size` input, and records the site in the " +
|
|
37
|
+
"`ManualMigrationSteps` data table. Both `[size]=\"...\"` and `size=\"...\"` attribute forms are " +
|
|
38
|
+
"matched. The attribute is left untouched — the v18 replacement (responsive CSS via `[style]` / " +
|
|
39
|
+
"`styleClass`) depends on the desired layout and needs manual review.";
|
|
40
|
+
this.dataTable = new rewrite_1.DataTable(manual_migration_steps_1.MANUAL_MIGRATION_STEPS_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DISPLAY_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DESCRIPTION, manual_migration_steps_1.ManualMigrationStep);
|
|
41
|
+
}
|
|
42
|
+
editor() {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
const recipeName = this.name;
|
|
45
|
+
const dataTable = this.dataTable;
|
|
46
|
+
return new class extends text_1.PlainTextVisitor {
|
|
47
|
+
visitText(text, p) {
|
|
48
|
+
const _super = Object.create(null, {
|
|
49
|
+
visitText: { get: () => super.visitText }
|
|
50
|
+
});
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const t = yield _super.visitText.call(this, text, p);
|
|
53
|
+
if (!t)
|
|
54
|
+
return t;
|
|
55
|
+
if (!t.sourcePath.endsWith('.html'))
|
|
56
|
+
return t;
|
|
57
|
+
let updated = t.text;
|
|
58
|
+
let modified = false;
|
|
59
|
+
for (const tag of TARGET_TAGS) {
|
|
60
|
+
// Match opening tags of the target component that include a [size]="…" or
|
|
61
|
+
// size="…" attribute. We only mark — the attribute stays in place.
|
|
62
|
+
const re = new RegExp(`(^|\\n)([ \\t]*)(<${tag}\\b[^>]*?(?:\\[size\\]|\\bsize)\\s*=\\s*["'][^"']*["'][^>]*>)`, 'g');
|
|
63
|
+
const todoMarker = `<!-- TODO: PrimeNG 18 — ${TODO_TEXT} -->`;
|
|
64
|
+
updated = updated.replace(re, (match, lead, indent, fullTag) => {
|
|
65
|
+
const before = updated.slice(0, updated.indexOf(match));
|
|
66
|
+
if (before.endsWith(todoMarker + '\n' + indent) || before.endsWith(todoMarker + indent)) {
|
|
67
|
+
return match;
|
|
68
|
+
}
|
|
69
|
+
modified = true;
|
|
70
|
+
dataTable.insertRow(p, {
|
|
71
|
+
sourcePath: t.sourcePath,
|
|
72
|
+
recipe: recipeName,
|
|
73
|
+
subject: `<${tag} ... size="...">`,
|
|
74
|
+
reason: "`size` input removed in PrimeNG 18.",
|
|
75
|
+
action: TODO_TEXT,
|
|
76
|
+
});
|
|
77
|
+
return `${lead}${indent}${todoMarker}\n${indent}${fullTag}`;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (!modified)
|
|
81
|
+
return t;
|
|
82
|
+
return Object.assign(Object.assign({}, t), { text: updated, snippets: [] });
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}();
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.MarkDrawerSize = MarkDrawerSize;
|
|
90
|
+
//# sourceMappingURL=mark-drawer-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-drawer-size.js","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-drawer-size.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAAsF;AACtF,oDAAsE;AACtE,qEAKkC;AAElC,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,oLAAoL,CAAC;AAEvM;;;;;;GAMG;AACH,MAAa,cAAe,SAAQ,gBAAM;IAA1C;;QACa,SAAI,GAAG,wCAAwC,CAAC;QAChD,gBAAW,GAAG,oEAAoE,CAAC;QACnF,gBAAW,GAAG,0EAA0E;YAC7F,yFAAyF;YACzF,kGAAkG;YAClG,iGAAiG;YACjG,sEAAsE,CAAC;QAEnE,cAAS,GAAG,IAAI,mBAAS,CAC7B,oDAA2B,EAC3B,4DAAmC,EACnC,2DAAkC,EAClC,4CAAmB,CACtB,CAAC;IA6CN,CAAC;IA3CS,MAAM;;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,OAAO,IAAI,KAAM,SAAQ,uBAAkC;gBACxC,SAAS,CAAC,IAAe,EAAE,CAAmB;;;;;wBACzD,MAAM,CAAC,GAAG,MAAM,OAAM,SAAS,YAAC,IAAI,EAAE,CAAC,CAAc,CAAC;wBACtD,IAAI,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC;wBACjB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAE9C,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;wBACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;wBAErB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;4BAC5B,0EAA0E;4BAC1E,mEAAmE;4BACnE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,qBAAqB,GAAG,+DAA+D,EAAE,GAAG,CAAC,CAAC;4BACpH,MAAM,UAAU,GAAG,2BAA2B,SAAS,MAAM,CAAC;4BAC9D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;gCAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gCACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;oCACtF,OAAO,KAAK,CAAC;gCACjB,CAAC;gCACD,QAAQ,GAAG,IAAI,CAAC;gCAChB,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;oCACnB,UAAU,EAAE,CAAC,CAAC,UAAU;oCACxB,MAAM,EAAE,UAAU;oCAClB,OAAO,EAAE,IAAI,GAAG,kBAAkB;oCAClC,MAAM,EAAE,qCAAqC;oCAC7C,MAAM,EAAE,SAAS;iCACpB,CAAC,CAAC;gCACH,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,KAAK,MAAM,GAAG,OAAO,EAAE,CAAC;4BAChE,CAAC,CAAC,CAAC;wBACP,CAAC;wBAED,IAAI,CAAC,QAAQ;4BAAE,OAAO,CAAC,CAAC;wBACxB,uCACO,CAAC,KACJ,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,EAAE,IACd;oBACN,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AA3DD,wCA2DC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
export declare class MarkRemovedPrimengModules extends Recipe {
|
|
3
|
+
readonly name = "org.openrewrite.primeng.MarkRemovedPrimengModules";
|
|
4
|
+
readonly displayName = "Mark imports of removed PrimeNG modules with TODO stubs";
|
|
5
|
+
readonly description: string;
|
|
6
|
+
private dataTable;
|
|
7
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=mark-removed-primeng-modules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-removed-primeng-modules.d.ts","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-removed-primeng-modules.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AA8CtF,qBAAa,yBAA0B,SAAQ,MAAM;IACjD,QAAQ,CAAC,IAAI,uDAAuD;IACpE,QAAQ,CAAC,WAAW,6DAA6D;IACjF,QAAQ,CAAC,WAAW,SAMoB;IAExC,OAAO,CAAC,SAAS,CAKf;IAEI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CA+H9D"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2026 the original author or authors.
|
|
4
|
+
*
|
|
5
|
+
* Moderne Proprietary. Only for use by Moderne customers under the terms of a commercial contract.
|
|
6
|
+
*/
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.MarkRemovedPrimengModules = void 0;
|
|
18
|
+
const rewrite_1 = require("@openrewrite/rewrite");
|
|
19
|
+
const javascript_1 = require("@openrewrite/rewrite/javascript");
|
|
20
|
+
const java_1 = require("@openrewrite/rewrite/java");
|
|
21
|
+
const mutative_1 = require("mutative");
|
|
22
|
+
const manual_migration_steps_1 = require("./manual-migration-steps");
|
|
23
|
+
// Modules removed entirely in PrimeNG 18 — their packages no longer exist on disk.
|
|
24
|
+
const REMOVED_MODULES = {
|
|
25
|
+
'primeng/chips': {
|
|
26
|
+
members: ['ChipsModule', 'Chips'],
|
|
27
|
+
todo: "PrimeNG 18 — `Chips` was removed. Replace `<p-chips>` with `<p-autoComplete [multiple]=\"true\" [typeahead]=\"false\">`.",
|
|
28
|
+
},
|
|
29
|
+
'primeng/tristatecheckbox': {
|
|
30
|
+
members: ['TriStateCheckboxModule', 'TriStateCheckbox'],
|
|
31
|
+
todo: "PrimeNG 18 — `TriStateCheckbox` was removed. Replace `<p-triStateCheckbox>` with `<p-checkbox [indeterminate]=\"true\">`.",
|
|
32
|
+
},
|
|
33
|
+
'primeng/messages': {
|
|
34
|
+
members: ['MessagesModule', 'Messages'],
|
|
35
|
+
todo: "PrimeNG 18 — `Messages` was removed. Replace `<p-messages [value]=\"X\">` with `@for (m of X; track m) { <p-message [severity]=\"m.severity\" [text]=\"m.detail\"></p-message> }` and import `MessageModule` from `primeng/message`.",
|
|
36
|
+
},
|
|
37
|
+
'primeng/dataviewlayoutoptions': {
|
|
38
|
+
members: ['DataViewLayoutOptions'],
|
|
39
|
+
todo: "PrimeNG 18 — `DataViewLayoutOptions` was removed. Replace `<p-dataViewLayoutOptions>` with `<p-selectButton>` bound to a layout `'list'|'grid'` value.",
|
|
40
|
+
},
|
|
41
|
+
'primeng/animate': {
|
|
42
|
+
members: ['AnimateModule', 'Animate'],
|
|
43
|
+
todo: "PrimeNG 18 — the `pAnimate` directive was removed. Replace `pAnimate` usages with `pAnimateOnScroll` and import from `primeng/animateonscroll`.",
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
// All identifiers that should be stripped from @NgModule imports / declarations / exports arrays
|
|
47
|
+
// because they refer to components / modules that no longer exist as runtime values.
|
|
48
|
+
const REMOVED_IDENTIFIERS = new Set(Object.values(REMOVED_MODULES).flatMap(m => m.members));
|
|
49
|
+
class MarkRemovedPrimengModules extends rewrite_1.Recipe {
|
|
50
|
+
constructor() {
|
|
51
|
+
super(...arguments);
|
|
52
|
+
this.name = "org.openrewrite.primeng.MarkRemovedPrimengModules";
|
|
53
|
+
this.displayName = "Mark imports of removed PrimeNG modules with TODO stubs";
|
|
54
|
+
this.description = "For each `import` of a PrimeNG module that no longer exists in v18 " +
|
|
55
|
+
"(`primeng/chips`, `primeng/tristatecheckbox`, `primeng/messages`, `primeng/dataviewlayoutoptions`), " +
|
|
56
|
+
"replaces the broken import statement with a `const <Name>: any = null;` stub annotated by a TODO " +
|
|
57
|
+
"comment that describes the v18 replacement. Also strips the corresponding entries from `@NgModule` " +
|
|
58
|
+
"`imports`, `declarations`, and `exports` arrays since Angular's compiler rejects `null` values there. " +
|
|
59
|
+
"Each flagged site is also recorded in the `ManualMigrationSteps` data table so downstream tooling " +
|
|
60
|
+
"can enumerate the remaining work.";
|
|
61
|
+
this.dataTable = new rewrite_1.DataTable(manual_migration_steps_1.MANUAL_MIGRATION_STEPS_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DISPLAY_NAME, manual_migration_steps_1.MANUAL_MIGRATION_STEPS_DESCRIPTION, manual_migration_steps_1.ManualMigrationStep);
|
|
62
|
+
}
|
|
63
|
+
editor() {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
const recipeName = this.name;
|
|
66
|
+
const dataTable = this.dataTable;
|
|
67
|
+
return new class extends javascript_1.JavaScriptVisitor {
|
|
68
|
+
visitImportDeclaration(jsImport, p) {
|
|
69
|
+
const _super = Object.create(null, {
|
|
70
|
+
visitImportDeclaration: { get: () => super.visitImportDeclaration }
|
|
71
|
+
});
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
var _a, _b, _c, _d, _e;
|
|
74
|
+
const imp = yield _super.visitImportDeclaration.call(this, jsImport, p);
|
|
75
|
+
if (!(imp === null || imp === void 0 ? void 0 : imp.moduleSpecifier))
|
|
76
|
+
return imp;
|
|
77
|
+
const moduleSpec = imp.moduleSpecifier.element;
|
|
78
|
+
if (moduleSpec.kind !== java_1.J.Kind.Literal)
|
|
79
|
+
return imp;
|
|
80
|
+
const moduleName = moduleSpec.value;
|
|
81
|
+
const removed = REMOVED_MODULES[moduleName];
|
|
82
|
+
if (!removed)
|
|
83
|
+
return imp;
|
|
84
|
+
const importedNames = [];
|
|
85
|
+
const namedBindings = (_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings;
|
|
86
|
+
if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === javascript_1.JS.Kind.NamedImports) {
|
|
87
|
+
for (const specifier of namedBindings.elements.elements) {
|
|
88
|
+
const spec = specifier.element;
|
|
89
|
+
if ((0, java_1.isIdentifier)(spec.specifier)) {
|
|
90
|
+
importedNames.push(spec.specifier.simpleName);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (importedNames.length === 0)
|
|
95
|
+
return imp;
|
|
96
|
+
const replacementCode = importedNames
|
|
97
|
+
.map(name => `const ${name}: any = null;`)
|
|
98
|
+
.join('\n');
|
|
99
|
+
const replacement = yield javascript_1.Template.builder()
|
|
100
|
+
.code(replacementCode)
|
|
101
|
+
.build()
|
|
102
|
+
.apply(imp, this.cursor);
|
|
103
|
+
const sourcePath = (_c = ((_b = this.cursor.firstEnclosing((o) => !!(o === null || o === void 0 ? void 0 : o.sourcePath))) === null || _b === void 0 ? void 0 : _b.sourcePath)) !== null && _c !== void 0 ? _c : '';
|
|
104
|
+
for (const name of importedNames) {
|
|
105
|
+
dataTable.insertRow(p, {
|
|
106
|
+
sourcePath,
|
|
107
|
+
recipe: recipeName,
|
|
108
|
+
subject: `${name} (${moduleName})`,
|
|
109
|
+
reason: "Module removed in PrimeNG 18; package no longer exists.",
|
|
110
|
+
action: removed.todo,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const todoComment = {
|
|
114
|
+
kind: java_1.J.Kind.TextComment,
|
|
115
|
+
multiline: true,
|
|
116
|
+
text: ` TODO: ${removed.todo} (was \`import { ${importedNames.join(', ')} } from '${moduleName}'\`) `,
|
|
117
|
+
suffix: '\n',
|
|
118
|
+
markers: { kind: 'org.openrewrite.marker.Markers', id: imp.id, markers: [] },
|
|
119
|
+
};
|
|
120
|
+
const originalPrefix = (_d = imp.prefix) !== null && _d !== void 0 ? _d : { kind: java_1.J.Kind.Space, whitespace: '', comments: [] };
|
|
121
|
+
return Object.assign(Object.assign({}, replacement), { prefix: Object.assign(Object.assign({}, originalPrefix), { comments: [...((_e = originalPrefix.comments) !== null && _e !== void 0 ? _e : []), todoComment] }) });
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
visitAnnotation(annotation, p) {
|
|
125
|
+
const _super = Object.create(null, {
|
|
126
|
+
visitAnnotation: { get: () => super.visitAnnotation }
|
|
127
|
+
});
|
|
128
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
const a = yield _super.visitAnnotation.call(this, annotation, p);
|
|
131
|
+
if (!a)
|
|
132
|
+
return a;
|
|
133
|
+
const annotType = a.annotationType;
|
|
134
|
+
if (!(0, java_1.isIdentifier)(annotType))
|
|
135
|
+
return a;
|
|
136
|
+
if (annotType.simpleName !== 'NgModule' && annotType.simpleName !== 'Component')
|
|
137
|
+
return a;
|
|
138
|
+
if (!((_b = (_a = a.arguments) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.length))
|
|
139
|
+
return a;
|
|
140
|
+
const firstArg = a.arguments.elements[0].element;
|
|
141
|
+
if (firstArg.kind !== java_1.J.Kind.NewClass)
|
|
142
|
+
return a;
|
|
143
|
+
const newClass = firstArg;
|
|
144
|
+
if (!newClass.body)
|
|
145
|
+
return a;
|
|
146
|
+
let modified = false;
|
|
147
|
+
const newStatements = newClass.body.statements.map(stmtEl => {
|
|
148
|
+
var _a, _b;
|
|
149
|
+
const stmt = stmtEl.element;
|
|
150
|
+
if (stmt.kind !== javascript_1.JS.Kind.PropertyAssignment)
|
|
151
|
+
return stmtEl;
|
|
152
|
+
const prop = stmt;
|
|
153
|
+
const nameExpr = prop.name.element;
|
|
154
|
+
if (!(0, java_1.isIdentifier)(nameExpr))
|
|
155
|
+
return stmtEl;
|
|
156
|
+
if (!['imports', 'declarations', 'exports'].includes(nameExpr.simpleName))
|
|
157
|
+
return stmtEl;
|
|
158
|
+
const initializer = prop.initializer;
|
|
159
|
+
const arr = initializer;
|
|
160
|
+
if (!((_b = (_a = arr === null || arr === void 0 ? void 0 : arr.initializer) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.length))
|
|
161
|
+
return stmtEl;
|
|
162
|
+
const filteredElems = arr.initializer.elements.filter((el) => {
|
|
163
|
+
const expr = el.element;
|
|
164
|
+
if (!(0, java_1.isIdentifier)(expr))
|
|
165
|
+
return true;
|
|
166
|
+
return !REMOVED_IDENTIFIERS.has(expr.simpleName);
|
|
167
|
+
});
|
|
168
|
+
if (filteredElems.length === arr.initializer.elements.length)
|
|
169
|
+
return stmtEl;
|
|
170
|
+
modified = true;
|
|
171
|
+
return Object.assign(Object.assign({}, stmtEl), { element: Object.assign(Object.assign({}, prop), { initializer: Object.assign(Object.assign({}, arr), { initializer: Object.assign(Object.assign({}, arr.initializer), { elements: filteredElems }) }) }) });
|
|
172
|
+
});
|
|
173
|
+
if (!modified)
|
|
174
|
+
return a;
|
|
175
|
+
return (0, mutative_1.create)(a, draft => {
|
|
176
|
+
const body = draft.arguments.elements[0].element.body;
|
|
177
|
+
body.statements = newStatements;
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}();
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.MarkRemovedPrimengModules = MarkRemovedPrimengModules;
|
|
186
|
+
//# sourceMappingURL=mark-removed-primeng-modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-removed-primeng-modules.js","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/mark-removed-primeng-modules.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAAsF;AACtF,gEAAgF;AAChF,oDAA0D;AAC1D,uCAAgC;AAChC,qEAKkC;AAOlC,mFAAmF;AACnF,MAAM,eAAe,GAAkC;IACnD,eAAe,EAAE;QACb,OAAO,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC;QACjC,IAAI,EAAE,0HAA0H;KACnI;IACD,0BAA0B,EAAE;QACxB,OAAO,EAAE,CAAC,wBAAwB,EAAE,kBAAkB,CAAC;QACvD,IAAI,EAAE,2HAA2H;KACpI;IACD,kBAAkB,EAAE;QAChB,OAAO,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC;QACvC,IAAI,EAAE,sOAAsO;KAC/O;IACD,+BAA+B,EAAE;QAC7B,OAAO,EAAE,CAAC,uBAAuB,CAAC;QAClC,IAAI,EAAE,wJAAwJ;KACjK;IACD,iBAAiB,EAAE;QACf,OAAO,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC;QACrC,IAAI,EAAE,iJAAiJ;KAC1J;CACJ,CAAC;AAEF,iGAAiG;AACjG,qFAAqF;AACrF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAC/B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CACzD,CAAC;AAEF,MAAa,yBAA0B,SAAQ,gBAAM;IAArD;;QACa,SAAI,GAAG,mDAAmD,CAAC;QAC3D,gBAAW,GAAG,yDAAyD,CAAC;QACxE,gBAAW,GAAG,qEAAqE;YACxF,sGAAsG;YACtG,mGAAmG;YACnG,qGAAqG;YACrG,wGAAwG;YACxG,oGAAoG;YACpG,mCAAmC,CAAC;QAEhC,cAAS,GAAG,IAAI,mBAAS,CAC7B,oDAA2B,EAC3B,4DAAmC,EACnC,2DAAkC,EAClC,4CAAmB,CACtB,CAAC;IAiIN,CAAC;IA/HS,MAAM;;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,OAAO,IAAI,KAAM,SAAQ,8BAAmC;gBACxC,sBAAsB,CAAC,QAAmB,EAAE,CAAmB;;;;;;wBAC3E,MAAM,GAAG,GAAG,MAAM,OAAM,sBAAsB,YAAC,QAAQ,EAAE,CAAC,CAAc,CAAC;wBACzE,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,eAAe,CAAA;4BAAE,OAAO,GAAG,CAAC;wBAEtC,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;wBAC/C,IAAI,UAAU,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,OAAO;4BAAE,OAAO,GAAG,CAAC;wBAEnD,MAAM,UAAU,GAAI,UAAwB,CAAC,KAAe,CAAC;wBAC7D,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;wBAC5C,IAAI,CAAC,OAAO;4BAAE,OAAO,GAAG,CAAC;wBAEzB,MAAM,aAAa,GAAa,EAAE,CAAC;wBACnC,MAAM,aAAa,GAAG,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAC;wBACtD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,eAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;4BAC/C,KAAK,MAAM,SAAS,IAAK,aAAiC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCAC3E,MAAM,IAAI,GAAG,SAAS,CAAC,OAA6B,CAAC;gCACrD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oCAC/B,aAAa,CAAC,IAAI,CAAE,IAAI,CAAC,SAA0B,CAAC,UAAU,CAAC,CAAC;gCACpE,CAAC;4BACL,CAAC;wBACL,CAAC;wBACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;4BAAE,OAAO,GAAG,CAAC;wBAE3C,MAAM,eAAe,GAAG,aAAa;6BAChC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,eAAe,CAAC;6BACzC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEhB,MAAM,WAAW,GAAG,MAAM,qBAAQ,CAAC,OAAO,EAAE;6BACvC,IAAI,CAAC,eAAe,CAAC;6BACrB,KAAK,EAAE;6BACP,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAQ,CAAC;wBAEpC,MAAM,UAAU,GAAG,MAAA,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAM,CAAC,CAAM,EAAY,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,UAAU,CAAA,CAAC,0CAAE,UAAU,CAAC,mCAAI,EAAE,CAAC;wBAC9G,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;4BAC/B,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;gCACnB,UAAU;gCACV,MAAM,EAAE,UAAU;gCAClB,OAAO,EAAE,GAAG,IAAI,KAAK,UAAU,GAAG;gCAClC,MAAM,EAAE,yDAAyD;gCACjE,MAAM,EAAE,OAAO,CAAC,IAAI;6BACvB,CAAC,CAAC;wBACP,CAAC;wBAED,MAAM,WAAW,GAAG;4BAChB,IAAI,EAAE,QAAC,CAAC,IAAI,CAAC,WAAW;4BACxB,SAAS,EAAE,IAAI;4BACf,IAAI,EAAE,UAAU,OAAO,CAAC,IAAI,oBAAoB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,UAAU,OAAO;4BACrG,MAAM,EAAE,IAAI;4BACZ,OAAO,EAAE,EAAC,IAAI,EAAE,gCAAgC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAC;yBAC7E,CAAC;wBAEF,MAAM,cAAc,GAAG,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAC,IAAI,EAAE,QAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC;wBAExF,OAAO,gCACA,WAAW,KACd,MAAM,kCACC,cAAc,KACjB,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAA,cAAc,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAAE,WAAW,CAAC,MAE7D,CAAC;oBACX,CAAC;iBAAA;gBAEc,eAAe,CAAC,UAAwB,EAAE,CAAmB;;;;;;wBACxE,MAAM,CAAC,GAAG,MAAM,OAAM,eAAe,YAAC,UAAU,EAAE,CAAC,CAAiB,CAAC;wBACrE,IAAI,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAEjB,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC;wBACnC,IAAI,CAAC,IAAA,mBAAY,EAAC,SAAS,CAAC;4BAAE,OAAO,CAAC,CAAC;wBACvC,IAAI,SAAS,CAAC,UAAU,KAAK,UAAU,IAAI,SAAS,CAAC,UAAU,KAAK,WAAW;4BAAE,OAAO,CAAC,CAAC;wBAE1F,IAAI,CAAC,CAAA,MAAA,MAAA,CAAC,CAAC,SAAS,0CAAE,QAAQ,0CAAE,MAAM,CAAA;4BAAE,OAAO,CAAC,CAAC;wBAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBACjD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,QAAQ;4BAAE,OAAO,CAAC,CAAC;wBAEhD,MAAM,QAAQ,GAAG,QAAsB,CAAC;wBACxC,IAAI,CAAC,QAAQ,CAAC,IAAI;4BAAE,OAAO,CAAC,CAAC;wBAE7B,IAAI,QAAQ,GAAG,KAAK,CAAC;wBACrB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;;4BACxD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;4BAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,eAAE,CAAC,IAAI,CAAC,kBAAkB;gCAAE,OAAO,MAAM,CAAC;4BAC5D,MAAM,IAAI,GAAG,IAA6B,CAAC;4BAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;4BACnC,IAAI,CAAC,IAAA,mBAAY,EAAC,QAAQ,CAAC;gCAAE,OAAO,MAAM,CAAC;4BAC3C,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;gCAAE,OAAO,MAAM,CAAC;4BAEzF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAkB,CAAC;4BAC5C,MAAM,GAAG,GAAG,WAAW,CAAC;4BACxB,IAAI,CAAC,CAAA,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,0CAAE,QAAQ,0CAAE,MAAM,CAAA;gCAAE,OAAO,MAAM,CAAC;4BAEvD,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE;gCAC9D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;gCACxB,IAAI,CAAC,IAAA,mBAAY,EAAC,IAAI,CAAC;oCAAE,OAAO,IAAI,CAAC;gCACrC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAE,IAAqB,CAAC,UAAU,CAAC,CAAC;4BACvE,CAAC,CAAC,CAAC;4BAEH,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;gCAAE,OAAO,MAAM,CAAC;4BAE5E,QAAQ,GAAG,IAAI,CAAC;4BAChB,uCACO,MAAM,KACT,OAAO,kCACA,IAAI,KACP,WAAW,kCACJ,GAAG,KACN,WAAW,kCACJ,GAAG,CAAC,WAAW,KAClB,QAAQ,EAAE,aAAa,aAIrC;wBACN,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,QAAQ;4BAAE,OAAO,CAAC,CAAC;wBAExB,OAAO,IAAA,iBAAM,EAAC,CAAC,EAAE,KAAK,CAAC,EAAE;4BACrB,MAAM,IAAI,GAAI,KAAK,CAAC,SAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAe,CAAC,IAAK,CAAC;4BACjE,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC;wBACpC,CAAC,CAAiB,CAAC;oBACvB,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAjJD,8DAiJC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ExecutionContext, Recipe, TreeVisitor } from "@openrewrite/rewrite";
|
|
2
|
+
/**
|
|
3
|
+
* Rewrite `<p-messages [value]="X"...></p-messages>` to a `@for` loop over `<p-message>`,
|
|
4
|
+
* matching the v18 replacement pattern. Handles both self-closing and paired tags, single-
|
|
5
|
+
* or double-quoted bound values, and any other attributes (which are dropped — they don't
|
|
6
|
+
* apply to the new component).
|
|
7
|
+
*/
|
|
8
|
+
export declare class MigrateMessagesToMessageLoop extends Recipe {
|
|
9
|
+
readonly name = "org.openrewrite.primeng.MigrateMessagesToMessageLoop";
|
|
10
|
+
readonly displayName = "Migrate `<p-messages>` to `<p-message>` with `@for` loop";
|
|
11
|
+
readonly description: string;
|
|
12
|
+
private dataTable;
|
|
13
|
+
editor(): Promise<TreeVisitor<any, ExecutionContext>>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=migrate-messages-to-message-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-messages-to-message-loop.d.ts","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/migrate-messages-to-message-loop.ts"],"names":[],"mappings":"AAMA,OAAO,EAAY,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAStF;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,MAAM;IACpD,QAAQ,CAAC,IAAI,0DAA0D;IACvE,QAAQ,CAAC,WAAW,8DAA8D;IAClF,QAAQ,CAAC,WAAW,SAGiF;IAErG,OAAO,CAAC,SAAS,CAKf;IAEI,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAmC9D"}
|