@orion-js/resolvers 3.11.15 → 4.0.0-alpha.3

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.
Files changed (43) hide show
  1. package/dist/index.cjs +7236 -0
  2. package/dist/index.d.ts +114 -0
  3. package/dist/index.js +7208 -0
  4. package/package.json +23 -18
  5. package/LICENSE +0 -21
  6. package/lib/createResolverMiddleware.d.ts +0 -2
  7. package/lib/createResolverMiddleware.js +0 -7
  8. package/lib/index.d.ts +0 -8
  9. package/lib/index.js +0 -29
  10. package/lib/resolver/cleanParams.d.ts +0 -1
  11. package/lib/resolver/cleanParams.js +0 -25
  12. package/lib/resolver/cleanReturns.d.ts +0 -1
  13. package/lib/resolver/cleanReturns.js +0 -12
  14. package/lib/resolver/getArgs.d.ts +0 -11
  15. package/lib/resolver/getArgs.js +0 -22
  16. package/lib/resolver/getExecute/checkPermissions.d.ts +0 -2
  17. package/lib/resolver/getExecute/checkPermissions.js +0 -31
  18. package/lib/resolver/getExecute/cleanAndValidate.d.ts +0 -4
  19. package/lib/resolver/getExecute/cleanAndValidate.js +0 -25
  20. package/lib/resolver/getExecute/getCacheKey.d.ts +0 -2
  21. package/lib/resolver/getExecute/getCacheKey.js +0 -22
  22. package/lib/resolver/getExecute/getResult.d.ts +0 -2
  23. package/lib/resolver/getExecute/getResult.js +0 -26
  24. package/lib/resolver/getExecute/getResult.test.d.ts +0 -1
  25. package/lib/resolver/getExecute/getResult.test.js +0 -58
  26. package/lib/resolver/getExecute/getResultWithMiddlewares.d.ts +0 -2
  27. package/lib/resolver/getExecute/getResultWithMiddlewares.js +0 -20
  28. package/lib/resolver/getExecute/getSchema.d.ts +0 -2
  29. package/lib/resolver/getExecute/getSchema.js +0 -23
  30. package/lib/resolver/getExecute/index.d.ts +0 -2
  31. package/lib/resolver/getExecute/index.js +0 -28
  32. package/lib/resolver/getExecute/initResult.d.ts +0 -2
  33. package/lib/resolver/getExecute/initResult.js +0 -34
  34. package/lib/resolver/getExecute/middlewares.test.d.ts +0 -1
  35. package/lib/resolver/getExecute/middlewares.test.js +0 -65
  36. package/lib/resolver/index.d.ts +0 -5
  37. package/lib/resolver/index.js +0 -40
  38. package/lib/resolver/index.test.d.ts +0 -1
  39. package/lib/resolver/index.test.js +0 -217
  40. package/lib/resolver/permisionsCheckers.d.ts +0 -3
  41. package/lib/resolver/permisionsCheckers.js +0 -18
  42. package/lib/resolver/types.d.ts +0 -60
  43. package/lib/resolver/types.js +0 -2
@@ -1,217 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const index_1 = require("./index");
4
- const helpers_1 = require("@orion-js/helpers");
5
- it('should return a function with a resolver id', () => {
6
- const resolver = (0, index_1.resolver)({
7
- params: {},
8
- returns: String,
9
- async resolve() { },
10
- });
11
- expect(typeof resolver).toBe('object');
12
- expect(typeof resolver.resolve).toBe('function');
13
- expect(typeof resolver.execute).toBe('function');
14
- expect(typeof resolver.resolverId).toBe('string');
15
- });
16
- it('should execute the function', async () => {
17
- const resolver = (0, index_1.resolver)({
18
- params: {
19
- value: {
20
- type: Number,
21
- },
22
- },
23
- returns: Number,
24
- async resolve({ value }) {
25
- return value * 2;
26
- },
27
- });
28
- const result = await resolver.execute({ params: { value: 2 } });
29
- expect(result).toBe(4);
30
- });
31
- it('should get from cache', async () => {
32
- let index = 1;
33
- const resolver = (0, index_1.resolver)({
34
- params: {
35
- value: {
36
- type: Number,
37
- },
38
- },
39
- returns: Number,
40
- cache: 100,
41
- async resolve(params) {
42
- return index++;
43
- },
44
- });
45
- const result1 = await resolver.execute({ params: { value: 1 } }); // 1
46
- expect(result1).toBe(1);
47
- const result2 = await resolver.execute({ params: { value: 1 } }); // 1
48
- expect(result2).toBe(1);
49
- const result3 = await resolver.execute({ params: { value: 2 } }); // 2
50
- expect(result3).toBe(2);
51
- const result4 = await resolver.execute({ params: { value: 2 } }); // 2
52
- expect(result4).toBe(2);
53
- const result5 = await resolver.execute({ params: { value: 3 } }); // 3
54
- expect(result5).toBe(3);
55
- await (0, helpers_1.sleep)(100);
56
- });
57
- it('should create typed resolvers', async () => {
58
- const resolver = (0, index_1.resolver)({
59
- params: {
60
- value: {
61
- type: Number,
62
- },
63
- },
64
- returns: Number,
65
- resolve: async (params) => {
66
- return params.value * 2;
67
- },
68
- });
69
- const result1 = await resolver.resolve({
70
- value: 2,
71
- });
72
- const result2 = await resolver.execute({
73
- params: { value: 2 },
74
- });
75
- expect(result1).toBe(4);
76
- expect(result2).toBe(4);
77
- });
78
- it('should create typed model resolvers', async () => {
79
- const resolver = (0, index_1.modelResolver)({
80
- returns: Number,
81
- resolve: async (model, params) => model.value * params.times,
82
- });
83
- await resolver.resolve({ value: 1 }, { times: 2 });
84
- const inModel = resolver.modelResolve;
85
- await resolver.execute({
86
- parent: { value: 1 },
87
- params: { times: 2 },
88
- });
89
- });
90
- it('should accept a model as params', async () => {
91
- const aModel = {
92
- __isModel: true,
93
- name: 'ResolverParams',
94
- getSchema() {
95
- return {
96
- value: {
97
- type: 'string',
98
- },
99
- };
100
- },
101
- initItem(item) {
102
- return item;
103
- },
104
- };
105
- class TypedParams {
106
- constructor() {
107
- this.value = 1;
108
- }
109
- static getModel() {
110
- return aModel;
111
- }
112
- }
113
- const resolver = (0, index_1.modelResolver)({
114
- params: TypedParams,
115
- returns: Number,
116
- resolve: async function (item, params) {
117
- return params.value * 2;
118
- },
119
- });
120
- const inModel = resolver.modelResolve;
121
- });
122
- it('should accept a model as returns', async () => {
123
- const aModel = {
124
- __isModel: true,
125
- name: 'Returns',
126
- getSchema() {
127
- return {
128
- value: {
129
- type: 'string',
130
- },
131
- };
132
- },
133
- initItem(item) {
134
- return item;
135
- },
136
- };
137
- class Returns {
138
- constructor() {
139
- this.value = 1;
140
- }
141
- static getModel() {
142
- return aModel;
143
- }
144
- }
145
- const resolver = (0, index_1.resolver)({
146
- returns: Returns,
147
- resolve: async () => {
148
- return { value: 2 };
149
- },
150
- });
151
- const result = await resolver.resolve();
152
- expect(result.value).toBe(2);
153
- });
154
- it('should correctly clean params when no params are passed', async () => {
155
- const resolver = (0, index_1.resolver)({
156
- resolve: async ({ title }) => {
157
- return `${title}`;
158
- },
159
- });
160
- expect(await resolver.execute({ params: { title: 'test' } })).toBe('test');
161
- });
162
- it('should allow calling resolver.resolve', async () => {
163
- const resolver = (0, index_1.resolver)({
164
- resolve: async ({ title }) => {
165
- return `${title}`;
166
- },
167
- });
168
- const modelResolver = (0, index_1.modelResolver)({
169
- resolve: async ({ title }) => {
170
- return `${title}`;
171
- },
172
- });
173
- expect(await resolver.resolve({ title: 'test' })).toBe('test');
174
- expect(await modelResolver.resolve({ title: 'test' })).toBe('test');
175
- });
176
- it('only allow compliant resolve function', async () => {
177
- const resolver = (0, index_1.resolver)({
178
- resolve: async () => {
179
- return 'hello';
180
- },
181
- });
182
- const modelResolver = (0, index_1.modelResolver)({
183
- resolve: async () => {
184
- return 'hello';
185
- },
186
- });
187
- });
188
- it('should allow to pass a fourth param with the info', async () => {
189
- const resolver = (0, index_1.resolver)({
190
- resolve: async (_params, _viewer, info) => {
191
- expect(info.test).toBe(1);
192
- return 'hello';
193
- },
194
- });
195
- const modelResolver = (0, index_1.modelResolver)({
196
- resolve: async (_parent, _params, _viewer, info) => {
197
- expect(info.test).toBe(1);
198
- return 'hello';
199
- },
200
- });
201
- await resolver.execute({
202
- params: {},
203
- viewer: {},
204
- info: {
205
- test: 1,
206
- },
207
- });
208
- await modelResolver.execute({
209
- parent: {},
210
- params: {},
211
- viewer: {},
212
- info: {
213
- test: 1,
214
- },
215
- });
216
- expect.assertions(2);
217
- });
@@ -1,3 +0,0 @@
1
- import { PermissionChecker, PermissionCheckerOptions } from './types';
2
- export declare const addPermissionChecker: (func: PermissionChecker) => void;
3
- export declare const checkPermissions: (options: PermissionCheckerOptions) => Promise<void>;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkPermissions = exports.addPermissionChecker = void 0;
4
- const helpers_1 = require("@orion-js/helpers");
5
- global.checkers = [];
6
- const addPermissionChecker = function (func) {
7
- global.checkers.push(func);
8
- };
9
- exports.addPermissionChecker = addPermissionChecker;
10
- const checkPermissions = async function (options) {
11
- for (const checker of global.checkers) {
12
- const errorMessage = await checker(options);
13
- if (errorMessage) {
14
- throw new helpers_1.PermissionsError(errorMessage);
15
- }
16
- }
17
- };
18
- exports.checkPermissions = checkPermissions;
@@ -1,60 +0,0 @@
1
- import { OrionCache } from '@orion-js/cache';
2
- import { Blackbox } from '@orion-js/schema';
3
- export declare type GlobalResolverResolve = (params: any, viewer: any, info?: any) => Promise<any>;
4
- export declare type ModelResolverResolve = (item: any, params: any, viewer: any, info?: any) => Promise<any>;
5
- export declare type GlobalCheckPermissions = (params: any, viewer: any, info?: any) => Promise<string | void>;
6
- export declare type ModelCheckPermissions = (parent: any, params: any, viewer: any, info?: any) => Promise<string | void>;
7
- export declare type GlobalGetCacheKey = (params: any, viewer: any, info: any) => Promise<any>;
8
- export declare type ModelGetCacheKey = (parent: any, params: any, viewer: any, info: any) => Promise<any>;
9
- export interface ExecuteOptions {
10
- params: Blackbox;
11
- viewer: any;
12
- parent?: any;
13
- info?: any;
14
- options: ResolverOptions;
15
- }
16
- declare type Parameters<T> = T extends (...args: infer P) => any ? P : never;
17
- declare type ReturnType<T> = T extends (...args: any) => infer R ? R : any;
18
- declare type ResolverParams<Resolve, IsModel> = IsModel extends undefined ? Parameters<Resolve>[0] : Parameters<Resolve>[1];
19
- export interface ExecuteParams<Resolve = Function, IsModel = undefined> {
20
- params?: ResolverParams<Resolve, IsModel>;
21
- viewer?: any;
22
- parent?: IsModel extends undefined ? undefined : Parameters<Resolve>[0];
23
- info?: any;
24
- }
25
- export declare type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType<Resolve>;
26
- export interface SharedResolverOptions {
27
- resolverId?: string;
28
- params?: any;
29
- returns?: any;
30
- mutation?: boolean;
31
- private?: boolean;
32
- checkPermission?: GlobalCheckPermissions | ModelCheckPermissions;
33
- getCacheKey?: GlobalGetCacheKey | ModelGetCacheKey;
34
- cache?: number;
35
- cacheProvider?: OrionCache;
36
- permissionsOptions?: any;
37
- middlewares?: ResolverMiddleware[];
38
- }
39
- export interface ResolverOptions<Resolve = Function> extends SharedResolverOptions {
40
- resolve: Resolve;
41
- }
42
- declare type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
43
- export interface Resolver<Resolve = Function, IsModel = undefined> extends SharedResolverOptions {
44
- execute: Execute<Resolve, IsModel>;
45
- resolve: Resolve;
46
- modelResolve: IsModel extends undefined ? undefined : OmitFirstArg<Resolve>;
47
- }
48
- export declare type ModelResolver<Resolve = Function> = Resolver<Resolve, true>;
49
- export declare type CreateResolver = <Resolve extends GlobalResolverResolve>(options: ResolverOptions<Resolve>) => Resolver<Resolve>;
50
- export declare type CreateModelResolver = <Resolve extends ModelResolverResolve>(options: ResolverOptions<Resolve>) => ModelResolver<Resolve>;
51
- export interface PermissionCheckerOptions {
52
- resolver: ResolverOptions;
53
- parent: any;
54
- params: any;
55
- viewer: any;
56
- info: any;
57
- }
58
- export declare type PermissionChecker = (options: PermissionCheckerOptions) => Promise<string | void>;
59
- export declare type ResolverMiddleware = (executeOptions: ExecuteOptions, next: () => Promise<any>) => Promise<any>;
60
- export {};
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });