hinted-tree-merger 6.1.0 → 6.1.1
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/README.md +61 -19
- package/package.json +4 -4
- package/src/merger.mjs +0 -1
- package/src/string-expressions.mjs +10 -4
- package/src/util.mjs +8 -1
- package/src/versions.mjs +7 -3
- package/types/util.d.mts +1 -1
package/README.md
CHANGED
|
@@ -51,38 +51,46 @@ const r = merge( undefined, [ { k:1, e:2}, { k:3 }]);
|
|
|
51
51
|
|
|
52
52
|
* [hintFor](#hintfor)
|
|
53
53
|
* [Parameters](#parameters)
|
|
54
|
-
* [
|
|
54
|
+
* [Actions](#actions)
|
|
55
55
|
* [Parameters](#parameters-1)
|
|
56
|
-
* [
|
|
56
|
+
* [mergeSkip](#mergeskip)
|
|
57
57
|
* [Parameters](#parameters-2)
|
|
58
|
-
* [
|
|
58
|
+
* [mergeArrays](#mergearrays)
|
|
59
59
|
* [Parameters](#parameters-3)
|
|
60
|
-
* [
|
|
60
|
+
* [merge](#merge)
|
|
61
61
|
* [Parameters](#parameters-4)
|
|
62
|
-
* [
|
|
62
|
+
* [hasDeleteHint](#hasdeletehint)
|
|
63
63
|
* [Parameters](#parameters-5)
|
|
64
|
-
* [
|
|
64
|
+
* [isToBeRemoved](#istoberemoved)
|
|
65
65
|
* [Parameters](#parameters-6)
|
|
66
|
-
* [
|
|
66
|
+
* [hintFreeValue](#hintfreevalue)
|
|
67
67
|
* [Parameters](#parameters-7)
|
|
68
|
-
* [
|
|
68
|
+
* [indexFor](#indexfor)
|
|
69
69
|
* [Parameters](#parameters-8)
|
|
70
|
-
* [
|
|
70
|
+
* [keyFor](#keyfor)
|
|
71
71
|
* [Parameters](#parameters-9)
|
|
72
|
+
* [sortObjectsByKeys](#sortobjectsbykeys)
|
|
73
|
+
* [Parameters](#parameters-10)
|
|
74
|
+
* [compareWithDefinedOrder](#comparewithdefinedorder)
|
|
75
|
+
* [Parameters](#parameters-11)
|
|
76
|
+
* [matchingIndex](#matchingindex)
|
|
77
|
+
* [Parameters](#parameters-12)
|
|
72
78
|
* [match](#match)
|
|
79
|
+
* [cmp](#cmp)
|
|
80
|
+
* [Parameters](#parameters-13)
|
|
73
81
|
* [compareVersion](#compareversion)
|
|
74
|
-
* [Parameters](#parameters-
|
|
82
|
+
* [Parameters](#parameters-14)
|
|
75
83
|
* [unionVersion](#unionversion)
|
|
76
|
-
* [Parameters](#parameters-
|
|
84
|
+
* [Parameters](#parameters-15)
|
|
77
85
|
* [VersionMapper](#versionmapper)
|
|
78
86
|
* [mergeVersionsWithFilter](#mergeversionswithfilter)
|
|
79
|
-
* [Parameters](#parameters-
|
|
87
|
+
* [Parameters](#parameters-16)
|
|
80
88
|
* [mergeVersions](#mergeversions)
|
|
81
|
-
* [Parameters](#parameters-
|
|
89
|
+
* [Parameters](#parameters-17)
|
|
82
90
|
* [mergeVersionsPreferNumeric](#mergeversionsprefernumeric)
|
|
83
|
-
* [Parameters](#parameters-
|
|
91
|
+
* [Parameters](#parameters-18)
|
|
84
92
|
* [walk](#walk)
|
|
85
|
-
* [Parameters](#parameters-
|
|
93
|
+
* [Parameters](#parameters-19)
|
|
86
94
|
|
|
87
95
|
## hintFor
|
|
88
96
|
|
|
@@ -93,6 +101,15 @@ Construct hint for a given path.
|
|
|
93
101
|
* `hints` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
94
102
|
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
95
103
|
|
|
104
|
+
## Actions
|
|
105
|
+
|
|
106
|
+
Type: [Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)
|
|
107
|
+
|
|
108
|
+
### Parameters
|
|
109
|
+
|
|
110
|
+
* `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
111
|
+
* `hints` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
112
|
+
|
|
96
113
|
## mergeSkip
|
|
97
114
|
|
|
98
115
|
Skip merging use left side always.
|
|
@@ -112,7 +129,7 @@ Skip merging use left side always.
|
|
|
112
129
|
* `a` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)** 
|
|
113
130
|
* `b` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)** 
|
|
114
131
|
* `path` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
115
|
-
* `actions` **[
|
|
132
|
+
* `actions` **[Actions](#actions)** (optional, default `nullAction`)
|
|
116
133
|
* `hints` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
117
134
|
|
|
118
135
|
## merge
|
|
@@ -124,7 +141,7 @@ Merge to values.
|
|
|
124
141
|
* `a` **any** 
|
|
125
142
|
* `b` **any** 
|
|
126
143
|
* `path`  
|
|
127
|
-
* `actions` **[
|
|
144
|
+
* `actions` **[Actions](#actions)** (optional, default `nullAction`)
|
|
128
145
|
* `hints` **any** 
|
|
129
146
|
|
|
130
147
|
Returns **any** merged value
|
|
@@ -147,7 +164,7 @@ Should value be removed.
|
|
|
147
164
|
* `value` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
148
165
|
* `fromTemplate` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
149
166
|
|
|
150
|
-
Returns **[
|
|
167
|
+
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** true if fromTemplate tells is to delete value
|
|
151
168
|
|
|
152
169
|
## hintFreeValue
|
|
153
170
|
|
|
@@ -178,7 +195,7 @@ Deliver key value to identify object.
|
|
|
178
195
|
* `object` **any** 
|
|
179
196
|
* `hint` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
|
|
180
197
|
|
|
181
|
-
Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
|
|
198
|
+
Returns **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))** 
|
|
182
199
|
|
|
183
200
|
## sortObjectsByKeys
|
|
184
201
|
|
|
@@ -191,10 +208,35 @@ Sort keys in source.
|
|
|
191
208
|
|
|
192
209
|
Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** source with keys orderd by compare function
|
|
193
210
|
|
|
211
|
+
## compareWithDefinedOrder
|
|
212
|
+
|
|
213
|
+
### Parameters
|
|
214
|
+
|
|
215
|
+
* `a` **any** 
|
|
216
|
+
* `b` **any** 
|
|
217
|
+
* `definedOrder`  
|
|
218
|
+
|
|
219
|
+
## matchingIndex
|
|
220
|
+
|
|
221
|
+
### Parameters
|
|
222
|
+
|
|
223
|
+
* `value` **any** 
|
|
224
|
+
|
|
225
|
+
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** 
|
|
226
|
+
|
|
194
227
|
## match
|
|
195
228
|
|
|
196
229
|
url means highest version
|
|
197
230
|
|
|
231
|
+
## cmp
|
|
232
|
+
|
|
233
|
+
### Parameters
|
|
234
|
+
|
|
235
|
+
* `a` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)>** 
|
|
236
|
+
* `b` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)>** 
|
|
237
|
+
|
|
238
|
+
Returns **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** 
|
|
239
|
+
|
|
198
240
|
## compareVersion
|
|
199
241
|
|
|
200
242
|
Compare two versions.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hinted-tree-merger",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"types": "./types/index.d.mts",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
11
|
+
"default": "./src/index.mjs",
|
|
12
|
+
"types": "./types/index.d.mts"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"description": "merges two trees guided with hints",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"typescript": "^5.3.3"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
|
-
"node": ">=20.11.
|
|
50
|
+
"node": ">=20.11.1"
|
|
51
51
|
},
|
|
52
52
|
"repository": {
|
|
53
53
|
"type": "git",
|
package/src/merger.mjs
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { nullAction } from "./util.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
hintFor,
|
|
4
|
+
DELETE_HINT_REGEX,
|
|
5
|
+
OVERWRITE_HINT_REGEX,
|
|
6
|
+
LIKE_HINT_REGEX
|
|
7
|
+
} from "./hint.mjs";
|
|
3
8
|
|
|
4
9
|
export function mergeExpressions(a, b, path, actions = nullAction, hints) {
|
|
5
10
|
if (a === undefined && b === undefined) {
|
|
@@ -63,7 +68,7 @@ export function decodeExpressions(script, hint) {
|
|
|
63
68
|
like,
|
|
64
69
|
overwrite,
|
|
65
70
|
op: "&&",
|
|
66
|
-
args: script.split(/\s*&&\s*/).map(v=>v.trim())
|
|
71
|
+
args: script.split(/\s*&&\s*/).map(v => v.trim())
|
|
67
72
|
};
|
|
68
73
|
}
|
|
69
74
|
return { op: "", args: [script.trim()], overwrite, like };
|
|
@@ -84,11 +89,12 @@ function mergeLIKE(a, b) {
|
|
|
84
89
|
const args = x => (x === undefined ? [] : x.args);
|
|
85
90
|
|
|
86
91
|
//const t = args(a).concat(args(b));
|
|
87
|
-
const t="";
|
|
88
|
-
console.log(args(b))
|
|
92
|
+
const t = "";
|
|
93
|
+
console.log(args(b));
|
|
89
94
|
|
|
90
95
|
return {
|
|
91
96
|
op: "&&",
|
|
97
|
+
// @ts-ignore
|
|
92
98
|
args: t.filter((item, pos) => t.indexOf(item) === pos)
|
|
93
99
|
};
|
|
94
100
|
}
|
package/src/util.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
OVERWRITE_HINT_REGEX
|
|
5
5
|
} from "./hint.mjs";
|
|
6
6
|
|
|
7
|
-
export function nullAction() {}
|
|
7
|
+
export function nullAction(options,hint) {}
|
|
8
8
|
|
|
9
9
|
export function asArray(a) {
|
|
10
10
|
return Array.isArray(a) ? a : a === undefined ? [] : [a];
|
|
@@ -42,6 +42,7 @@ export function hasDeleteHint(value, expected) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
if (value === `-${expected}`) {
|
|
45
|
+
// @ts-ignore
|
|
45
46
|
return expected;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -343,10 +344,16 @@ export function sortObjectsByKeys(source, compare) {
|
|
|
343
344
|
* @param {any} b
|
|
344
345
|
*/
|
|
345
346
|
export function compareWithDefinedOrder(a, b, definedOrder) {
|
|
347
|
+
/**
|
|
348
|
+
*
|
|
349
|
+
* @param {any} value
|
|
350
|
+
* @returns {number}
|
|
351
|
+
*/
|
|
346
352
|
function matchingIndex(value) {
|
|
347
353
|
for (const i in definedOrder) {
|
|
348
354
|
const o = definedOrder[i];
|
|
349
355
|
if ((o instanceof RegExp && value.match(o)) || o === value) {
|
|
356
|
+
// @ts-ignore
|
|
350
357
|
return i;
|
|
351
358
|
}
|
|
352
359
|
}
|
package/src/versions.mjs
CHANGED
|
@@ -112,8 +112,15 @@ export function composeVersion(decomposed) {
|
|
|
112
112
|
return joinSlots(decomposed.lower);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
/**
|
|
116
|
+
*
|
|
117
|
+
* @param {number[]} a
|
|
118
|
+
* @param {number[]} b
|
|
119
|
+
* @returns {number}
|
|
120
|
+
*/
|
|
115
121
|
function cmp(a, b) {
|
|
116
122
|
for (const i in a) {
|
|
123
|
+
// @ts-ignore
|
|
117
124
|
if (i >= a.length) {
|
|
118
125
|
break;
|
|
119
126
|
}
|
|
@@ -140,9 +147,6 @@ export function compareVersion(a, b) {
|
|
|
140
147
|
const da = decomposeVersion(a);
|
|
141
148
|
const db = decomposeVersion(b);
|
|
142
149
|
|
|
143
|
-
//console.log(a, da);
|
|
144
|
-
//console.log(b, db);
|
|
145
|
-
|
|
146
150
|
const r = cmp(da.lower, db.lower);
|
|
147
151
|
return r === 0 ? cmp(da.upper, db.upper) : r;
|
|
148
152
|
}
|
package/types/util.d.mts
CHANGED