@openrewrite/rewrite 8.91.1 → 8.91.2

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 (96) hide show
  1. package/dist/javascript/add-import.d.ts +68 -34
  2. package/dist/javascript/add-import.d.ts.map +1 -1
  3. package/dist/javascript/add-import.js +322 -160
  4. package/dist/javascript/add-import.js.map +1 -1
  5. package/dist/javascript/amd.d.ts +138 -0
  6. package/dist/javascript/amd.d.ts.map +1 -0
  7. package/dist/javascript/amd.js +768 -0
  8. package/dist/javascript/amd.js.map +1 -0
  9. package/dist/javascript/binding.d.ts +94 -0
  10. package/dist/javascript/binding.d.ts.map +1 -0
  11. package/dist/javascript/binding.js +335 -0
  12. package/dist/javascript/binding.js.map +1 -0
  13. package/dist/javascript/index.d.ts +8 -1
  14. package/dist/javascript/index.d.ts.map +1 -1
  15. package/dist/javascript/index.js +26 -1
  16. package/dist/javascript/index.js.map +1 -1
  17. package/dist/javascript/parser-utils.d.ts.map +1 -1
  18. package/dist/javascript/parser-utils.js +2 -0
  19. package/dist/javascript/parser-utils.js.map +1 -1
  20. package/dist/javascript/parser.d.ts +7 -1
  21. package/dist/javascript/parser.d.ts.map +1 -1
  22. package/dist/javascript/parser.js +7 -1
  23. package/dist/javascript/parser.js.map +1 -1
  24. package/dist/javascript/recipes/change-import.d.ts +2 -4
  25. package/dist/javascript/recipes/change-import.d.ts.map +1 -1
  26. package/dist/javascript/recipes/change-import.js +8 -240
  27. package/dist/javascript/recipes/change-import.js.map +1 -1
  28. package/dist/javascript/remove-import.d.ts +2 -28
  29. package/dist/javascript/remove-import.d.ts.map +1 -1
  30. package/dist/javascript/remove-import.js +19 -57
  31. package/dist/javascript/remove-import.js.map +1 -1
  32. package/dist/javascript/scope.d.ts +49 -0
  33. package/dist/javascript/scope.d.ts.map +1 -0
  34. package/dist/javascript/scope.js +324 -0
  35. package/dist/javascript/scope.js.map +1 -0
  36. package/dist/javascript/templating/bindings.d.ts +0 -11
  37. package/dist/javascript/templating/bindings.d.ts.map +1 -1
  38. package/dist/javascript/templating/bindings.js +0 -29
  39. package/dist/javascript/templating/bindings.js.map +1 -1
  40. package/dist/javascript/templating/comparator.d.ts +10 -0
  41. package/dist/javascript/templating/comparator.d.ts.map +1 -1
  42. package/dist/javascript/templating/comparator.js +43 -14
  43. package/dist/javascript/templating/comparator.js.map +1 -1
  44. package/dist/javascript/templating/engine.d.ts +17 -4
  45. package/dist/javascript/templating/engine.d.ts.map +1 -1
  46. package/dist/javascript/templating/engine.js +43 -17
  47. package/dist/javascript/templating/engine.js.map +1 -1
  48. package/dist/javascript/templating/index.d.ts +1 -1
  49. package/dist/javascript/templating/index.d.ts.map +1 -1
  50. package/dist/javascript/templating/index.js.map +1 -1
  51. package/dist/javascript/templating/pattern.d.ts.map +1 -1
  52. package/dist/javascript/templating/pattern.js +2 -2
  53. package/dist/javascript/templating/pattern.js.map +1 -1
  54. package/dist/javascript/templating/placeholder-replacement.d.ts +2 -0
  55. package/dist/javascript/templating/placeholder-replacement.d.ts.map +1 -1
  56. package/dist/javascript/templating/placeholder-replacement.js +10 -5
  57. package/dist/javascript/templating/placeholder-replacement.js.map +1 -1
  58. package/dist/javascript/templating/precedence.d.ts +12 -4
  59. package/dist/javascript/templating/precedence.d.ts.map +1 -1
  60. package/dist/javascript/templating/precedence.js +18 -11
  61. package/dist/javascript/templating/precedence.js.map +1 -1
  62. package/dist/javascript/templating/rewrite.d.ts.map +1 -1
  63. package/dist/javascript/templating/rewrite.js +7 -1
  64. package/dist/javascript/templating/rewrite.js.map +1 -1
  65. package/dist/javascript/templating/template.d.ts +7 -1
  66. package/dist/javascript/templating/template.d.ts.map +1 -1
  67. package/dist/javascript/templating/template.js +48 -28
  68. package/dist/javascript/templating/template.js.map +1 -1
  69. package/dist/javascript/templating/types.d.ts +10 -18
  70. package/dist/javascript/templating/types.d.ts.map +1 -1
  71. package/dist/javascript/templating/utils.d.ts +1 -1
  72. package/dist/javascript/templating/utils.d.ts.map +1 -1
  73. package/dist/javascript/templating/utils.js +3 -2
  74. package/dist/javascript/templating/utils.js.map +1 -1
  75. package/dist/rewrite-javascript-version.txt +1 -1
  76. package/package.json +2 -2
  77. package/src/javascript/add-import.ts +342 -198
  78. package/src/javascript/amd.ts +915 -0
  79. package/src/javascript/binding.ts +449 -0
  80. package/src/javascript/index.ts +12 -1
  81. package/src/javascript/parser-utils.ts +2 -0
  82. package/src/javascript/parser.ts +13 -0
  83. package/src/javascript/recipes/change-import.ts +10 -260
  84. package/src/javascript/remove-import.ts +20 -56
  85. package/src/javascript/scope.ts +338 -0
  86. package/src/javascript/templating/bindings.ts +0 -30
  87. package/src/javascript/templating/comparator.ts +52 -14
  88. package/src/javascript/templating/engine.ts +70 -28
  89. package/src/javascript/templating/index.ts +0 -1
  90. package/src/javascript/templating/pattern.ts +4 -2
  91. package/src/javascript/templating/placeholder-replacement.ts +16 -6
  92. package/src/javascript/templating/precedence.ts +21 -13
  93. package/src/javascript/templating/rewrite.ts +9 -1
  94. package/src/javascript/templating/template.ts +62 -29
  95. package/src/javascript/templating/types.ts +11 -18
  96. package/src/javascript/templating/utils.ts +4 -2
@@ -20,7 +20,7 @@ import { ExecutionContext } from "../../execution";
20
20
  * // After: import { act } from 'react';
21
21
  *
22
22
  * @example
23
- * // Change a named import to a different name
23
+ * // Change which member of the module a name is bound to
24
24
  * const recipe = new ChangeImport({
25
25
  * oldModule: "lodash",
26
26
  * oldMember: "extend",
@@ -28,7 +28,7 @@ import { ExecutionContext } from "../../execution";
28
28
  * newMember: "assign"
29
29
  * });
30
30
  * // Before: import { extend } from 'lodash';
31
- * // After: import { assign } from 'lodash';
31
+ * // After: import { assign as extend } from 'lodash';
32
32
  */
33
33
  export declare class ChangeImport extends Recipe {
34
34
  readonly name = "org.openrewrite.javascript.change-import";
@@ -38,13 +38,11 @@ export declare class ChangeImport extends Recipe {
38
38
  oldMember: string;
39
39
  newModule: string;
40
40
  newMember?: string;
41
- newAlias?: string;
42
41
  constructor(options?: {
43
42
  oldModule?: string;
44
43
  oldMember?: string;
45
44
  newModule?: string;
46
45
  newMember?: string;
47
- newAlias?: string;
48
46
  });
49
47
  editor(): Promise<TreeVisitor<any, ExecutionContext>>;
50
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"change-import.d.ts","sourceRoot":"","sources":["../../../src/javascript/recipes/change-import.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAU,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,YAAa,SAAQ,MAAM;IACpC,QAAQ,CAAC,IAAI,8CAA8C;IAC3D,QAAQ,CAAC,WAAW,mBAAmB;IACvC,QAAQ,CAAC,WAAW,0FAA0F;IAO9G,SAAS,EAAG,MAAM,CAAC;IAOnB,SAAS,EAAG,MAAM,CAAC;IAOnB,SAAS,EAAG,MAAM,CAAC;IAQnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEN,OAAO,CAAC,EAAE;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAIK,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAulB9D"}
1
+ {"version":3,"file":"change-import.d.ts","sourceRoot":"","sources":["../../../src/javascript/recipes/change-import.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAU,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAMnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,YAAa,SAAQ,MAAM;IACpC,QAAQ,CAAC,IAAI,8CAA8C;IAC3D,QAAQ,CAAC,WAAW,mBAAmB;IACvC,QAAQ,CAAC,WAAW,0FAA0F;IAO9G,SAAS,EAAG,MAAM,CAAC;IAOnB,SAAS,EAAG,MAAM,CAAC;IAOnB,SAAS,EAAG,MAAM,CAAC;IAQnB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,OAAO,CAAC,EAAE;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB;IAIK,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;CAqW9D"}
@@ -24,7 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.ChangeImport = void 0;
25
25
  const recipe_1 = require("../../recipe");
26
26
  const index_1 = require("../index");
27
- const add_import_1 = require("../add-import");
27
+ const binding_1 = require("../binding");
28
28
  const java_1 = require("../../java");
29
29
  const mutative_1 = require("mutative");
30
30
  /**
@@ -46,7 +46,7 @@ const mutative_1 = require("mutative");
46
46
  * // After: import { act } from 'react';
47
47
  *
48
48
  * @example
49
- * // Change a named import to a different name
49
+ * // Change which member of the module a name is bound to
50
50
  * const recipe = new ChangeImport({
51
51
  * oldModule: "lodash",
52
52
  * oldMember: "extend",
@@ -54,7 +54,7 @@ const mutative_1 = require("mutative");
54
54
  * newMember: "assign"
55
55
  * });
56
56
  * // Before: import { extend } from 'lodash';
57
- * // After: import { assign } from 'lodash';
57
+ * // After: import { assign as extend } from 'lodash';
58
58
  */
59
59
  class ChangeImport extends recipe_1.Recipe {
60
60
  constructor(options) {
@@ -69,7 +69,6 @@ class ChangeImport extends recipe_1.Recipe {
69
69
  const oldMember = this.oldMember;
70
70
  const newModule = this.newModule;
71
71
  const newMember = (_a = this.newMember) !== null && _a !== void 0 ? _a : oldMember;
72
- const newAlias = this.newAlias;
73
72
  // Build the old and new FQNs for type attribution updates
74
73
  const oldFqn = oldMember === 'default' || oldMember === '*'
75
74
  ? oldModule
@@ -81,172 +80,13 @@ class ChangeImport extends recipe_1.Recipe {
81
80
  constructor() {
82
81
  super(...arguments);
83
82
  this.hasOldImport = false;
84
- this.transformedImport = false;
85
83
  }
86
84
  async visitJsCompilationUnit(cu, ctx) {
87
- var _a;
88
- // Reset tracking for each file
89
- this.hasOldImport = false;
90
- this.oldAlias = undefined;
91
- this.transformedImport = false;
92
- // First pass: check if the old import exists and capture any alias
93
- for (const statement of cu.statements) {
94
- const stmt = (_a = statement.element) !== null && _a !== void 0 ? _a : statement;
95
- if (stmt.kind === index_1.JS.Kind.Import) {
96
- const jsImport = stmt;
97
- const aliasInfo = this.checkForOldImport(jsImport);
98
- if (aliasInfo.found) {
99
- this.hasOldImport = true;
100
- this.oldAlias = aliasInfo.alias;
101
- break;
102
- }
103
- }
104
- }
105
- // Visit the compilation unit (this will transform imports via visitJsImport)
106
- let result = await super.visitJsCompilationUnit(cu, ctx);
107
- // If we transformed an import but need to add to existing import from new module,
108
- // or if we only removed a member from a multi-import, use maybeAddImport
109
- if (this.hasOldImport && !this.transformedImport) {
110
- const aliasToUse = newAlias !== null && newAlias !== void 0 ? newAlias : this.oldAlias;
111
- if (newMember === 'default') {
112
- (0, add_import_1.maybeAddImport)(this, {
113
- module: newModule,
114
- member: 'default',
115
- alias: aliasToUse,
116
- onlyIfReferenced: false
117
- });
118
- }
119
- else if (newMember === '*') {
120
- (0, add_import_1.maybeAddImport)(this, {
121
- module: newModule,
122
- member: '*',
123
- alias: aliasToUse,
124
- onlyIfReferenced: false
125
- });
126
- }
127
- else {
128
- (0, add_import_1.maybeAddImport)(this, {
129
- module: newModule,
130
- member: newMember,
131
- // A moved binding keeps the local name it had. Pinning it also tells
132
- // `maybeAddImport` not to deconflict against the import being replaced,
133
- // which is still present in the tree it reads.
134
- alias: aliasToUse !== null && aliasToUse !== void 0 ? aliasToUse : newMember,
135
- onlyIfReferenced: false
136
- });
137
- }
138
- }
139
- return result;
140
- }
141
- async visitImportDeclaration(jsImport, ctx) {
142
- var _a;
143
- let imp = await super.visitImportDeclaration(jsImport, ctx);
144
- if (!this.hasOldImport) {
145
- return imp;
146
- }
147
- const aliasInfo = this.checkForOldImport(imp);
148
- if (!aliasInfo.found) {
149
- return imp;
150
- }
151
- // Check if this is the only import from the old module
152
- const namedImports = this.getNamedImports(imp);
153
- const isOnlyImport = namedImports.length === 1 ||
154
- (oldMember === 'default' && !((_a = imp.importClause) === null || _a === void 0 ? void 0 : _a.namedBindings)) ||
155
- (oldMember === '*');
156
- if (isOnlyImport) {
157
- // Transform the module specifier in place
158
- this.transformedImport = true;
159
- return (0, mutative_1.create)(imp, draft => {
160
- var _a;
161
- if (draft.moduleSpecifier) {
162
- const literal = draft.moduleSpecifier.element;
163
- literal.value = newModule;
164
- // Update valueSource to preserve quote style
165
- const originalSource = literal.valueSource || `"${oldModule}"`;
166
- const quoteChar = originalSource.startsWith("'") ? "'" : '"';
167
- literal.valueSource = `${quoteChar}${newModule}${quoteChar}`;
168
- }
169
- // If we're also renaming the member, update the import specifier
170
- if (newMember !== oldMember && oldMember !== 'default' && oldMember !== '*') {
171
- const importClause = draft.importClause;
172
- if (((_a = importClause === null || importClause === void 0 ? void 0 : importClause.namedBindings) === null || _a === void 0 ? void 0 : _a.kind) === index_1.JS.Kind.NamedImports) {
173
- const namedImports = importClause.namedBindings;
174
- for (const elem of namedImports.elements.elements) {
175
- const specifier = elem.element;
176
- if (specifier.specifier.kind === java_1.J.Kind.Identifier &&
177
- specifier.specifier.simpleName === oldMember) {
178
- specifier.specifier.simpleName = newMember;
179
- }
180
- else if (specifier.specifier.kind === index_1.JS.Kind.Alias) {
181
- const aliasNode = specifier.specifier;
182
- const propertyName = aliasNode.propertyName.element;
183
- if (propertyName.kind === java_1.J.Kind.Identifier &&
184
- propertyName.simpleName === oldMember) {
185
- propertyName.simpleName = newMember;
186
- }
187
- }
188
- }
189
- }
190
- }
191
- });
192
- }
193
- else {
194
- // Remove just the specific member from the import
195
- // maybeAddImport will add the new import
196
- return this.removeNamedImportMember(imp, oldMember, ctx);
197
- }
198
- }
199
- async removeNamedImportMember(imp, memberToRemove, _ctx) {
200
- return (0, mutative_1.create)(imp, draft => {
201
- const importClause = draft.importClause;
202
- if (!(importClause === null || importClause === void 0 ? void 0 : importClause.namedBindings))
203
- return;
204
- if (importClause.namedBindings.kind !== index_1.JS.Kind.NamedImports)
205
- return;
206
- const namedImports = importClause.namedBindings;
207
- const elements = namedImports.elements.elements;
208
- const filteredElements = elements.filter(elem => {
209
- const specifier = elem.element;
210
- const specifierNode = specifier.specifier;
211
- if (specifierNode.kind === java_1.J.Kind.Identifier) {
212
- return specifierNode.simpleName !== memberToRemove;
213
- }
214
- if (specifierNode.kind === index_1.JS.Kind.Alias) {
215
- const alias = specifierNode;
216
- const propertyName = alias.propertyName.element;
217
- if (propertyName.kind === java_1.J.Kind.Identifier) {
218
- return propertyName.simpleName !== memberToRemove;
219
- }
220
- }
221
- return true;
222
- });
223
- namedImports.elements.elements = filteredElements;
224
- });
225
- }
226
- getNamedImports(imp) {
227
- const imports = [];
228
- const importClause = imp.importClause;
229
- if (!importClause)
230
- return imports;
231
- const namedBindings = importClause.namedBindings;
232
- if (!namedBindings || namedBindings.kind !== index_1.JS.Kind.NamedImports)
233
- return imports;
234
- const namedImports = namedBindings;
235
- for (const elem of namedImports.elements.elements) {
236
- const specifier = elem.element;
237
- const specifierNode = specifier.specifier;
238
- if ((0, java_1.isIdentifier)(specifierNode)) {
239
- imports.push(specifierNode.simpleName);
240
- }
241
- else if (specifierNode.kind === index_1.JS.Kind.Alias) {
242
- const alias = specifierNode;
243
- const propertyName = alias.propertyName.element;
244
- if ((0, java_1.isIdentifier)(propertyName)) {
245
- imports.push(propertyName.simpleName);
246
- }
247
- }
248
- }
249
- return imports;
85
+ this.hasOldImport = (0, binding_1.maybeRebind)(this, {
86
+ from: { module: oldModule, member: oldMember },
87
+ to: { module: newModule, member: newMember }
88
+ }) !== undefined;
89
+ return super.visitJsCompilationUnit(cu, ctx);
250
90
  }
251
91
  async visitIdentifier(identifier, ctx) {
252
92
  let ident = await super.visitIdentifier(identifier, ctx);
@@ -506,71 +346,6 @@ class ChangeImport extends recipe_1.Recipe {
506
346
  }
507
347
  return arrayType;
508
348
  }
509
- checkForOldImport(jsImport) {
510
- // Check if this import is from the old module
511
- const moduleSpecifier = jsImport.moduleSpecifier;
512
- if (!moduleSpecifier)
513
- return { found: false };
514
- const literal = moduleSpecifier.element;
515
- if (literal.kind !== java_1.J.Kind.Literal)
516
- return { found: false };
517
- const value = literal.value;
518
- if (value !== oldModule)
519
- return { found: false };
520
- const importClause = jsImport.importClause;
521
- if (!importClause) {
522
- // Side-effect import - not what we're looking for
523
- return { found: false };
524
- }
525
- // Check for default import
526
- if (oldMember === 'default') {
527
- if (importClause.name) {
528
- const nameElem = importClause.name.element;
529
- if ((0, java_1.isIdentifier)(nameElem)) {
530
- return { found: true, alias: nameElem.simpleName };
531
- }
532
- }
533
- return { found: false };
534
- }
535
- // Check for namespace import
536
- if (oldMember === '*') {
537
- const namedBindings = importClause.namedBindings;
538
- if ((namedBindings === null || namedBindings === void 0 ? void 0 : namedBindings.kind) === index_1.JS.Kind.Alias) {
539
- const alias = namedBindings;
540
- if ((0, java_1.isIdentifier)(alias.alias)) {
541
- return { found: true, alias: alias.alias.simpleName };
542
- }
543
- }
544
- return { found: false };
545
- }
546
- // Check for named imports
547
- const namedBindings = importClause.namedBindings;
548
- if (!namedBindings)
549
- return { found: false };
550
- if (namedBindings.kind !== index_1.JS.Kind.NamedImports)
551
- return { found: false };
552
- const namedImports = namedBindings;
553
- const elements = namedImports.elements.elements;
554
- for (const elem of elements) {
555
- const specifier = elem.element;
556
- const specifierNode = specifier.specifier;
557
- // Handle direct import: import { act }
558
- if ((0, java_1.isIdentifier)(specifierNode) && specifierNode.simpleName === oldMember) {
559
- return { found: true };
560
- }
561
- // Handle aliased import: import { act as something }
562
- if (specifierNode.kind === index_1.JS.Kind.Alias) {
563
- const alias = specifierNode;
564
- const propertyName = alias.propertyName.element;
565
- if ((0, java_1.isIdentifier)(propertyName) && propertyName.simpleName === oldMember) {
566
- if ((0, java_1.isIdentifier)(alias.alias)) {
567
- return { found: true, alias: alias.alias.simpleName };
568
- }
569
- }
570
- }
571
- }
572
- return { found: false };
573
- }
574
349
  }();
575
350
  }
576
351
  }
@@ -604,11 +379,4 @@ __decorate([
604
379
  required: false
605
380
  })
606
381
  ], ChangeImport.prototype, "newMember", void 0);
607
- __decorate([
608
- (0, recipe_1.Option)({
609
- displayName: "New alias",
610
- description: "Optional alias for the new import. Required when newMember is 'default' or '*'.",
611
- required: false
612
- })
613
- ], ChangeImport.prototype, "newAlias", void 0);
614
382
  //# sourceMappingURL=change-import.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-import.js","sourceRoot":"","sources":["../../../src/javascript/recipes/change-import.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;AAEH,yCAA8C;AAG9C,oCAAiD;AACjD,8CAA+C;AAC/C,qCAAmD;AACnD,uCAAoD;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAa,YAAa,SAAQ,eAAM;IAyCpC,YAAY,OAMX;QACG,KAAK,CAAC,OAAO,CAAC,CAAC;QA/CV,SAAI,GAAG,0CAA0C,CAAC;QAClD,gBAAW,GAAG,eAAe,CAAC;QAC9B,gBAAW,GAAG,sFAAsF,CAAC;IA8C9G,CAAC;IAED,KAAK,CAAC,MAAM;;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,mCAAI,SAAS,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,0DAA0D;QAC1D,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG;YACvD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG;YACvD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC;QAElC,OAAO,IAAI,KAAM,SAAQ,yBAAmC;YAAjD;;gBACC,iBAAY,GAAG,KAAK,CAAC;gBAErB,sBAAiB,GAAG,KAAK,CAAC;YAmkBtC,CAAC;YAjkBY,KAAK,CAAC,sBAAsB,CAAC,EAAsB,EAAE,GAAqB;;gBAC/E,+BAA+B;gBAC/B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAE/B,mEAAmE;gBACnE,KAAK,MAAM,SAAS,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;oBACpC,MAAM,IAAI,GAAG,MAAA,SAAS,CAAC,OAAO,mCAAI,SAAS,CAAC;oBAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBAC/B,MAAM,QAAQ,GAAG,IAAiB,CAAC;wBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;4BAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;4BAChC,MAAM;wBACV,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,6EAA6E;gBAC7E,IAAI,MAAM,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAE,EAAE,GAAG,CAAuB,CAAC;gBAE/E,kFAAkF;gBAClF,yEAAyE;gBACzE,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC/C,MAAM,UAAU,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,CAAC,QAAQ,CAAC;oBAE7C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC1B,IAAA,2BAAc,EAAC,IAAI,EAAE;4BACjB,MAAM,EAAE,SAAS;4BACjB,MAAM,EAAE,SAAS;4BACjB,KAAK,EAAE,UAAU;4BACjB,gBAAgB,EAAE,KAAK;yBAC1B,CAAC,CAAC;oBACP,CAAC;yBAAM,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;wBAC3B,IAAA,2BAAc,EAAC,IAAI,EAAE;4BACjB,MAAM,EAAE,SAAS;4BACjB,MAAM,EAAE,GAAG;4BACX,KAAK,EAAE,UAAU;4BACjB,gBAAgB,EAAE,KAAK;yBAC1B,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,IAAA,2BAAc,EAAC,IAAI,EAAE;4BACjB,MAAM,EAAE,SAAS;4BACjB,MAAM,EAAE,SAAS;4BACjB,qEAAqE;4BACrE,wEAAwE;4BACxE,+CAA+C;4BAC/C,KAAK,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,SAAS;4BAC9B,gBAAgB,EAAE,KAAK;yBAC1B,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;gBAED,OAAO,MAAM,CAAC;YAClB,CAAC;YAEQ,KAAK,CAAC,sBAAsB,CAAC,QAAmB,EAAE,GAAqB;;gBAC5E,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAc,CAAC;gBAEzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,GAAG,CAAC;gBACf,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;gBAC9C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACf,CAAC;gBAED,uDAAuD;gBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC;oBAC1C,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,aAAa,CAAA,CAAC;oBAC7D,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;gBAExB,IAAI,YAAY,EAAE,CAAC;oBACf,0CAA0C;oBAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,OAAO,IAAA,iBAAO,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE;;wBACxB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;4BACxB,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,OAA2B,CAAC;4BAClE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;4BAC1B,6CAA6C;4BAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,SAAS,GAAG,CAAC;4BAC/D,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;4BAC7D,OAAO,CAAC,WAAW,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;wBACjE,CAAC;wBACD,iEAAiE;wBACjE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;4BAC1E,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;4BACxC,IAAI,CAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,aAAa,0CAAE,IAAI,MAAK,UAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gCAC7D,MAAM,YAAY,GAAG,YAAY,CAAC,aAAuC,CAAC;gCAC1E,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oCAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;oCAC/B,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU;wCAC9C,SAAS,CAAC,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wCAC/C,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC;oCAC/C,CAAC;yCAAM,IAAI,SAAS,CAAC,SAAS,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wCACpD,MAAM,SAAS,GAAG,SAAS,CAAC,SAA4B,CAAC;wCACzD,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;wCACpD,IAAI,YAAY,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU;4CACvC,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;4CACxC,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;wCACxC,CAAC;oCACL,CAAC;gCACL,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,kDAAkD;oBAClD,yCAAyC;oBACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC;YAEO,KAAK,CAAC,uBAAuB,CAAC,GAAc,EAAE,cAAsB,EAAE,IAAsB;gBAChG,OAAO,IAAA,iBAAO,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE;oBACxB,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;oBACxC,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,aAAa,CAAA;wBAAE,OAAO;oBACzC,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,YAAY;wBAAE,OAAO;oBAErE,MAAM,YAAY,GAAG,YAAY,CAAC,aAAuC,CAAC;oBAC1E,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAChD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC/B,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC;wBAE1C,IAAI,aAAa,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;4BAC3C,OAAO,aAAa,CAAC,UAAU,KAAK,cAAc,CAAC;wBACvD,CAAC;wBAED,IAAI,aAAa,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACvC,MAAM,KAAK,GAAG,aAAyB,CAAC;4BACxC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;4BAChD,IAAI,YAAY,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gCAC1C,OAAO,YAAY,CAAC,UAAU,KAAK,cAAc,CAAC;4BACtD,CAAC;wBACL,CAAC;wBAED,OAAO,IAAI,CAAC;oBAChB,CAAC,CAAC,CAAC;oBAEH,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,gBAAgB,CAAC;gBACtD,CAAC,CAAC,CAAC;YACP,CAAC;YAEO,eAAe,CAAC,GAAc;gBAClC,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,YAAY;oBAAE,OAAO,OAAO,CAAC;gBAElC,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;gBACjD,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,YAAY;oBAAE,OAAO,OAAO,CAAC;gBAElF,MAAM,YAAY,GAAG,aAAgC,CAAC;gBACtD,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAChD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC/B,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC;oBAE1C,IAAI,IAAA,mBAAY,EAAC,aAAa,CAAC,EAAE,CAAC;wBAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC3C,CAAC;yBAAM,IAAI,aAAa,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBAC9C,MAAM,KAAK,GAAG,aAAyB,CAAC;wBACxC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;wBAChD,IAAI,IAAA,mBAAY,EAAC,YAAY,CAAC,EAAE,CAAC;4BAC7B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;wBAC1C,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,OAAO,OAAO,CAAC;YACnB,CAAC;YAEQ,KAAK,CAAC,eAAe,CAAC,UAAwB,EAAE,GAAqB;gBAC1E,IAAI,KAAK,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAiB,CAAC;gBAEzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBAED,oCAAoC;gBACpC,IAAI,OAAO,GAAG,KAAK,CAAC;gBAEpB,8CAA8C;gBAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,WAAW,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC7B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,mDAAmD;gBACnD,6EAA6E;gBAC7E,IAAI,gBAAgB,GAA8B,KAAK,CAAC,SAAS,CAAC;gBAClE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClB,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACzD,IAAI,OAAO,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;wBAC9B,gBAAgB,GAAG,OAAO,CAAC;wBAC3B,OAAO,GAAG,IAAI,CAAC;oBACnB,CAAC;gBACL,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,IAAA,iBAAO,EAAC,KAAK,EAAE,KAAK,CAAC,EAAE;wBAC1B,IAAI,WAAW,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;4BAC7B,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;wBAC7B,CAAC;wBACD,IAAI,gBAAgB,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;4BACvC,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC;wBACvC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC;YAEQ,KAAK,CAAC,qBAAqB,CAAC,MAA0B,EAAE,GAAqB;gBAClF,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAuB,CAAC;gBAE7E,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,CAAC,CAAC;gBACb,CAAC;gBAED,oDAAoD;gBACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,iBAAiB,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;oBACrC,OAAO,IAAA,iBAAO,EAAC,CAAC,EAAE,KAAK,CAAC,EAAE;wBACtB,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC;oBACzC,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,OAAO,CAAC,CAAC;YACb,CAAC;YAEQ,KAAK,CAAC,gBAAgB,CAAC,WAA0B,EAAE,GAAqB;gBAC7E,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAkB,CAAC;gBAEzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,EAAE,CAAC;gBACd,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,WAAW,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;oBAC1B,OAAO,IAAA,iBAAO,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACvB,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;oBAC7B,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,OAAO,EAAE,CAAC;YACd,CAAC;YAEQ,KAAK,CAAC,iBAAiB,CAAC,YAA6B,EAAE,GAAqB;gBACjF,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAoB,CAAC;gBAE7E,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,EAAE,CAAC;gBACd,CAAC;gBAED,oDAAoD;gBACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,iBAAiB,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;oBACtC,OAAO,IAAA,iBAAO,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACvB,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC;oBACzC,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,OAAO,EAAE,CAAC;YACd,CAAC;YAEQ,KAAK,CAAC,aAAa,CAAC,QAAoB,EAAE,GAAqB;gBACpE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAe,CAAC;gBAEhE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,OAAO,EAAE,CAAC;gBACd,CAAC;gBAED,IAAI,OAAO,GAAG,KAAK,CAAC;gBAEpB,oDAAoD;gBACpD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,iBAAiB,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;oBACtC,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,yDAAyD;gBACzD,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;gBACzE,IAAI,sBAAsB,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC;oBAChD,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC7C,IAAI,WAAW,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;oBAC1B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,IAAA,iBAAO,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACvB,IAAI,iBAAiB,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;4BACtC,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC;wBACzC,CAAC;wBACD,IAAI,sBAAsB,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC;4BAChD,KAAK,CAAC,eAAe,GAAG,sBAAsB,CAAC;wBACnD,CAAC;wBACD,IAAI,WAAW,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;4BAC1B,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;wBAC7B,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,OAAO,EAAE,CAAC;YACd,CAAC;YAED;;eAEG;YACK,UAAU,CAAC,IAAsB;gBACrC,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAI,CAAC;gBAEvB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAChB,KAAK,WAAI,CAAC,IAAI,CAAC,KAAK,CAAC;oBACrB,KAAK,WAAI,CAAC,IAAI,CAAC,YAAY;wBACvB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAkB,CAAC,CAAC;oBAEpD,KAAK,WAAI,CAAC,IAAI,CAAC,MAAM;wBACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAmB,CAAC,CAAC;oBAEtD,KAAK,WAAI,CAAC,IAAI,CAAC,QAAQ;wBACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAqB,CAAC,CAAC;oBAE1D,KAAK,WAAI,CAAC,IAAI,CAAC,aAAa;wBACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAA0B,CAAC,CAAC;oBAEpE,KAAK,WAAI,CAAC,IAAI,CAAC,KAAK;wBAChB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAkB,CAAC,CAAC;oBAEpD;wBACI,OAAO,IAAI,CAAC;gBACpB,CAAC;YACL,CAAC;YAED;;eAEG;YACK,eAAe,CAAC,SAAqB;gBACzC,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,qBAAqB,GAAG,SAAS,CAAC,kBAAkB,CAAC;gBACzD,IAAI,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC;gBAE3C,yDAAyD;gBACzD,IAAI,SAAS,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;oBAC1C,qBAAqB,GAAG,MAAM,CAAC;oBAC/B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,IAAI,SAAS,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;oBACpD,qBAAqB,GAAG,SAAS,CAAC;oBAClC,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;qBAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;oBAClE,qBAAqB,GAAG,SAAS,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC7F,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,iCAAiC;gBACjC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;oBACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBACvE,IAAI,kBAAkB,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;wBAC/C,cAAc,GAAG,kBAAkB,CAAC;wBACpC,OAAO,GAAG,IAAI,CAAC;oBACnB,CAAC;gBACL,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,8EAA8E;oBAC9E,OAAO,gCACA,SAAS,KACZ,kBAAkB,EAAE,qBAAqB,EACzC,WAAW,EAAE,cAAc,GAChB,CAAC;gBACpB,CAAC;gBAED,OAAO,SAAS,CAAC;YACrB,CAAC;YAED;;eAEG;YACK,gBAAgB,CAAC,UAAmC;gBACxD,IAAI,CAAC,UAAU;oBAAE,OAAO,UAAU,CAAC;gBAEnC,4BAA4B;gBAC5B,IAAI,WAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAClD,MAAM,gBAAgB,GAAG,WAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBAE7F,IAAI,gBAAgB,KAAK,SAAS;wBAC9B,gBAAgB,KAAK,MAAM;wBAC3B,gBAAgB,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;wBAE/C,oCAAoC;wBACpC,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAwB,CAAC;wBAE9F,2DAA2D;wBAC3D,MAAM,WAAW,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG;4BAC7D,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,CAAC;4BACzD,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;wBAEtB,8EAA8E;wBAC9E,OAAO,gCACA,UAAU,KACb,aAAa,EAAE,oBAAoB,EACnC,IAAI,EAAE,WAAW,GACL,CAAC;oBACrB,CAAC;gBACL,CAAC;gBAED,OAAO,UAAU,CAAC;YACtB,CAAC;YAED;;eAEG;YACK,kBAAkB,CAAC,YAA2B;gBAClD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC;gBAClC,IAAI,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC;gBAErC,+CAA+C;gBAC/C,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACzD,IAAI,YAAY,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;wBACtC,QAAQ,GAAG,YAAY,CAAC;wBACxB,OAAO,GAAG,IAAI,CAAC;oBACnB,CAAC;gBACL,CAAC;gBAED,oDAAoD;gBACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC5D,IAAI,gBAAgB,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;oBACzC,YAAY,GAAG,gBAAiB,CAAC;oBACjC,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,8EAA8E;oBAC9E,OAAO,gCACA,YAAY,KACf,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,YAAY,GACJ,CAAC;gBACvB,CAAC;gBAED,OAAO,YAAY,CAAC;YACxB,CAAC;YAED;;eAEG;YACK,uBAAuB,CAAC,SAA6B;gBACzD,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC;gBACjC,IAAI,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC;gBAE7C,mBAAmB;gBACnB,IAAI,WAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAwB,CAAC;oBAC3E,IAAI,WAAW,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;wBACjC,WAAW,GAAG,WAAW,CAAC;wBAC1B,OAAO,GAAG,IAAI,CAAC;oBACnB,CAAC;gBACL,CAAC;gBAED,yBAAyB;gBACzB,MAAM,aAAa,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAE,CAAC,CAAC;gBAC/E,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,aAAa,GAAG,aAAa,CAAC;oBAC9B,OAAO,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAED,IAAI,OAAO,EAAE,CAAC;oBACV,8EAA8E;oBAC9E,OAAO,gCACA,SAAS,KACZ,IAAI,EAAE,WAAW,EACjB,cAAc,EAAE,aAAa,GACV,CAAC;gBAC5B,CAAC;gBAED,OAAO,SAAS,CAAC;YACrB,CAAC;YAED;;eAEG;YACK,eAAe,CAAC,SAAqB;gBACzC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC5D,IAAI,eAAe,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACzC,8EAA8E;oBAC9E,OAAO,gCACA,SAAS,KACZ,QAAQ,EAAE,eAAgB,GACf,CAAC;gBACpB,CAAC;gBACD,OAAO,SAAS,CAAC;YACrB,CAAC;YAEO,iBAAiB,CAAC,QAAmB;gBACzC,8CAA8C;gBAC9C,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;gBACjD,IAAI,CAAC,eAAe;oBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAE9C,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;gBACxC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAC,CAAC,IAAI,CAAC,OAAO;oBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAE7D,MAAM,KAAK,GAAI,OAAqB,CAAC,KAAK,CAAC;gBAC3C,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAEjD,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gBAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;oBAChB,kDAAkD;oBAClD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAC5B,CAAC;gBAED,2BAA2B;gBAC3B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC1B,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;wBACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;wBAC3C,IAAI,IAAA,mBAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;4BACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACvD,CAAC;oBACL,CAAC;oBACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAC5B,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;oBACpB,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;oBACjD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,MAAK,UAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACxC,MAAM,KAAK,GAAG,aAAyB,CAAC;wBACxC,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;wBAC1D,CAAC;oBACL,CAAC;oBACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAC5B,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;gBACjD,IAAI,CAAC,aAAa;oBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAE5C,IAAI,aAAa,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,YAAY;oBAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;gBAEzE,MAAM,YAAY,GAAG,aAAgC,CAAC;gBACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAEhD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC/B,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC;oBAE1C,uCAAuC;oBACvC,IAAI,IAAA,mBAAY,EAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBACxE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBAC3B,CAAC;oBAED,qDAAqD;oBACrD,IAAI,aAAa,CAAC,IAAI,KAAK,UAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACvC,MAAM,KAAK,GAAG,aAAyB,CAAC;wBACxC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;wBAChD,IAAI,IAAA,mBAAY,EAAC,YAAY,CAAC,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;4BACtE,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gCAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;4BAC1D,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC5B,CAAC;SACJ,EAAE,CAAC;IACR,CAAC;CACJ;AA1oBD,oCA0oBC;AAhoBG;IALC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,sBAAsB;KAClC,CAAC;+CACiB;AAOnB;IALC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,oFAAoF;QACjG,OAAO,EAAE,KAAK;KACjB,CAAC;+CACiB;AAOnB;IALC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,OAAO;KACnB,CAAC;+CACiB;AAQnB;IANC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;KAClB,CAAC;+CACiB;AAOnB;IALC,IAAA,eAAM,EAAC;QACJ,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,iFAAiF;QAC9F,QAAQ,EAAE,KAAK;KAClB,CAAC;8CACgB"}
1
+ {"version":3,"file":"change-import.js","sourceRoot":"","sources":["../../../src/javascript/recipes/change-import.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,6 @@
1
1
  import { JavaScriptVisitor } from "./visitor";
2
2
  import { J } from "../java";
3
3
  import { JS } from "./tree";
4
- /**
5
- * @param visitor The visitor to add the import removal to
6
- * @param module The module name (e.g., 'fs', 'react') to remove imports from
7
- * @param member Optionally, the specific member to remove from the import.
8
- * If not specified, removes all unused imports from the module.
9
- * Special values:
10
- * - 'default': Removes the default import from the module if unused,
11
- * regardless of its local name (e.g., `import React from 'react'`)
12
- * - '*': Removes the namespace import if unused (e.g., `import * as fs from 'fs'`)
13
- *
14
- * @example
15
- * // Remove a specific named import if unused
16
- * maybeRemoveImport(visitor, 'fs', 'readFile');
17
- *
18
- * @example
19
- * // Remove the default import from 'react' if unused (regardless of local name)
20
- * maybeRemoveImport(visitor, 'react', 'default');
21
- *
22
- * @example
23
- * // Remove all unused imports from 'react' module
24
- * maybeRemoveImport(visitor, 'react');
25
- *
26
- * @example
27
- * // Remove namespace import if unused
28
- * maybeRemoveImport(visitor, 'fs', '*');
29
- */
30
- export declare function maybeRemoveImport(visitor: JavaScriptVisitor<any>, module: string, member?: string): void;
31
4
  export declare class RemoveImport<P> extends JavaScriptVisitor<P> {
32
5
  readonly module: string;
33
6
  readonly member?: string | undefined;
@@ -80,7 +53,8 @@ export declare class RemoveImport<P> extends JavaScriptVisitor<P> {
80
53
  private processObjectBindingPattern;
81
54
  private getImportName;
82
55
  private getImportAlias;
83
- private getBindingElementName;
56
+ /** The names a pattern element binds, and for each the member of the module it reads. */
57
+ private boundByPatternElement;
84
58
  private shouldRemoveImport;
85
59
  private isTargetModule;
86
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"remove-import.d.ts","sourceRoot":"","sources":["../../src/javascript/remove-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,CAAC,EAAC,MAAM,SAAS,CAAC;AAC1B,OAAO,EAAC,EAAE,EAAM,MAAM,QAAQ,CAAC;AAI/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,QAOjG;AAUD,qBAAa,YAAY,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IAUzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAVpC;;;;;;;;OAQG;gBACkB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,YAAA;IAIpC;;;;;OAKG;YACW,oCAAoC;IAgDlD;;OAEG;YACW,kBAAkB;IAejB,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YA+F1F,aAAa;IAqK3B;;;OAGG;YACW,0BAA0B;IAmCxC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;YAOhB,mBAAmB;YA+DnB,0BAA0B;IA8DxC;;OAEG;IACH,OAAO,CAAC,wBAAwB;YAclB,2BAA2B;IAoDzC,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,cAAc;IActB;;OAEG;YACW,kBAAkB;IA2BhC;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;YACW,mBAAmB;YASnB,sBAAsB;YAsOtB,gBAAgB;CAmFjC"}
1
+ {"version":3,"file":"remove-import.d.ts","sourceRoot":"","sources":["../../src/javascript/remove-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,CAAC,EAAC,MAAM,SAAS,CAAC;AAE1B,OAAO,EAAC,EAAE,EAAM,MAAM,QAAQ,CAAC;AAY/B,qBAAa,YAAY,CAAC,CAAC,CAAE,SAAQ,iBAAiB,CAAC,CAAC,CAAC;IAUzC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAVpC;;;;;;;;OAQG;gBACkB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,YAAA;IAIpC;;;;;OAKG;YACW,oCAAoC;IAgDlD;;OAEG;YACW,kBAAkB;IAejB,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YA+F1F,aAAa;IAqK3B;;;OAGG;YACW,0BAA0B;IAmCxC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;YAOhB,mBAAmB;YA+DnB,0BAA0B;IA8DxC;;OAEG;IACH,OAAO,CAAC,wBAAwB;YAclB,2BAA2B;IAgDzC,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,cAAc;IActB,yFAAyF;IACzF,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,cAAc;IActB;;OAEG;YACW,kBAAkB;IA2BhC;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;YACW,mBAAmB;YASnB,sBAAsB;YAsOtB,gBAAgB;CAmFjC"}
@@ -1,46 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RemoveImport = void 0;
4
- exports.maybeRemoveImport = maybeRemoveImport;
5
4
  const visitor_1 = require("./visitor");
6
5
  const java_1 = require("../java");
6
+ const scope_1 = require("./scope");
7
7
  const tree_1 = require("./tree");
8
8
  const util_1 = require("../util");
9
9
  const java_2 = require("../java");
10
- /**
11
- * @param visitor The visitor to add the import removal to
12
- * @param module The module name (e.g., 'fs', 'react') to remove imports from
13
- * @param member Optionally, the specific member to remove from the import.
14
- * If not specified, removes all unused imports from the module.
15
- * Special values:
16
- * - 'default': Removes the default import from the module if unused,
17
- * regardless of its local name (e.g., `import React from 'react'`)
18
- * - '*': Removes the namespace import if unused (e.g., `import * as fs from 'fs'`)
19
- *
20
- * @example
21
- * // Remove a specific named import if unused
22
- * maybeRemoveImport(visitor, 'fs', 'readFile');
23
- *
24
- * @example
25
- * // Remove the default import from 'react' if unused (regardless of local name)
26
- * maybeRemoveImport(visitor, 'react', 'default');
27
- *
28
- * @example
29
- * // Remove all unused imports from 'react' module
30
- * maybeRemoveImport(visitor, 'react');
31
- *
32
- * @example
33
- * // Remove namespace import if unused
34
- * maybeRemoveImport(visitor, 'fs', '*');
35
- */
36
- function maybeRemoveImport(visitor, module, member) {
37
- for (const v of visitor.afterVisit || []) {
38
- if (v instanceof RemoveImport && v.module === module && v.member === member) {
39
- return;
40
- }
41
- }
42
- visitor.afterVisit.push(new RemoveImport(module, member));
43
- }
44
10
  class RemoveImport extends visitor_1.JavaScriptVisitor {
45
11
  /**
46
12
  * @param module The module name (e.g., 'fs', 'react') to remove imports from
@@ -225,7 +191,7 @@ class RemoveImport extends visitor_1.JavaScriptVisitor {
225
191
  }
226
192
  else {
227
193
  // Regular case: check if the import name matches the removal criteria
228
- shouldRemove = this.shouldRemoveImport(name, usedIdentifiers, usedTypes);
194
+ shouldRemove = this.shouldRemoveImport(name, usedIdentifiers, usedTypes, name);
229
195
  }
230
196
  if (shouldRemove) {
231
197
  // If there are no named imports, remove the entire import
@@ -275,7 +241,7 @@ class RemoveImport extends visitor_1.JavaScriptVisitor {
275
241
  }
276
242
  // Namespace is used, we can't remove individual members from it
277
243
  }
278
- else if (this.shouldRemoveImport(name, usedIdentifiers, usedTypes)) {
244
+ else if (this.shouldRemoveImport(name, usedIdentifiers, usedTypes, name)) {
279
245
  // If there's no default import, remove the entire import
280
246
  if (!importClause.name) {
281
247
  return undefined;
@@ -306,7 +272,7 @@ class RemoveImport extends visitor_1.JavaScriptVisitor {
306
272
  }
307
273
  // Namespace is used, we can't remove individual members from it
308
274
  }
309
- else if (this.shouldRemoveImport(aliasName, usedIdentifiers, usedTypes)) {
275
+ else if (this.shouldRemoveImport(aliasName, usedIdentifiers, usedTypes, aliasName)) {
310
276
  // If there's no default import, remove the entire import
311
277
  if (!importClause.name) {
312
278
  return undefined;
@@ -418,7 +384,7 @@ class RemoveImport extends visitor_1.JavaScriptVisitor {
418
384
  }
419
385
  else {
420
386
  // We're removing based on the import name itself
421
- return !this.shouldRemoveImport(importName, usedIdentifiers, usedTypes);
387
+ return !this.shouldRemoveImport(importName, usedIdentifiers, usedTypes, importName);
422
388
  }
423
389
  }
424
390
  return true; // Keep non-ImportSpecifier elements
@@ -506,15 +472,10 @@ class RemoveImport extends visitor_1.JavaScriptVisitor {
506
472
  }
507
473
  async processObjectBindingPattern(pattern, usedIdentifiers, p) {
508
474
  const { filtered, allRemoved } = await this.filterElementsWithPrefixPreservation(pattern.bindings.elements, (elem) => {
509
- if (elem.kind === tree_1.JS.Kind.BindingElement) {
510
- const name = this.getBindingElementName(elem);
511
- return !this.shouldRemoveImport(name, usedIdentifiers, new Set());
512
- }
513
- else if (elem.kind === java_1.J.Kind.Identifier) {
514
- const name = elem.simpleName;
515
- return !this.shouldRemoveImport(name, usedIdentifiers, new Set());
516
- }
517
- return true; // Keep other element types
475
+ const bound = this.boundByPatternElement(elem);
476
+ // An element whose names cannot be read is left alone.
477
+ return bound.length === 0 ||
478
+ bound.some(b => !this.shouldRemoveImport(b.name, usedIdentifiers, new Set(), b.member));
518
479
  }, async (elem, prefix) => {
519
480
  if (elem.kind === java_1.J.Kind.Identifier) {
520
481
  return this.produceJava(elem, p, async (draft) => {
@@ -569,18 +530,19 @@ class RemoveImport extends visitor_1.JavaScriptVisitor {
569
530
  // No alias for regular imports
570
531
  return undefined;
571
532
  }
572
- getBindingElementName(bindingElement) {
573
- const name = bindingElement.name;
574
- if ((name === null || name === void 0 ? void 0 : name.kind) === java_1.J.Kind.Identifier) {
575
- return name.simpleName;
576
- }
577
- return '';
533
+ /** The names a pattern element binds, and for each the member of the module it reads. */
534
+ boundByPatternElement(elem) {
535
+ // Shorthand, so the name it binds is the member it reads.
536
+ return elem.kind === java_1.J.Kind.Identifier
537
+ ? [{ name: elem.simpleName, member: elem.simpleName }]
538
+ : (0, scope_1.bindingNames)(elem);
578
539
  }
579
- shouldRemoveImport(name, usedIdentifiers, usedTypes) {
540
+ shouldRemoveImport(name, usedIdentifiers, usedTypes, member) {
580
541
  // If member is specified, we're removing a specific member from the module
581
542
  if (this.member !== undefined) {
582
- // Only remove if this is the specific member we're looking for
583
- if (this.member !== name) {
543
+ // A name bound under an alias reads one member and is referenced by another, and a name
544
+ // a nested pattern binds reads a property of a property, so it reads no member at all.
545
+ if (this.member !== member) {
584
546
  return false;
585
547
  }
586
548
  }