dt-toolbox 4.0.6 → 4.0.7
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/Changelog.md +16 -0
- package/dist/dt-toolbox.min.js +1 -1
- package/package.json +9 -6
- package/src/convertors/breadcrumbs.js +2 -1
- package/src/convertors/index.js +6 -2
- package/src/convertors/standard.js +35 -22
- package/src/help/index.js +12 -16
- package/src/help/reduceTuples.js +17 -13
- package/src/help/tuplesToBreadcrumbs.js +22 -0
- package/src/lib/combine.js +2 -2
- package/src/lib/find.js +2 -2
- package/src/lib/folder.js +2 -3
- package/src/lib/index.js +2 -2
- package/src/lib/modify.js +2 -2
- package/src/lib/parent.js +16 -16
- package/src/main.js +14 -12
- package/src/simple.js +0 -1
- package/src/convertors/convertors_oldVersion.js +0 -156
- package/src/help/copyStructure.js +0 -15
- package/src/help/generateList.js +0 -13
- package/src/help/generateObject.js +0 -27
package/Changelog.md
CHANGED
|
@@ -2,14 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
### 4.0.7 (2022-03-03)
|
|
6
|
+
- [x] Library '@peter.naydenov/walk' was included as a dependency;
|
|
7
|
+
- [x] Cleaning: Method 'help.generateObject' was removed. Not in use anymore;
|
|
8
|
+
- [x] Cleaning: Method 'help.generateList' was removed. Not in use anymore;
|
|
9
|
+
- [x] Cleaning: Old convertor file 'convertors_oldVersion.js' was removed;
|
|
10
|
+
- [x] Refactoring: Convertor 'standard' is using 'walk';
|
|
11
|
+
- [x] Fix: Initialization with 'tuples' doesn't work;
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
5
15
|
### 4.0.6 (2022-03-03)
|
|
6
16
|
- [x] Fix: Sometimes empty array structures are converted to empty objects;
|
|
17
|
+
- [ ] Bug: Initialization with 'tuples' doesn't work;
|
|
7
18
|
|
|
8
19
|
|
|
9
20
|
|
|
10
21
|
### 4.0.5 (2022-03-01)
|
|
11
22
|
- [x] Fix: Arrays are recognized as objects. Object members of arrays are recognized as arrays;
|
|
12
23
|
- [ ] Bug: Sometimes empty array structures are converted to empty objects;
|
|
24
|
+
- [ ] Bug: Initialization with 'tuples' doesn't work;
|
|
13
25
|
|
|
14
26
|
|
|
15
27
|
|
|
@@ -19,6 +31,7 @@
|
|
|
19
31
|
- [x] Fix: Operation "add" treats numbers as string;
|
|
20
32
|
- [x] Fix: Convertor from 'breadcrumbs' breaks;
|
|
21
33
|
- [ ] Bug: Arrays are recognized as objects. Object members of arrays are recognized as arrays;
|
|
34
|
+
- [ ] Bug: Initialization with 'tuples' doesn't work;
|
|
22
35
|
|
|
23
36
|
|
|
24
37
|
|
|
@@ -29,6 +42,7 @@
|
|
|
29
42
|
- [ ] Bug: Boolean values "true" are converted to 1(number);
|
|
30
43
|
- [ ] Bug: Operation "add" treats numbers as string;
|
|
31
44
|
- [ ] Bug: Convertor from 'breadcrumbs' breaks;
|
|
45
|
+
- [ ] Bug: Initialization with 'tuples' doesn't work;
|
|
32
46
|
|
|
33
47
|
|
|
34
48
|
|
|
@@ -47,6 +61,7 @@
|
|
|
47
61
|
- [ ] Bug: Boolean values "true" are converted to 1(number);
|
|
48
62
|
- [ ] Bug: Operation "add" treats numbers as string;
|
|
49
63
|
- [ ] Bug: Convertor from 'breadcrumbs' breaks;
|
|
64
|
+
- [ ] Bug: Initialization with 'tuples' doesn't work;
|
|
50
65
|
|
|
51
66
|
|
|
52
67
|
|
|
@@ -56,6 +71,7 @@
|
|
|
56
71
|
- [x] Fix: Methods "add/update/overwrite/combine/append/prepend" expect by default data-type 'standard'. Should be a 'flat' data-type. This update is coming as major release because may require some changes. Everything else is according documentation for version 3.x.x;
|
|
57
72
|
- [ ] Bug: Methods 'keep' and 'remove' received `flat keys` instead of `breadcrumbs keys`
|
|
58
73
|
- [ ] Bug: Initialize with breadcrumbs is not working at all;
|
|
74
|
+
- [ ] Bug: Initialization with 'tuples' doesn't work;
|
|
59
75
|
- [ ] Bug: Convertor for 'midFlat' is loosing empty data-structures;
|
|
60
76
|
- [ ] Bug: Boolean values "true" are converted to 1(number);
|
|
61
77
|
- [ ] Bug: Operation "add" treats numbers as string;
|
package/dist/dt-toolbox.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var dtbox;(()=>{var e={702:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((s=>{t.hasOwnProperty(s)&&e[s]===t[s]||(r[s]=t[s])})),r}},86:e=>{e.exports=function(e,t){let r={};return Object.keys(t).forEach((s=>{e.hasOwnProperty(s)||(r[s]=t[s])})),r}},216:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((s=>{t.hasOwnProperty(s)&&e[s]===t[s]&&(r[s]=e[s])})),r}},218:(e,t,r)=>{const s=r(216),o=r(702),l=r(337),n=r(86),c=r(814);e.exports={identical:s,change:o,same:l,different:n,missing:c}},814:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((s=>{t.hasOwnProperty(s)||(r[s]=e[s])})),r}},337:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((e=>{t.hasOwnProperty(e)&&(r[e]=t[e])})),r}},270:e=>{"use strict";e.exports={toFlat:function(e,t){if(0===Object.keys(t).length)return[[["object",0]],{}];let{help:r}=e,s=[],o={},l=Object.keys(t).map((e=>e.split("/"))).sort(((e,t)=>t.length-e.length)),n={},c=[],u=[];return l.forEach((e=>{e.forEach(((t,r)=>{let s=e.slice(0,r).join("/");s&&(n[s]||(n[s]=new Set,c.push(s)),n[s].add(t))}))})),c.forEach(((e,t)=>{let o=!1;if(s[t]||(s[t]=["object",t]),u[t]&&(e=u[t]),o=Array.from(n[e]),"root"===e){const e=r.hasNumbers(o)?"array":"object";s[t][0]=e}o.forEach((o=>{let l=n[`${e}/${o}`];if(!l)return;let c=Array.from(l),i=r.hasNumbers(c)?"array":"object",a=s.length;u[a]=`${e}/${o}`,s.push([i,a]),s[t].push([a,o])}))})),l.forEach((e=>{let r=e.pop(),s=e.join("/"),l=null,n="";l=u.indexOf(s),l<0&&(l=c.indexOf(s)),n=`root/${l}/${r}`,o[n]=t[`${s}/${r}`]})),[s,o]},toType:function(e,t){let[r,s]=t,o=Object.keys(s),l={},n={};return r.forEach((e=>{let[t,s,...o]=e;o.forEach((e=>{let[t,o]=e,l=o,c=s;for(let e=s;e>=0;e--){let[t,s,...o]=r[e];o.forEach((e=>{let[t,r]=e;t===c&&(l=`${r}/${l}`,c=s)}))}n[t]=l}))})),o.forEach((e=>{let t=e.split("/"),r=t[1],o=n[r];"0"==r?t=t.filter(((e,t)=>1!=t)):t[1]=o,l[t.join("/")]=s[e]})),l}}},890:(e,t,r)=>{"use strict";const s=r(270),o=r(72),l=r(184),n=e=>(t,r)=>{let n,c,u,{help:i}=t,a=[];switch(e){case"std":case"standard":return o.toFlat(t,r);case"tuple":case"tuples":break;case"breadcrumb":case"breadcrumbs":return n=Object.keys(r),a=n.map((e=>r[e])),c=i.sanitizeFlatKeys(n),u=i.zipObject(c,a),s.toFlat(t,u);case"file":case"files":return n=r.map((e=>{let t=e.split("/");return a.push(t.pop()),t.join("/")})),c=i.sanitizeFlatKeys(n),u=i.zipObject(c,a),s.toFlat(t,u);case"midFlat":return l.toFlat(t,r)}return[["object",0],{}]};e.exports={from:function(e){return{toFlat:n(e)}},to:function(e,t,r){switch(e){case"std":case"standard":return o.toType(t,r);case"midFlat":return l.toType(t,r);case"breadcrumb":case"breadcrumbs":return s.toType(t,r)}}}},184:e=>{"use strict";e.exports={toFlat:function(e,t){if(0===Object.keys(t).length)return[[["object",0]],{}];let r=[],s={},{help:o}=e,l=Object.keys(t).map((e=>e.trim().replace(/\/$/,"").split("/"))).sort(((e,t)=>t.length-e.length)),n={},c=["root"],u=[];return l.forEach((e=>{e.forEach(((t,r)=>{let s=e.slice(0,r).join("/");s&&(n[s]||(n[s]=new Set,c.push(s)),n[s].add(t))}))})),Array.from(c.reduce(((e,t)=>{let r;e.add(t);const s=n[t];return null==s||(r=Array.from(s),r.forEach((r=>e.add(`${t}/${r}`)))),e}),new Set)).sort().forEach(((e,t)=>{let s;if(r[t]||(r[t]=["object",t],u[t]=e),u[t]&&(e=u[t]),null==e)return;const l=n[e];if(!l)return;let c=Array.from(l);o.hasNumbers(c)&&(r[t][0]="array"),l.forEach((t=>{s=r.length,u[s]=`${e}/${t}`,r.push(["object",s])}))})),u.forEach(((e,l)=>{let n,c,i=Object.keys(t[e]).map((e=>e.trim().replace(/\/$/,""))),a=o.hasNumbers(i),p=e.split("/");n=p.pop(),c=p.join("/");let d=u.indexOf(c);d>=0&&r[d].push([l,n]),a&&(r[l][0]="array"),u[l]=e;for(let r in t[e]){let o=t[e][r];if("_fake$$$"===o)return;s[`root/${l}/${r}`]=o}})),[r,s]},toType:function(e,t){let r,[s,o]=t,l={root:{}},n={0:"root"};s.forEach(((e,t)=>{r=null!=n[t]?n[t]:"root",e.forEach(((e,t)=>{if(t<2)return;let[s,o]=e,c=`${r}/${o}`;l[c]={},n[s]=c}))}));let c=Object.keys(o),u=new Set;for(let e of c){let[,t,r]=e.split("/"),s=n[t];u.add(t),l[s][r]=o[e]}return s.forEach((e=>{let[t,r,...s]=e,o=n[r],c=!u.has(r.toString()),i=!(s.length>0);"array"===t&&c&&i&&(l[o][-1]="_fake$$$")})),l}}},72:e=>{"use strict";e.exports={toFlat:function(e,t){let r=[],s=!1,o=e.empty(),{findType:l,isItPrimitive:n,generateList:c}=e.help,u=[];r.push(c(0,t)),u.push([l(t),0]);for(let e of r)for(let[t,i,a]of e)if(s=n(a),s)o[`root/${t}/${i}`]=a;else{let e=u.length;u[t].push([e,i]),r.push(c(e,a)),u.push([l(a),e])}return[u,o]},toType:function(e,t){let[r,s]=t,o=Object.keys(s),l=[],n={};return r.forEach((e=>{let t,[r,c,...u]=e;t="array"==r?[]:{},o.filter((e=>e.includes(`root/${c}/`))).forEach((e=>{let r=e.split("/"),o=r[r.length-1];t[o]=s[e]})),n[c]=l.length,l.push(t)})),r.forEach((e=>{let[,t,...r]=e;r.forEach((e=>{let[r,s]=e;r=Number(r)||r;let o=n[r];l[t][s]=l[o]}))})),l[0]}}},423:e=>{e.exports=function(e){let t=[];return e.forEach(((e,r)=>{t.push([]),e.forEach((e=>t[r].push(e)))})),t}},634:e=>{e.exports=function(e){return e._select.value.reduce(((t,r)=>(t[r]=e.value[r],t)),{})}},906:e=>{e.exports=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s={},o=[];return t.forEach((t=>{let l=t.split("/"),n=l[1],c=l.pop();n==e&&(s[c]=r[t],o.push(t))})),[s,o]}},85:e=>{e.exports=function*(e,t){for(let r in t)yield[e,r,t[r]]}},500:e=>{e.exports=function*(e){let t={},r=new Set;for(let s of e){let e=s.pop(),o=s.join("/");r.has(o)||(r.add(o),t[o]=[]),t[o].push(e)}yield t}},35:e=>{e.exports=function(e){return!e.every((e=>{const t=Number(e);return 0!==t&&!t}))}},935:(e,t,r)=>{"use strict";const s=r(92),o=r(35),l=r(85),n=r(500),c=r(257),u=r(423),i=r(501),a=r(906),p=r(486),d=r(504),f=r(438),h=r(634),m=r(773);e.exports={findType:e=>e instanceof Array?"array":"object",hasNumbers:o,isItPrimitive:s,generateObject:n,generateList:l,sanitizeFlatKeys:c,copyStructure:u,objectsByLevel:i,filterObject:a,toBreadcrumbKeys:p,updateSelection:d,zipObject:f,extractSelection:h,reduceTuples:m}},92:e=>{e.exports=function(e){return"function"==typeof e||"object"!=typeof e}},501:e=>{e.exports=function(e){return e.reduce(((e,t)=>{let r=[];return t.forEach(((e,t)=>{t>1&&r.push(e[0])})),r.length>0&&e.push(r),e}),[[0]])}},773:e=>{e.exports=function(e,t){const{help:r}=e;return Object.keys(t).reduce(((e,s)=>{let o=s.substr(5).split("/"),l=o[o.length-1];return r.hasNumbers([l])&&o.pop(),e.push([o.join("/"),t[s]]),e}),[])}},257:e=>{e.exports=function(e){let t=e.map((e=>{let t=e.split("/");return"root"!=t[0]?["root",...t].join("/"):t.join("/")})),r=[],s=new Set;t.forEach((e=>{r.includes(e)?s.add(e):r.push(e)}));for(const e of s){let r=0;t=t.map((t=>t==e?`${t}/${r++}`:t))}return t}},486:e=>{e.exports=function(e,t){let r=["root"];return t.forEach((e=>{e.forEach(((t,s)=>{let o=e[1],l=r[o];s>1&&r.push(`${l}/${t[1]}`)}))})),e.map((e=>{let t=e.split("/"),s=t[1],o=t[2];return`${r[s]}/${o}`}))}},504:(e,t,r)=>{r(733),e.exports=function(e,t){let[...r]=e;return t.forEach((e=>{r.includes(e)||r.push(e)})),r}},438:e=>{e.exports=function(e,t){return e.reduce(((e,r,s)=>{let o,l=t[s];return o="string"==typeof l&&Number(l)||l,e[r]=o,e}),{})}},564:e=>{e.exports=function(e,t){const{structure:r,value:s}=t._select,o=new Set,l=new Set;let n=s.reduce(((e,t)=>{let r=parseInt(t.split("/")[1]);return o.add(r),r<e&&(e=r),e}),1e5);if(t._select.structure=r.reduce(((e,t)=>{let r=t[1];return r>=n&&o.has(r)&&(e.push([...t]),l.add(r)),e}),[["array",0]]),o.has(0)&&t._select.structure.splice(1,1),l.size>1){let e=0;l.forEach((r=>{let s=t._select.structure[0];0!=r&&s.push([r,e++])}))}else t._select.structure.splice(0,1);return t}},425:e=>{e.exports=function(e,t){const{convert:r,location:s}=e,o=r.to("midFlat",e,[t.structure,t.value]),{result:l}=t._select;if(!l)return t;for(k in l)newKey=k.replace("root",s),o[newKey]?o[newKey]={...o[newKey],...l[k]}:o[newKey]={...l[k]};return r.from("midFlat").toFlat(e,o)}},32:e=>{e.exports=function(e,t){const{type:r}=e,s=Object.keys(t.value);let o=t.structure.reduce(((e,t)=>(t[0]!=r||2==t.length&&e.push(t[1]),e)),[]);return t._select.value=s.filter((e=>{let t=parseInt(e.split("/")[1]);return o.includes(t)})),t._select.structure=[["array",0]],o.forEach(((e,r)=>{let s=t.structure[e][0];t._select.structure[0].push([e,r]),t._select.structure.push([s,e])})),t}},326:e=>{e.exports=function(e,t,r){const{convert:s,help:o,modifier:l}=e,n=s.to("midFlat",e,[t.structure,t.value]),c=s.to("midFlat",e,[r.structure,r.value]),u=Object.keys(c);let i;t._error=t._error.concat(r._error),i=u.reduce(((e,t)=>{let r=t.split("/").pop(),s=Object.keys(e.root);if("root"!=r&&e[t]){let r={};return r[t]={...c[t]},l.combineShallow(e,r)}if("root"!=r&&s.includes(r)){let r={};return r[t]={...c[t]},l.combineShallow(e,r)}return l.combineShallow(e,{root:{...c[t]}})}),n);let[a,p]=s.from("midFlat").toFlat(e,i);return t.structure=o.copyStructure(a),t.value=p,t}},911:e=>{e.exports=function(e,t){const{help:r,num:s,direction:o}=e;let l=[],n=[...t._select.value];return r.objectsByLevel(t.structure).forEach(((e,t)=>{("more"==o?t>=s:t<=s)&&(l=l.concat(e))})),t._select.value=n.filter((e=>{let t=parseInt(e.split("/")[1]);return l.includes(t)})),t}},699:e=>{e.exports=function(e,t){let r,s=Object.keys(t.value),{help:o,deep:l,search:n}=e,c=o.toBreadcrumbKeys(s,t.structure);n=n||"root",l=null==l?9999:l,l+=1,r=n.split("/").length+l;let u=c.filter((e=>e.match(n))).reduce(((e,t)=>{let o=c.indexOf(t);return t.split("/").length<=r&&e.push(s[o]),e}),[]);return t._select.value=o.updateSelection(t._select.value,u),t._select.structure=o.copyStructure(t.structure),t}},641:e=>{e.exports=function(e,t){const{help:r,prop:s,where:o}=e;let l=[],n=[],c=[];return"root"==s&&l.push(0),t.structure.forEach((e=>{e.forEach(((e,t)=>{if(t>1){let[t,r]=e;r==s&&l.push(t)}}))})),n=l.reduce(((e,r)=>{for(let s in t.value)s.split("/")[1]==r&&e.push(s);return e}),[]),c=o?l.reduce(((e,s)=>{let[l,c]=r.filterObject(s,n,t.value);return o(l)&&e.push(...c),e}),[]):n,t._select.value=r.updateSelection(t._select.value,c),t._select.structure=r.copyStructure(t.structure),t}},635:(e,t,r)=>{"use strict";const s=r(699),o=r(261),l=r(32),n=r(911),c=r(641),u={loadLong(e,t){let{structure:r,value:s}=t;return u._loadData(e,r,s)},loadShort(e,t){let[r,s]=t;return u._loadData(e,r,s)},_loadData(e,t,r){const{help:s,simpleDT:o}=e;let l=o();l.structure=s.copyStructure(t);for(const e in r)l.value[e]=r[e];return l},modify:r(483),find:s,parent:o,folder:c,deep:n,block:l,transform:r(348),attach:r(425),combine:r(326),assemble:r(564),purify:r(341)};e.exports=u},483:e=>{e.exports=function(e,t,r){const{action:s,convert:o,help:l,modifier:n}=e,c=o.to("midFlat",e,[t.structure,t.value]),u=o.to("midFlat",e,[r.structure,r.value]);let i;t._error=t._error.concat(r._error),i=n[s](c,u);let[a,p]=o.from("midFlat").toFlat(e,i);return t.structure=l.copyStructure(a),t.value=p,t}},261:e=>{e.exports=function(e,t){const{help:r,prop:s,where:o}=e;let l,n=[],c=[];for(let e in t.value){let t=e.split("/");t[2]==s&&n.push(t[1])}return t.structure.forEach((e=>{e.forEach(((e,r)=>{if(r>1&&e[1]==s){let r=e[0];"array"==t.structure[r][0]&&n.push(r)}}))})),c=n.reduce(((e,r)=>{for(let s in t.value)s.split("/")[1]==r&&e.push(s);return e}),[]),l=o?n.reduce(((e,s)=>{let[l,n]=r.filterObject(s,c,t.value);return o(l)&&e.push(...n),e}),[]):c,t._select.value=r.updateSelection(t._select.value,l),t._select.structure=r.copyStructure(t.structure),t}},341:(e,t,r)=>{r(733),e.exports=function(e,t){const{structure:r,value:s}=t._select,o=r.reverse();let l=s.reduce(((e,t)=>{let r=parseInt(t.split("/")[1]);return e.includes(r)||e.push(r),e}),[]);return t._select.structure=o.reduce(((e,t)=>{let[r,s,...o]=t,n=t.length,c=[r,s];return 2!=n||l.includes(s)?(o.forEach((e=>{let t=e[0];l.includes(t)&&(c.push([...e]),l.includes(s)||l.push(s))})),l.includes(s)?(e.push([...c]),e):e):e}),[]).reverse(),t}},348:e=>{e.exports=function(e,t){let r,[s,o]=t,{modify:l,empty:n}=e,c=Object.keys(o);switch(l){case"reverse":r=c.reduce(((e,t)=>{let r=t.split("/"),s=r[2].match(/^[0-9]+$/)?parseInt(r[2]):r[2],l=o[t];return e[`root/${r[1]}/${l}`]=s,e}),{});break;case"key":case"keys":r=c.reduce(((e,t,r)=>{let s=t.split("/");return e[`root/0/${r}`]=s[2],e}),{}),s=[["array",0]];break;case"value":case"values":r=c.reduce(((e,t,r)=>{let s=o[t];return e[`root/0/${r}`]=s,e}),n()),s=[["array",0]];break;default:r=n()}return[s,r]}},880:(e,t,r)=>{"use strict";const s=r(635),o=r(935),l=r(631),n=r(890),c=r(218),u=["std","standard","tuple","tuples","breadcrumb","breadcrumbs","file","files","midFlat","shortFlat"],i={dependencies:()=>({simpleDT:function(){const e=Object.create(p);return e.value=e.empty(),e.structure=[],e._select={structure:[],value:[],result:null},e._error=[],e},empty:Object.create(p).empty,convert:n,help:o,modifier:l}),init(e,t){let r=i.dependencies(),o=r.simpleDT(),l=r.help,{type:c,modify:a}={type:"std",modify:!1,...t};if(u.includes(c)){if(null!=e){const[t,s]="flat"==c||"shortFlat"==c?e:n.from(c).toFlat(r,e);o.structure=l.copyStructure(t),o.value=s}if(a){let[t,l]=s.transform({...r,modify:a},[o.structure,o.value]);return Object.keys(l).length<=0&&o._error.push(`Modifier "${a}" is not a valid modifier and was ignored. Data: ${JSON.stringify(e)}`),o.structure=t,o.value=l,o}return o}this._error.push(`Can't understand your data-type: ${c}. Please, find what is possible on https://github.com/PeterNaydenov/dt-toolbox`)},load:e=>e._select?s.loadLong(i.dependencies(),e):s.loadShort(i.dependencies(),e),preprocess(e,t,r){let{type:o="std"}={type:"std",modify:!1,...r},l=t(n.from(o).toFlat(i.dependencies(),e));return l?s.loadShort(i.dependencies(),l):(this._error.push('Method "preprocess" should always return a shortFlat data-type: [structure, value]'),i.init())},combine(e,t){const r=i.init(e,t);return s.combine({...i.dependencies()},this,r)},modify:e=>function(t,r){let l;return l=r?i.init(t,r):{structure:o.copyStructure(t.structure),value:{...t.value}},s.modify({...i.dependencies(),action:e},this,l)},errorLog(e){return e(this._error),this},replace(){const e=this,{result:t}=e._select;if(!t)return e;let[r,s]=n.from("midFlat").toFlat(i.dependencies(),t);return e.structure=o.copyStructure(r),e.value={...s},e._select.result=null,e},attach(e){const t=this,r={...i.dependencies(),location:e};let[l,n]=s.attach(r,t);return t.structure=o.copyStructure(l),t.value={...n},t._select.result=null,t},select(){return this._select={structure:[],value:[],result:null},this},find(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"root",t=arguments.length>1?arguments[1]:void 0;const r={...i.dependencies(),search:e,deep:t};return this._select.result=null,s.find(r,this)},parent(e,t){const r={...i.dependencies(),prop:e,where:t};return this._select.result=null,s.parent(r,this)},folder(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"root",t=arguments.length>1?arguments[1]:void 0;const r={...i.dependencies(),prop:e,where:t};return this._select.result=null,s.folder(r,this)},limit(e){return this._select.value=this._select.value.slice(0,e),this._select.result=null,this},keep(e){const t=this,r=o.toBreadcrumbKeys(t._select.value,t.structure);return void 0===e||(t._select.result=null,t._select.value=t._select.value.reduce(((s,o,l)=>{let n=r[l];return e(t.value[o],n,o)&&s.push(o),s}),[])),t},remove(e){const t=this,r=o.toBreadcrumbKeys(t._select.value,t.structure);return void 0===e||(t._select.result=null,t._select.value=t._select.value.reduce(((s,o,l)=>{let n=r[l];return e(t.value[o],n,o)||s.push(o),s}),[])),t},deep(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"less",r={...i.dependencies(),num:e,direction:t};return this._select.result=null,s.deep(r,this)},withData(){let e=this;return e._select.result=n.to("midFlat",i.dependencies(),[e.structure,e.value]),e},withSelection(){let e=this,{structure:t}=e._select;return e._select.result=n.to("midFlat",i.dependencies(),[t,o.extractSelection(e)]),e},flatten(){const e=this,{result:t}=e._select;return t?(e._select.result=l.flatten(t,{}),e):e},mix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"root",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const r=this,{result:s}=r._select;return s?(r._select.result=l.mix(s,[...t,e]),r):r},reverse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["root"];const t=this,{result:r}=t._select;return r?(t._select.result=l.reverse(r,e),t):t},keyPrefix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const t=this,{result:r}=t._select;return r?(t._select.result=l.keyPrefix(r,{separationSymbol:e}),t):t},block:e=>function(){const t={...i.dependencies(),type:e};return this._select.result=null,s.block(t,this)},invert(){const e=this,t=e._select.value,r=Object.keys(e.value);return e._select.result=null,e._select.value=r.reduce(((e,r)=>(t.includes(r)||e.push(r),e)),[]),e},assemble(){const e={...i.dependencies()};return s.assemble(e,this)},purify(){const e={...i.dependencies()};return s.purify(e,this)},compare:e=>function(t,r){if(!t.hasOwnProperty("value")||!t.hasOwnProperty("structure"))return r(null),this;let s=this,o=n.to("breadcrumb",i.dependencies(),[s.structure,s.value]),l=n.to("breadcrumb",i.dependencies(),[t.structure,t.value]),u=c[e](o,l),[a,p]=n.from("breadcrumb").toFlat(i.dependencies(),u),d=i.dependencies().simpleDT();return d.structure=a,d.value=p,r(d),s},spread(e,t){const r=this,o=!!r._select.result,{help:l}=i.dependencies();let c,u,a;switch(e){case"value":case"values":if(u="values",o){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);a=s.transform({...i.dependencies(),modify:u},e)}else a=s.transform({...i.dependencies(),modify:u},[r.structure,r.value]);c=n.to("std",i.dependencies(),a).map((e=>"string"==typeof e&&Number(e)||e));break;case"key":case"keys":if(u="keys",o){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);a=s.transform({...i.dependencies(),modify:u},e),u="values",a=s.transform({...i.dependencies(),modify:u},a)}else a=s.transform({...i.dependencies(),modify:u},[r.structure,r.value]);c=n.to("std",i.dependencies(),a);break;case"standard":case"std":if(o){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);c=n.to("std",i.dependencies(),e)}else c=n.to("std",i.dependencies(),[r._select.structure,l.extractSelection(r)]);break;case"breadcrumb":case"breadcrumbs":if(o){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);c=n.to("breadcrumbs",i.dependencies(),e)}else c=n.to("breadcrumbs",i.dependencies(),[r._select.structure,l.extractSelection(r)]);break;case"tuples":let e;if(o){let t=n.from("midFlat").toFlat(i.dependencies(),r._select.result);e=n.to("breadcrumbs",i.dependencies(),t)}else e=n.to("breadcrumbs",i.dependencies(),[r._select.structure,l.extractSelection(r)]);c=l.reduceTuples(i.dependencies(),e);break;case"file":case"files":let t,p;if(o){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);t=n.to("breadcrumbs",i.dependencies(),e)}else t=n.to("breadcrumbs",i.dependencies,[r._select.structure,l.extractSelection(r)]);p=l.reduceTuples(i.dependencies(),t),c=p.map((e=>{let[t,r]=e;return t?`${t}/${r}`:r}));break;case"midFlat":c=o?{...r._select.result}:n.to("midFlat",i.dependencies(),[r._select.structure,l.extractSelection(r)]);break;default:if(o)c=n.from("midFlat").toFlat(i.dependencies(),r._select.result);else{let e=l.extractSelection(r);c=[l.copyStructure(r._select.structure),e]}}return t?(t(c),r):c},spreadAll(e,t){return this.all(),this.spread(e,t)}},a={hi:()=>"hi"},p={init:i.init,load:i.load,loadFast:i.load,preprocess:i.preprocess,add:i.modify("add"),update:i.modify("update"),overwrite:i.modify("overwrite"),insert:i.modify("insert"),combine:i.combine,append:i.modify("append"),prepend:i.modify("prepend"),log:i.errorLog,empty:()=>Object.create(a),replace:i.replace,attach:i.attach,spread:i.spread,spreadAll:i.spreadAll,export:i.spread,exportAll:i.spreadAll,identical:i.compare("identical"),change:i.compare("change"),same:i.compare("same"),different:i.compare("different"),missing:i.compare("missing"),select:i.select,parent:i.parent,find:i.find,all:i.find,folder:i.folder,space:i.folder,deepObject:i.block("object"),deepArray:i.block("array"),invert:i.invert,assemble:i.assemble,purify:i.purify,limit:i.limit,keep:i.keep,remove:i.remove,deep:i.deep,withData:i.withData,withSelection:i.withSelection,flatten:i.flatten,mix:i.mix,keyPrefix:i.keyPrefix,reverse:i.reverse};e.exports=p},429:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r])e[r][s]||(e[r][s]=t[r][s]);else e[r]={...t[r]};return e}},57:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r])e[r][s]?e[r][s]+=t[r][s]:e[r][s]=t[r][s];return e}},785:e=>{function t(e){let t=0;for(k in e)!isNaN(parseInt(k))&&t++;return t}e.exports=function(e,r){let s=Object.keys(e),o=Object.keys(r),l=[...s],n={root:{}},c={};for(key of o)l.includes(key)||l.push(key);let u=l.sort(((e,t)=>t.split("/").length-e.split("/").length)).reduce(((t,s)=>{let o=e.root,l=r[s],n=s.split("/").pop();for(k in Object.keys(o),"root"!=s&&e[s]&&(t.add(n),c[n]||(c[n]=[]),c[n]=Object.keys(e[s]).reduce(((t,r)=>(t.push(e[s][r]),t)),c[n])),"root"!=n&&l&&(t.add(n),c[n]||(c[n]=[]),c[n]=Object.keys(l).reduce(((e,t)=>(e.push(l[t]),e)),c[n])),l)e[`root/${k}`]&&l[k]&&(t.add(k),c[k]||(c[k]=[]),c[k].push(l[k])),o[k]&&l[k]&&(t.add(k),c[k]?c[k].push(l[k]):c[k]=[o[k],l[k]]);return t}),new Set);for(k in s.forEach((t=>{let r=e[t];for(k in n[t]={},r)u.has(k)||(n[t][k]=r[k])})),o.forEach((e=>{let s=r[e],o=Object.keys(s),l=e.split("/").pop();u.has(l)||o.forEach((r=>{let o=`root/${r}`;if(n[o]){let e=t(n[o]);if("_fake$$$"===s[r])return;n[o][e]=s[r]}else if(!u.has(r)){if("_fake$$$"===s[r])return;n[e][r]=s[r]}}))})),c){const e=`root/${k}`;n[e]=c[k].reduce(((e,t,r)=>(e[r]=t,e)),{})}return n}},875:(e,t,r)=>{const s=r(785);e.exports=function(e){let t=Object.keys(e).filter((e=>"root"!=e)).reduce(((t,r)=>{let o={root:{...e[r]}};return s(t,o)}),{root:{...e.root}});return Object.keys(t).filter((e=>"root"!=e)).reduce(((e,r)=>{let s=r.split("/")[1],o="";for(prop in t[r])o&&(o+=";"),o+=t[r][prop];return e.root[s]=o,e}),{root:{...t.root}})}},631:(e,t,r)=>{const s=r(366),o=r(733),l={add:r(429),update:o,overwrite:s,insert:r(655),append:r(57),prepend:r(869),keyPrefix:r(432),flatten:r(875),combineShallow:r(785),mix:r(558),reverse:r(248)};e.exports=l},655:e=>{e.exports=function(e,t){for(const r in t){let s=Object.values(e[r]),o=Object.values(t[r]),l=s.concat(o);e[r]=l.reduce(((e,t,r)=>(e[r]=t,e)),{})}return e}},432:e=>{e.exports=function(e,t){let r=Object.keys(e),{separationSymbol:s}=t;return r.reduce(((t,r)=>{let o=r.substr(5).split("/").join(s);return t[r]={},Object.keys(e[r]).forEach((l=>{"root"==r?t[r][l]=e.root[l]:t[r][`${o}${s}${l}`]=e[r][l]})),t}),{})}},558:(e,t,r)=>{r(326);const s=r(785);e.exports=function(e,t){const r=t.pop();let o={};return o[r]={...e[r]},o.root||(o.root={...e.root}),t.reduce(((t,o)=>{let l={root:{...t[r]}},n={root:{...e[o]}};return t[r]=s(l,n).root,t}),o)}},366:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r])e[r][s]=t[r][s];else e[r]={...t[r]};return e}},869:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r]){const o=e[r][s];e[r][s]=o?t[r][s]+o:t[r][s]}return e}},248:e=>{e.exports=function(e,t){let r={...e};for(const e of t)if(r[e]){let t={...r[e]},s=Object.keys(t);r[e]={},s.forEach((s=>{let o=t[s];r[e][o]=s}))}return r}},733:e=>{e.exports=function(e,t){for(const r in t)if(e.hasOwnProperty(r))for(let s in t[r])e[r].hasOwnProperty(s)&&(e[r][s]=t[r][s]);return e}}},t={},r=function r(s){var o=t[s];if(void 0!==o)return o.exports;var l=t[s]={exports:{}};return e[s](l,l.exports,r),l.exports}(880);dtbox=r})();
|
|
1
|
+
var dtbox;(()=>{var e={60:e=>{function t(e){return e instanceof Array?"array":"object"==typeof e?"object":"simple"}function*r(e,t,r,l,n){yield s(t,e,r,l,n)}function s(e,s,l,n,o){let c,[u,i]=n;c=i?i(e,o):e,null!=c&&("simple"!=t(c)?Object.keys(c).forEach((e=>{const i=t(c[e]);if("simple"===i){if(!u)return void(s[e]=c[e]);let t=u(c[e],e,`${o}/${e}`);if(null==t)return;s[e]=t}"object"===i&&(s[e]={},l.push(r(s[e],c[e],l,n,`${o}/${e}`))),"array"===i&&(s[e]=[],l.push(r(s[e],c[e],l,n,`${o}/${e}`)))})):"array"==t(s)?s.push(c):s[c]=c)}e.exports=function(e,r){let l,n=t(e),o=[],c="root",u=function(e){let t=null,r=null;return"function"==typeof e?t=e:e instanceof Array&&(t=e[0],r=e[1]),[t,r]}(r);switch(n){case"array":l=[],s(e,l,o,u,c);break;case"object":l={},s(e,l,o,u,c);break;case"simple":return e}for(const e of o)e.next();return l}},702:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((s=>{t.hasOwnProperty(s)&&e[s]===t[s]||(r[s]=t[s])})),r}},86:e=>{e.exports=function(e,t){let r={};return Object.keys(t).forEach((s=>{e.hasOwnProperty(s)||(r[s]=t[s])})),r}},216:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((s=>{t.hasOwnProperty(s)&&e[s]===t[s]&&(r[s]=e[s])})),r}},218:(e,t,r)=>{const s=r(216),l=r(702),n=r(337),o=r(86),c=r(814);e.exports={identical:s,change:l,same:n,different:o,missing:c}},814:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((s=>{t.hasOwnProperty(s)||(r[s]=e[s])})),r}},337:e=>{e.exports=function(e,t){let r={};return Object.keys(e).forEach((e=>{t.hasOwnProperty(e)&&(r[e]=t[e])})),r}},270:e=>{"use strict";e.exports={toFlat:function(e,t){if(0===Object.keys(t).length)return[[["object",0]],{}];let{help:r}=e,s=[],l={},n=Object.keys(t).map((e=>e.split("/"))).sort(((e,t)=>t.length-e.length)),o={},c=[],u=[];return n.forEach((e=>{e.forEach(((t,r)=>{let s=e.slice(0,r).join("/");s&&(o[s]||(o[s]=new Set,c.push(s)),o[s].add(t))}))})),c.forEach(((e,t)=>{let l=!1;if(s[t]||(s[t]=["object",t]),u[t]&&(e=u[t]),l=Array.from(o[e]),"root"===e){const e=r.hasNumbers(l)?"array":"object";s[t][0]=e}l.forEach((l=>{let n=o[`${e}/${l}`];if(!n)return;let c=Array.from(n),i=r.hasNumbers(c)?"array":"object",a=s.length;u[a]=`${e}/${l}`,s.push([i,a]),s[t].push([a,l])}))})),n.forEach((e=>{let r=e.pop(),s=e.join("/"),n=null,o="";n=u.indexOf(s),n<0&&(n=c.indexOf(s)),o=`root/${n}/${r}`,l[o]=t[`${s}/${r}`]})),[s,l]},toType:function(e,t){let[r,s]=t,l=Object.keys(s),n={},o={};return r.forEach((e=>{let[t,s,...l]=e;l.forEach((e=>{let[t,l]=e,n=l,c=s;for(let e=s;e>=0;e--){let[t,s,...l]=r[e];l.forEach((e=>{let[t,r]=e;t===c&&(n=`${r}/${n}`,c=s)}))}o[t]=n}))})),l.forEach((e=>{let t=e.split("/"),r=t[1],l=o[r];"0"==r?t=t.filter(((e,t)=>1!=t)):t[1]=l,n[t.join("/")]=s[e]})),n}}},890:(e,t,r)=>{"use strict";const s=r(270),l=r(500),n=r(184),o=e=>(t,r)=>{let o,c,u,{help:i}=t,a=[];switch(e){case"std":case"standard":return l.toFlat(t,r);case"tuple":case"tuples":r=i.tuplesToBradcrumbs(t,r);case"breadcrumb":case"breadcrumbs":return o=Object.keys(r),a=o.map((e=>r[e])),c=i.sanitizeFlatKeys(o),u=i.zipObject(c,a),s.toFlat(t,u);case"file":case"files":return o=r.map((e=>{let t=e.split("/");return a.push(t.pop()),t.join("/")})),c=i.sanitizeFlatKeys(o),u=i.zipObject(c,a),s.toFlat(t,u);case"midFlat":return n.toFlat(t,r)}return[["object",0],{}]};e.exports={from:function(e){return{toFlat:o(e)}},to:function(e,t,r){const{help:o}=t;switch(e){case"std":case"standard":return l.toType(t,r);case"midFlat":return n.toType(t,r);case"tuple":case"tuples":let e=s.toType(t,r);return o.reduceTuples(t,e);case"breadcrumb":case"breadcrumbs":return s.toType(t,r)}}}},184:e=>{"use strict";e.exports={toFlat:function(e,t){if(0===Object.keys(t).length)return[[["object",0]],{}];let r=[],s={},{help:l}=e,n=Object.keys(t).map((e=>e.trim().replace(/\/$/,"").split("/"))).sort(((e,t)=>t.length-e.length)),o={},c=["root"],u=[];return n.forEach((e=>{e.forEach(((t,r)=>{let s=e.slice(0,r).join("/");s&&(o[s]||(o[s]=new Set,c.push(s)),o[s].add(t))}))})),Array.from(c.reduce(((e,t)=>{let r;e.add(t);const s=o[t];return null==s||(r=Array.from(s),r.forEach((r=>e.add(`${t}/${r}`)))),e}),new Set)).sort().forEach(((e,t)=>{let s;if(r[t]||(r[t]=["object",t],u[t]=e),u[t]&&(e=u[t]),null==e)return;const n=o[e];if(!n)return;let c=Array.from(n);l.hasNumbers(c)&&(r[t][0]="array"),n.forEach((t=>{s=r.length,u[s]=`${e}/${t}`,r.push(["object",s])}))})),u.forEach(((e,n)=>{let o,c,i=Object.keys(t[e]).map((e=>e.trim().replace(/\/$/,""))),a=l.hasNumbers(i),p=e.split("/");o=p.pop(),c=p.join("/");let d=u.indexOf(c);d>=0&&r[d].push([n,o]),a&&(r[n][0]="array"),u[n]=e;for(let r in t[e]){let l=t[e][r];if("_fake$$$"===l)return;s[`root/${n}/${r}`]=l}})),[r,s]},toType:function(e,t){let r,[s,l]=t,n={root:{}},o={0:"root"};s.forEach(((e,t)=>{r=null!=o[t]?o[t]:"root",e.forEach(((e,t)=>{if(t<2)return;let[s,l]=e,c=`${r}/${l}`;n[c]={},o[s]=c}))}));let c=Object.keys(l),u=new Set;for(let e of c){let[,t,r]=e.split("/"),s=o[t];u.add(t),n[s][r]=l[e]}return s.forEach((e=>{let[t,r,...s]=e,l=o[r],c=!u.has(r.toString()),i=!(s.length>0);"array"===t&&c&&i&&(n[l][-1]="_fake$$$")})),n}}},500:e=>{"use strict";e.exports={toFlat:function(e,t){let r=e.empty(),{help:s,walk:l}=e,{findType:n}=s,o=[],c=0,u=0,i={};return l(t,[function(e,t,s){return r[`root/${u}/${t}`]=e,e},function(e,t){let r=t.split("/"),s=r.pop();if(o.push([n(e),c]),i[t]=c,u=c,r.length>0){let e=r.join("/"),t=i[e];o[t].push([c,s])}return c++,e}]),[o,r]},toType:function(e,t){let[r,s]=t,l=Object.keys(s),n=[],o={};return r.forEach((e=>{let t,[r,c,...u]=e;t="array"==r?[]:{},l.filter((e=>e.includes(`root/${c}/`))).forEach((e=>{let r=e.split("/"),l=r[r.length-1];t[l]=s[e]})),o[c]=n.length,n.push(t)})),r.forEach((e=>{let[,t,...r]=e;r.forEach((e=>{let[r,s]=e;r=Number(r)||r;let l=o[r];n[t][s]=n[l]}))})),n[0]}}},634:e=>{e.exports=function(e){return e._select.value.reduce(((t,r)=>(t[r]=e.value[r],t)),{})}},906:e=>{e.exports=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s={},l=[];return t.forEach((t=>{let n=t.split("/"),o=n[1],c=n.pop();o==e&&(s[c]=r[t],l.push(t))})),[s,l]}},35:e=>{e.exports=function(e){return!e.every((e=>{const t=Number(e);return 0!==t&&!t}))}},935:(e,t,r)=>{"use strict";const s=r(92),l=r(35),n=r(257),o=r(501),c=r(906),u=r(486),i=r(504),a=r(438),p=r(634),d=r(773),f=r(943);e.exports={findType:e=>e instanceof Array?"array":"object",hasNumbers:l,isItPrimitive:s,sanitizeFlatKeys:n,objectsByLevel:o,filterObject:c,toBreadcrumbKeys:u,updateSelection:i,zipObject:a,extractSelection:p,reduceTuples:d,tuplesToBradcrumbs:f}},92:e=>{e.exports=function(e){return"function"==typeof e||"object"!=typeof e}},501:e=>{e.exports=function(e){return e.reduce(((e,t)=>{let r=[];return t.forEach(((e,t)=>{t>1&&r.push(e[0])})),r.length>0&&e.push(r),e}),[[0]])}},773:e=>{"use strict";e.exports=function(e,t){const{help:r,walk:s}=e,l=[];return s(t,((e,t)=>{let s=t.substr(5).split("/"),n=s[s.length-1];r.hasNumbers([n])&&s.pop(),l.push([s.join("/"),e])})),l}},257:e=>{e.exports=function(e){let t=e.map((e=>{let t=e.split("/");return"root"!=t[0]?["root",...t].join("/"):t.join("/")})),r=[],s=new Set;t.forEach((e=>{r.includes(e)?s.add(e):r.push(e)}));for(const e of s){let r=0;t=t.map((t=>t==e?`${t}/${r++}`:t))}return t}},486:e=>{e.exports=function(e,t){let r=["root"];return t.forEach((e=>{e.forEach(((t,s)=>{let l=e[1],n=r[l];s>1&&r.push(`${n}/${t[1]}`)}))})),e.map((e=>{let t=e.split("/"),s=t[1],l=t[2];return`${r[s]}/${l}`}))}},943:e=>{"use strict";e.exports=function(e,t){const{walk:r}=e;let s={};return r(t,[null,function(e,t){if("root"===t)return e;let[r,l]=e;return s[r]=l,e}]),s}},504:(e,t,r)=>{r(733),e.exports=function(e,t){let[...r]=e;return t.forEach((e=>{r.includes(e)||r.push(e)})),r}},438:e=>{e.exports=function(e,t){return e.reduce(((e,r,s)=>{let l,n=t[s];return l="string"==typeof n&&Number(n)||n,e[r]=l,e}),{})}},564:e=>{e.exports=function(e,t){const{structure:r,value:s}=t._select,l=new Set,n=new Set;let o=s.reduce(((e,t)=>{let r=parseInt(t.split("/")[1]);return l.add(r),r<e&&(e=r),e}),1e5);if(t._select.structure=r.reduce(((e,t)=>{let r=t[1];return r>=o&&l.has(r)&&(e.push([...t]),n.add(r)),e}),[["array",0]]),l.has(0)&&t._select.structure.splice(1,1),n.size>1){let e=0;n.forEach((r=>{let s=t._select.structure[0];0!=r&&s.push([r,e++])}))}else t._select.structure.splice(0,1);return t}},425:e=>{e.exports=function(e,t){const{convert:r,location:s}=e,l=r.to("midFlat",e,[t.structure,t.value]),{result:n}=t._select;if(!n)return t;for(k in n)newKey=k.replace("root",s),l[newKey]?l[newKey]={...l[newKey],...n[k]}:l[newKey]={...n[k]};return r.from("midFlat").toFlat(e,l)}},32:e=>{e.exports=function(e,t){const{type:r}=e,s=Object.keys(t.value);let l=t.structure.reduce(((e,t)=>(t[0]!=r||2==t.length&&e.push(t[1]),e)),[]);return t._select.value=s.filter((e=>{let t=parseInt(e.split("/")[1]);return l.includes(t)})),t._select.structure=[["array",0]],l.forEach(((e,r)=>{let s=t.structure[e][0];t._select.structure[0].push([e,r]),t._select.structure.push([s,e])})),t}},326:e=>{e.exports=function(e,t,r){const{convert:s,modifier:l,walk:n}=e,o=s.to("midFlat",e,[t.structure,t.value]),c=s.to("midFlat",e,[r.structure,r.value]),u=Object.keys(c);let i;t._error=t._error.concat(r._error),i=u.reduce(((e,t)=>{let r=t.split("/").pop(),s=Object.keys(e.root);if("root"!=r&&e[t]){let r={};return r[t]={...c[t]},l.combineShallow(e,r)}if("root"!=r&&s.includes(r)){let r={};return r[t]={...c[t]},l.combineShallow(e,r)}return l.combineShallow(e,{root:{...c[t]}})}),o);let[a,p]=s.from("midFlat").toFlat(e,i);return t.structure=n(a),t.value=p,t}},911:e=>{e.exports=function(e,t){const{help:r,num:s,direction:l}=e;let n=[],o=[...t._select.value];return r.objectsByLevel(t.structure).forEach(((e,t)=>{("more"==l?t>=s:t<=s)&&(n=n.concat(e))})),t._select.value=o.filter((e=>{let t=parseInt(e.split("/")[1]);return n.includes(t)})),t}},699:e=>{e.exports=function(e,t){let r,s=Object.keys(t.value),{help:l,deep:n,search:o,walk:c}=e,u=l.toBreadcrumbKeys(s,t.structure);o=o||"root",n=null==n?9999:n,n+=1,r=o.split("/").length+n;let i=u.filter((e=>e.match(o))).reduce(((e,t)=>{let l=u.indexOf(t);return t.split("/").length<=r&&e.push(s[l]),e}),[]);return t._select.value=l.updateSelection(t._select.value,i),t._select.structure=c(t.structure),t}},641:e=>{e.exports=function(e,t){const{help:r,prop:s,walk:l,where:n}=e;let o=[],c=[],u=[];return"root"==s&&o.push(0),t.structure.forEach((e=>{e.forEach(((e,t)=>{if(t>1){let[t,r]=e;r==s&&o.push(t)}}))})),c=o.reduce(((e,r)=>{for(let s in t.value)s.split("/")[1]==r&&e.push(s);return e}),[]),u=n?o.reduce(((e,s)=>{let[l,o]=r.filterObject(s,c,t.value);return n(l)&&e.push(...o),e}),[]):c,t._select.value=r.updateSelection(t._select.value,u),t._select.structure=l(t.structure),t}},635:(e,t,r)=>{"use strict";const s=r(699),l=r(261),n=r(32),o=r(911),c=r(641),u={loadLong(e,t){let{structure:r,value:s}=t;return u._loadData(e,r,s)},loadShort(e,t){let[r,s]=t;return u._loadData(e,r,s)},_loadData(e,t,r){const{simpleDT:s,walk:l}=e;let n=s();n.structure=l(t);for(const e in r)n.value[e]=r[e];return n},modify:r(483),find:s,parent:l,folder:c,deep:o,block:n,transform:r(348),attach:r(425),combine:r(326),assemble:r(564),purify:r(341)};e.exports=u},483:e=>{e.exports=function(e,t,r){const{action:s,convert:l,modifier:n,walk:o}=e,c=l.to("midFlat",e,[t.structure,t.value]),u=l.to("midFlat",e,[r.structure,r.value]);let i;t._error=t._error.concat(r._error),i=n[s](c,u);let[a,p]=l.from("midFlat").toFlat(e,i);return t.structure=o(a),t.value=p,t}},261:e=>{e.exports=function(e,t){const{help:r,prop:s,walk:l,where:n}=e;let o,c=[],u=[];for(let e in t.value){let t=e.split("/");t[2]==s&&c.push(t[1])}return l(t.structure,[null,function(e,t){if("root"===t)return e;if("string"==typeof e[0])return e;let[r,l]=e;return l===s&&c.push(r),null}]),u=c.reduce(((e,r)=>{for(let s in t.value)s.split("/")[1]==r&&e.push(s);return e}),[]),o=n?c.reduce(((e,s)=>{let[l,o]=r.filterObject(s,u,t.value);return n(l)&&e.push(...o),e}),[]):u,t._select.value=r.updateSelection(t._select.value,o),t._select.structure=l(t.structure),t}},341:(e,t,r)=>{r(733),e.exports=function(e,t){const{structure:r,value:s}=t._select,l=r.reverse();let n=s.reduce(((e,t)=>{let r=parseInt(t.split("/")[1]);return e.includes(r)||e.push(r),e}),[]);return t._select.structure=l.reduce(((e,t)=>{let[r,s,...l]=t,o=t.length,c=[r,s];return 2!=o||n.includes(s)?(l.forEach((e=>{let t=e[0];n.includes(t)&&(c.push([...e]),n.includes(s)||n.push(s))})),n.includes(s)?(e.push([...c]),e):e):e}),[]).reverse(),t}},348:e=>{e.exports=function(e,t){let r,[s,l]=t,{modify:n,empty:o}=e,c=Object.keys(l);switch(n){case"reverse":r=c.reduce(((e,t)=>{let r=t.split("/"),s=r[2].match(/^[0-9]+$/)?parseInt(r[2]):r[2],n=l[t];return e[`root/${r[1]}/${n}`]=s,e}),{});break;case"key":case"keys":r=c.reduce(((e,t,r)=>{let s=t.split("/");return e[`root/0/${r}`]=s[2],e}),{}),s=[["array",0]];break;case"value":case"values":r=c.reduce(((e,t,r)=>{let s=l[t];return e[`root/0/${r}`]=s,e}),o()),s=[["array",0]];break;default:r=o()}return[s,r]}},880:(e,t,r)=>{"use strict";const s=r(635),l=r(935),n=r(631),o=r(890),c=r(218),u=r(60),i=["std","standard","tuple","tuples","breadcrumb","breadcrumbs","file","files","midFlat","shortFlat"],a={dependencies:()=>({simpleDT:function(){const e=Object.create(d);return e.value=e.empty(),e.structure=[],e._select={structure:[],value:[],result:null},e._error=[],e},empty:Object.create(d).empty,convert:o,help:l,modifier:n,walk:u}),init(e,t){let r=a.dependencies(),l=r.simpleDT(),{type:n,modify:c}=(r.help,{type:"std",modify:!1,...t});if(i.includes(n)){if(null!=e){const[t,s]="flat"==n||"shortFlat"==n?e:o.from(n).toFlat(r,e);l.structure=u(t),l.value=s}if(c){let[t,n]=s.transform({...r,modify:c},[l.structure,l.value]);return Object.keys(n).length<=0&&l._error.push(`Modifier "${c}" is not a valid modifier and was ignored. Data: ${JSON.stringify(e)}`),l.structure=t,l.value=n,l}return l}this._error.push(`Can't understand your data-type: ${n}. Please, find what is possible on https://github.com/PeterNaydenov/dt-toolbox`)},load:e=>e._select?s.loadLong(a.dependencies(),e):s.loadShort(a.dependencies(),e),preprocess(e,t,r){let{type:l="std"}={type:"std",modify:!1,...r},n=t(o.from(l).toFlat(a.dependencies(),e));return n?s.loadShort(a.dependencies(),n):(this._error.push('Method "preprocess" should always return a shortFlat data-type: [structure, value]'),a.init())},combine(e,t){const r=a.init(e,t);return s.combine({...a.dependencies()},this,r)},modify:e=>function(t,r){let l;return l=r?a.init(t,r):{structure:u(t.structure),value:{...t.value}},s.modify({...a.dependencies(),action:e},this,l)},errorLog(e){return e(this._error),this},replace(){const e=this,{result:t}=e._select;if(!t)return e;let[r,s]=o.from("midFlat").toFlat(a.dependencies(),t);return e.structure=u(r),e.value={...s},e._select.result=null,e},attach(e){const t=this,r={...a.dependencies(),location:e};let[l,n]=s.attach(r,t);return t.structure=u(l),t.value={...n},t._select.result=null,t},select(){return this._select={structure:[],value:[],result:null},this},find(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"root",t=arguments.length>1?arguments[1]:void 0;const r={...a.dependencies(),search:e,deep:t};return this._select.result=null,s.find(r,this)},parent(e,t){const r={...a.dependencies(),prop:e,where:t};return this._select.result=null,s.parent(r,this)},folder(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"root",t=arguments.length>1?arguments[1]:void 0;const r={...a.dependencies(),prop:e,where:t};return this._select.result=null,s.folder(r,this)},limit(e){return this._select.value=this._select.value.slice(0,e),this._select.result=null,this},keep(e){const t=this,r=l.toBreadcrumbKeys(t._select.value,t.structure);return void 0===e||(t._select.result=null,t._select.value=t._select.value.reduce(((s,l,n)=>{let o=r[n];return e(t.value[l],o,l)&&s.push(l),s}),[])),t},remove(e){const t=this,r=l.toBreadcrumbKeys(t._select.value,t.structure);return void 0===e||(t._select.result=null,t._select.value=t._select.value.reduce(((s,l,n)=>{let o=r[n];return e(t.value[l],o,l)||s.push(l),s}),[])),t},deep(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"less",r={...a.dependencies(),num:e,direction:t};return this._select.result=null,s.deep(r,this)},withData(){let e=this;return e._select.result=o.to("midFlat",a.dependencies(),[e.structure,e.value]),e},withSelection(){let e=this,{structure:t}=e._select;return e._select.result=o.to("midFlat",a.dependencies(),[t,l.extractSelection(e)]),e},flatten(){const e=this,{result:t}=e._select;return t?(e._select.result=n.flatten(t,{}),e):e},mix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"root",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const r=this,{result:s}=r._select;return s?(r._select.result=n.mix(s,[...t,e]),r):r},reverse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["root"];const t=this,{result:r}=t._select;return r?(t._select.result=n.reverse(r,e),t):t},keyPrefix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const t=this,{result:r}=t._select;return r?(t._select.result=n.keyPrefix(r,{separationSymbol:e}),t):t},block:e=>function(){const t={...a.dependencies(),type:e};return this._select.result=null,s.block(t,this)},invert(){const e=this,t=e._select.value,r=Object.keys(e.value);return e._select.result=null,e._select.value=r.reduce(((e,r)=>(t.includes(r)||e.push(r),e)),[]),e},assemble(){const e={...a.dependencies()};return s.assemble(e,this)},purify(){const e={...a.dependencies()};return s.purify(e,this)},compare:e=>function(t,r){if(!t.hasOwnProperty("value")||!t.hasOwnProperty("structure"))return r(null),this;let s=this,l=o.to("breadcrumb",a.dependencies(),[s.structure,s.value]),n=o.to("breadcrumb",a.dependencies(),[t.structure,t.value]),u=c[e](l,n),[i,p]=o.from("breadcrumb").toFlat(a.dependencies(),u),d=a.dependencies().simpleDT();return d.structure=i,d.value=p,r(d),s},spread(e,t){const r=this,l=!!r._select.result,{help:n}=a.dependencies();let c,i,p;switch(e){case"value":case"values":if(i="values",l){let e=o.from("midFlat").toFlat(a.dependencies(),r._select.result);p=s.transform({...a.dependencies(),modify:i},e)}else p=s.transform({...a.dependencies(),modify:i},[r.structure,r.value]);c=o.to("std",a.dependencies(),p).map((e=>"string"==typeof e&&Number(e)||e));break;case"key":case"keys":if(i="keys",l){let e=o.from("midFlat").toFlat(a.dependencies(),r._select.result);p=s.transform({...a.dependencies(),modify:i},e),i="values",p=s.transform({...a.dependencies(),modify:i},p)}else p=s.transform({...a.dependencies(),modify:i},[r.structure,r.value]);c=o.to("std",a.dependencies(),p);break;case"standard":case"std":if(l){let e=o.from("midFlat").toFlat(a.dependencies(),r._select.result);c=o.to("std",a.dependencies(),e)}else c=o.to("std",a.dependencies(),[r._select.structure,n.extractSelection(r)]);break;case"breadcrumb":case"breadcrumbs":if(l){let e=o.from("midFlat").toFlat(a.dependencies(),r._select.result);c=o.to("breadcrumbs",a.dependencies(),e)}else c=o.to("breadcrumbs",a.dependencies(),[r._select.structure,n.extractSelection(r)]);break;case"tuple":case"tuples":if(l){let e=o.from("midFlat").toFlat(a.dependencies(),r._select.result);c=o.to("tuples",a.dependencies(),e)}else c=o.to("tuples",a.dependencies(),[r._select.structure,n.extractSelection(r)]);break;case"file":case"files":let e,t;if(l){let t=o.from("midFlat").toFlat(a.dependencies(),r._select.result);e=o.to("breadcrumbs",a.dependencies(),t)}else e=o.to("breadcrumbs",a.dependencies,[r._select.structure,n.extractSelection(r)]);t=n.reduceTuples(a.dependencies(),e),c=t.map((e=>{let[t,r]=e;return t?`${t}/${r}`:r}));break;case"midFlat":c=l?{...r._select.result}:o.to("midFlat",a.dependencies(),[r._select.structure,n.extractSelection(r)]);break;default:if(l)c=o.from("midFlat").toFlat(a.dependencies(),r._select.result);else{let e=n.extractSelection(r);c=[u(r._select.structure),e]}}return t?(t(c),r):c},spreadAll(e,t){return this.all(),this.spread(e,t)}},p={hi:()=>"hi"},d={init:a.init,load:a.load,loadFast:a.load,preprocess:a.preprocess,add:a.modify("add"),update:a.modify("update"),overwrite:a.modify("overwrite"),insert:a.modify("insert"),combine:a.combine,append:a.modify("append"),prepend:a.modify("prepend"),log:a.errorLog,empty:()=>Object.create(p),replace:a.replace,attach:a.attach,spread:a.spread,spreadAll:a.spreadAll,export:a.spread,exportAll:a.spreadAll,identical:a.compare("identical"),change:a.compare("change"),same:a.compare("same"),different:a.compare("different"),missing:a.compare("missing"),select:a.select,parent:a.parent,find:a.find,all:a.find,folder:a.folder,space:a.folder,deepObject:a.block("object"),deepArray:a.block("array"),invert:a.invert,assemble:a.assemble,purify:a.purify,limit:a.limit,keep:a.keep,remove:a.remove,deep:a.deep,withData:a.withData,withSelection:a.withSelection,flatten:a.flatten,mix:a.mix,keyPrefix:a.keyPrefix,reverse:a.reverse};e.exports=d},429:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r])e[r][s]||(e[r][s]=t[r][s]);else e[r]={...t[r]};return e}},57:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r])e[r][s]?e[r][s]+=t[r][s]:e[r][s]=t[r][s];return e}},785:e=>{function t(e){let t=0;for(k in e)!isNaN(parseInt(k))&&t++;return t}e.exports=function(e,r){let s=Object.keys(e),l=Object.keys(r),n=[...s],o={root:{}},c={};for(key of l)n.includes(key)||n.push(key);let u=n.sort(((e,t)=>t.split("/").length-e.split("/").length)).reduce(((t,s)=>{let l=e.root,n=r[s],o=s.split("/").pop();for(k in Object.keys(l),"root"!=s&&e[s]&&(t.add(o),c[o]||(c[o]=[]),c[o]=Object.keys(e[s]).reduce(((t,r)=>(t.push(e[s][r]),t)),c[o])),"root"!=o&&n&&(t.add(o),c[o]||(c[o]=[]),c[o]=Object.keys(n).reduce(((e,t)=>(e.push(n[t]),e)),c[o])),n)e[`root/${k}`]&&n[k]&&(t.add(k),c[k]||(c[k]=[]),c[k].push(n[k])),l[k]&&n[k]&&(t.add(k),c[k]?c[k].push(n[k]):c[k]=[l[k],n[k]]);return t}),new Set);for(k in s.forEach((t=>{let r=e[t];for(k in o[t]={},r)u.has(k)||(o[t][k]=r[k])})),l.forEach((e=>{let s=r[e],l=Object.keys(s),n=e.split("/").pop();u.has(n)||l.forEach((r=>{let l=`root/${r}`;if(o[l]){let e=t(o[l]);if("_fake$$$"===s[r])return;o[l][e]=s[r]}else if(!u.has(r)){if("_fake$$$"===s[r])return;o[e][r]=s[r]}}))})),c){const e=`root/${k}`;o[e]=c[k].reduce(((e,t,r)=>(e[r]=t,e)),{})}return o}},875:(e,t,r)=>{const s=r(785);e.exports=function(e){let t=Object.keys(e).filter((e=>"root"!=e)).reduce(((t,r)=>{let l={root:{...e[r]}};return s(t,l)}),{root:{...e.root}});return Object.keys(t).filter((e=>"root"!=e)).reduce(((e,r)=>{let s=r.split("/")[1],l="";for(prop in t[r])l&&(l+=";"),l+=t[r][prop];return e.root[s]=l,e}),{root:{...t.root}})}},631:(e,t,r)=>{const s=r(366),l=r(733),n={add:r(429),update:l,overwrite:s,insert:r(655),append:r(57),prepend:r(869),keyPrefix:r(432),flatten:r(875),combineShallow:r(785),mix:r(558),reverse:r(248)};e.exports=n},655:e=>{e.exports=function(e,t){for(const r in t){let s=Object.values(e[r]),l=Object.values(t[r]),n=s.concat(l);e[r]=n.reduce(((e,t,r)=>(e[r]=t,e)),{})}return e}},432:e=>{e.exports=function(e,t){let r=Object.keys(e),{separationSymbol:s}=t;return r.reduce(((t,r)=>{let l=r.substr(5).split("/").join(s);return t[r]={},Object.keys(e[r]).forEach((n=>{"root"==r?t[r][n]=e.root[n]:t[r][`${l}${s}${n}`]=e[r][n]})),t}),{})}},558:(e,t,r)=>{r(326);const s=r(785);e.exports=function(e,t){const r=t.pop();let l={};return l[r]={...e[r]},l.root||(l.root={...e.root}),t.reduce(((t,l)=>{let n={root:{...t[r]}},o={root:{...e[l]}};return t[r]=s(n,o).root,t}),l)}},366:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r])e[r][s]=t[r][s];else e[r]={...t[r]};return e}},869:e=>{e.exports=function(e,t){for(const r in t)if(e[r])for(let s in t[r]){const l=e[r][s];e[r][s]=l?t[r][s]+l:t[r][s]}return e}},248:e=>{e.exports=function(e,t){let r={...e};for(const e of t)if(r[e]){let t={...r[e]},s=Object.keys(t);r[e]={},s.forEach((s=>{let l=t[s];r[e][l]=s}))}return r}},733:e=>{e.exports=function(e,t){for(const r in t)if(e.hasOwnProperty(r))for(let s in t[r])e[r].hasOwnProperty(s)&&(e[r][s]=t[r][s]);return e}}},t={},r=function r(s){var l=t[s];if(void 0!==l)return l.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,r),n.exports}(880);dtbox=r})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dt-toolbox",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.7",
|
|
4
4
|
"description": "Data manipulation tool",
|
|
5
5
|
"main": "src/main.js",
|
|
6
6
|
"scripts": {
|
|
@@ -11,15 +11,18 @@
|
|
|
11
11
|
"directories": {
|
|
12
12
|
"test": "test"
|
|
13
13
|
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@peter.naydenov/walk": "1.1.0"
|
|
16
|
+
},
|
|
14
17
|
"devDependencies": {
|
|
15
|
-
"@babel/core": "7.
|
|
16
|
-
"@babel/preset-env": "7.
|
|
17
|
-
"babel-loader": "8.2.
|
|
18
|
+
"@babel/core": "7.18.2",
|
|
19
|
+
"@babel/preset-env": "7.18.2",
|
|
20
|
+
"babel-loader": "8.2.5",
|
|
18
21
|
"chai": "4.3.6",
|
|
19
|
-
"mocha": "
|
|
22
|
+
"mocha": "10.0.0",
|
|
20
23
|
"nyc": "15.1.0",
|
|
21
24
|
"uglifyjs-webpack-plugin": "2.2.0",
|
|
22
|
-
"webpack": "5.
|
|
25
|
+
"webpack": "5.72.1",
|
|
23
26
|
"webpack-cli": "4.9.2"
|
|
24
27
|
},
|
|
25
28
|
"repository": {
|
|
@@ -39,7 +39,8 @@ function toFlat ( dependencies, rawValue ) {
|
|
|
39
39
|
, structRaw = [] // objectLocation strings
|
|
40
40
|
, propDone = []
|
|
41
41
|
;
|
|
42
|
-
|
|
42
|
+
|
|
43
|
+
keyList.forEach ( keyArr => { // Setup our temp structures: tProps and structRaw
|
|
43
44
|
keyArr.forEach ( (k,i) => {
|
|
44
45
|
let parent = keyArr.slice( 0, i ).join ( '/' );
|
|
45
46
|
if ( !parent ) return
|
package/src/convertors/index.js
CHANGED
|
@@ -24,8 +24,7 @@ const selectConvertorFrom =
|
|
|
24
24
|
return std.toFlat ( dependencies, inData )
|
|
25
25
|
case 'tuple' :
|
|
26
26
|
case 'tuples' :
|
|
27
|
-
|
|
28
|
-
break
|
|
27
|
+
inData = help.tuplesToBradcrumbs ( dependencies, inData )
|
|
29
28
|
case 'breadcrumb' :
|
|
30
29
|
case 'breadcrumbs' :
|
|
31
30
|
rawKeys = Object.keys ( inData )
|
|
@@ -62,12 +61,17 @@ function from ( type ) { // convert from something to flat...
|
|
|
62
61
|
|
|
63
62
|
|
|
64
63
|
function to ( type, dependencies, inData ) { // convert from flat to 'data-type'...
|
|
64
|
+
const { help } = dependencies;
|
|
65
65
|
switch ( type ) {
|
|
66
66
|
case 'std' :
|
|
67
67
|
case 'standard':
|
|
68
68
|
return std.toType ( dependencies, inData )
|
|
69
69
|
case 'midFlat' :
|
|
70
70
|
return midFlat.toType ( dependencies, inData )
|
|
71
|
+
case 'tuple':
|
|
72
|
+
case 'tuples':
|
|
73
|
+
let breadData = breadcrumbs.toType ( dependencies, inData )
|
|
74
|
+
return help.reduceTuples ( dependencies, breadData )
|
|
71
75
|
case 'breadcrumb' :
|
|
72
76
|
case 'breadcrumbs':
|
|
73
77
|
return breadcrumbs.toType ( dependencies,inData )
|
|
@@ -4,29 +4,42 @@
|
|
|
4
4
|
|
|
5
5
|
function toFlat ( dependencies, d ) {
|
|
6
6
|
let
|
|
7
|
-
|
|
8
|
-
,
|
|
9
|
-
,
|
|
10
|
-
, {
|
|
11
|
-
findType
|
|
12
|
-
, isItPrimitive
|
|
13
|
-
, generateList
|
|
14
|
-
} = dependencies.help
|
|
7
|
+
value = dependencies.empty ()
|
|
8
|
+
, { help, walk } = dependencies
|
|
9
|
+
, { findType } = help
|
|
15
10
|
, structure = []
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
11
|
+
, objectCounter = 0
|
|
12
|
+
, currentObjectID = 0 // In use for values in keyCalls function
|
|
13
|
+
, objectIndex = {} // Map breadcrumb -> structure row number
|
|
14
|
+
;
|
|
15
|
+
|
|
16
|
+
function objectCalls (obj, breadcrumbs ) {
|
|
17
|
+
let
|
|
18
|
+
location = breadcrumbs.split ( '/' )
|
|
19
|
+
, objectName = location.pop()
|
|
20
|
+
;
|
|
21
|
+
|
|
22
|
+
structure.push ( [findType(obj), objectCounter])
|
|
23
|
+
objectIndex[breadcrumbs] = objectCounter
|
|
24
|
+
currentObjectID = objectCounter
|
|
25
|
+
|
|
26
|
+
if ( location.length > 0 ) {
|
|
27
|
+
let
|
|
28
|
+
hostName = location.join ( '/' )
|
|
29
|
+
, hostID = objectIndex[hostName]
|
|
30
|
+
;
|
|
31
|
+
structure[hostID].push ([objectCounter, objectName])
|
|
32
|
+
}
|
|
33
|
+
objectCounter++
|
|
34
|
+
return obj
|
|
35
|
+
} // objectCalls func.
|
|
36
|
+
|
|
37
|
+
function keyCalls ( v,k,breadcrumbs ) {
|
|
38
|
+
value[`root/${currentObjectID}/${k}`] = v
|
|
39
|
+
return v
|
|
40
|
+
} // keyCalls func.
|
|
41
|
+
|
|
42
|
+
walk ( d, [keyCalls, objectCalls])
|
|
30
43
|
return [ structure, value ]
|
|
31
44
|
} // getFlat func.
|
|
32
45
|
|
package/src/help/index.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const
|
|
4
|
-
isItPrimitive
|
|
5
|
-
, hasNumbers
|
|
6
|
-
,
|
|
7
|
-
,
|
|
8
|
-
,
|
|
9
|
-
,
|
|
10
|
-
,
|
|
11
|
-
,
|
|
12
|
-
,
|
|
13
|
-
,
|
|
14
|
-
,
|
|
15
|
-
, extractSelection = require ( './extractSelection' )
|
|
16
|
-
, reduceTuples = require ( './reduceTuples' )
|
|
4
|
+
isItPrimitive = require ( './isItPrimitive' )
|
|
5
|
+
, hasNumbers = require ( './hasNumbers' )
|
|
6
|
+
, sanitizeFlatKeys = require ( './sanitizeFlatKeys' )
|
|
7
|
+
, objectsByLevel = require ( './objectsByLevel' )
|
|
8
|
+
, filterObject = require ( './filterObject' )
|
|
9
|
+
, toBreadcrumbKeys = require ( './toBreadcrumbsKeys' )
|
|
10
|
+
, updateSelection = require ( './updateSelection' )
|
|
11
|
+
, zipObject = require ( './zipObject' )
|
|
12
|
+
, extractSelection = require ( './extractSelection' )
|
|
13
|
+
, reduceTuples = require ( './reduceTuples' )
|
|
14
|
+
, tuplesToBradcrumbs = require ( './tuplesToBreadcrumbs' )
|
|
17
15
|
;
|
|
18
16
|
|
|
19
17
|
const findType = d => ( d instanceof Array ) ? 'array' : 'object'
|
|
@@ -24,10 +22,7 @@ module.exports = {
|
|
|
24
22
|
findType // Is it array or object. Returns strings: 'array' | 'object'
|
|
25
23
|
, hasNumbers // Check if array contain number members. Returns boolean
|
|
26
24
|
, isItPrimitive // Returns boolean
|
|
27
|
-
, generateObject
|
|
28
|
-
, generateList
|
|
29
25
|
, sanitizeFlatKeys // Sanitize 'file' format keys
|
|
30
|
-
, copyStructure // Creates a structure copy. Immutability matters
|
|
31
26
|
, objectsByLevel // Object IDs organized by levels
|
|
32
27
|
, filterObject // Find object and object props in a value
|
|
33
28
|
, toBreadcrumbKeys // Breadcrumbs keys
|
|
@@ -35,6 +30,7 @@ module.exports = {
|
|
|
35
30
|
, zipObject // Conect two arrays in a single object
|
|
36
31
|
, extractSelection // Creates 'value' object with selected keys only
|
|
37
32
|
, reduceTuples
|
|
33
|
+
, tuplesToBradcrumbs
|
|
38
34
|
}
|
|
39
35
|
|
|
40
36
|
|
package/src/help/reduceTuples.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
const { help } = dependencies;
|
|
3
|
-
let tupleKeys = Object.keys ( breadcrumbData );
|
|
1
|
+
'use strict'
|
|
4
2
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
function reduceTuples ( dependencies, breadcrumbData ) {
|
|
4
|
+
// *** Converts breadcrumbs to array of tuples
|
|
5
|
+
const
|
|
6
|
+
{ help, walk } = dependencies
|
|
7
|
+
, result = []
|
|
8
|
+
;
|
|
9
|
+
walk ( breadcrumbData, ( v, k ) => {
|
|
10
|
+
let
|
|
11
|
+
arr = k.substr(5).split('/')
|
|
12
|
+
, ln = arr.length
|
|
13
|
+
, lastEl = arr[ln-1]
|
|
14
|
+
;
|
|
15
|
+
if ( help.hasNumbers([lastEl]) ) arr.pop ()
|
|
16
|
+
result.push ( [ arr.join('/'), v])
|
|
17
|
+
})
|
|
18
|
+
return result
|
|
15
19
|
} // reduceTuples func.
|
|
16
20
|
|
|
17
21
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
function tuplesToBreadcrumbs ( dependencies, data ) {
|
|
4
|
+
const { walk } = dependencies;
|
|
5
|
+
let result = {};
|
|
6
|
+
|
|
7
|
+
function objectCalls (obj, breadcrumbs ) {
|
|
8
|
+
if ( breadcrumbs === 'root' ) return obj; // ignore root object
|
|
9
|
+
let [ key, val ] = obj;
|
|
10
|
+
result[key] = val
|
|
11
|
+
return obj
|
|
12
|
+
} // objectCalls func.
|
|
13
|
+
|
|
14
|
+
walk ( data, [null,objectCalls])
|
|
15
|
+
return result
|
|
16
|
+
} // tuplesToBradcrumbs func.
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
module.exports = tuplesToBreadcrumbs
|
|
21
|
+
|
|
22
|
+
|
package/src/lib/combine.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function combine ( dependencies, main, addData ) {
|
|
2
2
|
// *** Modify combine
|
|
3
3
|
const
|
|
4
|
-
{ convert,
|
|
4
|
+
{ convert, modifier, walk } = dependencies
|
|
5
5
|
, mainData = convert.to ( 'midFlat', dependencies, [main.structure, main.value])
|
|
6
6
|
, update = convert.to ( 'midFlat', dependencies, [addData.structure, addData.value] )
|
|
7
7
|
, keyList = Object.keys ( update )
|
|
@@ -26,7 +26,7 @@ function combine ( dependencies, main, addData ) {
|
|
|
26
26
|
else return modifier['combineShallow'] ( res, { root: {...update[k]}} )
|
|
27
27
|
}, mainData )
|
|
28
28
|
let [structure, value ] = convert.from ( 'midFlat').toFlat ( dependencies, result )
|
|
29
|
-
main.structure =
|
|
29
|
+
main.structure = walk ( structure )
|
|
30
30
|
main.value = value
|
|
31
31
|
return main
|
|
32
32
|
} // combine func.
|
package/src/lib/find.js
CHANGED
|
@@ -5,7 +5,7 @@ function find ( dependencies, me ) {
|
|
|
5
5
|
, deepDefault = 9999
|
|
6
6
|
, deepMax
|
|
7
7
|
, keys = Object.keys ( me.value )
|
|
8
|
-
, { help, deep, search } = dependencies
|
|
8
|
+
, { help, deep, search, walk } = dependencies
|
|
9
9
|
, longKeys = help.toBreadcrumbKeys ( keys, me.structure )
|
|
10
10
|
;
|
|
11
11
|
|
|
@@ -25,7 +25,7 @@ function find ( dependencies, me ) {
|
|
|
25
25
|
return res
|
|
26
26
|
},[] )
|
|
27
27
|
me._select.value = help.updateSelection ( me._select.value, collection )
|
|
28
|
-
me._select.structure =
|
|
28
|
+
me._select.structure = walk ( me.structure )
|
|
29
29
|
return me
|
|
30
30
|
} // find func.
|
|
31
31
|
|
package/src/lib/folder.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
function folder ( dependencies, me ) {
|
|
2
|
-
const { help, prop, where } = dependencies;
|
|
2
|
+
const { help, prop, walk, where } = dependencies;
|
|
3
3
|
let
|
|
4
4
|
usedNumbers = []
|
|
5
5
|
, selectedKeys = []
|
|
6
6
|
, result = []
|
|
7
7
|
;
|
|
8
8
|
if ( prop == 'root' ) usedNumbers.push ( 0 )
|
|
9
|
-
|
|
10
9
|
me.structure.forEach ( row => { // Find if structures
|
|
11
10
|
row.forEach ( (item,i) => {
|
|
12
11
|
if ( i > 1 ) {
|
|
@@ -32,7 +31,7 @@ function folder ( dependencies, me ) {
|
|
|
32
31
|
} // if where
|
|
33
32
|
else result = selectedKeys
|
|
34
33
|
me._select.value = help.updateSelection ( me._select.value, result )
|
|
35
|
-
me._select.structure =
|
|
34
|
+
me._select.structure = walk ( me.structure )
|
|
36
35
|
return me
|
|
37
36
|
} // folder func.
|
|
38
37
|
|
package/src/lib/index.js
CHANGED
|
@@ -29,9 +29,9 @@ const dtlib = {
|
|
|
29
29
|
} // loadShort func.
|
|
30
30
|
|
|
31
31
|
, _loadData ( dependencies, structure, value ) {
|
|
32
|
-
const {
|
|
32
|
+
const { simpleDT, walk } = dependencies;
|
|
33
33
|
let res = simpleDT ();
|
|
34
|
-
res.structure =
|
|
34
|
+
res.structure = walk ( structure )
|
|
35
35
|
for ( const k in value ) {
|
|
36
36
|
res.value[k] = value[k]
|
|
37
37
|
}
|
package/src/lib/modify.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function modify ( dependencies, main, addData ) {
|
|
2
2
|
// *** Modify add | update | overwrite | insert | append | prepend | combine
|
|
3
3
|
const
|
|
4
|
-
{ action, convert,
|
|
4
|
+
{ action, convert, modifier, walk } = dependencies
|
|
5
5
|
, mainData = convert.to ( 'midFlat', dependencies, [main.structure, main.value])
|
|
6
6
|
, update = convert.to ( 'midFlat', dependencies, [addData.structure, addData.value] )
|
|
7
7
|
;
|
|
@@ -10,7 +10,7 @@ function modify ( dependencies, main, addData ) {
|
|
|
10
10
|
result = modifier[action] ( mainData, update )
|
|
11
11
|
|
|
12
12
|
let [structure, value ] = convert.from ( 'midFlat').toFlat ( dependencies, result )
|
|
13
|
-
main.structure =
|
|
13
|
+
main.structure = walk ( structure )
|
|
14
14
|
main.value = value
|
|
15
15
|
return main
|
|
16
16
|
} // modify func.
|
package/src/lib/parent.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function parent ( dependencies, me ) {
|
|
2
|
-
const { help, prop, where } = dependencies;
|
|
2
|
+
const { help, prop, walk, where } = dependencies;
|
|
3
3
|
let
|
|
4
4
|
usedNumbers = []
|
|
5
5
|
, selectedKeys = []
|
|
@@ -9,24 +9,24 @@ function parent ( dependencies, me ) {
|
|
|
9
9
|
let splited = key.split('/');
|
|
10
10
|
if ( splited[2] == prop ) usedNumbers.push ( splited[1] )
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
selectedKeys = usedNumbers.reduce ( (res,number) => { // Collect props of used parent objects
|
|
12
|
+
function findUsedNumbers (obj, breadcrumbs ) {
|
|
13
|
+
if ( breadcrumbs === 'root' ) return obj // Ignore top object
|
|
14
|
+
let isRow = typeof obj[0] == 'string'; // Ignore row objects
|
|
15
|
+
if ( isRow ) return obj
|
|
16
|
+
let [ location, name ] = obj; // Here are only property descriptions
|
|
17
|
+
if ( name === prop ) usedNumbers.push ( location )
|
|
18
|
+
return null
|
|
19
|
+
}
|
|
20
|
+
walk ( me.structure,[null, findUsedNumbers])
|
|
21
|
+
|
|
22
|
+
selectedKeys = usedNumbers.reduce ( (res,location) => { // Collect props of used parent objects
|
|
24
23
|
for (let key in me.value ) {
|
|
25
|
-
let
|
|
26
|
-
if (
|
|
24
|
+
let objectID = key.split('/')[1];
|
|
25
|
+
if ( objectID == location ) res.push ( key )
|
|
27
26
|
}
|
|
28
27
|
return res
|
|
29
28
|
},[] )
|
|
29
|
+
|
|
30
30
|
if ( where ) { // Apply where fn if is defined
|
|
31
31
|
result = usedNumbers.reduce ( (res, number) => {
|
|
32
32
|
let [localObject, localKeysSelection] = help.filterObject ( number, selectedKeys, me.value )
|
|
@@ -37,7 +37,7 @@ function parent ( dependencies, me ) {
|
|
|
37
37
|
} // if where
|
|
38
38
|
else result = selectedKeys
|
|
39
39
|
me._select.value = help.updateSelection ( me._select.value, result )
|
|
40
|
-
me._select.structure =
|
|
40
|
+
me._select.structure = walk ( me.structure )
|
|
41
41
|
return me
|
|
42
42
|
} // parent func.
|
|
43
43
|
|
package/src/main.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
DT object & DT Toolbox
|
|
6
6
|
=======================
|
|
7
7
|
|
|
8
|
-
Version
|
|
8
|
+
Version 4.0.7
|
|
9
9
|
|
|
10
10
|
History notes:
|
|
11
11
|
- Idea was born on March 17th, 2016.
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* Old internal data-type have a new name(breadcrumbs) and is fully supported(import/export);
|
|
23
23
|
* Support for tuples(import and export);
|
|
24
24
|
* Complete code refactoring;
|
|
25
|
+
|
|
25
26
|
*/
|
|
26
27
|
|
|
27
28
|
|
|
@@ -32,6 +33,7 @@ const
|
|
|
32
33
|
, modifier = require ( './modifiers/index' )
|
|
33
34
|
, convert = require ( './convertors/index' )
|
|
34
35
|
, compareMethod = require ( './compareMethod/index' )
|
|
36
|
+
, walk = require ( '@peter.naydenov/walk' )
|
|
35
37
|
|
|
36
38
|
, INIT_DATA_TYPES = [
|
|
37
39
|
'std', 'standard'
|
|
@@ -67,6 +69,7 @@ const mainlib = {
|
|
|
67
69
|
, convert
|
|
68
70
|
, help
|
|
69
71
|
, modifier
|
|
72
|
+
, walk
|
|
70
73
|
}
|
|
71
74
|
} // dependencies func.
|
|
72
75
|
|
|
@@ -100,7 +103,7 @@ const mainlib = {
|
|
|
100
103
|
if ( inData != null ) {
|
|
101
104
|
// Note: Use method 'load' instead of 'init' if your data is 'flat'
|
|
102
105
|
const [structure, value] = ( type == 'flat' || type == 'shortFlat' ) ? inData : convert.from(type).toFlat ( dependencies, inData )
|
|
103
|
-
dt.structure =
|
|
106
|
+
dt.structure = walk ( structure )
|
|
104
107
|
dt.value = value
|
|
105
108
|
}
|
|
106
109
|
if ( !modify ) return dt
|
|
@@ -162,7 +165,7 @@ const mainlib = {
|
|
|
162
165
|
|
|
163
166
|
if ( options ) updateData = mainlib.init ( inData, options )
|
|
164
167
|
else updateData = {
|
|
165
|
-
structure :
|
|
168
|
+
structure : walk ( inData.structure )
|
|
166
169
|
, value : {...inData.value }
|
|
167
170
|
}
|
|
168
171
|
return dtlib.modify ( { ...mainlib.dependencies(), action:method}, me, updateData )
|
|
@@ -170,8 +173,6 @@ const mainlib = {
|
|
|
170
173
|
|
|
171
174
|
|
|
172
175
|
|
|
173
|
-
|
|
174
|
-
|
|
175
176
|
, errorLog ( callback ) { // Executes callback with errors as argument
|
|
176
177
|
callback ( this._error )
|
|
177
178
|
return this
|
|
@@ -187,7 +188,7 @@ const mainlib = {
|
|
|
187
188
|
;
|
|
188
189
|
if ( !result ) return me
|
|
189
190
|
let [struct, val] = convert.from ( 'midFlat').toFlat ( mainlib.dependencies(), result )
|
|
190
|
-
me.structure =
|
|
191
|
+
me.structure = walk ( struct )
|
|
191
192
|
me.value = {...val}
|
|
192
193
|
me._select.result = null
|
|
193
194
|
return me
|
|
@@ -203,7 +204,7 @@ const mainlib = {
|
|
|
203
204
|
, dependencies = { ...mainlib.dependencies(), location }
|
|
204
205
|
;
|
|
205
206
|
let [structure, value ] = dtlib.attach ( dependencies, me )
|
|
206
|
-
me.structure =
|
|
207
|
+
me.structure = walk ( structure )
|
|
207
208
|
me.value = {...value}
|
|
208
209
|
me._select.result = null
|
|
209
210
|
return me
|
|
@@ -438,6 +439,8 @@ const mainlib = {
|
|
|
438
439
|
|
|
439
440
|
|
|
440
441
|
|
|
442
|
+
|
|
443
|
+
|
|
441
444
|
, purify () {
|
|
442
445
|
const
|
|
443
446
|
me = this
|
|
@@ -563,16 +566,15 @@ const mainlib = {
|
|
|
563
566
|
selection = convert.to ( 'breadcrumbs', mainlib.dependencies(), [me._select.structure, help.extractSelection(me)])
|
|
564
567
|
}
|
|
565
568
|
break
|
|
569
|
+
case 'tuple' :
|
|
566
570
|
case 'tuples' :
|
|
567
|
-
let tupleData;
|
|
568
571
|
if ( hasSelection ) {
|
|
569
572
|
let tupSelect = convert.from ( 'midFlat' ).toFlat ( mainlib.dependencies(), me._select.result );
|
|
570
|
-
|
|
573
|
+
selection = convert.to ( 'tuples', mainlib.dependencies(), tupSelect )
|
|
571
574
|
}
|
|
572
575
|
else {
|
|
573
|
-
|
|
576
|
+
selection = convert.to ( 'tuples', mainlib.dependencies(), [me._select.structure, help.extractSelection(me)]);
|
|
574
577
|
}
|
|
575
|
-
selection = help.reduceTuples ( mainlib.dependencies(), tupleData )
|
|
576
578
|
break
|
|
577
579
|
case 'file' :
|
|
578
580
|
case 'files' :
|
|
@@ -605,7 +607,7 @@ const mainlib = {
|
|
|
605
607
|
else {
|
|
606
608
|
let
|
|
607
609
|
set = help.extractSelection ( me )
|
|
608
|
-
, struct =
|
|
610
|
+
, struct = walk ( me._select.structure )
|
|
609
611
|
;
|
|
610
612
|
selection = [ struct, set ]
|
|
611
613
|
}
|
package/src/simple.js
CHANGED
|
@@ -17,7 +17,6 @@ const simple = { // * Simple instruments
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
, isObject : str => !simple.notObject(str)
|
|
20
|
-
, copy : obj => JSON.parse ( JSON.stringify(obj) )
|
|
21
20
|
, folderKind : test => test instanceof Array ? 'array' : 'object'
|
|
22
21
|
, getIterator : list => Object.keys ( list )
|
|
23
22
|
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function toFlat ( dependencies, d ) {
|
|
6
|
-
let
|
|
7
|
-
deepList = []
|
|
8
|
-
, isPrimitve = false
|
|
9
|
-
, result = dependencies.empty ()
|
|
10
|
-
;
|
|
11
|
-
deepList.push ( generateList (`root`, d) )
|
|
12
|
-
for ( let list of deepList ) {
|
|
13
|
-
for ( let [k,val] of list ) {
|
|
14
|
-
isPrimitve = isItPrimitive ( val )
|
|
15
|
-
if ( isPrimitve ) result [k] = val
|
|
16
|
-
else deepList.push ( generateList(k,val) )
|
|
17
|
-
}}
|
|
18
|
-
return result
|
|
19
|
-
} // getFlat func.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
function toFormat ( flat ) {
|
|
31
|
-
let
|
|
32
|
-
flatKeys = Object.keys ( flat ).sort ((a,b) => b.split('/').length-a.split('/').length)
|
|
33
|
-
, flatKeyArr = flatKeys.map ( x => x.split('/') )
|
|
34
|
-
, maxLenght = flatKeyArr[0].length - 1
|
|
35
|
-
, ls = [] // Level definitions generators
|
|
36
|
-
, resultObjects = {} // Objects ready to build
|
|
37
|
-
;
|
|
38
|
-
|
|
39
|
-
for ( let i=maxLenght; i >= 0; i-- ) { // organize keys by deepLevels
|
|
40
|
-
let selectedKeys = flatKeyArr.filter ( x => x.length == i + 1 );
|
|
41
|
-
ls.push ( generateObject (selectedKeys) )
|
|
42
|
-
}
|
|
43
|
-
for ( let deepLevel in ls ) { // createObjects
|
|
44
|
-
const level = ls[deepLevel].next().value;
|
|
45
|
-
for (let k in level ) {
|
|
46
|
-
let type = defineStructure ( level[k] ); // object | array
|
|
47
|
-
resultObjects[k] = ( type == 'array' ) ? [] : {}
|
|
48
|
-
level[k].forEach ( key => {
|
|
49
|
-
let combinedK = `${k}/${key}`
|
|
50
|
-
if ( type == 'array' ) resultObjects[k].push ( flat[combinedK] )
|
|
51
|
-
else resultObjects[k][key] = flat[combinedK]
|
|
52
|
-
})
|
|
53
|
-
} // for level
|
|
54
|
-
} // for ls
|
|
55
|
-
|
|
56
|
-
let
|
|
57
|
-
gLevelList = generateLevelList ( maxLenght, resultObjects )
|
|
58
|
-
, levels = [...gLevelList.next().value ]
|
|
59
|
-
;
|
|
60
|
-
levels.forEach ( level => {
|
|
61
|
-
level.forEach ( item => {
|
|
62
|
-
let param = item.split ( '/' )
|
|
63
|
-
, k = param.pop()
|
|
64
|
-
, selected
|
|
65
|
-
, combinedK
|
|
66
|
-
;
|
|
67
|
-
|
|
68
|
-
if ( param.length == 0 ) return
|
|
69
|
-
else {
|
|
70
|
-
selected = param.join('/')
|
|
71
|
-
combinedK = `${selected}/${k}`
|
|
72
|
-
}
|
|
73
|
-
resultObjects [selected][k] = resultObjects[combinedK]
|
|
74
|
-
})
|
|
75
|
-
})
|
|
76
|
-
return resultObjects['root']
|
|
77
|
-
} // getStandard func.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
function sanitizeFlat ( obj ) {
|
|
82
|
-
return Object.keys(obj).reduce ( (r,k) => {
|
|
83
|
-
let newK = k;
|
|
84
|
-
if ( !k.includes('root/') ) newK = `root/${k}`
|
|
85
|
-
r [newK] = obj[k]
|
|
86
|
-
return r
|
|
87
|
-
},{})
|
|
88
|
-
} // sanitizeFlat func.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
function defineStructure ( keyNames ) {
|
|
92
|
-
let num = false;
|
|
93
|
-
keyNames.forEach ( key => {
|
|
94
|
-
let test = /^[0-9]+$/ ;
|
|
95
|
-
if ( key.match(test) ) num = true
|
|
96
|
-
})
|
|
97
|
-
return num ? 'array' : 'object'
|
|
98
|
-
} // defineStructure func.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
function isItPrimitive (d) {
|
|
103
|
-
if ( typeof d == 'function' ) return false
|
|
104
|
-
return ( typeof d != 'object' ) ? true : false
|
|
105
|
-
} // isItPrimitive func.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
function* generateList ( kPrefix, val) {
|
|
110
|
-
for ( let k in val ) {
|
|
111
|
-
yield [ `${kPrefix}/${k}`, val[k] ]
|
|
112
|
-
}
|
|
113
|
-
} // generateList func*.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
function* generateObject ( kList ) {
|
|
118
|
-
let
|
|
119
|
-
places = {}
|
|
120
|
-
, usedObjKeys = new Set()
|
|
121
|
-
;
|
|
122
|
-
for ( let el of kList ) {
|
|
123
|
-
let
|
|
124
|
-
key = el.pop()
|
|
125
|
-
, objKey = el.join('/')
|
|
126
|
-
;
|
|
127
|
-
if ( usedObjKeys.has(objKey) ) {
|
|
128
|
-
places[objKey].push ( key )
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
usedObjKeys.add ( objKey )
|
|
132
|
-
places[objKey] = []
|
|
133
|
-
places[objKey].push ( key )
|
|
134
|
-
}
|
|
135
|
-
} // for kList
|
|
136
|
-
yield places
|
|
137
|
-
} // generateObj
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
function* generateLevelList ( max, object ) {
|
|
142
|
-
let result = []
|
|
143
|
-
for ( let i=0; i <= max; i++ ) {
|
|
144
|
-
let keyList = Object.keys ( object ).filter ( k=> k.split('/').length==i );
|
|
145
|
-
if ( keyList.length > 0 ) result.push ( keyList )
|
|
146
|
-
}
|
|
147
|
-
yield result
|
|
148
|
-
} // generateParamList func*.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
module.exports = { toFlat, toFormat }
|
|
155
|
-
|
|
156
|
-
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
function copyStructure ( structure ) {
|
|
2
|
-
// *** Returns copy of the structure and preserve immutability
|
|
3
|
-
let result = []
|
|
4
|
-
structure.forEach ( (row,i) => {
|
|
5
|
-
result.push ( [] )
|
|
6
|
-
row.forEach ( item => result[i].push ( item ) )
|
|
7
|
-
})
|
|
8
|
-
return result
|
|
9
|
-
} // copyStructure func.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
module.exports = copyStructure
|
|
14
|
-
|
|
15
|
-
|
package/src/help/generateList.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
function* generateObject ( kList ) {
|
|
2
|
-
let
|
|
3
|
-
places = {}
|
|
4
|
-
, usedObjKeys = new Set()
|
|
5
|
-
;
|
|
6
|
-
for ( let el of kList ) {
|
|
7
|
-
let
|
|
8
|
-
prop = el.pop ()
|
|
9
|
-
, key = el.join('/')
|
|
10
|
-
;
|
|
11
|
-
if ( usedObjKeys.has(key) ) {
|
|
12
|
-
places[key].push ( prop )
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
usedObjKeys.add ( key )
|
|
16
|
-
places[key] = []
|
|
17
|
-
places[key].push ( prop )
|
|
18
|
-
}
|
|
19
|
-
} // for kList
|
|
20
|
-
yield places
|
|
21
|
-
} // generateObject func*.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
module.exports = generateObject
|
|
26
|
-
|
|
27
|
-
|