dt-toolbox 4.0.9 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/Changelog.md +7 -12
  2. package/LICENSE +1 -1
  3. package/Migration.guide.md +14 -1
  4. package/README.md +976 -352
  5. package/README_v.2.x.x.md +0 -1
  6. package/README_v.4.x.x.md +532 -0
  7. package/package.json +24 -32
  8. package/src/convertors/index.js +44 -37
  9. package/src/convertors/midflat.js +77 -133
  10. package/src/convertors/standard.js +62 -87
  11. package/src/convertors/tuples.js +171 -0
  12. package/src/flatData/connect.js +50 -0
  13. package/src/flatData/export.js +46 -0
  14. package/src/flatData/filters/list.js +11 -0
  15. package/src/flatData/filters/listObject.js +13 -0
  16. package/src/flatData/filters/object.js +12 -0
  17. package/src/flatData/filters/root.js +12 -0
  18. package/src/flatData/find.js +20 -0
  19. package/src/flatData/from.js +33 -0
  20. package/src/flatData/get.js +29 -0
  21. package/src/flatData/index.js +101 -0
  22. package/src/flatData/insert.js +24 -0
  23. package/src/flatData/like.js +24 -0
  24. package/src/flatData/look.js +49 -0
  25. package/src/flatData/push.js +19 -0
  26. package/src/flatData/save.js +17 -0
  27. package/src/flatData/set.js +26 -0
  28. package/src/flatData/setupFilter.js +21 -0
  29. package/src/flatData/use.js +16 -0
  30. package/src/flatObject/copy.js +19 -0
  31. package/src/flatObject/export.js +13 -0
  32. package/src/flatObject/index.js +47 -0
  33. package/src/flatObject/insert.js +28 -0
  34. package/src/flatObject/model.js +32 -0
  35. package/src/flatObject/query.js +24 -0
  36. package/src/flatObject/setupFilter.js +12 -0
  37. package/src/main.js +21 -690
  38. package/src/mainLib.js +105 -0
  39. package/dist/dt-toolbox.min.js +0 -1
  40. package/dist/index.html +0 -65
  41. package/src/compareMethod/change.js +0 -21
  42. package/src/compareMethod/different.js +0 -18
  43. package/src/compareMethod/identical.js +0 -21
  44. package/src/compareMethod/index.js +0 -16
  45. package/src/compareMethod/missing.js +0 -18
  46. package/src/compareMethod/same.js +0 -18
  47. package/src/convertors/breadcrumbs.js +0 -148
  48. package/src/help/extractSelection.js +0 -12
  49. package/src/help/filterObject.js +0 -25
  50. package/src/help/hasNumbers.js +0 -14
  51. package/src/help/index.js +0 -37
  52. package/src/help/isItPrimitive.js +0 -10
  53. package/src/help/objectsByLevel.js +0 -16
  54. package/src/help/reduceTuples.js +0 -29
  55. package/src/help/sanitizeFlatKeys.js +0 -30
  56. package/src/help/toBreadcrumbsKeys.js +0 -28
  57. package/src/help/tuplesToBreadcrumbs.js +0 -25
  58. package/src/help/updateSelection.js +0 -14
  59. package/src/help/zipObject.js +0 -24
  60. package/src/lib/assemble.js +0 -45
  61. package/src/lib/attach.js +0 -20
  62. package/src/lib/block.js +0 -33
  63. package/src/lib/combine.js +0 -38
  64. package/src/lib/deep.js +0 -23
  65. package/src/lib/find.js +0 -36
  66. package/src/lib/folder.js +0 -42
  67. package/src/lib/index.js +0 -58
  68. package/src/lib/modify.js +0 -22
  69. package/src/lib/parent.js +0 -51
  70. package/src/lib/purify.js +0 -39
  71. package/src/lib/transform.js +0 -55
  72. package/src/modifiers/add.js +0 -18
  73. package/src/modifiers/append.js +0 -18
  74. package/src/modifiers/combineShallow.js +0 -119
  75. package/src/modifiers/flatten.js +0 -39
  76. package/src/modifiers/index.js +0 -34
  77. package/src/modifiers/insert.js +0 -21
  78. package/src/modifiers/keyPrefix.js +0 -27
  79. package/src/modifiers/mix.js +0 -25
  80. package/src/modifiers/overwrite.js +0 -18
  81. package/src/modifiers/prepend.js +0 -19
  82. package/src/modifiers/reverse.js +0 -23
  83. package/src/modifiers/update.js +0 -18
  84. package/src/simple.js +0 -49
  85. package/webpack.config.js +0 -28
package/src/mainLib.js ADDED
@@ -0,0 +1,105 @@
1
+ 'use strict'
2
+
3
+
4
+
5
+ import walk from '@peter.naydenov/walk'
6
+
7
+ import flatObject from './flatObject/index.js' // Flat data api.
8
+ import flatData from './flatData/index.js' // Query data api. Used in model functions
9
+ import convert from './convertors/index.js' // Convertors
10
+
11
+
12
+
13
+ const INIT_DATA_TYPES = [
14
+ 'std', 'standard'
15
+ , 'tuple', 'tuples'
16
+ , 'breadcrumb', 'breadcrumbs'
17
+ , 'file', 'files'
18
+ , 'midFlat'
19
+ , 'flat'
20
+ ]
21
+ ;
22
+
23
+
24
+
25
+ const mainLib = {
26
+
27
+ dependencies () {
28
+ return {
29
+ walk
30
+ , flatData
31
+ , flatObject
32
+ , convert
33
+ , INIT_DATA_TYPES
34
+ , main : () => ({ load : mainLib.load })
35
+ }
36
+ } // dependencies func.
37
+
38
+
39
+
40
+ , init ( inData, options={} ) {
41
+ let
42
+ defaultOptions = { model : 'std' }
43
+ , { model } = Object.assign ( {}, defaultOptions, options )
44
+ , dependencies = mainLib.dependencies
45
+ ;
46
+ if ( !INIT_DATA_TYPES.includes(model) ) {
47
+ console.error ( `Can't understand your data-model: ${model}. Please, find what is possible on https://github.com/PeterNaydenov/dt-toolbox` )
48
+ return null
49
+ }
50
+ const
51
+ d = convert.from(model).toFlat ( dependencies, inData )
52
+ , flat = flatObject ( dependencies, d )
53
+ ;
54
+ return flat
55
+ } // init func.
56
+
57
+
58
+
59
+ , load ( inData ) {
60
+ const index = {};
61
+ inData.forEach ( line => {
62
+ const [ , ,breadcrumbs ] = line;
63
+ index[breadcrumbs] = line
64
+ })
65
+ const copy = walk ({data: inData });
66
+ return flatObject ( mainLib.dependencies, [copy, index, inData ] )
67
+ } // load func.
68
+
69
+
70
+
71
+ , flating ( inData, options={} ) {
72
+ let
73
+ defaultOptions = { model : 'std' }
74
+ , { model } = Object.assign ( {}, defaultOptions, options )
75
+ ;
76
+ if ( !INIT_DATA_TYPES.includes(model) ) return null
77
+ let [,,dt] = convert.from ('std').toFlat ( mainLib.dependencies, inData );
78
+ return dt
79
+ } // flating func.
80
+
81
+
82
+
83
+ , converting ( inData, options={} ) {
84
+ let
85
+ defaultOptions = { model : 'std', as: 'std' }
86
+ , { model, as } = Object.assign ( {}, defaultOptions, options )
87
+ ;
88
+ if ( !INIT_DATA_TYPES.includes(model) ) return null
89
+ if ( !INIT_DATA_TYPES.includes(as) ) return null
90
+ let [,,dt] = convert.from ('std').toFlat ( mainLib.dependencies, inData );
91
+
92
+ return convert.to ( as, mainLib.dependencies, dt )
93
+ } // flating func.
94
+
95
+
96
+
97
+ , getWalk : () => walk
98
+
99
+ } // mainLib
100
+
101
+
102
+
103
+ export default mainLib
104
+
105
+
@@ -1 +0,0 @@
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(e,t,r,l,n)}function s(e,s,l,n,o){let[c,u]=n;Object.keys(e).forEach((a=>{let i=t(e[a]),p=e[a],d="array"===t(s),f=!isNaN(a);if("simple"!==i&&u){if(p=u({value:p,key:a,breadcrumbs:`${o}/${a}`}),null==p)return;i=t(p)}if("simple"===i){if(!c)return void(s[a]=p);let e=c({value:p,key:a,breadcrumbs:`${o}/${a}`});if(null==e)return;const t=function(e,t){return t instanceof Array&&!isNaN(e)}(a,s);t?s.push(e):s[a]=e}if("object"===i){const e={};d&&f?s.push(e):s[a]=e,l.push(r(p,e,l,n,`${o}/${a}`))}if("array"===i){const e=[];d&&f?s.push(e):s[a]=e,l.push(r(p,e,l,n,`${o}/${a}`))}}))}e.exports=function({data:e,keyCallback:r,objectCallback:l}){let n,o=[],c="root",u=[r,l];switch(t(e)){case"array":n=[],s(e,n,o,u,c);break;case"object":n={},s(e,n,o,u,c);break;case"simple":return e}for(const e of o)e.next();return n}},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),a=r.hasNumbers(c)?"array":"object",i=s.length;u[i]=`${e}/${l}`,s.push([a,i]),s[t].push([i,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:a}=t,i=[];switch(e){case"std":case"standard":return l.toFlat(t,r);case"tuple":case"tuples":r=a.tuplesToBradcrumbs(t,r);case"breadcrumb":case"breadcrumbs":return o=Object.keys(r),i=o.map((e=>r[e])),c=a.sanitizeFlatKeys(o),u=a.zipObject(c,i),s.toFlat(t,u);case"file":case"files":return o=r.map((e=>{let t=e.split("/");return i.push(t.pop()),t.join("/")})),c=a.sanitizeFlatKeys(o),u=a.zipObject(c,i),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,a=Object.keys(t[e]).map((e=>e.trim().replace(/\/$/,""))),i=l.hasNumbers(a),p=e.split("/");o=p.pop(),c=p.join("/");let d=u.indexOf(c);d>=0&&r[d].push([n,o]),i&&(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()),a=!(s.length>0);"array"===t&&c&&a&&(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,a={};return o.push([n(t),c++]),a.root=0,l({data:t,keyCallback:function(e){let{value:t,key:s,breadcrumbs:l}=e;const n=l.split("/");n.pop();const o=n.join("/"),c=a[o];return r[`root/${c}/${s}`]=t,t},objectCallback:function(e){let{value:t,breadcrumbs:r}=e,s=r.split("/"),l=s.pop();o.push([n(t),c]),a[r]=c,u=c;let i=s.join("/"),p=a[i];return o[p].push([c,l]),c++,t}}),[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),a=r(504),i=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:a,zipObject:i,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({data:t,keyCallback:e=>{let{value:t,key:s}=e,n=s.substr(5).split("/"),o=n[n.length-1];return r.hasNumbers([o])&&n.pop(),l.push([n.join("/"),t]),t}}),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({data:t,objectCallback:function(e){let{value:t,breadcrumbs:r}=e;if("root"===r)return t;let[l,n]=t;return s[l]=n,t}}),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 a;t._error=t._error.concat(r._error),a=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[i,p]=s.from("midFlat").toFlat(e,a);return t.structure=n({data:i}),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 a=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,a),t._select.structure=c({data: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({data: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({data: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 a;t._error=t._error.concat(r._error),a=n[s](c,u);let[i,p]=l.from("midFlat").toFlat(e,a);return t.structure=o({data:i}),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({data:t.structure,objectCallback:function(e){let{value:t,breadcrumbs:r}=e;if("root"===r)return t;if("string"==typeof t[0])return t;let[l,n]=t;return n===s&&c.push(l),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({data: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),a=["std","standard","tuple","tuples","breadcrumb","breadcrumbs","file","files","midFlat","shortFlat"],i={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=i.dependencies(),l=r.simpleDT(),{type:n,modify:c}=(r.help,{type:"std",modify:!1,...t});if(a.includes(n)){if(null!=e){const[t,s]="flat"==n||"shortFlat"==n?e:o.from(n).toFlat(r,e);l.structure=u({data: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(i.dependencies(),e):s.loadShort(i.dependencies(),e),preprocess(e,t,r){let{type:l="std"}={type:"std",modify:!1,...r},n=t(o.from(l).toFlat(i.dependencies(),e));return n?s.loadShort(i.dependencies(),n):(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:u({data: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]=o.from("midFlat").toFlat(i.dependencies(),t);return e.structure=u({data: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=u({data: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=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={...i.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",i.dependencies(),[e.structure,e.value]),e},withSelection(){let e=this,{structure:t}=e._select;return e._select.result=o.to("midFlat",i.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={...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=o.to("breadcrumb",i.dependencies(),[s.structure,s.value]),n=o.to("breadcrumb",i.dependencies(),[t.structure,t.value]),u=c[e](l,n),[a,p]=o.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,l=!!r._select.result,{help:n}=i.dependencies();let c,a,p;switch(e){case"value":case"values":if(a="values",l){let e=o.from("midFlat").toFlat(i.dependencies(),r._select.result);p=s.transform({...i.dependencies(),modify:a},e)}else p=s.transform({...i.dependencies(),modify:a},[r.structure,r.value]);c=o.to("std",i.dependencies(),p).map((e=>"string"==typeof e&&Number(e)||e));break;case"key":case"keys":if(a="keys",l){let e=o.from("midFlat").toFlat(i.dependencies(),r._select.result);p=s.transform({...i.dependencies(),modify:a},e),a="values",p=s.transform({...i.dependencies(),modify:a},p)}else p=s.transform({...i.dependencies(),modify:a},[r.structure,r.value]);c=o.to("std",i.dependencies(),p);break;case"standard":case"std":if(l){let e=o.from("midFlat").toFlat(i.dependencies(),r._select.result);c=o.to("std",i.dependencies(),e)}else c=o.to("std",i.dependencies(),[r._select.structure,n.extractSelection(r)]);break;case"breadcrumb":case"breadcrumbs":if(l){let e=o.from("midFlat").toFlat(i.dependencies(),r._select.result);c=o.to("breadcrumbs",i.dependencies(),e)}else c=o.to("breadcrumbs",i.dependencies(),[r._select.structure,n.extractSelection(r)]);break;case"tuple":case"tuples":if(l){let e=o.from("midFlat").toFlat(i.dependencies(),r._select.result);c=o.to("tuples",i.dependencies(),e)}else c=o.to("tuples",i.dependencies(),[r._select.structure,n.extractSelection(r)]);break;case"file":case"files":let e,t;if(l){let t=o.from("midFlat").toFlat(i.dependencies(),r._select.result);e=o.to("breadcrumbs",i.dependencies(),t)}else e=o.to("breadcrumbs",i.dependencies,[r._select.structure,n.extractSelection(r)]);t=n.reduceTuples(i.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",i.dependencies(),[r._select.structure,n.extractSelection(r)]);break;default:if(l)c=o.from("midFlat").toFlat(i.dependencies(),r._select.result);else{let e=n.extractSelection(r);c=[u({data: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: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(p),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=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/dist/index.html DELETED
@@ -1,65 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
7
- <title>Using Dt-Toolbox in a browser</title>
8
- <script src="dt-toolbox.min.js"></script>
9
- <style>
10
- pre {
11
- padding : 10px;
12
- background-color: #eee;
13
- }
14
- </style>
15
- </head>
16
- <body>
17
- <h1>Using Dt-Toolbox in a browser</h1>
18
- <p>
19
- Dt-Toolbox is available as 'dtbox' global variable.
20
- Open source code and read it.
21
- </p>
22
- <h3>Example</h3>
23
- <p>Here is the sample data structure:</p>
24
- <pre>
25
- const user = [{
26
- profile: {
27
- name: 'Peter'
28
- , age : 43
29
- }
30
- }]</pre>
31
- <p>Simplify data and render a template with it.</p>
32
- <pre>
33
- dtbox
34
- .init ( user )
35
- .select ()
36
- .space('profile')
37
- .spread ( 'std', std => result = {...std} )
38
-
39
- hookNode.innerHTML = `${result.name} is ${result.age} years old.`
40
- </pre>
41
- <h3>Result</h3>
42
- <p id="render"></p>
43
- <script>
44
- const hookNode = document.getElementById ( 'render' );
45
-
46
- const user = [{
47
- profile: {
48
- name: 'Peter'
49
- , age : 43
50
- }
51
- }];
52
- let
53
- result
54
- , data = dtbox.init ( user )
55
- ;
56
- data
57
- .select ()
58
- .space ( 'profile' )
59
- .assemble ()
60
- .spread ( 'std', x => result = {...x})
61
-
62
- hookNode.innerHTML = `${result.name} is ${result.age} years old.`
63
- </script>
64
- </body>
65
- </html>
@@ -1,21 +0,0 @@
1
- function change ( mainData, checkData ) {
2
- // *** Compare values. Reduce to key/value pairs with different values.
3
- let
4
- result = {}
5
- , mainKeys = Object.keys ( mainData )
6
- ;
7
- mainKeys.forEach ( k => {
8
- let
9
- HAS_KEY = ( checkData.hasOwnProperty(k) )
10
- , EQUAL_VALUES = HAS_KEY && ( mainData[k] === checkData[k] )
11
- ;
12
- if ( !EQUAL_VALUES ) result[k] = checkData[k]
13
- })
14
- return result
15
- } // change func.
16
-
17
-
18
-
19
- module.exports = change
20
-
21
-
@@ -1,18 +0,0 @@
1
- function different ( mainData, checkData ) {
2
- // *** Key compare. Returns key/value pairs where key does not exist.
3
- let
4
- result = {}
5
- , checkKeys = Object.keys ( checkData )
6
- ;
7
- checkKeys.forEach ( k => {
8
- let HAS_KEY = mainData.hasOwnProperty(k);
9
- if ( !HAS_KEY ) result[k] = checkData[k]
10
- })
11
- return result
12
- } // different func.
13
-
14
-
15
-
16
- module.exports = different
17
-
18
-
@@ -1,21 +0,0 @@
1
- function identical ( mainData, checkData ) {
2
- // *** Compare values. Reduce data to identical key/value pairs.
3
- let
4
- result = {}
5
- , mainKeys = Object.keys ( mainData )
6
- ;
7
- mainKeys.forEach ( k => {
8
- let
9
- HAS_KEY = ( checkData.hasOwnProperty(k) )
10
- , EQUAL_VALUES = HAS_KEY && ( mainData[k] === checkData[k] )
11
- ;
12
- if ( EQUAL_VALUES ) result[k] = mainData[k]
13
- })
14
- return result
15
- } // identical func.
16
-
17
-
18
-
19
- module.exports = identical
20
-
21
-
@@ -1,16 +0,0 @@
1
- const
2
- identical = require ( './identical' )
3
- , change = require ( './change' )
4
- , same = require ( './same' )
5
- , different = require ( './different' )
6
- , missing = require ( './missing' )
7
- ;
8
-
9
-
10
- module.exports = {
11
- identical
12
- , change
13
- , same
14
- , different
15
- , missing
16
- }
@@ -1,18 +0,0 @@
1
- function missing ( mainData, checkData ) {
2
- // *** Key compare. Returns key/value pairs that are missing
3
- let
4
- result = {}
5
- , mainKeys = Object.keys ( mainData )
6
- ;
7
- mainKeys.forEach ( k => {
8
- let HAS_KEY = checkData.hasOwnProperty(k);
9
- if ( !HAS_KEY ) result[k] = mainData[k]
10
- })
11
- return result
12
- } // missing func.
13
-
14
-
15
-
16
- module.exports = missing
17
-
18
-
@@ -1,18 +0,0 @@
1
- function same ( mainData, checkData ) {
2
- // *** Compare keys. Returns key/value pairs where keys are the same.
3
- let
4
- result = {}
5
- , mainKeys = Object.keys ( mainData )
6
- ;
7
- mainKeys.forEach ( k => {
8
- let HAS_KEY = checkData.hasOwnProperty(k);
9
- if ( HAS_KEY ) result[k] = checkData[k]
10
- })
11
- return result
12
- } // same func.
13
-
14
-
15
-
16
- module.exports = same
17
-
18
-
@@ -1,148 +0,0 @@
1
- 'use strict'
2
-
3
-
4
-
5
- /**
6
- * File data structure example:
7
- * [
8
- 'rootFolder/profile/name/Peter',
9
- 'rootFolder/profile/age/42',
10
- 'rootFolder/profile/gender/male',
11
- 'rootFolder/logs/log.txt',
12
- 'rootFolder/friends/Dimitar',
13
- 'rootFolder/friends/Stefan',
14
- 'rootFolder/friends/Ivan',
15
- 'rootFolder/friends/Grigor'
16
- ]
17
- *
18
- * Looks like breadcrumbs but last element is the value. Key and value together.
19
- *
20
- */
21
-
22
- function toFlat ( dependencies, rawValue ) {
23
- if ( Object.keys(rawValue).length === 0 ) {
24
- let
25
- structure = [ [ 'object', 0 ] ]
26
- , value = {}
27
- ;
28
- return [ structure, value ]
29
- }
30
- let
31
- { help } = dependencies
32
- , structure = []
33
- , value = {}
34
- , keyList = Object // Provides keys in order: from larger to shorter
35
- .keys ( rawValue )
36
- .map ( x => x.split('/') )
37
- .sort ( (a,b) => b.length - a.length )
38
- , tProps = {} // { objectLocation<string> : childObjectNames<set> }
39
- , structRaw = [] // objectLocation strings
40
- , propDone = []
41
- ;
42
-
43
- keyList.forEach ( keyArr => { // Setup our temp structures: tProps and structRaw
44
- keyArr.forEach ( (k,i) => {
45
- let parent = keyArr.slice( 0, i ).join ( '/' );
46
- if ( !parent ) return
47
- if ( !tProps[parent] ) {
48
- tProps[parent] = new Set()
49
- structRaw.push ( parent )
50
- }
51
- tProps[parent].add ( k )
52
- })
53
- })
54
- structRaw.forEach ( (el,i) => { // Build the structure rows
55
- let elChildren = false;
56
- if ( !structure[i] ) structure[i] = [ 'object', i ]
57
- if ( propDone[i] ) el = propDone[i]
58
- elChildren = Array.from ( tProps[el] )
59
- if ( el === 'root' ) {
60
- const mainType = help.hasNumbers ( elChildren ) ? 'array' : 'object';
61
- structure[i][0] = mainType
62
- }
63
- elChildren.forEach ( name => { // Setup connections between object
64
- let test = tProps[`${el}/${name}`];
65
- if ( !test ) return
66
- let
67
- childProps = Array.from (test)
68
- , type = help.hasNumbers ( childProps ) ? 'array' : 'object'
69
- , lastIndex = structure.length
70
- ;
71
- propDone[lastIndex] = `${el}/${name}`
72
- structure.push ([type, lastIndex])
73
- structure[i].push ( [lastIndex, name])
74
- })
75
- })
76
-
77
- keyList.forEach ( k => { // Create flat keys and write values
78
- let
79
- name = k.pop()
80
- , keySearch = k.join ( '/' )
81
- , objNumber = null
82
- , theKey = ''
83
- ;
84
- objNumber = propDone.indexOf ( keySearch )
85
-
86
- if ( objNumber < 0 ) objNumber = structRaw.indexOf(keySearch)
87
- theKey = `root/${objNumber}/${name}`
88
- value[theKey] = rawValue[`${keySearch}/${name}`]
89
- })
90
- return [ structure, value ]
91
- } // toFlat func.
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
- function toType ( dependencies, [ structure, value ]) {
103
- let
104
- keys = Object.keys ( value )
105
- , breadcrumbObject = {}
106
- , flatNames = {}
107
- ;
108
- structure.forEach ( ([type, id, ...items]) => { // Create data-structures
109
- items.forEach ( item => {
110
- let
111
- [num,name] = item
112
- , breadcrumbName = name
113
- , checkID = id
114
- ;
115
- for (let i=id; i >= 0; i-- ) {
116
- let [type,x,...items] = structure[i];
117
- items.forEach ( ([n,name]) => {
118
- if ( n === checkID ) {
119
- breadcrumbName = `${name}/${breadcrumbName}`
120
- checkID = x
121
- }
122
- })
123
- }
124
- flatNames[num] = breadcrumbName
125
- })
126
- })
127
- keys.forEach ( key => { // Conect data-structures
128
- let
129
- keyArray = key.split('/')
130
- , breadcrumbKey = keyArray[1]
131
- , breadcrumb = flatNames [ breadcrumbKey ]
132
- ;
133
- if ( breadcrumbKey == '0' ) {
134
- keyArray = keyArray.filter ( (segment,i) => i!=1 )
135
- }
136
- else {
137
- keyArray[1] = breadcrumb
138
- }
139
- breadcrumbObject [ keyArray.join('/') ] = value [key]
140
- })
141
- return breadcrumbObject
142
- } // toType func.
143
-
144
-
145
-
146
- module.exports = { toFlat, toType }
147
-
148
-
@@ -1,12 +0,0 @@
1
- function extractSelection ( data ) {
2
- let selectionKeys = data._select.value;
3
- return selectionKeys.reduce ( (res,key) => {
4
- res[key] = data.value[key]
5
- return res
6
- },{})
7
- } // extractSelection func.
8
-
9
-
10
- module.exports = extractSelection
11
-
12
-
@@ -1,25 +0,0 @@
1
- function filterObject ( id, keySelection, value={} ) {
2
- // *** Filter object with by id
3
- let
4
- local = {} // Filtered object
5
- , localSelection = [] // List of filtered object props
6
- ;
7
- keySelection.forEach ( key => {
8
- let
9
- splited = key.split ( '/' )
10
- , num = splited [ 1 ]
11
- , prop = splited.pop()
12
- ;
13
- if ( num == id ) {
14
- local[prop] = value[key]
15
- localSelection.push ( key )
16
- }
17
- })
18
- return [ local, localSelection ]
19
- } // filterObject
20
-
21
-
22
-
23
- module.exports = filterObject
24
-
25
-
@@ -1,14 +0,0 @@
1
- function hasNumbers ( arr ) {
2
- return !arr.every ( el => {
3
- const r = Number(el);
4
- if ( r === 0 ) return false
5
- if ( r ) return false
6
- return true
7
- })
8
- } // hasNumbers func.
9
-
10
-
11
-
12
- module.exports = hasNumbers
13
-
14
-
package/src/help/index.js DELETED
@@ -1,37 +0,0 @@
1
- 'use strict'
2
-
3
- const
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' )
15
- ;
16
-
17
- const findType = d => ( d instanceof Array ) ? 'array' : 'object'
18
-
19
-
20
-
21
- module.exports = {
22
- findType // Is it array or object. Returns strings: 'array' | 'object'
23
- , hasNumbers // Check if array contain number members. Returns boolean
24
- , isItPrimitive // Returns boolean
25
- , sanitizeFlatKeys // Sanitize 'file' format keys
26
- , objectsByLevel // Object IDs organized by levels
27
- , filterObject // Find object and object props in a value
28
- , toBreadcrumbKeys // Breadcrumbs keys
29
- , updateSelection // Updates selection list. Checks if element is already selected
30
- , zipObject // Conect two arrays in a single object
31
- , extractSelection // Creates 'value' object with selected keys only
32
- , reduceTuples
33
- , tuplesToBradcrumbs
34
- }
35
-
36
-
37
-
@@ -1,10 +0,0 @@
1
- function isItPrimitive (d) {
2
- if ( typeof d == 'function' ) return true // it's not really primitive but we want function to be treated as primitive
3
- return ( typeof d != 'object' ) ? true : false
4
- } // isItPrimitive func.
5
-
6
-
7
-
8
- module.exports = isItPrimitive
9
-
10
-
@@ -1,16 +0,0 @@
1
- function objectsByLevel ( structure ) {
2
- return structure.reduce ( (res,row) => {
3
- let level = [];
4
- row.forEach ( (item,i) => {
5
- if ( i > 1 ) level.push ( item[0] )
6
- })
7
- if ( level.length > 0 ) res.push ( level )
8
- return res
9
- },[[0]] );
10
- } // objectsByLevel func.
11
-
12
-
13
-
14
- module.exports = objectsByLevel
15
-
16
-
@@ -1,29 +0,0 @@
1
- 'use strict'
2
-
3
- function reduceTuples ( dependencies, breadcrumbData ) {
4
- // *** Converts breadcrumbs to array of tuples
5
- const
6
- { help, walk } = dependencies
7
- , result = []
8
- ;
9
- walk ({
10
- data : breadcrumbData,
11
- keyCallback : ({ value:v, key:k }) => {
12
- let
13
- arr = k.substr(5).split('/')
14
- , ln = arr.length
15
- , lastEl = arr[ln-1]
16
- ;
17
- if ( help.hasNumbers([lastEl]) ) arr.pop ()
18
- result.push ( [ arr.join('/'), v])
19
- return v
20
- }
21
- })
22
- return result
23
- } // reduceTuples func.
24
-
25
-
26
-
27
- module.exports = reduceTuples
28
-
29
-