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.
Files changed (53) hide show
  1. package/Changelog.md +3 -0
  2. package/README.md +5 -12
  3. package/package.json +9 -14
  4. package/src/compareMethod/change.js +1 -1
  5. package/src/compareMethod/different.js +1 -1
  6. package/src/compareMethod/identical.js +1 -1
  7. package/src/compareMethod/index.js +6 -9
  8. package/src/compareMethod/missing.js +1 -1
  9. package/src/compareMethod/same.js +1 -1
  10. package/src/convertors/breadcrumbs.js +1 -1
  11. package/src/convertors/index.js +4 -6
  12. package/src/convertors/midflat.js +1 -1
  13. package/src/convertors/standard.js +1 -1
  14. package/src/help/extractSelection.js +1 -1
  15. package/src/help/filterObject.js +1 -1
  16. package/src/help/hasNumbers.js +1 -1
  17. package/src/help/index.js +12 -14
  18. package/src/help/isItPrimitive.js +1 -1
  19. package/src/help/objectsByLevel.js +1 -1
  20. package/src/help/reduceTuples.js +1 -1
  21. package/src/help/sanitizeFlatKeys.js +1 -1
  22. package/src/help/toBreadcrumbsKeys.js +1 -1
  23. package/src/help/tuplesToBreadcrumbs.js +1 -1
  24. package/src/help/updateSelection.js +1 -3
  25. package/src/help/zipObject.js +1 -1
  26. package/src/lib/assemble.js +1 -1
  27. package/src/lib/attach.js +3 -3
  28. package/src/lib/block.js +1 -1
  29. package/src/lib/combine.js +1 -1
  30. package/src/lib/deep.js +1 -1
  31. package/src/lib/find.js +1 -1
  32. package/src/lib/folder.js +1 -1
  33. package/src/lib/index.js +12 -14
  34. package/src/lib/modify.js +1 -1
  35. package/src/lib/parent.js +1 -1
  36. package/src/lib/purify.js +1 -3
  37. package/src/lib/transform.js +1 -1
  38. package/src/main.js +12 -13
  39. package/src/modifiers/add.js +1 -1
  40. package/src/modifiers/append.js +1 -1
  41. package/src/modifiers/combineShallow.js +6 -6
  42. package/src/modifiers/flatten.js +5 -6
  43. package/src/modifiers/index.js +14 -14
  44. package/src/modifiers/insert.js +1 -1
  45. package/src/modifiers/keyPrefix.js +1 -1
  46. package/src/modifiers/mix.js +3 -3
  47. package/src/modifiers/overwrite.js +1 -1
  48. package/src/modifiers/prepend.js +1 -1
  49. package/src/modifiers/reverse.js +1 -1
  50. package/src/modifiers/update.js +1 -1
  51. package/dist/dt-toolbox.min.js +0 -1
  52. package/dist/index.html +0 -65
  53. package/webpack.config.js +0 -28
package/Changelog.md CHANGED
@@ -1,6 +1,9 @@
1
1
  ## Release History
2
2
 
3
3
 
4
+ ### 5.0.0 ( 2022-11-24)
5
+ - [x] Converting library to ES module;
6
+
4
7
 
5
8
  ### 4.0.9 ( 2022-11-14)
6
9
  - [x] Fix: Corner case with structure building;
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # DT Toolbox v.4.x.x and v.3.x.x
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
- let dtbox = require ( 'dt-toolbox')
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
- init : 'Convert any object to flat data-type'
45
- , load : 'Load a flat data-type'
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": "4.0.9",
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
- "build": "webpack",
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": "3.0.0"
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
- "nyc": "15.1.0",
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
- "nyc": {
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
  }
@@ -16,6 +16,6 @@ function change ( mainData, checkData ) {
16
16
 
17
17
 
18
18
 
19
- module.exports = change
19
+ export default change
20
20
 
21
21
 
@@ -13,6 +13,6 @@ function different ( mainData, checkData ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = different
16
+ export default different
17
17
 
18
18
 
@@ -16,6 +16,6 @@ function identical ( mainData, checkData ) {
16
16
 
17
17
 
18
18
 
19
- module.exports = identical
19
+ export default identical
20
20
 
21
21
 
@@ -1,13 +1,10 @@
1
- const
2
- identical = require ( './identical' )
3
- , change = require ( './change' )
4
- , same = require ( './same' )
5
- , different = require ( './different' )
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
@@ -13,6 +13,6 @@ function missing ( mainData, checkData ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = missing
16
+ export default missing
17
17
 
18
18
 
@@ -13,6 +13,6 @@ function same ( mainData, checkData ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = same
16
+ export default same
17
17
 
18
18
 
@@ -143,6 +143,6 @@ function toType ( dependencies, [ structure, value ]) {
143
143
 
144
144
 
145
145
 
146
- module.exports = { toFlat, toType }
146
+ export default { toFlat, toType }
147
147
 
148
148
 
@@ -1,10 +1,8 @@
1
1
  'use strict'
2
2
 
3
- const
4
- breadcrumbs = require ( './breadcrumbs' )
5
- , std = require ( './standard' )
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
- module.exports = { from, to }
83
+ export default { from, to }
86
84
 
87
85
 
88
86
 
@@ -147,6 +147,6 @@ function toType ( dependencies, [structure, value] ) { // Converts data to mid
147
147
 
148
148
 
149
149
 
150
- module.exports = { toFlat, toType }
150
+ export default { toFlat, toType }
151
151
 
152
152
 
@@ -113,6 +113,6 @@ function toType ( dependencies, [ structure, value ]) {
113
113
 
114
114
 
115
115
 
116
- module.exports = { toFlat, toType }
116
+ export default { toFlat, toType }
117
117
 
118
118
 
@@ -7,6 +7,6 @@ function extractSelection ( data ) {
7
7
  } // extractSelection func.
8
8
 
9
9
 
10
- module.exports = extractSelection
10
+ export default extractSelection
11
11
 
12
12
 
@@ -20,6 +20,6 @@ function filterObject ( id, keySelection, value={} ) {
20
20
 
21
21
 
22
22
 
23
- module.exports = filterObject
23
+ export default filterObject
24
24
 
25
25
 
@@ -9,6 +9,6 @@ function hasNumbers ( arr ) {
9
9
 
10
10
 
11
11
 
12
- module.exports = hasNumbers
12
+ export default hasNumbers
13
13
 
14
14
 
package/src/help/index.js CHANGED
@@ -1,24 +1,22 @@
1
1
  'use strict'
2
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
- ;
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
- module.exports = {
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
@@ -5,6 +5,6 @@ function isItPrimitive (d) {
5
5
 
6
6
 
7
7
 
8
- module.exports = isItPrimitive
8
+ export default isItPrimitive
9
9
 
10
10
 
@@ -11,6 +11,6 @@ function objectsByLevel ( structure ) {
11
11
 
12
12
 
13
13
 
14
- module.exports = objectsByLevel
14
+ export default objectsByLevel
15
15
 
16
16
 
@@ -24,6 +24,6 @@ function reduceTuples ( dependencies, breadcrumbData ) {
24
24
 
25
25
 
26
26
 
27
- module.exports = reduceTuples
27
+ export default reduceTuples
28
28
 
29
29
 
@@ -25,6 +25,6 @@ function sanitizeFlatKeys ( list ) { // fn(string[]) -> string[]
25
25
 
26
26
 
27
27
 
28
- module.exports = sanitizeFlatKeys
28
+ export default sanitizeFlatKeys
29
29
 
30
30
 
@@ -23,6 +23,6 @@ function toBreadcrumbKeys ( keys, structure ) { // (flatKey[], structure ) =>
23
23
 
24
24
 
25
25
 
26
- module.exports = toBreadcrumbKeys
26
+ export default toBreadcrumbKeys
27
27
 
28
28
 
@@ -20,6 +20,6 @@ function tuplesToBreadcrumbs ( dependencies, data ) {
20
20
 
21
21
 
22
22
 
23
- module.exports = tuplesToBreadcrumbs
23
+ export default tuplesToBreadcrumbs
24
24
 
25
25
 
@@ -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
- module.exports = updateSelection
10
+ export default updateSelection
13
11
 
14
12
 
@@ -19,6 +19,6 @@ function zipObject ( keys, values ) { // (string[], string[] ) -> object
19
19
 
20
20
 
21
21
 
22
- module.exports = zipObject
22
+ export default zipObject
23
23
 
24
24
 
@@ -40,6 +40,6 @@ function assemble ( dependencies, me ) {
40
40
 
41
41
 
42
42
 
43
- module.exports = assemble
43
+ export default assemble
44
44
 
45
45
 
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
- module.exports = attach
18
+ export default attach
19
19
 
20
20
 
package/src/lib/block.js CHANGED
@@ -28,6 +28,6 @@ function block ( dependencies, me ) {
28
28
 
29
29
 
30
30
 
31
- module.exports = block
31
+ export default block
32
32
 
33
33
 
@@ -33,6 +33,6 @@ function combine ( dependencies, main, addData ) {
33
33
 
34
34
 
35
35
 
36
- module.exports = combine
36
+ export default combine
37
37
 
38
38
 
package/src/lib/deep.js CHANGED
@@ -18,6 +18,6 @@ function deep ( dependencies, me ) {
18
18
 
19
19
 
20
20
 
21
- module.exports = deep
21
+ export default deep
22
22
 
23
23
 
package/src/lib/find.js CHANGED
@@ -31,6 +31,6 @@ function find ( dependencies, me ) {
31
31
 
32
32
 
33
33
 
34
- module.exports = find
34
+ export default find
35
35
 
36
36
 
package/src/lib/folder.js CHANGED
@@ -37,6 +37,6 @@ function folder ( dependencies, me ) {
37
37
 
38
38
 
39
39
 
40
- module.exports = folder
40
+ export default folder
41
41
 
42
42
 
package/src/lib/index.js CHANGED
@@ -1,18 +1,16 @@
1
1
  'use strict'
2
2
 
3
- const
4
- find = require ( './find' )
5
- , parent = require ( './parent' )
6
- , block = require ( './block' )
7
- , deep = require ( './deep' )
8
- , folder = require ( './folder' )
9
- , modify = require ( './modify' )
10
- , transform = require ( './transform' )
11
- , attach = require ( './attach' )
12
- , combine = require ( './combine' )
13
- , assemble = require ( './assemble' )
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
- module.exports = dtlib
54
+ export default dtlib
57
55
 
58
56
 
package/src/lib/modify.js CHANGED
@@ -17,6 +17,6 @@ function modify ( dependencies, main, addData ) {
17
17
 
18
18
 
19
19
 
20
- module.exports = modify
20
+ export default modify
21
21
 
22
22
 
package/src/lib/parent.js CHANGED
@@ -46,6 +46,6 @@ function parent ( dependencies, me ) {
46
46
 
47
47
 
48
48
 
49
- module.exports = parent
49
+ export default parent
50
50
 
51
51
 
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
- module.exports = purify
35
+ export default purify
38
36
 
39
37
 
@@ -50,6 +50,6 @@ function transform ( dependencies, [structure, value] ) {
50
50
 
51
51
 
52
52
 
53
- module.exports = transform
53
+ export default transform
54
54
 
55
55
 
package/src/main.js CHANGED
@@ -25,25 +25,24 @@
25
25
 
26
26
  */
27
27
 
28
-
29
-
30
- const
31
- dtlib = require ( './lib/index' )
32
- , help = require ( './help/index' )
33
- , modifier = require ( './modifiers/index' )
34
- , convert = require ( './convertors/index' )
35
- , compareMethod = require ( './compareMethod/index' )
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
- , INIT_DATA_TYPES = [
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
- module.exports = API
720
+ export default API
722
721
 
723
722
 
@@ -13,6 +13,6 @@ function add ( mainData, update ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = add
16
+ export default add
17
17
 
18
18
 
@@ -13,6 +13,6 @@ function append ( mainData, update ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = append
16
+ export default append
17
17
 
18
18
 
@@ -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
- module.exports = combineShallow
117
+ export default combineShallow
118
118
 
119
119
 
@@ -1,7 +1,6 @@
1
- const
2
- combineShallow = require ('./combineShallow')
3
- , separator = ';'
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
- module.exports = flatten
36
+ export default flatten
38
37
 
39
38
 
@@ -1,17 +1,17 @@
1
1
  // NOTE: modifiers require a midFlat data-type for mainData and update
2
- const
3
- overwrite = require ( './overwrite' )
4
- , update = require ( './update' )
5
- , add = require ( './add' )
6
- , insert = require ( './insert' )
7
- , append = require ( './append' )
8
- , prepend = require ( './prepend' )
9
- , keyPrefix = require ( './keyPrefix' )
10
- , flatten = require ( './flatten' )
11
- , combineShallow = require ( './combineShallow' )
12
- , mix = require ( './mix' )
13
- , reverse = require ( './reverse' )
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
- module.exports = modifier
32
+ export default modifier
33
33
 
34
34
 
@@ -16,6 +16,6 @@ function insert ( mainData, update ) {
16
16
 
17
17
 
18
18
 
19
- module.exports = insert
19
+ export default insert
20
20
 
21
21
 
@@ -22,6 +22,6 @@ function keyPrefix ( mainData, update ) {
22
22
 
23
23
 
24
24
 
25
- module.exports = keyPrefix
25
+ export default keyPrefix
26
26
 
27
27
 
@@ -1,5 +1,5 @@
1
- const combine = require('../lib/combine');
2
- const combineShallow = require ( './combineShallow' );
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
- module.exports = mix
23
+ export default mix
24
24
 
25
25
 
@@ -13,6 +13,6 @@ function overwrite ( mainData, update ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = overwrite
16
+ export default overwrite
17
17
 
18
18
 
@@ -14,6 +14,6 @@ function prepend ( mainData, update ) {
14
14
 
15
15
 
16
16
 
17
- module.exports = prepend
17
+ export default prepend
18
18
 
19
19
 
@@ -18,6 +18,6 @@ function reverse ( mainData, list ) {
18
18
 
19
19
 
20
20
 
21
- module.exports = reverse
21
+ export default reverse
22
22
 
23
23
 
@@ -13,6 +13,6 @@ function update ( mainData, update ) {
13
13
 
14
14
 
15
15
 
16
- module.exports = update
16
+ export default update
17
17
 
18
18
 
@@ -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
- }