@orion-js/resolvers 4.0.0-next.8 → 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 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/getSchema.ts
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 import_helpers6 = require("@orion-js/helpers");
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, import_helpers6.composeMiddlewares)([
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 import_helpers7 = require("@orion-js/helpers");
261
- var import_cache = require("@orion-js/cache");
109
+ var import_helpers2 = require("@orion-js/helpers");
110
+ var import_schema2 = require("@orion-js/schema");
262
111
  function dynamicCreateResolver(options) {
263
- options.params = cleanParams_default(options.params);
264
- options.returns = cleanReturns_default(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, import_helpers7.generateId)();
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,
@@ -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 { OrionCache } from '@orion-js/cache';
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
- interface Resolver<Resolve = Function, IsModel = undefined> extends SharedResolverOptions {
49
- execute: Execute<Resolve, IsModel>;
50
- resolve: Resolve;
51
- modelResolve: IsModel extends undefined ? undefined : OmitFirstArg<Resolve>;
52
- }
53
- type ModelResolver<Resolve = Function> = Resolver<Resolve, true>;
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 = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => Resolver<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>>;
87
- declare const createModelResolver: <TItem = any, TParams extends SchemaFieldType = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>>;
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 = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => Resolver<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>>;
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 = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>>;
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 Resolver, type ResolverMiddleware, type ResolverOptions, type SchemaWithResolversOptions, type SchemaWithResolversResolversMap, type SharedResolverOptions, addPermissionChecker, export_default$2 as checkPermissions, export_default$1 as cleanParams, export_default as cleanReturns, createModelResolver, createResolver, createResolverMiddleware, getResolverArgs, internal_appendResolversToItem, internal_schemaWithResolvers, modelResolver, resolver };
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 { OrionCache } from '@orion-js/cache';
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
- interface Resolver<Resolve = Function, IsModel = undefined> extends SharedResolverOptions {
49
- execute: Execute<Resolve, IsModel>;
50
- resolve: Resolve;
51
- modelResolve: IsModel extends undefined ? undefined : OmitFirstArg<Resolve>;
52
- }
53
- type ModelResolver<Resolve = Function> = Resolver<Resolve, true>;
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 = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => Resolver<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>>;
87
- declare const createModelResolver: <TItem = any, TParams extends SchemaFieldType = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>>;
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 = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>) => Resolver<GlobalResolverResolve<TParams, TReturns, TViewer, TInfo>>;
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 = SchemaFieldType, TReturns extends SchemaFieldType = SchemaFieldType, TViewer = any, TInfo = any>(options: ModelResolverOptions<TItem, TParams, TReturns, TViewer, TInfo>) => ModelResolver<ModelResolverResolve<TItem, TParams, TReturns, TViewer, TInfo>>;
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 Resolver, type ResolverMiddleware, type ResolverOptions, type SchemaWithResolversOptions, type SchemaWithResolversResolversMap, type SharedResolverOptions, addPermissionChecker, export_default$2 as checkPermissions, export_default$1 as cleanParams, export_default as cleanReturns, createModelResolver, createResolver, createResolverMiddleware, getResolverArgs, internal_appendResolversToItem, internal_schemaWithResolvers, modelResolver, resolver };
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/getSchema.ts
104
- import { getSchemaFromAnyOrionForm, isSchemaLike } from "@orion-js/schema";
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 { defaultCache } from "@orion-js/cache";
78
+ import { getSchemaFromAnyOrionForm } from "@orion-js/schema";
226
79
  function dynamicCreateResolver(options) {
227
- options.params = cleanParams_default(options.params);
228
- options.returns = cleanReturns_default(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-next.8",
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/cache": "4.0.0-next.8",
13
- "@orion-js/helpers": "4.0.0-next.8",
14
- "@orion-js/schema": "4.0.0-next.7"
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",