@pothos/plugin-prisma 4.0.5 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -4
- package/dts/connection-helpers.d.ts +2 -2
- package/dts/connection-helpers.d.ts.map +1 -1
- package/dts/global-types.d.ts +9 -9
- package/dts/global-types.d.ts.map +1 -1
- package/dts/index.d.ts +2 -2
- package/dts/index.d.ts.map +1 -1
- package/dts/interface-ref.d.ts +2 -2
- package/dts/interface-ref.d.ts.map +1 -1
- package/dts/model-loader.d.ts +4 -4
- package/dts/model-loader.d.ts.map +1 -1
- package/dts/node-ref.d.ts +1 -1
- package/dts/node-ref.d.ts.map +1 -1
- package/dts/object-ref.d.ts +1 -1
- package/dts/object-ref.d.ts.map +1 -1
- package/dts/prisma-field-builder.d.ts +5 -5
- package/dts/prisma-field-builder.d.ts.map +1 -1
- package/dts/types.d.ts +8 -8
- package/dts/types.d.ts.map +1 -1
- package/dts/util/cursors.d.ts +3 -3
- package/dts/util/cursors.d.ts.map +1 -1
- package/dts/util/datamodel.d.ts +3 -3
- package/dts/util/datamodel.d.ts.map +1 -1
- package/dts/util/deep-equal.d.ts.map +1 -1
- package/dts/util/description.d.ts +1 -1
- package/dts/util/description.d.ts.map +1 -1
- package/dts/util/get-client.d.ts +2 -2
- package/dts/util/get-client.d.ts.map +1 -1
- package/dts/util/loader-map.d.ts +2 -2
- package/dts/util/loader-map.d.ts.map +1 -1
- package/dts/util/map-query.d.ts +13 -8
- package/dts/util/map-query.d.ts.map +1 -1
- package/dts/util/relation-map.d.ts +1 -1
- package/dts/util/relation-map.d.ts.map +1 -1
- package/dts/util/selections.d.ts +2 -2
- package/dts/util/selections.d.ts.map +1 -1
- package/dts/util/usage.d.ts.map +1 -1
- package/esm/connection-helpers.d.ts +2 -2
- package/esm/connection-helpers.d.ts.map +1 -1
- package/esm/field-builder.js +6 -6
- package/esm/field-builder.js.map +1 -1
- package/esm/generator.js +5 -5
- package/esm/generator.js.map +1 -1
- package/esm/global-types.d.ts +9 -9
- package/esm/global-types.d.ts.map +1 -1
- package/esm/global-types.js +1 -1
- package/esm/global-types.js.map +1 -1
- package/esm/index.d.ts +2 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -4
- package/esm/index.js.map +1 -1
- package/esm/interface-ref.d.ts +2 -2
- package/esm/interface-ref.d.ts.map +1 -1
- package/esm/interface-ref.js.map +1 -1
- package/esm/model-loader.d.ts +4 -4
- package/esm/model-loader.d.ts.map +1 -1
- package/esm/model-loader.js +13 -15
- package/esm/model-loader.js.map +1 -1
- package/esm/node-ref.d.ts +1 -1
- package/esm/node-ref.d.ts.map +1 -1
- package/esm/object-ref.d.ts +1 -1
- package/esm/object-ref.d.ts.map +1 -1
- package/esm/object-ref.js +4 -2
- package/esm/object-ref.js.map +1 -1
- package/esm/prisma-field-builder.d.ts +5 -5
- package/esm/prisma-field-builder.d.ts.map +1 -1
- package/esm/prisma-field-builder.js +7 -8
- package/esm/prisma-field-builder.js.map +1 -1
- package/esm/schema-builder.js +1 -1
- package/esm/schema-builder.js.map +1 -1
- package/esm/types.d.ts +8 -8
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/util/cursors.d.ts +3 -3
- package/esm/util/cursors.d.ts.map +1 -1
- package/esm/util/cursors.js +2 -2
- package/esm/util/cursors.js.map +1 -1
- package/esm/util/datamodel.d.ts +3 -3
- package/esm/util/datamodel.d.ts.map +1 -1
- package/esm/util/datamodel.js.map +1 -1
- package/esm/util/deep-equal.d.ts.map +1 -1
- package/esm/util/deep-equal.js +1 -1
- package/esm/util/deep-equal.js.map +1 -1
- package/esm/util/description.d.ts +1 -1
- package/esm/util/description.d.ts.map +1 -1
- package/esm/util/description.js +1 -1
- package/esm/util/description.js.map +1 -1
- package/esm/util/get-client.d.ts +2 -2
- package/esm/util/get-client.d.ts.map +1 -1
- package/esm/util/get-client.js +1 -1
- package/esm/util/get-client.js.map +1 -1
- package/esm/util/loader-map.d.ts +2 -2
- package/esm/util/loader-map.d.ts.map +1 -1
- package/esm/util/loader-map.js +4 -5
- package/esm/util/loader-map.js.map +1 -1
- package/esm/util/map-query.d.ts +13 -8
- package/esm/util/map-query.d.ts.map +1 -1
- package/esm/util/map-query.js +20 -19
- package/esm/util/map-query.js.map +1 -1
- package/esm/util/relation-map.d.ts +1 -1
- package/esm/util/relation-map.d.ts.map +1 -1
- package/esm/util/relation-map.js +12 -12
- package/esm/util/relation-map.js.map +1 -1
- package/esm/util/selections.d.ts +2 -2
- package/esm/util/selections.d.ts.map +1 -1
- package/esm/util/selections.js +9 -9
- package/esm/util/selections.js.map +1 -1
- package/esm/util/usage.d.ts.map +1 -1
- package/esm/util/usage.js +0 -1
- package/esm/util/usage.js.map +1 -1
- package/generated.d.ts +1 -1
- package/lib/field-builder.js +7 -5
- package/lib/field-builder.js.map +1 -1
- package/lib/generator.js +4 -4
- package/lib/generator.js.map +1 -1
- package/lib/global-types.js +1 -1
- package/lib/global-types.js.map +1 -1
- package/lib/index.js +4 -4
- package/lib/index.js.map +1 -1
- package/lib/interface-ref.js.map +1 -1
- package/lib/model-loader.js +12 -14
- package/lib/model-loader.js.map +1 -1
- package/lib/object-ref.js +3 -1
- package/lib/object-ref.js.map +1 -1
- package/lib/prisma-field-builder.js +6 -7
- package/lib/prisma-field-builder.js.map +1 -1
- package/lib/schema-builder.js +1 -1
- package/lib/schema-builder.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/util/cursors.js +2 -2
- package/lib/util/cursors.js.map +1 -1
- package/lib/util/datamodel.js.map +1 -1
- package/lib/util/deep-equal.js +1 -1
- package/lib/util/deep-equal.js.map +1 -1
- package/lib/util/description.js +1 -1
- package/lib/util/description.js.map +1 -1
- package/lib/util/get-client.js +1 -1
- package/lib/util/get-client.js.map +1 -1
- package/lib/util/loader-map.js +4 -5
- package/lib/util/loader-map.js.map +1 -1
- package/lib/util/map-query.js +20 -19
- package/lib/util/map-query.js.map +1 -1
- package/lib/util/relation-map.js +12 -12
- package/lib/util/relation-map.js.map +1 -1
- package/lib/util/selections.js +9 -9
- package/lib/util/selections.js.map +1 -1
- package/lib/util/usage.js +0 -1
- package/lib/util/usage.js.map +1 -1
- package/package.json +12 -12
- package/src/connection-helpers.ts +2 -2
- package/src/field-builder.ts +30 -19
- package/src/generator.ts +5 -8
- package/src/global-types.ts +33 -28
- package/src/index.ts +12 -11
- package/src/interface-ref.ts +2 -2
- package/src/model-loader.ts +17 -19
- package/src/node-ref.ts +1 -1
- package/src/object-ref.ts +5 -3
- package/src/prisma-field-builder.ts +54 -53
- package/src/schema-builder.ts +8 -8
- package/src/types.ts +59 -60
- package/src/util/cursors.ts +7 -8
- package/src/util/datamodel.ts +3 -3
- package/src/util/deep-equal.ts +0 -1
- package/src/util/description.ts +1 -2
- package/src/util/get-client.ts +2 -3
- package/src/util/loader-map.ts +6 -8
- package/src/util/map-query.ts +49 -46
- package/src/util/relation-map.ts +13 -13
- package/src/util/selections.ts +10 -12
- package/src/util/usage.ts +0 -2
package/src/util/map-query.ts
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable no-continue */
|
|
1
|
+
import { PothosValidationError, getMappedArgumentValues } from '@pothos/core';
|
|
3
2
|
import {
|
|
4
|
-
FieldNode,
|
|
5
|
-
FragmentDefinitionNode,
|
|
6
|
-
|
|
7
|
-
getNamedType,
|
|
8
|
-
GraphQLField,
|
|
3
|
+
type FieldNode,
|
|
4
|
+
type FragmentDefinitionNode,
|
|
5
|
+
type GraphQLField,
|
|
9
6
|
GraphQLIncludeDirective,
|
|
10
|
-
GraphQLInterfaceType,
|
|
11
|
-
GraphQLNamedType,
|
|
12
|
-
GraphQLObjectType,
|
|
13
|
-
GraphQLResolveInfo,
|
|
7
|
+
type GraphQLInterfaceType,
|
|
8
|
+
type GraphQLNamedType,
|
|
9
|
+
type GraphQLObjectType,
|
|
10
|
+
type GraphQLResolveInfo,
|
|
14
11
|
GraphQLSkipDirective,
|
|
15
|
-
InlineFragmentNode,
|
|
12
|
+
type InlineFragmentNode,
|
|
13
|
+
Kind,
|
|
14
|
+
type SelectionSetNode,
|
|
15
|
+
getDirectiveValues,
|
|
16
|
+
getNamedType,
|
|
16
17
|
isInterfaceType,
|
|
17
18
|
isObjectType,
|
|
18
|
-
Kind,
|
|
19
|
-
SelectionSetNode,
|
|
20
19
|
} from 'graphql';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
20
|
+
import type {
|
|
23
21
|
FieldSelection,
|
|
24
22
|
IncludeMap,
|
|
25
23
|
IndirectInclude,
|
|
@@ -27,12 +25,12 @@ import {
|
|
|
27
25
|
SelectionMap,
|
|
28
26
|
} from '../types';
|
|
29
27
|
import { setLoaderMappings } from './loader-map';
|
|
30
|
-
import { FieldMap } from './relation-map';
|
|
28
|
+
import type { FieldMap } from './relation-map';
|
|
31
29
|
import {
|
|
30
|
+
type SelectionState,
|
|
32
31
|
createState,
|
|
33
32
|
mergeSelection,
|
|
34
33
|
selectionCompatible,
|
|
35
|
-
SelectionState,
|
|
36
34
|
selectionToQuery,
|
|
37
35
|
} from './selections';
|
|
38
36
|
import { wrapWithUsageCheck } from './usage';
|
|
@@ -49,36 +47,32 @@ function addTypeSelectionsForField(
|
|
|
49
47
|
return;
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
const {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
pothosPrismaInclude?: IncludeMap;
|
|
60
|
-
pothosPrismaSelect?: IncludeMap;
|
|
61
|
-
pothosPrismaIndirectInclude?: IndirectInclude;
|
|
62
|
-
};
|
|
50
|
+
const { pothosPrismaInclude, pothosPrismaSelect, pothosIndirectInclude, pothosPrismaModel } =
|
|
51
|
+
(type.extensions ?? {}) as {
|
|
52
|
+
pothosPrismaModel?: string;
|
|
53
|
+
pothosPrismaInclude?: IncludeMap;
|
|
54
|
+
pothosPrismaSelect?: IncludeMap;
|
|
55
|
+
pothosIndirectInclude?: IndirectInclude;
|
|
56
|
+
};
|
|
63
57
|
|
|
64
58
|
if (
|
|
65
|
-
(!!
|
|
66
|
-
(!!
|
|
59
|
+
(!!pothosIndirectInclude?.path && pothosIndirectInclude.path.length > 0) ||
|
|
60
|
+
(!!pothosIndirectInclude?.paths && pothosIndirectInclude.paths.length === 0)
|
|
67
61
|
) {
|
|
68
62
|
resolveIndirectIncludePaths(
|
|
69
63
|
type,
|
|
70
64
|
info,
|
|
71
65
|
selection,
|
|
72
66
|
[],
|
|
73
|
-
|
|
67
|
+
pothosIndirectInclude.paths ?? [pothosIndirectInclude.path!],
|
|
74
68
|
indirectPath,
|
|
75
69
|
(resolvedType, field, path) => {
|
|
76
70
|
addTypeSelectionsForField(resolvedType, context, info, state, field, path);
|
|
77
71
|
},
|
|
78
72
|
);
|
|
79
|
-
} else if (
|
|
73
|
+
} else if (pothosIndirectInclude) {
|
|
80
74
|
addTypeSelectionsForField(
|
|
81
|
-
info.schema.getType(
|
|
75
|
+
info.schema.getType(pothosIndirectInclude.getType())!,
|
|
82
76
|
context,
|
|
83
77
|
info,
|
|
84
78
|
state,
|
|
@@ -335,7 +329,7 @@ function addFieldSelection(
|
|
|
335
329
|
returnType,
|
|
336
330
|
info,
|
|
337
331
|
selection,
|
|
338
|
-
(returnType.extensions?.
|
|
332
|
+
(returnType.extensions?.pothosIndirectInclude as { path: [] })?.path ?? [],
|
|
339
333
|
normalizedIndirectInclude?.paths ??
|
|
340
334
|
(normalizedIndirectInclude?.path ? [normalizedIndirectInclude.path] : []),
|
|
341
335
|
[],
|
|
@@ -359,7 +353,6 @@ function addFieldSelection(
|
|
|
359
353
|
|
|
360
354
|
addTypeSelectionsForField(returnType, context, info, fieldState, selection, []);
|
|
361
355
|
|
|
362
|
-
// eslint-disable-next-line prefer-destructuring
|
|
363
356
|
mappings = fieldState.mappings;
|
|
364
357
|
|
|
365
358
|
return selectionToQuery(fieldState);
|
|
@@ -403,11 +396,15 @@ function addFieldSelection(
|
|
|
403
396
|
}
|
|
404
397
|
}
|
|
405
398
|
|
|
406
|
-
export function queryFromInfo<
|
|
399
|
+
export function queryFromInfo<
|
|
400
|
+
Select extends SelectionMap['select'] | undefined = undefined,
|
|
401
|
+
Include extends SelectionMap['select'] | undefined = undefined,
|
|
402
|
+
>({
|
|
407
403
|
context,
|
|
408
404
|
info,
|
|
409
405
|
typeName,
|
|
410
406
|
select,
|
|
407
|
+
include,
|
|
411
408
|
path = [],
|
|
412
409
|
paths = [],
|
|
413
410
|
withUsageCheck = false,
|
|
@@ -415,27 +412,33 @@ export function queryFromInfo<T extends SelectionMap['select'] | undefined = und
|
|
|
415
412
|
context: object;
|
|
416
413
|
info: GraphQLResolveInfo;
|
|
417
414
|
typeName?: string;
|
|
418
|
-
select?: T;
|
|
419
415
|
path?: string[];
|
|
420
416
|
paths?: string[][];
|
|
421
417
|
withUsageCheck?: boolean;
|
|
422
|
-
}
|
|
418
|
+
} & (
|
|
419
|
+
| { include?: Include; select?: never }
|
|
420
|
+
| { select?: Select; include?: never }
|
|
421
|
+
)): undefined extends Include
|
|
422
|
+
? {
|
|
423
|
+
select: Select;
|
|
424
|
+
}
|
|
425
|
+
: { include: Include } {
|
|
423
426
|
const returnType = getNamedType(info.returnType);
|
|
424
427
|
const type = typeName ? info.schema.getTypeMap()[typeName] : returnType;
|
|
425
428
|
|
|
426
429
|
let state: SelectionState | undefined;
|
|
427
|
-
const initialSelection = select ? { select } : undefined;
|
|
430
|
+
const initialSelection = select ? { select } : include ? { include } : undefined;
|
|
428
431
|
|
|
429
432
|
if (path.length > 0 || paths.length > 0) {
|
|
430
|
-
const {
|
|
431
|
-
|
|
433
|
+
const { pothosIndirectInclude } = (returnType.extensions ?? {}) as {
|
|
434
|
+
pothosIndirectInclude?: IndirectInclude;
|
|
432
435
|
};
|
|
433
436
|
|
|
434
437
|
resolveIndirectInclude(
|
|
435
438
|
returnType,
|
|
436
439
|
info,
|
|
437
440
|
info.fieldNodes[0],
|
|
438
|
-
|
|
441
|
+
pothosIndirectInclude?.path ?? [],
|
|
439
442
|
[],
|
|
440
443
|
(indirectType, indirectField, subPath) => {
|
|
441
444
|
resolveIndirectIncludePaths(
|
|
@@ -479,7 +482,7 @@ export function queryFromInfo<T extends SelectionMap['select'] | undefined = und
|
|
|
479
482
|
|
|
480
483
|
setLoaderMappings(context, info, state.mappings);
|
|
481
484
|
|
|
482
|
-
const query = selectionToQuery(state) as { select:
|
|
485
|
+
const query = selectionToQuery(state) as { select: Select; include: Include };
|
|
483
486
|
|
|
484
487
|
return withUsageCheck ? wrapWithUsageCheck(query) : query;
|
|
485
488
|
}
|
|
@@ -530,9 +533,9 @@ function createStateForType(
|
|
|
530
533
|
export function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo) {
|
|
531
534
|
let targetType = type;
|
|
532
535
|
|
|
533
|
-
while (targetType.extensions?.
|
|
536
|
+
while (targetType.extensions?.pothosIndirectInclude) {
|
|
534
537
|
targetType = info.schema.getType(
|
|
535
|
-
(targetType.extensions?.
|
|
538
|
+
(targetType.extensions?.pothosIndirectInclude as IndirectInclude).getType(),
|
|
536
539
|
)!;
|
|
537
540
|
}
|
|
538
541
|
|
package/src/util/relation-map.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createContextCache } from '@pothos/core';
|
|
2
|
-
import { DMMF, RuntimeDataModel } from './get-client';
|
|
2
|
+
import type { DMMF, RuntimeDataModel } from './get-client';
|
|
3
3
|
|
|
4
4
|
export interface FieldMap {
|
|
5
5
|
model: string;
|
|
@@ -16,33 +16,33 @@ export function createRelationMap({ models }: DMMF['datamodel'] | RuntimeDataMod
|
|
|
16
16
|
const relationMap: RelationMap = new Map();
|
|
17
17
|
|
|
18
18
|
if (Array.isArray(models)) {
|
|
19
|
-
|
|
19
|
+
for (const model of models) {
|
|
20
20
|
relationMap.set(model.name, { model: model.name, relations: new Map() });
|
|
21
|
-
}
|
|
21
|
+
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
for (const model of models) {
|
|
24
24
|
const map = relationMap.get(model.name)!.relations;
|
|
25
25
|
|
|
26
|
-
model.fields
|
|
26
|
+
for (const field of model.fields) {
|
|
27
27
|
if (field.kind === 'object' && relationMap.has(field.type)) {
|
|
28
28
|
map.set(field.name, relationMap.get(field.type)!);
|
|
29
29
|
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
32
|
} else {
|
|
33
|
-
Object.keys(models)
|
|
33
|
+
for (const name of Object.keys(models)) {
|
|
34
34
|
relationMap.set(name, { model: name, relations: new Map() });
|
|
35
|
-
}
|
|
35
|
+
}
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
for (const [name, model] of Object.entries(models)) {
|
|
38
38
|
const map = relationMap.get(name)!.relations;
|
|
39
39
|
|
|
40
|
-
model.fields
|
|
40
|
+
for (const field of model.fields) {
|
|
41
41
|
if (field.kind === 'object' && relationMap.has(field.type)) {
|
|
42
42
|
map.set(field.name, relationMap.get(field.type)!);
|
|
43
43
|
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
return relationMap;
|
package/src/util/selections.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable no-underscore-dangle */
|
|
3
|
-
import { LoaderMappings, SelectionMap } from '../types';
|
|
1
|
+
import type { LoaderMappings, SelectionMap } from '../types';
|
|
4
2
|
import { deepEqual } from './deep-equal';
|
|
5
|
-
import { FieldMap } from './relation-map';
|
|
3
|
+
import type { FieldMap } from './relation-map';
|
|
6
4
|
|
|
7
5
|
export type SelectionMode = 'include' | 'select';
|
|
8
6
|
|
|
@@ -114,15 +112,15 @@ export function mergeSelection(state: SelectionState, { select, include, ...quer
|
|
|
114
112
|
}
|
|
115
113
|
|
|
116
114
|
if (include) {
|
|
117
|
-
Object.keys(include)
|
|
115
|
+
for (const key of Object.keys(include)) {
|
|
118
116
|
merge(key, include[key]);
|
|
119
|
-
}
|
|
117
|
+
}
|
|
120
118
|
}
|
|
121
119
|
|
|
122
120
|
if (select) {
|
|
123
|
-
Object.keys(select)
|
|
121
|
+
for (const key of Object.keys(select)) {
|
|
124
122
|
merge(key, select[key]);
|
|
125
|
-
}
|
|
123
|
+
}
|
|
126
124
|
}
|
|
127
125
|
|
|
128
126
|
if (Object.keys(query).length > 0) {
|
|
@@ -136,9 +134,9 @@ export function mergeSelection(state: SelectionState, { select, include, ...quer
|
|
|
136
134
|
|
|
137
135
|
if (key === '_count') {
|
|
138
136
|
const counts = (value as { select?: Record<string, boolean> }).select ?? {};
|
|
139
|
-
Object.keys(counts)
|
|
137
|
+
for (const count of Object.keys(counts)) {
|
|
140
138
|
state.counts.set(count, counts[count]);
|
|
141
|
-
}
|
|
139
|
+
}
|
|
142
140
|
|
|
143
141
|
return;
|
|
144
142
|
}
|
|
@@ -184,10 +182,10 @@ export function selectionToQuery(state: SelectionState): SelectionMap {
|
|
|
184
182
|
}
|
|
185
183
|
|
|
186
184
|
if (state.mode === 'select') {
|
|
187
|
-
state.fields
|
|
185
|
+
for (const field of state.fields) {
|
|
188
186
|
hasSelection = true;
|
|
189
187
|
nestedIncludes[field] = true;
|
|
190
|
-
}
|
|
188
|
+
}
|
|
191
189
|
|
|
192
190
|
return {
|
|
193
191
|
...(state.query as SelectionMap),
|
package/src/util/usage.ts
CHANGED
|
@@ -20,7 +20,6 @@ export function wrapWithUsageCheck<T extends Object>(obj: T): T {
|
|
|
20
20
|
Object.defineProperty(result, key, {
|
|
21
21
|
enumerable: true,
|
|
22
22
|
configurable: true,
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
24
23
|
get() {
|
|
25
24
|
used = true;
|
|
26
25
|
return obj[key as keyof T];
|
|
@@ -47,7 +46,6 @@ export function extendWithUsage<T extends object, U extends object>(
|
|
|
47
46
|
|
|
48
47
|
for (const key of [usageSymbol, ...Object.keys(original)]) {
|
|
49
48
|
if (key in result) {
|
|
50
|
-
// eslint-disable-next-line no-continue
|
|
51
49
|
continue;
|
|
52
50
|
}
|
|
53
51
|
|