@@ -241,11 +241,14 @@ export class Walker extends EventEmitter<WalkerEmitter> {
241
241
this . schemaNode = schemaNode ;
242
242
}
243
243
244
- protected retrieveFromFragment ( fragment : ProcessedFragment ) : [ MirroredSchemaNode , ProcessedFragment ] | void {
244
+ protected retrieveFromFragment (
245
+ fragment : ProcessedFragment ,
246
+ originalFragment : SchemaFragment ,
247
+ ) : [ MirroredSchemaNode , ProcessedFragment ] | void {
245
248
const processedSchemaNode = this . processedFragments . get ( fragment ) ;
246
249
if ( processedSchemaNode !== void 0 ) {
247
250
if ( isRegularNode ( processedSchemaNode ) ) {
248
- return [ new MirroredRegularNode ( processedSchemaNode ) , fragment ] ;
251
+ return [ new MirroredRegularNode ( processedSchemaNode , { originalFragment } ) , fragment ] ;
249
252
}
250
253
251
254
if ( isReferenceNode ( processedSchemaNode ) ) {
@@ -258,10 +261,10 @@ export class Walker extends EventEmitter<WalkerEmitter> {
258
261
}
259
262
260
263
protected processFragment ( ) : [ SchemaNode , ProcessedFragment ] {
261
- const { walkingOptions, path } = this ;
264
+ const { walkingOptions, path, fragment : originalFragment } = this ;
262
265
let { fragment } = this ;
263
266
264
- let retrieved = isNonNullable ( fragment ) ? this . retrieveFromFragment ( fragment ) : null ;
267
+ let retrieved = isNonNullable ( fragment ) ? this . retrieveFromFragment ( fragment , originalFragment ) : null ;
265
268
266
269
if ( retrieved ) {
267
270
return retrieved ;
@@ -301,28 +304,23 @@ export class Walker extends EventEmitter<WalkerEmitter> {
301
304
try {
302
305
const merged = mergeOneOrAnyOf ( fragment , path , walkingOptions ) ;
303
306
if ( merged . length === 1 ) {
304
- return [ new RegularNode ( merged [ 0 ] ) , initialFragment ] ;
307
+ return [ new RegularNode ( merged [ 0 ] , { originalFragment } ) , initialFragment ] ;
305
308
} else {
306
309
const combiner = SchemaCombinerName . OneOf in fragment ? SchemaCombinerName . OneOf : SchemaCombinerName . AnyOf ;
307
- return [
308
- new RegularNode ( {
309
- [ combiner ] : merged ,
310
- } ) ,
311
- initialFragment ,
312
- ] ;
310
+ return [ new RegularNode ( { [ combiner ] : merged } , { originalFragment } ) , initialFragment ] ;
313
311
}
314
312
} catch ( ex ) {
315
313
super . emit ( 'error' , createMagicError ( new MergingError ( ex ?. message ?? 'Unknown merging error' ) ) ) ;
316
314
// no the end of the world - we will render raw unprocessed fragment
317
315
}
318
316
}
319
317
320
- retrieved = isNonNullable ( fragment ) ? this . retrieveFromFragment ( initialFragment ) : null ;
318
+ retrieved = isNonNullable ( fragment ) ? this . retrieveFromFragment ( initialFragment , originalFragment ) : null ;
321
319
322
320
if ( retrieved ) {
323
321
return retrieved ;
324
322
}
325
323
326
- return [ new RegularNode ( fragment ) , initialFragment ] ;
324
+ return [ new RegularNode ( fragment , { originalFragment } ) , initialFragment ] ;
327
325
}
328
326
}
0 commit comments