@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
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018 Orionjs Team
3
+ Copyright (c) 2021 Orionjs Team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -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].schema];
14
+ field.type = [field.type[0].getSchema()];
15
15
  }
16
16
  else if (field.type.__isModel) {
17
- field.type = field.type.schema;
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<object, any, undefined>;
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: 1000,
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 * 2;
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
+ });
@@ -1,6 +1,6 @@
1
1
  import { OrionCache } from '@orion-js/cache';
2
- export declare type GlobalResolverResolve<ParamsType = any, ReturnType = any> = (params: ParamsType, viewer: any) => Promise<ReturnType>;
3
- export declare type ModelResolverResolve<ModelType = any, ParamsType = any, ReturnType = any> = (item: ModelType, params: ParamsType, viewer: any) => Promise<ReturnType>;
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
- export interface ExecuteParams<ParamsType = object, ModelType = undefined> {
14
- params?: ParamsType;
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?: ModelType;
19
+ parent?: IsModel extends undefined ? undefined : Parameters<Resolve>[0];
17
20
  }
18
- export declare type Execute<ParamsType = object, ReturnType = any, ModelType = undefined> = (executeOptions: ExecuteParams<ParamsType, ModelType>) => Promise<ReturnType>;
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, ModelType = undefined> extends SharedResolverOptions {
36
- execute: Execute;
38
+ export interface Resolver<Resolve = Function, IsModel = undefined> extends SharedResolverOptions {
39
+ execute: Execute<Resolve, IsModel>;
37
40
  resolve: Resolve;
38
- modelResolve: ModelType extends undefined ? undefined : OmitFirstArg<Resolve>;
41
+ modelResolve: IsModel extends undefined ? undefined : OmitFirstArg<Resolve>;
39
42
  }
40
- export declare type CreateResolver = <Resolve>(options: ResolverOptions<Resolve>) => Resolver<Resolve>;
41
- export declare type CreateModelResolver = <ModelType, Resolve>(options: ResolverOptions<Resolve>) => Resolver<Resolve, ModelType>;
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.14",
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": "yarn run clean && tsc -w"
16
+ "watch": "tsc -w",
17
+ "upgrade-interactive": "yarn upgrade-interactive"
17
18
  },
18
19
  "dependencies": {
19
- "@orion-js/cache": "^3.0.0-alpha.23",
20
- "@orion-js/helpers": "^3.0.0",
21
- "@orion-js/schema": "^3.0.7"
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": "265f025c5ed42f9de5f46f4ae9eae3589ec77085"
35
+ "gitHead": "5ac1c68e72af3dbeaf8eb5c2a04d5325da2a7e3f"
35
36
  }