joist-graphql-resolver-utils 1.143.3 → 1.144.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/build/context.d.ts +0 -4
- package/build/context.d.ts.map +1 -1
- package/build/makeRunInputMutation.d.ts +12 -4
- package/build/makeRunInputMutation.d.ts.map +1 -1
- package/build/makeRunInputMutation.js +12 -10
- package/build/makeRunInputMutation.js.map +1 -1
- package/build/makeRunObjectField.d.ts +14 -0
- package/build/makeRunObjectField.d.ts.map +1 -0
- package/build/makeRunObjectField.js +21 -0
- package/build/makeRunObjectField.js.map +1 -0
- package/build/makeRunObjectFields.d.ts +11 -5
- package/build/makeRunObjectFields.d.ts.map +1 -1
- package/build/makeRunObjectFields.js +18 -11
- package/build/makeRunObjectFields.js.map +1 -1
- package/build/makeRunQuery.d.ts +13 -6
- package/build/makeRunQuery.d.ts.map +1 -1
- package/build/makeRunQuery.js +12 -10
- package/build/makeRunQuery.js.map +1 -1
- package/build/saveEntity.d.ts +1 -1
- package/build/saveEntity.d.ts.map +1 -1
- package/build/tests.d.ts +5 -4
- package/build/tests.d.ts.map +1 -1
- package/build/tests.js +21 -6
- package/build/tests.js.map +1 -1
- package/build/typeUtils.d.ts +10 -0
- package/build/typeUtils.d.ts.map +1 -0
- package/build/typeUtils.js +3 -0
- package/build/typeUtils.js.map +1 -0
- package/package.json +3 -3
- package/build/makeRunObject.d.ts +0 -12
- package/build/makeRunObject.d.ts.map +0 -1
- package/build/makeRunObject.js +0 -14
- package/build/makeRunObject.js.map +0 -1
package/build/context.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { GraphQLResolveInfo } from "graphql/type";
|
|
2
|
-
import { EntityManager } from "joist-orm";
|
|
3
2
|
export type MaybePromise<T> = T | Promise<T>;
|
|
4
3
|
export type Resolver<R, A, T> = (root: R, args: A, ctx: any, info: GraphQLResolveInfo) => MaybePromise<T>;
|
|
5
|
-
export type Context = {
|
|
6
|
-
em: EntityManager;
|
|
7
|
-
};
|
|
8
4
|
//# sourceMappingURL=context.d.ts.map
|
package/build/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAG7C,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ResolverResult } from "./
|
|
1
|
+
import { Resolver } from "./context";
|
|
2
|
+
import { ResolverResult, RunFn } from "./typeUtils";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a `makeRunInputMutation` function for each project's `testUtils` file.
|
|
5
|
+
*
|
|
6
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
7
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
8
|
+
*/
|
|
9
|
+
export declare function makeMakeRunInputMutation<C>(runFn: RunFn<C>): MakeRunInputMutation<C>;
|
|
3
10
|
/**
|
|
4
11
|
* Creates a `run` method to invoke a mutation resolver that uses the `input` convention.
|
|
5
12
|
*
|
|
6
13
|
* Following our `mutation / foo` conventions, `resolver` will have a single `fooResolver.foo` method.
|
|
7
14
|
*/
|
|
8
|
-
export
|
|
9
|
-
type RunInputMutationMethod<T> = <I extends MutationInput<T>, R = ResolverResult<T, keyof T>>(ctx:
|
|
15
|
+
export type MakeRunInputMutation<C> = <T extends object>(resolver: T) => RunInputMutationMethod<C, T>;
|
|
16
|
+
type RunInputMutationMethod<C, T> = <I extends MutationInput<T>, R = ResolverResult<T, keyof T>>(ctx: C, input: I | (() => I)) => Promise<R>;
|
|
17
|
+
/** Matches a mutation resolver that has a single `input` field. */
|
|
10
18
|
type MutationInput<T> = T[keyof T] extends Resolver<any, {
|
|
11
19
|
input: infer I;
|
|
12
20
|
}, any> ? I : never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunInputMutation.d.ts","sourceRoot":"","sources":["../src/makeRunInputMutation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"makeRunInputMutation.d.ts","sourceRoot":"","sources":["../src/makeRunInputMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAapF;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtG,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC7F,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KACjB,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB,mEAAmE;AACnE,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const joist_test_utils_1 = require("joist-test-utils");
|
|
3
|
+
exports.makeMakeRunInputMutation = void 0;
|
|
5
4
|
/**
|
|
6
|
-
* Creates a `
|
|
5
|
+
* Creates a `makeRunInputMutation` function for each project's `testUtils` file.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
7
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
8
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
9
9
|
*/
|
|
10
|
-
function
|
|
11
|
-
return (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
function makeMakeRunInputMutation(runFn) {
|
|
11
|
+
return (resolver) => {
|
|
12
|
+
return (ctx, args) => runFn(ctx, async (ctx) => {
|
|
13
|
+
const key = Object.keys(resolver)[0];
|
|
14
|
+
return resolver[key]({}, { input: args instanceof Function ? args() : args ?? {} }, ctx, undefined);
|
|
15
|
+
});
|
|
16
|
+
};
|
|
15
17
|
}
|
|
16
|
-
exports.
|
|
18
|
+
exports.makeMakeRunInputMutation = makeMakeRunInputMutation;
|
|
17
19
|
//# sourceMappingURL=makeRunInputMutation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunInputMutation.js","sourceRoot":"","sources":["../src/makeRunInputMutation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"makeRunInputMutation.js","sourceRoot":"","sources":["../src/makeRunInputMutation.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAI,KAAe;IACzD,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACnB,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,OAAS,QAAgB,CAAC,GAAG,CAAS,CACpC,EAAE,EACF,EAAE,KAAK,EAAE,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,EACzD,GAAG,EACH,SAAU,CACX,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC;AAbD,4DAaC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ResolverArgs, ResolverResult, ResolverRoot, RunFn } from "./typeUtils";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a `makeRunObjectField` function for each project's `testUtils` file.
|
|
4
|
+
*
|
|
5
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
6
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
7
|
+
*/
|
|
8
|
+
export declare function makeMakeRunObjectField<C>(runFn: RunFn<C>): MakeRunObjectField<C>;
|
|
9
|
+
/** Creates a `run` method to invoke a single field resolver with that field's args. */
|
|
10
|
+
export type MakeRunObjectField<C> = <T extends object, R extends ResolverRoot<T>>(resolvers: T) => RunObjectFieldMethod<C, T, R>;
|
|
11
|
+
/** The return type of `makeRunObject`. */
|
|
12
|
+
type RunObjectFieldMethod<C, T, R> = <K extends keyof T, A extends ResolverArgs<T, K>>(ctx: C, root: R, key: K, args?: A | (() => A)) => Promise<ResolverResult<T, K>>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=makeRunObjectField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeRunObjectField.d.ts","sourceRoot":"","sources":["../src/makeRunObjectField.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAShF;AAED,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC9E,SAAS,EAAE,CAAC,KACT,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnC,0CAA0C;AAC1C,KAAK,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACnF,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EAEN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KACjB,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeMakeRunObjectField = void 0;
|
|
4
|
+
const joist_orm_1 = require("joist-orm");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a `makeRunObjectField` function for each project's `testUtils` file.
|
|
7
|
+
*
|
|
8
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
9
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
10
|
+
*/
|
|
11
|
+
function makeMakeRunObjectField(runFn) {
|
|
12
|
+
return (resolvers) => {
|
|
13
|
+
return (ctx, root, key, args) => runFn(ctx, async (ctx) => {
|
|
14
|
+
// Sneak in a Joist-ism that will load the entity in the new em
|
|
15
|
+
const _root = (0, joist_orm_1.isEntity)(root) ? await ctx.em.load(root.id) : root;
|
|
16
|
+
return resolvers[key](_root, args instanceof Function ? args() : args ?? {}, ctx, undefined);
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.makeMakeRunObjectField = makeMakeRunObjectField;
|
|
21
|
+
//# sourceMappingURL=makeRunObjectField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeRunObjectField.js","sourceRoot":"","sources":["../src/makeRunObjectField.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGrC;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAI,KAAe;IACvD,OAAO,CAAC,SAAS,EAAE,EAAE;QACnB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAC9B,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACvB,+DAA+D;YAC/D,MAAM,KAAK,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAO,GAAW,CAAC,EAAE,CAAC,IAAI,CAAE,IAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,OAAQ,SAAS,CAAC,GAAG,CAAS,CAAC,KAAK,EAAE,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,SAAU,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC;AATD,wDASC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { ResolverResult, ResolverRoot, RunFn } from "./typeUtils";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a `makeRunObjectFields` function for each project's `testUtils` file.
|
|
4
|
+
*
|
|
5
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
6
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
7
|
+
*/
|
|
8
|
+
export declare function makeMakeRunObjectFields<C, T>(runFn: RunFn<C>): MakeRunObjectFields<C>;
|
|
9
|
+
/** Creates a `run` method that can invoke multiple fields against an object resolver. */
|
|
10
|
+
export type MakeRunObjectFields<C> = <T, R extends ResolverRoot<T>>(resolvers: T) => RunFieldsResolverMethod<C, T, R>;
|
|
11
|
+
type RunFieldsResolverMethod<C, T, R extends ResolverRoot<T>> = <K extends (keyof T)[]>(ctx: C, root: R, keys: K) => Promise<{
|
|
6
12
|
[k in K[number]]: ResolverResult<T, k>;
|
|
7
13
|
}>;
|
|
8
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunObjectFields.d.ts","sourceRoot":"","sources":["../src/makeRunObjectFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"makeRunObjectFields.d.ts","sourceRoot":"","sources":["../src/makeRunObjectFields.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAarF;AAED,yFAAyF;AACzF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAGtH,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EACpF,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,KACJ,OAAO,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;CAAE,CAAC,CAAC"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.makeMakeRunObjectFields = void 0;
|
|
4
4
|
const joist_orm_1 = require("joist-orm");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Creates a `makeRunObjectFields` function for each project's `testUtils` file.
|
|
7
|
+
*
|
|
8
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
9
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
10
|
+
*/
|
|
11
|
+
function makeMakeRunObjectFields(runFn) {
|
|
12
|
+
return (resolver) => {
|
|
13
|
+
return (ctx, root, fields) => {
|
|
14
|
+
return runFn(ctx, async (ctx) => {
|
|
15
|
+
// Sneak in a Joist-ism that will load the entity in the new em
|
|
16
|
+
const _root = (0, joist_orm_1.isEntity)(root) ? await ctx.em.load(root.id) : root;
|
|
17
|
+
// Build a result with each key, where fields might return a promise, so we `await` to make assertions easier
|
|
18
|
+
return Object.fromEntries(await Promise.all(fields.map(async (key) => [key, await resolver[key](_root, {}, ctx, undefined)])));
|
|
19
|
+
});
|
|
20
|
+
};
|
|
14
21
|
};
|
|
15
22
|
}
|
|
16
|
-
exports.
|
|
23
|
+
exports.makeMakeRunObjectFields = makeMakeRunObjectFields;
|
|
17
24
|
//# sourceMappingURL=makeRunObjectFields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunObjectFields.js","sourceRoot":"","sources":["../src/makeRunObjectFields.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;
|
|
1
|
+
{"version":3,"file":"makeRunObjectFields.js","sourceRoot":"","sources":["../src/makeRunObjectFields.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAGrC;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAO,KAAe;IAC3D,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;YAC3B,OAAO,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC9B,+DAA+D;gBAC/D,MAAM,KAAK,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAO,GAAW,CAAC,EAAE,CAAC,IAAI,CAAE,IAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnF,6GAA6G;gBAC7G,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAO,QAAQ,CAAC,GAAG,CAAS,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,SAAU,CAAC,CAAC,CAAC,CAAC,CAC9G,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAbD,0DAaC"}
|
package/build/makeRunQuery.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ResolverArgs, ResolverResult } from "./makeRunObject";
|
|
1
|
+
import { ResolverArgs, ResolverResult, RunFn } from "./typeUtils";
|
|
3
2
|
/**
|
|
4
|
-
* Creates a `
|
|
3
|
+
* Creates a `makeRunQuery` function for each project's `testUtils` file.
|
|
5
4
|
*
|
|
6
|
-
*
|
|
5
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
6
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
7
7
|
*/
|
|
8
|
-
export declare function
|
|
9
|
-
|
|
8
|
+
export declare function makeMakeRunQuery<C>(runFn: RunFn<C>): MakeRunQuery<C>;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a `run` method that invokes the query resolver's single query.
|
|
11
|
+
*
|
|
12
|
+
* Following our `query / foo` conventions, query resolver will have a single `fooResolver.foo` method.
|
|
13
|
+
*/
|
|
14
|
+
export type MakeRunQuery<C> = <T extends object>(resolver: T) => RunQueryMethod<C, T>;
|
|
15
|
+
/** The return type of `makeRunQuery`. */
|
|
16
|
+
type RunQueryMethod<C, T> = <A extends ResolverArgs<T, keyof T>>(ctx: C, args?: A | (() => A)) => Promise<ResolverResult<T, keyof T>>;
|
|
10
17
|
export {};
|
|
11
18
|
//# sourceMappingURL=makeRunQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunQuery.d.ts","sourceRoot":"","sources":["../src/makeRunQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"makeRunQuery.d.ts","sourceRoot":"","sources":["../src/makeRunQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAQpE;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtF,yCAAyC;AACzC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC7D,GAAG,EAAE,CAAC,EAEN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KACjB,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC"}
|
package/build/makeRunQuery.js
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const joist_test_utils_1 = require("joist-test-utils");
|
|
3
|
+
exports.makeMakeRunQuery = void 0;
|
|
5
4
|
/**
|
|
6
|
-
* Creates a `
|
|
5
|
+
* Creates a `makeRunQuery` function for each project's `testUtils` file.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
7
|
+
* This is called `makeMake` because it's a factory for each project's `testUtils` to make its own factory
|
|
8
|
+
* that is customized (basically curried) to their own `newContext` function.
|
|
9
9
|
*/
|
|
10
|
-
function
|
|
11
|
-
return (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
function makeMakeRunQuery(runFn) {
|
|
11
|
+
return (resolver) => {
|
|
12
|
+
return (ctx, args) => runFn(ctx, async (ctx) => {
|
|
13
|
+
const key = Object.keys(resolver)[0];
|
|
14
|
+
return resolver[key]({}, args instanceof Function ? args() : args ?? {}, ctx, undefined);
|
|
15
|
+
});
|
|
16
|
+
};
|
|
15
17
|
}
|
|
16
|
-
exports.
|
|
18
|
+
exports.makeMakeRunQuery = makeMakeRunQuery;
|
|
17
19
|
//# sourceMappingURL=makeRunQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunQuery.js","sourceRoot":"","sources":["../src/makeRunQuery.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"makeRunQuery.js","sourceRoot":"","sources":["../src/makeRunQuery.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAI,KAAe;IACjD,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACnB,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,OAAS,QAAgB,CAAC,GAAG,CAAS,CAAC,EAAE,EAAE,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,SAAU,CAAC,CAAC;QAC9G,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACJ,CAAC;AARD,4CAQC"}
|
package/build/saveEntity.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DeepPartialOrNull, Entity, EntityConstructor, OptsOf } from "joist-orm";
|
|
2
|
-
import { Context } from "
|
|
2
|
+
import { Context } from "joist-test-utils";
|
|
3
3
|
/** Given an GraphQL input, creates-or-updates an entity of `type`. */
|
|
4
4
|
export declare function saveEntity<T extends Entity>(ctx: Context, type: EntityConstructor<T>, input: DeepPartialOrNull<T>, opts?: {
|
|
5
5
|
flush?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveEntity.d.ts","sourceRoot":"","sources":["../src/saveEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"saveEntity.d.ts","sourceRoot":"","sources":["../src/saveEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,sEAAsE;AACtE,wBAAsB,UAAU,CAAC,CAAC,SAAS,MAAM,EAC/C,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC3B,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,4EAA4E;AAC5E,wBAAsB,YAAY,CAAC,CAAC,SAAS,MAAM,EACjD,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAAE,EACtC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;CAAO,GACxD,OAAO,CAAC,CAAC,EAAE,CAAC,CAQd"}
|
package/build/tests.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
1
|
+
export { MakeRunInputMutation, makeMakeRunInputMutation } from "./makeRunInputMutation";
|
|
2
|
+
export { MakeRunObjectField, makeMakeRunObjectField } from "./makeRunObjectField";
|
|
3
|
+
export { MakeRunObjectFields, makeMakeRunObjectFields } from "./makeRunObjectFields";
|
|
4
|
+
export { MakeRunQuery, makeMakeRunQuery } from "./makeRunQuery";
|
|
5
|
+
export * from "./typeUtils";
|
|
5
6
|
//# sourceMappingURL=tests.d.ts.map
|
package/build/tests.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../src/tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../src/tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,cAAc,aAAa,CAAC"}
|
package/build/tests.js
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
17
|
+
exports.makeMakeRunQuery = exports.makeMakeRunObjectFields = exports.makeMakeRunObjectField = exports.makeMakeRunInputMutation = void 0;
|
|
4
18
|
var makeRunInputMutation_1 = require("./makeRunInputMutation");
|
|
5
|
-
Object.defineProperty(exports, "
|
|
6
|
-
var
|
|
7
|
-
Object.defineProperty(exports, "
|
|
19
|
+
Object.defineProperty(exports, "makeMakeRunInputMutation", { enumerable: true, get: function () { return makeRunInputMutation_1.makeMakeRunInputMutation; } });
|
|
20
|
+
var makeRunObjectField_1 = require("./makeRunObjectField");
|
|
21
|
+
Object.defineProperty(exports, "makeMakeRunObjectField", { enumerable: true, get: function () { return makeRunObjectField_1.makeMakeRunObjectField; } });
|
|
8
22
|
var makeRunObjectFields_1 = require("./makeRunObjectFields");
|
|
9
|
-
Object.defineProperty(exports, "
|
|
23
|
+
Object.defineProperty(exports, "makeMakeRunObjectFields", { enumerable: true, get: function () { return makeRunObjectFields_1.makeMakeRunObjectFields; } });
|
|
10
24
|
var makeRunQuery_1 = require("./makeRunQuery");
|
|
11
|
-
Object.defineProperty(exports, "
|
|
25
|
+
Object.defineProperty(exports, "makeMakeRunQuery", { enumerable: true, get: function () { return makeRunQuery_1.makeMakeRunQuery; } });
|
|
26
|
+
__exportStar(require("./typeUtils"), exports);
|
|
12
27
|
//# sourceMappingURL=tests.js.map
|
package/build/tests.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tests.js","sourceRoot":"","sources":["../src/tests.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tests.js","sourceRoot":"","sources":["../src/tests.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+DAAwF;AAAzD,gIAAA,wBAAwB,OAAA;AACvD,2DAAkF;AAArD,4HAAA,sBAAsB,OAAA;AACnD,6DAAqF;AAAvD,8HAAA,uBAAuB,OAAA;AACrD,+CAAgE;AAAzC,gHAAA,gBAAgB,OAAA;AACvC,8CAA4B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Resolver } from "./context";
|
|
2
|
+
export type RunFn<C> = <T>(ctx: C, fn: (ctx: C) => Promise<T>) => Promise<T>;
|
|
3
|
+
/** Infers the root type of the given resolver, by assuming it's always the first arg. */
|
|
4
|
+
export type ResolverRoot<T> = T extends {
|
|
5
|
+
[key in keyof T]: infer F;
|
|
6
|
+
} ? F extends Resolver<infer R, any, any> ? R : never : never;
|
|
7
|
+
export type ResolverArgs<T, K extends keyof T> = T[K] extends Resolver<any, infer U, any> ? U : never;
|
|
8
|
+
/** Infers the return type of key `K` in the resolver object `T`. */
|
|
9
|
+
export type ResolverResult<T, K extends keyof T> = T[K] extends Resolver<any, any, infer U> ? U : never;
|
|
10
|
+
//# sourceMappingURL=typeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../src/typeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7E,yFAAyF;AACzF,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC;CAAE,GACjE,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GACnC,CAAC,GACD,KAAK,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtG,oEAAoE;AACpE,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.js","sourceRoot":"","sources":["../src/typeUtils.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-graphql-resolver-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.144.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"graphql": "^16.8.1",
|
|
24
|
-
"joist-orm": "1.
|
|
25
|
-
"joist-test-utils": "1.
|
|
24
|
+
"joist-orm": "1.144.0",
|
|
25
|
+
"joist-test-utils": "1.144.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@swc/core": "^1.3.101",
|
package/build/makeRunObject.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Context, Resolver } from "./context";
|
|
2
|
-
export type ResolverRoot<T> = T extends {
|
|
3
|
-
[key in keyof T]: infer F;
|
|
4
|
-
} ? F extends Resolver<infer R, any, any> ? R : never : never;
|
|
5
|
-
export type ResolverArgs<T, K extends keyof T> = T[K] extends Resolver<any, infer U, any> ? U : never;
|
|
6
|
-
export type ResolverResult<T, K extends keyof T> = T[K] extends Resolver<any, any, infer U> ? U : never;
|
|
7
|
-
/** The return type of `makeRunObject`. */
|
|
8
|
-
type RunResolverMethod<T, R> = <K extends keyof T, A extends ResolverArgs<T, K>>(ctx: Context, root: R, key: K, args?: A | (() => A)) => Promise<ResolverResult<T, K>>;
|
|
9
|
-
/** Creates a `run` method to invoke a specific resolver key with that key's args. */
|
|
10
|
-
export declare function makeRunObject<T, R extends ResolverRoot<T>>(resolvers: T): RunResolverMethod<T, R>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=makeRunObject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunObject.d.ts","sourceRoot":"","sources":["../src/makeRunObject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC;CAAE,GACjE,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GACnC,CAAC,GACD,KAAK,GACP,KAAK,CAAC;AACV,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACtG,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAExG,0CAA0C;AAC1C,KAAK,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7E,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EAEN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KACjB,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEnC,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAMjG"}
|
package/build/makeRunObject.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeRunObject = void 0;
|
|
4
|
-
const joist_orm_1 = require("joist-orm");
|
|
5
|
-
const joist_test_utils_1 = require("joist-test-utils");
|
|
6
|
-
/** Creates a `run` method to invoke a specific resolver key with that key's args. */
|
|
7
|
-
function makeRunObject(resolvers) {
|
|
8
|
-
return (ctx, root, key, args) => (0, joist_test_utils_1.run)(ctx, async (ctx) => {
|
|
9
|
-
const _root = (0, joist_orm_1.isEntity)(root) ? await ctx.em.load(root.id) : root;
|
|
10
|
-
return resolvers[key](_root, args instanceof Function ? args() : args ?? {}, ctx, undefined);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
exports.makeRunObject = makeRunObject;
|
|
14
|
-
//# sourceMappingURL=makeRunObject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"makeRunObject.js","sourceRoot":"","sources":["../src/makeRunObject.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,uDAAuC;AAoBvC,qFAAqF;AACrF,SAAgB,aAAa,CAA+B,SAAY;IACtE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAC9B,IAAA,sBAAG,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAE,IAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1E,OAAQ,SAAS,CAAC,GAAG,CAAS,CAAC,KAAK,EAAE,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,SAAU,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;AACP,CAAC;AAND,sCAMC"}
|