@coderich/autograph 0.13.24 → 0.13.25

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.24",
4
+ "version": "0.13.25",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -19,16 +19,8 @@ module.exports = class Pipeline {
19
19
  const wrapper = Object.defineProperty((args) => {
20
20
  try {
21
21
  if (ignoreNull && args.value == null) return args.value;
22
-
23
- if (ignoreNull && itemize) {
24
- return Util.map(args.value, (value) => {
25
- const v = factory({ ...args, value });
26
- return v === undefined ? value : v;
27
- });
28
- }
29
-
30
- const value = factory(args);
31
- return value === undefined ? args.value : value;
22
+ if (ignoreNull && itemize) return Util.map(args.value, value => Util.uvl(factory({ ...args, value }), value));
23
+ return Util.uvl(factory(args), args.value);
32
24
  } catch (e) {
33
25
  const { data = {} } = e;
34
26
  throw Boom.boomify(e, { data: { ...args, ...data } });
@@ -168,7 +160,7 @@ module.exports = class Pipeline {
168
160
  static resolve(params, pipeline) {
169
161
  const transformers = params.field.pipelines[pipeline] || [];
170
162
 
171
- return Util.pipeline(transformers.map(t => async (value) => {
163
+ return Util.pipeline(transformers.map(t => (value) => {
172
164
  return Pipeline[t]({ ...params, value });
173
165
  }), params.value);
174
166
  }
@@ -1,6 +1,7 @@
1
1
  const { graphql } = require('graphql');
2
2
  const Boom = require('@hapi/boom');
3
3
  const Util = require('@coderich/util');
4
+ const Pipeline = require('./Pipeline');
4
5
  const Emitter = require('./Emitter');
5
6
  const Loader = require('./Loader');
6
7
  const DataLoader = require('./DataLoader');
@@ -220,7 +221,15 @@ module.exports = class Resolver {
220
221
  if (result == null) return result;
221
222
  if (typeof result !== 'object') return result;
222
223
  return Object.defineProperties(Util.map(result, (doc) => {
223
- const $doc = this.#schema.models[model].walk(doc, node => node.value !== undefined && Object.assign(node, { key: node.field.name }), { key: 'key' });
224
+ // Transform result to domain model
225
+ const $doc = this.#schema.models[model].walk(doc, (node) => {
226
+ if (node.value === undefined) return undefined;
227
+ node.key = node.field.name;
228
+ node.value = Pipeline.$cast(node);
229
+ return node;
230
+ }, { key: 'key' });
231
+
232
+ // Assign useful/needed meta data
224
233
  return Object.defineProperties($doc, {
225
234
  $: {
226
235
  get: () => {