@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.
Files changed (124) hide show
  1. package/dist/index.d.ts +18 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +76 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/libraries/primeng/18/add-primeng-provider.d.ts +45 -0
  6. package/dist/libraries/primeng/18/add-primeng-provider.d.ts.map +1 -0
  7. package/dist/libraries/primeng/18/add-primeng-provider.js +354 -0
  8. package/dist/libraries/primeng/18/add-primeng-provider.js.map +1 -0
  9. package/dist/libraries/primeng/18/index.d.ts +19 -0
  10. package/dist/libraries/primeng/18/index.d.ts.map +1 -0
  11. package/dist/libraries/primeng/18/index.js +45 -0
  12. package/dist/libraries/primeng/18/index.js.map +1 -0
  13. package/dist/libraries/primeng/18/manual-migration-steps.d.ts +19 -0
  14. package/dist/libraries/primeng/18/manual-migration-steps.d.ts.map +1 -0
  15. package/dist/libraries/primeng/18/manual-migration-steps.js +45 -0
  16. package/dist/libraries/primeng/18/manual-migration-steps.js.map +1 -0
  17. package/dist/libraries/primeng/18/mark-deprecated-components.d.ts +9 -0
  18. package/dist/libraries/primeng/18/mark-deprecated-components.d.ts.map +1 -0
  19. package/dist/libraries/primeng/18/mark-deprecated-components.js +125 -0
  20. package/dist/libraries/primeng/18/mark-deprecated-components.js.map +1 -0
  21. package/dist/libraries/primeng/18/mark-deprecated-css-classes.d.ts +15 -0
  22. package/dist/libraries/primeng/18/mark-deprecated-css-classes.d.ts.map +1 -0
  23. package/dist/libraries/primeng/18/mark-deprecated-css-classes.js +108 -0
  24. package/dist/libraries/primeng/18/mark-deprecated-css-classes.js.map +1 -0
  25. package/dist/libraries/primeng/18/mark-drawer-size.d.ts +16 -0
  26. package/dist/libraries/primeng/18/mark-drawer-size.d.ts.map +1 -0
  27. package/dist/libraries/primeng/18/mark-drawer-size.js +90 -0
  28. package/dist/libraries/primeng/18/mark-drawer-size.js.map +1 -0
  29. package/dist/libraries/primeng/18/mark-removed-primeng-modules.d.ts +9 -0
  30. package/dist/libraries/primeng/18/mark-removed-primeng-modules.d.ts.map +1 -0
  31. package/dist/libraries/primeng/18/mark-removed-primeng-modules.js +186 -0
  32. package/dist/libraries/primeng/18/mark-removed-primeng-modules.js.map +1 -0
  33. package/dist/libraries/primeng/18/migrate-messages-to-message-loop.d.ts +15 -0
  34. package/dist/libraries/primeng/18/migrate-messages-to-message-loop.d.ts.map +1 -0
  35. package/dist/libraries/primeng/18/migrate-messages-to-message-loop.js +78 -0
  36. package/dist/libraries/primeng/18/migrate-messages-to-message-loop.js.map +1 -0
  37. package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.d.ts +27 -0
  38. package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.d.ts.map +1 -0
  39. package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.js +495 -0
  40. package/dist/libraries/primeng/18/migrate-p-fluid-to-wrapper.js.map +1 -0
  41. package/dist/libraries/primeng/18/migrate-primeng-config.d.ts +8 -0
  42. package/dist/libraries/primeng/18/migrate-primeng-config.d.ts.map +1 -0
  43. package/dist/libraries/primeng/18/migrate-primeng-config.js +154 -0
  44. package/dist/libraries/primeng/18/migrate-primeng-config.js.map +1 -0
  45. package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.d.ts +12 -0
  46. package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.d.ts.map +1 -0
  47. package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.js +112 -0
  48. package/dist/libraries/primeng/18/migrate-primeng-signal-assignments.js.map +1 -0
  49. package/dist/libraries/primeng/18/rename-calendar-to-datepicker.d.ts +8 -0
  50. package/dist/libraries/primeng/18/rename-calendar-to-datepicker.d.ts.map +1 -0
  51. package/dist/libraries/primeng/18/rename-calendar-to-datepicker.js +114 -0
  52. package/dist/libraries/primeng/18/rename-calendar-to-datepicker.js.map +1 -0
  53. package/dist/libraries/primeng/18/rename-dropdown-to-select.d.ts +8 -0
  54. package/dist/libraries/primeng/18/rename-dropdown-to-select.d.ts.map +1 -0
  55. package/dist/libraries/primeng/18/rename-dropdown-to-select.js +114 -0
  56. package/dist/libraries/primeng/18/rename-dropdown-to-select.js.map +1 -0
  57. package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.d.ts +8 -0
  58. package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.d.ts.map +1 -0
  59. package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.js +114 -0
  60. package/dist/libraries/primeng/18/rename-inputswitch-to-toggleswitch.js.map +1 -0
  61. package/dist/libraries/primeng/18/rename-message-interface.d.ts +8 -0
  62. package/dist/libraries/primeng/18/rename-message-interface.d.ts.map +1 -0
  63. package/dist/libraries/primeng/18/rename-message-interface.js +107 -0
  64. package/dist/libraries/primeng/18/rename-message-interface.js.map +1 -0
  65. package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.d.ts +8 -0
  66. package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.d.ts.map +1 -0
  67. package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.js +114 -0
  68. package/dist/libraries/primeng/18/rename-overlaypanel-to-popover.js.map +1 -0
  69. package/dist/libraries/primeng/18/rename-sidebar-to-drawer.d.ts +8 -0
  70. package/dist/libraries/primeng/18/rename-sidebar-to-drawer.d.ts.map +1 -0
  71. package/dist/libraries/primeng/18/rename-sidebar-to-drawer.js +114 -0
  72. package/dist/libraries/primeng/18/rename-sidebar-to-drawer.js.map +1 -0
  73. package/dist/libraries/primeng/18/rename-template-selectors.d.ts +12 -0
  74. package/dist/libraries/primeng/18/rename-template-selectors.d.ts.map +1 -0
  75. package/dist/libraries/primeng/18/rename-template-selectors.js +79 -0
  76. package/dist/libraries/primeng/18/rename-template-selectors.js.map +1 -0
  77. package/dist/libraries/primeng/18/upgrade-components-to-18.d.ts +8 -0
  78. package/dist/libraries/primeng/18/upgrade-components-to-18.d.ts.map +1 -0
  79. package/dist/libraries/primeng/18/upgrade-components-to-18.js +73 -0
  80. package/dist/libraries/primeng/18/upgrade-components-to-18.js.map +1 -0
  81. package/dist/libraries/primeng/18/upgrade-to-primeng-18.d.ts +8 -0
  82. package/dist/libraries/primeng/18/upgrade-to-primeng-18.d.ts.map +1 -0
  83. package/dist/libraries/primeng/18/upgrade-to-primeng-18.js +68 -0
  84. package/dist/libraries/primeng/18/upgrade-to-primeng-18.js.map +1 -0
  85. package/dist/migration/explicit-standalone-flag.d.ts.map +1 -1
  86. package/dist/migration/explicit-standalone-flag.js +12 -5
  87. package/dist/migration/explicit-standalone-flag.js.map +1 -1
  88. package/dist/migration/replace-untyped-forms.d.ts +14 -2
  89. package/dist/migration/replace-untyped-forms.d.ts.map +1 -1
  90. package/dist/migration/replace-untyped-forms.js +108 -36
  91. package/dist/migration/replace-untyped-forms.js.map +1 -1
  92. package/dist/migration/upgrade-angular-peer-libs-to-18.d.ts +17 -0
  93. package/dist/migration/upgrade-angular-peer-libs-to-18.d.ts.map +1 -0
  94. package/dist/migration/upgrade-angular-peer-libs-to-18.js +49 -0
  95. package/dist/migration/upgrade-angular-peer-libs-to-18.js.map +1 -0
  96. package/dist/migration/upgrade-to-angular-18.d.ts.map +1 -1
  97. package/dist/migration/upgrade-to-angular-18.js +16 -7
  98. package/dist/migration/upgrade-to-angular-18.js.map +1 -1
  99. package/package.json +1 -1
  100. package/src/index.ts +57 -0
  101. package/src/libraries/primeng/18/add-primeng-provider.ts +359 -0
  102. package/src/libraries/primeng/18/index.ts +24 -0
  103. package/src/libraries/primeng/18/manual-migration-steps.ts +37 -0
  104. package/src/libraries/primeng/18/mark-deprecated-components.ts +128 -0
  105. package/src/libraries/primeng/18/mark-deprecated-css-classes.ts +109 -0
  106. package/src/libraries/primeng/18/mark-drawer-size.ts +85 -0
  107. package/src/libraries/primeng/18/mark-removed-primeng-modules.ts +198 -0
  108. package/src/libraries/primeng/18/migrate-messages-to-message-loop.ts +72 -0
  109. package/src/libraries/primeng/18/migrate-p-fluid-to-wrapper.ts +439 -0
  110. package/src/libraries/primeng/18/migrate-primeng-config.ts +112 -0
  111. package/src/libraries/primeng/18/migrate-primeng-signal-assignments.ts +83 -0
  112. package/src/libraries/primeng/18/rename-calendar-to-datepicker.ts +81 -0
  113. package/src/libraries/primeng/18/rename-dropdown-to-select.ts +81 -0
  114. package/src/libraries/primeng/18/rename-inputswitch-to-toggleswitch.ts +81 -0
  115. package/src/libraries/primeng/18/rename-message-interface.ts +78 -0
  116. package/src/libraries/primeng/18/rename-overlaypanel-to-popover.ts +81 -0
  117. package/src/libraries/primeng/18/rename-sidebar-to-drawer.ts +81 -0
  118. package/src/libraries/primeng/18/rename-template-selectors.ts +63 -0
  119. package/src/libraries/primeng/18/upgrade-components-to-18.ts +57 -0
  120. package/src/libraries/primeng/18/upgrade-to-primeng-18.ts +52 -0
  121. package/src/migration/explicit-standalone-flag.ts +11 -5
  122. package/src/migration/replace-untyped-forms.ts +111 -39
  123. package/src/migration/upgrade-angular-peer-libs-to-18.ts +33 -0
  124. package/src/migration/upgrade-to-angular-18.ts +16 -7
@@ -0,0 +1,78 @@
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.MigrateMessagesToMessageLoop = 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
+ /**
22
+ * Rewrite `<p-messages [value]="X"...></p-messages>` to a `@for` loop over `<p-message>`,
23
+ * matching the v18 replacement pattern. Handles both self-closing and paired tags, single-
24
+ * or double-quoted bound values, and any other attributes (which are dropped — they don't
25
+ * apply to the new component).
26
+ */
27
+ class MigrateMessagesToMessageLoop extends rewrite_1.Recipe {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.name = "org.openrewrite.primeng.MigrateMessagesToMessageLoop";
31
+ this.displayName = "Migrate `<p-messages>` to `<p-message>` with `@for` loop";
32
+ this.description = "Rewrites `<p-messages [value]=\"expr\">…</p-messages>` to " +
33
+ "`@for (msg of expr; track msg) { <p-message [severity]=\"msg.severity\" [text]=\"msg.detail\"></p-message> }`. " +
34
+ "The `Messages` component was removed in PrimeNG 18 in favor of looping over the new `Message` component. " +
35
+ "Each rewritten site is recorded in the `ManualMigrationSteps` data table for follow-up review.";
36
+ 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);
37
+ }
38
+ editor() {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const recipeName = this.name;
41
+ const dataTable = this.dataTable;
42
+ return new class extends text_1.PlainTextVisitor {
43
+ visitText(text, p) {
44
+ const _super = Object.create(null, {
45
+ visitText: { get: () => super.visitText }
46
+ });
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const t = yield _super.visitText.call(this, text, p);
49
+ if (!t)
50
+ return t;
51
+ if (!t.sourcePath.endsWith('.html'))
52
+ return t;
53
+ if (!t.text.includes('<p-messages'))
54
+ return t;
55
+ const re = /<p-messages\b([^>]*?)\[value\]=["']([^"']+)["']([^>]*)>(?:\s*<\/p-messages>)?/g;
56
+ let modified = false;
57
+ const updated = t.text.replace(re, (_match, _before, expr, _after) => {
58
+ modified = true;
59
+ dataTable.insertRow(p, {
60
+ sourcePath: t.sourcePath,
61
+ recipe: recipeName,
62
+ subject: `<p-messages [value]="${expr}">`,
63
+ reason: "Messages component removed in PrimeNG 18; replaced by automated rewrite to <p-message> + @for loop.",
64
+ action: "Review the generated severity/text bindings against the original message shape (closable, life, etc. no longer apply). Confirm the iterable shape matches `{ severity, summary, detail }`.",
65
+ });
66
+ return `<!-- TODO: PrimeNG 18 — \`Messages\` was removed. The block below is an automated rewrite to the new \`Message\` + \`@for\` pattern; review severity/text/closable bindings against the original message shape. -->\n@for (msg of ${expr}; track msg) {\n <p-message [severity]="msg.severity" [text]="msg.detail"></p-message>\n}`;
67
+ });
68
+ if (!modified)
69
+ return t;
70
+ return Object.assign(Object.assign({}, t), { text: updated, snippets: [] });
71
+ });
72
+ }
73
+ }();
74
+ });
75
+ }
76
+ }
77
+ exports.MigrateMessagesToMessageLoop = MigrateMessagesToMessageLoop;
78
+ //# sourceMappingURL=migrate-messages-to-message-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-messages-to-message-loop.js","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/migrate-messages-to-message-loop.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;AAEH,kDAAsF;AACtF,oDAAsE;AACtE,qEAKkC;AAElC;;;;;GAKG;AACH,MAAa,4BAA6B,SAAQ,gBAAM;IAAxD;;QACa,SAAI,GAAG,sDAAsD,CAAC;QAC9D,gBAAW,GAAG,0DAA0D,CAAC;QACzE,gBAAW,GAAG,4DAA4D;YAC/E,iHAAiH;YACjH,2GAA2G;YAC3G,gGAAgG,CAAC;QAE7F,cAAS,GAAG,IAAI,mBAAS,CAC7B,oDAA2B,EAC3B,4DAAmC,EACnC,2DAAkC,EAClC,4CAAmB,CACtB,CAAC;IAqCN,CAAC;IAnCS,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;wBAC9C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;4BAAE,OAAO,CAAC,CAAC;wBAE9C,MAAM,EAAE,GAAG,gFAAgF,CAAC;wBAE5F,IAAI,QAAQ,GAAG,KAAK,CAAC;wBACrB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;4BACjE,QAAQ,GAAG,IAAI,CAAC;4BAChB,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE;gCACnB,UAAU,EAAE,CAAC,CAAC,UAAU;gCACxB,MAAM,EAAE,UAAU;gCAClB,OAAO,EAAE,wBAAwB,IAAI,IAAI;gCACzC,MAAM,EAAE,qGAAqG;gCAC7G,MAAM,EAAE,4LAA4L;6BACvM,CAAC,CAAC;4BACH,OAAO,qOAAqO,IAAI,4FAA4F,CAAC;wBACjV,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,QAAQ;4BAAE,OAAO,CAAC,CAAC;wBAExB,uCACO,CAAC,KACJ,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,EAAE,IACd;oBACN,CAAC;iBAAA;aACJ,EAAE,CAAC;QACR,CAAC;KAAA;CACJ;AAlDD,oEAkDC"}
@@ -0,0 +1,27 @@
1
+ import { Recipe } from "@openrewrite/rewrite";
2
+ /**
3
+ * Migrates PrimeNG v17's `.p-fluid` CSS class — removed in v18 — to v18's `<p-fluid>`
4
+ * wrapper component.
5
+ *
6
+ * In v17, `.p-fluid` made child form controls `display: block; width: 100%`, which most
7
+ * apps used to stack labels above inputs. In v18 the class is a no-op, so pages silently
8
+ * lose that layout. The replacement is the `<p-fluid>` wrapper from `primeng/fluid`,
9
+ * which applies the same effect via design tokens.
10
+ *
11
+ * Two-phase recipe:
12
+ * 1. `MigratePFluidHtml` — rewrites `<div class="…p-fluid…">…</div>` to
13
+ * `<p-fluid class="…">…</p-fluid>` and tracks affected file paths.
14
+ * 2. `MigratePFluidAddImports` — adds `FluidModule` to component files whose `templateUrl`
15
+ * points at one of the rewritten HTML files.
16
+ *
17
+ * Limitations: rewrites only `<div>` containers (other elements like `<section>` are left
18
+ * for `MarkDeprecatedPrimengCssClasses` to flag). Custom CSS rules selecting `.p-fluid`
19
+ * stop matching after the rewrite — same trade-off PrimeNG itself made by removing the class.
20
+ */
21
+ export declare class MigratePFluidToWrapper extends Recipe {
22
+ readonly name = "org.openrewrite.primeng.MigratePFluidToWrapper";
23
+ readonly displayName = "Migrate `.p-fluid` to `<p-fluid>` wrapper";
24
+ readonly description: string;
25
+ recipeList(): Promise<Recipe[]>;
26
+ }
27
+ //# sourceMappingURL=migrate-p-fluid-to-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-p-fluid-to-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/migrate-p-fluid-to-wrapper.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,MAAM,EAA8B,MAAM,sBAAsB,CAAC;AAkN3F;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAuB,SAAQ,MAAM;IAC9C,QAAQ,CAAC,IAAI,oDAAoD;IACjE,QAAQ,CAAC,WAAW,+CAA+C;IACnE,QAAQ,CAAC,WAAW,SAGD;IAEb,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CASxC"}
@@ -0,0 +1,495 @@
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
41
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
42
+ return new (P || (P = Promise))(function (resolve, reject) {
43
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
44
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
45
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
46
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
47
+ });
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.MigratePFluidToWrapper = void 0;
51
+ const rewrite_1 = require("@openrewrite/rewrite");
52
+ const text_1 = require("@openrewrite/rewrite/text");
53
+ const javascript_1 = require("@openrewrite/rewrite/javascript");
54
+ const java_1 = require("@openrewrite/rewrite/java");
55
+ const path = __importStar(require("path"));
56
+ /**
57
+ * HTML files (repo-relative source paths) where the HTML sub-recipe rewrote `class="…p-fluid…"`
58
+ * to a `<p-fluid>` wrapper. The TS sub-recipe reads this set to decide which `*.component.ts`
59
+ * files need `FluidModule` added to their imports.
60
+ *
61
+ * Module-scoped because the two sub-recipes run sequentially within a single mod invocation —
62
+ * passing state via the recipe's `recipeList()` chain is the simplest way to share between the
63
+ * HTML and TS visitor types.
64
+ */
65
+ const rewrittenHtmlPaths = new Set();
66
+ /**
67
+ * Rewrites `<div class="…p-fluid…">…</div>` to `<p-fluid class="…">…</p-fluid>` in HTML
68
+ * templates. Uses scanner phase to pre-populate `rewrittenHtmlPaths` so the sibling
69
+ * `MigratePFluidAddImports` sub-recipe (which runs concurrently in the editor phase) can
70
+ * see the full set when its TS visitor fires.
71
+ */
72
+ class MigratePFluidHtml extends rewrite_1.ScanningRecipe {
73
+ constructor() {
74
+ super(...arguments);
75
+ this.name = "org.openrewrite.primeng.MigratePFluidToWrapper.html";
76
+ this.displayName = "Rewrite `.p-fluid` divs to `<p-fluid>` wrappers";
77
+ this.description = "Rewrites `<div class=\"…p-fluid…\">…</div>` to `<p-fluid class=\"…\">…</p-fluid>` " +
78
+ "in HTML templates (the `p-fluid` class is removed from the resulting class list). Tracks " +
79
+ "which files were modified so a follow-up sub-recipe can add the `FluidModule` import.";
80
+ }
81
+ initialValue(_ctx) {
82
+ return {};
83
+ }
84
+ scanner(_acc) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ // Populate the shared rewritten-paths set during the scanner phase so the sibling
87
+ // import-adder recipe sees it before its editor runs.
88
+ return new class extends text_1.PlainTextVisitor {
89
+ visitText(text, p) {
90
+ const _super = Object.create(null, {
91
+ visitText: { get: () => super.visitText }
92
+ });
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ const t = yield _super.visitText.call(this, text, p);
95
+ if (!t)
96
+ return t;
97
+ if (!t.sourcePath.endsWith('.html'))
98
+ return t;
99
+ if (!/\bp-fluid\b/.test(t.text))
100
+ return t;
101
+ // Same rewrite logic, but only record the path — don't mutate the tree here.
102
+ if (rewriteHtml(t.text) !== t.text) {
103
+ rewrittenHtmlPaths.add(t.sourcePath);
104
+ }
105
+ return t;
106
+ });
107
+ }
108
+ }();
109
+ });
110
+ }
111
+ editorWithData(_acc) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ return new class extends text_1.PlainTextVisitor {
114
+ visitText(text, p) {
115
+ const _super = Object.create(null, {
116
+ visitText: { get: () => super.visitText }
117
+ });
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const t = yield _super.visitText.call(this, text, p);
120
+ if (!t)
121
+ return t;
122
+ if (!rewrittenHtmlPaths.has(t.sourcePath))
123
+ return t;
124
+ const updated = rewriteHtml(t.text);
125
+ if (updated === t.text)
126
+ return t;
127
+ return Object.assign(Object.assign({}, t), { text: updated, snippets: [] });
128
+ });
129
+ }
130
+ }();
131
+ });
132
+ }
133
+ }
134
+ /**
135
+ * Adds a `FluidModule` import line and prepends `FluidModule` to the `imports: [...]` array
136
+ * of every `*.component.ts` whose `templateUrl` points at an HTML file rewritten by
137
+ * `MigratePFluidHtml`, plus the root NgModule for non-standalone apps. Without that, Angular
138
+ * reports `'p-fluid' is not a known element`.
139
+ *
140
+ * Why prepend rather than append: a multi-line `imports: [..., DataViewModule,]` with trailing
141
+ * comma has trailing whitespace (`,\n `) before `]` whose AST location is fiddly to mutate
142
+ * cleanly. Prepending sidesteps that — we slot the new entry in front of the existing first
143
+ * element, reusing that element's prefix for indentation, and the framework's natural
144
+ * inter-element comma handles the separator. Module-import order is functionally irrelevant
145
+ * to Angular.
146
+ */
147
+ class MigratePFluidAddImports extends rewrite_1.Recipe {
148
+ constructor() {
149
+ super(...arguments);
150
+ this.name = "org.openrewrite.primeng.MigratePFluidToWrapper.add-imports";
151
+ this.displayName = "Add `FluidModule` import to components using `<p-fluid>`";
152
+ this.description = "For each `*.component.ts` whose `templateUrl` references an HTML file " +
153
+ "rewritten with `<p-fluid>` wrappers (and the root NgModule for non-standalone apps), " +
154
+ "adds `import { FluidModule } from 'primeng/fluid';` and prepends `FluidModule` to the " +
155
+ "component's or module's `imports: [...]` array.";
156
+ }
157
+ editor() {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ return new class extends javascript_1.JavaScriptVisitor {
160
+ visitAnnotation(annotation, p) {
161
+ const _super = Object.create(null, {
162
+ visitAnnotation: { get: () => super.visitAnnotation }
163
+ });
164
+ return __awaiter(this, void 0, void 0, function* () {
165
+ var _a, _b, _c;
166
+ let a = yield _super.visitAnnotation.call(this, annotation, p);
167
+ if (!a)
168
+ return a;
169
+ const annotType = a.annotationType;
170
+ if (!(0, java_1.isIdentifier)(annotType))
171
+ return a;
172
+ const annotName = annotType.simpleName;
173
+ if (annotName !== 'Component' && annotName !== 'NgModule')
174
+ return a;
175
+ if (!((_b = (_a = a.arguments) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.length))
176
+ return a;
177
+ const firstArg = a.arguments.elements[0].element;
178
+ if (firstArg.kind !== java_1.J.Kind.NewClass)
179
+ return a;
180
+ const newClass = firstArg;
181
+ if (!newClass.body)
182
+ return a;
183
+ // Decide whether this site needs FluidModule:
184
+ // - @Component: only if its templateUrl points at a rewritten HTML.
185
+ // - @NgModule: only the root NgModule (`bootstrap: [...]` present), and only if
186
+ // any HTML in the project was rewritten — catch-all for non-standalone apps.
187
+ if (annotName === 'Component') {
188
+ const sourceFile = this.cursor.firstEnclosing((v) => v && typeof v.sourcePath === 'string');
189
+ if (!templateUrlReferencesRewritten(newClass, sourceFile === null || sourceFile === void 0 ? void 0 : sourceFile.sourcePath))
190
+ return a;
191
+ }
192
+ else {
193
+ if (rewrittenHtmlPaths.size === 0)
194
+ return a;
195
+ const hasBootstrap = newClass.body.statements.some(s => {
196
+ const stmt = s.element;
197
+ if (stmt.kind !== javascript_1.JS.Kind.PropertyAssignment)
198
+ return false;
199
+ const nameExpr = stmt.name.element;
200
+ return (0, java_1.isIdentifier)(nameExpr) && nameExpr.simpleName === 'bootstrap';
201
+ });
202
+ if (!hasBootstrap)
203
+ return a;
204
+ }
205
+ // Find the `imports: [...]` member.
206
+ let importsIndex = -1;
207
+ for (let i = 0; i < newClass.body.statements.length; i++) {
208
+ const stmt = newClass.body.statements[i].element;
209
+ if (stmt.kind !== javascript_1.JS.Kind.PropertyAssignment)
210
+ continue;
211
+ const prop = stmt;
212
+ const nameExpr = prop.name.element;
213
+ if (!(0, java_1.isIdentifier)(nameExpr))
214
+ continue;
215
+ if (nameExpr.simpleName === 'imports') {
216
+ importsIndex = i;
217
+ break;
218
+ }
219
+ }
220
+ (0, javascript_1.maybeAddImport)(this, {
221
+ module: 'primeng/fluid',
222
+ member: 'FluidModule',
223
+ onlyIfReferenced: false,
224
+ });
225
+ if (importsIndex === -1)
226
+ return a;
227
+ const importsStmt = newClass.body.statements[importsIndex].element;
228
+ const arr = importsStmt.initializer;
229
+ const container = arr === null || arr === void 0 ? void 0 : arr.initializer;
230
+ const existingElements = (_c = container === null || container === void 0 ? void 0 : container.elements) !== null && _c !== void 0 ? _c : [];
231
+ // Idempotence: skip if FluidModule is already in the array.
232
+ for (const el of existingElements) {
233
+ const expr = el.element;
234
+ if ((0, java_1.isIdentifier)(expr) && expr.simpleName === 'FluidModule') {
235
+ return a;
236
+ }
237
+ }
238
+ // Prepend, not append. The new entry mirrors the prefix of the existing first
239
+ // element (so the indent matches in multi-line arrays). The existing first
240
+ // element's prefix needs no change — it becomes the second element, and the
241
+ // framework injects a comma + the original prefix as the inter-element separator.
242
+ const fluidIdentifier = {
243
+ kind: java_1.J.Kind.Identifier,
244
+ id: a.id,
245
+ prefix: existingElements.length > 0 ? existingElements[0].element.prefix : { kind: 'org.openrewrite.java.tree.Space', whitespace: '', comments: [] },
246
+ markers: { kind: 'org.openrewrite.marker.Markers', id: a.id, markers: [] },
247
+ annotations: [],
248
+ simpleName: 'FluidModule',
249
+ };
250
+ const fluidRP = {
251
+ kind: java_1.J.Kind.RightPadded,
252
+ element: fluidIdentifier,
253
+ after: { kind: 'org.openrewrite.java.tree.Space', whitespace: '', comments: [] },
254
+ markers: { kind: 'org.openrewrite.marker.Markers', id: a.id, markers: [] },
255
+ };
256
+ const updatedImportsStmt = Object.assign(Object.assign({}, importsStmt), { initializer: Object.assign(Object.assign({}, arr), { initializer: Object.assign(Object.assign({}, container), { elements: [fluidRP, ...existingElements] }) }) });
257
+ const newStatements = [...newClass.body.statements];
258
+ newStatements[importsIndex] = Object.assign(Object.assign({}, newStatements[importsIndex]), { element: updatedImportsStmt });
259
+ const newNewClass = Object.assign(Object.assign({}, newClass), { body: Object.assign(Object.assign({}, newClass.body), { statements: newStatements }) });
260
+ return Object.assign(Object.assign({}, a), { arguments: Object.assign(Object.assign({}, a.arguments), { elements: [Object.assign(Object.assign({}, a.arguments.elements[0]), { element: newNewClass })] }) });
261
+ });
262
+ }
263
+ };
264
+ });
265
+ }
266
+ }
267
+ /**
268
+ * Migrates PrimeNG v17's `.p-fluid` CSS class — removed in v18 — to v18's `<p-fluid>`
269
+ * wrapper component.
270
+ *
271
+ * In v17, `.p-fluid` made child form controls `display: block; width: 100%`, which most
272
+ * apps used to stack labels above inputs. In v18 the class is a no-op, so pages silently
273
+ * lose that layout. The replacement is the `<p-fluid>` wrapper from `primeng/fluid`,
274
+ * which applies the same effect via design tokens.
275
+ *
276
+ * Two-phase recipe:
277
+ * 1. `MigratePFluidHtml` — rewrites `<div class="…p-fluid…">…</div>` to
278
+ * `<p-fluid class="…">…</p-fluid>` and tracks affected file paths.
279
+ * 2. `MigratePFluidAddImports` — adds `FluidModule` to component files whose `templateUrl`
280
+ * points at one of the rewritten HTML files.
281
+ *
282
+ * Limitations: rewrites only `<div>` containers (other elements like `<section>` are left
283
+ * for `MarkDeprecatedPrimengCssClasses` to flag). Custom CSS rules selecting `.p-fluid`
284
+ * stop matching after the rewrite — same trade-off PrimeNG itself made by removing the class.
285
+ */
286
+ class MigratePFluidToWrapper extends rewrite_1.Recipe {
287
+ constructor() {
288
+ super(...arguments);
289
+ this.name = "org.openrewrite.primeng.MigratePFluidToWrapper";
290
+ this.displayName = "Migrate `.p-fluid` to `<p-fluid>` wrapper";
291
+ this.description = "Rewrites `<div class=\"…p-fluid…\">…</div>` to `<p-fluid class=\"…\">…</p-fluid>` " +
292
+ "and adds a `FluidModule` import from `primeng/fluid` to the corresponding component file. " +
293
+ "PrimeNG 18 removed the `.p-fluid` CSS class; the `<p-fluid>` wrapper component is its " +
294
+ "replacement.";
295
+ }
296
+ recipeList() {
297
+ return __awaiter(this, void 0, void 0, function* () {
298
+ // Reset shared state for each top-level invocation; each call to `recipeList()` produces
299
+ // a fresh chain instance, but the module-scoped Set persists across them otherwise.
300
+ rewrittenHtmlPaths.clear();
301
+ return [
302
+ new MigratePFluidHtml(),
303
+ new MigratePFluidAddImports(),
304
+ ];
305
+ });
306
+ }
307
+ }
308
+ exports.MigratePFluidToWrapper = MigratePFluidToWrapper;
309
+ /**
310
+ * Rewrite every `<div class="…p-fluid…">CHILDREN</div>` in the given source text. Two cases:
311
+ *
312
+ * 1. `p-fluid` is the only class on the div → replace the div entirely with `<p-fluid>`:
313
+ * `<div class="p-fluid">CHILDREN</div>` → `<p-fluid>CHILDREN</p-fluid>`
314
+ *
315
+ * 2. The div has other classes → keep the original `<div>` (preserving its natural
316
+ * content-width and any custom CSS targeting its non-`p-fluid` classes) and wrap
317
+ * CHILDREN in a `<p-fluid>`. The `p-fluid` class is stripped from the div:
318
+ * `<div class="X p-fluid">CHILDREN</div>` → `<div class="X"><p-fluid>CHILDREN</p-fluid></div>`
319
+ *
320
+ * Case 2 prevents the v18 `<p-fluid>` element's `display: block; width: 100%;` from
321
+ * forcing the wrapper to fill its flex parent (a regression vs. v17's `<div class="…p-fluid">`,
322
+ * whose own width was content-driven — only child inputs got 100% from `.p-fluid`).
323
+ */
324
+ function rewriteHtml(src) {
325
+ var _a, _b;
326
+ if (!/\bp-fluid\b/.test(src))
327
+ return src;
328
+ const divOpenRe = /<div\b([^>]*)>/g;
329
+ const rewrites = [];
330
+ let m;
331
+ while ((m = divOpenRe.exec(src)) !== null) {
332
+ const attrs = m[1];
333
+ // Skip self-closing `<div ... />` — no body to wrap.
334
+ if (attrs.trimEnd().endsWith('/'))
335
+ continue;
336
+ const classMatch = attrs.match(/(?:^|\s)class\s*=\s*("([^"]*)"|'([^']*)')/);
337
+ if (!classMatch)
338
+ continue;
339
+ const classValue = (_a = classMatch[2]) !== null && _a !== void 0 ? _a : classMatch[3];
340
+ if (!/\bp-fluid\b/.test(classValue))
341
+ continue;
342
+ const openEnd = divOpenRe.lastIndex;
343
+ const closePos = findMatchingDivClose(src, openEnd);
344
+ if (closePos === -1)
345
+ continue; // Unbalanced HTML; skip.
346
+ const otherClasses = classValue
347
+ .split(/\s+/)
348
+ .filter(c => c && c !== 'p-fluid')
349
+ .join(' ')
350
+ .trim();
351
+ const openTag = src.slice(m.index, openEnd);
352
+ let replaceDiv;
353
+ let newOpenTag;
354
+ if (otherClasses === '' && /<div\s+class\s*=\s*("[^"]*"|'[^']*')\s*>/.test(openTag)) {
355
+ // `p-fluid` was the sole class AND the div had no other attributes → drop the
356
+ // div entirely and replace with `<p-fluid>`.
357
+ replaceDiv = true;
358
+ newOpenTag = '<p-fluid>';
359
+ }
360
+ else {
361
+ // Keep the original div; just strip `p-fluid` from its class list (or remove the
362
+ // class attribute entirely if `p-fluid` was the only entry there). The `<p-fluid>`
363
+ // wrapper goes around CHILDREN inside.
364
+ replaceDiv = false;
365
+ const newClassAttr = otherClasses ? ` class="${otherClasses}"` : '';
366
+ newOpenTag = openTag.replace(/\s+class\s*=\s*("[^"]*"|'[^']*')/, newClassAttr);
367
+ }
368
+ rewrites.push({
369
+ openStart: m.index,
370
+ openEnd,
371
+ closeStart: closePos,
372
+ closeEnd: closePos + '</div>'.length,
373
+ replaceDiv,
374
+ newOpenTag,
375
+ });
376
+ }
377
+ if (rewrites.length === 0)
378
+ return src;
379
+ // Apply rewrites from the end of the string forward so earlier offsets stay valid.
380
+ let updated = src;
381
+ for (let i = rewrites.length - 1; i >= 0; i--) {
382
+ const r = rewrites[i];
383
+ if (r.replaceDiv) {
384
+ // Replace `<div class="p-fluid">…</div>` with `<p-fluid>…</p-fluid>`.
385
+ updated =
386
+ updated.slice(0, r.openStart) +
387
+ '<p-fluid>' +
388
+ updated.slice(r.openEnd, r.closeStart) +
389
+ '</p-fluid>' +
390
+ updated.slice(r.closeEnd);
391
+ }
392
+ else {
393
+ // Keep the div, but rewrite its open tag (drop the p-fluid class) and wrap
394
+ // children in <p-fluid>. We need the indentation of the FIRST child line and
395
+ // of the closing `</div>` so `<p-fluid>` tags align naturally; preserve
396
+ // whatever the existing children indent looked like by using the existing
397
+ // child-block whitespace verbatim.
398
+ const childrenBlock = updated.slice(r.openEnd, r.closeStart);
399
+ // Insert <p-fluid> on its own line if the original had multi-line children;
400
+ // otherwise put it inline. We detect multi-line by the presence of `\n` in
401
+ // the children block.
402
+ let wrappedChildren;
403
+ if (childrenBlock.includes('\n')) {
404
+ // Match the leading whitespace of the first non-empty child line so the
405
+ // <p-fluid> tags sit one indent level outside the children.
406
+ const childIndentMatch = childrenBlock.match(/\n([ \t]*)\S/);
407
+ const childIndent = (_b = childIndentMatch === null || childIndentMatch === void 0 ? void 0 : childIndentMatch[1]) !== null && _b !== void 0 ? _b : '';
408
+ // Outer indent (where </div> sits) is one level less; approximate by
409
+ // dropping 2 chars of the child indent (good enough for 2-space-indent
410
+ // codebases; falls back to '' for 1-char or no indent).
411
+ const outerIndent = childIndent.length >= 2 ? childIndent.slice(0, -2) : '';
412
+ wrappedChildren =
413
+ `\n${childIndent}<p-fluid>` +
414
+ childrenBlock.replace(/\n/g, `\n `) +
415
+ `</p-fluid>\n${outerIndent}`;
416
+ }
417
+ else {
418
+ wrappedChildren = `<p-fluid>${childrenBlock}</p-fluid>`;
419
+ }
420
+ updated =
421
+ updated.slice(0, r.openStart) +
422
+ r.newOpenTag +
423
+ wrappedChildren +
424
+ '</div>' +
425
+ updated.slice(r.closeEnd);
426
+ }
427
+ }
428
+ return updated;
429
+ }
430
+ /**
431
+ * From the position immediately after a `<div ...>` opening tag, return the index where
432
+ * its matching `</div>` close tag starts. Returns -1 if the file is malformed.
433
+ */
434
+ function findMatchingDivClose(src, startPos) {
435
+ let depth = 1;
436
+ let i = startPos;
437
+ while (i < src.length) {
438
+ const openIdx = src.indexOf('<div', i);
439
+ const closeIdx = src.indexOf('</div>', i);
440
+ if (closeIdx === -1)
441
+ return -1;
442
+ if (openIdx !== -1 && openIdx < closeIdx) {
443
+ const tagEnd = src.indexOf('>', openIdx);
444
+ if (tagEnd === -1)
445
+ return -1;
446
+ const tag = src.slice(openIdx, tagEnd + 1);
447
+ if (!tag.trimEnd().endsWith('/>'))
448
+ depth++;
449
+ i = tagEnd + 1;
450
+ }
451
+ else {
452
+ depth--;
453
+ if (depth === 0)
454
+ return closeIdx;
455
+ i = closeIdx + '</div>'.length;
456
+ }
457
+ }
458
+ return -1;
459
+ }
460
+ /**
461
+ * Given a `@Component({...})` argument NewClass and the source path of the TS file, check
462
+ * whether its `templateUrl` resolves to a path in the rewritten-HTML set.
463
+ */
464
+ function templateUrlReferencesRewritten(newClass, tsSourcePath) {
465
+ var _a, _b, _c;
466
+ if (!tsSourcePath)
467
+ return false;
468
+ if (!newClass.body)
469
+ return false;
470
+ for (const stmt of newClass.body.statements) {
471
+ const s = stmt.element;
472
+ if (s.kind !== javascript_1.JS.Kind.PropertyAssignment)
473
+ continue;
474
+ const prop = s;
475
+ const nameExpr = prop.name.element;
476
+ if (!(0, java_1.isIdentifier)(nameExpr))
477
+ continue;
478
+ if (nameExpr.simpleName !== 'templateUrl')
479
+ continue;
480
+ const valueExpr = (_b = (_a = prop.initializer) === null || _a === void 0 ? void 0 : _a.element) !== null && _b !== void 0 ? _b : prop.initializer;
481
+ if ((valueExpr === null || valueExpr === void 0 ? void 0 : valueExpr.kind) !== java_1.J.Kind.Literal)
482
+ continue;
483
+ const templatePath = String((_c = valueExpr.value) !== null && _c !== void 0 ? _c : '');
484
+ const tsDir = path.dirname(tsSourcePath);
485
+ const resolved = path.normalize(path.join(tsDir, templatePath));
486
+ for (const htmlPath of rewrittenHtmlPaths) {
487
+ if (htmlPath === resolved || htmlPath.endsWith(resolved) || resolved.endsWith(htmlPath)) {
488
+ return true;
489
+ }
490
+ }
491
+ return false;
492
+ }
493
+ return false;
494
+ }
495
+ //# sourceMappingURL=migrate-p-fluid-to-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-p-fluid-to-wrapper.js","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/migrate-p-fluid-to-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Recipe } from "@openrewrite/rewrite";
2
+ export declare class MigratePrimeNgConfigToPrimeNG extends Recipe {
3
+ readonly name = "org.openrewrite.primeng.MigratePrimeNgConfigToPrimeNG";
4
+ readonly displayName = "Migrate `PrimeNGConfig` to `PrimeNG`";
5
+ readonly description: string;
6
+ recipeList(): Promise<Recipe[]>;
7
+ }
8
+ //# sourceMappingURL=migrate-primeng-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-primeng-config.d.ts","sourceRoot":"","sources":["../../../../src/libraries/primeng/18/migrate-primeng-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoD,MAAM,EAAc,MAAM,sBAAsB,CAAC;AAuF5G,qBAAa,6BAA8B,SAAQ,MAAM;IACrD,QAAQ,CAAC,IAAI,2DAA2D;IACxE,QAAQ,CAAC,WAAW,0CAA0C;IAC9D,QAAQ,CAAC,WAAW,SACmH;IAEjI,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAYxC"}