@orion-js/resolvers 4.0.0-next.7 → 4.0.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/dist/index.cjs +12 -170
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -31
- package/dist/index.d.ts +20 -31
- package/dist/index.js +9 -163
- package/dist/index.js.map +1 -1
- package/package.json +3 -4
package/dist/index.cjs
CHANGED
|
@@ -19,10 +19,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
// src/index.ts
|
|
20
20
|
var index_exports = {};
|
|
21
21
|
__export(index_exports, {
|
|
22
|
-
addPermissionChecker: () => addPermissionChecker,
|
|
23
|
-
checkPermissions: () => checkPermissions_default,
|
|
24
|
-
cleanParams: () => cleanParams_default,
|
|
25
|
-
cleanReturns: () => cleanReturns_default,
|
|
26
22
|
createModelResolver: () => createModelResolver,
|
|
27
23
|
createResolver: () => createResolver,
|
|
28
24
|
createResolverMiddleware: () => createResolverMiddleware,
|
|
@@ -39,83 +35,6 @@ function createResolverMiddleware(middleware) {
|
|
|
39
35
|
return middleware;
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
// src/resolver/permisionsCheckers.ts
|
|
43
|
-
var import_helpers = require("@orion-js/helpers");
|
|
44
|
-
global.checkers = [];
|
|
45
|
-
var addPermissionChecker = function(func) {
|
|
46
|
-
global.checkers.push(func);
|
|
47
|
-
};
|
|
48
|
-
var checkPermissions = async function(options) {
|
|
49
|
-
for (const checker of global.checkers) {
|
|
50
|
-
const errorMessage = await checker(options);
|
|
51
|
-
if (errorMessage) {
|
|
52
|
-
throw new import_helpers.PermissionsError(errorMessage);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
// src/resolver/getExecute/checkPermissions.ts
|
|
58
|
-
var import_helpers2 = require("@orion-js/helpers");
|
|
59
|
-
async function checkPermissions_default(executeOptions, options) {
|
|
60
|
-
const { parent, params, viewer, info } = executeOptions;
|
|
61
|
-
if (viewer.app) return;
|
|
62
|
-
await checkPermissions({
|
|
63
|
-
resolver: options,
|
|
64
|
-
parent,
|
|
65
|
-
params,
|
|
66
|
-
viewer,
|
|
67
|
-
info
|
|
68
|
-
});
|
|
69
|
-
if (options.checkPermission) {
|
|
70
|
-
const execute = async () => {
|
|
71
|
-
if (parent) {
|
|
72
|
-
const checker2 = options.checkPermission;
|
|
73
|
-
return checker2(parent, params, viewer, info);
|
|
74
|
-
}
|
|
75
|
-
const checker = options.checkPermission;
|
|
76
|
-
return checker(params, viewer, info);
|
|
77
|
-
};
|
|
78
|
-
const error = await execute();
|
|
79
|
-
if (error) {
|
|
80
|
-
throw new import_helpers2.PermissionsError(error);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// src/resolver/cleanParams.ts
|
|
86
|
-
var import_helpers3 = require("@orion-js/helpers");
|
|
87
|
-
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
88
|
-
function cleanParams_default(rawParams) {
|
|
89
|
-
var _a;
|
|
90
|
-
if (!rawParams) return;
|
|
91
|
-
if ((_a = rawParams[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
92
|
-
rawParams = rawParams[Symbol.metadata]._getModel();
|
|
93
|
-
}
|
|
94
|
-
if (rawParams.__isModel) {
|
|
95
|
-
rawParams = rawParams.getSchema();
|
|
96
|
-
}
|
|
97
|
-
const params = (0, import_helpers3.clone)(rawParams);
|
|
98
|
-
Object.keys(params).forEach((key) => {
|
|
99
|
-
if (key.startsWith("__")) {
|
|
100
|
-
delete params[key];
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
return params;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// src/resolver/cleanReturns.ts
|
|
107
|
-
function cleanReturns_default(rawReturns) {
|
|
108
|
-
var _a;
|
|
109
|
-
if (!rawReturns) return;
|
|
110
|
-
if ((_a = rawReturns[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
111
|
-
return rawReturns[Symbol.metadata]._getModel();
|
|
112
|
-
}
|
|
113
|
-
if (rawReturns.getModel) {
|
|
114
|
-
return rawReturns.getModel();
|
|
115
|
-
}
|
|
116
|
-
return rawReturns;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
38
|
// src/resolver/getArgs.ts
|
|
120
39
|
function getResolverArgs(...args) {
|
|
121
40
|
if (args.length === 4) {
|
|
@@ -136,72 +55,11 @@ function getResolverArgs(...args) {
|
|
|
136
55
|
throw new Error("A resolver must be called with 2 parameters only");
|
|
137
56
|
}
|
|
138
57
|
|
|
139
|
-
// src/resolver/getExecute/
|
|
58
|
+
// src/resolver/getExecute/index.ts
|
|
140
59
|
var import_schema = require("@orion-js/schema");
|
|
141
|
-
var import_helpers4 = require("@orion-js/helpers");
|
|
142
|
-
function getType(type) {
|
|
143
|
-
if (Array.isArray(type)) {
|
|
144
|
-
return [getType(type[0])];
|
|
145
|
-
}
|
|
146
|
-
if ((0, import_schema.isSchemaLike)(type)) {
|
|
147
|
-
return (0, import_schema.getSchemaFromAnyOrionForm)(type);
|
|
148
|
-
}
|
|
149
|
-
return type;
|
|
150
|
-
}
|
|
151
|
-
function getSchema(resolverParams) {
|
|
152
|
-
const schema = {};
|
|
153
|
-
for (const key of Object.keys(resolverParams)) {
|
|
154
|
-
const field = (0, import_helpers4.clone)(resolverParams[key]);
|
|
155
|
-
if (!field) continue;
|
|
156
|
-
field.type = getType(field.type);
|
|
157
|
-
schema[key] = field;
|
|
158
|
-
}
|
|
159
|
-
return schema;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// src/resolver/getExecute/cleanAndValidate.ts
|
|
163
|
-
var import_schema2 = require("@orion-js/schema");
|
|
164
|
-
async function cleanAndValidate({
|
|
165
|
-
params,
|
|
166
|
-
callParams
|
|
167
|
-
}) {
|
|
168
|
-
if (!callParams) callParams = {};
|
|
169
|
-
if (params) {
|
|
170
|
-
const options = {
|
|
171
|
-
filter: false,
|
|
172
|
-
removeEmptyStrings: false
|
|
173
|
-
};
|
|
174
|
-
const schema = getSchema(params);
|
|
175
|
-
const cleaned = await (0, import_schema2.clean)(schema, callParams, options);
|
|
176
|
-
await (0, import_schema2.validate)(schema, cleaned, options);
|
|
177
|
-
return cleaned;
|
|
178
|
-
}
|
|
179
|
-
return callParams;
|
|
180
|
-
}
|
|
181
60
|
|
|
182
61
|
// src/resolver/getExecute/getResultWithMiddlewares.ts
|
|
183
|
-
var
|
|
184
|
-
|
|
185
|
-
// src/resolver/getExecute/getCacheKey.ts
|
|
186
|
-
var import_helpers5 = require("@orion-js/helpers");
|
|
187
|
-
var getBaseKey = async (executeOptions) => {
|
|
188
|
-
const { parent, params, viewer, info, options } = executeOptions;
|
|
189
|
-
if (parent) {
|
|
190
|
-
const getKey2 = options.getCacheKey;
|
|
191
|
-
return await getKey2(parent, params, viewer, info);
|
|
192
|
-
}
|
|
193
|
-
const getKey = options.getCacheKey;
|
|
194
|
-
return await getKey(params, viewer, info);
|
|
195
|
-
};
|
|
196
|
-
async function getCacheKey_default(executeOptions) {
|
|
197
|
-
const { parent, params, options } = executeOptions;
|
|
198
|
-
if (options.getCacheKey) {
|
|
199
|
-
const baseKey = await getBaseKey(executeOptions);
|
|
200
|
-
return `${options.resolverId}_${baseKey}`;
|
|
201
|
-
}
|
|
202
|
-
const key = (0, import_helpers5.hashObject)({ parent, params, resolverId: options.resolverId });
|
|
203
|
-
return key;
|
|
204
|
-
}
|
|
62
|
+
var import_helpers = require("@orion-js/helpers");
|
|
205
63
|
|
|
206
64
|
// src/resolver/getExecute/getResult.ts
|
|
207
65
|
async function getResult_default(executeOptions) {
|
|
@@ -213,14 +71,6 @@ async function getResult_default(executeOptions) {
|
|
|
213
71
|
}
|
|
214
72
|
return await resultFunc(params, viewer, info);
|
|
215
73
|
};
|
|
216
|
-
if (options.cache && options.cacheProvider) {
|
|
217
|
-
const key = await getCacheKey_default(executeOptions);
|
|
218
|
-
const result = await options.cacheProvider.get(key, {
|
|
219
|
-
fallback: executeResolver,
|
|
220
|
-
ttl: options.cache
|
|
221
|
-
});
|
|
222
|
-
return result.value;
|
|
223
|
-
}
|
|
224
74
|
return await executeResolver();
|
|
225
75
|
}
|
|
226
76
|
|
|
@@ -229,7 +79,7 @@ async function getResultWithMiddlewares(executeOptions) {
|
|
|
229
79
|
const resolveMiddleware = createResolverMiddleware(async (executeOptions2) => {
|
|
230
80
|
return await getResult_default(executeOptions2);
|
|
231
81
|
});
|
|
232
|
-
const composedMiddlewares = (0,
|
|
82
|
+
const composedMiddlewares = (0, import_helpers.composeMiddlewares)([
|
|
233
83
|
...executeOptions.options.middlewares || [],
|
|
234
84
|
resolveMiddleware
|
|
235
85
|
]);
|
|
@@ -240,33 +90,29 @@ async function getResultWithMiddlewares(executeOptions) {
|
|
|
240
90
|
function getExecute(options) {
|
|
241
91
|
const execute = async (executeParams) => {
|
|
242
92
|
const executeOptions = {
|
|
243
|
-
params: await cleanAndValidate({
|
|
244
|
-
params: options.params,
|
|
245
|
-
callParams: executeParams.params
|
|
246
|
-
}),
|
|
93
|
+
params: options.params ? await (0, import_schema.cleanAndValidate)(options.params, executeParams.params ?? {}) : executeParams.params ?? {},
|
|
247
94
|
viewer: executeParams.viewer || {},
|
|
248
95
|
info: executeParams.info || {},
|
|
249
96
|
parent: executeParams.parent,
|
|
250
97
|
options
|
|
251
98
|
};
|
|
252
|
-
await checkPermissions_default(executeOptions, options);
|
|
253
99
|
const result = await getResultWithMiddlewares(executeOptions);
|
|
100
|
+
if (options.returns) {
|
|
101
|
+
return await (0, import_schema.clean)(options.returns, result);
|
|
102
|
+
}
|
|
254
103
|
return result;
|
|
255
104
|
};
|
|
256
105
|
return execute;
|
|
257
106
|
}
|
|
258
107
|
|
|
259
108
|
// src/resolver/index.ts
|
|
260
|
-
var
|
|
261
|
-
var
|
|
109
|
+
var import_helpers2 = require("@orion-js/helpers");
|
|
110
|
+
var import_schema2 = require("@orion-js/schema");
|
|
262
111
|
function dynamicCreateResolver(options) {
|
|
263
|
-
options.params =
|
|
264
|
-
options.returns =
|
|
265
|
-
if (!options.cacheProvider) {
|
|
266
|
-
options.cacheProvider = import_cache.defaultCache;
|
|
267
|
-
}
|
|
112
|
+
options.params = (0, import_schema2.getSchemaFromAnyOrionForm)(options.params);
|
|
113
|
+
options.returns = (0, import_schema2.getSchemaFromAnyOrionForm)(options.returns);
|
|
268
114
|
if (!options.resolverId) {
|
|
269
|
-
options.resolverId = (0,
|
|
115
|
+
options.resolverId = (0, import_helpers2.generateId)();
|
|
270
116
|
}
|
|
271
117
|
if (!options.middlewares) {
|
|
272
118
|
options.middlewares = [];
|
|
@@ -310,10 +156,6 @@ function internal_appendResolversToItem(item, resolvers) {
|
|
|
310
156
|
}
|
|
311
157
|
// Annotate the CommonJS export names for ESM import in node:
|
|
312
158
|
0 && (module.exports = {
|
|
313
|
-
addPermissionChecker,
|
|
314
|
-
checkPermissions,
|
|
315
|
-
cleanParams,
|
|
316
|
-
cleanReturns,
|
|
317
159
|
createModelResolver,
|
|
318
160
|
createResolver,
|
|
319
161
|
createResolverMiddleware,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/createResolverMiddleware.ts","../src/resolver/permisionsCheckers.ts","../src/resolver/getExecute/checkPermissions.ts","../src/resolver/cleanParams.ts","../src/resolver/cleanReturns.ts","../src/resolver/getArgs.ts","../src/resolver/getExecute/getSchema.ts","../src/resolver/getExecute/cleanAndValidate.ts","../src/resolver/getExecute/getResultWithMiddlewares.ts","../src/resolver/getExecute/getCacheKey.ts","../src/resolver/getExecute/getResult.ts","../src/resolver/getExecute/index.ts","../src/resolver/index.ts","../src/schemaWithResolvers/index.ts"],"sourcesContent":["export * from './resolver/types'\nexport * from './createResolverMiddleware'\nimport checkPermissions from './resolver/getExecute/checkPermissions'\nimport {addPermissionChecker} from './resolver/permisionsCheckers'\nimport cleanParams from './resolver/cleanParams'\nimport cleanReturns from './resolver/cleanReturns'\nexport * from './resolver/getArgs'\nexport * from './resolver'\n\nexport {checkPermissions, addPermissionChecker, cleanParams, cleanReturns}\n\nexport * from './schemaWithResolvers'\n","import {ResolverMiddleware} from './resolver/types'\n\nexport function createResolverMiddleware(middleware: ResolverMiddleware) {\n return middleware\n}\n","import {PermissionsError} from '@orion-js/helpers'\nimport {PermissionChecker, PermissionCheckerOptions} from './types'\n\ndeclare const global: {\n checkers: PermissionChecker[]\n}\n\nglobal.checkers = []\n\nexport const addPermissionChecker = function (func: PermissionChecker) {\n global.checkers.push(func)\n}\n\nexport const checkPermissions = async function (options: PermissionCheckerOptions) {\n for (const checker of global.checkers) {\n const errorMessage = await checker(options)\n if (errorMessage) {\n throw new PermissionsError(errorMessage)\n }\n }\n}\n","import {checkPermissions} from '../permisionsCheckers'\nimport {PermissionsError} from '@orion-js/helpers'\nimport {\n ExecuteOptions,\n GlobalCheckPermissions,\n ModelCheckPermissions,\n ResolverOptions,\n} from '../types'\n\nexport default async function (executeOptions: ExecuteOptions, options: ResolverOptions) {\n const {parent, params, viewer, info} = executeOptions\n\n if (viewer.app) return\n\n await checkPermissions({\n resolver: options,\n parent,\n params,\n viewer,\n info,\n })\n\n if (options.checkPermission) {\n const execute = async () => {\n if (parent) {\n const checker = options.checkPermission as ModelCheckPermissions\n return checker(parent, params, viewer, info)\n }\n const checker = options.checkPermission as GlobalCheckPermissions\n return checker(params, viewer, info)\n }\n\n const error = await execute()\n if (error) {\n throw new PermissionsError(error)\n }\n }\n}\n","import {clone} from '@orion-js/helpers'\n\n// @ts-ignore polyfill for Symbol.metadata // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#decorator-metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport default function (rawParams: any) {\n if (!rawParams) return\n\n // for typed model\n if (rawParams[Symbol.metadata]?._getModel) {\n rawParams = rawParams[Symbol.metadata]._getModel()\n }\n\n if (rawParams.__isModel) {\n rawParams = rawParams.getSchema()\n }\n\n const params = clone(rawParams)\n Object.keys(params).forEach(key => {\n if (key.startsWith('__')) {\n delete params[key]\n }\n })\n\n return params\n}\n","export default function (rawReturns: any) {\n if (!rawReturns) return\n\n // for typed model\n if (rawReturns[Symbol.metadata]?._getModel) {\n return rawReturns[Symbol.metadata]._getModel()\n }\n\n // for typed model\n if (rawReturns.getModel) {\n return rawReturns.getModel()\n }\n\n return rawReturns\n}\n","export function getResolverArgs(...args: any[]) {\n if (args.length === 4) {\n return {\n parent: args[0],\n params: args[1] || {},\n viewer: args[2] || {},\n info: args[3] || {},\n }\n }\n if (args.length < 4) {\n return {\n params: args[0] || {},\n viewer: args[1] || {},\n info: args[2] || {},\n }\n }\n throw new Error('A resolver must be called with 2 parameters only')\n}\n","import {getSchemaFromAnyOrionForm, isSchemaLike, Schema} from '@orion-js/schema'\nimport {clone} from '@orion-js/helpers'\n\nfunction getType(type: any) {\n if (Array.isArray(type)) {\n return [getType(type[0])]\n }\n\n if (isSchemaLike(type)) {\n return getSchemaFromAnyOrionForm(type)\n }\n\n return type\n}\n\nexport default function getSchema(resolverParams: any) {\n const schema: Schema = {}\n\n for (const key of Object.keys(resolverParams)) {\n const field = clone(resolverParams[key])\n if (!field) continue\n\n field.type = getType(field.type)\n\n schema[key] = field\n }\n\n return schema\n}\n","import getSchema from './getSchema'\nimport {validate, clean} from '@orion-js/schema'\n\nexport default async function cleanAndValidate({\n params,\n callParams,\n}: {params: any; callParams: any}) {\n if (!callParams) callParams = {}\n\n if (params) {\n const options = {\n filter: false,\n removeEmptyStrings: false,\n }\n const schema = getSchema(params)\n const cleaned = await clean(schema, callParams, options)\n await validate(schema, cleaned, options)\n return cleaned\n }\n\n return callParams\n}\n","import {composeMiddlewares} from '@orion-js/helpers'\nimport {createResolverMiddleware} from '../../createResolverMiddleware'\nimport {ExecuteOptions} from '../types'\nimport getResult from './getResult'\n\nexport async function getResultWithMiddlewares(executeOptions: ExecuteOptions) {\n const resolveMiddleware = createResolverMiddleware(async executeOptions => {\n return await getResult(executeOptions)\n })\n\n const composedMiddlewares = composeMiddlewares([\n ...(executeOptions.options.middlewares || []),\n resolveMiddleware,\n ])\n\n return await composedMiddlewares(executeOptions)\n}\n","import {hashObject} from '@orion-js/helpers'\nimport {ExecuteOptions, ModelGetCacheKey, GlobalGetCacheKey} from '../types'\n\nconst getBaseKey = async (executeOptions: ExecuteOptions) => {\n const {parent, params, viewer, info, options} = executeOptions\n if (parent) {\n const getKey = options.getCacheKey as ModelGetCacheKey\n return await getKey(parent, params, viewer, info)\n }\n const getKey = options.getCacheKey as GlobalGetCacheKey\n return await getKey(params, viewer, info)\n}\n\nexport default async function (executeOptions: ExecuteOptions): Promise<string> {\n const {parent, params, options} = executeOptions\n if (options.getCacheKey) {\n const baseKey = await getBaseKey(executeOptions)\n return `${options.resolverId}_${baseKey}`\n }\n const key = hashObject({parent, params, resolverId: options.resolverId})\n return key\n}\n","import getCacheKey from './getCacheKey'\nimport {ExecuteOptions} from '../types'\n\nexport default async function (executeOptions: ExecuteOptions) {\n const {parent, params, viewer, info, options} = executeOptions\n const executeResolver = async (): Promise<any> => {\n const resultFunc = options.resolve as (...args: any) => any\n if (parent) {\n return await resultFunc(parent, params, viewer, info)\n }\n return await resultFunc(params, viewer, info)\n }\n\n if (options.cache && options.cacheProvider) {\n const key = await getCacheKey(executeOptions)\n const result = await options.cacheProvider.get(key, {\n fallback: executeResolver,\n ttl: options.cache,\n })\n return result.value\n }\n return await executeResolver()\n}\n","import checkPermissions from './checkPermissions'\nimport cleanAndValidate from './cleanAndValidate'\nimport {ResolverOptions, Execute, ExecuteOptions} from '../types'\nimport {getResultWithMiddlewares} from './getResultWithMiddlewares'\n\nexport default function getExecute(options: ResolverOptions) {\n const execute: Execute = async executeParams => {\n const executeOptions: ExecuteOptions = {\n params: await cleanAndValidate({\n params: options.params,\n callParams: executeParams.params,\n }),\n viewer: executeParams.viewer || {},\n info: executeParams.info || {},\n parent: executeParams.parent,\n options: options,\n }\n\n await checkPermissions(executeOptions, options)\n\n const result = await getResultWithMiddlewares(executeOptions)\n\n return result\n }\n\n return execute\n}\n","import getExecute from './getExecute'\nimport cleanParams from './cleanParams'\nimport {generateId} from '@orion-js/helpers'\nimport {\n GlobalResolverOptions,\n GlobalResolverResolve,\n ModelResolver,\n ModelResolverOptions,\n ModelResolverResolve,\n Resolver,\n} from './types'\nimport {defaultCache} from '@orion-js/cache'\nimport cleanReturns from './cleanReturns'\nimport {getResolverArgs} from './getArgs'\nimport {SchemaFieldType} from '@orion-js/schema'\n\nfunction dynamicCreateResolver(options: any) {\n options.params = cleanParams(options.params)\n options.returns = cleanReturns(options.returns)\n\n if (!options.cacheProvider) {\n options.cacheProvider = defaultCache\n }\n\n if (!options.resolverId) {\n options.resolverId = generateId()\n }\n\n if (!options.middlewares) {\n options.middlewares = []\n }\n\n const execute = getExecute(options)\n\n const resolve = async (...args: any[]) => {\n const params: any = getResolverArgs(...args)\n return await execute(params)\n }\n\n const resolver = {\n ...options,\n resolve,\n execute,\n }\n\n return resolver\n}\n\nconst createResolver = <\n TParams extends SchemaFieldType = SchemaFieldType,\n TReturns extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n TInfo = any,\n>(\n options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>,\n): Resolver<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>> => {\n return dynamicCreateResolver(options)\n}\n\nconst createModelResolver = <\n TItem = any,\n TParams extends SchemaFieldType = SchemaFieldType,\n TReturns extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n TInfo = any,\n>(\n options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>,\n): ModelResolver<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>> => {\n return dynamicCreateResolver(options)\n}\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst resolver = createResolver\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst modelResolver = createModelResolver\n\nexport {createResolver, createModelResolver, resolver, modelResolver}\n","import {Schema} from '@orion-js/schema'\nimport {ModelResolver, ModelResolverResolve} from '../resolver/types'\n\nexport interface SchemaWithResolversResolversMap<TSchema> {\n [key: string]: ModelResolver<ModelResolverResolve<TSchema>>\n}\n\nexport interface SchemaWithResolversOptions<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n> {\n name: TModelName\n schema: TSchema\n resolvers?: TTypeResolvers\n}\n\nexport function internal_schemaWithResolvers<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(options: SchemaWithResolversOptions<TModelName, TSchema, TTypeResolvers>) {\n const {name, schema, resolvers} = options\n return {\n __modelName: name,\n __resolvers: resolvers,\n ...schema,\n }\n}\n\n/**\n * This method is used to give backwards compatibility to models.initItem\n */\nexport function internal_appendResolversToItem<\n TItem,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(item: TItem, resolvers: TTypeResolvers) {\n const newItem = {...item} as any\n\n for (const resolverName in resolvers) {\n newItem[resolverName] = (...args: any[]) => resolvers[resolverName].resolve(newItem, ...args)\n }\n\n return newItem as TItem & {\n [key in keyof TTypeResolvers]: RemoveFirstArg<TTypeResolvers[key]>\n }\n}\n\ntype RemoveFirstArg<T> = T extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never\n"],"mappings":"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","names":["import_helpers","checker","import_helpers","import_helpers","import_schema","import_helpers","import_helpers","getKey","executeOptions","import_helpers","resolver"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/createResolverMiddleware.ts","../src/resolver/getArgs.ts","../src/resolver/getExecute/index.ts","../src/resolver/getExecute/getResultWithMiddlewares.ts","../src/resolver/getExecute/getResult.ts","../src/resolver/index.ts","../src/schemaWithResolvers/index.ts"],"sourcesContent":["export * from './resolver/types'\nexport * from './createResolverMiddleware'\nexport * from './resolver/getArgs'\nexport * from './resolver'\nexport * from './schemaWithResolvers'\n","import {ResolverMiddleware} from './resolver/types'\n\nexport function createResolverMiddleware(middleware: ResolverMiddleware) {\n return middleware\n}\n","export function getResolverArgs(...args: any[]) {\n if (args.length === 4) {\n return {\n parent: args[0],\n params: args[1] || {},\n viewer: args[2] || {},\n info: args[3] || {},\n }\n }\n if (args.length < 4) {\n return {\n params: args[0] || {},\n viewer: args[1] || {},\n info: args[2] || {},\n }\n }\n throw new Error('A resolver must be called with 2 parameters only')\n}\n","import {clean, cleanAndValidate} from '@orion-js/schema'\nimport {ResolverOptions, Execute, ExecuteOptions} from '../types'\nimport {getResultWithMiddlewares} from './getResultWithMiddlewares'\n\nexport default function getExecute(options: ResolverOptions) {\n const execute: Execute = async executeParams => {\n const executeOptions: ExecuteOptions = {\n params: options.params\n ? await cleanAndValidate(options.params, executeParams.params ?? {})\n : (executeParams.params ?? {}),\n viewer: executeParams.viewer || {},\n info: executeParams.info || {},\n parent: executeParams.parent,\n options: options,\n }\n\n const result = await getResultWithMiddlewares(executeOptions)\n\n if (options.returns) {\n return await clean(options.returns, result)\n }\n\n return result\n }\n\n return execute\n}\n","import {composeMiddlewares} from '@orion-js/helpers'\nimport {createResolverMiddleware} from '../../createResolverMiddleware'\nimport {ExecuteOptions} from '../types'\nimport getResult from './getResult'\n\nexport async function getResultWithMiddlewares(executeOptions: ExecuteOptions) {\n const resolveMiddleware = createResolverMiddleware(async executeOptions => {\n return await getResult(executeOptions)\n })\n\n const composedMiddlewares = composeMiddlewares([\n ...(executeOptions.options.middlewares || []),\n resolveMiddleware,\n ])\n\n return await composedMiddlewares(executeOptions)\n}\n","import {ExecuteOptions} from '../types'\n\nexport default async function (executeOptions: ExecuteOptions) {\n const {parent, params, viewer, info, options} = executeOptions\n const executeResolver = async (): Promise<any> => {\n const resultFunc = options.resolve as (...args: any) => any\n if (parent) {\n return await resultFunc(parent, params, viewer, info)\n }\n return await resultFunc(params, viewer, info)\n }\n\n return await executeResolver()\n}\n","import getExecute from './getExecute'\nimport {generateId} from '@orion-js/helpers'\nimport {GlobalResolverOptions, ModelResolver, ModelResolverOptions, GlobalResolver} from './types'\nimport {getResolverArgs} from './getArgs'\nimport {getSchemaFromAnyOrionForm, SchemaFieldType} from '@orion-js/schema'\n\nfunction dynamicCreateResolver(options: any) {\n options.params = getSchemaFromAnyOrionForm(options.params)\n options.returns = getSchemaFromAnyOrionForm(options.returns)\n\n if (!options.resolverId) {\n options.resolverId = generateId()\n }\n\n if (!options.middlewares) {\n options.middlewares = []\n }\n\n const execute = getExecute(options)\n\n const resolve = async (...args: any[]) => {\n const params: any = getResolverArgs(...args)\n return await execute(params)\n }\n\n const resolver = {\n ...options,\n resolve,\n execute,\n }\n\n return resolver\n}\n\nconst createResolver = <\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>,\n): GlobalResolver<TParams, TReturns, TViewer, TInfo> => {\n return dynamicCreateResolver(options)\n}\n\nconst createModelResolver = <\n TItem = any,\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>,\n): ModelResolver<TItem, TParams, TReturns, TViewer, TInfo> => {\n return dynamicCreateResolver(options)\n}\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst resolver = createResolver\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst modelResolver = createModelResolver\n\nexport {createResolver, createModelResolver, resolver, modelResolver}\n","import {Schema} from '@orion-js/schema'\nimport {ModelResolver, ModelResolverResolve} from '../resolver/types'\n\nexport interface SchemaWithResolversResolversMap<TSchema> {\n [key: string]: ModelResolver<ModelResolverResolve<TSchema>>\n}\n\nexport interface SchemaWithResolversOptions<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n> {\n name: TModelName\n schema: TSchema\n resolvers?: TTypeResolvers\n}\n\nexport function internal_schemaWithResolvers<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(options: SchemaWithResolversOptions<TModelName, TSchema, TTypeResolvers>) {\n const {name, schema, resolvers} = options\n return {\n __modelName: name,\n __resolvers: resolvers,\n ...schema,\n }\n}\n\n/**\n * This method is used to give backwards compatibility to models.initItem\n */\nexport function internal_appendResolversToItem<\n TItem,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(item: TItem, resolvers: TTypeResolvers) {\n const newItem = {...item} as any\n\n for (const resolverName in resolvers) {\n newItem[resolverName] = (...args: any[]) => resolvers[resolverName].resolve(newItem, ...args)\n }\n\n return newItem as TItem & {\n [key in keyof TTypeResolvers]: RemoveFirstArg<TTypeResolvers[key]>\n }\n}\n\ntype RemoveFirstArg<T> = T extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never\n"],"mappings":"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","names":["executeOptions","import_helpers","import_schema","resolver"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Blackbox, InferSchemaType, SchemaFieldType, Schema } from '@orion-js/schema';
|
|
1
|
+
import { InferSchemaType, SchemaFieldType, Blackbox, Schema } from '@orion-js/schema';
|
|
3
2
|
|
|
4
3
|
type GlobalResolverResolve<TParams = any, TReturns = any, TViewer = any, TInfo = any> = (params?: InferSchemaType<TParams>, viewer?: TViewer, info?: TInfo) => Promise<InferSchemaType<TReturns>>;
|
|
5
|
-
type ModelResolverResolve<TItem = any, TParams = any, TReturns = any, TViewer = any, TInfo = any> = (item?: TItem, params?: InferSchemaType<TParams>, viewer?: TViewer, info?: TInfo) => Promise<InferSchemaType<TReturns>>;
|
|
4
|
+
type ModelResolverResolve<TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = (item?: TItem, params?: InferSchemaType<TParams>, viewer?: TViewer, info?: TInfo) => Promise<InferSchemaType<TReturns>>;
|
|
6
5
|
type GlobalCheckPermissions = (params: any, viewer: any, info?: any) => Promise<string>;
|
|
7
6
|
type ModelCheckPermissions = (parent: any, params: any, viewer: any, info?: any) => Promise<string>;
|
|
8
7
|
type GlobalGetCacheKey = (params: any, viewer: any, info: any) => Promise<any>;
|
|
@@ -24,33 +23,31 @@ interface ExecuteParams<Resolve = Function, IsModel = undefined> {
|
|
|
24
23
|
info?: any;
|
|
25
24
|
}
|
|
26
25
|
type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType<Resolve>;
|
|
27
|
-
interface SharedResolverOptions<TParams = any, TReturns = any> {
|
|
26
|
+
interface SharedResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any> {
|
|
28
27
|
resolverId?: string;
|
|
29
28
|
params?: TParams;
|
|
30
29
|
returns?: TReturns;
|
|
31
30
|
mutation?: boolean;
|
|
32
31
|
private?: boolean;
|
|
33
|
-
checkPermission?: GlobalCheckPermissions | ModelCheckPermissions;
|
|
34
|
-
getCacheKey?: GlobalGetCacheKey | ModelGetCacheKey;
|
|
35
|
-
cache?: number;
|
|
36
|
-
cacheProvider?: OrionCache;
|
|
37
|
-
permissionsOptions?: any;
|
|
38
32
|
middlewares?: ResolverMiddleware[];
|
|
39
33
|
}
|
|
40
|
-
type GlobalResolverOptions<TParams = any, TReturns = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
34
|
+
type GlobalResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
41
35
|
resolve: GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>;
|
|
42
36
|
};
|
|
43
|
-
type ModelResolverOptions<TItem = any, TParams = any, TReturns = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
37
|
+
type ModelResolverOptions<TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
44
38
|
resolve: ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
45
39
|
};
|
|
46
|
-
type ResolverOptions<TParams = any, TReturns = any, TViewer = any, TInfo = any, TItem = any> = GlobalResolverOptions<TParams, TReturns, TViewer, TInfo> | ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
40
|
+
type ResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any, TItem = any> = GlobalResolverOptions<TParams, TReturns, TViewer, TInfo> | ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
47
41
|
type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
48
|
-
|
|
49
|
-
execute: Execute<
|
|
50
|
-
resolve:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
type GlobalResolver<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions & {
|
|
43
|
+
execute: Execute<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>, false>;
|
|
44
|
+
resolve: GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>;
|
|
45
|
+
};
|
|
46
|
+
type ModelResolver<TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions & {
|
|
47
|
+
execute: Execute<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>, true>;
|
|
48
|
+
resolve: ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
49
|
+
modelResolve: OmitFirstArg<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>>;
|
|
50
|
+
};
|
|
54
51
|
interface PermissionCheckerOptions {
|
|
55
52
|
resolver: GlobalResolverOptions | ModelResolverOptions;
|
|
56
53
|
parent: any;
|
|
@@ -63,14 +60,6 @@ type ResolverMiddleware = (executeOptions: ExecuteOptions, next: () => Promise<a
|
|
|
63
60
|
|
|
64
61
|
declare function createResolverMiddleware(middleware: ResolverMiddleware): ResolverMiddleware;
|
|
65
62
|
|
|
66
|
-
declare function export_default$2(executeOptions: ExecuteOptions, options: ResolverOptions): Promise<void>;
|
|
67
|
-
|
|
68
|
-
declare const addPermissionChecker: (func: PermissionChecker) => void;
|
|
69
|
-
|
|
70
|
-
declare function export_default$1(rawParams: any): any;
|
|
71
|
-
|
|
72
|
-
declare function export_default(rawReturns: any): any;
|
|
73
|
-
|
|
74
63
|
declare function getResolverArgs(...args: any[]): {
|
|
75
64
|
parent: any;
|
|
76
65
|
params: any;
|
|
@@ -83,16 +72,16 @@ declare function getResolverArgs(...args: any[]): {
|
|
|
83
72
|
parent?: undefined;
|
|
84
73
|
};
|
|
85
74
|
|
|
86
|
-
declare const createResolver: <TParams extends SchemaFieldType =
|
|
87
|
-
declare const createModelResolver: <TItem = any, TParams extends SchemaFieldType =
|
|
75
|
+
declare const createResolver: <TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => GlobalResolver<TParams, TReturns, TViewer, TInfo>;
|
|
76
|
+
declare const createModelResolver: <TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
88
77
|
/**
|
|
89
78
|
* @deprecated Use createResolver and createModelResolver instead
|
|
90
79
|
*/
|
|
91
|
-
declare const resolver: <TParams extends SchemaFieldType =
|
|
80
|
+
declare const resolver: <TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => GlobalResolver<TParams, TReturns, TViewer, TInfo>;
|
|
92
81
|
/**
|
|
93
82
|
* @deprecated Use createResolver and createModelResolver instead
|
|
94
83
|
*/
|
|
95
|
-
declare const modelResolver: <TItem = any, TParams extends SchemaFieldType =
|
|
84
|
+
declare const modelResolver: <TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
96
85
|
|
|
97
86
|
interface SchemaWithResolversResolversMap<TSchema> {
|
|
98
87
|
[key: string]: ModelResolver<ModelResolverResolve<TSchema>>;
|
|
@@ -112,4 +101,4 @@ declare function internal_schemaWithResolvers<TModelName extends string, TSchema
|
|
|
112
101
|
declare function internal_appendResolversToItem<TItem, TSchema extends Schema, TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>>(item: TItem, resolvers: TTypeResolvers): TItem & { [key in keyof TTypeResolvers]: RemoveFirstArg<TTypeResolvers[key]>; };
|
|
113
102
|
type RemoveFirstArg<T> = T extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
114
103
|
|
|
115
|
-
export { type Execute, type ExecuteOptions, type ExecuteParams, type GlobalCheckPermissions, type GlobalGetCacheKey, type GlobalResolverOptions, type GlobalResolverResolve, type ModelCheckPermissions, type ModelGetCacheKey, type ModelResolver, type ModelResolverOptions, type ModelResolverResolve, type PermissionChecker, type PermissionCheckerOptions, type
|
|
104
|
+
export { type Execute, type ExecuteOptions, type ExecuteParams, type GlobalCheckPermissions, type GlobalGetCacheKey, type GlobalResolver, type GlobalResolverOptions, type GlobalResolverResolve, type ModelCheckPermissions, type ModelGetCacheKey, type ModelResolver, type ModelResolverOptions, type ModelResolverResolve, type PermissionChecker, type PermissionCheckerOptions, type ResolverMiddleware, type ResolverOptions, type SchemaWithResolversOptions, type SchemaWithResolversResolversMap, type SharedResolverOptions, createModelResolver, createResolver, createResolverMiddleware, getResolverArgs, internal_appendResolversToItem, internal_schemaWithResolvers, modelResolver, resolver };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Blackbox, InferSchemaType, SchemaFieldType, Schema } from '@orion-js/schema';
|
|
1
|
+
import { InferSchemaType, SchemaFieldType, Blackbox, Schema } from '@orion-js/schema';
|
|
3
2
|
|
|
4
3
|
type GlobalResolverResolve<TParams = any, TReturns = any, TViewer = any, TInfo = any> = (params?: InferSchemaType<TParams>, viewer?: TViewer, info?: TInfo) => Promise<InferSchemaType<TReturns>>;
|
|
5
|
-
type ModelResolverResolve<TItem = any, TParams = any, TReturns = any, TViewer = any, TInfo = any> = (item?: TItem, params?: InferSchemaType<TParams>, viewer?: TViewer, info?: TInfo) => Promise<InferSchemaType<TReturns>>;
|
|
4
|
+
type ModelResolverResolve<TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = (item?: TItem, params?: InferSchemaType<TParams>, viewer?: TViewer, info?: TInfo) => Promise<InferSchemaType<TReturns>>;
|
|
6
5
|
type GlobalCheckPermissions = (params: any, viewer: any, info?: any) => Promise<string>;
|
|
7
6
|
type ModelCheckPermissions = (parent: any, params: any, viewer: any, info?: any) => Promise<string>;
|
|
8
7
|
type GlobalGetCacheKey = (params: any, viewer: any, info: any) => Promise<any>;
|
|
@@ -24,33 +23,31 @@ interface ExecuteParams<Resolve = Function, IsModel = undefined> {
|
|
|
24
23
|
info?: any;
|
|
25
24
|
}
|
|
26
25
|
type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType<Resolve>;
|
|
27
|
-
interface SharedResolverOptions<TParams = any, TReturns = any> {
|
|
26
|
+
interface SharedResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any> {
|
|
28
27
|
resolverId?: string;
|
|
29
28
|
params?: TParams;
|
|
30
29
|
returns?: TReturns;
|
|
31
30
|
mutation?: boolean;
|
|
32
31
|
private?: boolean;
|
|
33
|
-
checkPermission?: GlobalCheckPermissions | ModelCheckPermissions;
|
|
34
|
-
getCacheKey?: GlobalGetCacheKey | ModelGetCacheKey;
|
|
35
|
-
cache?: number;
|
|
36
|
-
cacheProvider?: OrionCache;
|
|
37
|
-
permissionsOptions?: any;
|
|
38
32
|
middlewares?: ResolverMiddleware[];
|
|
39
33
|
}
|
|
40
|
-
type GlobalResolverOptions<TParams = any, TReturns = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
34
|
+
type GlobalResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
41
35
|
resolve: GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>;
|
|
42
36
|
};
|
|
43
|
-
type ModelResolverOptions<TItem = any, TParams = any, TReturns = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
37
|
+
type ModelResolverOptions<TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions<TParams, TReturns> & {
|
|
44
38
|
resolve: ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
45
39
|
};
|
|
46
|
-
type ResolverOptions<TParams = any, TReturns = any, TViewer = any, TInfo = any, TItem = any> = GlobalResolverOptions<TParams, TReturns, TViewer, TInfo> | ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
40
|
+
type ResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any, TItem = any> = GlobalResolverOptions<TParams, TReturns, TViewer, TInfo> | ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
47
41
|
type OmitFirstArg<F> = F extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
48
|
-
|
|
49
|
-
execute: Execute<
|
|
50
|
-
resolve:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
type GlobalResolver<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions & {
|
|
43
|
+
execute: Execute<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>, false>;
|
|
44
|
+
resolve: GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>;
|
|
45
|
+
};
|
|
46
|
+
type ModelResolver<TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any> = SharedResolverOptions & {
|
|
47
|
+
execute: Execute<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>, true>;
|
|
48
|
+
resolve: ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
49
|
+
modelResolve: OmitFirstArg<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>>;
|
|
50
|
+
};
|
|
54
51
|
interface PermissionCheckerOptions {
|
|
55
52
|
resolver: GlobalResolverOptions | ModelResolverOptions;
|
|
56
53
|
parent: any;
|
|
@@ -63,14 +60,6 @@ type ResolverMiddleware = (executeOptions: ExecuteOptions, next: () => Promise<a
|
|
|
63
60
|
|
|
64
61
|
declare function createResolverMiddleware(middleware: ResolverMiddleware): ResolverMiddleware;
|
|
65
62
|
|
|
66
|
-
declare function export_default$2(executeOptions: ExecuteOptions, options: ResolverOptions): Promise<void>;
|
|
67
|
-
|
|
68
|
-
declare const addPermissionChecker: (func: PermissionChecker) => void;
|
|
69
|
-
|
|
70
|
-
declare function export_default$1(rawParams: any): any;
|
|
71
|
-
|
|
72
|
-
declare function export_default(rawReturns: any): any;
|
|
73
|
-
|
|
74
63
|
declare function getResolverArgs(...args: any[]): {
|
|
75
64
|
parent: any;
|
|
76
65
|
params: any;
|
|
@@ -83,16 +72,16 @@ declare function getResolverArgs(...args: any[]): {
|
|
|
83
72
|
parent?: undefined;
|
|
84
73
|
};
|
|
85
74
|
|
|
86
|
-
declare const createResolver: <TParams extends SchemaFieldType =
|
|
87
|
-
declare const createModelResolver: <TItem = any, TParams extends SchemaFieldType =
|
|
75
|
+
declare const createResolver: <TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => GlobalResolver<TParams, TReturns, TViewer, TInfo>;
|
|
76
|
+
declare const createModelResolver: <TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
88
77
|
/**
|
|
89
78
|
* @deprecated Use createResolver and createModelResolver instead
|
|
90
79
|
*/
|
|
91
|
-
declare const resolver: <TParams extends SchemaFieldType =
|
|
80
|
+
declare const resolver: <TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => GlobalResolver<TParams, TReturns, TViewer, TInfo>;
|
|
92
81
|
/**
|
|
93
82
|
* @deprecated Use createResolver and createModelResolver instead
|
|
94
83
|
*/
|
|
95
|
-
declare const modelResolver: <TItem = any, TParams extends SchemaFieldType =
|
|
84
|
+
declare const modelResolver: <TItem = any, TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<TItem, TParams, TReturns, TViewer, TInfo>;
|
|
96
85
|
|
|
97
86
|
interface SchemaWithResolversResolversMap<TSchema> {
|
|
98
87
|
[key: string]: ModelResolver<ModelResolverResolve<TSchema>>;
|
|
@@ -112,4 +101,4 @@ declare function internal_schemaWithResolvers<TModelName extends string, TSchema
|
|
|
112
101
|
declare function internal_appendResolversToItem<TItem, TSchema extends Schema, TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>>(item: TItem, resolvers: TTypeResolvers): TItem & { [key in keyof TTypeResolvers]: RemoveFirstArg<TTypeResolvers[key]>; };
|
|
113
102
|
type RemoveFirstArg<T> = T extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never;
|
|
114
103
|
|
|
115
|
-
export { type Execute, type ExecuteOptions, type ExecuteParams, type GlobalCheckPermissions, type GlobalGetCacheKey, type GlobalResolverOptions, type GlobalResolverResolve, type ModelCheckPermissions, type ModelGetCacheKey, type ModelResolver, type ModelResolverOptions, type ModelResolverResolve, type PermissionChecker, type PermissionCheckerOptions, type
|
|
104
|
+
export { type Execute, type ExecuteOptions, type ExecuteParams, type GlobalCheckPermissions, type GlobalGetCacheKey, type GlobalResolver, type GlobalResolverOptions, type GlobalResolverResolve, type ModelCheckPermissions, type ModelGetCacheKey, type ModelResolver, type ModelResolverOptions, type ModelResolverResolve, type PermissionChecker, type PermissionCheckerOptions, type ResolverMiddleware, type ResolverOptions, type SchemaWithResolversOptions, type SchemaWithResolversResolversMap, type SharedResolverOptions, createModelResolver, createResolver, createResolverMiddleware, getResolverArgs, internal_appendResolversToItem, internal_schemaWithResolvers, modelResolver, resolver };
|
package/dist/index.js
CHANGED
|
@@ -3,83 +3,6 @@ function createResolverMiddleware(middleware) {
|
|
|
3
3
|
return middleware;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
// src/resolver/permisionsCheckers.ts
|
|
7
|
-
import { PermissionsError } from "@orion-js/helpers";
|
|
8
|
-
global.checkers = [];
|
|
9
|
-
var addPermissionChecker = function(func) {
|
|
10
|
-
global.checkers.push(func);
|
|
11
|
-
};
|
|
12
|
-
var checkPermissions = async function(options) {
|
|
13
|
-
for (const checker of global.checkers) {
|
|
14
|
-
const errorMessage = await checker(options);
|
|
15
|
-
if (errorMessage) {
|
|
16
|
-
throw new PermissionsError(errorMessage);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
// src/resolver/getExecute/checkPermissions.ts
|
|
22
|
-
import { PermissionsError as PermissionsError2 } from "@orion-js/helpers";
|
|
23
|
-
async function checkPermissions_default(executeOptions, options) {
|
|
24
|
-
const { parent, params, viewer, info } = executeOptions;
|
|
25
|
-
if (viewer.app) return;
|
|
26
|
-
await checkPermissions({
|
|
27
|
-
resolver: options,
|
|
28
|
-
parent,
|
|
29
|
-
params,
|
|
30
|
-
viewer,
|
|
31
|
-
info
|
|
32
|
-
});
|
|
33
|
-
if (options.checkPermission) {
|
|
34
|
-
const execute = async () => {
|
|
35
|
-
if (parent) {
|
|
36
|
-
const checker2 = options.checkPermission;
|
|
37
|
-
return checker2(parent, params, viewer, info);
|
|
38
|
-
}
|
|
39
|
-
const checker = options.checkPermission;
|
|
40
|
-
return checker(params, viewer, info);
|
|
41
|
-
};
|
|
42
|
-
const error = await execute();
|
|
43
|
-
if (error) {
|
|
44
|
-
throw new PermissionsError2(error);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// src/resolver/cleanParams.ts
|
|
50
|
-
import { clone } from "@orion-js/helpers";
|
|
51
|
-
Symbol.metadata ?? (Symbol.metadata = Symbol("Symbol.metadata"));
|
|
52
|
-
function cleanParams_default(rawParams) {
|
|
53
|
-
var _a;
|
|
54
|
-
if (!rawParams) return;
|
|
55
|
-
if ((_a = rawParams[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
56
|
-
rawParams = rawParams[Symbol.metadata]._getModel();
|
|
57
|
-
}
|
|
58
|
-
if (rawParams.__isModel) {
|
|
59
|
-
rawParams = rawParams.getSchema();
|
|
60
|
-
}
|
|
61
|
-
const params = clone(rawParams);
|
|
62
|
-
Object.keys(params).forEach((key) => {
|
|
63
|
-
if (key.startsWith("__")) {
|
|
64
|
-
delete params[key];
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return params;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// src/resolver/cleanReturns.ts
|
|
71
|
-
function cleanReturns_default(rawReturns) {
|
|
72
|
-
var _a;
|
|
73
|
-
if (!rawReturns) return;
|
|
74
|
-
if ((_a = rawReturns[Symbol.metadata]) == null ? void 0 : _a._getModel) {
|
|
75
|
-
return rawReturns[Symbol.metadata]._getModel();
|
|
76
|
-
}
|
|
77
|
-
if (rawReturns.getModel) {
|
|
78
|
-
return rawReturns.getModel();
|
|
79
|
-
}
|
|
80
|
-
return rawReturns;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
6
|
// src/resolver/getArgs.ts
|
|
84
7
|
function getResolverArgs(...args) {
|
|
85
8
|
if (args.length === 4) {
|
|
@@ -100,73 +23,12 @@ function getResolverArgs(...args) {
|
|
|
100
23
|
throw new Error("A resolver must be called with 2 parameters only");
|
|
101
24
|
}
|
|
102
25
|
|
|
103
|
-
// src/resolver/getExecute/
|
|
104
|
-
import {
|
|
105
|
-
import { clone as clone2 } from "@orion-js/helpers";
|
|
106
|
-
function getType(type) {
|
|
107
|
-
if (Array.isArray(type)) {
|
|
108
|
-
return [getType(type[0])];
|
|
109
|
-
}
|
|
110
|
-
if (isSchemaLike(type)) {
|
|
111
|
-
return getSchemaFromAnyOrionForm(type);
|
|
112
|
-
}
|
|
113
|
-
return type;
|
|
114
|
-
}
|
|
115
|
-
function getSchema(resolverParams) {
|
|
116
|
-
const schema = {};
|
|
117
|
-
for (const key of Object.keys(resolverParams)) {
|
|
118
|
-
const field = clone2(resolverParams[key]);
|
|
119
|
-
if (!field) continue;
|
|
120
|
-
field.type = getType(field.type);
|
|
121
|
-
schema[key] = field;
|
|
122
|
-
}
|
|
123
|
-
return schema;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// src/resolver/getExecute/cleanAndValidate.ts
|
|
127
|
-
import { validate, clean } from "@orion-js/schema";
|
|
128
|
-
async function cleanAndValidate({
|
|
129
|
-
params,
|
|
130
|
-
callParams
|
|
131
|
-
}) {
|
|
132
|
-
if (!callParams) callParams = {};
|
|
133
|
-
if (params) {
|
|
134
|
-
const options = {
|
|
135
|
-
filter: false,
|
|
136
|
-
removeEmptyStrings: false
|
|
137
|
-
};
|
|
138
|
-
const schema = getSchema(params);
|
|
139
|
-
const cleaned = await clean(schema, callParams, options);
|
|
140
|
-
await validate(schema, cleaned, options);
|
|
141
|
-
return cleaned;
|
|
142
|
-
}
|
|
143
|
-
return callParams;
|
|
144
|
-
}
|
|
26
|
+
// src/resolver/getExecute/index.ts
|
|
27
|
+
import { clean, cleanAndValidate } from "@orion-js/schema";
|
|
145
28
|
|
|
146
29
|
// src/resolver/getExecute/getResultWithMiddlewares.ts
|
|
147
30
|
import { composeMiddlewares } from "@orion-js/helpers";
|
|
148
31
|
|
|
149
|
-
// src/resolver/getExecute/getCacheKey.ts
|
|
150
|
-
import { hashObject } from "@orion-js/helpers";
|
|
151
|
-
var getBaseKey = async (executeOptions) => {
|
|
152
|
-
const { parent, params, viewer, info, options } = executeOptions;
|
|
153
|
-
if (parent) {
|
|
154
|
-
const getKey2 = options.getCacheKey;
|
|
155
|
-
return await getKey2(parent, params, viewer, info);
|
|
156
|
-
}
|
|
157
|
-
const getKey = options.getCacheKey;
|
|
158
|
-
return await getKey(params, viewer, info);
|
|
159
|
-
};
|
|
160
|
-
async function getCacheKey_default(executeOptions) {
|
|
161
|
-
const { parent, params, options } = executeOptions;
|
|
162
|
-
if (options.getCacheKey) {
|
|
163
|
-
const baseKey = await getBaseKey(executeOptions);
|
|
164
|
-
return `${options.resolverId}_${baseKey}`;
|
|
165
|
-
}
|
|
166
|
-
const key = hashObject({ parent, params, resolverId: options.resolverId });
|
|
167
|
-
return key;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
32
|
// src/resolver/getExecute/getResult.ts
|
|
171
33
|
async function getResult_default(executeOptions) {
|
|
172
34
|
const { parent, params, viewer, info, options } = executeOptions;
|
|
@@ -177,14 +39,6 @@ async function getResult_default(executeOptions) {
|
|
|
177
39
|
}
|
|
178
40
|
return await resultFunc(params, viewer, info);
|
|
179
41
|
};
|
|
180
|
-
if (options.cache && options.cacheProvider) {
|
|
181
|
-
const key = await getCacheKey_default(executeOptions);
|
|
182
|
-
const result = await options.cacheProvider.get(key, {
|
|
183
|
-
fallback: executeResolver,
|
|
184
|
-
ttl: options.cache
|
|
185
|
-
});
|
|
186
|
-
return result.value;
|
|
187
|
-
}
|
|
188
42
|
return await executeResolver();
|
|
189
43
|
}
|
|
190
44
|
|
|
@@ -204,17 +58,16 @@ async function getResultWithMiddlewares(executeOptions) {
|
|
|
204
58
|
function getExecute(options) {
|
|
205
59
|
const execute = async (executeParams) => {
|
|
206
60
|
const executeOptions = {
|
|
207
|
-
params: await cleanAndValidate({
|
|
208
|
-
params: options.params,
|
|
209
|
-
callParams: executeParams.params
|
|
210
|
-
}),
|
|
61
|
+
params: options.params ? await cleanAndValidate(options.params, executeParams.params ?? {}) : executeParams.params ?? {},
|
|
211
62
|
viewer: executeParams.viewer || {},
|
|
212
63
|
info: executeParams.info || {},
|
|
213
64
|
parent: executeParams.parent,
|
|
214
65
|
options
|
|
215
66
|
};
|
|
216
|
-
await checkPermissions_default(executeOptions, options);
|
|
217
67
|
const result = await getResultWithMiddlewares(executeOptions);
|
|
68
|
+
if (options.returns) {
|
|
69
|
+
return await clean(options.returns, result);
|
|
70
|
+
}
|
|
218
71
|
return result;
|
|
219
72
|
};
|
|
220
73
|
return execute;
|
|
@@ -222,13 +75,10 @@ function getExecute(options) {
|
|
|
222
75
|
|
|
223
76
|
// src/resolver/index.ts
|
|
224
77
|
import { generateId } from "@orion-js/helpers";
|
|
225
|
-
import {
|
|
78
|
+
import { getSchemaFromAnyOrionForm } from "@orion-js/schema";
|
|
226
79
|
function dynamicCreateResolver(options) {
|
|
227
|
-
options.params =
|
|
228
|
-
options.returns =
|
|
229
|
-
if (!options.cacheProvider) {
|
|
230
|
-
options.cacheProvider = defaultCache;
|
|
231
|
-
}
|
|
80
|
+
options.params = getSchemaFromAnyOrionForm(options.params);
|
|
81
|
+
options.returns = getSchemaFromAnyOrionForm(options.returns);
|
|
232
82
|
if (!options.resolverId) {
|
|
233
83
|
options.resolverId = generateId();
|
|
234
84
|
}
|
|
@@ -273,10 +123,6 @@ function internal_appendResolversToItem(item, resolvers) {
|
|
|
273
123
|
return newItem;
|
|
274
124
|
}
|
|
275
125
|
export {
|
|
276
|
-
addPermissionChecker,
|
|
277
|
-
checkPermissions_default as checkPermissions,
|
|
278
|
-
cleanParams_default as cleanParams,
|
|
279
|
-
cleanReturns_default as cleanReturns,
|
|
280
126
|
createModelResolver,
|
|
281
127
|
createResolver,
|
|
282
128
|
createResolverMiddleware,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createResolverMiddleware.ts","../src/resolver/permisionsCheckers.ts","../src/resolver/getExecute/checkPermissions.ts","../src/resolver/cleanParams.ts","../src/resolver/cleanReturns.ts","../src/resolver/getArgs.ts","../src/resolver/getExecute/getSchema.ts","../src/resolver/getExecute/cleanAndValidate.ts","../src/resolver/getExecute/getResultWithMiddlewares.ts","../src/resolver/getExecute/getCacheKey.ts","../src/resolver/getExecute/getResult.ts","../src/resolver/getExecute/index.ts","../src/resolver/index.ts","../src/schemaWithResolvers/index.ts"],"sourcesContent":["import {ResolverMiddleware} from './resolver/types'\n\nexport function createResolverMiddleware(middleware: ResolverMiddleware) {\n return middleware\n}\n","import {PermissionsError} from '@orion-js/helpers'\nimport {PermissionChecker, PermissionCheckerOptions} from './types'\n\ndeclare const global: {\n checkers: PermissionChecker[]\n}\n\nglobal.checkers = []\n\nexport const addPermissionChecker = function (func: PermissionChecker) {\n global.checkers.push(func)\n}\n\nexport const checkPermissions = async function (options: PermissionCheckerOptions) {\n for (const checker of global.checkers) {\n const errorMessage = await checker(options)\n if (errorMessage) {\n throw new PermissionsError(errorMessage)\n }\n }\n}\n","import {checkPermissions} from '../permisionsCheckers'\nimport {PermissionsError} from '@orion-js/helpers'\nimport {\n ExecuteOptions,\n GlobalCheckPermissions,\n ModelCheckPermissions,\n ResolverOptions,\n} from '../types'\n\nexport default async function (executeOptions: ExecuteOptions, options: ResolverOptions) {\n const {parent, params, viewer, info} = executeOptions\n\n if (viewer.app) return\n\n await checkPermissions({\n resolver: options,\n parent,\n params,\n viewer,\n info,\n })\n\n if (options.checkPermission) {\n const execute = async () => {\n if (parent) {\n const checker = options.checkPermission as ModelCheckPermissions\n return checker(parent, params, viewer, info)\n }\n const checker = options.checkPermission as GlobalCheckPermissions\n return checker(params, viewer, info)\n }\n\n const error = await execute()\n if (error) {\n throw new PermissionsError(error)\n }\n }\n}\n","import {clone} from '@orion-js/helpers'\n\n// @ts-ignore polyfill for Symbol.metadata // https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#decorator-metadata\nSymbol.metadata ??= Symbol('Symbol.metadata')\n\nexport default function (rawParams: any) {\n if (!rawParams) return\n\n // for typed model\n if (rawParams[Symbol.metadata]?._getModel) {\n rawParams = rawParams[Symbol.metadata]._getModel()\n }\n\n if (rawParams.__isModel) {\n rawParams = rawParams.getSchema()\n }\n\n const params = clone(rawParams)\n Object.keys(params).forEach(key => {\n if (key.startsWith('__')) {\n delete params[key]\n }\n })\n\n return params\n}\n","export default function (rawReturns: any) {\n if (!rawReturns) return\n\n // for typed model\n if (rawReturns[Symbol.metadata]?._getModel) {\n return rawReturns[Symbol.metadata]._getModel()\n }\n\n // for typed model\n if (rawReturns.getModel) {\n return rawReturns.getModel()\n }\n\n return rawReturns\n}\n","export function getResolverArgs(...args: any[]) {\n if (args.length === 4) {\n return {\n parent: args[0],\n params: args[1] || {},\n viewer: args[2] || {},\n info: args[3] || {},\n }\n }\n if (args.length < 4) {\n return {\n params: args[0] || {},\n viewer: args[1] || {},\n info: args[2] || {},\n }\n }\n throw new Error('A resolver must be called with 2 parameters only')\n}\n","import {getSchemaFromAnyOrionForm, isSchemaLike, Schema} from '@orion-js/schema'\nimport {clone} from '@orion-js/helpers'\n\nfunction getType(type: any) {\n if (Array.isArray(type)) {\n return [getType(type[0])]\n }\n\n if (isSchemaLike(type)) {\n return getSchemaFromAnyOrionForm(type)\n }\n\n return type\n}\n\nexport default function getSchema(resolverParams: any) {\n const schema: Schema = {}\n\n for (const key of Object.keys(resolverParams)) {\n const field = clone(resolverParams[key])\n if (!field) continue\n\n field.type = getType(field.type)\n\n schema[key] = field\n }\n\n return schema\n}\n","import getSchema from './getSchema'\nimport {validate, clean} from '@orion-js/schema'\n\nexport default async function cleanAndValidate({\n params,\n callParams,\n}: {params: any; callParams: any}) {\n if (!callParams) callParams = {}\n\n if (params) {\n const options = {\n filter: false,\n removeEmptyStrings: false,\n }\n const schema = getSchema(params)\n const cleaned = await clean(schema, callParams, options)\n await validate(schema, cleaned, options)\n return cleaned\n }\n\n return callParams\n}\n","import {composeMiddlewares} from '@orion-js/helpers'\nimport {createResolverMiddleware} from '../../createResolverMiddleware'\nimport {ExecuteOptions} from '../types'\nimport getResult from './getResult'\n\nexport async function getResultWithMiddlewares(executeOptions: ExecuteOptions) {\n const resolveMiddleware = createResolverMiddleware(async executeOptions => {\n return await getResult(executeOptions)\n })\n\n const composedMiddlewares = composeMiddlewares([\n ...(executeOptions.options.middlewares || []),\n resolveMiddleware,\n ])\n\n return await composedMiddlewares(executeOptions)\n}\n","import {hashObject} from '@orion-js/helpers'\nimport {ExecuteOptions, ModelGetCacheKey, GlobalGetCacheKey} from '../types'\n\nconst getBaseKey = async (executeOptions: ExecuteOptions) => {\n const {parent, params, viewer, info, options} = executeOptions\n if (parent) {\n const getKey = options.getCacheKey as ModelGetCacheKey\n return await getKey(parent, params, viewer, info)\n }\n const getKey = options.getCacheKey as GlobalGetCacheKey\n return await getKey(params, viewer, info)\n}\n\nexport default async function (executeOptions: ExecuteOptions): Promise<string> {\n const {parent, params, options} = executeOptions\n if (options.getCacheKey) {\n const baseKey = await getBaseKey(executeOptions)\n return `${options.resolverId}_${baseKey}`\n }\n const key = hashObject({parent, params, resolverId: options.resolverId})\n return key\n}\n","import getCacheKey from './getCacheKey'\nimport {ExecuteOptions} from '../types'\n\nexport default async function (executeOptions: ExecuteOptions) {\n const {parent, params, viewer, info, options} = executeOptions\n const executeResolver = async (): Promise<any> => {\n const resultFunc = options.resolve as (...args: any) => any\n if (parent) {\n return await resultFunc(parent, params, viewer, info)\n }\n return await resultFunc(params, viewer, info)\n }\n\n if (options.cache && options.cacheProvider) {\n const key = await getCacheKey(executeOptions)\n const result = await options.cacheProvider.get(key, {\n fallback: executeResolver,\n ttl: options.cache,\n })\n return result.value\n }\n return await executeResolver()\n}\n","import checkPermissions from './checkPermissions'\nimport cleanAndValidate from './cleanAndValidate'\nimport {ResolverOptions, Execute, ExecuteOptions} from '../types'\nimport {getResultWithMiddlewares} from './getResultWithMiddlewares'\n\nexport default function getExecute(options: ResolverOptions) {\n const execute: Execute = async executeParams => {\n const executeOptions: ExecuteOptions = {\n params: await cleanAndValidate({\n params: options.params,\n callParams: executeParams.params,\n }),\n viewer: executeParams.viewer || {},\n info: executeParams.info || {},\n parent: executeParams.parent,\n options: options,\n }\n\n await checkPermissions(executeOptions, options)\n\n const result = await getResultWithMiddlewares(executeOptions)\n\n return result\n }\n\n return execute\n}\n","import getExecute from './getExecute'\nimport cleanParams from './cleanParams'\nimport {generateId} from '@orion-js/helpers'\nimport {\n GlobalResolverOptions,\n GlobalResolverResolve,\n ModelResolver,\n ModelResolverOptions,\n ModelResolverResolve,\n Resolver,\n} from './types'\nimport {defaultCache} from '@orion-js/cache'\nimport cleanReturns from './cleanReturns'\nimport {getResolverArgs} from './getArgs'\nimport {SchemaFieldType} from '@orion-js/schema'\n\nfunction dynamicCreateResolver(options: any) {\n options.params = cleanParams(options.params)\n options.returns = cleanReturns(options.returns)\n\n if (!options.cacheProvider) {\n options.cacheProvider = defaultCache\n }\n\n if (!options.resolverId) {\n options.resolverId = generateId()\n }\n\n if (!options.middlewares) {\n options.middlewares = []\n }\n\n const execute = getExecute(options)\n\n const resolve = async (...args: any[]) => {\n const params: any = getResolverArgs(...args)\n return await execute(params)\n }\n\n const resolver = {\n ...options,\n resolve,\n execute,\n }\n\n return resolver\n}\n\nconst createResolver = <\n TParams extends SchemaFieldType = SchemaFieldType,\n TReturns extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n TInfo = any,\n>(\n options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>,\n): Resolver<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>> => {\n return dynamicCreateResolver(options)\n}\n\nconst createModelResolver = <\n TItem = any,\n TParams extends SchemaFieldType = SchemaFieldType,\n TReturns extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n TInfo = any,\n>(\n options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>,\n): ModelResolver<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>> => {\n return dynamicCreateResolver(options)\n}\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst resolver = createResolver\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst modelResolver = createModelResolver\n\nexport {createResolver, createModelResolver, resolver, modelResolver}\n","import {Schema} from '@orion-js/schema'\nimport {ModelResolver, ModelResolverResolve} from '../resolver/types'\n\nexport interface SchemaWithResolversResolversMap<TSchema> {\n [key: string]: ModelResolver<ModelResolverResolve<TSchema>>\n}\n\nexport interface SchemaWithResolversOptions<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n> {\n name: TModelName\n schema: TSchema\n resolvers?: TTypeResolvers\n}\n\nexport function internal_schemaWithResolvers<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(options: SchemaWithResolversOptions<TModelName, TSchema, TTypeResolvers>) {\n const {name, schema, resolvers} = options\n return {\n __modelName: name,\n __resolvers: resolvers,\n ...schema,\n }\n}\n\n/**\n * This method is used to give backwards compatibility to models.initItem\n */\nexport function internal_appendResolversToItem<\n TItem,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(item: TItem, resolvers: TTypeResolvers) {\n const newItem = {...item} as any\n\n for (const resolverName in resolvers) {\n newItem[resolverName] = (...args: any[]) => resolvers[resolverName].resolve(newItem, ...args)\n }\n\n return newItem as TItem & {\n [key in keyof TTypeResolvers]: RemoveFirstArg<TTypeResolvers[key]>\n }\n}\n\ntype RemoveFirstArg<T> = T extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never\n"],"mappings":"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","names":["PermissionsError","checker","clone","getKey","executeOptions","resolver"]}
|
|
1
|
+
{"version":3,"sources":["../src/createResolverMiddleware.ts","../src/resolver/getArgs.ts","../src/resolver/getExecute/index.ts","../src/resolver/getExecute/getResultWithMiddlewares.ts","../src/resolver/getExecute/getResult.ts","../src/resolver/index.ts","../src/schemaWithResolvers/index.ts"],"sourcesContent":["import {ResolverMiddleware} from './resolver/types'\n\nexport function createResolverMiddleware(middleware: ResolverMiddleware) {\n return middleware\n}\n","export function getResolverArgs(...args: any[]) {\n if (args.length === 4) {\n return {\n parent: args[0],\n params: args[1] || {},\n viewer: args[2] || {},\n info: args[3] || {},\n }\n }\n if (args.length < 4) {\n return {\n params: args[0] || {},\n viewer: args[1] || {},\n info: args[2] || {},\n }\n }\n throw new Error('A resolver must be called with 2 parameters only')\n}\n","import {clean, cleanAndValidate} from '@orion-js/schema'\nimport {ResolverOptions, Execute, ExecuteOptions} from '../types'\nimport {getResultWithMiddlewares} from './getResultWithMiddlewares'\n\nexport default function getExecute(options: ResolverOptions) {\n const execute: Execute = async executeParams => {\n const executeOptions: ExecuteOptions = {\n params: options.params\n ? await cleanAndValidate(options.params, executeParams.params ?? {})\n : (executeParams.params ?? {}),\n viewer: executeParams.viewer || {},\n info: executeParams.info || {},\n parent: executeParams.parent,\n options: options,\n }\n\n const result = await getResultWithMiddlewares(executeOptions)\n\n if (options.returns) {\n return await clean(options.returns, result)\n }\n\n return result\n }\n\n return execute\n}\n","import {composeMiddlewares} from '@orion-js/helpers'\nimport {createResolverMiddleware} from '../../createResolverMiddleware'\nimport {ExecuteOptions} from '../types'\nimport getResult from './getResult'\n\nexport async function getResultWithMiddlewares(executeOptions: ExecuteOptions) {\n const resolveMiddleware = createResolverMiddleware(async executeOptions => {\n return await getResult(executeOptions)\n })\n\n const composedMiddlewares = composeMiddlewares([\n ...(executeOptions.options.middlewares || []),\n resolveMiddleware,\n ])\n\n return await composedMiddlewares(executeOptions)\n}\n","import {ExecuteOptions} from '../types'\n\nexport default async function (executeOptions: ExecuteOptions) {\n const {parent, params, viewer, info, options} = executeOptions\n const executeResolver = async (): Promise<any> => {\n const resultFunc = options.resolve as (...args: any) => any\n if (parent) {\n return await resultFunc(parent, params, viewer, info)\n }\n return await resultFunc(params, viewer, info)\n }\n\n return await executeResolver()\n}\n","import getExecute from './getExecute'\nimport {generateId} from '@orion-js/helpers'\nimport {GlobalResolverOptions, ModelResolver, ModelResolverOptions, GlobalResolver} from './types'\nimport {getResolverArgs} from './getArgs'\nimport {getSchemaFromAnyOrionForm, SchemaFieldType} from '@orion-js/schema'\n\nfunction dynamicCreateResolver(options: any) {\n options.params = getSchemaFromAnyOrionForm(options.params)\n options.returns = getSchemaFromAnyOrionForm(options.returns)\n\n if (!options.resolverId) {\n options.resolverId = generateId()\n }\n\n if (!options.middlewares) {\n options.middlewares = []\n }\n\n const execute = getExecute(options)\n\n const resolve = async (...args: any[]) => {\n const params: any = getResolverArgs(...args)\n return await execute(params)\n }\n\n const resolver = {\n ...options,\n resolve,\n execute,\n }\n\n return resolver\n}\n\nconst createResolver = <\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>,\n): GlobalResolver<TParams, TReturns, TViewer, TInfo> => {\n return dynamicCreateResolver(options)\n}\n\nconst createModelResolver = <\n TItem = any,\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>,\n): ModelResolver<TItem, TParams, TReturns, TViewer, TInfo> => {\n return dynamicCreateResolver(options)\n}\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst resolver = createResolver\n\n/**\n * @deprecated Use createResolver and createModelResolver instead\n */\nconst modelResolver = createModelResolver\n\nexport {createResolver, createModelResolver, resolver, modelResolver}\n","import {Schema} from '@orion-js/schema'\nimport {ModelResolver, ModelResolverResolve} from '../resolver/types'\n\nexport interface SchemaWithResolversResolversMap<TSchema> {\n [key: string]: ModelResolver<ModelResolverResolve<TSchema>>\n}\n\nexport interface SchemaWithResolversOptions<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n> {\n name: TModelName\n schema: TSchema\n resolvers?: TTypeResolvers\n}\n\nexport function internal_schemaWithResolvers<\n TModelName extends string,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(options: SchemaWithResolversOptions<TModelName, TSchema, TTypeResolvers>) {\n const {name, schema, resolvers} = options\n return {\n __modelName: name,\n __resolvers: resolvers,\n ...schema,\n }\n}\n\n/**\n * This method is used to give backwards compatibility to models.initItem\n */\nexport function internal_appendResolversToItem<\n TItem,\n TSchema extends Schema,\n TTypeResolvers extends SchemaWithResolversResolversMap<TSchema>,\n>(item: TItem, resolvers: TTypeResolvers) {\n const newItem = {...item} as any\n\n for (const resolverName in resolvers) {\n newItem[resolverName] = (...args: any[]) => resolvers[resolverName].resolve(newItem, ...args)\n }\n\n return newItem as TItem & {\n [key in keyof TTypeResolvers]: RemoveFirstArg<TTypeResolvers[key]>\n }\n}\n\ntype RemoveFirstArg<T> = T extends (x: any, ...args: infer P) => infer R ? (...args: P) => R : never\n"],"mappings":"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","names":["executeOptions","resolver"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/resolvers",
|
|
3
|
-
"version": "4.0.0
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -9,9 +9,8 @@
|
|
|
9
9
|
"author": "nicolaslopezj",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@orion-js/
|
|
13
|
-
"@orion-js/
|
|
14
|
-
"@orion-js/schema": "4.0.0-next.6"
|
|
12
|
+
"@orion-js/helpers": "4.0.0",
|
|
13
|
+
"@orion-js/schema": "4.0.0"
|
|
15
14
|
},
|
|
16
15
|
"devDependencies": {
|
|
17
16
|
"@types/node": "^18.0.0",
|