@orion-js/resolvers 3.0.14 → 3.0.24
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/LICENSE
CHANGED
|
@@ -7,12 +7,11 @@ const getCacheKey_1 = __importDefault(require("./getCacheKey"));
|
|
|
7
7
|
async function default_1(options, executeOptions) {
|
|
8
8
|
const { parent, params, viewer } = executeOptions;
|
|
9
9
|
const executeResolver = async () => {
|
|
10
|
+
const resultFunc = options.resolve;
|
|
10
11
|
if (parent) {
|
|
11
|
-
const resultFunc = options.resolve;
|
|
12
12
|
return await resultFunc(parent, params, viewer);
|
|
13
13
|
}
|
|
14
14
|
else {
|
|
15
|
-
const resultFunc = options.resolve;
|
|
16
15
|
return await resultFunc(params, viewer);
|
|
17
16
|
}
|
|
18
17
|
};
|
|
@@ -11,10 +11,10 @@ function default_1(resolverParams) {
|
|
|
11
11
|
const field = (0, clone_1.default)(resolverParams[key]);
|
|
12
12
|
const isArrayOfModel = (0, isArray_1.default)(field.type) && field.type[0].__isModel;
|
|
13
13
|
if (isArrayOfModel) {
|
|
14
|
-
field.type = [field.type[0].
|
|
14
|
+
field.type = [field.type[0].getSchema()];
|
|
15
15
|
}
|
|
16
16
|
else if (field.type.__isModel) {
|
|
17
|
-
field.type = field.type.
|
|
17
|
+
field.type = field.type.getSchema();
|
|
18
18
|
}
|
|
19
19
|
schema[key] = field;
|
|
20
20
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ResolverOptions, Execute } from '../types';
|
|
2
|
-
export default function (options: ResolverOptions): Execute<
|
|
2
|
+
export default function (options: ResolverOptions): Execute<Function, undefined>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const index_1 = require("./index");
|
|
4
|
+
const helpers_1 = require("@orion-js/helpers");
|
|
4
5
|
it('should return a function with a resolver id', () => {
|
|
5
6
|
const resolver = (0, index_1.resolver)({
|
|
6
7
|
params: {},
|
|
@@ -36,8 +37,8 @@ it('should get from cache', async () => {
|
|
|
36
37
|
}
|
|
37
38
|
},
|
|
38
39
|
returns: Number,
|
|
39
|
-
cache:
|
|
40
|
-
async resolve() {
|
|
40
|
+
cache: 100,
|
|
41
|
+
async resolve(params) {
|
|
41
42
|
return index++;
|
|
42
43
|
}
|
|
43
44
|
});
|
|
@@ -51,6 +52,7 @@ it('should get from cache', async () => {
|
|
|
51
52
|
expect(result4).toBe(2);
|
|
52
53
|
const result5 = await resolver.execute({ params: { value: 3 } }); // 3
|
|
53
54
|
expect(result5).toBe(3);
|
|
55
|
+
await (0, helpers_1.sleep)(100);
|
|
54
56
|
});
|
|
55
57
|
it('should create typed resolvers', async () => {
|
|
56
58
|
const resolver = (0, index_1.resolver)({
|
|
@@ -76,12 +78,16 @@ it('should create typed resolvers', async () => {
|
|
|
76
78
|
it('should create typed model resolvers', async () => {
|
|
77
79
|
const resolver = (0, index_1.modelResolver)({
|
|
78
80
|
returns: Number,
|
|
79
|
-
resolve: async function (model) {
|
|
80
|
-
return model.value *
|
|
81
|
+
resolve: async function (model, params) {
|
|
82
|
+
return model.value * params.times;
|
|
81
83
|
}
|
|
82
84
|
});
|
|
83
|
-
await resolver.resolve({ value: 1 });
|
|
85
|
+
await resolver.resolve({ value: 1 }, { times: 2 });
|
|
84
86
|
const inModel = resolver.modelResolve;
|
|
87
|
+
await resolver.execute({
|
|
88
|
+
parent: { value: 1 },
|
|
89
|
+
params: { times: 2 }
|
|
90
|
+
});
|
|
85
91
|
});
|
|
86
92
|
it('should accept a model as params', async () => {
|
|
87
93
|
const aModel = {
|
|
@@ -169,3 +175,15 @@ it('should allow calling resolver.resolve', async () => {
|
|
|
169
175
|
expect(await resolver.resolve({ title: 'test' })).toBe('test');
|
|
170
176
|
expect(await modelResolver.resolve({ title: 'test' })).toBe('test');
|
|
171
177
|
});
|
|
178
|
+
it('only allow compliant resolve function', async () => {
|
|
179
|
+
const resolver = (0, index_1.resolver)({
|
|
180
|
+
resolve: async () => {
|
|
181
|
+
return 'hello';
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
const modelResolver = (0, index_1.modelResolver)({
|
|
185
|
+
resolve: async () => {
|
|
186
|
+
return 'hello';
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
});
|
package/lib/resolver/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OrionCache } from '@orion-js/cache';
|
|
2
|
-
export declare type GlobalResolverResolve
|
|
3
|
-
export declare type ModelResolverResolve
|
|
2
|
+
export declare type GlobalResolverResolve = (params: any, viewer: any) => Promise<any>;
|
|
3
|
+
export declare type ModelResolverResolve = (item: any, params: any, viewer: any) => Promise<any>;
|
|
4
4
|
export declare type GlobalCheckPermissions = (params: any, viewer: any) => Promise<string>;
|
|
5
5
|
export declare type ModelCheckPermissions = (parent: any, params: any, viewer: any) => Promise<string>;
|
|
6
6
|
export declare type GlobalGetCacheKey = (params: any, viewer: any) => Promise<any>;
|
|
@@ -10,12 +10,15 @@ export interface ExecuteOptions {
|
|
|
10
10
|
viewer: any;
|
|
11
11
|
parent?: any;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
declare type Parameters<T> = T extends (...args: infer P) => any ? P : never;
|
|
14
|
+
declare type ReturnType<T> = T extends (...args: any) => infer R ? R : any;
|
|
15
|
+
declare type ResolverParams<Resolve, IsModel> = IsModel extends undefined ? Parameters<Resolve>[0] : Parameters<Resolve>[1];
|
|
16
|
+
export interface ExecuteParams<Resolve = Function, IsModel = undefined> {
|
|
17
|
+
params?: ResolverParams<Resolve, IsModel>;
|
|
15
18
|
viewer?: any;
|
|
16
|
-
parent?:
|
|
19
|
+
parent?: IsModel extends undefined ? undefined : Parameters<Resolve>[0];
|
|
17
20
|
}
|
|
18
|
-
export declare type Execute<
|
|
21
|
+
export declare type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType<Resolve>;
|
|
19
22
|
export interface SharedResolverOptions {
|
|
20
23
|
resolverId?: string;
|
|
21
24
|
params?: any;
|
|
@@ -32,13 +35,14 @@ export interface ResolverOptions<Resolve = Function> extends SharedResolverOptio
|
|
|
32
35
|
resolve: Resolve;
|
|
33
36
|
}
|
|
34
37
|
declare type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
35
|
-
export interface Resolver<Resolve = Function,
|
|
36
|
-
execute: Execute
|
|
38
|
+
export interface Resolver<Resolve = Function, IsModel = undefined> extends SharedResolverOptions {
|
|
39
|
+
execute: Execute<Resolve, IsModel>;
|
|
37
40
|
resolve: Resolve;
|
|
38
|
-
modelResolve:
|
|
41
|
+
modelResolve: IsModel extends undefined ? undefined : OmitFirstArg<Resolve>;
|
|
39
42
|
}
|
|
40
|
-
export declare type
|
|
41
|
-
export declare type
|
|
43
|
+
export declare type ModelResolver<Resolve = Function> = Resolver<Resolve, true>;
|
|
44
|
+
export declare type CreateResolver = <Resolve extends GlobalResolverResolve>(options: ResolverOptions<Resolve>) => Resolver<Resolve>;
|
|
45
|
+
export declare type CreateModelResolver = <Resolve extends ModelResolverResolve>(options: ResolverOptions<Resolve>) => ModelResolver<Resolve>;
|
|
42
46
|
export interface PermissionCheckerOptions {
|
|
43
47
|
resolver: ResolverOptions;
|
|
44
48
|
parent: any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/resolvers",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.24",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -13,12 +13,13 @@
|
|
|
13
13
|
"prepare": "yarn run build",
|
|
14
14
|
"clean": "rm -rf ./lib",
|
|
15
15
|
"build": "yarn run clean && tsc",
|
|
16
|
-
"watch": "
|
|
16
|
+
"watch": "tsc -w",
|
|
17
|
+
"upgrade-interactive": "yarn upgrade-interactive"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
|
-
"@orion-js/cache": "^3.0.
|
|
20
|
-
"@orion-js/helpers": "^3.0.
|
|
21
|
-
"@orion-js/schema": "^3.0.
|
|
20
|
+
"@orion-js/cache": "^3.0.17",
|
|
21
|
+
"@orion-js/helpers": "^3.0.17",
|
|
22
|
+
"@orion-js/schema": "^3.0.17"
|
|
22
23
|
},
|
|
23
24
|
"devDependencies": {
|
|
24
25
|
"@shelf/jest-mongodb": "^2.1.0",
|
|
@@ -31,5 +32,5 @@
|
|
|
31
32
|
"publishConfig": {
|
|
32
33
|
"access": "public"
|
|
33
34
|
},
|
|
34
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "5ac1c68e72af3dbeaf8eb5c2a04d5325da2a7e3f"
|
|
35
36
|
}
|