@smartive/graphql-magic 21.0.3 → 21.1.0-next.2

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/CHANGELOG.md CHANGED
@@ -1,7 +1,3 @@
1
- ## <small>21.0.3 (2025-10-18)</small>
1
+ ## 21.1.0-next.2 (2025-10-20)
2
2
 
3
- * fix(deps): update docusaurus monorepo to v3.9.2 (#366) ([79ed673](https://github.com/smartive/graphql-magic/commit/79ed673)), closes [#366](https://github.com/smartive/graphql-magic/issues/366)
4
- * chore(deps): update dependency esbuild to v0.25.11 (#365) ([9bb3f20](https://github.com/smartive/graphql-magic/commit/9bb3f20)), closes [#365](https://github.com/smartive/graphql-magic/issues/365)
5
- * chore(deps): update dependency eslint to v9.37.0 (#362) ([7d93321](https://github.com/smartive/graphql-magic/commit/7d93321)), closes [#362](https://github.com/smartive/graphql-magic/issues/362)
6
- * chore(deps): update dependency ts-jest to v29.4.5 (#363) ([78bed26](https://github.com/smartive/graphql-magic/commit/78bed26)), closes [#363](https://github.com/smartive/graphql-magic/issues/363)
7
- * chore(deps): update dependency typescript to v5.9.3 (#361) ([92ccf69](https://github.com/smartive/graphql-magic/commit/92ccf69)), closes [#361](https://github.com/smartive/graphql-magic/issues/361)
3
+ * fix: Graphql objects handing ([548965d](https://github.com/smartive/graphql-magic/commit/548965d))
package/dist/bin/gqm.cjs CHANGED
@@ -31,6 +31,8 @@ var import_simple_git = require("simple-git");
31
31
  // src/api/execute.ts
32
32
  var import_schema = require("@graphql-tools/schema");
33
33
  var import_graphql2 = require("graphql");
34
+ var import_isFunction = __toESM(require("lodash/isFunction"), 1);
35
+ var import_mapValues = __toESM(require("lodash/mapValues"), 1);
34
36
  var import_merge = __toESM(require("lodash/merge"), 1);
35
37
 
36
38
  // src/errors.ts
@@ -193,6 +193,8 @@ module.exports = __toCommonJS(index_exports);
193
193
  // src/api/execute.ts
194
194
  var import_schema = require("@graphql-tools/schema");
195
195
  var import_graphql2 = require("graphql");
196
+ var import_isFunction = __toESM(require("lodash/isFunction"), 1);
197
+ var import_mapValues = __toESM(require("lodash/mapValues"), 1);
196
198
  var import_merge = __toESM(require("lodash/merge"), 1);
197
199
 
198
200
  // src/errors.ts
@@ -238,13 +240,20 @@ var execute = async ({
238
240
  additionalResolvers,
239
241
  body,
240
242
  introspection = false,
243
+ resolverWrapper,
241
244
  ...ctx
242
245
  }) => {
243
246
  const document2 = generate(ctx.models);
244
- const generatedResolvers = getResolvers(ctx.models);
247
+ let resolvers = (0, import_merge.default)(getResolvers(ctx.models), additionalResolvers);
248
+ if (resolverWrapper) {
249
+ resolvers = (0, import_mapValues.default)(
250
+ resolvers,
251
+ (type) => Object.getPrototypeOf(type) === Object.prototype ? (0, import_mapValues.default)(type, (resolver) => (0, import_isFunction.default)(resolver) ? resolverWrapper(resolver) : resolver) : type
252
+ );
253
+ }
245
254
  const schema = (0, import_schema.makeExecutableSchema)({
246
255
  typeDefs: document2,
247
- resolvers: (0, import_merge.default)(generatedResolvers, additionalResolvers)
256
+ resolvers
248
257
  });
249
258
  const parsedDocument = (0, import_graphql2.parse)(new import_graphql2.Source(body.query, "GraphQL request"));
250
259
  const validationErrors = (0, import_graphql2.validate)(
@@ -1,7 +1,8 @@
1
- import { IResolvers } from '@graphql-tools/utils';
1
+ import { IFieldResolver, IResolvers } from '@graphql-tools/utils';
2
2
  import { Context } from '..';
3
- export declare const execute: ({ additionalResolvers, body, introspection, ...ctx }: {
3
+ export declare const execute: ({ additionalResolvers, body, introspection, resolverWrapper, ...ctx }: {
4
4
  additionalResolvers?: IResolvers<any, any>;
5
5
  introspection?: boolean;
6
6
  body: any;
7
+ resolverWrapper?: (resolver: IFieldResolver<unknown, unknown, unknown, unknown>) => IFieldResolver<unknown, unknown, unknown, unknown>;
7
8
  } & Omit<Context, "document">) => Promise<import("graphql").ExecutionResult<import("graphql/jsutils/ObjMap").ObjMap<unknown>, import("graphql/jsutils/ObjMap").ObjMap<unknown>>>;
@@ -1,14 +1,21 @@
1
1
  import { makeExecutableSchema } from '@graphql-tools/schema';
2
2
  import { Source, execute as graphqlExecute, parse, specifiedRules, validate } from 'graphql';
3
+ import isFunction from 'lodash/isFunction';
4
+ import mapValues from 'lodash/mapValues';
3
5
  import merge from 'lodash/merge';
4
6
  import { generate, get, getResolvers } from '..';
5
7
  import { noIntrospection } from '../utils/rules';
6
- export const execute = async ({ additionalResolvers, body, introspection = false, ...ctx }) => {
8
+ export const execute = async ({ additionalResolvers, body, introspection = false, resolverWrapper, ...ctx }) => {
7
9
  const document = generate(ctx.models);
8
- const generatedResolvers = getResolvers(ctx.models);
10
+ let resolvers = merge(getResolvers(ctx.models), additionalResolvers);
11
+ if (resolverWrapper) {
12
+ resolvers = mapValues(resolvers, (type) => Object.getPrototypeOf(type) === Object.prototype
13
+ ? mapValues(type, (resolver) => (isFunction(resolver) ? resolverWrapper(resolver) : resolver))
14
+ : type);
15
+ }
9
16
  const schema = makeExecutableSchema({
10
17
  typeDefs: document,
11
- resolvers: merge(generatedResolvers, additionalResolvers),
18
+ resolvers,
12
19
  });
13
20
  const parsedDocument = parse(new Source(body.query, 'GraphQL request'));
14
21
  const validationErrors = validate(schema, parsedDocument, introspection ? specifiedRules : [...specifiedRules, noIntrospection]);
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/api/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAsB,MAAM,EAAE,OAAO,IAAI,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjH,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAW,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,mBAAmB,EACnB,IAAI,EACJ,aAAa,GAAG,KAAK,EACrB,GAAG,GAAG,EAKqB,EAAE,EAAE;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,KAAK,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;KAC1D,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG,QAAQ,CAC/B,MAAM,EACN,cAAc,EACd,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,eAAe,CAAC,CACtE,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,YAAY,GAAY;QAC5B,QAAQ;QACR,GAAG,GAAG;KACP,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QAClC,MAAM;QACN,QAAQ,EAAE,cAAc;QACxB,YAAY;QACZ,cAAc,EAAE,IAAI,CAAC,SAAS;QAC9B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAwB,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/api/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAsB,MAAM,EAAE,OAAO,IAAI,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjH,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAW,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAC5B,mBAAmB,EACnB,IAAI,EACJ,aAAa,GAAG,KAAK,EACrB,eAAe,EACf,GAAG,GAAG,EAQqB,EAAE,EAAE;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACrE,IAAI,eAAe,EAAE,CAAC;QACpB,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CACxC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS;YAC9C,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC9F,CAAC,CAAC,IAAI,CACT,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,QAAQ,EAAE,QAAQ;QAClB,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG,QAAQ,CAC/B,MAAM,EACN,cAAc,EACd,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,eAAe,CAAC,CACtE,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,YAAY,GAAY;QAC5B,QAAQ;QACR,GAAG,GAAG;KACP,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QAClC,MAAM;QACN,QAAQ,EAAE,cAAc;QACxB,YAAY;QACZ,cAAc,EAAE,IAAI,CAAC,SAAS;QAC9B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAwB,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAEzB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartive/graphql-magic",
3
- "version": "21.0.3",
3
+ "version": "21.1.0-next.2",
4
4
  "description": "",
5
5
  "source": "src/index.ts",
6
6
  "type": "module",
@@ -75,7 +75,7 @@
75
75
  "create-ts-index": "1.14.0",
76
76
  "del-cli": "6.0.0",
77
77
  "esbuild": "0.25.11",
78
- "eslint": "9.37.0",
78
+ "eslint": "9.38.0",
79
79
  "jest": "29.7.0",
80
80
  "mock-knex": "0.4.13",
81
81
  "prettier": "3.6.2",
@@ -1,6 +1,8 @@
1
1
  import { makeExecutableSchema } from '@graphql-tools/schema';
2
- import { IResolvers } from '@graphql-tools/utils';
2
+ import { IFieldResolver, IResolvers } from '@graphql-tools/utils';
3
3
  import { GraphQLResolveInfo, Source, execute as graphqlExecute, parse, specifiedRules, validate } from 'graphql';
4
+ import isFunction from 'lodash/isFunction';
5
+ import mapValues from 'lodash/mapValues';
4
6
  import merge from 'lodash/merge';
5
7
  import { Context, generate, get, getResolvers } from '..';
6
8
  import { noIntrospection } from '../utils/rules';
@@ -9,19 +11,29 @@ export const execute = async ({
9
11
  additionalResolvers,
10
12
  body,
11
13
  introspection = false,
14
+ resolverWrapper,
12
15
  ...ctx
13
16
  }: {
14
17
  additionalResolvers?: IResolvers<any, any>;
15
18
  introspection?: boolean;
16
19
  body: any;
20
+ resolverWrapper?: (
21
+ resolver: IFieldResolver<unknown, unknown, unknown, unknown>,
22
+ ) => IFieldResolver<unknown, unknown, unknown, unknown>;
17
23
  } & Omit<Context, 'document'>) => {
18
24
  const document = generate(ctx.models);
19
-
20
- const generatedResolvers = getResolvers(ctx.models);
25
+ let resolvers = merge(getResolvers(ctx.models), additionalResolvers);
26
+ if (resolverWrapper) {
27
+ resolvers = mapValues(resolvers, (type) =>
28
+ Object.getPrototypeOf(type) === Object.prototype
29
+ ? mapValues(type, (resolver) => (isFunction(resolver) ? resolverWrapper(resolver) : resolver))
30
+ : type,
31
+ );
32
+ }
21
33
 
22
34
  const schema = makeExecutableSchema({
23
35
  typeDefs: document,
24
- resolvers: merge(generatedResolvers, additionalResolvers),
36
+ resolvers,
25
37
  });
26
38
 
27
39
  const parsedDocument = parse(new Source(body.query, 'GraphQL request'));