dt-toolbox 4.0.3 → 4.0.6
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 +39 -0
- package/dist/dt-toolbox.min.js +1 -1
- package/package.json +1 -1
- package/src/convertors/breadcrumbs.js +5 -0
- package/src/convertors/midflat.js +122 -45
- package/src/convertors/standard.js +5 -2
- package/src/help/zipObject.js +11 -1
- package/src/lib/attach.js +0 -1
- package/src/lib/transform.js +2 -2
- package/src/main.js +9 -1
- package/src/modifiers/combineShallow.js +5 -2
- package/src/modifiers/flatten.js +1 -1
- package/src/modifiers/update.js +4 -2
package/Changelog.md
CHANGED
|
@@ -2,8 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
### 4.0.6 (2022-03-03)
|
|
6
|
+
- [x] Fix: Sometimes empty array structures are converted to empty objects;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### 4.0.5 (2022-03-01)
|
|
11
|
+
- [x] Fix: Arrays are recognized as objects. Object members of arrays are recognized as arrays;
|
|
12
|
+
- [ ] Bug: Sometimes empty array structures are converted to empty objects;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### 4.0.4 (2022-03-01)
|
|
17
|
+
- [x] Fix: Convertor for 'midFlat' is loosing empty data-structures;
|
|
18
|
+
- [x] Fix: Boolean values "true" are converted to 1(number);
|
|
19
|
+
- [x] Fix: Operation "add" treats numbers as string;
|
|
20
|
+
- [x] Fix: Convertor from 'breadcrumbs' breaks;
|
|
21
|
+
- [ ] Bug: Arrays are recognized as objects. Object members of arrays are recognized as arrays;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
5
26
|
### 4.0.3 (2022-02-23)
|
|
6
27
|
- [x] Fix: Initialize with breadcrumbs is not working at all;
|
|
28
|
+
- [ ] Bug: Convertor for 'midFlat' is loosing empty data-structures;
|
|
29
|
+
- [ ] Bug: Boolean values "true" are converted to 1(number);
|
|
30
|
+
- [ ] Bug: Operation "add" treats numbers as string;
|
|
31
|
+
- [ ] Bug: Convertor from 'breadcrumbs' breaks;
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
7
35
|
|
|
8
36
|
|
|
9
37
|
|
|
@@ -15,6 +43,12 @@
|
|
|
15
43
|
})
|
|
16
44
|
```
|
|
17
45
|
- [ ] Bug: Initialize with breadcrumbs is not working at all;
|
|
46
|
+
- [ ] Bug: Convertor for 'midFlat' is loosing empty data-structures;
|
|
47
|
+
- [ ] Bug: Boolean values "true" are converted to 1(number);
|
|
48
|
+
- [ ] Bug: Operation "add" treats numbers as string;
|
|
49
|
+
- [ ] Bug: Convertor from 'breadcrumbs' breaks;
|
|
50
|
+
|
|
51
|
+
|
|
18
52
|
|
|
19
53
|
|
|
20
54
|
|
|
@@ -22,6 +56,11 @@
|
|
|
22
56
|
- [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;
|
|
23
57
|
- [ ] Bug: Methods 'keep' and 'remove' received `flat keys` instead of `breadcrumbs keys`
|
|
24
58
|
- [ ] Bug: Initialize with breadcrumbs is not working at all;
|
|
59
|
+
- [ ] Bug: Convertor for 'midFlat' is loosing empty data-structures;
|
|
60
|
+
- [ ] Bug: Boolean values "true" are converted to 1(number);
|
|
61
|
+
- [ ] Bug: Operation "add" treats numbers as string;
|
|
62
|
+
- [ ] Bug: Convertor from 'breadcrumbs' breaks;
|
|
63
|
+
|
|
25
64
|
|
|
26
65
|
|
|
27
66
|
|
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),l=r(702),o=r(337),n=r(86),u=r(814);e.exports={identical:s,change:l,same:o,different:n,missing:u}},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={},o=Object.keys(t).map((e=>e.split("/"))).sort(((e,t)=>t.length-e.length)),n=[],u=[],c=[],i=[];for(let e=o[0].length-1;e>=0;e--){let t=o.filter((t=>t.length==e+1));n.push(r.generateObject(t))}u=n.map((e=>e.next().value)).reverse(),c=u.map(((e,t)=>r.generateList(t,e)));for(let e of c)for(let[o,n,u]of e){let e=n.split("/"),c=e[e.length-1],a=s.length,p=o-a-1,d=p>0,f=r.hasNumbers(u)?"array":"object";if(d){for(let t=0;t<=p;t++)s.push([f,t]),t>0&&(s[t-1].push([t,e[t]]),i.push(e[t]));a=s.length}else s.push([f,a]),a=s.length,o>1&&(s[o-2].push([a-1,c]),i.push(c));f=r.hasNumbers(i)?"array":"object",s[0][0]=f;for(let e of u)l[`root/${a-1}/${e}`]=t[`${n}/${e}`]}return[s,l]},toType:function(e,t){let[r,s]=t,l=Object.keys(s),o={},n={};return r.forEach((e=>{let[t,s,...l]=e;l.forEach((e=>{let[t,l]=e,o=l,u=s;for(let e=s;e>=0;e--){let[t,s,...l]=r[e];l.forEach((e=>{let[t,r]=e;t===u&&(o=`${r}/${o}`,u=s)}))}n[t]=o}))})),l.forEach((e=>{let t=e.split("/"),r=t[1],l=n[r];"0"==r?t=t.filter(((e,t)=>1!=t)):t[1]=l,o[t.join("/")]=s[e]})),o}}},890:(e,t,r)=>{"use strict";const s=r(270),l=r(72),o=r(184),n=e=>(t,r)=>{let n,u,c,{help:i}=t,a=[];switch(e){case"std":case"standard":return l.toFlat(t,r);case"tuple":case"tuples":break;case"breadcrumb":case"breadcrumbs":return n=Object.keys(r),a=n.map((e=>r[e])),u=i.sanitizeFlatKeys(n),c=i.zipObject(u,a),s.toFlat(t,c);case"file":case"files":return n=r.map((e=>{let t=e.split("/");return a.push(t.pop()),t.join("/")})),u=i.sanitizeFlatKeys(n),c=i.zipObject(u,a),s.toFlat(t,c);case"midFlat":return o.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 l.toType(t,r);case"midFlat":return o.toType(t,r);case"breadcrumb":case"breadcrumbs":return s.toType(t,r)}}}},184:e=>{"use strict";e.exports={toFlat:function(e,t){let r=Object.keys(t).sort(((e,t)=>e.split("/").length-t.split("/").length)),s=[],{help:l,empty:o}=e,n=o();return r.forEach(((e,r)=>{let o,u=Object.keys(t[e]),c=l.hasNumbers(u),i=e.split("/"),a=i.length;a>1&&(o=i.pop(),s[a-2].push([r,o])),c?s.push(["array",r]):s.push(["object",r]);for(let s in t[e])n[`root/${r}/${s}`]=t[e][s]})),[s,n]},toType:function(e,t){let r,[s,l]=t,o={},n={};return s.forEach(((e,t)=>{let s,u={};r=n[t]?n[t]:"root",e.forEach(((e,t)=>{if(t<2)return;let[s,l]=e;n[s]=`${r}/${l}`})),s=`root/${e[1]}`;for(let e in l)e.includes(s)&&(u[e.split("/").pop()]=l[e]);o[r]=u})),o}}},72:e=>{"use strict";e.exports={toFlat:function(e,t){let r=[],s=!1,l=e.empty(),{findType:o,isItPrimitive:n,generateList:u}=e.help,c=[];r.push(u(0,t)),c.push([o(t),0]);for(let e of r)for(let[t,i,a]of e)if(s=n(a),s)l[`root/${t}/${i}`]=a;else{let e=c.length;c[t].push([e,i]),r.push(u(e,a)),c.push([o(a),e])}return[c,l]},toType:function(e,t){let[r,s]=t,l=Object.keys(s),o=[],n={};return r.forEach((e=>{let t,[r,u,...c]=e;t="array"==r?[]:{},l.filter((e=>e.includes(`root/${u}/`))).forEach((e=>{let r=e.split("/"),l=r[r.length-1];t[l]=s[e]})),n[u]=o.length,o.push(t)})),r.forEach((e=>{let[t,r,...s]=e;s.forEach(((e,t)=>{let[s,l]=e;s=Number(s)||s;let u=n[s];o[r][l]=o[u]}))})),o[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={},l=[];return t.forEach((t=>{let o=t.split("/"),n=o[1],u=o.pop();n==e&&(s[u]=r[t],l.push(t))})),[s,l]}},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(),l=s.join("/");r.has(l)||(r.add(l),t[l]=[]),t[l].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),l=r(35),o=r(85),n=r(500),u=r(257),c=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:l,isItPrimitive:s,generateObject:n,generateList:o,sanitizeFlatKeys:u,copyStructure:c,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 l=s.substr(5).split("/"),o=l[l.length-1];return r.hasNumbers([o])&&l.pop(),e.push([l.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 l=e[1],o=r[l];s>1&&r.push(`${o}/${t[1]}`)}))})),e.map((e=>{let t=e.split("/"),s=t[1],l=t[2];return`${r[s]}/${l}`}))}},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=Number(t[s])?parseInt(t[s]):t[s];return e[r]=l,e}),{})}},564:e=>{e.exports=function(e,t){const{structure:r,value:s}=t._select,l=new Set,o=new Set;let n=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>=n&&l.has(r)&&(e.push([...t]),o.add(r)),e}),[["array",0]]),l.has(0)&&t._select.structure.splice(1,1),o.size>1){let e=0;o.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:o}=t._select;if(!o)return t;for(k in o)newKey=k.replace("root",s),l[newKey]?l[newKey]={...l[newKey],...o[k]}:l[newKey]={...o[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,help:l,modifier:o}=e,n=s.to("midFlat",e,[t.structure,t.value]),u=s.to("midFlat",e,[r.structure,r.value]),c=Object.keys(u);let i;t._error=t._error.concat(r._error),i=c.reduce(((e,t)=>{let r=t.split("/").pop(),s=Object.keys(e.root);if("root"!=r&&e[t]){let r={};return r[t]={...u[t]},o.combineShallow(e,r)}if("root"!=r&&s.includes(r)){let r={};return r[t]={...u[t]},o.combineShallow(e,r)}return o.combineShallow(e,{root:{...u[t]}})}),n);let[a,p]=s.from("midFlat").toFlat(e,i);return t.structure=l.copyStructure(a),t.value=p,t}},911:e=>{e.exports=function(e,t){const{help:r,num:s,direction:l}=e;let o=[],n=[...t._select.value];return r.objectsByLevel(t.structure).forEach(((e,t)=>{("more"==l?t>=s:t<=s)&&(o=o.concat(e))})),t._select.value=n.filter((e=>{let t=parseInt(e.split("/")[1]);return o.includes(t)})),t}},699:e=>{e.exports=function(e,t){let r,s=Object.keys(t.value),{help:l,deep:o,search:n}=e,u=l.toBreadcrumbKeys(s,t.structure);n=n||"root",o=null==o?9999:o,o+=1,r=n.split("/").length+o;let c=u.filter((e=>e.match(n))).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,c),t._select.structure=l.copyStructure(t.structure),t}},641:e=>{e.exports=function(e,t){const{help:r,prop:s,where:l}=e;let o=[],n=[],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)}}))})),n=o.reduce(((e,r)=>{for(let s in t.value)s.split("/")[1]==r&&e.push(s);return e}),[]),u=l?o.reduce(((e,s)=>{let[o,u]=r.filterObject(s,n,t.value);return l(o)&&e.push(...u),e}),[]):n,t._select.value=r.updateSelection(t._select.value,u),t._select.structure=r.copyStructure(t.structure),t}},635:(e,t,r)=>{"use strict";const s=r(699),l=r(261),o=r(32),n=r(911),u=r(641),c={loadLong(e,t){let{structure:r,value:s}=t;return c._loadData(e,r,s)},loadShort(e,t){let[r,s]=t;return c._loadData(e,r,s)},_loadData(e,t,r){const{help:s,simpleDT:l}=e;let o=l();o.structure=s.copyStructure(t);for(const e in r)o.value[e]=r[e];return o},modify:r(483),find:s,parent:l,folder:u,deep:n,block:o,transform:r(348),attach:r(425),combine:r(326),assemble:r(564),purify:r(341)};e.exports=c},483:e=>{e.exports=function(e,t,r){const{action:s,convert:l,help:o,modifier:n}=e,u=l.to("midFlat",e,[t.structure,t.value]),c=l.to("midFlat",e,[r.structure,r.value]);let i;t._error=t._error.concat(r._error),i=n[s](u,c);let[a,p]=l.from("midFlat").toFlat(e,i);return t.structure=o.copyStructure(a),t.value=p,t}},261:e=>{e.exports=function(e,t){const{help:r,prop:s,where:l}=e;let o,n=[],u=[];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)}}))})),u=n.reduce(((e,r)=>{for(let s in t.value)s.split("/")[1]==r&&e.push(s);return e}),[]),o=l?n.reduce(((e,s)=>{let[o,n]=r.filterObject(s,u,t.value);return l(o)&&e.push(...n),e}),[]):u,t._select.value=r.updateSelection(t._select.value,o),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,l=r.reverse();let o=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,n=t.length,u=[r,s];return 2!=n||o.includes(s)?(l.forEach((e=>{let t=e[0];o.includes(t)&&(u.push([...e]),o.includes(s)||o.push(s))})),o.includes(s)?(e.push([...u]),e):e):e}),[]).reverse(),t}},348:e=>{e.exports=function(e,t){let r,[s,l]=t,{modify:o,empty:n}=e,u=Object.keys(l);switch(o){case"reverse":r=u.reduce(((e,t)=>{let r=t.split("/"),s=r[2].match(/^[0-9]+$/)?parseInt(r[2]):r[2],o=l[t];return e[`root/${r[1]}/${o}`]=s,e}),n());break;case"key":case"keys":r=u.reduce(((e,t,r)=>{let s=t.split("/");return e[`root/0/${r}`]=s[2],e}),n()),s=[["array",0]];break;case"value":case"values":r=u.reduce(((e,t,r)=>{let s=l[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),l=r(935),o=r(631),n=r(890),u=r(218),c=["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:l,modifier:o}),init(e,t){let r=i.dependencies(),l=r.simpleDT(),o=r.help,{type:u,modify:a}={type:"std",modify:!1,...t};if(c.includes(u)){if(null!=e){const[t,s]="flat"==u||"shortFlat"==u?e:n.from(u).toFlat(r,e);l.structure=o.copyStructure(t),l.value=s}if(a){let[t,o]=s.transform({...r,modify:a},[l.structure,l.value]);return Object.keys(o).length<=0&&l._error.push(`Modifier "${a}" is not a valid modifier and was ignored. Data: ${JSON.stringify(e)}`),l.structure=t,l.value=o,l}return l}this._error.push(`Can't understand your data-type: ${u}. 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:l="std"}={type:"std",modify:!1,...r},o=t(n.from(l).toFlat(i.dependencies(),e));return o?s.loadShort(i.dependencies(),o):(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 o;return o=r?i.init(t,r):{structure:l.copyStructure(t.structure),value:{...t.value}},s.modify({...i.dependencies(),action:e},this,o)},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=l.copyStructure(r),e.value={...s},e._select.result=null,e},attach(e){const t=this,r={...i.dependencies(),location:e};let[o,n]=s.attach(r,t);return t.structure=l.copyStructure(o),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=l.toBreadcrumbKeys(t._select.value,t.structure);return void 0===e||(t._select.result=null,t._select.value=t._select.value.reduce(((s,l,o)=>{let n=r[o];return e(t.value[l],n,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,o)=>{let n=r[o];return e(t.value[l],n,l)||s.push(l),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,l.extractSelection(e)]),e},flatten(){const e=this,{result:t}=e._select;return t?(e._select.result=o.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=o.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=o.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=o.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,l=n.to("breadcrumb",i.dependencies(),[s.structure,s.value]),o=n.to("breadcrumb",i.dependencies(),[t.structure,t.value]),c=u[e](l,o),[a,p]=n.from("breadcrumb").toFlat(i.dependencies(),c),d=i.dependencies().simpleDT();return d.structure=a,d.value=p,r(d),s},spread(e,t){const r=this,l=!!r._select.result,{help:o}=i.dependencies();let u,c,a;switch(e){case"value":case"values":if(c="values",l){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);a=s.transform({...i.dependencies(),modify:c},e)}else a=s.transform({...i.dependencies(),modify:c},[r.structure,r.value]);u=n.to("std",i.dependencies(),a);break;case"key":case"keys":if(c="keys",l){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);a=s.transform({...i.dependencies(),modify:c},e),c="values",a=s.transform({...i.dependencies(),modify:c},a)}else a=s.transform({...i.dependencies(),modify:c},[r.structure,r.value]);u=n.to("std",i.dependencies(),a);break;case"standard":case"std":if(l){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);u=n.to("std",i.dependencies(),e)}else u=n.to("std",i.dependencies(),[r._select.structure,o.extractSelection(r)]);break;case"breadcrumb":case"breadcrumbs":if(l){let e=n.from("midFlat").toFlat(i.dependencies(),r._select.result);u=n.to("breadcrumbs",i.dependencies(),e)}else u=n.to("breadcrumbs",i.dependencies(),[r._select.structure,o.extractSelection(r)]);break;case"tuples":let e;if(l){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,o.extractSelection(r)]);u=o.reduceTuples(i.dependencies(),e);break;case"file":case"files":let t,p;if(l){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,o.extractSelection(r)]);p=o.reduceTuples(i.dependencies(),t),u=p.map((e=>{let[t,r]=e;return t?`${t}/${r}`:r}));break;case"midFlat":u=l?{...r._select.result}:n.to("midFlat",i.dependencies(),[r._select.structure,o.extractSelection(r)]);break;default:if(l)u=n.from("midFlat").toFlat(i.dependencies(),r._select.result);else{let e=o.extractSelection(r);u=[o.copyStructure(r._select.structure),e]}}return t?(t(u),r):u},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),l=Object.keys(r),o=[...s],n={root:{}},u={};for(key of l)o.includes(key)||o.push(key);let c=o.sort(((e,t)=>t.split("/").length-e.split("/").length)).reduce(((t,s)=>{let l=e.root,o=r[s],n=s.split("/").pop();for(k in Object.keys(l),"root"!=s&&e[s]&&(t.add(n),u[n]||(u[n]=[]),u[n]=Object.keys(e[s]).reduce(((t,r)=>(t.push(e[s][r]),t)),u[n])),"root"!=n&&o&&(t.add(n),u[n]||(u[n]=[]),u[n]=Object.keys(o).reduce(((e,t)=>(e.push(o[t]),e)),u[n])),o)e[`root/${k}`]&&o[k]&&(t.add(k),u[k]||(u[k]=[]),u[k].push(o[k])),l[k]&&o[k]&&(t.add(k),u[k]?u[k].push(o[k]):u[k]=[l[k],o[k]]);return t}),new Set);for(k in s.forEach((t=>{let r=e[t];for(k in n[t]={},r)c.has(k)||(n[t][k]=r[k])})),l.forEach((e=>{let s=r[e],l=Object.keys(s),o=e.split("/").pop();c.has(o)||l.forEach((r=>{let l=`root/${r}`;if(n[l]){let e=t(n[l]);n[l][e]=s[r]}else c.has(r)||(n[e][r]=s[r])}))})),u){const e=`root/${k}`;n[e]=u[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 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),o={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=o},655:e=>{e.exports=function(e,t){for(const r in t){let s=Object.values(e[r]),l=Object.values(t[r]),o=s.concat(l);e[r]=o.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((o=>{"root"==r?t[r][o]=e.root[o]:t[r][`${l}${s}${o}`]=e[r][o]})),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 o={root:{...t[r]}},n={root:{...e[l]}};return t[r]=s(o,n).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[r])for(let s in t[r])e[r][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 o=t[s]={exports:{}};return e[s](o,o.exports,r),o.exports}(880);dtbox=r})();
|
|
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})();
|
package/package.json
CHANGED
|
@@ -55,6 +55,10 @@ function toFlat ( dependencies, rawValue ) {
|
|
|
55
55
|
if ( !structure[i] ) structure[i] = [ 'object', i ]
|
|
56
56
|
if ( propDone[i] ) el = propDone[i]
|
|
57
57
|
elChildren = Array.from ( tProps[el] )
|
|
58
|
+
if ( el === 'root' ) {
|
|
59
|
+
const mainType = help.hasNumbers ( elChildren ) ? 'array' : 'object';
|
|
60
|
+
structure[i][0] = mainType
|
|
61
|
+
}
|
|
58
62
|
elChildren.forEach ( name => { // Setup connections between object
|
|
59
63
|
let test = tProps[`${el}/${name}`];
|
|
60
64
|
if ( !test ) return
|
|
@@ -77,6 +81,7 @@ function toFlat ( dependencies, rawValue ) {
|
|
|
77
81
|
, theKey = ''
|
|
78
82
|
;
|
|
79
83
|
objNumber = propDone.indexOf ( keySearch )
|
|
84
|
+
|
|
80
85
|
if ( objNumber < 0 ) objNumber = structRaw.indexOf(keySearch)
|
|
81
86
|
theKey = `root/${objNumber}/${name}`
|
|
82
87
|
value[theKey] = rawValue[`${keySearch}/${name}`]
|
|
@@ -3,31 +3,96 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
function toFlat ( dependencies, d ) { // Converts data to shortFlat
|
|
6
|
+
if ( Object.keys(d).length === 0 ) {
|
|
7
|
+
let
|
|
8
|
+
structure = [ [ 'object', 0 ] ]
|
|
9
|
+
, value = {}
|
|
10
|
+
;
|
|
11
|
+
return [ structure, value ]
|
|
12
|
+
}
|
|
6
13
|
let
|
|
7
|
-
|
|
8
|
-
,
|
|
9
|
-
, { help
|
|
10
|
-
,
|
|
14
|
+
structure = []
|
|
15
|
+
, value = {}
|
|
16
|
+
, { help } = dependencies
|
|
17
|
+
, keyList = Object // Provides keys in order: from larger to shorter
|
|
18
|
+
.keys ( d )
|
|
19
|
+
.map ( x => x.trim().replace(/\/$/,'').split('/') )
|
|
20
|
+
.sort ( (a,b) => b.length - a.length )
|
|
21
|
+
, tProps = {} // { objectLocation<string> : childObjectNames<set> }
|
|
22
|
+
, structRaw = [ 'root' ] // objectLocation strings
|
|
23
|
+
, propDone = []
|
|
11
24
|
;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
|
|
26
|
+
keyList.forEach ( keyArr => { // Setup our temp structures: tProps and structRaw
|
|
27
|
+
keyArr.forEach ( (k,i) => {
|
|
28
|
+
let parent = keyArr.slice( 0, i ).join ( '/' );
|
|
29
|
+
if ( !parent ) return
|
|
30
|
+
if ( !tProps[parent] ) {
|
|
31
|
+
tProps[parent] = new Set()
|
|
32
|
+
structRaw.push ( parent )
|
|
33
|
+
}
|
|
34
|
+
tProps[parent].add ( k )
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
Array.from ( structRaw.reduce ((res,ls)=> { // Add flat objects paths
|
|
39
|
+
res.add ( ls )
|
|
40
|
+
let flatList;
|
|
41
|
+
const spot = tProps[ls];
|
|
42
|
+
if ( spot == null ) return res
|
|
43
|
+
flatList = Array.from ( spot )
|
|
44
|
+
flatList.forEach ( el => res.add ( `${ls}/${el}` ) )
|
|
45
|
+
return res
|
|
46
|
+
}, new Set() )
|
|
47
|
+
)
|
|
48
|
+
.sort ()
|
|
49
|
+
.forEach ( (path,i) => { // Build the structure rows
|
|
50
|
+
let position;
|
|
51
|
+
if ( !structure[i] ) {
|
|
52
|
+
structure[i] = [ 'object', i ]
|
|
53
|
+
propDone [i] = path
|
|
54
|
+
}
|
|
55
|
+
if ( propDone[i] ) path = propDone[i]
|
|
56
|
+
if ( path == null ) return
|
|
57
|
+
|
|
58
|
+
const flatList = tProps[path];
|
|
59
|
+
if ( !flatList ) return
|
|
60
|
+
|
|
61
|
+
let
|
|
62
|
+
flat = Array.from(flatList)
|
|
63
|
+
, isArray = help.hasNumbers ( flat )
|
|
64
|
+
;
|
|
65
|
+
if ( isArray ) structure[i][0] = 'array'
|
|
66
|
+
|
|
67
|
+
flatList.forEach ( name => {
|
|
68
|
+
position = structure.length
|
|
69
|
+
propDone[position] = `${path}/${name}`
|
|
70
|
+
structure.push ( ['object' , position])
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
propDone.forEach ( (k,i) => { // Setup values
|
|
75
|
+
let
|
|
76
|
+
keyList = Object.keys ( d[k] ).map ( k => k.trim().replace (/\/$/,'') ) // Prevents key to end on empty-space or '/'
|
|
77
|
+
, isArray = help.hasNumbers ( keyList )
|
|
78
|
+
, kSplit = k.split ( '/' )
|
|
79
|
+
, kProp
|
|
80
|
+
, breadcrumbs
|
|
81
|
+
;
|
|
82
|
+
|
|
83
|
+
kProp = kSplit.pop()
|
|
84
|
+
breadcrumbs = kSplit.join('/')
|
|
85
|
+
|
|
86
|
+
let ix = propDone.indexOf (breadcrumbs);
|
|
87
|
+
if ( ix >= 0 ) structure[ix].push ( [i, kProp] )
|
|
88
|
+
if ( isArray ) structure[i][0] = 'array'
|
|
89
|
+
|
|
90
|
+
propDone [i] = k
|
|
91
|
+
for (let el in d[k] ) {
|
|
92
|
+
let val = d[k][el];
|
|
93
|
+
if ( val === '_fake$$$' ) return // Remove fake data generated from 'toType' function
|
|
94
|
+
value [`root/${i}/${el}` ] = val
|
|
95
|
+
}
|
|
31
96
|
}) // keys foreach
|
|
32
97
|
return [ structure, value ]
|
|
33
98
|
} // toFlat func.
|
|
@@ -37,33 +102,45 @@ function toFlat ( dependencies, d ) { // Converts data to shortFlat
|
|
|
37
102
|
|
|
38
103
|
|
|
39
104
|
function toType ( dependencies, [structure, value] ) { // Converts data to midFlat
|
|
40
|
-
|
|
41
|
-
result = {}
|
|
42
|
-
, keys = {}
|
|
105
|
+
let
|
|
106
|
+
result = { 'root': {} }
|
|
107
|
+
, keys = {'0':'root'}
|
|
43
108
|
, activeKey
|
|
44
109
|
;
|
|
45
|
-
structure.forEach ( (row,i) => {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
, testKey
|
|
49
|
-
;
|
|
50
|
-
// setup activeKey
|
|
51
|
-
if ( keys[i] ) activeKey = keys[i]
|
|
52
|
-
else activeKey = 'root'
|
|
110
|
+
structure.forEach ( (row,i) => { // Define relation between structure number and midkeys. Var 'keys'.
|
|
111
|
+
if ( keys[i] != null ) activeKey = keys[i]
|
|
112
|
+
else activeKey = 'root'
|
|
53
113
|
|
|
54
|
-
row.forEach ( (el,j) => { //
|
|
114
|
+
row.forEach ( (el,j) => { // Collect all defined sub structures
|
|
55
115
|
if ( j < 2 ) return
|
|
56
|
-
let
|
|
57
|
-
|
|
116
|
+
let
|
|
117
|
+
[ objNumber, objName ] = el
|
|
118
|
+
, midKey = `${activeKey}/${objName}`
|
|
119
|
+
;
|
|
120
|
+
result [ midKey ] = {}
|
|
121
|
+
keys [ objNumber ] = midKey
|
|
58
122
|
})
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
123
|
+
})
|
|
124
|
+
let
|
|
125
|
+
valueKeys = Object.keys ( value )
|
|
126
|
+
, valueCheck = new Set ()
|
|
127
|
+
;
|
|
128
|
+
for (let k of valueKeys ) { // Organize values per midFlat object
|
|
129
|
+
let
|
|
130
|
+
[ , n ,prop ] = k.split ( '/' )
|
|
131
|
+
, midKey = keys[n]
|
|
132
|
+
;
|
|
133
|
+
valueCheck.add(n)
|
|
134
|
+
result[midKey][prop] = value[k]
|
|
135
|
+
}
|
|
136
|
+
structure.forEach ( row => { // Set a fake value into array objects. Preserve 'array' during midflat operations
|
|
137
|
+
let
|
|
138
|
+
[ type, n, ...objects ] = row
|
|
139
|
+
, midKey = keys [ n ]
|
|
140
|
+
, noValue = !valueCheck.has(n.toString())
|
|
141
|
+
, hasNoObjects = !( objects.length > 0 )
|
|
142
|
+
;
|
|
143
|
+
if ( type === 'array' && noValue && hasNoObjects ) result[midKey]['-1'] = '_fake$$$'
|
|
67
144
|
})
|
|
68
145
|
return result
|
|
69
146
|
} // toType func.
|
|
@@ -45,6 +45,7 @@ function toType ( dependencies, [ structure, value ]) {
|
|
|
45
45
|
, resultObjects = []
|
|
46
46
|
, resultMap = {}
|
|
47
47
|
;
|
|
48
|
+
|
|
48
49
|
structure.forEach ( ([type, id, ...items]) => { // Create data-structures
|
|
49
50
|
let local;
|
|
50
51
|
if ( type == 'array' ) local = []
|
|
@@ -61,13 +62,15 @@ function toType ( dependencies, [ structure, value ]) {
|
|
|
61
62
|
resultMap [id] = resultObjects.length
|
|
62
63
|
resultObjects.push ( local )
|
|
63
64
|
})
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
|
|
66
|
+
structure.forEach ( ([ , id, ...items]) => { // Conect data-structures
|
|
67
|
+
items.forEach ( ([link, propName]) => {
|
|
66
68
|
link = Number(link) || link;
|
|
67
69
|
let location = resultMap[link];
|
|
68
70
|
resultObjects[id][propName] = resultObjects[ location ]
|
|
69
71
|
})
|
|
70
72
|
})
|
|
73
|
+
|
|
71
74
|
return resultObjects[0]
|
|
72
75
|
} // toType func.
|
|
73
76
|
|
package/src/help/zipObject.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
function zipObject ( keys, values ) { // (string[], string[] ) -> object
|
|
2
2
|
// *** Conect two arrays in a single object
|
|
3
3
|
return keys.reduce ( (res,k,i) => {
|
|
4
|
-
let
|
|
4
|
+
let
|
|
5
|
+
income = values[i]
|
|
6
|
+
, val
|
|
7
|
+
;
|
|
8
|
+
switch ( typeof income ) {
|
|
9
|
+
case 'string' :
|
|
10
|
+
val = Number(income) || income
|
|
11
|
+
break
|
|
12
|
+
default:
|
|
13
|
+
val = income
|
|
14
|
+
}
|
|
5
15
|
res[k] = val
|
|
6
16
|
return res
|
|
7
17
|
}, {} )
|
package/src/lib/attach.js
CHANGED
package/src/lib/transform.js
CHANGED
|
@@ -16,7 +16,7 @@ function transform ( dependencies, [structure, value] ) {
|
|
|
16
16
|
;
|
|
17
17
|
res[`root/${arr[1]}/${val}`] = pureKey
|
|
18
18
|
return res
|
|
19
|
-
},
|
|
19
|
+
}, {} )
|
|
20
20
|
break
|
|
21
21
|
case 'key':
|
|
22
22
|
case 'keys':
|
|
@@ -27,7 +27,7 @@ function transform ( dependencies, [structure, value] ) {
|
|
|
27
27
|
;
|
|
28
28
|
res[k] = arr[2]
|
|
29
29
|
return res
|
|
30
|
-
},
|
|
30
|
+
}, {} )
|
|
31
31
|
structure = [ [ 'array', 0 ]]
|
|
32
32
|
break
|
|
33
33
|
case 'value' :
|
package/src/main.js
CHANGED
|
@@ -159,6 +159,7 @@ const mainlib = {
|
|
|
159
159
|
return function ( inData, options ) {
|
|
160
160
|
const me = this;
|
|
161
161
|
let updateData;
|
|
162
|
+
|
|
162
163
|
if ( options ) updateData = mainlib.init ( inData, options )
|
|
163
164
|
else updateData = {
|
|
164
165
|
structure : help.copyStructure(inData.structure)
|
|
@@ -521,7 +522,14 @@ const mainlib = {
|
|
|
521
522
|
else {
|
|
522
523
|
vals = dtlib.transform ( {...mainlib.dependencies(), modify }, [me.structure, me.value] );
|
|
523
524
|
}
|
|
524
|
-
selection = convert
|
|
525
|
+
selection = convert
|
|
526
|
+
.to ( 'std', mainlib.dependencies(), vals )
|
|
527
|
+
.map ( v => {
|
|
528
|
+
switch ( typeof v ) {
|
|
529
|
+
case 'string' : return Number(v) || v
|
|
530
|
+
default : return v
|
|
531
|
+
}
|
|
532
|
+
})
|
|
525
533
|
break
|
|
526
534
|
case 'key' :
|
|
527
535
|
case 'keys' :
|
|
@@ -64,7 +64,6 @@ function combineShallow ( mainData, update ) {
|
|
|
64
64
|
}
|
|
65
65
|
}) // forEach mainKeys
|
|
66
66
|
|
|
67
|
-
|
|
68
67
|
updateKeys.forEach ( key => {
|
|
69
68
|
let
|
|
70
69
|
obj = update[key]
|
|
@@ -76,10 +75,14 @@ function combineShallow ( mainData, update ) {
|
|
|
76
75
|
let testKey = `root/${k}`;
|
|
77
76
|
if ( result[testKey] ) {
|
|
78
77
|
let digitCount = _findDigitKeys ( result[testKey]);
|
|
78
|
+
if ( obj[k] === '_fake$$$' ) return
|
|
79
79
|
result[testKey][digitCount] = obj[k]
|
|
80
80
|
return
|
|
81
81
|
}
|
|
82
|
-
if ( !duplicateNames.has(k) )
|
|
82
|
+
if ( !duplicateNames.has(k) ) {
|
|
83
|
+
if ( obj[k] === '_fake$$$' ) return
|
|
84
|
+
result[key][k] = obj[k]
|
|
85
|
+
}
|
|
83
86
|
})
|
|
84
87
|
}) // forEach updateKeys
|
|
85
88
|
|
package/src/modifiers/flatten.js
CHANGED
|
@@ -5,10 +5,10 @@ const
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
function flatten ( mainData ) {
|
|
8
|
+
|
|
8
9
|
let keyList = Object
|
|
9
10
|
.keys ( mainData )
|
|
10
11
|
.filter ( x => x != 'root' );
|
|
11
|
-
|
|
12
12
|
let flatter = keyList.reduce ( (res,k) => {
|
|
13
13
|
let update = { 'root': {...mainData[k]} }
|
|
14
14
|
return combineShallow ( res, update )
|
package/src/modifiers/update.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
function update ( mainData, update ) {
|
|
2
2
|
for (const updateKey in update ) {
|
|
3
|
-
if ( mainData
|
|
3
|
+
if ( mainData.hasOwnProperty(updateKey) ) {
|
|
4
4
|
for (let prop in update[updateKey]) {
|
|
5
|
-
if ( mainData[updateKey]
|
|
5
|
+
if ( mainData[updateKey].hasOwnProperty(prop) ) {
|
|
6
|
+
mainData[updateKey][prop] = update[updateKey][prop]
|
|
7
|
+
}
|
|
6
8
|
}
|
|
7
9
|
}
|
|
8
10
|
}
|