@rimbu/deep 0.9.1 → 0.10.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.
Files changed (52) hide show
  1. package/README.md +27 -16
  2. package/dist/main/index.js +12 -3
  3. package/dist/main/index.js.map +1 -1
  4. package/dist/main/internal.js +4 -6
  5. package/dist/main/internal.js.map +1 -1
  6. package/dist/main/match.js +197 -132
  7. package/dist/main/match.js.map +1 -1
  8. package/dist/main/patch.js +125 -106
  9. package/dist/main/patch.js.map +1 -1
  10. package/dist/main/path.js +16 -41
  11. package/dist/main/path.js.map +1 -1
  12. package/dist/main/protected.js +24 -0
  13. package/dist/main/protected.js.map +1 -0
  14. package/dist/main/tuple.js +1 -1
  15. package/dist/main/tuple.js.map +1 -1
  16. package/dist/module/index.js +3 -2
  17. package/dist/module/index.js.map +1 -1
  18. package/dist/module/internal.js +2 -4
  19. package/dist/module/internal.js.map +1 -1
  20. package/dist/module/match.js +180 -97
  21. package/dist/module/match.js.map +1 -1
  22. package/dist/module/patch.js +113 -87
  23. package/dist/module/patch.js.map +1 -1
  24. package/dist/module/path.js +15 -36
  25. package/dist/module/path.js.map +1 -1
  26. package/dist/module/protected.js +20 -0
  27. package/dist/module/protected.js.map +1 -0
  28. package/dist/types/index.d.ts +3 -2
  29. package/dist/types/internal.d.ts +2 -4
  30. package/dist/types/match.d.ts +93 -80
  31. package/dist/types/patch.d.ts +64 -61
  32. package/dist/types/path.d.ts +9 -20
  33. package/dist/types/protected.d.ts +34 -0
  34. package/package.json +5 -5
  35. package/src/index.ts +12 -2
  36. package/src/internal.ts +3 -4
  37. package/src/match.ts +254 -163
  38. package/src/patch.ts +204 -147
  39. package/src/path.ts +20 -44
  40. package/src/protected.ts +46 -0
  41. package/dist/main/immutable.js +0 -12
  42. package/dist/main/immutable.js.map +0 -1
  43. package/dist/main/literal.js +0 -41
  44. package/dist/main/literal.js.map +0 -1
  45. package/dist/module/immutable.js +0 -8
  46. package/dist/module/immutable.js.map +0 -1
  47. package/dist/module/literal.js +0 -37
  48. package/dist/module/literal.js.map +0 -1
  49. package/dist/types/immutable.d.ts +0 -13
  50. package/dist/types/literal.d.ts +0 -48
  51. package/src/immutable.ts +0 -21
  52. package/src/literal.ts +0 -70
@@ -1,136 +1,155 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Patch = exports.patch = void 0;
3
+ exports.patch = exports.patchNested = exports.Patch = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var base_1 = require("@rimbu/base");
6
- var internal_1 = require("./internal");
7
- /**
8
- * Returns an updated version of given `value`, without modifying the value, where the contents
9
- * are updated according to the given `patches` Patch array.
10
- * @typeparam T - the type of the value to patch
11
- * @param value - the value to update
12
- * @param patches - one or more `Patch` objects indicating modifications to the value
13
- * @example
14
- * ```ts
15
- * patch({ g: { h: 5 }})({ g: { h: 6 }}) // => { g: { h: 6 }}
16
- * patch({ g: { h: 5 }})({ g: { h: v => v + 1 }}) // => { g: { h: 6 }}
17
- * patch({ g: { h: 5 }})({ g: { h: 1 }}, { g: { h: v => v + 1 }})
18
- * // => { g: { h: 2 }}
19
- * patch({ a: 1, b: 3 })({ a: (v, p) => v * p.b, (v, p) => v + p.a })
20
- * // => { a: 3, b: 4 }
21
- * ```
22
- */
23
- function patch(value) {
24
- return function () {
25
- var e_1, _a;
26
- var patches = [];
27
- for (var _i = 0; _i < arguments.length; _i++) {
28
- patches[_i] = arguments[_i];
29
- }
30
- var result = value;
31
- try {
32
- for (var patches_1 = (0, tslib_1.__values)(patches), patches_1_1 = patches_1.next(); !patches_1_1.done; patches_1_1 = patches_1.next()) {
33
- var p = patches_1_1.value;
34
- result = patchSingle(result, p, result, result);
35
- }
36
- }
37
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
38
- finally {
39
- try {
40
- if (patches_1_1 && !patches_1_1.done && (_a = patches_1.return)) _a.call(patches_1);
41
- }
42
- finally { if (e_1) throw e_1.error; }
43
- }
44
- return result;
45
- };
46
- }
47
- exports.patch = patch;
48
6
  var Patch;
49
7
  (function (Patch) {
50
- Patch.MAP = Symbol('Patch.ALL');
51
8
  /**
52
- * Returns a function that patches a given object of type `T` with the given `patches`
53
- * Patch array.
54
- * @typeparam T - the value type to operate on
55
- * @typeparam T2 - the type the Patch is done for, should be equal to T
56
- * @param patches - the patches to apply to a given object
9
+ * Returns a function that patches a given `value` with the given `patchItems`.
10
+ * @typeparam T - the patch value type
11
+ * @typeparam Q - the input value type
12
+ * @param patchItems - a number of `Patch` objects that patch a given value of type T.
57
13
  * @example
58
14
  * ```ts
59
- * const r = Patch.create<{ a: number, b: number }>({ b: v => v + 1 })({ a: 1, b: 2})
60
- * console.log(r)
61
- * // => { a: 1, b: 3 }
15
+ * const items = [{ a: 1, b: 'a' }, { a: 2, b: 'b' }]
16
+ * items.map(Patch.create({ a: v => v + 1 }))
17
+ * // => [{ a: 2, b: 'a' }, { a: 3, b: 'b' }]
62
18
  * ```
63
19
  */
64
20
  function create() {
65
- var patches = [];
21
+ var patchItems = [];
66
22
  for (var _i = 0; _i < arguments.length; _i++) {
67
- patches[_i] = arguments[_i];
23
+ patchItems[_i] = arguments[_i];
68
24
  }
69
- return function (value) {
70
- return patch(value).apply(void 0, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(patches), false));
71
- };
25
+ return function (value) { return patch.apply(void 0, tslib_1.__spreadArray([value], tslib_1.__read(patchItems), false)); };
72
26
  }
73
27
  Patch.create = create;
74
28
  })(Patch = exports.Patch || (exports.Patch = {}));
75
- function patchSingle(value, patcher, parent, root) {
76
- if (typeof patcher === 'function') {
77
- return patcher(value, parent, root);
29
+ var NestedObj = /** @class */ (function () {
30
+ function NestedObj(patchDataItems) {
31
+ this.patchDataItems = patchDataItems;
32
+ }
33
+ return NestedObj;
34
+ }());
35
+ /**
36
+ * Returns a nested patch object based on the given `patchDataItems` that work on a subpart
37
+ * of a larger object to be patched.
38
+ * @typeparam T - the input value type
39
+ * @typeparam R - the root object type
40
+ * @typeparam Q - the patch type
41
+ * @param patchDataItems - a number of `Patch` objects to be applied to the subpart of the object
42
+ * @example
43
+ * ```ts
44
+ * patch({ a: 1, b: { c: true, d: 'a' } }, { b: patchNested({ d: 'b' }) })
45
+ * // => { a: 1, b: { c: true, d: 'b' } }
46
+ * ```
47
+ */
48
+ function patchNested() {
49
+ var patchDataItems = [];
50
+ for (var _i = 0; _i < arguments.length; _i++) {
51
+ patchDataItems[_i] = arguments[_i];
52
+ }
53
+ return new NestedObj(patchDataItems);
54
+ }
55
+ exports.patchNested = patchNested;
56
+ /**
57
+ * Returns an immutably updated version of the given `value` where the given `patchItems` have been
58
+ * applied to the result.
59
+ * @param value - the input value to patch
60
+ * @param patchItems - the `Patch` objects to apply to the input value
61
+ * @example
62
+ * ```ts
63
+ * const input = { a: 1, b: { c: true, d: 'a' } }
64
+ * patch(input, { a: 2 }) // => { a: 2, b: { c: true, d: 'a' } }
65
+ * patch(input: ($) => ({ b: $({ c: v => !v }) }) )
66
+ * // => { a: 1, b: { c: false, d: 'a' } }
67
+ * patch(input: ($) => ({ a: v => v + 1, b: $({ d: 'q' }) }) )
68
+ * // => { a: 2, b: { c: true, d: 'q' } }
69
+ * ```
70
+ */
71
+ function patch(value) {
72
+ var patchItems = [];
73
+ for (var _i = 1; _i < arguments.length; _i++) {
74
+ patchItems[_i - 1] = arguments[_i];
78
75
  }
79
- if (null === value || undefined === value || typeof value !== 'object') {
80
- if (typeof patcher !== 'object' || null === patcher)
81
- return patcher;
82
- if (internal_1.Literal.isLiteral(patcher)) {
83
- return internal_1.Literal.getValue(patcher);
76
+ var newValue = (0, base_1.isPlainObj)(value) ? tslib_1.__assign({}, value) : value;
77
+ var changedRef = { changed: false };
78
+ var result = processPatch(newValue, newValue, patchItems, changedRef);
79
+ if (changedRef.changed)
80
+ return result;
81
+ return value;
82
+ }
83
+ exports.patch = patch;
84
+ function processPatch(value, root, patchDataItems, changedRef) {
85
+ var i = -1;
86
+ var len = patchDataItems.length;
87
+ while (++i < len) {
88
+ var patchItem = patchDataItems[i];
89
+ if (patchItem instanceof Function) {
90
+ var item = patchItem(patchNested);
91
+ if (item instanceof NestedObj) {
92
+ processPatch(value, root, item.patchDataItems, changedRef);
93
+ }
94
+ else {
95
+ processPatchObj(value, root, item, changedRef);
96
+ }
97
+ }
98
+ else {
99
+ processPatchObj(value, root, patchItem, changedRef);
84
100
  }
101
+ }
102
+ return value;
103
+ }
104
+ function processPatchObj(value, root, patchData, changedRef) {
105
+ if (undefined === value || null === value) {
85
106
  return value;
86
107
  }
87
- if (Array.isArray(patcher)) {
88
- base_1.RimbuError.throwInvalidStateError();
108
+ if (!(0, base_1.isPlainObj)(patchData)) {
109
+ base_1.RimbuError.throwInvalidUsageError('patch: received patch object should be a plain object');
89
110
  }
90
- if (typeof patcher !== 'object')
91
- return patcher;
92
- if (null === patcher)
93
- return null;
94
- if (internal_1.Literal.isLiteral(patcher)) {
95
- return internal_1.Literal.getValue(patcher);
111
+ if (!(0, base_1.isPlainObj)(value)) {
112
+ base_1.RimbuError.throwInvalidUsageError('patch: received source object should be a plain object');
96
113
  }
97
- var valueIsArray = Array.isArray(value);
98
- if (!valueIsArray && !internal_1.Literal.isPlainObject(value))
99
- return patcher;
100
- if (valueIsArray && Patch.MAP in patcher) {
101
- var arr = value;
102
- var itemPatch = patcher[Patch.MAP];
103
- var result = undefined;
104
- for (var i = 0; i < arr.length; i++) {
105
- var currentItem = arr[i];
106
- var newItem = patchSingle(currentItem, itemPatch, value, root);
107
- if (!Object.is(newItem, currentItem)) {
108
- if (undefined === result) {
109
- result = arr.slice();
110
- }
111
- result[i] = newItem;
112
- }
114
+ for (var key in patchData) {
115
+ var target = value[key];
116
+ // prevent prototype pollution
117
+ if (key === '__proto__' ||
118
+ (key === 'constructor' && target instanceof Function)) {
119
+ base_1.RimbuError.throwInvalidUsageError("patch: received patch object key '".concat(key, "' which is not allowed to prevent prototype pollution"));
113
120
  }
114
- return (result !== null && result !== void 0 ? result : arr);
115
- }
116
- var clone = valueIsArray ? (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(value), false) : (0, tslib_1.__assign)({}, value);
117
- var changed = false;
118
- for (var key in patcher) {
119
- var patchKey = patcher[key];
120
- if (!(key in clone) && typeof patchKey === 'function')
121
- continue;
122
- var oldValue = clone[key];
123
- if (undefined === patchKey) {
124
- base_1.RimbuError.throwInvalidUsageError('Do not use undefined directly in patch objects, but use Literal.of(undefined) instead due to type limitations.');
121
+ var update = patchData[key];
122
+ if (!(key in value) && update instanceof Function) {
123
+ base_1.RimbuError.throwInvalidUsageError("patch: received update function object key ".concat(key, " but the key was not present in the source object. Either explicitely set the value in the source to undefined or use a direct value."));
124
+ }
125
+ if (undefined === update) {
126
+ base_1.RimbuError.throwInvalidUsageError("patch: received 'undefined' as patch value. Due to type system issues we cannot prevent this through typing, but please use '() => undefined' or '() => yourVar' instead. This value will be ignored for safety.");
125
127
  }
126
- var newValue = patchSingle(oldValue, patchKey, value, root);
127
- if (oldValue !== newValue) {
128
- changed = true;
129
- clone[key] = newValue;
128
+ var newValue = void 0;
129
+ if (update instanceof Function) {
130
+ newValue = processPatchObjItem(target, root, update(target, value, root), changedRef);
131
+ }
132
+ else {
133
+ newValue = processPatchObjItem(target, root, update, changedRef);
134
+ }
135
+ if (!Object.is(newValue, target)) {
136
+ value[key] = newValue;
137
+ changedRef.changed = true;
130
138
  }
131
139
  }
132
- if (changed)
133
- return clone;
134
140
  return value;
135
141
  }
142
+ function processPatchObjItem(value, root, patchResult, superChangedRef) {
143
+ if (patchResult instanceof NestedObj) {
144
+ var newValue = (0, base_1.isPlainObj)(value) ? tslib_1.__assign({}, value) : value;
145
+ var changedRef = { changed: false };
146
+ var result = processPatch(newValue, root, patchResult.patchDataItems, changedRef);
147
+ if (changedRef.changed) {
148
+ superChangedRef.changed = true;
149
+ return result;
150
+ }
151
+ return value;
152
+ }
153
+ return patchResult;
154
+ }
136
155
  //# sourceMappingURL=patch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/patch.ts"],"names":[],"mappings":"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"}
package/dist/main/path.js CHANGED
@@ -13,18 +13,18 @@ var Path;
13
13
  * @param path - the path into the object
14
14
  * @example
15
15
  * ```ts
16
- * console.log(Path.getValue({ a: { b: { c: 5 } } }), 'a.b')
16
+ * console.log(Path.get({ a: { b: { c: 5 } } }), 'a.b')
17
17
  * // => { c: 5 }
18
- * console.log(Path.getValue({ a: { b: { c: 5 } } }), 'a.b.c')
18
+ * console.log(Path.get({ a: { b: { c: 5 } } }), 'a.b.c')
19
19
  * // => 5
20
20
  * ```
21
21
  */
22
- function getValue(source, path) {
22
+ function get(source, path) {
23
23
  var e_1, _a;
24
24
  var items = path.split('.');
25
25
  var result = source;
26
26
  try {
27
- for (var items_1 = (0, tslib_1.__values)(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
27
+ for (var items_1 = tslib_1.__values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
28
28
  var item = items_1_1.value;
29
29
  result = result[item];
30
30
  }
@@ -38,7 +38,7 @@ var Path;
38
38
  }
39
39
  return result;
40
40
  }
41
- Path.getValue = getValue;
41
+ Path.get = get;
42
42
  /**
43
43
  * Sets the value at the given path in the source to the given value.
44
44
  * @param source - the object to update
@@ -46,20 +46,22 @@ var Path;
46
46
  * @param value - the new value to set at the given position
47
47
  * @example
48
48
  * ```ts
49
- * console.log(Path.setValue({ a: { b: { c: 5 } } }))
49
+ * console.log(Path.update({ a: { b: { c: 5 } } }, 'a.b.c', v => v + 5)
50
+ * // => { a: { b: { c: 6 } } }
50
51
  * ```
51
52
  */
52
- function setValue(source, path, value) {
53
+ function update(source, path, value) {
53
54
  var e_2, _a;
54
55
  var items = path.split('.');
55
56
  var last = items.pop();
56
- var result = (0, tslib_1.__assign)({}, source);
57
- var current = result;
57
+ var root = {};
58
+ var current = root;
58
59
  try {
59
- for (var items_2 = (0, tslib_1.__values)(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {
60
+ for (var items_2 = tslib_1.__values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {
60
61
  var item = items_2_1.value;
61
- current[item] = (0, tslib_1.__assign)({}, current[item]);
62
- current = current[item];
62
+ var next = {};
63
+ current[item] = (0, internal_1.patchNested)(next);
64
+ current = next;
63
65
  }
64
66
  }
65
67
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
@@ -69,36 +71,9 @@ var Path;
69
71
  }
70
72
  finally { if (e_2) throw e_2.error; }
71
73
  }
72
- var oldValue = current[last];
73
- if (Object.is(oldValue, value))
74
- return source;
75
74
  current[last] = value;
76
- return result;
77
- }
78
- Path.setValue = setValue;
79
- /**
80
- * Patches the value at the given path in the source to the given value using the given
81
- * `patches`.
82
- * @param source - the object to update
83
- * @param path - the path in the object to update
84
- * @param patches - one or more patches to update the value at the given path
85
- * @example
86
- * ```ts
87
- * console.log(Path.setValue({ a: { b: { c: 5 } } }, 'a.b.c', 8)
88
- * // => { a: { b: { c: 8 } } }
89
- * ```
90
- */
91
- function patchValue(source, path) {
92
- var patches = [];
93
- for (var _i = 2; _i < arguments.length; _i++) {
94
- patches[_i - 2] = arguments[_i];
95
- }
96
- var value = Path.getValue(source, path);
97
- var newValue = (0, internal_1.patch)(value).apply(void 0, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(patches), false));
98
- if (Object.is(value, newValue))
99
- return source;
100
- return Path.setValue(source, path, newValue);
75
+ return (0, internal_1.patch)(source, root);
101
76
  }
102
- Path.patchValue = patchValue;
77
+ Path.update = update;
103
78
  })(Path = exports.Path || (exports.Path = {}));
104
79
  //# sourceMappingURL=path.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":";;;;AAAA,uCAAmD;AAcnD,IAAiB,IAAI,CAiHpB;AAjHD,WAAiB,IAAI;IAwBnB;;;;;;;;;;;;;OAaG;IACH,SAAgB,QAAQ,CACtB,MAAS,EACT,IAAO;;QAEP,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,MAAM,GAAQ,MAAM,CAAC;;YAEzB,KAAmB,IAAA,UAAA,sBAAA,KAAK,CAAA,4BAAA,+CAAE;gBAArB,IAAM,IAAI,kBAAA;gBACb,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aACvB;;;;;;;;;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAbe,aAAQ,WAavB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,QAAQ,CACtB,MAAS,EACT,IAAO,EACP,KAAwB;;QAExB,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAE1B,IAAM,MAAM,6BAAQ,MAAM,CAAE,CAAC;QAE7B,IAAI,OAAO,GAAQ,MAAM,CAAC;;YAE1B,KAAmB,IAAA,UAAA,sBAAA,KAAK,CAAA,4BAAA,+CAAE;gBAArB,IAAM,IAAI,kBAAA;gBACb,OAAO,CAAC,IAAI,CAAC,6BAAQ,OAAO,CAAC,IAAI,CAAC,CAAE,CAAC;gBACrC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;aACzB;;;;;;;;;QAED,IAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAEtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAxBe,aAAQ,WAwBvB,CAAA;IAED;;;;;;;;;;;OAWG;IACH,SAAgB,UAAU,CACxB,MAAS,EACT,IAAO;QACP,iBAA0C;aAA1C,UAA0C,EAA1C,qBAA0C,EAA1C,IAA0C;YAA1C,gCAA0C;;QAE1C,IAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAM,QAAQ,GAAG,IAAA,gBAAK,EAAC,KAAK,CAAC,kEAAI,OAAO,UAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC;QAE9C,OAAO,IAAI,CAAC,QAAQ,CAAW,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAXe,eAAU,aAWzB,CAAA;AACH,CAAC,EAjHgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAiHpB"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":";;;;AAGA,uCAAgD;AAchD,IAAiB,IAAI,CAsFpB;AAtFD,WAAiB,IAAI;IAwBnB;;;;;;;;;;;;;OAaG;IACH,SAAgB,GAAG,CACjB,MAAuB,EACvB,IAAO;;QAEP,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9B,IAAI,MAAM,GAAQ,MAAM,CAAC;;YAEzB,KAAmB,IAAA,UAAA,iBAAA,KAAK,CAAA,4BAAA,+CAAE;gBAArB,IAAM,IAAI,kBAAA;gBACb,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aACvB;;;;;;;;;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAbe,QAAG,MAalB,CAAA;IAED;;;;;;;;;;OAUG;IACH,SAAgB,MAAM,CACpB,MAAuB,EACvB,IAAO,EACP,KAAgC;;QAEhC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAE1B,IAAM,IAAI,GAAwB,EAAE,CAAC;QAErC,IAAI,OAAO,GAAG,IAAI,CAAC;;YAEnB,KAAmB,IAAA,UAAA,iBAAA,KAAK,CAAA,4BAAA,+CAAE;gBAArB,IAAM,IAAI,kBAAA;gBACb,IAAM,IAAI,GAAG,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;gBAClC,OAAO,GAAG,IAAI,CAAC;aAChB;;;;;;;;;QAED,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAEtB,OAAO,IAAA,gBAAK,EAAI,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IArBe,WAAM,SAqBrB,CAAA;AACH,CAAC,EAtFgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAsFpB"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Protected = void 0;
4
+ /**
5
+ * Returns the same value wrapped in the `Protected` type.
6
+ * @param value - the value to wrap
7
+ * @note does not perform any runtime protection, it is only a utility to easily add the `Protected`
8
+ * type to a value
9
+ * @example
10
+ * ```ts
11
+ * const obj = Protected({ a: 1, b: { c: true, d: [1] } })
12
+ * obj.a = 2 // compiler error: a is readonly
13
+ * obj.b.c = false // compiler error: c is readonly
14
+ * obj.b.d.push(2) // compiler error: d is a readonly array
15
+ * (obj as any).b.d.push(2) // will actually mutate the object
16
+ * ```
17
+
18
+ * '
19
+ */
20
+ function Protected(value) {
21
+ return value;
22
+ }
23
+ exports.Protected = Protected;
24
+ //# sourceMappingURL=protected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected.js","sourceRoot":"","sources":["../../src/protected.ts"],"names":[],"mappings":";;;AA2BA;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,SAAS,CAAI,KAAQ;IACnC,OAAO,KAAY,CAAC;AACtB,CAAC;AAFD,8BAEC"}
@@ -112,7 +112,7 @@ var Tuple;
112
112
  for (var _i = 1; _i < arguments.length; _i++) {
113
113
  values[_i - 1] = arguments[_i];
114
114
  }
115
- return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(tuple), false), (0, tslib_1.__read)(values), false);
115
+ return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(tuple), false), tslib_1.__read(values), false);
116
116
  }
117
117
  Tuple.append = append;
118
118
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../src/tuple.ts"],"names":[],"mappings":";;;;AAAA,oCAAkC;AAQlC,IAAiB,KAAK,CAgLrB;AAhLD,WAAiB,KAAK;IAWpB;;;;;;;;OAQG;IACH,SAAgB,EAAE;QAAiC,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,2BAAY;;QAC7D,OAAO,MAAa,CAAC;IACvB,CAAC;IAFe,QAAE,KAEjB,CAAA;IAED;;;;;;;;;;OAUG;IACH,SAAgB,QAAQ,CACtB,KAAQ,EACR,KAAQ;QAER,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IALe,cAAQ,WAKvB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,KAAK,CAAyB,KAAQ;QACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,WAAK,QAEpB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,MAAM,CAAyB,KAAQ;QACrD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,YAAM,SAErB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,IAAI,CAClB,KAAyB;QAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;IACxC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,SAAgB,QAAQ,CACtB,KAAQ,EACR,KAAQ,EACR,OAAqB;QAErB,OAAO,UAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,OAAO,CAAM,CAAC;IAC1D,CAAC;IANe,cAAQ,WAMvB,CAAA;IAED;;;;;;;;;;OAUG;IACH,SAAgB,MAAM,CAGpB,KAAQ;QAAE,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,+BAAY;;QACtB,qFAAW,KAAK,+BAAK,MAAM,UAAE;IAC/B,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,SAAgB,MAAM,CACpB,MAAU,EACV,MAAU;QAEV,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAQ,CAAC;IACtC,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;AACH,CAAC,EAhLgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAgLrB"}
1
+ {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../src/tuple.ts"],"names":[],"mappings":";;;;AAAA,oCAAkC;AAQlC,IAAiB,KAAK,CAgLrB;AAhLD,WAAiB,KAAK;IAWpB;;;;;;;;OAQG;IACH,SAAgB,EAAE;QAAiC,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,2BAAY;;QAC7D,OAAO,MAAa,CAAC;IACvB,CAAC;IAFe,QAAE,KAEjB,CAAA;IAED;;;;;;;;;;OAUG;IACH,SAAgB,QAAQ,CACtB,KAAQ,EACR,KAAQ;QAER,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IALe,cAAQ,WAKvB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,KAAK,CAAyB,KAAQ;QACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,WAAK,QAEpB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,MAAM,CAAyB,KAAQ;QACrD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,YAAM,SAErB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,IAAI,CAClB,KAAyB;QAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;IACxC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,SAAgB,QAAQ,CACtB,KAAQ,EACR,KAAQ,EACR,OAAqB;QAErB,OAAO,UAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,OAAO,CAAM,CAAC;IAC1D,CAAC;IANe,cAAQ,WAMvB,CAAA;IAED;;;;;;;;;;OAUG;IACH,SAAgB,MAAM,CAGpB,KAAQ;QAAE,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,+BAAY;;QACtB,sEAAW,KAAK,0BAAK,MAAM,UAAE;IAC/B,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;;;;;;OAYG;IACH,SAAgB,MAAM,CACpB,MAAU,EACV,MAAU;QAEV,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAQ,CAAC;IACtC,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;;;OASG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;AACH,CAAC,EAhLgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAgLrB"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * @packageDocumentation
3
3
  *
4
- * The `@rimbu/deep` package provides utilities to patch and match plain JavaScript objects..<br/>
4
+ * The `@rimbu/deep` package provides utilities to patch and match plain JavaScript objects.<br/>
5
5
  * <br/>
6
6
  * See the [Rimbu docs Deep overview page](/docs/deep/overview) for more information.
7
7
  */
8
- export * from './internal';
8
+ export { patch, patchNested, Patch, match, Match, Path, Protected, } from './internal';
9
+ export { Tuple } from './tuple';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
@@ -1,7 +1,5 @@
1
- export * from './tuple';
2
- export * from './literal';
3
- export * from './immutable';
1
+ export * from './protected';
4
2
  export * from './match';
5
- export * from './path';
6
3
  export * from './patch';
4
+ export * from './path';
7
5
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}