@voxgig/model 1.1.0 → 1.2.0

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.
@@ -1,4 +1,6 @@
1
1
  type DiveMapper = (path: any[], leaf: any) => any[];
2
2
  declare function dive(node: any, depth?: number | DiveMapper, mapper?: DiveMapper): any[];
3
3
  declare function joins(arr: any[], ...seps: string[]): string;
4
- export { dive, joins, };
4
+ declare function get(root: any, path: string | string[]): any;
5
+ declare function pinify(path: string[]): string;
6
+ export { dive, joins, get, pinify };
package/dist/lib/util.js CHANGED
@@ -1,18 +1,28 @@
1
1
  "use strict";
2
2
  /* Copyright © 2021-2023 Voxgig Ltd, MIT License. */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.joins = exports.dive = void 0;
4
+ exports.pinify = exports.get = exports.joins = exports.dive = void 0;
5
5
  function dive(node, depth, mapper) {
6
6
  let d = (null == depth || 'number' != typeof depth) ? 2 : depth;
7
7
  mapper = 'function' === typeof depth ? depth : mapper;
8
8
  let items = [];
9
- Object.entries(node).reduce((items, entry) => {
9
+ Object.entries(node || {}).reduce((items, entry) => {
10
10
  let key = entry[0];
11
11
  let child = entry[1];
12
- if (d <= 1) {
12
+ // console.log('CHILD', d, key, child)
13
+ if ('$' === key) {
14
+ // console.log('BBB', d)
15
+ items.push([[], child]);
16
+ }
17
+ else if (d <= 1 ||
18
+ null == child ||
19
+ 'object' !== typeof child ||
20
+ 0 === Object.keys(child).length) {
21
+ // console.log('AAA', d)
13
22
  items.push([[key], child]);
14
23
  }
15
24
  else {
25
+ // console.log('CCC', d)
16
26
  let children = dive(child, d - 1);
17
27
  children = children.map(child => {
18
28
  child[0].unshift(key);
@@ -22,6 +32,7 @@ function dive(node, depth, mapper) {
22
32
  }
23
33
  return items;
24
34
  }, items);
35
+ // console.log('ITEMS', items)
25
36
  if (mapper) {
26
37
  return items.reduce(((a, entry) => {
27
38
  entry = mapper(entry[0], entry[1]);
@@ -55,4 +66,20 @@ function joins(arr, ...seps) {
55
66
  return sa.join('');
56
67
  }
57
68
  exports.joins = joins;
69
+ function get(root, path) {
70
+ path = 'string' === typeof path ? path.split('.') : path;
71
+ let node = root;
72
+ for (let i = 0; i < path.length && null != node; i++) {
73
+ node = node[path[i]];
74
+ }
75
+ return node;
76
+ }
77
+ exports.get = get;
78
+ function pinify(path) {
79
+ let pin = path
80
+ .map((p, i) => p + (i % 2 ? (i === path.length - 1 ? '' : ',') : ':'))
81
+ .join('');
82
+ return pin;
83
+ }
84
+ exports.pinify = pinify;
58
85
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/util.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAKpD,SAAS,IAAI,CAAC,IAAS,EAAE,KAA2B,EAAE,MAAmB;IACvE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,IAAI,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC/D,MAAM,GAAG,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;IAErD,IAAI,KAAK,GAAU,EAAE,CAAA;IAErB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CACzB,CAAC,KAAY,EAAE,KAAY,EAAE,EAAE;QAC7B,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAEpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;QAC5B,CAAC;aACI,CAAC;YACJ,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACjC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC9B,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACrB,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,CAAA;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACzB,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,EACD,KAAK,CACN,CAAA;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAChC,KAAK,GAAI,MAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACtB,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,EAAE,EAAS,CAAC,CAAA;IAChB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AA2BC,oBAAI;AAxBN;;;;EAIE;AACF,SAAS,KAAK,CAAC,GAAU,EAAE,GAAG,IAAc;IAC1C,GAAG,GAAG,GAAG,IAAI,EAAE,CAAA;IACf,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACjB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC7B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChB,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC;AAIC,sBAAK"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../lib/util.ts"],"names":[],"mappings":"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"}
package/dist/model.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Config } from './lib/config';
2
2
  import { BuildResult, Spec } from './lib/build';
3
3
  import { Watch } from './lib/watch';
4
- import { dive, joins } from './lib/util';
4
+ import { dive, joins, get, pinify } from './lib/util';
5
5
  declare class Model {
6
6
  config: Config;
7
7
  build: any;
@@ -12,4 +12,4 @@ declare class Model {
12
12
  start(): Promise<void>;
13
13
  stop(): Promise<void>;
14
14
  }
15
- export { Model, Spec, dive, joins, };
15
+ export { Model, Spec, dive, joins, get, pinify, };
package/dist/model.js CHANGED
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.joins = exports.dive = exports.Model = void 0;
7
+ exports.pinify = exports.get = exports.joins = exports.dive = exports.Model = void 0;
8
8
  // TODO: remove need for this
9
9
  const fs_1 = __importDefault(require("fs"));
10
10
  const config_1 = require("./lib/config");
@@ -14,6 +14,8 @@ const local_1 = require("./lib/builder/local");
14
14
  const util_1 = require("./lib/util");
15
15
  Object.defineProperty(exports, "dive", { enumerable: true, get: function () { return util_1.dive; } });
16
16
  Object.defineProperty(exports, "joins", { enumerable: true, get: function () { return util_1.joins; } });
17
+ Object.defineProperty(exports, "get", { enumerable: true, get: function () { return util_1.get; } });
18
+ Object.defineProperty(exports, "pinify", { enumerable: true, get: function () { return util_1.pinify; } });
17
19
  const intern = makeIntern();
18
20
  class Model {
19
21
  constructor(spec) {
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../model.ts"],"names":[],"mappings":"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"}
package/lib/util.ts CHANGED
@@ -9,15 +9,28 @@ function dive(node: any, depth?: number | DiveMapper, mapper?: DiveMapper): any[
9
9
 
10
10
  let items: any[] = []
11
11
 
12
- Object.entries(node).reduce(
12
+ Object.entries(node || {}).reduce(
13
13
  (items: any[], entry: any[]) => {
14
14
  let key = entry[0]
15
15
  let child = entry[1]
16
16
 
17
- if (d <= 1) {
17
+ // console.log('CHILD', d, key, child)
18
+
19
+ if ('$' === key) {
20
+ // console.log('BBB', d)
21
+ items.push([[], child])
22
+ }
23
+ else if (
24
+ d <= 1 ||
25
+ null == child ||
26
+ 'object' !== typeof child ||
27
+ 0 === Object.keys(child).length
28
+ ) {
29
+ // console.log('AAA', d)
18
30
  items.push([[key], child])
19
31
  }
20
32
  else {
33
+ // console.log('CCC', d)
21
34
  let children = dive(child, d - 1)
22
35
  children = children.map(child => {
23
36
  child[0].unshift(key)
@@ -31,6 +44,8 @@ function dive(node: any, depth?: number | DiveMapper, mapper?: DiveMapper): any[
31
44
  items
32
45
  )
33
46
 
47
+ // console.log('ITEMS', items)
48
+
34
49
  if (mapper) {
35
50
  return items.reduce(((a, entry) => {
36
51
  entry = (mapper as any)(entry[0], entry[1])
@@ -66,7 +81,28 @@ function joins(arr: any[], ...seps: string[]) {
66
81
  return sa.join('')
67
82
  }
68
83
 
84
+
85
+ function get(root: any, path: string | string[]): any {
86
+ path = 'string' === typeof path ? path.split('.') : path
87
+ let node = root
88
+ for (let i = 0; i < path.length && null != node; i++) {
89
+ node = node[path[i]]
90
+ }
91
+ return node
92
+ }
93
+
94
+
95
+ function pinify(path: string[]) {
96
+ let pin = path
97
+ .map((p: string, i: number) =>
98
+ p + (i % 2 ? (i === path.length - 1 ? '' : ',') : ':'))
99
+ .join('')
100
+ return pin
101
+ }
102
+
69
103
  export {
70
104
  dive,
71
105
  joins,
106
+ get,
107
+ pinify
72
108
  }
package/model.ts CHANGED
@@ -13,6 +13,8 @@ import { local_builder } from './lib/builder/local'
13
13
  import {
14
14
  dive,
15
15
  joins,
16
+ get,
17
+ pinify,
16
18
  } from './lib/util'
17
19
 
18
20
 
@@ -127,6 +129,8 @@ export {
127
129
  Spec,
128
130
  dive,
129
131
  joins,
132
+ get,
133
+ pinify,
130
134
  }
131
135
 
132
136
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/model",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "main": "dist/model.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/model.d.ts",