@coderich/autograph 0.13.48 → 0.13.50

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coderich/autograph",
3
3
  "main": "index.js",
4
- "version": "0.13.48",
4
+ "version": "0.13.50",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -27,8 +27,8 @@ class Emitter extends EventEmitter {
27
27
 
28
28
  // Next functions are async and control the timing of the next phase
29
29
  Promise.all(nextFuncs.sort(Emitter.sort).map((fn) => {
30
- return new Promise((next) => {
31
- Promise.resolve(fn(data, next));
30
+ return new Promise((next, err) => {
31
+ Promise.resolve().then(() => fn(data, next)).catch(err);
32
32
  }).then((result) => {
33
33
  if (result !== undefined) throw new AbortEarlyError(result);
34
34
  }).catch(reject);
@@ -89,7 +89,7 @@ class Emitter extends EventEmitter {
89
89
  } : (event, next) => {
90
90
  if (arr.includes(`${event.query[prop]}`)) {
91
91
  if (once) this.removeListener(eventName, wrapper);
92
- return next(listener(event, next));
92
+ return listener(event, next);
93
93
  }
94
94
  return next();
95
95
  };
@@ -117,7 +117,9 @@ module.exports = class Pipeline {
117
117
  const ids = Util.filterBy(Util.ensureArray(value), (a, b) => `${a}` === `${b}`);
118
118
  if (!ids.length) return undefined;
119
119
  return resolver.match(type).flags(query.flags).where({ [fkField]: ids }).count().then((count) => {
120
- if (count !== ids.length) throw Boom.notFound(`${type} Not Found`);
120
+ if (count !== ids.length) {
121
+ throw Boom.notFound(`${type} Not Found`);
122
+ }
121
123
  });
122
124
  }, { itemize: false });
123
125
 
@@ -2,6 +2,7 @@ const { graphql } = require('graphql');
2
2
  const Boom = require('@hapi/boom');
3
3
  const Util = require('@coderich/util');
4
4
  const QueryResolver = require('../query/QueryResolver');
5
+ const AppService = require('../service/AppService');
5
6
  const Emitter = require('./Emitter');
6
7
  const Loader = require('./Loader');
7
8
  const DataLoader = require('./DataLoader');
@@ -225,7 +226,7 @@ module.exports = class Resolver {
225
226
 
226
227
  return this.#createSystemEvent(query, (tquery) => {
227
228
  return thunk(tquery).then((result) => {
228
- if (flags?.required && (result == null || result?.length === 0)) throw Boom.notFound();
229
+ if (flags?.required && (result == null || result?.length === 0)) throw Boom.notFound(`${model} Not Found`);
229
230
  return result;
230
231
  });
231
232
  });
@@ -309,7 +310,6 @@ module.exports = class Resolver {
309
310
  if (query.isMutation) await Promise.all([...query.input.$thunks, Emitter.emit('validate', event)]);
310
311
  return thunk(tquery);
311
312
  }).then((result) => {
312
- event.doc ??= result; // Case of create
313
313
  event.result = result; // backwards compat
314
314
  query.result = result;
315
315
  return Emitter.emit(`post${type}`, event);
@@ -328,6 +328,7 @@ module.exports = class Resolver {
328
328
  query.toObject = () => query;
329
329
  event.merged = event.input;
330
330
  event.input = event.args?.input;
331
+ event.doc ??= {};
331
332
 
332
333
  return event;
333
334
  }
@@ -65,8 +65,10 @@ module.exports = class QueryResolver extends QueryBuilder {
65
65
  return this.#get(query).then((doc) => {
66
66
  const [key] = Object.keys(input);
67
67
  const values = get(this.#model.transformers.input.transform(input), key, []);
68
- const $input = { [key]: (get(doc, key) || []).filter(el => values.every(v => `${v}` !== `${el}`)) };
69
- return this.#resolver.match(this.#model.name).id(doc.id).save($input);
68
+ const $doc = Util.pathmap(key, doc, (arr) => {
69
+ return arr.filter(el => values.every(v => `${v}` !== `${el}`));
70
+ });
71
+ return this.#resolver.match(this.#model.name).id(doc.id).save($doc);
70
72
  });
71
73
  }
72
74
  case 'pullMany': {
@@ -110,11 +112,11 @@ module.exports = class QueryResolver extends QueryBuilder {
110
112
  }
111
113
 
112
114
  #resolveReferentialIntegrity(doc) {
113
- const { id } = doc;
114
115
  const txn = this.#resolver.transaction(false);
115
116
 
116
117
  return txn.run(Util.promiseChain(this.#model.referentialIntegrity.map(({ model, field, path }) => () => {
117
- const { onDelete, isArray } = field;
118
+ const { onDelete, isArray, fkField } = field;
119
+ const id = doc[fkField];
118
120
  const $path = path.join('.');
119
121
  const where = field.isVirtual ? { [field.model.pkField]: get(doc, field.linkBy) } : { [$path]: id };
120
122