@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
package/src/data/Emitter.js
CHANGED
|
@@ -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
|
|
92
|
+
return listener(event, next);
|
|
93
93
|
}
|
|
94
94
|
return next();
|
|
95
95
|
};
|
package/src/data/Pipeline.js
CHANGED
|
@@ -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)
|
|
120
|
+
if (count !== ids.length) {
|
|
121
|
+
throw Boom.notFound(`${type} Not Found`);
|
|
122
|
+
}
|
|
121
123
|
});
|
|
122
124
|
}, { itemize: false });
|
|
123
125
|
|
package/src/data/Resolver.js
CHANGED
|
@@ -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 $
|
|
69
|
-
|
|
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
|
|