dt-toolbox 4.0.9 → 5.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.
- package/Changelog.md +3 -0
- package/README.md +5 -12
- package/package.json +9 -14
- package/src/compareMethod/change.js +1 -1
- package/src/compareMethod/different.js +1 -1
- package/src/compareMethod/identical.js +1 -1
- package/src/compareMethod/index.js +6 -9
- package/src/compareMethod/missing.js +1 -1
- package/src/compareMethod/same.js +1 -1
- package/src/convertors/breadcrumbs.js +1 -1
- package/src/convertors/index.js +4 -6
- package/src/convertors/midflat.js +1 -1
- package/src/convertors/standard.js +1 -1
- package/src/help/extractSelection.js +1 -1
- package/src/help/filterObject.js +1 -1
- package/src/help/hasNumbers.js +1 -1
- package/src/help/index.js +12 -14
- package/src/help/isItPrimitive.js +1 -1
- package/src/help/objectsByLevel.js +1 -1
- package/src/help/reduceTuples.js +1 -1
- package/src/help/sanitizeFlatKeys.js +1 -1
- package/src/help/toBreadcrumbsKeys.js +1 -1
- package/src/help/tuplesToBreadcrumbs.js +1 -1
- package/src/help/updateSelection.js +1 -3
- package/src/help/zipObject.js +1 -1
- package/src/lib/assemble.js +1 -1
- package/src/lib/attach.js +3 -3
- package/src/lib/block.js +1 -1
- package/src/lib/combine.js +1 -1
- package/src/lib/deep.js +1 -1
- package/src/lib/find.js +1 -1
- package/src/lib/folder.js +1 -1
- package/src/lib/index.js +12 -14
- package/src/lib/modify.js +1 -1
- package/src/lib/parent.js +1 -1
- package/src/lib/purify.js +1 -3
- package/src/lib/transform.js +1 -1
- package/src/main.js +12 -13
- package/src/modifiers/add.js +1 -1
- package/src/modifiers/append.js +1 -1
- package/src/modifiers/combineShallow.js +6 -6
- package/src/modifiers/flatten.js +5 -6
- package/src/modifiers/index.js +14 -14
- package/src/modifiers/insert.js +1 -1
- package/src/modifiers/keyPrefix.js +1 -1
- package/src/modifiers/mix.js +3 -3
- package/src/modifiers/overwrite.js +1 -1
- package/src/modifiers/prepend.js +1 -1
- package/src/modifiers/reverse.js +1 -1
- package/src/modifiers/update.js +1 -1
- package/dist/dt-toolbox.min.js +0 -1
- package/dist/index.html +0 -65
- package/webpack.config.js +0 -28
package/Changelog.md
CHANGED
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
# DT Toolbox
|
|
1
|
+
# DT Toolbox
|
|
2
|
+
*Note: Document is valid for v.5.x.x, v.4.x.x and v.3.x.x*
|
|
2
3
|
|
|
3
4
|
- [Documentation for old v.2.x.x is here](https://github.com/PeterNaydenov/dt-toolbox/blob/master/README_v.2.x.x.md)
|
|
4
5
|
|
|
@@ -22,17 +23,9 @@ npm install dt-toolbox --save
|
|
|
22
23
|
|
|
23
24
|
Once it has been installed, it can be used by writing this line of JavaScript:
|
|
24
25
|
```js
|
|
25
|
-
|
|
26
|
+
import dtbox from 'dt-toolbox'
|
|
26
27
|
```
|
|
27
28
|
|
|
28
|
-
**Installation for browsers**: Grab file 'dist/dt-toolbox.min.js' and put it inside the project. Request the file from HTML page. Global variable 'dtbox' is available for use.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Note:
|
|
32
|
-
Library is using 'generator functions'. If support for old browsers
|
|
33
|
-
is required, add a polyfill for 'generators' or get back to version 2.x.x of
|
|
34
|
-
the library.
|
|
35
|
-
|
|
36
29
|
|
|
37
30
|
|
|
38
31
|
## APIs Reference
|
|
@@ -41,8 +34,8 @@ Dtbox API methods with a short description:
|
|
|
41
34
|
```js
|
|
42
35
|
const API = {
|
|
43
36
|
// DT I/O Operations
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
init : 'Convert any object to flat data-type'
|
|
38
|
+
, load : 'Load a flat data-type'
|
|
46
39
|
, loadFast : 'Important! Method is depricated. Use load instead'
|
|
47
40
|
|
|
48
41
|
, preprocess : 'Apply custom modifier to initial data.
|
package/package.json
CHANGED
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dt-toolbox",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Data manipulation tool",
|
|
5
5
|
"main": "src/main.js",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"scripts": {
|
|
7
8
|
"test": "mocha test",
|
|
8
|
-
"
|
|
9
|
-
"cover": "nyc mocha test"
|
|
9
|
+
"cover": "c8 mocha test"
|
|
10
10
|
},
|
|
11
11
|
"directories": {
|
|
12
12
|
"test": "test"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@peter.naydenov/walk": "
|
|
15
|
+
"@peter.naydenov/walk": "4.0.0"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@babel/core": "7.20.2",
|
|
19
|
-
"@babel/preset-env": "7.20.2",
|
|
20
|
-
"babel-loader": "9.1.0",
|
|
21
18
|
"chai": "4.3.7",
|
|
22
19
|
"mocha": "10.1.0",
|
|
23
|
-
"
|
|
24
|
-
"webpack": "^5.75.0",
|
|
25
|
-
"webpack-cli": "4.10.0"
|
|
20
|
+
"c8": "^7.12.0"
|
|
26
21
|
},
|
|
27
22
|
"repository": {
|
|
28
23
|
"type": "git",
|
|
@@ -36,13 +31,11 @@
|
|
|
36
31
|
"structure",
|
|
37
32
|
"dt"
|
|
38
33
|
],
|
|
39
|
-
"author": "Peter Naydenov",
|
|
40
|
-
"license": "MIT",
|
|
41
34
|
"bugs": {
|
|
42
35
|
"url": "https://github.com/PeterNaydenov/dt-toolbox/issues"
|
|
43
36
|
},
|
|
44
37
|
"homepage": "https://github.com/PeterNaydenov/dt-toolbox#readme",
|
|
45
|
-
"
|
|
38
|
+
"c8": {
|
|
46
39
|
"include": [
|
|
47
40
|
"src/**/*.js"
|
|
48
41
|
],
|
|
@@ -56,5 +49,7 @@
|
|
|
56
49
|
"text-summary"
|
|
57
50
|
]
|
|
58
51
|
},
|
|
59
|
-
"browserslist": "> 2%, not dead"
|
|
52
|
+
"browserslist": "> 2%, not dead",
|
|
53
|
+
"author": "Peter Naydenov",
|
|
54
|
+
"license": "MIT"
|
|
60
55
|
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
, missing = require ( './missing' )
|
|
7
|
-
;
|
|
1
|
+
import identical from './identical.js'
|
|
2
|
+
import change from './change.js'
|
|
3
|
+
import same from './same.js'
|
|
4
|
+
import different from './different.js'
|
|
5
|
+
import missing from './missing.js'
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
module.exports = {
|
|
7
|
+
export default {
|
|
11
8
|
identical
|
|
12
9
|
, change
|
|
13
10
|
, same
|
package/src/convertors/index.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
, midFlat = require ( './midflat' )
|
|
7
|
-
;
|
|
3
|
+
import breadcrumbs from './breadcrumbs.js'
|
|
4
|
+
import std from './standard.js'
|
|
5
|
+
import midFlat from './midflat.js';
|
|
8
6
|
|
|
9
7
|
|
|
10
8
|
|
|
@@ -82,7 +80,7 @@ function to ( type, dependencies, inData ) { // convert from flat to 'data-typ
|
|
|
82
80
|
|
|
83
81
|
|
|
84
82
|
|
|
85
|
-
|
|
83
|
+
export default { from, to }
|
|
86
84
|
|
|
87
85
|
|
|
88
86
|
|
package/src/help/filterObject.js
CHANGED
package/src/help/hasNumbers.js
CHANGED
package/src/help/index.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
, tuplesToBradcrumbs = require ( './tuplesToBreadcrumbs' )
|
|
15
|
-
;
|
|
3
|
+
import isItPrimitive from './isItPrimitive.js'
|
|
4
|
+
import hasNumbers from './hasNumbers.js'
|
|
5
|
+
import sanitizeFlatKeys from './sanitizeFlatKeys.js'
|
|
6
|
+
import objectsByLevel from './objectsByLevel.js'
|
|
7
|
+
import filterObject from './filterObject.js'
|
|
8
|
+
import toBreadcrumbKeys from './toBreadcrumbsKeys.js'
|
|
9
|
+
import updateSelection from './updateSelection.js'
|
|
10
|
+
import zipObject from './zipObject.js'
|
|
11
|
+
import extractSelection from './extractSelection.js'
|
|
12
|
+
import reduceTuples from './reduceTuples.js'
|
|
13
|
+
import tuplesToBradcrumbs from './tuplesToBreadcrumbs.js'
|
|
16
14
|
|
|
17
15
|
const findType = d => ( d instanceof Array ) ? 'array' : 'object'
|
|
18
16
|
|
|
19
17
|
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
export default {
|
|
22
20
|
findType // Is it array or object. Returns strings: 'array' | 'object'
|
|
23
21
|
, hasNumbers // Check if array contain number members. Returns boolean
|
|
24
22
|
, isItPrimitive // Returns boolean
|
package/src/help/reduceTuples.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
const update = require("../modifiers/update")
|
|
2
|
-
|
|
3
1
|
function updateSelection ( [...selection], updates ) {
|
|
4
2
|
updates.forEach ( key => {
|
|
5
3
|
if ( !selection.includes(key) ) selection.push ( key )
|
|
@@ -9,6 +7,6 @@ function updateSelection ( [...selection], updates ) {
|
|
|
9
7
|
|
|
10
8
|
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
export default updateSelection
|
|
13
11
|
|
|
14
12
|
|
package/src/help/zipObject.js
CHANGED
package/src/lib/assemble.js
CHANGED
package/src/lib/attach.js
CHANGED
|
@@ -5,8 +5,8 @@ function attach ( dependencies, me ) {
|
|
|
5
5
|
, { result } = me._select
|
|
6
6
|
;
|
|
7
7
|
if ( !result ) return me
|
|
8
|
-
for ( k in result ) {
|
|
9
|
-
newKey = k.replace ( 'root', location )
|
|
8
|
+
for ( let k in result ) {
|
|
9
|
+
const newKey = k.replace ( 'root', location )
|
|
10
10
|
if ( mainData[newKey] ) mainData[newKey] = { ...mainData[newKey],...result[k] } // Merge two objects
|
|
11
11
|
else mainData[newKey] = { ...result[k]}
|
|
12
12
|
} // for k
|
|
@@ -15,6 +15,6 @@ function attach ( dependencies, me ) {
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
export default attach
|
|
19
19
|
|
|
20
20
|
|
package/src/lib/block.js
CHANGED
package/src/lib/combine.js
CHANGED
package/src/lib/deep.js
CHANGED
package/src/lib/find.js
CHANGED
package/src/lib/folder.js
CHANGED
package/src/lib/index.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
, purify = require ( './purify' )
|
|
15
|
-
;
|
|
3
|
+
import find from './find.js'
|
|
4
|
+
import parent from './parent.js'
|
|
5
|
+
import block from './block.js'
|
|
6
|
+
import deep from './deep.js'
|
|
7
|
+
import folder from './folder.js'
|
|
8
|
+
import modify from './modify.js'
|
|
9
|
+
import transform from './transform.js'
|
|
10
|
+
import attach from './attach.js'
|
|
11
|
+
import combine from './combine.js'
|
|
12
|
+
import assemble from './assemble.js'
|
|
13
|
+
import purify from './purify.js'
|
|
16
14
|
|
|
17
15
|
|
|
18
16
|
|
|
@@ -53,6 +51,6 @@ const dtlib = {
|
|
|
53
51
|
|
|
54
52
|
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
export default dtlib
|
|
57
55
|
|
|
58
56
|
|
package/src/lib/modify.js
CHANGED
package/src/lib/parent.js
CHANGED
package/src/lib/purify.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
const update = require("../modifiers/update");
|
|
2
|
-
|
|
3
1
|
function purify ( dependencies, me ) {
|
|
4
2
|
const
|
|
5
3
|
{ structure, value } = me._select
|
|
@@ -34,6 +32,6 @@ function purify ( dependencies, me ) {
|
|
|
34
32
|
|
|
35
33
|
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
export default purify
|
|
38
36
|
|
|
39
37
|
|
package/src/lib/transform.js
CHANGED
package/src/main.js
CHANGED
|
@@ -25,25 +25,24 @@
|
|
|
25
25
|
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
, walk = require ( '@peter.naydenov/walk' )
|
|
28
|
+
|
|
29
|
+
import walk from '@peter.naydenov/walk'
|
|
30
|
+
|
|
31
|
+
import dtlib from './lib/index.js'
|
|
32
|
+
import help from './help/index.js'
|
|
33
|
+
import modifier from './modifiers/index.js'
|
|
34
|
+
import convert from './convertors/index.js'
|
|
35
|
+
import compareMethod from './compareMethod/index.js'
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
const
|
|
38
|
+
INIT_DATA_TYPES = [
|
|
39
39
|
'std', 'standard'
|
|
40
40
|
, 'tuple', 'tuples'
|
|
41
41
|
, 'breadcrumb', 'breadcrumbs'
|
|
42
42
|
, 'file', 'files'
|
|
43
43
|
, 'midFlat'
|
|
44
44
|
, 'shortFlat'
|
|
45
|
-
]
|
|
46
|
-
;
|
|
45
|
+
];
|
|
47
46
|
|
|
48
47
|
|
|
49
48
|
|
|
@@ -718,6 +717,6 @@ const API = {
|
|
|
718
717
|
|
|
719
718
|
|
|
720
719
|
|
|
721
|
-
|
|
720
|
+
export default API
|
|
722
721
|
|
|
723
722
|
|
package/src/modifiers/add.js
CHANGED
package/src/modifiers/append.js
CHANGED
|
@@ -7,7 +7,7 @@ function combineShallow ( mainData, update ) {
|
|
|
7
7
|
, extraContent = {}
|
|
8
8
|
;
|
|
9
9
|
|
|
10
|
-
for ( key of updateKeys ) {
|
|
10
|
+
for ( let key of updateKeys ) {
|
|
11
11
|
if ( !allKeys.includes(key) ) allKeys.push ( key )
|
|
12
12
|
}
|
|
13
13
|
|
|
@@ -40,7 +40,7 @@ function combineShallow ( mainData, update ) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
for ( k in updateObject ) {
|
|
43
|
+
for ( let k in updateObject ) {
|
|
44
44
|
if ( mainData[`root/${k}`] && updateObject[k] ) {
|
|
45
45
|
res.add ( k )
|
|
46
46
|
if ( !extraContent[k] ) extraContent[k] = []
|
|
@@ -59,7 +59,7 @@ function combineShallow ( mainData, update ) {
|
|
|
59
59
|
mainKeys.forEach ( key => { // Insert mainKeys but ignore duplicates
|
|
60
60
|
let obj = mainData[key];
|
|
61
61
|
result[key] = {}
|
|
62
|
-
for ( k in obj ) {
|
|
62
|
+
for ( let k in obj ) {
|
|
63
63
|
if ( !duplicateNames.has(k) ) result[key][k] = obj[k]
|
|
64
64
|
}
|
|
65
65
|
}) // forEach mainKeys
|
|
@@ -88,7 +88,7 @@ function combineShallow ( mainData, update ) {
|
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
for ( k in extraContent ) {
|
|
91
|
+
for ( let k in extraContent ) {
|
|
92
92
|
const resKey = `root/${k}`;
|
|
93
93
|
|
|
94
94
|
result[resKey] = extraContent[k].reduce ( (res,item,i) => {
|
|
@@ -105,7 +105,7 @@ function combineShallow ( mainData, update ) {
|
|
|
105
105
|
|
|
106
106
|
function _findDigitKeys ( obj ) {
|
|
107
107
|
let count = 0;
|
|
108
|
-
for ( k in obj ) {
|
|
108
|
+
for ( let k in obj ) {
|
|
109
109
|
let isDigit = isNaN ( parseInt(k)) ? false : true;
|
|
110
110
|
if ( isDigit ) count++
|
|
111
111
|
} // for obj
|
|
@@ -114,6 +114,6 @@ function _findDigitKeys ( obj ) {
|
|
|
114
114
|
|
|
115
115
|
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
export default combineShallow
|
|
118
118
|
|
|
119
119
|
|
package/src/modifiers/flatten.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
;
|
|
1
|
+
import combineShallow from './combineShallow.js'
|
|
2
|
+
const separator = ';';
|
|
3
|
+
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
function flatten ( mainData ) {
|
|
@@ -23,7 +22,7 @@ function flatten ( mainData ) {
|
|
|
23
22
|
key = k.split ('/')[1]
|
|
24
23
|
, val = ''
|
|
25
24
|
;
|
|
26
|
-
for ( prop in flatter[k]) {
|
|
25
|
+
for ( let prop in flatter[k]) {
|
|
27
26
|
if ( val ) val += separator
|
|
28
27
|
val += flatter[k][prop]
|
|
29
28
|
}
|
|
@@ -34,6 +33,6 @@ function flatten ( mainData ) {
|
|
|
34
33
|
|
|
35
34
|
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
export default flatten
|
|
38
37
|
|
|
39
38
|
|
package/src/modifiers/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// NOTE: modifiers require a midFlat data-type for mainData and update
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
import overwrite from './overwrite.js'
|
|
3
|
+
import update from './update.js'
|
|
4
|
+
import add from './add.js'
|
|
5
|
+
import insert from './insert.js'
|
|
6
|
+
import append from './append.js'
|
|
7
|
+
import prepend from './prepend.js'
|
|
8
|
+
import keyPrefix from './keyPrefix.js'
|
|
9
|
+
import flatten from './flatten.js'
|
|
10
|
+
import combineShallow from './combineShallow.js'
|
|
11
|
+
import mix from './mix.js'
|
|
12
|
+
import reverse from './reverse.js'
|
|
13
|
+
|
|
14
|
+
|
|
15
15
|
|
|
16
16
|
const modifier = {
|
|
17
17
|
add
|
|
@@ -29,6 +29,6 @@ const modifier = {
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
export default modifier
|
|
33
33
|
|
|
34
34
|
|
package/src/modifiers/insert.js
CHANGED
package/src/modifiers/mix.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import combineShallow from './combineShallow.js'
|
|
2
|
+
import combine from '../lib/combine.js'
|
|
3
3
|
|
|
4
4
|
function mix ( mainData, update ) {
|
|
5
5
|
const host = update.pop ();
|
|
@@ -20,6 +20,6 @@ function mix ( mainData, update ) {
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
export default mix
|
|
24
24
|
|
|
25
25
|
|
package/src/modifiers/prepend.js
CHANGED
package/src/modifiers/reverse.js
CHANGED
package/src/modifiers/update.js
CHANGED
package/dist/dt-toolbox.min.js
DELETED
|
@@ -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>
|
package/webpack.config.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const webpack = require ( 'webpack' );
|
|
4
|
-
|
|
5
|
-
module.exports = {
|
|
6
|
-
entry: "./src/main.js"
|
|
7
|
-
, mode: 'production'
|
|
8
|
-
, output: {
|
|
9
|
-
filename: "dt-toolbox.min.js"
|
|
10
|
-
, path: __dirname + "/dist"
|
|
11
|
-
, library: 'dtbox'
|
|
12
|
-
, libraryTarget: "var"
|
|
13
|
-
, umdNamedDefine : true
|
|
14
|
-
}
|
|
15
|
-
, optimization: {}
|
|
16
|
-
, module: {
|
|
17
|
-
rules: [
|
|
18
|
-
{
|
|
19
|
-
test: /\.js$/
|
|
20
|
-
, exclude: /node_modules/
|
|
21
|
-
, use : {
|
|
22
|
-
loader: 'babel-loader'
|
|
23
|
-
, options : { presets: ['@babel/preset-env']}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
}
|