@allgemein/config 1.1.4 → 1.1.5

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@allgemein/config",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "@allgemein/config is a configurable configuration content handler which supports multiple configuration infrastructures and file formats.",
5
5
  "main": "./index.js",
6
6
  "browser": {
@@ -34,12 +34,12 @@
34
34
  "homepage": "https://github.com/allgemein-node/config#readme",
35
35
  "devDependencies": {
36
36
  "@allgemein/packaging": "^1.2.18",
37
- "@testdeck/mocha": "^0.2.0",
38
- "@types/chai": "^4.3.1",
39
- "@types/glob": "^7.2.0",
40
- "@types/lodash": "^4.14.182",
41
- "@types/mocha": "^9.1.1",
42
- "@types/node": "^18.0.6",
37
+ "@testdeck/mocha": "^0.2.1",
38
+ "@types/chai": "^4.3.3",
39
+ "@types/glob": "^8.0.0",
40
+ "@types/lodash": "^4.14.186",
41
+ "@types/mocha": "^10.0.0",
42
+ "@types/node": "^18.7.23",
43
43
  "chai": "^4.3.6",
44
44
  "codecov": "^3.8.2",
45
45
  "codelyzer": "^6.0.2",
@@ -59,17 +59,17 @@
59
59
  "nyc": "^15.1.0",
60
60
  "properties": "^1.2.1",
61
61
  "ts-node": "^10.9.1",
62
- "typescript": "4.7.4",
62
+ "typescript": "4.8.4",
63
63
  "x2js": "^3.4.3",
64
- "@typescript-eslint/eslint-plugin": "^5.30.7",
65
- "@typescript-eslint/parser": "^5.30.7",
66
- "eslint": "8.20.0",
64
+ "@typescript-eslint/eslint-plugin": "^5.38.1",
65
+ "@typescript-eslint/parser": "^5.38.1",
66
+ "eslint": "8.24.0",
67
67
  "eslint-plugin-import": "2.26.0",
68
- "eslint-plugin-mocha": "10.0.5",
68
+ "eslint-plugin-mocha": "10.1.0",
69
69
  "eslint-plugin-prettier": "4.2.1"
70
70
  },
71
71
  "dependencies": {
72
- "@allgemein/base": "^1.6.10",
72
+ "@allgemein/base": "^1.6.12",
73
73
  "multimatch": "^5.0.0"
74
74
  },
75
75
  "private": false,
@@ -1,47 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InterpolationSupport = void 0;
4
- const Utils_1 = require("../utils/Utils");
4
+ const Interpolation_1 = require("@allgemein/base/utils/Interpolation");
5
5
  const REGEX = /\${[^}]+}/g;
6
6
  class InterpolationSupport {
7
- // private lookup
8
7
  static exec(data, ...lookup) {
9
- if (!lookup.length) {
10
- lookup = [data];
11
- }
12
- else {
13
- if (Array.isArray(lookup[0])) {
14
- lookup = lookup[0];
15
- }
16
- }
17
- Utils_1.Utils.walk(data, (x) => {
18
- let v = x.value;
19
- if (typeof v === 'string' && REGEX.test(v)) {
20
- const match = v.match(REGEX);
21
- match.forEach(_match => {
22
- const path = _match.replace(/^\${|}$/g, '');
23
- let _value = null;
24
- for (let i = 0; i < lookup.length; i++) {
25
- _value = Utils_1.Utils.get(lookup[i], path);
26
- if (_value) {
27
- break;
28
- }
29
- }
30
- if (_value) {
31
- if (x.index !== null) {
32
- x.parent[x.key][x.index] = v = v.replace(_match, _value);
33
- }
34
- else {
35
- x.parent[x.key] = v = v.replace(_match, _value);
36
- }
37
- }
38
- else {
39
- // not found ignore replacement!
40
- // throw new Error('value not found for match ' + _match + ' path=' + path)
41
- }
42
- });
43
- }
44
- });
8
+ return Interpolation_1.Interpolation.exec(data, ...lookup);
9
+ //
10
+ // if (!lookup.length) {
11
+ // lookup = [data];
12
+ // } else {
13
+ // if (Array.isArray(lookup[0])) {
14
+ // lookup = lookup[0];
15
+ // }
16
+ // }
17
+ //
18
+ // Utils.walk(data, (x: any) => {
19
+ // let v = x.value;
20
+ // if (typeof v === 'string' && REGEX.test(v)) {
21
+ // const match = v.match(REGEX);
22
+ // match.forEach(_match => {
23
+ // const content = _match.replace(/^\${|}$/g, '');
24
+ // const splits = content.split(':-', 2);
25
+ // const path = splits.shift();
26
+ // const hasFallback = splits.length > 0;
27
+ // const fallback = splits.shift();
28
+ // let _value = null;
29
+ //
30
+ // for (let i = 0; i < lookup.length; i++) {
31
+ // _value = Utils.get(lookup[i], path);
32
+ // if (_value) {
33
+ // break;
34
+ // }
35
+ // }
36
+ //
37
+ // if (_value) {
38
+ // if (x.index !== null) {
39
+ // x.parent[x.key][x.index] = v = v.replace(_match, _value);
40
+ // } else {
41
+ // x.parent[x.key] = v = v.replace(_match, _value);
42
+ // }
43
+ // } else {
44
+ // if (hasFallback) {
45
+ // if (x.index !== null) {
46
+ // x.parent[x.key][x.index] = v = v.replace(_match, fallback);
47
+ // } else {
48
+ // x.parent[x.key] = v = v.replace(_match, fallback);
49
+ // }
50
+ // }
51
+ // }
52
+ // });
53
+ // }
54
+ // });
45
55
  }
46
56
  }
47
57
  exports.InterpolationSupport = InterpolationSupport;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/supports/InterpolationSupport.ts"],"names":[],"mappings":";;;AACA,0CAAqC;AAErC,MAAM,KAAK,GAAG,YAAY,CAAC;AAG3B,MAAa,oBAAoB;IAE/B,iBAAiB;IAEjB,MAAM,CAAC,IAAI,CAAC,IAAiB,EAAE,GAAG,MAAa;QAE7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;SACjB;aAAI;YACH,IAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC;gBAC1B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;SACF;QAED,aAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAM,EAAE,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACrB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBAC5C,IAAI,MAAM,GAAG,IAAI,CAAC;oBAElB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,MAAM,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;wBAC9B,MAAM,GAAG,aAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBACpC,IAAG,MAAM,EAAE;4BACT,MAAM;yBACP;qBACF;oBAGD,IAAI,MAAM,EAAE;wBAEV,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE;4BACpB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBAC1D;6BAAM;4BACL,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;yBACjD;qBACF;yBAAM;wBACL,gCAAgC;wBAChC,2EAA2E;qBAC5E;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IAEL,CAAC;CAEF;AA/CD,oDA+CC","file":"InterpolationSupport.js","sourcesContent":["import {IConfigData} from '../config/IConfigData';\nimport {Utils} from '../utils/Utils';\n\nconst REGEX = /\\${[^}]+}/g;\n\n\nexport class InterpolationSupport {\n\n // private lookup\n\n static exec(data: IConfigData, ...lookup: any[]): void {\n\n if (!lookup.length) {\n lookup = [data];\n }else{\n if(Array.isArray(lookup[0])){\n lookup = lookup[0];\n }\n }\n\n Utils.walk(data, (x: any) => {\n let v = x.value;\n if (typeof v === 'string' && REGEX.test(v)) {\n const match = v.match(REGEX);\n match.forEach(_match => {\n const path = _match.replace(/^\\${|}$/g, '');\n let _value = null;\n\n for(let i=0;i<lookup.length;i++){\n _value = Utils.get(lookup[i], path);\n if(_value) {\n break;\n }\n }\n\n\n if (_value) {\n\n if (x.index !== null) {\n x.parent[x.key][x.index] = v = v.replace(_match, _value);\n } else {\n x.parent[x.key] = v = v.replace(_match, _value);\n }\n } else {\n // not found ignore replacement!\n // throw new Error('value not found for match ' + _match + ' path=' + path)\n }\n });\n }\n });\n\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../../src/supports/InterpolationSupport.ts"],"names":[],"mappings":";;;AAEA,uEAAkE;AAElE,MAAM,KAAK,GAAG,YAAY,CAAC;AAG3B,MAAa,oBAAoB;IAE/B,MAAM,CAAC,IAAI,CAAC,IAAiB,EAAE,GAAG,MAAa;QAC7C,OAAO,6BAAa,CAAC,IAAI,CAAC,IAAI,EAAC,GAAG,MAAM,CAAC,CAAC;QAC1C,EAAE;QACF,wBAAwB;QACxB,qBAAqB;QACrB,WAAW;QACX,oCAAoC;QACpC,0BAA0B;QAC1B,MAAM;QACN,IAAI;QACJ,EAAE;QACF,iCAAiC;QACjC,qBAAqB;QACrB,kDAAkD;QAClD,oCAAoC;QACpC,gCAAgC;QAChC,wDAAwD;QACxD,+CAA+C;QAC/C,qCAAqC;QACrC,+CAA+C;QAC/C,yCAAyC;QACzC,2BAA2B;QAC3B,EAAE;QACF,kDAAkD;QAClD,+CAA+C;QAC/C,wBAAwB;QACxB,mBAAmB;QACnB,YAAY;QACZ,UAAU;QACV,EAAE;QACF,sBAAsB;QACtB,kCAAkC;QAClC,sEAAsE;QACtE,mBAAmB;QACnB,6DAA6D;QAC7D,YAAY;QACZ,iBAAiB;QACjB,6BAA6B;QAC7B,oCAAoC;QACpC,0EAA0E;QAC1E,qBAAqB;QACrB,iEAAiE;QACjE,cAAc;QACd,YAAY;QACZ,UAAU;QACV,UAAU;QACV,MAAM;QACN,MAAM;IAER,CAAC;CAEF;AArDD,oDAqDC","file":"InterpolationSupport.js","sourcesContent":["import {IConfigData} from '../config/IConfigData';\nimport {Utils} from '../utils/Utils';\nimport {Interpolation} from \"@allgemein/base/utils/Interpolation\";\n\nconst REGEX = /\\${[^}]+}/g;\n\n\nexport class InterpolationSupport {\n\n static exec(data: IConfigData, ...lookup: any[]): void {\n return Interpolation.exec(data,...lookup);\n //\n // if (!lookup.length) {\n // lookup = [data];\n // } else {\n // if (Array.isArray(lookup[0])) {\n // lookup = lookup[0];\n // }\n // }\n //\n // Utils.walk(data, (x: any) => {\n // let v = x.value;\n // if (typeof v === 'string' && REGEX.test(v)) {\n // const match = v.match(REGEX);\n // match.forEach(_match => {\n // const content = _match.replace(/^\\${|}$/g, '');\n // const splits = content.split(':-', 2);\n // const path = splits.shift();\n // const hasFallback = splits.length > 0;\n // const fallback = splits.shift();\n // let _value = null;\n //\n // for (let i = 0; i < lookup.length; i++) {\n // _value = Utils.get(lookup[i], path);\n // if (_value) {\n // break;\n // }\n // }\n //\n // if (_value) {\n // if (x.index !== null) {\n // x.parent[x.key][x.index] = v = v.replace(_match, _value);\n // } else {\n // x.parent[x.key] = v = v.replace(_match, _value);\n // }\n // } else {\n // if (hasFallback) {\n // if (x.index !== null) {\n // x.parent[x.key][x.index] = v = v.replace(_match, fallback);\n // } else {\n // x.parent[x.key] = v = v.replace(_match, fallback);\n // }\n // }\n // }\n // });\n // }\n // });\n\n }\n\n}\n"],"sourceRoot":".."}
package/utils/Utils.d.ts CHANGED
@@ -9,7 +9,6 @@ export declare class Utils {
9
9
  static clone(obj: any): any;
10
10
  static uniqArr(res: any[]): any[];
11
11
  static merge(...args: any[]): any;
12
- static walk(root: any, fn: Function): void;
13
12
  static get(arr: any, path?: string): any;
14
13
  static splitTyped(arr: string, sep?: string): any[];
15
14
  static set(arr: any, path: string | any[], value: any): boolean;
package/utils/Utils.js CHANGED
@@ -27,6 +27,7 @@ exports.Utils = void 0;
27
27
  // import {merge, mergeDeep} from "typescript-object-utils";
28
28
  // import * as merge from 'deepmerge'
29
29
  const _ = __importStar(require("lodash"));
30
+ const Interpolation_1 = require("@allgemein/base/utils/Interpolation");
30
31
  class Utils {
31
32
  /**
32
33
  * https://stackoverflow.com/questions/1960473/unique-values-in-an-array
@@ -61,10 +62,10 @@ class Utils {
61
62
  });
62
63
  }
63
64
  static merge(...args) {
64
- let first = _.cloneDeep(args.shift());
65
+ const first = _.cloneDeep(args.shift());
65
66
  return _.mergeWith(first, ...args, (dest, source) => {
66
67
  if (_.isArray(dest)) {
67
- let res = _.concat(dest, source);
68
+ const res = _.concat(dest, source);
68
69
  return Utils.uniqArr(res);
69
70
  }
70
71
  else if (_.isPlainObject(dest)) {
@@ -74,86 +75,90 @@ class Utils {
74
75
  return source;
75
76
  }
76
77
  });
77
- //return merge.all(args, {arrayMerge: this.mergeArray})
78
- //return _.merge(...args);//merge.all(args)
78
+ // return merge.all(args, {arrayMerge: this.mergeArray})
79
+ // return _.merge(...args);//merge.all(args)
79
80
  /*
80
81
  let tmp:any={}
81
82
  args.forEach(_x => {tmp = mergeDeep(tmp,_x)})
82
83
  return tmp
83
84
  */
84
85
  }
85
- static walk(root, fn) {
86
- function walk(obj, location = []) {
87
- if (obj === null || obj === undefined)
88
- return;
89
- Object.keys(obj).forEach((key) => {
90
- // Value is an array, call walk on each item in the array
91
- if (Array.isArray(obj[key])) {
92
- obj[key].forEach((el, j) => {
93
- fn({
94
- value: el,
95
- key: key,
96
- index: j,
97
- location: [...location, ...[key], ...[j]],
98
- parent: obj,
99
- isLeaf: false
100
- });
101
- walk(el, [...location, ...[key], ...[j]]);
102
- });
103
- // Value is an object, walk the keys of the object
104
- }
105
- else if (typeof obj[key] === 'object') {
106
- fn({
107
- value: obj[key],
108
- key: key,
109
- parent: obj,
110
- index: null,
111
- location: [...location, ...[key]],
112
- isLeaf: false
113
- });
114
- walk(obj[key], [...location, ...[key]]);
115
- // We've reached a leaf node, call fn on the leaf with the location
116
- }
117
- else {
118
- fn({
119
- value: obj[key],
120
- key: key,
121
- parent: obj,
122
- index: null,
123
- location: [...location, ...[key]],
124
- isLeaf: true
125
- });
126
- }
127
- });
128
- }
129
- walk(root);
130
- }
86
+ // static walk(root: any, fn: Function) {
87
+ // function walk(obj: any, location: any[] = []) {
88
+ // if (obj === null || obj === undefined) {
89
+ // return;
90
+ // }
91
+ //
92
+ // Object.keys(obj).forEach((key) => {
93
+ //
94
+ // // Value is an array, call walk on each item in the array
95
+ // if (Array.isArray(obj[key])) {
96
+ // obj[key].forEach((el: any, j: number) => {
97
+ // fn({
98
+ // value: el,
99
+ // key: key,
100
+ // index: j,
101
+ // location: [...location, ...[key], ...[j]],
102
+ // parent: obj,
103
+ // isLeaf: false
104
+ // });
105
+ // walk(el, [...location, ...[key], ...[j]]);
106
+ // });
107
+ //
108
+ // // Value is an object, walk the keys of the object
109
+ // } else if (typeof obj[key] === 'object') {
110
+ // fn({
111
+ // value: obj[key],
112
+ // key: key,
113
+ // parent: obj,
114
+ // index: null,
115
+ // location: [...location, ...[key]],
116
+ // isLeaf: false
117
+ // });
118
+ // walk(obj[key], [...location, ...[key]]);
119
+ //
120
+ // // We've reached a leaf node, call fn on the leaf with the location
121
+ // } else {
122
+ // fn({
123
+ // value: obj[key],
124
+ // key: key,
125
+ // parent: obj,
126
+ // index: null,
127
+ // location: [...location, ...[key]],
128
+ // isLeaf: true
129
+ // });
130
+ // }
131
+ // });
132
+ // }
133
+ //
134
+ // walk(root);
135
+ // }
131
136
  static get(arr, path = null) {
132
- if (path) {
133
- let paths = path.split('.');
134
- let first = paths.shift();
135
- if (/^[1-9]+\d*$/.test(first)) {
136
- first = parseInt(first);
137
- }
138
- if (arr.hasOwnProperty(first)) {
139
- let pointer = arr[first];
140
- if (paths.length === 0) {
141
- return pointer;
142
- }
143
- else {
144
- return Utils.get(pointer, paths.join('.'));
145
- }
146
- }
147
- else {
148
- // not found
149
- return null;
150
- }
151
- }
152
- return arr;
137
+ return Interpolation_1.Interpolation.get(arr, path);
138
+ // if (path) {
139
+ // const paths = path.split('.');
140
+ // let first: string | number = paths.shift();
141
+ // if (/^[1-9]+\d*$/.test(first)) {
142
+ // first = parseInt(first);
143
+ // }
144
+ // if (arr.hasOwnProperty(first)) {
145
+ // const pointer: any = arr[first];
146
+ // if (paths.length === 0) {
147
+ // return pointer;
148
+ // } else {
149
+ // return Utils.get(pointer, paths.join('.'));
150
+ // }
151
+ // } else {
152
+ // // not found
153
+ // return null;
154
+ // }
155
+ //
156
+ // }
157
+ // return arr;
153
158
  }
154
159
  static splitTyped(arr, sep = '.') {
155
- let paths = arr.split('.');
156
- let normPaths = [];
160
+ const paths = arr.split('.');
161
+ const normPaths = [];
157
162
  paths.forEach(function (_x) {
158
163
  if (typeof _x === 'string' && /\d+/.test(_x)) {
159
164
  normPaths.push(parseInt(_x));
@@ -174,7 +179,7 @@ class Utils {
174
179
  paths = path;
175
180
  }
176
181
  first = paths.shift();
177
- let next = paths.length > 0 ? paths[0] : null;
182
+ const next = paths.length > 0 ? paths[0] : null;
178
183
  if (!arr.hasOwnProperty(first)) {
179
184
  // new, key doesn't exists
180
185
  if (typeof next === 'number') {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/Utils.ts"],"names":[],"mappings":"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","file":"Utils.js","sourcesContent":["// import {merge, mergeDeep} from \"typescript-object-utils\";\n// import * as merge from 'deepmerge'\nimport * as _ from 'lodash';\n\n\nexport class Utils {\n\n /**\n * https://stackoverflow.com/questions/1960473/unique-values-in-an-array\n * @param arr\n * @returns {any[]}\n */\n static unique_array(arr: any[]): any[] {\n return arr.filter((v, i, a) => a.indexOf(v) === i);\n }\n\n static escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n static clone(obj: any) {\n return _.cloneDeep(obj)\n }\n\n /*\n static mergeArray(dest: any[], source: any[], options?: merge.Options) {\n let res = _.concat(dest, source);\n return Utils.uniqArr(res)\n }\n*/\n\n static uniqArr(res: any[]) {\n return _.uniqBy(res, (entry: any) => {\n let x = null\n if (_.isFunction(entry)) {\n x = entry.toString();\n } else {\n x = JSON.stringify(entry);\n }\n return x\n });\n }\n\n\n static merge(...args: any[]): any {\n let first = _.cloneDeep(args.shift());\n return _.mergeWith(first, ...args, (dest: any, source: any) => {\n if (_.isArray(dest)) {\n let res = _.concat(dest, source);\n return Utils.uniqArr(res)\n } else if (_.isPlainObject(dest)) {\n return Utils.merge(dest, source);\n } else {\n return source;\n }\n\n });\n //return merge.all(args, {arrayMerge: this.mergeArray})\n //return _.merge(...args);//merge.all(args)\n /*\n let tmp:any={}\n args.forEach(_x => {tmp = mergeDeep(tmp,_x)})\n return tmp\n */\n }\n\n static walk(root: any, fn: Function) {\n function walk(obj: any, location: any[] = []) {\n if (obj === null || obj === undefined) return;\n\n Object.keys(obj).forEach((key) => {\n\n // Value is an array, call walk on each item in the array\n if (Array.isArray(obj[key])) {\n obj[key].forEach((el: any, j: number) => {\n fn({\n value: el,\n key: key,\n index: j,\n location: [...location, ...[key], ...[j]],\n parent: obj,\n isLeaf: false\n });\n walk(el, [...location, ...[key], ...[j]])\n })\n\n // Value is an object, walk the keys of the object\n } else if (typeof obj[key] === 'object') {\n fn({\n value: obj[key],\n key: key,\n parent: obj,\n index: null,\n location: [...location, ...[key]],\n isLeaf: false\n });\n walk(obj[key], [...location, ...[key]])\n\n // We've reached a leaf node, call fn on the leaf with the location\n } else {\n fn({\n value: obj[key],\n key: key,\n parent: obj,\n index: null,\n location: [...location, ...[key]],\n isLeaf: true\n })\n }\n })\n }\n\n walk(root)\n }\n\n static get(arr: any, path: string = null): any {\n if (path) {\n let paths = path.split('.');\n let first: string | number = paths.shift();\n if (/^[1-9]+\\d*$/.test(first)) {\n first = parseInt(first)\n }\n if (arr.hasOwnProperty(first)) {\n let pointer: any = arr[first];\n if (paths.length === 0) {\n return pointer\n } else {\n return Utils.get(pointer, paths.join('.'))\n }\n } else {\n // not found\n return null\n }\n\n }\n return arr\n\n }\n\n static splitTyped(arr: string, sep: string = '.'): any[] {\n let paths = arr.split('.');\n let normPaths: any[] = [];\n paths.forEach(function (_x) {\n if (typeof _x === 'string' && /\\d+/.test(_x)) {\n normPaths.push(parseInt(_x))\n } else {\n normPaths.push(_x)\n }\n\n });\n return normPaths\n }\n\n static set(arr: any, path: string | any[], value: any): boolean {\n let paths = null;\n let first: string | number = null;\n\n if (typeof path === 'string') {\n paths = Utils.splitTyped(path)\n } else {\n paths = path\n }\n first = paths.shift();\n let next = paths.length > 0 ? paths[0] : null;\n\n\n if (!arr.hasOwnProperty(first)) {\n // new, key doesn't exists\n if (typeof next === 'number') {\n // if next value is a number then this must be an array!\n arr[first] = []\n } else {\n arr[first] = {}\n }\n } else {\n if (Array.isArray(arr)) {\n if (!(typeof first === 'number')) {\n return false\n }\n } else if (Array.isArray(arr[first])) {\n if (!(typeof next === 'number')) {\n return false\n }\n } else if (!Utils.isObject(arr[first])) {\n // primative\n if (Utils.isObject(value)) {\n return false\n }\n } else {\n if (typeof next === 'number') {\n // must be array\n if (!Array.isArray(arr[first])) {\n return false\n }\n }\n }\n }\n\n if (paths.length > 0) {\n return Utils.set(arr[first], paths, value)\n } else {\n arr[first] = value;\n return true\n }\n }\n\n static isArray(o: any) {\n return _.isArray(o)\n }\n\n static isObject(o: any) {\n return _.isObject(o)\n }\n\n\n static isString(o: any) {\n return _.isString(o)\n }\n\n\n static isEmpty(o: any) {\n return _.isEmpty(o)\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../../src/utils/Utils.ts"],"names":[],"mappings":"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","file":"Utils.js","sourcesContent":["// import {merge, mergeDeep} from \"typescript-object-utils\";\n// import * as merge from 'deepmerge'\nimport * as _ from 'lodash';\nimport {Interpolation} from \"@allgemein/base/utils/Interpolation\";\n\n\nexport class Utils {\n\n /**\n * https://stackoverflow.com/questions/1960473/unique-values-in-an-array\n * @param arr\n * @returns {any[]}\n */\n static unique_array(arr: any[]): any[] {\n return arr.filter((v, i, a) => a.indexOf(v) === i);\n }\n\n static escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n static clone(obj: any) {\n return _.cloneDeep(obj);\n }\n\n /*\n static mergeArray(dest: any[], source: any[], options?: merge.Options) {\n let res = _.concat(dest, source);\n return Utils.uniqArr(res)\n }\n*/\n\n static uniqArr(res: any[]) {\n return _.uniqBy(res, (entry: any) => {\n let x = null;\n if (_.isFunction(entry)) {\n x = entry.toString();\n } else {\n x = JSON.stringify(entry);\n }\n return x;\n });\n }\n\n\n static merge(...args: any[]): any {\n const first = _.cloneDeep(args.shift());\n return _.mergeWith(first, ...args, (dest: any, source: any) => {\n if (_.isArray(dest)) {\n const res = _.concat(dest, source);\n return Utils.uniqArr(res);\n } else if (_.isPlainObject(dest)) {\n return Utils.merge(dest, source);\n } else {\n return source;\n }\n\n });\n // return merge.all(args, {arrayMerge: this.mergeArray})\n // return _.merge(...args);//merge.all(args)\n /*\n let tmp:any={}\n args.forEach(_x => {tmp = mergeDeep(tmp,_x)})\n return tmp\n */\n }\n\n // static walk(root: any, fn: Function) {\n // function walk(obj: any, location: any[] = []) {\n // if (obj === null || obj === undefined) {\n // return;\n // }\n //\n // Object.keys(obj).forEach((key) => {\n //\n // // Value is an array, call walk on each item in the array\n // if (Array.isArray(obj[key])) {\n // obj[key].forEach((el: any, j: number) => {\n // fn({\n // value: el,\n // key: key,\n // index: j,\n // location: [...location, ...[key], ...[j]],\n // parent: obj,\n // isLeaf: false\n // });\n // walk(el, [...location, ...[key], ...[j]]);\n // });\n //\n // // Value is an object, walk the keys of the object\n // } else if (typeof obj[key] === 'object') {\n // fn({\n // value: obj[key],\n // key: key,\n // parent: obj,\n // index: null,\n // location: [...location, ...[key]],\n // isLeaf: false\n // });\n // walk(obj[key], [...location, ...[key]]);\n //\n // // We've reached a leaf node, call fn on the leaf with the location\n // } else {\n // fn({\n // value: obj[key],\n // key: key,\n // parent: obj,\n // index: null,\n // location: [...location, ...[key]],\n // isLeaf: true\n // });\n // }\n // });\n // }\n //\n // walk(root);\n // }\n\n static get(arr: any, path: string = null): any {\n return Interpolation.get(arr, path);\n // if (path) {\n // const paths = path.split('.');\n // let first: string | number = paths.shift();\n // if (/^[1-9]+\\d*$/.test(first)) {\n // first = parseInt(first);\n // }\n // if (arr.hasOwnProperty(first)) {\n // const pointer: any = arr[first];\n // if (paths.length === 0) {\n // return pointer;\n // } else {\n // return Utils.get(pointer, paths.join('.'));\n // }\n // } else {\n // // not found\n // return null;\n // }\n //\n // }\n // return arr;\n }\n\n static splitTyped(arr: string, sep: string = '.'): any[] {\n const paths = arr.split('.');\n const normPaths: any[] = [];\n paths.forEach(function (_x) {\n if (typeof _x === 'string' && /\\d+/.test(_x)) {\n normPaths.push(parseInt(_x));\n } else {\n normPaths.push(_x);\n }\n\n });\n return normPaths;\n }\n\n static set(arr: any, path: string | any[], value: any): boolean {\n let paths = null;\n let first: string | number = null;\n\n if (typeof path === 'string') {\n paths = Utils.splitTyped(path);\n } else {\n paths = path;\n }\n first = paths.shift();\n const next = paths.length > 0 ? paths[0] : null;\n\n\n if (!arr.hasOwnProperty(first)) {\n // new, key doesn't exists\n if (typeof next === 'number') {\n // if next value is a number then this must be an array!\n arr[first] = [];\n } else {\n arr[first] = {};\n }\n } else {\n if (Array.isArray(arr)) {\n if (!(typeof first === 'number')) {\n return false;\n }\n } else if (Array.isArray(arr[first])) {\n if (!(typeof next === 'number')) {\n return false;\n }\n } else if (!Utils.isObject(arr[first])) {\n // primative\n if (Utils.isObject(value)) {\n return false;\n }\n } else {\n if (typeof next === 'number') {\n // must be array\n if (!Array.isArray(arr[first])) {\n return false;\n }\n }\n }\n }\n\n if (paths.length > 0) {\n return Utils.set(arr[first], paths, value);\n } else {\n arr[first] = value;\n return true;\n }\n }\n\n static isArray(o: any) {\n return _.isArray(o);\n }\n\n static isObject(o: any) {\n return _.isObject(o);\n }\n\n\n static isString(o: any) {\n return _.isString(o);\n }\n\n\n static isEmpty(o: any) {\n return _.isEmpty(o);\n }\n}\n"],"sourceRoot":".."}