@rimbu/deep 0.7.4 → 0.8.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 CHANGED
@@ -4,33 +4,52 @@
4
4
 
5
5
  # @rimbu/deep
6
6
 
7
- Offers tools to use handle plain JS objects as immutable objects.
7
+ Offers tools to use handle plain JS objects as immutable objects. The [`Patch` object](https://rimbu.org/docs/deep/patch) allows convenient immutable modification of simple objects. The [`Match` object](https://rimbu.org/docs/deep/match) allows easy matching on plain objects. The [`Path` object](https://rimbu.org/docs/deep/path) allows easy querying of nested values. The [`Immutable` type](https://rimbu.org/docs/deep/immutable) makes it easy to create plain objects that that have compile-time protection against mutation. The [`Tuple` type](https://rimbu.org/docs/deep/tuple) is a utility to have similar functionality as `as const` but less strict.
8
8
 
9
- For complete documentation please visit the _[Rimbu Docs](http://rimbu.org)_.
9
+ For complete documentation please visit the [Immutable Objects overview](https://rimbu.org/docs/deep/overview) in the _[Rimbu Docs](https://rimbu.org)_.
10
10
 
11
- Or [Try Me Out](https://codesandbox.io/s/rimbu-sandbox-d4tbk?previewwindow=console&view=split&editorsize=65&moduleview=1&module=/src/index.ts) in CodeSandBox.
11
+ Or [Try Out Rimbu](https://codesandbox.io/s/github/vitoke/rimbu-sandbox/tree/main?previewwindow=console&view=split&editorsize=65&moduleview=1&module=/src/index.ts) in CodeSandBox.
12
12
 
13
13
  ## Installation
14
14
 
15
+ All types are exported through `@rimbu/core`. It is recommended to use that package.
16
+
17
+ To install this package only:
18
+
19
+ ### Yarn/NPM
20
+
15
21
  > `yarn add @rimbu/deep`
16
22
 
17
23
  or
18
24
 
19
25
  > `npm i @rimbu/deep`
20
26
 
21
- ### recommended tsconfig.json settings
27
+ ### Deno
28
+
29
+ Create a file called `rimbu.ts` and add the following:
30
+
31
+ > ```ts
32
+ > export * from 'https://deno.land/x/rimbu/deep/mod.ts';
33
+ > ```
34
+
35
+ Or using a pinned version (`x.y.z`):
22
36
 
23
- Rimbu uses advanced and recursive typing, potentially making the TS compiler quite slow. It is recommended to set the following values in the `tsconfig.json` file of your project:
37
+ > ```ts
38
+ > export * from 'https://deno.land/x/rimbu/deep@x.y.z/mod.ts';
39
+ > ```
24
40
 
25
- ```json
26
- {
27
- "compilerOptions": {
28
- "skipLibCheck": true,
29
- "noStrictGenericChecks": true
30
- }
31
- }
41
+ Then import what you need from `rimbu.ts`:
42
+
43
+ ```ts
44
+ import { patch } from './rimbu.ts';
32
45
  ```
33
46
 
47
+ Because Rimbu uses complex types, it's recommended to use the `--no-check` flag (your editor should already have checked your code) and to specify a `tsconfig.json` file with the settings described below.
48
+
49
+ Running your script then becomes:
50
+
51
+ > `deno run --no-check --config tsconfig.json <your-script>.ts`
52
+
34
53
  ## Usage
35
54
 
36
55
  ```ts
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./internal"), exports);
4
+ (0, tslib_1.__exportStar)(require("./internal"), exports);
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,0DAA2B"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./tuple"), exports);
5
- tslib_1.__exportStar(require("./literal"), exports);
6
- tslib_1.__exportStar(require("./immutable"), exports);
7
- tslib_1.__exportStar(require("./match"), exports);
8
- tslib_1.__exportStar(require("./path"), exports);
9
- tslib_1.__exportStar(require("./patch"), exports);
4
+ (0, tslib_1.__exportStar)(require("./tuple"), exports);
5
+ (0, tslib_1.__exportStar)(require("./literal"), exports);
6
+ (0, tslib_1.__exportStar)(require("./immutable"), exports);
7
+ (0, tslib_1.__exportStar)(require("./match"), exports);
8
+ (0, tslib_1.__exportStar)(require("./path"), exports);
9
+ (0, tslib_1.__exportStar)(require("./patch"), exports);
10
10
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,oDAA0B;AAC1B,sDAA4B;AAC5B,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":";;;AAAA,uDAAwB;AACxB,yDAA0B;AAC1B,2DAA4B;AAC5B,uDAAwB;AACxB,sDAAuB;AACvB,uDAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/literal.ts"],"names":[],"mappings":";;;AAAA,IAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAUlC,IAAiB,OAAO,CAyDvB;AAzDD,WAAiB,OAAO;IACtB;;;OAGG;IACH,SAAgB,EAAE,CAAI,KAAQ;;QAC5B,gBAAS,GAAC,OAAO,IAAG,KAAK,KAAG;IAC9B,CAAC;IAFe,UAAE,KAEjB,CAAA;IA2BD;;;OAGG;IACH,SAAgB,SAAS,CAAI,GAAQ;QACnC,OAAO,OAAO,IAAI,GAAG,CAAC;IACxB,CAAC;IAFe,iBAAS,YAExB,CAAA;IAED;;;OAGG;IACH,SAAgB,QAAQ,CAAI,GAAe;QACzC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAFe,gBAAQ,WAEvB,CAAA;IAED;;;OAGG;IACH,SAAgB,aAAa,CAAC,GAAQ;QACpC,OAAO,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IACjE,CAAC;IAFe,qBAAa,gBAE5B,CAAA;AACH,CAAC,EAzDgB,OAAO,GAAP,eAAO,KAAP,eAAO,QAyDvB"}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/literal.ts"],"names":[],"mappings":";;;AAAA,IAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAUlC,IAAiB,OAAO,CA2DvB;AA3DD,WAAiB,OAAO;IACtB;;;OAGG;IACH,SAAgB,EAAE,CAAI,KAAQ;;QAC5B,gBAAS,GAAC,OAAO,IAAG,KAAK,KAAG;IAC9B,CAAC;IAFe,UAAE,KAEjB,CAAA;IA6BD;;;OAGG;IACH,SAAgB,SAAS,CAAI,GAAQ;QACnC,OAAO,OAAO,IAAI,GAAG,CAAC;IACxB,CAAC;IAFe,iBAAS,YAExB,CAAA;IAED;;;OAGG;IACH,SAAgB,QAAQ,CAAI,GAAe;QACzC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAFe,gBAAQ,WAEvB,CAAA;IAED;;;OAGG;IACH,SAAgB,aAAa,CAAC,GAAQ;QACpC,OAAO,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IACjE,CAAC;IAFe,qBAAa,gBAE5B,CAAA;AACH,CAAC,EA3DgB,OAAO,GAAP,eAAO,KAAP,eAAO,QA2DvB"}
@@ -23,7 +23,7 @@ var Match;
23
23
  matchers[_i] = arguments[_i];
24
24
  }
25
25
  try {
26
- for (var matchers_1 = tslib_1.__values(matchers), matchers_1_1 = matchers_1.next(); !matchers_1_1.done; matchers_1_1 = matchers_1.next()) {
26
+ for (var matchers_1 = (0, tslib_1.__values)(matchers), matchers_1_1 = matchers_1.next(); !matchers_1_1.done; matchers_1_1 = matchers_1.next()) {
27
27
  var matcher = matchers_1_1.value;
28
28
  if (!matchSingle(value, matcher, value, value)) {
29
29
  return false;
@@ -58,7 +58,7 @@ var Match;
58
58
  matchers[_i] = arguments[_i];
59
59
  }
60
60
  try {
61
- for (var matchers_2 = tslib_1.__values(matchers), matchers_2_1 = matchers_2.next(); !matchers_2_1.done; matchers_2_1 = matchers_2.next()) {
61
+ for (var matchers_2 = (0, tslib_1.__values)(matchers), matchers_2_1 = matchers_2.next(); !matchers_2_1.done; matchers_2_1 = matchers_2.next()) {
62
62
  var matcher = matchers_2_1.value;
63
63
  if (matchSingle(value, matcher, value, value)) {
64
64
  return true;
@@ -98,7 +98,7 @@ var Match;
98
98
  for (var _i = 0; _i < arguments.length; _i++) {
99
99
  matches[_i] = arguments[_i];
100
100
  }
101
- return function (value) { return Match.all(value).apply(void 0, tslib_1.__spreadArray([], tslib_1.__read(matches))); };
101
+ return function (value) { return Match.all(value).apply(void 0, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(matches), false)); };
102
102
  }
103
103
  Match.createAll = createAll;
104
104
  /**
@@ -125,7 +125,7 @@ var Match;
125
125
  for (var _i = 0; _i < arguments.length; _i++) {
126
126
  matches[_i] = arguments[_i];
127
127
  }
128
- return function (value) { return Match.any(value).apply(void 0, tslib_1.__spreadArray([], tslib_1.__read(matches))); };
128
+ return function (value) { return Match.any(value).apply(void 0, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(matches), false)); };
129
129
  }
130
130
  Match.createAny = createAny;
131
131
  })(Match = exports.Match || (exports.Match = {}));
@@ -134,10 +134,12 @@ function matchSingle(value, matcher, parent, root) {
134
134
  return matcher(value, parent, root);
135
135
  }
136
136
  if (null === value || undefined === value || typeof value !== 'object') {
137
- if (typeof matcher !== 'object' || null === matcher)
137
+ if (typeof matcher !== 'object' || null === matcher) {
138
138
  return matcher === value;
139
- if (internal_1.Literal.isLiteral(matcher))
139
+ }
140
+ if (internal_1.Literal.isLiteral(matcher)) {
140
141
  return internal_1.Literal.getValue(matcher) === value;
142
+ }
141
143
  return matcher === value;
142
144
  }
143
145
  if (Array.isArray(matcher)) {
@@ -1 +1 @@
1
- {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ function patch(value) {
27
27
  }
28
28
  var result = value;
29
29
  try {
30
- for (var patches_1 = tslib_1.__values(patches), patches_1_1 = patches_1.next(); !patches_1_1.done; patches_1_1 = patches_1.next()) {
30
+ 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()) {
31
31
  var p = patches_1_1.value;
32
32
  result = patchSingle(result, p, result, result);
33
33
  }
@@ -63,7 +63,7 @@ var Patch;
63
63
  patches[_i] = arguments[_i];
64
64
  }
65
65
  return function (value) {
66
- return patch(value).apply(void 0, tslib_1.__spreadArray([], tslib_1.__read(patches)));
66
+ return patch(value).apply(void 0, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(patches), false));
67
67
  };
68
68
  }
69
69
  Patch.create = create;
@@ -109,13 +109,13 @@ function patchSingle(value, patcher, parent, root) {
109
109
  }
110
110
  return (result !== null && result !== void 0 ? result : arr);
111
111
  }
112
- var clone = valueIsArray ? tslib_1.__spreadArray([], tslib_1.__read(value)) : tslib_1.__assign({}, value);
112
+ var clone = valueIsArray ? (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(value), false) : (0, tslib_1.__assign)({}, value);
113
113
  var changed = false;
114
114
  for (var key in patcher) {
115
- if (!(key in clone))
115
+ var patchKey = patcher[key];
116
+ if (!(key in clone) && typeof patchKey === 'function')
116
117
  continue;
117
118
  var oldValue = clone[key];
118
- var patchKey = patcher[key];
119
119
  if (undefined === patchKey) {
120
120
  base_1.RimbuError.throwInvalidUsageError('Do not use undefined directly in patch objects, but use Literal.of(undefined) instead due to type limitations.');
121
121
  }
@@ -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
@@ -22,7 +22,7 @@ var Path;
22
22
  var items = path.split('.');
23
23
  var result = source;
24
24
  try {
25
- for (var items_1 = tslib_1.__values(items), items_1_1 = items_1.next(); !items_1_1.done; items_1_1 = items_1.next()) {
25
+ 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()) {
26
26
  var item = items_1_1.value;
27
27
  result = result[item];
28
28
  }
@@ -49,12 +49,12 @@ var Path;
49
49
  var e_2, _a;
50
50
  var items = path.split('.');
51
51
  var last = items.pop();
52
- var result = tslib_1.__assign({}, source);
52
+ var result = (0, tslib_1.__assign)({}, source);
53
53
  var current = result;
54
54
  try {
55
- for (var items_2 = tslib_1.__values(items), items_2_1 = items_2.next(); !items_2_1.done; items_2_1 = items_2.next()) {
55
+ 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()) {
56
56
  var item = items_2_1.value;
57
- current[item] = tslib_1.__assign({}, current[item]);
57
+ current[item] = (0, tslib_1.__assign)({}, current[item]);
58
58
  current = current[item];
59
59
  }
60
60
  }
@@ -88,7 +88,7 @@ var Path;
88
88
  patches[_i - 2] = arguments[_i];
89
89
  }
90
90
  var value = Path.getValue(source, path);
91
- var newValue = internal_1.patch(value).apply(void 0, tslib_1.__spreadArray([], tslib_1.__read(patches)));
91
+ var newValue = (0, internal_1.patch)(value).apply(void 0, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(patches), false));
92
92
  if (Object.is(value, newValue))
93
93
  return source;
94
94
  return Path.setValue(source, path, newValue);
@@ -1 +1 @@
1
- {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":";;;;AAAA,uCAAmD;AAYnD,IAAiB,IAAI,CAyGpB;AAzGD,WAAiB,IAAI;IAsBnB;;;;;;;;;;;OAWG;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,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,aAAQ,WAavB,CAAA;IAED;;;;;;;OAOG;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,wBAAQ,MAAM,CAAE,CAAC;QAE7B,IAAI,OAAO,GAAQ,MAAM,CAAC;;YAE1B,KAAmB,IAAA,UAAA,iBAAA,KAAK,CAAA,4BAAA,+CAAE;gBAArB,IAAM,IAAI,kBAAA;gBACb,OAAO,CAAC,IAAI,CAAC,wBAAQ,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;;;;;;;;;OASG;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,gBAAK,CAAC,KAAK,CAAC,wDAAI,OAAO,GAAC,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,EAzGgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAyGpB"}
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/path.ts"],"names":[],"mappings":";;;;AAAA,uCAAmD;AAYnD,IAAiB,IAAI,CAyGpB;AAzGD,WAAiB,IAAI;IAsBnB;;;;;;;;;;;OAWG;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;;;;;;;OAOG;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;;;;;;;;;OASG;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,EAzGgB,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAyGpB"}
@@ -98,7 +98,7 @@ var Tuple;
98
98
  for (var _i = 1; _i < arguments.length; _i++) {
99
99
  values[_i - 1] = arguments[_i];
100
100
  }
101
- return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(tuple)), tslib_1.__read(values));
101
+ return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(tuple), false), (0, tslib_1.__read)(values), false);
102
102
  }
103
103
  Tuple.append = append;
104
104
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../src/tuple.ts"],"names":[],"mappings":";;;;AAAA,oCAAkC;AAQlC,IAAiB,KAAK,CA4JrB;AA5JD,WAAiB,KAAK;IAWpB;;;;;;OAMG;IACH,SAAgB,EAAE;QAAiC,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,2BAAY;;QAC7D,OAAO,MAAa,CAAC;IACvB,CAAC;IAFe,QAAE,KAEjB,CAAA;IAED;;;;;;;;OAQG;IACH,SAAgB,QAAQ,CACtB,KAAQ,EACR,KAAQ;QAER,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IALe,cAAQ,WAKvB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,KAAK,CAAyB,KAAQ;QACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,WAAK,QAEpB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,MAAM,CAAyB,KAAQ;QACrD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,YAAM,SAErB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,IAAI,CAClB,KAAyB;QAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;IACxC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;;;;OAUG;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;;;;;;;;OAQG;IACH,SAAgB,MAAM,CAGpB,KAAQ;QAAE,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,+BAAY;;QACtB,sEAAW,KAAK,mBAAK,MAAM,GAAE;IAC/B,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;;;;OAUG;IACH,SAAgB,MAAM,CACpB,MAAU,EACV,MAAU;QAEV,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAQ,CAAC;IACtC,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;AACH,CAAC,EA5JgB,KAAK,GAAL,aAAK,KAAL,aAAK,QA4JrB"}
1
+ {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../src/tuple.ts"],"names":[],"mappings":";;;;AAAA,oCAAkC;AAQlC,IAAiB,KAAK,CA4JrB;AA5JD,WAAiB,KAAK;IAWpB;;;;;;OAMG;IACH,SAAgB,EAAE;QAAiC,gBAAY;aAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;YAAZ,2BAAY;;QAC7D,OAAO,MAAa,CAAC;IACvB,CAAC;IAFe,QAAE,KAEjB,CAAA;IAED;;;;;;;;OAQG;IACH,SAAgB,QAAQ,CACtB,KAAQ,EACR,KAAQ;QAER,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IALe,cAAQ,WAKvB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,KAAK,CAAyB,KAAQ;QACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,WAAK,QAEpB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,MAAM,CAAyB,KAAQ;QACrD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAFe,YAAM,SAErB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,IAAI,CAClB,KAAyB;QAEzB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;IACxC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;;;;OAUG;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;;;;;;;;OAQG;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;;;;;;;;;;OAUG;IACH,SAAgB,MAAM,CACpB,MAAU,EACV,MAAU;QAEV,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAQ,CAAC;IACtC,CAAC;IALe,YAAM,SAKrB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;IAED;;;;;;;OAOG;IACH,SAAgB,IAAI,CAClB,KAA+B;QAE/B,OAAO,UAAG,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;IAChC,CAAC;IAJe,UAAI,OAInB,CAAA;AACH,CAAC,EA5JgB,KAAK,GAAL,aAAK,KAAL,aAAK,QA4JrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/literal.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAUlC,MAAM,KAAW,OAAO,CAyDvB;AAzDD,WAAiB,OAAO;IACtB;;;OAGG;IACH,SAAgB,EAAE,CAAI,KAAQ;QAC5B,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAFe,UAAE,KAEjB,CAAA;IA2BD;;;OAGG;IACH,SAAgB,SAAS,CAAI,GAAQ;QACnC,OAAO,OAAO,IAAI,GAAG,CAAC;IACxB,CAAC;IAFe,iBAAS,YAExB,CAAA;IAED;;;OAGG;IACH,SAAgB,QAAQ,CAAI,GAAe;QACzC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAFe,gBAAQ,WAEvB,CAAA;IAED;;;OAGG;IACH,SAAgB,aAAa,CAAC,GAAQ;QACpC,OAAO,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IACjE,CAAC;IAFe,qBAAa,gBAE5B,CAAA;AACH,CAAC,EAzDgB,OAAO,KAAP,OAAO,QAyDvB"}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/literal.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAUlC,MAAM,KAAW,OAAO,CA2DvB;AA3DD,WAAiB,OAAO;IACtB;;;OAGG;IACH,SAAgB,EAAE,CAAI,KAAQ;QAC5B,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAFe,UAAE,KAEjB,CAAA;IA6BD;;;OAGG;IACH,SAAgB,SAAS,CAAI,GAAQ;QACnC,OAAO,OAAO,IAAI,GAAG,CAAC;IACxB,CAAC;IAFe,iBAAS,YAExB,CAAA;IAED;;;OAGG;IACH,SAAgB,QAAQ,CAAI,GAAe;QACzC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAFe,gBAAQ,WAEvB,CAAA;IAED;;;OAGG;IACH,SAAgB,aAAa,CAAC,GAAQ;QACpC,OAAO,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IACjE,CAAC;IAFe,qBAAa,gBAE5B,CAAA;AACH,CAAC,EA3DgB,OAAO,KAAP,OAAO,QA2DvB"}
@@ -92,10 +92,12 @@ function matchSingle(value, matcher, parent, root) {
92
92
  return matcher(value, parent, root);
93
93
  }
94
94
  if (null === value || undefined === value || typeof value !== 'object') {
95
- if (typeof matcher !== 'object' || null === matcher)
95
+ if (typeof matcher !== 'object' || null === matcher) {
96
96
  return matcher === value;
97
- if (Literal.isLiteral(matcher))
97
+ }
98
+ if (Literal.isLiteral(matcher)) {
98
99
  return Literal.getValue(matcher) === value;
100
+ }
99
101
  return matcher === value;
100
102
  }
101
103
  if (Array.isArray(matcher)) {
@@ -1 +1 @@
1
- {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/match.ts"],"names":[],"mappings":"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"}
@@ -86,10 +86,10 @@ function patchSingle(value, patcher, parent, root) {
86
86
  const clone = valueIsArray ? [...value] : Object.assign({}, value);
87
87
  let changed = false;
88
88
  for (const key in patcher) {
89
- if (!(key in clone))
89
+ const patchKey = patcher[key];
90
+ if (!(key in clone) && typeof patchKey === 'function')
90
91
  continue;
91
92
  const oldValue = clone[key];
92
- const patchKey = patcher[key];
93
93
  if (undefined === patchKey) {
94
94
  RimbuError.throwInvalidUsageError('Do not use undefined directly in patch objects, but use Literal.of(undefined) instead due to type limitations.');
95
95
  }
@@ -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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"}
@@ -3,9 +3,9 @@ declare type LITERAL = typeof LITERAL;
3
3
  /**
4
4
  * Type to represent Literal values for the match and patch functions.
5
5
  */
6
- export declare type Literal<T> = {
6
+ export interface Literal<T> {
7
7
  readonly [LITERAL]: T;
8
- };
8
+ }
9
9
  export declare namespace Literal {
10
10
  /**
11
11
  * Returns a Literal value embedding the given `value`.
@@ -15,9 +15,9 @@ export declare namespace Literal {
15
15
  /**
16
16
  * Excludes Iterable types
17
17
  */
18
- type NoIterable = {
19
- [Symbol.iterator]?: never;
20
- };
18
+ interface NoIterable {
19
+ readonly [Symbol.iterator]?: never;
20
+ }
21
21
  /**
22
22
  * A plain object that is not iterable
23
23
  */
@@ -6,7 +6,8 @@ import { Immutable, Literal } from './internal';
6
6
  * @typeparam P - the parant type
7
7
  * @typeparam R - the root type
8
8
  */
9
- export declare type Match<T, P = T, R = T> = T extends Literal.Obj ? Match.MatchObj<T, P, R> : T extends readonly unknown[] ? Match.MatchArray<T, P, R> : Match.Compare<T, P, R>;
9
+ export declare type Match<T> = MatchHelper<T, T, T>;
10
+ declare type MatchHelper<T, P, R> = T extends Literal.Obj ? Match.MatchObj<T, P, R> : T extends readonly any[] ? Match.MatchArray<T, P, R> : Match.Compare<T, P, R>;
10
11
  export declare namespace Match {
11
12
  /**
12
13
  * Type to determine the allowed input type for `match` functions given an object type T.
@@ -15,7 +16,7 @@ export declare namespace Match {
15
16
  * @typeparam R - the root type
16
17
  */
17
18
  type MatchObj<T, P, R> = (Match.Compare<T, P, R> | {
18
- [K in keyof T]?: Match<T[K], T, R>;
19
+ [K in keyof T]?: MatchHelper<T[K], T, R>;
19
20
  }) & Literal.NoIterable;
20
21
  /**
21
22
  * Type representing at least one Match object for type T
@@ -35,10 +36,10 @@ export declare namespace Match {
35
36
  * @typeparam P - the parent type
36
37
  * @typeparam R - the root type
37
38
  */
38
- type MatchArray<T extends readonly unknown[], P, R> = (Match.Compare<T, P, R> | {
39
+ type MatchArray<T extends readonly any[], P, R> = (Match.Compare<T, P, R> | {
39
40
  [K in {
40
41
  [K2 in keyof T]: K2;
41
- }[keyof T]]?: Match<T[K], T, R>;
42
+ }[keyof T]]?: MatchHelper<T[K], T, R>;
42
43
  }) & Literal.NoIterable;
43
44
  /**
44
45
  * Returns true if the given `value` matches all of the given objects in the `matchers` array.
@@ -99,3 +100,4 @@ export declare namespace Match {
99
100
  */
100
101
  function createAny<T, T2 extends T = T>(...matches: Match.Multi<T2>): (value: T) => boolean;
101
102
  }
103
+ export {};
@@ -6,7 +6,8 @@ import { Literal } from './internal';
6
6
  * @typeparam P - the parant type
7
7
  * @typeparam R - the root type
8
8
  */
9
- export declare type Patch<T, P = T, R = T> = T extends Literal.Obj ? Patch.PatchObj<T, P, R> : T extends readonly unknown[] ? Patch.PatchArray<T, P, R> : Patch.Update<T, P, R>;
9
+ export declare type Patch<T> = PatchHelper<T, T, T>;
10
+ declare type PatchHelper<T, P, R> = T extends Literal.Obj ? Patch.PatchObj<T, P, R> : T extends readonly unknown[] ? Patch.PatchArray<T, P, R> : Patch.Update<T, P, R>;
10
11
  /**
11
12
  * Returns an updated version of given `value`, without modifying the value, where the contents
12
13
  * are updated according to the given `patches` Patch array.
@@ -31,7 +32,7 @@ export declare namespace Patch {
31
32
  * @typeparam R - the root type
32
33
  */
33
34
  type PatchObj<T extends Literal.Obj, P = T, R = T> = Patch.Update<T, P, R> | {
34
- [K in keyof T]?: Patch<T[K], T, R>;
35
+ [K in keyof T]?: PatchHelper<T[K], T, R>;
35
36
  };
36
37
  /**
37
38
  * Type representing at least one Patch object for type T
@@ -52,11 +53,11 @@ export declare namespace Patch {
52
53
  * @typeparam R - the root type
53
54
  */
54
55
  type PatchArray<T extends readonly unknown[], P, R> = (Patch.Update<T, P, R> | (T extends readonly (infer E)[] ? {
55
- [Patch.MAP]: Patch<E, T, R>;
56
+ [Patch.MAP]: PatchHelper<E, T, R>;
56
57
  } : never) | {
57
58
  [K in {
58
59
  [K2 in keyof T]: K2;
59
- }[keyof T]]?: Patch<T[K], T, R>;
60
+ }[keyof T]]?: PatchHelper<T[K], T, R>;
60
61
  }) & Literal.NoIterable;
61
62
  /**
62
63
  * Returns a function that patches a given object of type `T` with the given `patches`
@@ -71,3 +72,4 @@ export declare namespace Patch {
71
72
  */
72
73
  function create<T, T2 extends T = T>(...patches: Patch.Multi<T2>): (value: T) => T;
73
74
  }
75
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rimbu/deep",
3
- "version": "0.7.4",
3
+ "version": "0.8.1",
4
4
  "description": "Tools to use handle plain JS objects as immutable objects",
5
5
  "keywords": [
6
6
  "immutable",
@@ -12,7 +12,7 @@
12
12
  "rimbu",
13
13
  "typescript"
14
14
  ],
15
- "homepage": "http://rimbu.org",
15
+ "homepage": "https://rimbu.org",
16
16
  "author": {
17
17
  "name": "Arvid Nicolaas",
18
18
  "email": "arvid@rimbu.org",
@@ -56,9 +56,9 @@
56
56
  },
57
57
  "sideEffects": false,
58
58
  "dependencies": {
59
- "@rimbu/base": "^0.6.5",
60
- "@rimbu/common": "^0.7.3",
61
- "tslib": "^2.3.0"
59
+ "@rimbu/base": "^0.7.1",
60
+ "@rimbu/common": "^0.8.1",
61
+ "tslib": "^2.3.1"
62
62
  },
63
63
  "publishConfig": {
64
64
  "access": "public"
@@ -66,5 +66,5 @@
66
66
  "denoify": {
67
67
  "replacer": "../../config/denoify-rimbu-replacer.js"
68
68
  },
69
- "gitHead": "f6fad673f48ce3d44d6b0f931c0182c8231526ca"
69
+ "gitHead": "d507e628ab82d501bc31351d69168e09bac5ae14"
70
70
  }
package/src/literal.ts CHANGED
@@ -4,9 +4,9 @@ type LITERAL = typeof LITERAL;
4
4
  /**
5
5
  * Type to represent Literal values for the match and patch functions.
6
6
  */
7
- export type Literal<T> = {
7
+ export interface Literal<T> {
8
8
  readonly [LITERAL]: T;
9
- };
9
+ }
10
10
 
11
11
  export namespace Literal {
12
12
  /**
@@ -20,7 +20,9 @@ export namespace Literal {
20
20
  /**
21
21
  * Excludes Iterable types
22
22
  */
23
- export type NoIterable = { [Symbol.iterator]?: never };
23
+ export interface NoIterable {
24
+ readonly [Symbol.iterator]?: never;
25
+ }
24
26
 
25
27
  /**
26
28
  * A plain object that is not iterable
package/src/match.ts CHANGED
@@ -8,9 +8,11 @@ import { Immutable, Literal } from './internal';
8
8
  * @typeparam P - the parant type
9
9
  * @typeparam R - the root type
10
10
  */
11
- export type Match<T, P = T, R = T> = T extends Literal.Obj
11
+ export type Match<T> = MatchHelper<T, T, T>;
12
+
13
+ type MatchHelper<T, P, R> = T extends Literal.Obj
12
14
  ? Match.MatchObj<T, P, R>
13
- : T extends readonly unknown[]
15
+ : T extends readonly any[]
14
16
  ? Match.MatchArray<T, P, R>
15
17
  : Match.Compare<T, P, R>;
16
18
 
@@ -23,7 +25,7 @@ export namespace Match {
23
25
  */
24
26
  export type MatchObj<T, P, R> = (
25
27
  | Match.Compare<T, P, R>
26
- | { [K in keyof T]?: Match<T[K], T, R> }
28
+ | { [K in keyof T]?: MatchHelper<T[K], T, R> }
27
29
  ) &
28
30
  Literal.NoIterable;
29
31
 
@@ -53,10 +55,10 @@ export namespace Match {
53
55
  * @typeparam P - the parent type
54
56
  * @typeparam R - the root type
55
57
  */
56
- export type MatchArray<T extends readonly unknown[], P, R> = (
58
+ export type MatchArray<T extends readonly any[], P, R> = (
57
59
  | Match.Compare<T, P, R>
58
60
  | {
59
- [K in { [K2 in keyof T]: K2 }[keyof T]]?: Match<T[K], T, R>;
61
+ [K in { [K2 in keyof T]: K2 }[keyof T]]?: MatchHelper<T[K], T, R>;
60
62
  }
61
63
  ) &
62
64
  Literal.NoIterable;
@@ -71,7 +73,7 @@ export namespace Match {
71
73
  * matchAll({ g: { h: 'abc' }})({ g: { h: v => v.length > 1 }}) => true
72
74
  */
73
75
  export function all<T>(value: T): (...matchers: Match.Multi<T>) => boolean {
74
- return (...matchers) => {
76
+ return (...matchers): boolean => {
75
77
  for (const matcher of matchers) {
76
78
  if (!matchSingle<any, any, any>(value, matcher, value, value)) {
77
79
  return false;
@@ -92,7 +94,7 @@ export namespace Match {
92
94
  * matchAny({ g: { h: 'abc' }})({ g: { h: 'a' }}, { g: { h: v => v.length > 1 }}) => true
93
95
  */
94
96
  export function any<T>(value: T): (...matchers: Match.Multi<T>) => boolean {
95
- return (...matchers) => {
97
+ return (...matchers): boolean => {
96
98
  for (const matcher of matchers) {
97
99
  if (matchSingle<any, any, any>(value, matcher, value, value)) {
98
100
  return true;
@@ -123,7 +125,7 @@ export namespace Match {
123
125
  export function createAll<T, T2 extends T = T>(
124
126
  ...matches: Match.Multi<T2>
125
127
  ): (value: T) => boolean {
126
- return (value) => Match.all<any>(value)(...matches);
128
+ return (value): boolean => Match.all<any>(value)(...matches);
127
129
  }
128
130
 
129
131
  /**
@@ -148,13 +150,13 @@ export namespace Match {
148
150
  export function createAny<T, T2 extends T = T>(
149
151
  ...matches: Match.Multi<T2>
150
152
  ): (value: T) => boolean {
151
- return (value) => Match.any<any>(value)(...matches);
153
+ return (value): boolean => Match.any<any>(value)(...matches);
152
154
  }
153
155
  }
154
156
 
155
- function matchSingle<T, P = T, R = T>(
157
+ function matchSingle<T, P, R>(
156
158
  value: Immutable<T>,
157
- matcher: Match<T, P, R>,
159
+ matcher: MatchHelper<T, P, R>,
158
160
  parent: Immutable<P>,
159
161
  root: Immutable<R>
160
162
  ): boolean {
@@ -163,10 +165,12 @@ function matchSingle<T, P = T, R = T>(
163
165
  }
164
166
 
165
167
  if (null === value || undefined === value || typeof value !== 'object') {
166
- if (typeof matcher !== 'object' || null === matcher)
168
+ if (typeof matcher !== 'object' || null === matcher) {
167
169
  return (matcher as any) === value;
168
- if (Literal.isLiteral<T>(matcher))
170
+ }
171
+ if (Literal.isLiteral(matcher)) {
169
172
  return Literal.getValue(matcher) === value;
173
+ }
170
174
  return (matcher as any) === value;
171
175
  }
172
176
 
@@ -180,8 +184,8 @@ function matchSingle<T, P = T, R = T>(
180
184
 
181
185
  if (null === matcher) return false;
182
186
 
183
- if (Literal.isLiteral<T>(matcher)) {
184
- return Literal.getValue<T>(matcher) === value;
187
+ if (Literal.isLiteral(matcher)) {
188
+ return Literal.getValue(matcher) === value;
185
189
  }
186
190
 
187
191
  const valueIsArray = Array.isArray(value);
@@ -191,10 +195,10 @@ function matchSingle<T, P = T, R = T>(
191
195
  return (matcher as any) === value;
192
196
  }
193
197
 
194
- for (const key in matcher as T) {
198
+ for (const key in matcher as any) {
195
199
  if (!(key in value)) return false;
196
200
 
197
- const matchKey = (matcher as T)[key];
201
+ const matchKey = (matcher as any)[key];
198
202
 
199
203
  if (undefined === matchKey) {
200
204
  RimbuError.throwInvalidUsageError(
package/src/patch.ts CHANGED
@@ -8,7 +8,9 @@ import { Literal } from './internal';
8
8
  * @typeparam P - the parant type
9
9
  * @typeparam R - the root type
10
10
  */
11
- export type Patch<T, P = T, R = T> = T extends Literal.Obj
11
+ export type Patch<T> = PatchHelper<T, T, T>;
12
+
13
+ type PatchHelper<T, P, R> = T extends Literal.Obj
12
14
  ? Patch.PatchObj<T, P, R>
13
15
  : T extends readonly unknown[]
14
16
  ? Patch.PatchArray<T, P, R>
@@ -29,11 +31,16 @@ export type Patch<T, P = T, R = T> = T extends Literal.Obj
29
31
  * // => { a: 3, b: 4 }
30
32
  */
31
33
  export function patch<T>(value: T): (...patches: Patch.Multi<T>) => T {
32
- return function (...patches) {
34
+ return function (...patches): T {
33
35
  let result = value;
34
36
 
35
37
  for (const p of patches) {
36
- result = patchSingle(result, p as Patch<T>, result, result);
38
+ result = patchSingle(
39
+ result as any,
40
+ p as any,
41
+ result as any,
42
+ result as any
43
+ );
37
44
  }
38
45
 
39
46
  return result;
@@ -51,7 +58,7 @@ export namespace Patch {
51
58
  */
52
59
  export type PatchObj<T extends Literal.Obj, P = T, R = T> =
53
60
  | Patch.Update<T, P, R>
54
- | { [K in keyof T]?: Patch<T[K], T, R> };
61
+ | { [K in keyof T]?: PatchHelper<T[K], T, R> };
55
62
 
56
63
  /**
57
64
  * Type representing at least one Patch object for type T
@@ -77,9 +84,11 @@ export namespace Patch {
77
84
  */
78
85
  export type PatchArray<T extends readonly unknown[], P, R> = (
79
86
  | Patch.Update<T, P, R>
80
- | (T extends readonly (infer E)[] ? { [Patch.MAP]: Patch<E, T, R> } : never)
87
+ | (T extends readonly (infer E)[]
88
+ ? { [Patch.MAP]: PatchHelper<E, T, R> }
89
+ : never)
81
90
  | {
82
- [K in { [K2 in keyof T]: K2 }[keyof T]]?: Patch<T[K], T, R>;
91
+ [K in { [K2 in keyof T]: K2 }[keyof T]]?: PatchHelper<T[K], T, R>;
83
92
  }
84
93
  ) &
85
94
  Literal.NoIterable;
@@ -98,14 +107,14 @@ export namespace Patch {
98
107
  export function create<T, T2 extends T = T>(
99
108
  ...patches: Patch.Multi<T2>
100
109
  ): (value: T) => T {
101
- return (value) =>
110
+ return (value): T =>
102
111
  patch<T>(value)(...(patches as unknown as Patch.Multi<T>));
103
112
  }
104
113
  }
105
114
 
106
- function patchSingle<T, P = T, R = T>(
115
+ function patchSingle<T, P, R>(
107
116
  value: T,
108
- patcher: Patch<T, P, R>,
117
+ patcher: PatchHelper<T, P, R>,
109
118
  parent: P,
110
119
  root: R
111
120
  ): T {
@@ -115,8 +124,8 @@ function patchSingle<T, P = T, R = T>(
115
124
 
116
125
  if (null === value || undefined === value || typeof value !== 'object') {
117
126
  if (typeof patcher !== 'object' || null === patcher) return patcher as any;
118
- if (Literal.isLiteral<T>(patcher)) {
119
- return Literal.getValue(patcher);
127
+ if (Literal.isLiteral(patcher)) {
128
+ return Literal.getValue(patcher) as any;
120
129
  }
121
130
  return value;
122
131
  }
@@ -129,8 +138,8 @@ function patchSingle<T, P = T, R = T>(
129
138
 
130
139
  if (null === patcher) return null as any;
131
140
 
132
- if (Literal.isLiteral<T>(patcher)) {
133
- return Literal.getValue(patcher);
141
+ if (Literal.isLiteral(patcher)) {
142
+ return Literal.getValue(patcher) as any;
134
143
  }
135
144
 
136
145
  const valueIsArray = Array.isArray(value);
@@ -160,11 +169,12 @@ function patchSingle<T, P = T, R = T>(
160
169
  const clone: any = valueIsArray ? ([...(value as any)] as any) : { ...value };
161
170
  let changed = false;
162
171
 
163
- for (const key in patcher as T) {
164
- if (!(key in clone)) continue;
172
+ for (const key in patcher as any) {
173
+ const patchKey = (patcher as any)[key];
174
+
175
+ if (!(key in clone) && typeof patchKey === 'function') continue;
165
176
 
166
177
  const oldValue = clone[key];
167
- const patchKey = (patcher as T)[key];
168
178
 
169
179
  if (undefined === patchKey) {
170
180
  RimbuError.throwInvalidUsageError(