@apollo/client 3.12.5 → 3.12.7
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 +24 -0
- package/apollo-client.cjs +17 -13
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/index.d.ts +1 -1
- package/cache/index.js +0 -1
- package/cache/index.js.map +1 -1
- package/core/core.cjs +1 -1
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +1 -1
- package/core/index.d.ts +2 -2
- package/core/index.js +0 -2
- package/core/index.js.map +1 -1
- package/dev/dev.cjs +1 -1
- package/dev/dev.cjs.map +1 -1
- package/dev/dev.cjs.native.js +1 -1
- package/errors/index.js.map +1 -1
- package/link/core/index.d.ts +1 -1
- package/link/core/index.js +0 -1
- package/link/core/index.js.map +1 -1
- package/link/core/types.d.ts +2 -2
- package/link/core/types.js.map +1 -1
- package/link/error/error.cjs +17 -8
- package/link/error/error.cjs.map +1 -1
- package/link/error/error.cjs.native.js +17 -8
- package/link/error/index.d.ts +17 -1
- package/link/error/index.js +17 -8
- package/link/error/index.js.map +1 -1
- package/link/persisted-queries/index.d.ts +2 -2
- package/masking/__benches__/types.bench.js +24 -15
- package/masking/__benches__/types.bench.js.map +1 -1
- package/masking/internal/types.d.ts +2 -2
- package/masking/internal/types.js.map +1 -1
- package/masking/types.d.ts +2 -2
- package/masking/types.js.map +1 -1
- package/package.json +28 -23
- package/react/components/index.d.ts +1 -1
- package/react/components/index.js +0 -1
- package/react/components/index.js.map +1 -1
- package/react/hoc/index.d.ts +1 -1
- package/react/hoc/index.js +0 -1
- package/react/hoc/index.js.map +1 -1
- package/react/hooks/hooks.cjs +16 -12
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +16 -12
- package/react/hooks/internal/useDeepMemo.js +1 -0
- package/react/hooks/internal/useDeepMemo.js.map +1 -1
- package/react/hooks/useBackgroundQuery.js +4 -2
- package/react/hooks/useBackgroundQuery.js.map +1 -1
- package/react/hooks/useFragment.js +4 -2
- package/react/hooks/useFragment.js.map +1 -1
- package/react/hooks/useMutation.js +1 -0
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.js +5 -2
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useQueryRefHandlers.js +2 -2
- package/react/hooks/useQueryRefHandlers.js.map +1 -1
- package/react/hooks/useReadQuery.js +2 -2
- package/react/hooks/useReadQuery.js.map +1 -1
- package/react/hooks/useSubscription.js +1 -0
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/hooks/useSuspenseQuery.js +5 -2
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- package/react/index.d.ts +1 -1
- package/react/index.js +0 -1
- package/react/index.js.map +1 -1
- package/react/internal/internal.cjs +1 -1
- package/react/internal/internal.cjs.map +1 -1
- package/react/internal/internal.cjs.native.js +1 -1
- package/testing/internal/ObservableStream.d.ts +11 -9
- package/testing/internal/ObservableStream.js +29 -4
- package/testing/internal/ObservableStream.js.map +1 -1
- package/testing/internal/incremental.d.ts +23 -0
- package/testing/internal/incremental.js +124 -0
- package/testing/internal/incremental.js.map +1 -0
- package/testing/internal/index.d.ts +1 -0
- package/testing/internal/index.js +1 -0
- package/testing/internal/index.js.map +1 -1
- package/testing/internal/scenarios/index.d.ts +1 -0
- package/testing/internal/scenarios/index.js.map +1 -1
- package/testing/matchers/index.js +4 -0
- package/testing/matchers/index.js.map +1 -1
- package/testing/matchers/toEqualApolloQueryResult.d.ts +6 -0
- package/testing/matchers/toEqualApolloQueryResult.js +20 -0
- package/testing/matchers/toEqualApolloQueryResult.js.map +1 -0
- package/testing/matchers/toEqualQueryResult.d.ts +9 -0
- package/testing/matchers/toEqualQueryResult.js +40 -0
- package/testing/matchers/toEqualQueryResult.js.map +1 -0
- package/utilities/globals/globals.cjs +1 -1
- package/utilities/globals/globals.cjs.map +1 -1
- package/utilities/globals/globals.cjs.native.js +1 -1
- package/utilities/index.d.ts +2 -1
- package/utilities/index.js +0 -1
- package/utilities/index.js.map +1 -1
- package/version.js +1 -1
- package/testing/core/observableToPromise.d.ts +0 -29
- package/testing/core/observableToPromise.js +0 -74
- package/testing/core/observableToPromise.js.map +0 -1
package/link/error/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
+
import { graphQLResultHasProtocolErrors, PROTOCOL_ERRORS_SYMBOL, } from "../../errors/index.js";
|
|
2
3
|
import { Observable } from "../../utilities/index.js";
|
|
3
4
|
import { ApolloLink } from "../core/index.js";
|
|
4
5
|
export function onError(errorHandler) {
|
|
@@ -17,14 +18,22 @@ export function onError(errorHandler) {
|
|
|
17
18
|
operation: operation,
|
|
18
19
|
forward: forward,
|
|
19
20
|
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
21
|
+
}
|
|
22
|
+
else if (graphQLResultHasProtocolErrors(result)) {
|
|
23
|
+
retriedResult = errorHandler({
|
|
24
|
+
protocolErrors: result.extensions[PROTOCOL_ERRORS_SYMBOL],
|
|
25
|
+
response: result,
|
|
26
|
+
operation: operation,
|
|
27
|
+
forward: forward,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (retriedResult) {
|
|
31
|
+
retriedSub = retriedResult.subscribe({
|
|
32
|
+
next: observer.next.bind(observer),
|
|
33
|
+
error: observer.error.bind(observer),
|
|
34
|
+
complete: observer.complete.bind(observer),
|
|
35
|
+
});
|
|
36
|
+
return;
|
|
28
37
|
}
|
|
29
38
|
observer.next(result);
|
|
30
39
|
},
|
package/link/error/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/error/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/link/error/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n FormattedExecutionResult,\n GraphQLErrorExtensions,\n GraphQLFormattedError,\n} from \"graphql\";\n\nimport {\n graphQLResultHasProtocolErrors,\n PROTOCOL_ERRORS_SYMBOL,\n} from \"../../errors/index.js\";\nimport type { NetworkError } from \"../../errors/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport type { Operation, FetchResult, NextLink } from \"../core/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\n\nexport interface ErrorResponse {\n /**\n * Errors returned in the `errors` property of the GraphQL response.\n */\n graphQLErrors?: ReadonlyArray<GraphQLFormattedError>;\n /**\n * Errors thrown during a network request. This is usually an error thrown\n * during a `fetch` call or an error while parsing the response from the\n * network.\n */\n networkError?: NetworkError;\n /**\n * Fatal transport-level errors from multipart subscriptions.\n * See the [multipart subscription protocol](https://www.apollographql.com/docs/graphos/routing/operations/subscriptions/multipart-protocol#message-and-error-format) for more information.\n */\n protocolErrors?: ReadonlyArray<{\n message: string;\n extensions?: GraphQLErrorExtensions[];\n }>;\n response?: FormattedExecutionResult;\n operation: Operation;\n forward: NextLink;\n}\n\nexport namespace ErrorLink {\n /**\n * Callback to be triggered when an error occurs within the link stack.\n */\n export interface ErrorHandler {\n (error: ErrorResponse): Observable<FetchResult> | void;\n }\n}\n\n// For backwards compatibility.\nexport import ErrorHandler = ErrorLink.ErrorHandler;\n\nexport function onError(errorHandler: ErrorHandler): ApolloLink {\n return new ApolloLink((operation, forward) => {\n return new Observable((observer) => {\n let sub: any;\n let retriedSub: any;\n let retriedResult: any;\n\n try {\n sub = forward(operation).subscribe({\n next: (result) => {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation,\n forward,\n });\n } else if (graphQLResultHasProtocolErrors(result)) {\n retriedResult = errorHandler({\n protocolErrors: result.extensions[PROTOCOL_ERRORS_SYMBOL],\n response: result,\n operation,\n forward,\n });\n }\n\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n\n observer.next(result);\n },\n error: (networkError) => {\n retriedResult = errorHandler({\n operation,\n networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors:\n (networkError &&\n networkError.result &&\n networkError.result.errors) ||\n void 0,\n forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: () => {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n } catch (e) {\n errorHandler({ networkError: e as Error, operation, forward });\n observer.error(e);\n }\n\n return () => {\n if (sub) sub.unsubscribe();\n if (retriedSub) sub.unsubscribe();\n };\n });\n });\n}\n\nexport class ErrorLink extends ApolloLink {\n private link: ApolloLink;\n constructor(errorHandler: ErrorLink.ErrorHandler) {\n super();\n this.link = onError(errorHandler);\n }\n\n public request(\n operation: Operation,\n forward: NextLink\n ): Observable<FetchResult> | null {\n return this.link.request(operation, forward);\n }\n}\n"]}
|
|
@@ -33,7 +33,7 @@ export declare namespace PersistedQueryLink {
|
|
|
33
33
|
export type Options = SHA256Options | GenerateHashOptions;
|
|
34
34
|
export {};
|
|
35
35
|
}
|
|
36
|
-
export declare const createPersistedQueryLink: (options: PersistedQueryLink.Options) => ApolloLink & {
|
|
36
|
+
export declare const createPersistedQueryLink: (options: PersistedQueryLink.Options) => ApolloLink & ({
|
|
37
37
|
resetHashCache: () => void;
|
|
38
38
|
} & ({
|
|
39
39
|
getMemoryInternals(): {
|
|
@@ -43,6 +43,6 @@ export declare const createPersistedQueryLink: (options: PersistedQueryLink.Opti
|
|
|
43
43
|
};
|
|
44
44
|
} | {
|
|
45
45
|
getMemoryInternals?: undefined;
|
|
46
|
-
});
|
|
46
|
+
}));
|
|
47
47
|
export {};
|
|
48
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -42,13 +42,13 @@ test("unmasks DeepPartial types", function (prefix) {
|
|
|
42
42
|
test("Unmasked handles odd types", function (prefix) {
|
|
43
43
|
bench(prefix + "empty type instantiations", function () {
|
|
44
44
|
attest();
|
|
45
|
-
}).types([
|
|
45
|
+
}).types([111, "instantiations"]);
|
|
46
46
|
bench(prefix + "empty type functionality", function () {
|
|
47
47
|
expectTypeOf().toEqualTypeOf();
|
|
48
48
|
});
|
|
49
49
|
bench(prefix + "generic record type instantiations", function () {
|
|
50
50
|
attest();
|
|
51
|
-
}).types([
|
|
51
|
+
}).types([115, "instantiations"]);
|
|
52
52
|
bench(prefix + "generic record type functionality", function () {
|
|
53
53
|
expectTypeOf().toEqualTypeOf();
|
|
54
54
|
});
|
|
@@ -68,25 +68,25 @@ test("Unmasked handles odd types", function (prefix) {
|
|
|
68
68
|
test("MaybeMasked handles odd types", function (prefix) {
|
|
69
69
|
bench(prefix + "empty type instantiations", function () {
|
|
70
70
|
attest();
|
|
71
|
-
}).types([
|
|
71
|
+
}).types([41, "instantiations"]);
|
|
72
72
|
bench(prefix + "empty type functionality", function () {
|
|
73
73
|
expectTypeOf().toEqualTypeOf();
|
|
74
74
|
});
|
|
75
75
|
bench(prefix + "generic record type instantiations", function () {
|
|
76
76
|
attest();
|
|
77
|
-
}).types([
|
|
77
|
+
}).types([46, "instantiations"]);
|
|
78
78
|
bench(prefix + "generic record type functionality", function () {
|
|
79
79
|
expectTypeOf().toEqualTypeOf();
|
|
80
80
|
});
|
|
81
81
|
bench(prefix + "unknown instantiations", function () {
|
|
82
82
|
attest();
|
|
83
|
-
}).types([
|
|
83
|
+
}).types([41, "instantiations"]);
|
|
84
84
|
bench(prefix + "unknown functionality", function () {
|
|
85
85
|
expectTypeOf().toBeUnknown();
|
|
86
86
|
});
|
|
87
87
|
bench(prefix + "any instantiations", function () {
|
|
88
88
|
attest();
|
|
89
|
-
}).types([
|
|
89
|
+
}).types([43, "instantiations"]);
|
|
90
90
|
bench(prefix + "any functionality", function () {
|
|
91
91
|
expectTypeOf().toBeAny();
|
|
92
92
|
});
|
|
@@ -95,12 +95,12 @@ test("distributed members on MaybeMasked", function (prefix) {
|
|
|
95
95
|
(function unresolvedGeneric() {
|
|
96
96
|
bench(prefix + "one unresolved generic mixed with null|undefined", function () {
|
|
97
97
|
attest();
|
|
98
|
-
}).types([
|
|
98
|
+
}).types([49, "instantiations"]);
|
|
99
99
|
})();
|
|
100
100
|
(function unresolvedGenerics() {
|
|
101
101
|
bench(prefix + "two unresolved generics distribute", function () {
|
|
102
102
|
attest();
|
|
103
|
-
}).types([
|
|
103
|
+
}).types([50, "instantiations"]);
|
|
104
104
|
})();
|
|
105
105
|
});
|
|
106
106
|
test("deals with overlapping array from parent fragment", function (prefix) {
|
|
@@ -131,7 +131,7 @@ test("base type, multiple fragments on sub-types", function (prefix) {
|
|
|
131
131
|
test("does not detect `$fragmentRefs` if type contains `any`", function (prefix) {
|
|
132
132
|
bench(prefix + "instantiations", function () {
|
|
133
133
|
return {};
|
|
134
|
-
}).types([
|
|
134
|
+
}).types([1, "instantiations"]);
|
|
135
135
|
bench(prefix + "functionality", function () {
|
|
136
136
|
var x = {};
|
|
137
137
|
expectTypeOf(x).branded.toEqualTypeOf();
|
|
@@ -149,7 +149,7 @@ test("leaves tuples alone", function (prefix) {
|
|
|
149
149
|
test("does not detect `$fragmentRefs` if type is a record type", function (prefix) {
|
|
150
150
|
bench(prefix + "instantiations", function () {
|
|
151
151
|
return {};
|
|
152
|
-
}).types([
|
|
152
|
+
}).types([1, "instantiations"]);
|
|
153
153
|
bench(prefix + "functionality", function () {
|
|
154
154
|
var x = {};
|
|
155
155
|
expectTypeOf(x).branded.toEqualTypeOf();
|
|
@@ -158,7 +158,7 @@ test("does not detect `$fragmentRefs` if type is a record type", function (prefi
|
|
|
158
158
|
test("does not detect `$fragmentRefs` on types with index signatures", function (prefix) {
|
|
159
159
|
bench(prefix + "instantiations", function () {
|
|
160
160
|
return {};
|
|
161
|
-
}).types([
|
|
161
|
+
}).types([1, "instantiations"]);
|
|
162
162
|
bench(prefix + "functionality", function () {
|
|
163
163
|
var x = {};
|
|
164
164
|
expectTypeOf(x).branded.toEqualTypeOf();
|
|
@@ -167,7 +167,7 @@ test("does not detect `$fragmentRefs` on types with index signatures", function
|
|
|
167
167
|
test("detects `$fragmentRefs` on types with index signatures", function (prefix) {
|
|
168
168
|
bench(prefix + "instantiations", function () {
|
|
169
169
|
return {};
|
|
170
|
-
}).types([
|
|
170
|
+
}).types([1, "instantiations"]);
|
|
171
171
|
bench(prefix + "functionality", function () {
|
|
172
172
|
var x = {};
|
|
173
173
|
var y = {};
|
|
@@ -178,7 +178,7 @@ test("detects `$fragmentRefs` on types with index signatures", function (prefix)
|
|
|
178
178
|
test("recursive types: no error 'Type instantiation is excessively deep and possibly infinite.'", function (prefix) {
|
|
179
179
|
bench(prefix + "instantiations", function () {
|
|
180
180
|
return {};
|
|
181
|
-
}).types([
|
|
181
|
+
}).types([1, "instantiations"]);
|
|
182
182
|
bench(prefix + "functionality", function () {
|
|
183
183
|
var x = {};
|
|
184
184
|
expectTypeOf(x).branded.toEqualTypeOf();
|
|
@@ -189,7 +189,7 @@ test("MaybeMasked can be called with a generic if `mode` is not set to `unmask`"
|
|
|
189
189
|
bench(prefix + "Result generic - instantiations", function () {
|
|
190
190
|
var maybeMasked = arg;
|
|
191
191
|
return maybeMasked;
|
|
192
|
-
}).types();
|
|
192
|
+
}).types([1, "instantiations"]);
|
|
193
193
|
bench(prefix + "Result generic - functionality", function () {
|
|
194
194
|
var maybeMasked = arg;
|
|
195
195
|
expectTypeOf(maybeMasked).toEqualTypeOf(arg);
|
|
@@ -199,7 +199,7 @@ test("MaybeMasked can be called with a generic if `mode` is not set to `unmask`"
|
|
|
199
199
|
bench(prefix + "Result generic - instantiations", function () {
|
|
200
200
|
var maybeMasked = arg;
|
|
201
201
|
return maybeMasked;
|
|
202
|
-
}).types();
|
|
202
|
+
}).types([1, "instantiations"]);
|
|
203
203
|
bench(prefix + "Result generic - functionality", function () {
|
|
204
204
|
var maybeMasked = arg;
|
|
205
205
|
// cannot use unresolved generic with `expectTypeOf` here so we just try an assignment the other way round
|
|
@@ -210,4 +210,13 @@ test("MaybeMasked can be called with a generic if `mode` is not set to `unmask`"
|
|
|
210
210
|
withGenericResult({});
|
|
211
211
|
withGenericDocument({});
|
|
212
212
|
});
|
|
213
|
+
test("Unmasked handles branded primitive types", function (prefix) {
|
|
214
|
+
bench(prefix + "instantiations", function () {
|
|
215
|
+
return {};
|
|
216
|
+
}).types([5, "instantiations"]);
|
|
217
|
+
bench(prefix + "functionality", function () {
|
|
218
|
+
var x = {};
|
|
219
|
+
expectTypeOf(x).branded.toEqualTypeOf();
|
|
220
|
+
});
|
|
221
|
+
});
|
|
213
222
|
//# sourceMappingURL=types.bench.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.bench.js","sourceRoot":"","sources":["../../../src/masking/__benches__/types.bench.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MaybeMasked, Unmasked } from \"../index.js\";\nimport { attest, bench } from \"@ark/attest\";\nimport { expectTypeOf } from \"expect-type\";\nimport type { DeepPartial } from \"../../utilities/index.js\";\n\nimport { setup } from \"@ark/attest\";\nimport type { ContainsFragmentsRefs } from \"../internal/types.js\";\nimport type { TypedDocumentNode } from \"../../index.js\";\n\nsetup({\n updateSnapshots: !process.env.CI,\n});\n\nfunction test(name: string, fn: (name: string) => void) {\n fn(name + \": \");\n}\n\ntype UnrelatedType = {\n __typename: \"Unrelated\";\n} & { \" $fragmentName\"?: \"Unrelated\" } & {\n \" $fragmentRefs\"?: {\n Unrelated: {\n __unrelated: boolean;\n };\n };\n};\n// @ts-ignore\ntype _TypeCacheWarmup = Unmasked<UnrelatedType> | MaybeMasked<UnrelatedType>;\n\ntest(\"unmasks deeply nested fragments\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n JobFieldsFragment: JobFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type JobFieldsFragment = {\n __typename: \"User\";\n job: string;\n } & { \" $fragmentName\"?: \"JobFieldsFragment\" } & {\n \" $fragmentRefs\"?: { CareerFieldsFragment: CareerFieldsFragment };\n };\n\n type CareerFieldsFragment = {\n __typename: \"User\";\n position: string;\n } & { \" $fragmentName\"?: \"CareerFieldsFragment\" };\n\n type Source = UserFieldsFragment;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename: \"User\";\n id: number;\n age: number;\n firstName: string;\n lastName: string;\n job: string;\n position: string;\n }>();\n });\n});\n\ntest(\"unmasks deeply nested fragments\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n jobs: Array<\n {\n __typename: \"Job\";\n id: string;\n title: string;\n } & { \" $fragmentRefs\"?: { JobFieldsFragment: JobFieldsFragment } }\n >;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type JobFieldsFragment = {\n __typename: \"Job\";\n job: string;\n } & { \" $fragmentName\"?: \"JobFieldsFragment\" } & {\n \" $fragmentRefs\"?: { CareerFieldsFragment: CareerFieldsFragment };\n };\n\n type CareerFieldsFragment = {\n __typename: \"Job\";\n position: string;\n } & { \" $fragmentName\"?: \"CareerFieldsFragment\" };\n\n type Source = UserFieldsFragment;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename: \"User\";\n id: number;\n age: number;\n firstName: string;\n lastName: string;\n jobs: Array<{\n __typename: \"Job\";\n id: string;\n title: string;\n job: string;\n position: string;\n }>;\n }>();\n });\n});\n\ntest(\"unmasks deeply nested nullable fragments\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n career:\n | ({\n __typename: \"Job\";\n id: string;\n title: string;\n } & { \" $fragmentRefs\"?: { JobFieldsFragment: JobFieldsFragment } })\n | null;\n jobs: Array<\n | ({\n __typename: \"Job\";\n id: string;\n title: string;\n } & { \" $fragmentRefs\"?: { JobFieldsFragment: JobFieldsFragment } })\n | null\n >;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type JobFieldsFragment = {\n __typename: \"Job\";\n job: string;\n } & { \" $fragmentName\"?: \"JobFieldsFragment\" } & {\n \" $fragmentRefs\"?: { CareerFieldsFragment: CareerFieldsFragment };\n };\n\n type CareerFieldsFragment = {\n __typename: \"Job\";\n position: string;\n } & { \" $fragmentName\"?: \"CareerFieldsFragment\" };\n\n type Source = UserFieldsFragment;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename: \"User\";\n id: number;\n age: number;\n firstName: string;\n lastName: string;\n career: {\n __typename: \"Job\";\n id: string;\n title: string;\n job: string;\n position: string;\n } | null;\n jobs: Array<{\n __typename: \"Job\";\n id: string;\n title: string;\n job: string;\n position: string;\n } | null>;\n }>();\n });\n});\n\ntest(\"unmasks DeepPartial types\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type Source = DeepPartial<UserFieldsFragment>;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename?: \"User\";\n id?: number;\n age?: number;\n firstName?: string;\n lastName?: string;\n }>();\n });\n});\n\ntest(\"Unmasked handles odd types\", (prefix) => {\n bench(prefix + \"empty type instantiations\", () => {\n attest<{}, Unmasked<{}>>();\n }).types([80, \"instantiations\"]);\n\n bench(prefix + \"empty type functionality\", () => {\n expectTypeOf<Unmasked<{}>>().toEqualTypeOf<{}>();\n });\n\n bench(prefix + \"generic record type instantiations\", () => {\n attest<Record<string, any>, Unmasked<Record<string, any>>>();\n }).types([99, \"instantiations\"]);\n\n bench(prefix + \"generic record type functionality\", () => {\n expectTypeOf<Unmasked<Record<string, any>>>().toEqualTypeOf<\n Record<string, any>\n >();\n });\n\n bench(prefix + \"unknown instantiations\", () => {\n attest<unknown, Unmasked<unknown>>();\n }).types([47, \"instantiations\"]);\n\n bench(prefix + \"unknown functionality\", () => {\n expectTypeOf<Unmasked<unknown>>().toBeUnknown();\n });\n\n bench(prefix + \"any instantiations\", () => {\n attest<any, Unmasked<any>>();\n }).types([48, \"instantiations\"]);\n\n bench(prefix + \"any functionality\", () => {\n expectTypeOf<Unmasked<any>>().toBeAny();\n });\n});\n\ntest(\"MaybeMasked handles odd types\", (prefix) => {\n bench(prefix + \"empty type instantiations\", () => {\n attest<{}, MaybeMasked<{}>>();\n }).types([76, \"instantiations\"]);\n\n bench(prefix + \"empty type functionality\", () => {\n expectTypeOf<MaybeMasked<{}>>().toEqualTypeOf<{}>();\n });\n\n bench(prefix + \"generic record type instantiations\", () => {\n attest<Record<string, any>, MaybeMasked<Record<string, any>>>();\n }).types([93, \"instantiations\"]);\n bench(prefix + \"generic record type functionality\", () => {\n expectTypeOf<MaybeMasked<Record<string, any>>>().toEqualTypeOf<\n Record<string, any>\n >();\n });\n\n bench(prefix + \"unknown instantiations\", () => {\n attest<unknown, MaybeMasked<unknown>>();\n }).types([54, \"instantiations\"]);\n bench(prefix + \"unknown functionality\", () => {\n expectTypeOf<MaybeMasked<unknown>>().toBeUnknown();\n });\n\n bench(prefix + \"any instantiations\", () => {\n attest<any, MaybeMasked<any>>();\n }).types([49, \"instantiations\"]);\n bench(prefix + \"any functionality\", () => {\n expectTypeOf<MaybeMasked<any>>().toBeAny();\n });\n});\n\ntest(\"distributed members on MaybeMasked\", (prefix) => {\n (function unresolvedGeneric<T>() {\n bench(prefix + \"one unresolved generic mixed with null|undefined\", () => {\n attest<\n [MaybeMasked<T> | null | undefined],\n [MaybeMasked<T | null | undefined>]\n >();\n }).types([55, \"instantiations\"]);\n })();\n\n (function unresolvedGenerics<T, V>() {\n bench(prefix + \"two unresolved generics distribute\", () => {\n attest<[MaybeMasked<T> | MaybeMasked<V>], [MaybeMasked<T | V>]>();\n }).types([61, \"instantiations\"]);\n })();\n});\n\ntest(\"deals with overlapping array from parent fragment\", (prefix) => {\n type Source = {\n __typename: \"Track\";\n /** comment: id */\n id: number;\n /** comment: artists */\n artists?: Array<{\n __typename: \"Artist\";\n /** comment: artists.id */\n id: number;\n \" $fragmentRefs\"?: {\n ArtistFragment: ArtistFragment;\n };\n }> | null;\n \" $fragmentRefs\"?: {\n NestedTrackFragment: NestedTrackFragment;\n };\n };\n\n type ArtistFragment = {\n \" $fragmentName\"?: \"Fragment__Artist\";\n __typename: \"Artist\";\n /** comment: artists.birthday */\n birthdate: string;\n };\n\n type NestedTrackFragment = {\n \" $fragmentName\"?: \"Fragment__Track\";\n __typename: \"Track\";\n artists?: Array<{\n __typename: \"Artist\";\n /** comment: artists.lastname */\n lastname: string;\n }> | null;\n };\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n // some fields for hovering\n x.id;\n x.artists;\n x.artists?.[0]?.id;\n x.artists?.[0]?.birthdate;\n x.artists?.[0]?.lastname;\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Track\";\n id: number;\n artists?:\n | Array<{\n __typename: \"Artist\";\n id: number;\n birthdate: string;\n lastname: string;\n }>\n | null\n | undefined;\n }>();\n });\n});\n\ntest(\"base type, multiple fragments on sub-types\", (prefix) => {\n type Source = {\n __typename: \"Track\";\n id: number;\n artists?: Array<{\n __typename: \"Person\" | \"Animatronic\" | \"CartoonCharacter\";\n id: number;\n name: string;\n \" $fragmentRefs\"?: {\n PersonFragment: PersonFragment;\n AnimatronicFragment: AnimatronicFragment;\n CartoonCharacterFragment: CartoonCharacterFragment;\n };\n }> | null;\n };\n\n type PersonFragment = {\n \" $fragmentName\"?: \"Fragment__Person\";\n __typename: \"Person\";\n birthdate: string;\n };\n type AnimatronicFragment = {\n \" $fragmentName\"?: \"Fragment__Animatronic\";\n __typename: \"Animatronic\";\n manufacturer: string;\n warrantyEndDate: string;\n };\n type CartoonCharacterFragment = {\n \" $fragmentName\"?: \"Fragment__CartoonCharacter\";\n __typename: \"CartoonCharacter\";\n animator: string;\n voiceActor: string;\n };\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Track\";\n id: number;\n artists?:\n | Array<\n | {\n __typename: \"Person\";\n id: number;\n name: string;\n birthdate: string;\n }\n | {\n __typename: \"Animatronic\";\n id: number;\n name: string;\n manufacturer: string;\n warrantyEndDate: string;\n }\n | {\n __typename: \"CartoonCharacter\";\n id: number;\n name: string;\n animator: string;\n voiceActor: string;\n }\n >\n | null\n | undefined;\n }>();\n });\n});\n\ntest(\"does not detect `$fragmentRefs` if type contains `any`\", (prefix) => {\n interface Source {\n foo: { bar: any[] };\n \" $fragmentName\": \"foo\";\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([6, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"leaves tuples alone\", (prefix) => {\n interface Source {\n coords: [long: number, lat: number];\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<{\n coords: [long: number, lat: number];\n }>();\n });\n});\n\ntest(\"does not detect `$fragmentRefs` if type is a record type\", (prefix) => {\n interface MetadataItem {\n foo: string;\n }\n\n interface Source {\n metadata: Record<string, MetadataItem>;\n \" $fragmentName\": \"Source\";\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([6, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"does not detect `$fragmentRefs` on types with index signatures\", (prefix) => {\n interface Source {\n foo: string;\n \" $fragmentName\": \"Source\";\n [key: string]: string;\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([6, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"detects `$fragmentRefs` on types with index signatures\", (prefix) => {\n type Source = {\n __typename: \"Foo\";\n id: number;\n metadata: Record<string, number>;\n structuredMetadata: StructuredMetadata;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n FooFragment: FooFragment;\n };\n };\n\n interface StructuredMetadata {\n bar: number;\n [index: string]: number;\n }\n\n type FooFragment = {\n __typename: \"Foo\";\n foo: string;\n } & { \" $fragmentName\"?: \"FooFragment\" };\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([6, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n const y = {} as ContainsFragmentsRefs<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Foo\";\n id: number;\n metadata: Record<string, number>;\n foo: string;\n structuredMetadata: StructuredMetadata;\n }>();\n expectTypeOf(y).toEqualTypeOf<true>();\n });\n});\n\ntest(\"recursive types: no error 'Type instantiation is excessively deep and possibly infinite.'\", (prefix) => {\n // this type is self-recursive\n type Source = import(\"graphql\").IntrospectionQuery;\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([6, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"MaybeMasked can be called with a generic if `mode` is not set to `unmask`\", (prefix) => {\n function withGenericResult<T extends { [key: string]: string }>(\n arg: TypedDocumentNode<T, {}>\n ) {\n bench(prefix + \"Result generic - instantiations\", () => {\n const maybeMasked: MaybeMasked<typeof arg> = arg;\n return maybeMasked;\n }).types();\n\n bench(prefix + \"Result generic - functionality\", () => {\n const maybeMasked: MaybeMasked<typeof arg> = arg;\n expectTypeOf(maybeMasked).toEqualTypeOf(arg);\n });\n }\n function withGenericDocument<T extends TypedDocumentNode>(arg: T) {\n bench(prefix + \"Result generic - instantiations\", () => {\n const maybeMasked: MaybeMasked<T> = arg;\n return maybeMasked;\n }).types();\n\n bench(prefix + \"Result generic - functionality\", () => {\n const maybeMasked: MaybeMasked<T> = arg;\n // cannot use unresolved generic with `expectTypeOf` here so we just try an assignment the other way round\n const test: T = maybeMasked;\n return test;\n });\n }\n withGenericResult({} as any);\n withGenericDocument({} as any);\n});\n"]}
|
|
1
|
+
{"version":3,"file":"types.bench.js","sourceRoot":"","sources":["../../../src/masking/__benches__/types.bench.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,KAAK,CAAC;IACJ,eAAe,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;CACjC,CAAC,CAAC;AAEH,SAAS,IAAI,CAAC,IAAY,EAAE,EAA0B;IACpD,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAClB,CAAC;AAcD,IAAI,CAAC,iCAAiC,EAAE,UAAC,MAAM;IAgC7C,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,YAAY,EAAoB,CAAC,aAAa,EAQ1C,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,UAAC,MAAM;IAsC7C,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,YAAY,EAAoB,CAAC,aAAa,EAa1C,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,UAAC,MAAM;IA8CtD,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,YAAY,EAAoB,CAAC,aAAa,EAoB1C,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,UAAC,MAAM;IAmBvC,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,YAAY,EAAoB,CAAC,aAAa,EAM1C,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,UAAC,MAAM;IACxC,KAAK,CAAC,MAAM,GAAG,2BAA2B,EAAE;QAC1C,MAAM,EAAoB,CAAC;IAC7B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAElC,KAAK,CAAC,MAAM,GAAG,0BAA0B,EAAE;QACzC,YAAY,EAAgB,CAAC,aAAa,EAAM,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,oCAAoC,EAAE;QACnD,MAAM,EAAsD,CAAC;IAC/D,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAElC,KAAK,CAAC,MAAM,GAAG,mCAAmC,EAAE;QAClD,YAAY,EAAiC,CAAC,aAAa,EAExD,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,wBAAwB,EAAE;QACvC,MAAM,EAA8B,CAAC;IACvC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEjC,KAAK,CAAC,MAAM,GAAG,uBAAuB,EAAE;QACtC,YAAY,EAAqB,CAAC,WAAW,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,oBAAoB,EAAE;QACnC,MAAM,EAAsB,CAAC;IAC/B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEjC,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE;QAClC,YAAY,EAAiB,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,UAAC,MAAM;IAC3C,KAAK,CAAC,MAAM,GAAG,2BAA2B,EAAE;QAC1C,MAAM,EAAuB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEjC,KAAK,CAAC,MAAM,GAAG,0BAA0B,EAAE;QACzC,YAAY,EAAmB,CAAC,aAAa,EAAM,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,oCAAoC,EAAE;QACnD,MAAM,EAAyD,CAAC;IAClE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,MAAM,GAAG,mCAAmC,EAAE;QAClD,YAAY,EAAoC,CAAC,aAAa,EAE3D,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,wBAAwB,EAAE;QACvC,MAAM,EAAiC,CAAC;IAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,MAAM,GAAG,uBAAuB,EAAE;QACtC,YAAY,EAAwB,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,GAAG,oBAAoB,EAAE;QACnC,MAAM,EAAyB,CAAC;IAClC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,MAAM,GAAG,mBAAmB,EAAE;QAClC,YAAY,EAAoB,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oCAAoC,EAAE,UAAC,MAAM;IAChD,CAAC,SAAS,iBAAiB;QACzB,KAAK,CAAC,MAAM,GAAG,kDAAkD,EAAE;YACjE,MAAM,EAGH,CAAC;QACN,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC;IAEL,CAAC,SAAS,kBAAkB;QAC1B,KAAK,CAAC,MAAM,GAAG,oCAAoC,EAAE;YACnD,MAAM,EAA2D,CAAC;QACpE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,UAAC,MAAM;IAoC/D,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;;QAC9B,IAAM,CAAC,GAAG,EAAsB,CAAC;QACjC,2BAA2B;QAC3B,CAAC,CAAC,EAAE,CAAC;QACL,CAAC,CAAC,OAAO,CAAC;QACV,MAAA,MAAA,CAAC,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,EAAE,CAAC;QACnB,MAAA,MAAA,CAAC,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,SAAS,CAAC;QAC1B,MAAA,MAAA,CAAC,CAAC,OAAO,0CAAG,CAAC,CAAC,0CAAE,QAAQ,CAAC;QACzB,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAYjC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,UAAC,MAAM;IAkCxD,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAsB,CAAC;QACjC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EA4BjC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,UAAC,MAAM;IAMpE,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAyB,CAAC;IACnC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAyB,CAAC;QAEpC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,UAAC,MAAM;IAKjC,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAsB,CAAC;QAEjC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAEjC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,UAAC,MAAM;IAUtE,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAyB,CAAC;IACnC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAyB,CAAC;QAEpC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,UAAC,MAAM;IAO5E,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAyB,CAAC;IACnC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAyB,CAAC;QAEpC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,UAAC,MAAM;IAsBpE,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAyB,CAAC;IACnC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAsB,CAAC;QACjC,IAAM,CAAC,GAAG,EAAmC,CAAC;QAE9C,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAMjC,CAAC;QACL,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,EAAQ,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2FAA2F,EAAE,UAAC,MAAM;IAIvG,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAyB,CAAC;IACnC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAyB,CAAC;QAEpC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAU,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,UAAC,MAAM;IACvF,SAAS,iBAAiB,CACxB,GAA6B;QAE7B,KAAK,CAAC,MAAM,GAAG,iCAAiC,EAAE;YAChD,IAAM,WAAW,GAA4B,GAAG,CAAC;YACjD,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAEhC,KAAK,CAAC,MAAM,GAAG,gCAAgC,EAAE;YAC/C,IAAM,WAAW,GAA4B,GAAG,CAAC;YACjD,YAAY,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IACD,SAAS,mBAAmB,CAA8B,GAAM;QAC9D,KAAK,CAAC,MAAM,GAAG,iCAAiC,EAAE;YAChD,IAAM,WAAW,GAAmB,GAAG,CAAC;YACxC,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAEhC,KAAK,CAAC,MAAM,GAAG,gCAAgC,EAAE;YAC/C,IAAM,WAAW,GAAmB,GAAG,CAAC;YACxC,0GAA0G;YAC1G,IAAM,IAAI,GAAM,WAAW,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IACD,iBAAiB,CAAC,EAAS,CAAC,CAAC;IAC7B,mBAAmB,CAAC,EAAS,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,UAAC,MAAM;IAiBtD,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE;QAC/B,OAAO,EAAsB,CAAC;IAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEhC,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE;QAC9B,IAAM,CAAC,GAAG,EAAsB,CAAC;QAEjC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAKjC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { MaybeMasked, Unmasked } from \"../index.js\";\nimport { attest, bench } from \"@ark/attest\";\nimport { expectTypeOf } from \"expect-type\";\nimport type { DeepPartial } from \"../../utilities/index.js\";\n\nimport { setup } from \"@ark/attest\";\nimport type { ContainsFragmentsRefs } from \"../internal/types.js\";\nimport type { TypedDocumentNode } from \"../../index.js\";\n\nsetup({\n updateSnapshots: !process.env.CI,\n});\n\nfunction test(name: string, fn: (name: string) => void) {\n fn(name + \": \");\n}\n\ntype UnrelatedType = {\n __typename: \"Unrelated\";\n} & { \" $fragmentName\"?: \"Unrelated\" } & {\n \" $fragmentRefs\"?: {\n Unrelated: {\n __unrelated: boolean;\n };\n };\n};\n// @ts-ignore\ntype _TypeCacheWarmup = Unmasked<UnrelatedType> | MaybeMasked<UnrelatedType>;\n\ntest(\"unmasks deeply nested fragments\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n JobFieldsFragment: JobFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type JobFieldsFragment = {\n __typename: \"User\";\n job: string;\n } & { \" $fragmentName\"?: \"JobFieldsFragment\" } & {\n \" $fragmentRefs\"?: { CareerFieldsFragment: CareerFieldsFragment };\n };\n\n type CareerFieldsFragment = {\n __typename: \"User\";\n position: string;\n } & { \" $fragmentName\"?: \"CareerFieldsFragment\" };\n\n type Source = UserFieldsFragment;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename: \"User\";\n id: number;\n age: number;\n firstName: string;\n lastName: string;\n job: string;\n position: string;\n }>();\n });\n});\n\ntest(\"unmasks deeply nested fragments\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n jobs: Array<\n {\n __typename: \"Job\";\n id: string;\n title: string;\n } & { \" $fragmentRefs\"?: { JobFieldsFragment: JobFieldsFragment } }\n >;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type JobFieldsFragment = {\n __typename: \"Job\";\n job: string;\n } & { \" $fragmentName\"?: \"JobFieldsFragment\" } & {\n \" $fragmentRefs\"?: { CareerFieldsFragment: CareerFieldsFragment };\n };\n\n type CareerFieldsFragment = {\n __typename: \"Job\";\n position: string;\n } & { \" $fragmentName\"?: \"CareerFieldsFragment\" };\n\n type Source = UserFieldsFragment;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename: \"User\";\n id: number;\n age: number;\n firstName: string;\n lastName: string;\n jobs: Array<{\n __typename: \"Job\";\n id: string;\n title: string;\n job: string;\n position: string;\n }>;\n }>();\n });\n});\n\ntest(\"unmasks deeply nested nullable fragments\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n career:\n | ({\n __typename: \"Job\";\n id: string;\n title: string;\n } & { \" $fragmentRefs\"?: { JobFieldsFragment: JobFieldsFragment } })\n | null;\n jobs: Array<\n | ({\n __typename: \"Job\";\n id: string;\n title: string;\n } & { \" $fragmentRefs\"?: { JobFieldsFragment: JobFieldsFragment } })\n | null\n >;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type JobFieldsFragment = {\n __typename: \"Job\";\n job: string;\n } & { \" $fragmentName\"?: \"JobFieldsFragment\" } & {\n \" $fragmentRefs\"?: { CareerFieldsFragment: CareerFieldsFragment };\n };\n\n type CareerFieldsFragment = {\n __typename: \"Job\";\n position: string;\n } & { \" $fragmentName\"?: \"CareerFieldsFragment\" };\n\n type Source = UserFieldsFragment;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename: \"User\";\n id: number;\n age: number;\n firstName: string;\n lastName: string;\n career: {\n __typename: \"Job\";\n id: string;\n title: string;\n job: string;\n position: string;\n } | null;\n jobs: Array<{\n __typename: \"Job\";\n id: string;\n title: string;\n job: string;\n position: string;\n } | null>;\n }>();\n });\n});\n\ntest(\"unmasks DeepPartial types\", (prefix) => {\n type UserFieldsFragment = {\n __typename: \"User\";\n id: number;\n age: number;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n NameFieldsFragment: NameFieldsFragment;\n };\n };\n\n type NameFieldsFragment = {\n __typename: \"User\";\n firstName: string;\n lastName: string;\n } & { \" $fragmentName\"?: \"NameFieldsFragment\" };\n\n type Source = DeepPartial<UserFieldsFragment>;\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n expectTypeOf<Unmasked<Source>>().toEqualTypeOf<{\n __typename?: \"User\";\n id?: number;\n age?: number;\n firstName?: string;\n lastName?: string;\n }>();\n });\n});\n\ntest(\"Unmasked handles odd types\", (prefix) => {\n bench(prefix + \"empty type instantiations\", () => {\n attest<{}, Unmasked<{}>>();\n }).types([111, \"instantiations\"]);\n\n bench(prefix + \"empty type functionality\", () => {\n expectTypeOf<Unmasked<{}>>().toEqualTypeOf<{}>();\n });\n\n bench(prefix + \"generic record type instantiations\", () => {\n attest<Record<string, any>, Unmasked<Record<string, any>>>();\n }).types([115, \"instantiations\"]);\n\n bench(prefix + \"generic record type functionality\", () => {\n expectTypeOf<Unmasked<Record<string, any>>>().toEqualTypeOf<\n Record<string, any>\n >();\n });\n\n bench(prefix + \"unknown instantiations\", () => {\n attest<unknown, Unmasked<unknown>>();\n }).types([47, \"instantiations\"]);\n\n bench(prefix + \"unknown functionality\", () => {\n expectTypeOf<Unmasked<unknown>>().toBeUnknown();\n });\n\n bench(prefix + \"any instantiations\", () => {\n attest<any, Unmasked<any>>();\n }).types([48, \"instantiations\"]);\n\n bench(prefix + \"any functionality\", () => {\n expectTypeOf<Unmasked<any>>().toBeAny();\n });\n});\n\ntest(\"MaybeMasked handles odd types\", (prefix) => {\n bench(prefix + \"empty type instantiations\", () => {\n attest<{}, MaybeMasked<{}>>();\n }).types([41, \"instantiations\"]);\n\n bench(prefix + \"empty type functionality\", () => {\n expectTypeOf<MaybeMasked<{}>>().toEqualTypeOf<{}>();\n });\n\n bench(prefix + \"generic record type instantiations\", () => {\n attest<Record<string, any>, MaybeMasked<Record<string, any>>>();\n }).types([46, \"instantiations\"]);\n bench(prefix + \"generic record type functionality\", () => {\n expectTypeOf<MaybeMasked<Record<string, any>>>().toEqualTypeOf<\n Record<string, any>\n >();\n });\n\n bench(prefix + \"unknown instantiations\", () => {\n attest<unknown, MaybeMasked<unknown>>();\n }).types([41, \"instantiations\"]);\n bench(prefix + \"unknown functionality\", () => {\n expectTypeOf<MaybeMasked<unknown>>().toBeUnknown();\n });\n\n bench(prefix + \"any instantiations\", () => {\n attest<any, MaybeMasked<any>>();\n }).types([43, \"instantiations\"]);\n bench(prefix + \"any functionality\", () => {\n expectTypeOf<MaybeMasked<any>>().toBeAny();\n });\n});\n\ntest(\"distributed members on MaybeMasked\", (prefix) => {\n (function unresolvedGeneric<T>() {\n bench(prefix + \"one unresolved generic mixed with null|undefined\", () => {\n attest<\n [MaybeMasked<T> | null | undefined],\n [MaybeMasked<T | null | undefined>]\n >();\n }).types([49, \"instantiations\"]);\n })();\n\n (function unresolvedGenerics<T, V>() {\n bench(prefix + \"two unresolved generics distribute\", () => {\n attest<[MaybeMasked<T> | MaybeMasked<V>], [MaybeMasked<T | V>]>();\n }).types([50, \"instantiations\"]);\n })();\n});\n\ntest(\"deals with overlapping array from parent fragment\", (prefix) => {\n type Source = {\n __typename: \"Track\";\n /** comment: id */\n id: number;\n /** comment: artists */\n artists?: Array<{\n __typename: \"Artist\";\n /** comment: artists.id */\n id: number;\n \" $fragmentRefs\"?: {\n ArtistFragment: ArtistFragment;\n };\n }> | null;\n \" $fragmentRefs\"?: {\n NestedTrackFragment: NestedTrackFragment;\n };\n };\n\n type ArtistFragment = {\n \" $fragmentName\"?: \"Fragment__Artist\";\n __typename: \"Artist\";\n /** comment: artists.birthday */\n birthdate: string;\n };\n\n type NestedTrackFragment = {\n \" $fragmentName\"?: \"Fragment__Track\";\n __typename: \"Track\";\n artists?: Array<{\n __typename: \"Artist\";\n /** comment: artists.lastname */\n lastname: string;\n }> | null;\n };\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n // some fields for hovering\n x.id;\n x.artists;\n x.artists?.[0]?.id;\n x.artists?.[0]?.birthdate;\n x.artists?.[0]?.lastname;\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Track\";\n id: number;\n artists?:\n | Array<{\n __typename: \"Artist\";\n id: number;\n birthdate: string;\n lastname: string;\n }>\n | null\n | undefined;\n }>();\n });\n});\n\ntest(\"base type, multiple fragments on sub-types\", (prefix) => {\n type Source = {\n __typename: \"Track\";\n id: number;\n artists?: Array<{\n __typename: \"Person\" | \"Animatronic\" | \"CartoonCharacter\";\n id: number;\n name: string;\n \" $fragmentRefs\"?: {\n PersonFragment: PersonFragment;\n AnimatronicFragment: AnimatronicFragment;\n CartoonCharacterFragment: CartoonCharacterFragment;\n };\n }> | null;\n };\n\n type PersonFragment = {\n \" $fragmentName\"?: \"Fragment__Person\";\n __typename: \"Person\";\n birthdate: string;\n };\n type AnimatronicFragment = {\n \" $fragmentName\"?: \"Fragment__Animatronic\";\n __typename: \"Animatronic\";\n manufacturer: string;\n warrantyEndDate: string;\n };\n type CartoonCharacterFragment = {\n \" $fragmentName\"?: \"Fragment__CartoonCharacter\";\n __typename: \"CartoonCharacter\";\n animator: string;\n voiceActor: string;\n };\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Track\";\n id: number;\n artists?:\n | Array<\n | {\n __typename: \"Person\";\n id: number;\n name: string;\n birthdate: string;\n }\n | {\n __typename: \"Animatronic\";\n id: number;\n name: string;\n manufacturer: string;\n warrantyEndDate: string;\n }\n | {\n __typename: \"CartoonCharacter\";\n id: number;\n name: string;\n animator: string;\n voiceActor: string;\n }\n >\n | null\n | undefined;\n }>();\n });\n});\n\ntest(\"does not detect `$fragmentRefs` if type contains `any`\", (prefix) => {\n interface Source {\n foo: { bar: any[] };\n \" $fragmentName\": \"foo\";\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"leaves tuples alone\", (prefix) => {\n interface Source {\n coords: [long: number, lat: number];\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<{\n coords: [long: number, lat: number];\n }>();\n });\n});\n\ntest(\"does not detect `$fragmentRefs` if type is a record type\", (prefix) => {\n interface MetadataItem {\n foo: string;\n }\n\n interface Source {\n metadata: Record<string, MetadataItem>;\n \" $fragmentName\": \"Source\";\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"does not detect `$fragmentRefs` on types with index signatures\", (prefix) => {\n interface Source {\n foo: string;\n \" $fragmentName\": \"Source\";\n [key: string]: string;\n }\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"detects `$fragmentRefs` on types with index signatures\", (prefix) => {\n type Source = {\n __typename: \"Foo\";\n id: number;\n metadata: Record<string, number>;\n structuredMetadata: StructuredMetadata;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n FooFragment: FooFragment;\n };\n };\n\n interface StructuredMetadata {\n bar: number;\n [index: string]: number;\n }\n\n type FooFragment = {\n __typename: \"Foo\";\n foo: string;\n } & { \" $fragmentName\"?: \"FooFragment\" };\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n const y = {} as ContainsFragmentsRefs<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Foo\";\n id: number;\n metadata: Record<string, number>;\n foo: string;\n structuredMetadata: StructuredMetadata;\n }>();\n expectTypeOf(y).toEqualTypeOf<true>();\n });\n});\n\ntest(\"recursive types: no error 'Type instantiation is excessively deep and possibly infinite.'\", (prefix) => {\n // this type is self-recursive\n type Source = import(\"graphql\").IntrospectionQuery;\n\n bench(prefix + \"instantiations\", () => {\n return {} as MaybeMasked<Source>;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as MaybeMasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<Source>();\n });\n});\n\ntest(\"MaybeMasked can be called with a generic if `mode` is not set to `unmask`\", (prefix) => {\n function withGenericResult<T extends { [key: string]: string }>(\n arg: TypedDocumentNode<T, {}>\n ) {\n bench(prefix + \"Result generic - instantiations\", () => {\n const maybeMasked: MaybeMasked<typeof arg> = arg;\n return maybeMasked;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"Result generic - functionality\", () => {\n const maybeMasked: MaybeMasked<typeof arg> = arg;\n expectTypeOf(maybeMasked).toEqualTypeOf(arg);\n });\n }\n function withGenericDocument<T extends TypedDocumentNode>(arg: T) {\n bench(prefix + \"Result generic - instantiations\", () => {\n const maybeMasked: MaybeMasked<T> = arg;\n return maybeMasked;\n }).types([1, \"instantiations\"]);\n\n bench(prefix + \"Result generic - functionality\", () => {\n const maybeMasked: MaybeMasked<T> = arg;\n // cannot use unresolved generic with `expectTypeOf` here so we just try an assignment the other way round\n const test: T = maybeMasked;\n return test;\n });\n }\n withGenericResult({} as any);\n withGenericDocument({} as any);\n});\n\ntest(\"Unmasked handles branded primitive types\", (prefix) => {\n type Branded<T, Name extends string> = T & { __branded?: Name };\n type UUID = Branded<string, \"UUID\">;\n type Source = {\n __typename: \"Foo\";\n id: UUID;\n name: string;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" } & {\n \" $fragmentRefs\"?: {\n FooFragment: FooFragment;\n };\n };\n type FooFragment = {\n __typename: \"Foo\";\n age: number;\n } & { \" $fragmentName\"?: \"UserFieldsFragment\" };\n\n bench(prefix + \"instantiations\", () => {\n return {} as Unmasked<Source>;\n }).types([5, \"instantiations\"]);\n\n bench(prefix + \"functionality\", () => {\n const x = {} as Unmasked<Source>;\n\n expectTypeOf(x).branded.toEqualTypeOf<{\n __typename: \"Foo\";\n id: UUID;\n name: string;\n age: number;\n }>();\n });\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Prettify, RemoveIndexSignature } from "../../utilities/index.js";
|
|
1
|
+
import type { Prettify, Primitive, RemoveIndexSignature } from "../../utilities/index.js";
|
|
2
2
|
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
3
|
-
export type UnwrapFragmentRefs<TData> = true extends IsAny<TData> ? TData : TData extends any ? string extends keyof TData ? TData : keyof TData extends never ? TData : TData extends {
|
|
3
|
+
export type UnwrapFragmentRefs<TData> = true extends IsAny<TData> ? TData : TData extends any ? TData extends Primitive ? TData : string extends keyof TData ? TData : keyof TData extends never ? TData : TData extends {
|
|
4
4
|
" $fragmentRefs"?: infer FragmentRefs;
|
|
5
5
|
} ? UnwrapFragmentRefs<CombineIntersection<Omit<TData, " $fragmentRefs"> | RemoveFragmentName<NonNullable<NonNullable<FragmentRefs>[keyof NonNullable<FragmentRefs>]>>>> : TData extends object ? {
|
|
6
6
|
[K in keyof TData]: UnwrapFragmentRefs<TData[K]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/masking/internal/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/masking/internal/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n Prettify,\n Primitive,\n RemoveIndexSignature,\n} from \"../../utilities/index.js\";\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false;\n\nexport type UnwrapFragmentRefs<TData> =\n true extends IsAny<TData> ? TData\n : TData extends any ?\n // Ensure tagged/branded types are left alone (i.e. type UUID = string & { ... })\n TData extends Primitive ? TData\n : // Leave TData alone if it is Record<string, any> and not a specific shape\n string extends keyof TData ? TData\n : // short-circuit on empty object\n keyof TData extends never ? TData\n : TData extends { \" $fragmentRefs\"?: infer FragmentRefs } ?\n UnwrapFragmentRefs<\n CombineIntersection<\n | Omit<TData, \" $fragmentRefs\">\n | RemoveFragmentName<\n NonNullable<\n NonNullable<FragmentRefs>[keyof NonNullable<FragmentRefs>]\n >\n >\n >\n >\n : TData extends object ?\n {\n [K in keyof TData]: UnwrapFragmentRefs<TData[K]>;\n }\n : TData\n : never;\n\n/**\n```ts\nCombineIntersection<\n | { foo: string }\n | { __typename: \"A\"; a: string }\n | { __typename: \"B\"; b1: number }\n | { __typename: \"B\"; b2: string }\n> =>\n | { foo: string }\n | CombineByTypeName<\n | { __typename: \"A\"; a: string }\n | { __typename: \"B\"; b1: number }\n | { __typename: \"B\"; b2: string }\n >\n```\n */\ntype CombineIntersection<T> =\n | Exclude<T, { __typename?: string }>\n | CombineByTypeName<Extract<T, { __typename?: string }>>;\n/**\n```ts\n CombineByTypeName<\n | { __typename: \"A\"; a: string }\n | { __typename: \"B\"; b1: number }\n | { __typename: \"B\"; b2: string }\n > =>\n | CombineWithArrays<\n | { __typename: \"A\"; a: string }\n >\n | CombineWithArrays<\n | { __typename: \"B\"; b1: number }\n | { __typename: \"B\"; b2: number }\n >\n```\n */\ntype CombineByTypeName<T extends { __typename?: string }> = {\n [TypeName in NonNullable<T[\"__typename\"]>]: Prettify<\n MergeUnions<ExtractByMatchingTypeNames<T, TypeName>>\n >;\n}[NonNullable<T[\"__typename\"]>];\n\n/**\n```ts\nCombineByTypeName<\n | {\n __typename: \"Person\" | \"Animatronic\" | \"CartoonCharacter\";\n id: number;\n name: string;\n }\n | {\n __typename: \"Person\";\n birthdate: string;\n }\n | {\n __typename: \"Animatronic\";\n manufacturer: string;\n warrantyEndDate: string;\n }\n | {\n __typename: \"CartoonCharacter\";\n animator: string;\n voiceActor: string;\n }\n>\n =>\n{\n id: number;\n name: string;\n __typename: \"Person\";\n birthdate: string;\n} | {\n id: number;\n name: string;\n __typename: \"Animatronic\";\n manufacturer: string;\n warrantyEndDate: string;\n} | {\n id: number;\n name: string;\n __typename: \"CartoonCharacter\";\n animator: string;\n voiceActor: string;\n}\n```\n */\ntype ExtractByMatchingTypeNames<\n Union extends { __typename?: string },\n TypeName extends string,\n> = Union extends any ?\n TypeName extends NonNullable<Union[\"__typename\"]> ?\n Omit<Union, \"__typename\"> & {\n // preserve `?`, which `& { __typename: TypeName }` would not do\n [K in keyof Union as K extends \"__typename\" ? K : never]: TypeName;\n }\n : never\n: never;\n\ntype MergeUnions<TUnion> = MergeUnionsAcc<\n TUnion,\n takeOneFromUnion<TUnion>,\n never\n>;\n\ntype DistributedRequiredExclude<T, U> =\n T extends any ?\n Required<T> extends Required<U> ?\n Required<U> extends Required<T> ?\n never\n : T\n : T\n : T;\n\ntype MergeUnionsAcc<TUnion, Curr, Merged> =\n [Curr] extends [never] ? Merged\n : MergeUnionsAcc<\n DistributedRequiredExclude<TUnion, Curr>,\n takeOneFromUnion<DistributedRequiredExclude<TUnion, Curr>>,\n [Merged] extends [never] ? Curr : MergeObjects<Curr, Merged>\n >;\ntype unionToIntersection<T> =\n (T extends unknown ? (x: T) => unknown : never) extends (\n (x: infer U) => unknown\n ) ?\n U\n : never;\n\ntype takeOneFromUnion<T> =\n unionToIntersection<T extends T ? (x: T) => 0 : never> extends (\n (x: infer U) => 0\n ) ?\n U\n : never;\n\ntype MergeObjects<T, U> = Prettify<\n {\n [k in keyof T]: k extends keyof U ?\n [NonNullable<T[k]>, NonNullable<U[k]>] extends (\n [infer TK extends object, infer UK extends object]\n ) ?\n TK extends unknown[] ?\n UK extends unknown[] ?\n | CombineIntersection<TK[number] | UK[number]>[]\n | Extract<T[k] | U[k], undefined | null>\n : T[k]\n : CombineIntersection<TK | UK> | Extract<T[k] | U[k], undefined | null>\n : T[k]\n : T[k];\n } & Pick<U, Exclude<keyof U, keyof T>>\n>;\n\nexport type RemoveMaskedMarker<T> = Omit<T, \"__masked\">;\n// force distrubution when T is a union with | undefined\nexport type RemoveFragmentName<T> =\n T extends any ? Omit<T, \" $fragmentName\"> : T;\n\ntype Exact<in out T> = (x: T) => T;\nexport type ContainsFragmentsRefs<TData, Seen = never> = true extends (\n IsAny<TData>\n) ?\n false\n: TData extends object ?\n Exact<TData> extends Seen ? false\n : \" $fragmentRefs\" extends keyof RemoveIndexSignature<TData> ? true\n : ContainsFragmentsRefs<TData[keyof TData], Seen | Exact<TData>>\n: false;\n"]}
|
package/masking/types.d.ts
CHANGED
|
@@ -36,11 +36,11 @@ export type MaybeMasked<TData> = DataMasking extends {
|
|
|
36
36
|
mode: "unmask";
|
|
37
37
|
} ? TData extends any ? true extends IsAny<TData> ? TData : TData extends {
|
|
38
38
|
__masked?: true;
|
|
39
|
-
} ? Prettify<RemoveMaskedMarker<TData>> :
|
|
39
|
+
} ? Prettify<RemoveMaskedMarker<TData>> : Unmasked<TData> : never : DataMasking extends {
|
|
40
40
|
mode: "preserveTypes";
|
|
41
41
|
} ? TData : TData;
|
|
42
42
|
/**
|
|
43
43
|
* Unmasks a type to provide its full result.
|
|
44
44
|
*/
|
|
45
|
-
export type Unmasked<TData> = true extends IsAny<TData> ? TData : TData extends object ? UnwrapFragmentRefs<RemoveMaskedMarker<RemoveFragmentName<TData>>> : TData;
|
|
45
|
+
export type Unmasked<TData> = true extends IsAny<TData> ? TData : TData extends object ? true extends ContainsFragmentsRefs<TData> ? UnwrapFragmentRefs<RemoveMaskedMarker<RemoveFragmentName<TData>>> : TData : TData;
|
|
46
46
|
//# sourceMappingURL=types.d.ts.map
|
package/masking/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/masking/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type {\n ContainsFragmentsRefs,\n IsAny,\n RemoveFragmentName,\n RemoveMaskedMarker,\n UnwrapFragmentRefs,\n} from \"./internal/types.js\";\nimport type { Prettify } from \"../utilities/index.js\";\n\nexport interface DataMasking {}\n\n/**\n * Marks a type as masked. This is used by `MaybeMasked` when determining\n * whether to use the masked or unmasked type.\n */\nexport type Masked<TData> = TData & {\n __masked?: true;\n};\n\n/**\n * Marks a type as masked. This is a shortcut for\n * `TypedDocumentNode<Masked<TData>, TVariables>`\n */\nexport type MaskedDocumentNode<\n TData = { [key: string]: any },\n TVariables = { [key: string]: any },\n> = TypedDocumentNode<Masked<TData>, TVariables>;\n\nexport type FragmentType<TData> =\n [TData] extends [{ \" $fragmentName\"?: infer TKey }] ?\n TKey extends string ?\n { \" $fragmentRefs\"?: { [key in TKey]: TData } }\n : never\n : never;\n\n/**\n * Returns TData as either masked or unmasked depending on whether masking is\n * enabled.\n */\nexport type MaybeMasked<TData> =\n DataMasking extends { mode: \"unmask\" } ?\n // distribute TData - in case of a union, do the next steps for each member\n TData extends any ?\n // prevent \"Type instantiation is excessively deep and possibly infinite.\"\n true extends IsAny<TData> ? TData\n : TData extends { __masked?: true } ? Prettify<RemoveMaskedMarker<TData>>\n :
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/masking/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport type {\n ContainsFragmentsRefs,\n IsAny,\n RemoveFragmentName,\n RemoveMaskedMarker,\n UnwrapFragmentRefs,\n} from \"./internal/types.js\";\nimport type { Prettify } from \"../utilities/index.js\";\n\nexport interface DataMasking {}\n\n/**\n * Marks a type as masked. This is used by `MaybeMasked` when determining\n * whether to use the masked or unmasked type.\n */\nexport type Masked<TData> = TData & {\n __masked?: true;\n};\n\n/**\n * Marks a type as masked. This is a shortcut for\n * `TypedDocumentNode<Masked<TData>, TVariables>`\n */\nexport type MaskedDocumentNode<\n TData = { [key: string]: any },\n TVariables = { [key: string]: any },\n> = TypedDocumentNode<Masked<TData>, TVariables>;\n\nexport type FragmentType<TData> =\n [TData] extends [{ \" $fragmentName\"?: infer TKey }] ?\n TKey extends string ?\n { \" $fragmentRefs\"?: { [key in TKey]: TData } }\n : never\n : never;\n\n/**\n * Returns TData as either masked or unmasked depending on whether masking is\n * enabled.\n */\nexport type MaybeMasked<TData> =\n DataMasking extends { mode: \"unmask\" } ?\n // distribute TData - in case of a union, do the next steps for each member\n TData extends any ?\n // prevent \"Type instantiation is excessively deep and possibly infinite.\"\n true extends IsAny<TData> ? TData\n : TData extends { __masked?: true } ? Prettify<RemoveMaskedMarker<TData>>\n : Unmasked<TData>\n : never\n : DataMasking extends { mode: \"preserveTypes\" } ? TData\n : TData;\n\n/**\n * Unmasks a type to provide its full result.\n */\nexport type Unmasked<TData> =\n true extends IsAny<TData> ? TData\n : TData extends object ?\n true extends ContainsFragmentsRefs<TData> ?\n UnwrapFragmentRefs<RemoveMaskedMarker<RemoveFragmentName<TData>>>\n : TData\n : TData;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apollo/client",
|
|
3
|
-
"version": "3.12.
|
|
3
|
+
"version": "3.12.7",
|
|
4
4
|
"description": "A fully-featured caching GraphQL client.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"keywords": [
|
|
@@ -68,20 +68,23 @@
|
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@arethetypeswrong/cli": "0.15.3",
|
|
71
|
-
"@ark/attest": "
|
|
71
|
+
"@ark/attest": "0.28.0",
|
|
72
72
|
"@babel/parser": "7.25.0",
|
|
73
73
|
"@changesets/changelog-github": "0.5.0",
|
|
74
74
|
"@changesets/cli": "2.27.7",
|
|
75
|
+
"@eslint/compat": "1.2.5",
|
|
76
|
+
"@eslint/eslintrc": "3.2.0",
|
|
77
|
+
"@eslint/js": "9.18.0",
|
|
75
78
|
"@graphql-tools/merge": "9.0.4",
|
|
76
79
|
"@graphql-tools/schema": "10.0.4",
|
|
77
80
|
"@graphql-tools/utils": "10.5.0",
|
|
78
|
-
"@microsoft/api-extractor": "7.
|
|
81
|
+
"@microsoft/api-extractor": "7.49.1",
|
|
79
82
|
"@rollup/plugin-node-resolve": "11.2.1",
|
|
80
83
|
"@size-limit/esbuild-why": "11.1.4",
|
|
81
84
|
"@size-limit/preset-small-lib": "11.1.4",
|
|
82
|
-
"@testing-library/dom": "
|
|
85
|
+
"@testing-library/dom": "10.4.0",
|
|
83
86
|
"@testing-library/jest-dom": "6.6.3",
|
|
84
|
-
"@testing-library/react": "
|
|
87
|
+
"@testing-library/react": "16.1.0",
|
|
85
88
|
"@testing-library/react-render-stream": "2.0.0",
|
|
86
89
|
"@testing-library/user-event": "14.5.2",
|
|
87
90
|
"@tsconfig/node20": "20.1.4",
|
|
@@ -91,34 +94,36 @@
|
|
|
91
94
|
"@types/hoist-non-react-statics": "3.3.5",
|
|
92
95
|
"@types/jest": "29.5.12",
|
|
93
96
|
"@types/lodash": "4.17.7",
|
|
94
|
-
"@types/node": "
|
|
97
|
+
"@types/node": "22.10.7",
|
|
95
98
|
"@types/node-fetch": "2.6.11",
|
|
96
|
-
"@types/prop-types": "
|
|
99
|
+
"@types/prop-types": "15.7.14",
|
|
97
100
|
"@types/react": "19.0.0",
|
|
98
101
|
"@types/react-dom": "19.0.0",
|
|
99
102
|
"@types/relay-runtime": "14.1.24",
|
|
100
103
|
"@types/use-sync-external-store": "0.0.6",
|
|
101
|
-
"@typescript-eslint/eslint-plugin": "
|
|
102
|
-
"@typescript-eslint/parser": "
|
|
103
|
-
"@typescript-eslint/rule-tester": "
|
|
104
|
-
"@typescript-eslint/types": "
|
|
105
|
-
"@typescript-eslint/utils": "
|
|
104
|
+
"@typescript-eslint/eslint-plugin": "8.21.0",
|
|
105
|
+
"@typescript-eslint/parser": "8.21.0",
|
|
106
|
+
"@typescript-eslint/rule-tester": "8.21.0",
|
|
107
|
+
"@typescript-eslint/types": "8.21.0",
|
|
108
|
+
"@typescript-eslint/utils": "8.21.0",
|
|
106
109
|
"acorn": "8.12.1",
|
|
107
110
|
"ajv": "8.17.1",
|
|
108
111
|
"blob-polyfill": "7.0.20220408",
|
|
109
112
|
"bytes": "3.1.2",
|
|
110
113
|
"cross-fetch": "4.0.0",
|
|
111
|
-
"eslint": "
|
|
112
|
-
"eslint-import-resolver-typescript": "3.
|
|
114
|
+
"eslint": "9.18.0",
|
|
115
|
+
"eslint-import-resolver-typescript": "3.7.0",
|
|
113
116
|
"eslint-plugin-import": "npm:@phryneas/eslint-plugin-import@2.27.5-pr.2813.2817.199971c",
|
|
114
|
-
"eslint-plugin-local-rules": "
|
|
115
|
-
"eslint-plugin-react-compiler": "
|
|
116
|
-
"eslint-plugin-react-hooks": "
|
|
117
|
-
"eslint-plugin-testing-library": "
|
|
118
|
-
"expect-type": "
|
|
117
|
+
"eslint-plugin-local-rules": "3.0.2",
|
|
118
|
+
"eslint-plugin-react-compiler": "19.0.0-beta-decd7b8-20250118",
|
|
119
|
+
"eslint-plugin-react-hooks": "5.1.0",
|
|
120
|
+
"eslint-plugin-testing-library": "7.1.1",
|
|
121
|
+
"expect-type": "1.1.0",
|
|
119
122
|
"fetch-mock": "9.11.0",
|
|
120
123
|
"glob": "8.1.0",
|
|
124
|
+
"globals": "15.14.0",
|
|
121
125
|
"graphql": "16.9.0",
|
|
126
|
+
"graphql-17-alpha2": "npm:graphql@17.0.0-alpha.2",
|
|
122
127
|
"graphql-ws": "5.16.0",
|
|
123
128
|
"jest": "29.7.0",
|
|
124
129
|
"jest-environment-jsdom": "29.7.0",
|
|
@@ -144,14 +149,14 @@
|
|
|
144
149
|
"size-limit": "11.1.4",
|
|
145
150
|
"subscriptions-transport-ws": "0.11.0",
|
|
146
151
|
"terser": "5.31.3",
|
|
147
|
-
"ts-api-utils": "
|
|
152
|
+
"ts-api-utils": "2.0.0",
|
|
148
153
|
"ts-jest": "29.2.3",
|
|
149
154
|
"ts-jest-resolver": "2.0.1",
|
|
150
|
-
"ts-morph": "
|
|
155
|
+
"ts-morph": "25.0.0",
|
|
151
156
|
"ts-node": "10.9.2",
|
|
152
|
-
"tsx": "
|
|
157
|
+
"tsx": "4.19.2",
|
|
153
158
|
"typedoc": "0.25.0",
|
|
154
|
-
"typescript": "5.
|
|
159
|
+
"typescript": "5.7.3",
|
|
155
160
|
"wait-for-observables": "1.0.3",
|
|
156
161
|
"web-streams-polyfill": "4.0.0",
|
|
157
162
|
"whatwg-fetch": "3.6.20"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { Query } from \"./Query.js\";\nexport { Mutation } from \"./Mutation.js\";\nexport { Subscription } from \"./Subscription.js\";\n\nexport type * from \"./types.js\";\n"]}
|
package/react/hoc/index.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ export { withQuery } from "./query-hoc.js";
|
|
|
4
4
|
export { withMutation } from "./mutation-hoc.js";
|
|
5
5
|
export { withSubscription } from "./subscription-hoc.js";
|
|
6
6
|
export { withApollo } from "./withApollo.js";
|
|
7
|
-
export * from "./types.js";
|
|
7
|
+
export type * from "./types.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/react/hoc/index.js
CHANGED
package/react/hoc/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/hoc/index.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/hoc/index.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC","sourcesContent":["import \"../../utilities/globals/index.js\";\n\nexport { graphql } from \"./graphql.js\";\n\nexport { withQuery } from \"./query-hoc.js\";\nexport { withMutation } from \"./mutation-hoc.js\";\nexport { withSubscription } from \"./subscription-hoc.js\";\nexport { withApollo } from \"./withApollo.js\";\n\nexport type * from \"./types.js\";\n"]}
|