@@ -19,6 +19,14 @@ import { ObjectExpressionExtractor } from '../../enums/node-transformers/convert
19
19
20
20
@injectable ( )
21
21
export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
22
+ /**
23
+ * @type {ObjectExpressionExtractor[] }
24
+ */
25
+ private static readonly objectExpressionExtractorNames : ObjectExpressionExtractor [ ] = [
26
+ ObjectExpressionExtractor . ObjectExpressionToVariableDeclarationExtractor ,
27
+ ObjectExpressionExtractor . BasePropertiesExtractor
28
+ ] ;
29
+
22
30
/**
23
31
* @type {TObjectExpressionExtractorFactory }
24
32
*/
@@ -208,18 +216,45 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
208
216
return objectExpressionNode ;
209
217
}
210
218
219
+ return this . applyObjectExpressionKeysExtractorsRecursive (
220
+ ObjectExpressionKeysTransformer . objectExpressionExtractorNames ,
221
+ objectExpressionNode ,
222
+ hostStatement
223
+ ) ;
224
+ }
225
+
226
+ /**
227
+ * @param {ObjectExpressionExtractor[] } objectExpressionExtractorNames
228
+ * @param {ObjectExpression } objectExpressionNode
229
+ * @param {Statement } hostStatement
230
+ * @returns {Node }
231
+ */
232
+ private applyObjectExpressionKeysExtractorsRecursive (
233
+ objectExpressionExtractorNames : ObjectExpressionExtractor [ ] ,
234
+ objectExpressionNode : ESTree . ObjectExpression ,
235
+ hostStatement : ESTree . Statement
236
+ ) : ESTree . Node {
237
+ const newObjectExpressionExtractorNames : ObjectExpressionExtractor [ ] = [ ...objectExpressionExtractorNames ] ;
238
+ const objectExpressionExtractor : ObjectExpressionExtractor | undefined =
239
+<
D2BC
/span> newObjectExpressionExtractorNames . shift ( ) ;
240
+
241
+ if ( ! objectExpressionExtractor ) {
242
+ return objectExpressionNode ;
243
+ }
244
+
211
245
const {
212
- nodeToReplace : newObjectExpressionIdentifierReference ,
246
+ nodeToReplace,
213
247
objectExpressionHostStatement : newObjectExpressionHostStatement ,
214
248
objectExpressionNode : newObjectExpressionNode
215
- } = this
216
- . objectExpressionExtractorFactory ( ObjectExpressionExtractor . ObjectExpressionToVariableDeclarationExtractor )
249
+ } = this . objectExpressionExtractorFactory ( objectExpressionExtractor )
217
250
. extract ( objectExpressionNode , hostStatement ) ;
218
251
219
- this
220
- . objectExpressionExtractorFactory ( ObjectExpressionExtractor . BasePropertiesExtractor )
221
- . extract ( newObjectExpressionNode , newObjectExpressionHostStatement ) ;
252
+ this . applyObjectExpressionKeysExtractorsRecursive (
253
+ newObjectExpressionExtractorNames ,
254
+ newObjectExpressionNode ,
255
+ newObjectExpressionHostStatement
256
+ ) ;
222
257
223
- return newObjectExpressionIdentifierReference ;
258
+ return nodeToReplace ;
224
259
}
225
260
}
0 commit comments