@orion-js/resolvers 4.1.4 → 4.1.6

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
@@ -97,25 +97,28 @@ function getExecute(options) {
97
97
  parent: executeParams.parent,
98
98
  options
99
99
  };
100
- const currentContext = (0, import_logger.getOrionAsyncContext)();
101
- const context = currentContext ? {
102
- ...currentContext,
103
- viewer: executeContext.viewer,
104
- params: executeContext.params,
105
- parentData: executeContext.parent,
106
- modelResolverName: executeContext.parent ? executeContext.options.resolverId : currentContext.controllerType === "modelResolver" ? currentContext.modelResolverName : void 0,
107
- resolverName: !executeContext.parent && currentContext.controllerType === "resolver" ? executeContext.options.resolverId : currentContext.controllerType === "resolver" ? currentContext.resolverName : void 0
108
- } : {
109
- controllerType: executeContext.parent ? "modelResolver" : "resolver",
110
- viewer: executeContext.viewer,
111
- params: executeContext.params,
112
- parentData: executeContext.parent,
113
- modelResolverName: executeContext.parent ? executeContext.options.resolverId : void 0,
114
- resolverName: !executeContext.parent ? executeContext.options.resolverId : void 0
115
- };
116
- const result = await (0, import_logger.runWithOrionAsyncContext)(context, async () => {
117
- return await getResultWithMiddlewares(executeContext);
118
- });
100
+ const result = executeContext.parent ? await (0, import_logger.runWithOrionAsyncContext)(
101
+ {
102
+ controllerType: "modelResolver",
103
+ viewer: executeContext.viewer,
104
+ params: executeContext.params,
105
+ parentData: executeContext.parent,
106
+ modelResolverName: executeContext.options.resolverName || "unknown"
107
+ },
108
+ async () => {
109
+ return await getResultWithMiddlewares(executeContext);
110
+ }
111
+ ) : await (0, import_logger.runWithOrionAsyncContext)(
112
+ {
113
+ controllerType: "resolver",
114
+ viewer: executeContext.viewer,
115
+ params: executeContext.params,
116
+ resolverName: executeContext.options.resolverName || "unknown"
117
+ },
118
+ async () => {
119
+ return await getResultWithMiddlewares(executeContext);
120
+ }
121
+ );
119
122
  if (options.returns) {
120
123
  return await (0, import_schema.clean)(options.returns, result);
121
124
  }
@@ -1 +1 @@
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 {getOrionAsyncContext, runWithOrionAsyncContext} from '@orion-js/logger'\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 executeContext: 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 currentContext = getOrionAsyncContext()\n\n const context = currentContext\n ? {\n ...currentContext,\n viewer: executeContext.viewer,\n params: executeContext.params,\n parentData: executeContext.parent,\n modelResolverName: executeContext.parent\n ? executeContext.options.resolverId\n : currentContext.controllerType === 'modelResolver'\n ? currentContext.modelResolverName\n : undefined,\n resolverName:\n !executeContext.parent && currentContext.controllerType === 'resolver'\n ? executeContext.options.resolverId\n : currentContext.controllerType === 'resolver'\n ? currentContext.resolverName\n : undefined,\n }\n : {\n controllerType: executeContext.parent ? 'modelResolver' : 'resolver',\n viewer: executeContext.viewer,\n params: executeContext.params,\n parentData: executeContext.parent,\n modelResolverName: executeContext.parent ? executeContext.options.resolverId : undefined,\n resolverName: !executeContext.parent ? executeContext.options.resolverId : undefined,\n }\n\n const result = await runWithOrionAsyncContext(context, async () => {\n return await getResultWithMiddlewares(executeContext)\n })\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"]}
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 {runWithOrionAsyncContext} from '@orion-js/logger'\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 executeContext: 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 = executeContext.parent\n ? await runWithOrionAsyncContext(\n {\n controllerType: 'modelResolver' as const,\n viewer: executeContext.viewer,\n params: executeContext.params,\n parentData: executeContext.parent,\n modelResolverName: executeContext.options.resolverName || 'unknown',\n },\n async () => {\n return await getResultWithMiddlewares(executeContext)\n },\n )\n : await runWithOrionAsyncContext(\n {\n controllerType: 'resolver' as const,\n viewer: executeContext.viewer,\n params: executeContext.params,\n resolverName: executeContext.options.resolverName || 'unknown',\n },\n async () => {\n return await getResultWithMiddlewares(executeContext)\n },\n )\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
@@ -25,6 +25,7 @@ interface ExecuteParams<Resolve = Function, IsModel = undefined> {
25
25
  type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType<Resolve>;
26
26
  interface SharedResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any> {
27
27
  resolverId?: string;
28
+ resolverName?: string;
28
29
  params?: TParams;
29
30
  returns?: TReturns;
30
31
  mutation?: boolean;
package/dist/index.d.ts CHANGED
@@ -25,6 +25,7 @@ interface ExecuteParams<Resolve = Function, IsModel = undefined> {
25
25
  type Execute<Resolve = Function, IsModel = undefined> = (executeOptions: ExecuteParams<Resolve, IsModel>) => ReturnType<Resolve>;
26
26
  interface SharedResolverOptions<TParams extends SchemaFieldType = any, TReturns extends SchemaFieldType = any> {
27
27
  resolverId?: string;
28
+ resolverName?: string;
28
29
  params?: TParams;
29
30
  returns?: TReturns;
30
31
  mutation?: boolean;
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ function getResolverArgs(...args) {
25
25
 
26
26
  // src/resolver/getExecute/index.ts
27
27
  import { clean, cleanAndValidate } from "@orion-js/schema";
28
- import { getOrionAsyncContext, runWithOrionAsyncContext } from "@orion-js/logger";
28
+ import { runWithOrionAsyncContext } from "@orion-js/logger";
29
29
 
30
30
  // src/resolver/getExecute/getResultWithMiddlewares.ts
31
31
  import { composeMiddlewares } from "@orion-js/helpers";
@@ -65,25 +65,28 @@ function getExecute(options) {
65
65
  parent: executeParams.parent,
66
66
  options
67
67
  };
68
- const currentContext = getOrionAsyncContext();
69
- const context = currentContext ? {
70
- ...currentContext,
71
- viewer: executeContext.viewer,
72
- params: executeContext.params,
73
- parentData: executeContext.parent,
74
- modelResolverName: executeContext.parent ? executeContext.options.resolverId : currentContext.controllerType === "modelResolver" ? currentContext.modelResolverName : void 0,
75
- resolverName: !executeContext.parent && currentContext.controllerType === "resolver" ? executeContext.options.resolverId : currentContext.controllerType === "resolver" ? currentContext.resolverName : void 0
76
- } : {
77
- controllerType: executeContext.parent ? "modelResolver" : "resolver",
78
- viewer: executeContext.viewer,
79
- params: executeContext.params,
80
- parentData: executeContext.parent,
81
- modelResolverName: executeContext.parent ? executeContext.options.resolverId : void 0,
82
- resolverName: !executeContext.parent ? executeContext.options.resolverId : void 0
83
- };
84
- const result = await runWithOrionAsyncContext(context, async () => {
85
- return await getResultWithMiddlewares(executeContext);
86
- });
68
+ const result = executeContext.parent ? await runWithOrionAsyncContext(
69
+ {
70
+ controllerType: "modelResolver",
71
+ viewer: executeContext.viewer,
72
+ params: executeContext.params,
73
+ parentData: executeContext.parent,
74
+ modelResolverName: executeContext.options.resolverName || "unknown"
75
+ },
76
+ async () => {
77
+ return await getResultWithMiddlewares(executeContext);
78
+ }
79
+ ) : await runWithOrionAsyncContext(
80
+ {
81
+ controllerType: "resolver",
82
+ viewer: executeContext.viewer,
83
+ params: executeContext.params,
84
+ resolverName: executeContext.options.resolverName || "unknown"
85
+ },
86
+ async () => {
87
+ return await getResultWithMiddlewares(executeContext);
88
+ }
89
+ );
87
90
  if (options.returns) {
88
91
  return await clean(options.returns, result);
89
92
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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 {getOrionAsyncContext, runWithOrionAsyncContext} from '@orion-js/logger'\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 executeContext: 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 currentContext = getOrionAsyncContext()\n\n const context = currentContext\n ? {\n ...currentContext,\n viewer: executeContext.viewer,\n params: executeContext.params,\n parentData: executeContext.parent,\n modelResolverName: executeContext.parent\n ? executeContext.options.resolverId\n : currentContext.controllerType === 'modelResolver'\n ? currentContext.modelResolverName\n : undefined,\n resolverName:\n !executeContext.parent && currentContext.controllerType === 'resolver'\n ? executeContext.options.resolverId\n : currentContext.controllerType === 'resolver'\n ? currentContext.resolverName\n : undefined,\n }\n : {\n controllerType: executeContext.parent ? 'modelResolver' : 'resolver',\n viewer: executeContext.viewer,\n params: executeContext.params,\n parentData: executeContext.parent,\n modelResolverName: executeContext.parent ? executeContext.options.resolverId : undefined,\n resolverName: !executeContext.parent ? executeContext.options.resolverId : undefined,\n }\n\n const result = await runWithOrionAsyncContext(context, async () => {\n return await getResultWithMiddlewares(executeContext)\n })\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"]}
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 {runWithOrionAsyncContext} from '@orion-js/logger'\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 executeContext: 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 = executeContext.parent\n ? await runWithOrionAsyncContext(\n {\n controllerType: 'modelResolver' as const,\n viewer: executeContext.viewer,\n params: executeContext.params,\n parentData: executeContext.parent,\n modelResolverName: executeContext.options.resolverName || 'unknown',\n },\n async () => {\n return await getResultWithMiddlewares(executeContext)\n },\n )\n : await runWithOrionAsyncContext(\n {\n controllerType: 'resolver' as const,\n viewer: executeContext.viewer,\n params: executeContext.params,\n resolverName: executeContext.options.resolverName || 'unknown',\n },\n async () => {\n return await getResultWithMiddlewares(executeContext)\n },\n )\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.1.4",
3
+ "version": "4.1.6",
4
4
  "main": "./dist/index.cjs",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [
@@ -9,8 +9,8 @@
9
9
  "author": "nicolaslopezj",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@orion-js/schema": "4.1.4",
13
- "@orion-js/helpers": "4.1.4"
12
+ "@orion-js/helpers": "4.1.4",
13
+ "@orion-js/schema": "4.1.4"
14
14
  },
15
15
  "peerDependencies": {
16
16
  "@orion-js/logger": "4.1.4"