@thi.ng/interceptors 2.2.53 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,148 +3,151 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [2.2.53](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.52...@thi.ng/interceptors@2.2.53) (2021-09-03)
6
+ # [3.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.53...@thi.ng/interceptors@3.0.0) (2021-10-12)
7
7
 
8
- **Note:** Version bump only for package @thi.ng/interceptors
9
8
 
9
+ ### Build System
10
10
 
11
+ * major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
11
12
 
12
13
 
14
+ ### BREAKING CHANGES
13
15
 
14
- # [2.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.1.3...@thi.ng/interceptors@2.2.0) (2019-08-21)
16
+ * discontinue CommonJS & UMD versions
15
17
 
16
- ### Features
18
+ - only ESM modules will be published from now on
19
+ - CJS obsolete due to ESM support in recent versions of node:
20
+ - i.e. launch NodeJS via:
21
+ - `node --experimental-specifier-resolution=node --experimental-repl-await`
22
+ - in the node REPL use `await import(...)` instead of `require()`
23
+ - UMD obsolete due to widespread browser support for ESM
17
24
 
18
- * **interceptors:** add module logger, setLogger() ([17f050d](https://github.com/thi-ng/umbrella/commit/17f050d))
25
+ Also:
26
+ - normalize/restructure/reorg all package.json files
27
+ - cleanup all build scripts, remove obsolete
28
+ - switch from mocha to @thi.ng/testament for all tests
19
29
 
20
- # [2.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.0.12...@thi.ng/interceptors@2.1.0) (2019-07-07)
21
30
 
22
- ### Bug Fixes
23
31
 
24
- * **interceptors:** update EventBus ctor args ([557a78f](https://github.com/thi-ng/umbrella/commit/557a78f))
25
32
 
26
- ### Features
27
33
 
28
- * **interceptors:** enable TS strict compiler flags (refactor) ([13bea8f](https://github.com/thi-ng/umbrella/commit/13bea8f))
29
34
 
30
- # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.9.2...@thi.ng/interceptors@2.0.0) (2019-01-21)
35
+ # [2.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.1.3...@thi.ng/interceptors@2.2.0) (2019-08-21)
31
36
 
32
- ### Build System
37
+ ### Features
33
38
 
34
- * update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
39
+ - **interceptors:** add module logger, setLogger() ([17f050d](https://github.com/thi-ng/umbrella/commit/17f050d))
35
40
 
36
- ### BREAKING CHANGES
41
+ # [2.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.0.12...@thi.ng/interceptors@2.1.0) (2019-07-07)
37
42
 
38
- * enabled multi-outputs (ES6 modules, CJS, UMD)
43
+ ### Bug Fixes
39
44
 
40
- - build scripts now first build ES6 modules in package root, then call
41
- `scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
42
- - all imports MUST be updated to only refer to package level
43
- (not individual files anymore). tree shaking in user land will get rid of
44
- all unused imported symbols.
45
+ - **interceptors:** update EventBus ctor args ([557a78f](https://github.com/thi-ng/umbrella/commit/557a78f))
45
46
 
46
- # [1.9.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.8.17...@thi.ng/interceptors@1.9.0) (2018-11-13)
47
+ ### Features
47
48
 
48
- ### Features
49
+ - **interceptors:** enable TS strict compiler flags (refactor) ([13bea8f](https://github.com/thi-ng/umbrella/commit/13bea8f))
49
50
 
50
- * **interceptors:** update forwardSideFx(), refactor iceps as arrow fns ([9334f83](https://github.com/thi-ng/umbrella/commit/9334f83))
51
+ # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.9.2...@thi.ng/interceptors@2.0.0) (2019-01-21)
51
52
 
52
- <a name="1.8.7"></a>
53
- ## [1.8.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.8.6...@thi.ng/interceptors@1.8.7) (2018-07-11)
53
+ ### Build System
54
54
 
55
- ### Performance Improvements
55
+ - update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
56
56
 
57
- * **interceptors:** update valueSetter()/valueUpdater() ([73c7b8a](https://github.com/thi-ng/umbrella/commit/73c7b8a))
57
+ ### BREAKING CHANGES
58
58
 
59
- <a name="1.8.0"></a>
60
- # [1.8.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.7.4...@thi.ng/interceptors@1.8.0) (2018-05-14)
59
+ - enabled multi-outputs (ES6 modules, CJS, UMD)
60
+ - build scripts now first build ES6 modules in package root, then call `scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
61
+ - all imports MUST be updated to only refer to package level (not individual files anymore). tree shaking in user land will get rid of all unused imported symbols.
61
62
 
62
- ### Features
63
+ # [1.9.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.8.17...@thi.ng/interceptors@1.9.0) (2018-11-13)
63
64
 
64
- * **interceptors:** update dispatch() / dispatchNow() ([5e72970](https://github.com/thi-ng/umbrella/commit/5e72970))
65
+ ### Features
65
66
 
66
- <a name="1.7.0"></a>
67
- # [1.7.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.6.2...@thi.ng/interceptors@1.7.0) (2018-05-09)
67
+ - **interceptors:** update forwardSideFx(), refactor iceps as arrow fns ([9334f83](https://github.com/thi-ng/umbrella/commit/9334f83))
68
68
 
69
- ### Features
69
+ ## [1.8.7](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.8.6...@thi.ng/interceptors@1.8.7) (2018-07-11)
70
70
 
71
- * **interceptors:** add dispatch/dispatchNow() helper interceptors ([6748515](https://github.com/thi-ng/umbrella/commit/6748515))
71
+ ### Performance Improvements
72
72
 
73
- <a name="1.6.1"></a>
74
- ## [1.6.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.6.0...@thi.ng/interceptors@1.6.1) (2018-04-28)
73
+ - **interceptors:** update valueSetter()/valueUpdater() ([73c7b8a](https://github.com/thi-ng/umbrella/commit/73c7b8a))
75
74
 
76
- ### Bug Fixes
75
+ # [1.8.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.7.4...@thi.ng/interceptors@1.8.0) (2018-05-14)
77
76
 
78
- * **interceptors:** multiple sidefx value assignment ([c4d8851](https://github.com/thi-ng/umbrella/commit/c4d8851))
77
+ ### Features
79
78
 
80
- <a name="1.6.0"></a>
81
- # [1.6.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.5.3...@thi.ng/interceptors@1.6.0) (2018-04-27)
79
+ - **interceptors:** update dispatch() / dispatchNow() ([5e72970](https://github.com/thi-ng/umbrella/commit/5e72970))
82
80
 
83
- ### Features
81
+ # [1.7.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.6.2...@thi.ng/interceptors@1.7.0) (2018-05-09)
84
82
 
85
- * **interceptors:** add dispatchLater() ([f4a095a](https://github.com/thi-ng/umbrella/commit/f4a095a))
83
+ ### Features
86
84
 
87
- <a name="1.5.0"></a>
88
- # [1.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.4.1...@thi.ng/interceptors@1.5.0) (2018-04-19)
85
+ - **interceptors:** add dispatch/dispatchNow() helper interceptors ([6748515](https://github.com/thi-ng/umbrella/commit/6748515))
89
86
 
90
- ### Features
87
+ ## [1.6.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.6.0...@thi.ng/interceptors@1.6.1) (2018-04-28)
88
+
89
+ ### Bug Fixes
90
+
91
+ - **interceptors:** multiple sidefx value assignment ([c4d8851](https://github.com/thi-ng/umbrella/commit/c4d8851))
92
+
93
+ # [1.6.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.5.3...@thi.ng/interceptors@1.6.0) (2018-04-27)
94
+
95
+ ### Features
96
+
97
+ - **interceptors:** add dispatchLater() ([f4a095a](https://github.com/thi-ng/umbrella/commit/f4a095a))
91
98
 
92
- * **interceptors:** add EV_TOGGLE_VALUE handler, update EV_UNDO/REDO ([87e3b48](https://github.com/thi-ng/umbrella/commit/87e3b48))
99
+ # [1.5.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.4.1...@thi.ng/interceptors@1.5.0) (2018-04-19)
100
+
101
+ ### Features
102
+
103
+ - **interceptors:** add EV_TOGGLE_VALUE handler, update EV_UNDO/REDO ([87e3b48](https://github.com/thi-ng/umbrella/commit/87e3b48))
93
104
 
94
- <a name="1.4.0"></a>
95
105
  # [1.4.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.3.3...@thi.ng/interceptors@1.4.0) (2018-04-17)
96
106
 
97
107
  ### Features
98
108
 
99
- * **interceptors:** add event handler instrumentation ([1a6ac54](https://github.com/thi-ng/umbrella/commit/1a6ac54))
109
+ - **interceptors:** add event handler instrumentation ([1a6ac54](https://github.com/thi-ng/umbrella/commit/1a6ac54))
100
110
 
101
- <a name="1.3.3"></a>
102
111
  ## [1.3.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.3.2...@thi.ng/interceptors@1.3.3) (2018-04-17)
103
112
 
104
113
  ### Bug Fixes
105
114
 
106
- * **interceptors:** filter out undefined sidefx vals ([d7ff997](https://github.com/thi-ng/umbrella/commit/d7ff997))
115
+ - **interceptors:** filter out undefined sidefx vals ([d7ff997](https://github.com/thi-ng/umbrella/commit/d7ff997))
107
116
 
108
- <a name="1.3.1"></a>
109
117
  ## [1.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.3.0...@thi.ng/interceptors@1.3.1) (2018-04-16)
110
118
 
111
119
  ### Bug Fixes
112
120
 
113
- * **interceptors:** update undo handling to support history cursors ([9a83d4e](https://github.com/thi-ng/umbrella/commit/9a83d4e))
121
+ - **interceptors:** update undo handling to support history cursors ([9a83d4e](https://github.com/thi-ng/umbrella/commit/9a83d4e))
114
122
 
115
- <a name="1.3.0"></a>
116
123
  # [1.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.2.0...@thi.ng/interceptors@1.3.0) (2018-04-15)
117
124
 
118
125
  ### Features
119
126
 
120
- * **interceptors:** add default FX_UNDO/REDO side fx ([a102eb7](https://github.com/thi-ng/umbrella/commit/a102eb7))
121
- * **interceptors:** add undo/redo handlers/fx & snapshot() interceptor ([3c92f7e](https://github.com/thi-ng/umbrella/commit/3c92f7e))
122
- * **interceptors:** update processQueue(), expose full ctx to handlers ([183af61](https://github.com/thi-ng/umbrella/commit/183af61))
127
+ - **interceptors:** add default FX_UNDO/REDO side fx ([a102eb7](https://github.com/thi-ng/umbrella/commit/a102eb7))
128
+ - **interceptors:** add undo/redo handlers/fx & snapshot() interceptor ([3c92f7e](https://github.com/thi-ng/umbrella/commit/3c92f7e))
129
+ - **interceptors:** update processQueue(), expose full ctx to handlers ([183af61](https://github.com/thi-ng/umbrella/commit/183af61))
123
130
 
124
- <a name="1.2.0"></a>
125
- # [1.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.1.5...@thi.ng/interceptors@1.2.0) (2018-04-13)
131
+ # [1.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.1.5...@thi.ng/interceptors@1.2.0) (2018-04-13)
126
132
 
127
- ### Features
133
+ ### Features
128
134
 
129
- * **interceptors:** add ensureStateRange() & ensureParamRange() iceps ([86883e3](https://github.com/thi-ng/umbrella/commit/86883e3))
135
+ - **interceptors:** add ensureStateRange() & ensureParamRange() iceps ([86883e3](https://github.com/thi-ng/umbrella/commit/86883e3))
130
136
 
131
- <a name="1.1.0"></a>
132
- # [1.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.0.5...@thi.ng/interceptors@1.1.0) (2018-03-21)
137
+ # [1.1.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.0.5...@thi.ng/interceptors@1.1.0) (2018-03-21)
133
138
 
134
- ### Features
139
+ ### Features
135
140
 
136
- * **interceptors:** update error handling, add [@thi](https://github.com/thi).ng/api dep ([501d56f](https://github.com/thi-ng/umbrella/commit/501d56f))
141
+ - **interceptors:** update error handling, add [@thi](https://github.com/thi).ng/api dep ([501d56f](https://github.com/thi-ng/umbrella/commit/501d56f))
137
142
 
138
- <a name="1.0.5"></a>
139
- ## [1.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.0.4...@thi.ng/interceptors@1.0.5) (2018-03-19)
143
+ ## [1.0.5](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@1.0.4...@thi.ng/interceptors@1.0.5) (2018-03-19)
140
144
 
141
- ### Bug Fixes
145
+ ### Bug Fixes
142
146
 
143
- * **interceptors:** InterceptorPredicate args ([76c5e0a](https://github.com/thi-ng/umbrella/commit/76c5e0a))
147
+ - **interceptors:** InterceptorPredicate args ([76c5e0a](https://github.com/thi-ng/umbrella/commit/76c5e0a))
144
148
 
145
- <a name="1.0.0"></a>
146
- # 1.0.0 (2018-03-17)
149
+ # 1.0.0 (2018-03-17)
147
150
 
148
- ### Documentation
151
+ ### Documentation
149
152
 
150
- * **interceptors:** add/extract @thi.ng/interceptors package from @th.ng/atom ([195a6ff](https://github.com/thi-ng/umbrella/commit/195a6ff))
153
+ - **interceptors:** add/extract @thi.ng/interceptors package from @th.ng/atom ([195a6ff](https://github.com/thi-ng/umbrella/commit/195a6ff))
package/README.md CHANGED
@@ -133,15 +133,23 @@ commented source code and examples for now:
133
133
  yarn add @thi.ng/interceptors
134
134
  ```
135
135
 
136
+ ES module import:
137
+
136
138
  ```html
137
- // ES module
138
- <script type="module" src="https://unpkg.com/@thi.ng/interceptors?module" crossorigin></script>
139
+ <script type="module" src="https://cdn.skypack.dev/@thi.ng/interceptors"></script>
140
+ ```
141
+
142
+ [Skypack documentation](https://docs.skypack.dev/)
143
+
144
+ For NodeJS (v14.6+):
145
+
146
+ ```text
147
+ node --experimental-specifier-resolution=node --experimental-repl-await
139
148
 
140
- // UMD
141
- <script src="https://unpkg.com/@thi.ng/interceptors/lib/index.umd.js" crossorigin></script>
149
+ > const interceptors = await import("@thi.ng/interceptors");
142
150
  ```
143
151
 
144
- Package sizes (gzipped, pre-treeshake): ESM: 2.17 KB / CJS: 2.30 KB / UMD: 2.27 KB
152
+ Package sizes (gzipped, pre-treeshake): ESM: 2.23 KB
145
153
 
146
154
  ## Dependencies
147
155
 
@@ -149,6 +157,7 @@ Package sizes (gzipped, pre-treeshake): ESM: 2.17 KB / CJS: 2.30 KB / UMD: 2.27
149
157
  - [@thi.ng/atom](https://github.com/thi-ng/umbrella/tree/develop/packages/atom)
150
158
  - [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/develop/packages/checks)
151
159
  - [@thi.ng/errors](https://github.com/thi-ng/umbrella/tree/develop/packages/errors)
160
+ - [@thi.ng/logger](https://github.com/thi-ng/umbrella/tree/develop/packages/logger)
152
161
  - [@thi.ng/paths](https://github.com/thi-ng/umbrella/tree/develop/packages/paths)
153
162
 
154
163
  ## Usage examples
@@ -162,6 +171,7 @@ A selection:
162
171
  | Screenshot | Description | Live demo | Source |
163
172
  |:---------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------------------------------------------------|:---------------------------------------------------------------------------------------|
164
173
  | | Minimal demo using interceptors with an async side effect | [Demo](https://demo.thi.ng/umbrella/async-effect/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/async-effect) |
174
+ | | Custom dropdown UI component for hdom | [Demo](https://demo.thi.ng/umbrella/hdom-dropdown/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-dropdown) |
165
175
  | | Custom dropdown UI component w/ fuzzy search | [Demo](https://demo.thi.ng/umbrella/hdom-dropdown-fuzzy/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/hdom-dropdown-fuzzy) |
166
176
  | | Event handling w/ interceptors and side effects | [Demo](https://demo.thi.ng/umbrella/interceptor-basics/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/interceptor-basics) |
167
177
  | | Event handling w/ interceptors and side effects | [Demo](https://demo.thi.ng/umbrella/interceptor-basics2/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/interceptor-basics2) |
package/api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { ILogger } from "@thi.ng/api";
2
1
  import type { ReadonlyAtom } from "@thi.ng/atom";
2
+ import type { ILogger } from "@thi.ng/logger";
3
3
  export declare type InterceptorFn = (state: any, e: Event, bus: IDispatch, ctx: InterceptorContext) => InterceptorContext | void;
4
4
  export declare type InterceptorPredicate = (state: any, e: Event, bus: IDispatch, ctx: InterceptorContext) => boolean;
5
5
  export declare type SideEffect = (x: any, bus: IDispatch, ctx: InterceptorContext) => any;
package/api.js CHANGED
@@ -1,4 +1,4 @@
1
- import { NULL_LOGGER } from "@thi.ng/api";
1
+ import { NULL_LOGGER } from "@thi.ng/logger/null";
2
2
  // Built-in event ID constants
3
3
  export const EV_SET_VALUE = "--set-value";
4
4
  export const EV_UPDATE_VALUE = "--update-value";
package/event-bus.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { IDeref, IObjectOf } from "@thi.ng/api";
2
- import { IAtom } from "@thi.ng/atom";
2
+ import type { IAtom } from "@thi.ng/atom";
3
3
  import { EffectDef, EffectPriority, Event, EventDef, IDispatch, Interceptor, InterceptorContext, InterceptorFn, SideEffect } from "./api";
4
4
  /**
5
5
  * Batched event processor for using composable interceptors for event
package/event-bus.js CHANGED
@@ -1,7 +1,11 @@
1
- import { Atom } from "@thi.ng/atom";
2
- import { implementsFunction, isArray, isFunction, isPromise, } from "@thi.ng/checks";
3
- import { illegalArgs } from "@thi.ng/errors";
4
- import { setInUnsafe, updateInUnsafe } from "@thi.ng/paths";
1
+ import { Atom } from "@thi.ng/atom/atom";
2
+ import { implementsFunction } from "@thi.ng/checks/implements-function";
3
+ import { isArray } from "@thi.ng/checks/is-array";
4
+ import { isFunction } from "@thi.ng/checks/is-function";
5
+ import { isPromise } from "@thi.ng/checks/is-promise";
6
+ import { illegalArgs } from "@thi.ng/errors/illegal-arguments";
7
+ import { setInUnsafe } from "@thi.ng/paths/set-in";
8
+ import { updateInUnsafe } from "@thi.ng/paths/update-in";
5
9
  import { EV_REDO, EV_SET_VALUE, EV_TOGGLE_VALUE, EV_UNDO, EV_UPDATE_VALUE, FX_CANCEL, FX_DELAY, FX_DISPATCH, FX_DISPATCH_ASYNC, FX_DISPATCH_NOW, FX_FETCH, FX_STATE, LOGGER, } from "./api";
6
10
  /**
7
11
  * Batched event processor for using composable interceptors for event
@@ -58,6 +62,13 @@ import { EV_REDO, EV_SET_VALUE, EV_TOGGLE_VALUE, EV_UNDO, EV_UPDATE_VALUE, FX_CA
58
62
  * - dynamic addition/removal of handlers & effects
59
63
  */
60
64
  export class StatelessEventBus {
65
+ state;
66
+ eventQueue;
67
+ currQueue;
68
+ currCtx;
69
+ handlers;
70
+ effects;
71
+ priorities;
61
72
  /**
62
73
  * Creates a new event bus instance with given handler and effect
63
74
  * definitions (all optional).
@@ -523,6 +534,7 @@ export class StatelessEventBus {
523
534
  * the default implementation for most use cases.
524
535
  */
525
536
  export class EventBus extends StatelessEventBus {
537
+ state;
526
538
  /**
527
539
  * Creates a new event bus instance with given parent state, handler
528
540
  * and effect definitions (all optional).
@@ -670,7 +682,7 @@ export class EventBus extends StatelessEventBus {
670
682
  const prev = this.state.deref();
671
683
  this.currQueue = [...this.eventQueue];
672
684
  this.eventQueue.length = 0;
673
- ctx = this.currCtx = Object.assign(Object.assign({}, ctx), { [FX_STATE]: prev });
685
+ ctx = this.currCtx = { ...ctx, [FX_STATE]: prev };
674
686
  for (let e of this.currQueue) {
675
687
  this.processEvent(ctx, e);
676
688
  }
package/interceptors.js CHANGED
@@ -1,4 +1,6 @@
1
- import { defSetterUnsafe, defUpdaterUnsafe, getInUnsafe } from "@thi.ng/paths";
1
+ import { getInUnsafe } from "@thi.ng/paths/get-in";
2
+ import { defSetterUnsafe } from "@thi.ng/paths/setter";
3
+ import { defUpdaterUnsafe } from "@thi.ng/paths/updater";
2
4
  import { FX_CANCEL, FX_DISPATCH, FX_DISPATCH_NOW, FX_STATE, } from "./api";
3
5
  /**
4
6
  * Debug interceptor to log the current event to the console.
@@ -102,7 +104,11 @@ export const snapshot = (id = "history") => (_, __, ___, ctx) => ctx[id].record(
102
104
  * @param err - interceptor triggered on predicate failure
103
105
  */
104
106
  export const ensurePred = (pred, err) => (state, e, bus, ctx) => !pred(state, e, bus, ctx)
105
- ? Object.assign({ [FX_CANCEL]: true }, (err ? err(state, e, bus, ctx) : null)) : undefined;
107
+ ? {
108
+ [FX_CANCEL]: true,
109
+ ...(err ? err(state, e, bus, ctx) : null),
110
+ }
111
+ : undefined;
106
112
  const eventPathState = (state, path, e) => getInUnsafe(state, path ? path(e) : e[1]);
107
113
  /**
108
114
  * Specialization of {@link ensurePred} to ensure a state value is less than
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@thi.ng/interceptors",
3
- "version": "2.2.53",
3
+ "version": "3.0.0",
4
4
  "description": "Interceptor based event bus, side effect & immutable state handling",
5
+ "type": "module",
5
6
  "module": "./index.js",
6
- "main": "./lib/index.js",
7
- "umd:main": "./lib/index.umd.js",
8
7
  "typings": "./index.d.ts",
8
+ "sideEffects": false,
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "https://github.com/thi-ng/umbrella.git"
@@ -24,31 +24,26 @@
24
24
  "author": "Karsten Schmidt <k+npm@thi.ng>",
25
25
  "license": "Apache-2.0",
26
26
  "scripts": {
27
- "build": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module",
28
- "build:release": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module all",
29
- "build:es6": "tsc --declaration",
30
- "build:test": "rimraf build && tsc -p test/tsconfig.json",
31
- "build:check": "tsc --isolatedModules --noEmit",
32
- "test": "mocha test",
33
- "cover": "nyc mocha test && nyc report --reporter=lcov",
34
- "clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib",
35
- "doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
36
- "doc": "typedoc --excludePrivate --out doc --theme ../../tools/doc/typedoc-theme src/index.ts",
27
+ "build": "yarn clean && tsc --declaration",
28
+ "clean": "rimraf *.js *.d.ts *.map doc",
29
+ "doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
37
30
  "doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
38
- "pub": "yarn build:release && yarn publish --access public"
31
+ "doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
32
+ "doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
33
+ "pub": "yarn build && yarn publish --access public",
34
+ "test": "testament test"
39
35
  },
40
36
  "dependencies": {
41
- "@thi.ng/api": "^7.2.0",
42
- "@thi.ng/atom": "^4.1.42",
43
- "@thi.ng/checks": "^2.9.11",
44
- "@thi.ng/errors": "^1.3.4",
45
- "@thi.ng/paths": "^4.2.14"
37
+ "@thi.ng/api": "^8.0.0",
38
+ "@thi.ng/atom": "^5.0.0",
39
+ "@thi.ng/checks": "^3.0.0",
40
+ "@thi.ng/errors": "^2.0.0",
41
+ "@thi.ng/logger": "^0.1.0",
42
+ "@thi.ng/paths": "^5.0.0"
43
+ },
44
+ "devDependencies": {
45
+ "@thi.ng/testament": "^0.1.0"
46
46
  },
47
- "files": [
48
- "*.js",
49
- "*.d.ts",
50
- "lib"
51
- ],
52
47
  "keywords": [
53
48
  "async",
54
49
  "browser",
@@ -61,7 +56,24 @@
61
56
  "publishConfig": {
62
57
  "access": "public"
63
58
  },
64
- "sideEffects": false,
59
+ "files": [
60
+ "*.js",
61
+ "*.d.ts"
62
+ ],
63
+ "exports": {
64
+ ".": {
65
+ "import": "./index.js"
66
+ },
67
+ "./api": {
68
+ "import": "./api.js"
69
+ },
70
+ "./event-bus": {
71
+ "import": "./event-bus.js"
72
+ },
73
+ "./interceptors": {
74
+ "import": "./interceptors.js"
75
+ }
76
+ },
65
77
  "thi.ng": {
66
78
  "related": [
67
79
  "atom",
@@ -71,5 +83,5 @@
71
83
  "status": "deprecated",
72
84
  "year": 2016
73
85
  },
74
- "gitHead": "d971cb3f9b215a95483f78f1a8614015e331146f"
86
+ "gitHead": "9ac1344b38b565eb894306fbf72233b6c0b2d115"
75
87
  }
package/lib/index.js DELETED
@@ -1,391 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var api = require('@thi.ng/api');
6
- var atom = require('@thi.ng/atom');
7
- var checks = require('@thi.ng/checks');
8
- var errors = require('@thi.ng/errors');
9
- var paths = require('@thi.ng/paths');
10
-
11
- const EV_SET_VALUE = "--set-value";
12
- const EV_UPDATE_VALUE = "--update-value";
13
- const EV_TOGGLE_VALUE = "--toggle-value";
14
- const FX_CANCEL = "--cancel";
15
- const FX_DISPATCH = "--dispatch";
16
- const FX_DISPATCH_ASYNC = "--dispatch-async";
17
- const FX_DISPATCH_NOW = "--dispatch-now";
18
- const FX_DELAY = "--delay";
19
- const FX_FETCH = "--fetch";
20
- const FX_STATE = "--state";
21
- const EV_REDO = "--redo";
22
- const EV_UNDO = "--undo";
23
- exports.LOGGER = api.NULL_LOGGER;
24
- const setLogger = (logger) => (exports.LOGGER = logger);
25
-
26
- class StatelessEventBus {
27
- constructor(handlers, effects) {
28
- this.handlers = {};
29
- this.effects = {};
30
- this.eventQueue = [];
31
- this.priorities = [];
32
- this.addBuiltIns();
33
- if (handlers) {
34
- this.addHandlers(handlers);
35
- }
36
- if (effects) {
37
- this.addEffects(effects);
38
- }
39
- }
40
- addBuiltIns() {
41
- this.addEffects({
42
- [FX_DISPATCH]: [(e) => this.dispatch(e), -999],
43
- [FX_DISPATCH_ASYNC]: [
44
- ([id, arg, success, err], bus, ctx) => {
45
- const fx = this.effects[id];
46
- if (fx) {
47
- const p = fx(arg, bus, ctx);
48
- if (checks.isPromise(p)) {
49
- p.then((res) => this.dispatch([success, res])).catch((e) => this.dispatch([err, e]));
50
- }
51
- else {
52
- exports.LOGGER.warn("async effect did not return Promise");
53
- }
54
- }
55
- else {
56
- exports.LOGGER.warn(`skipping invalid async effect: ${id}`);
57
- }
58
- },
59
- -999,
60
- ],
61
- [FX_DELAY]: [
62
- ([x, body]) => new Promise((res) => setTimeout(() => res(body), x)),
63
- 1000,
64
- ],
65
- [FX_FETCH]: [
66
- (req) => fetch(req).then((resp) => {
67
- if (!resp.ok) {
68
- throw new Error(resp.statusText);
69
- }
70
- return resp;
71
- }),
72
- 1000,
73
- ],
74
- });
75
- }
76
- addHandler(id, spec) {
77
- const iceps = this.interceptorsFromSpec(spec);
78
- if (iceps.length > 0) {
79
- if (this.handlers[id]) {
80
- this.removeHandler(id);
81
- exports.LOGGER.warn(`overriding handler for ID: ${id}`);
82
- }
83
- this.handlers[id] = iceps;
84
- }
85
- else {
86
- errors.illegalArgs(`no handlers in spec for ID: ${id}`);
87
- }
88
- }
89
- addHandlers(specs) {
90
- for (let id in specs) {
91
- this.addHandler(id, specs[id]);
92
- }
93
- }
94
- addEffect(id, fx, priority = 1) {
95
- if (this.effects[id]) {
96
- this.removeEffect(id);
97
- exports.LOGGER.warn(`overriding effect for ID: ${id}`);
98
- }
99
- this.effects[id] = fx;
100
- const p = [id, priority];
101
- const priors = this.priorities;
102
- for (let i = 0; i < priors.length; i++) {
103
- if (p[1] < priors[i][1]) {
104
- priors.splice(i, 0, p);
105
- return;
106
- }
107
- }
108
- priors.push(p);
109
- }
110
- addEffects(specs) {
111
- for (let id in specs) {
112
- const fx = specs[id];
113
- if (checks.isArray(fx)) {
114
- this.addEffect(id, fx[0], fx[1]);
115
- }
116
- else {
117
- this.addEffect(id, fx);
118
- }
119
- }
120
- }
121
- instrumentWith(inject, ids) {
122
- const iceps = inject.map(asInterceptor);
123
- const handlers = this.handlers;
124
- for (let id of ids || Object.keys(handlers)) {
125
- const h = handlers[id];
126
- if (h) {
127
- handlers[id] = iceps.concat(h);
128
- }
129
- }
130
- }
131
- removeHandler(id) {
132
- delete this.handlers[id];
133
- }
134
- removeHandlers(ids) {
135
- for (let id of ids) {
136
- this.removeHandler(id);
137
- }
138
- }
139
- removeEffect(id) {
140
- delete this.effects[id];
141
- const p = this.priorities;
142
- for (let i = p.length - 1; i >= 0; i--) {
143
- if (id === p[i][0]) {
144
- p.splice(i, 1);
145
- return;
146
- }
147
- }
148
- }
149
- removeEffects(ids) {
150
- for (let id of ids) {
151
- this.removeEffect(id);
152
- }
153
- }
154
- context() {
155
- return this.currCtx;
156
- }
157
- dispatch(...e) {
158
- this.eventQueue.push(...e);
159
- }
160
- dispatchNow(...e) {
161
- (this.currQueue || this.eventQueue).push(...e);
162
- }
163
- dispatchLater(e, delay = 17) {
164
- setTimeout(() => this.dispatch(e), delay);
165
- }
166
- processQueue(ctx) {
167
- if (this.eventQueue.length > 0) {
168
- this.currQueue = [...this.eventQueue];
169
- this.eventQueue.length = 0;
170
- ctx = this.currCtx = ctx || {};
171
- for (let e of this.currQueue) {
172
- this.processEvent(ctx, e);
173
- }
174
- this.currQueue = this.currCtx = undefined;
175
- this.processEffects(ctx);
176
- return true;
177
- }
178
- return false;
179
- }
180
- processEvent(ctx, e) {
181
- const iceps = this.handlers[e[0]];
182
- if (!iceps) {
183
- exports.LOGGER.warn(`missing handler for event type: ${e[0].toString()}`);
184
- return;
185
- }
186
- if (!this.processForward(ctx, iceps, e)) {
187
- return;
188
- }
189
- this.processReverse(ctx, iceps, e);
190
- }
191
- processForward(ctx, iceps, e) {
192
- let hasPost = false;
193
- for (let i = 0, n = iceps.length; i < n && !ctx[FX_CANCEL]; i++) {
194
- const icep = iceps[i];
195
- if (icep.pre) {
196
- this.mergeEffects(ctx, icep.pre(ctx[FX_STATE], e, this, ctx));
197
- }
198
- hasPost = hasPost || !!icep.post;
199
- }
200
- return hasPost;
201
- }
202
- processReverse(ctx, iceps, e) {
203
- for (let i = iceps.length; --i >= 0 && !ctx[FX_CANCEL];) {
204
- const icep = iceps[i];
205
- if (icep.post) {
206
- this.mergeEffects(ctx, icep.post(ctx[FX_STATE], e, this, ctx));
207
- }
208
- }
209
- }
210
- processEffects(ctx) {
211
- const effects = this.effects;
212
- for (let p of this.priorities) {
213
- const id = p[0];
214
- const val = ctx[id];
215
- val !== undefined && this.processEffect(ctx, effects, id, val);
216
- }
217
- }
218
- processEffect(ctx, effects, id, val) {
219
- const fn = effects[id];
220
- if (id !== FX_STATE) {
221
- for (let v of val) {
222
- fn(v, this, ctx);
223
- }
224
- }
225
- else {
226
- fn(val, this, ctx);
227
- }
228
- }
229
- mergeEffects(ctx, ret) {
230
- if (!ret) {
231
- return;
232
- }
233
- for (let k in ret) {
234
- const v = ret[k];
235
- if (v == null) {
236
- continue;
237
- }
238
- if (k === FX_STATE || k === FX_CANCEL) {
239
- ctx[k] = v;
240
- }
241
- else if (k === FX_DISPATCH_NOW) {
242
- if (checks.isArray(v[0])) {
243
- for (let e of v) {
244
- e && this.dispatchNow(e);
245
- }
246
- }
247
- else {
248
- this.dispatchNow(v);
249
- }
250
- }
251
- else {
252
- ctx[k] || (ctx[k] = []);
253
- if (checks.isArray(v[0])) {
254
- for (let e of v) {
255
- e !== undefined && ctx[k].push(e);
256
- }
257
- }
258
- else {
259
- ctx[k].push(v);
260
- }
261
- }
262
- }
263
- }
264
- interceptorsFromSpec(spec) {
265
- return checks.isArray(spec)
266
- ? spec.map(asInterceptor)
267
- : checks.isFunction(spec)
268
- ? [{ pre: spec }]
269
- : [spec];
270
- }
271
- }
272
- class EventBus extends StatelessEventBus {
273
- constructor(state, handlers, effects) {
274
- super(handlers, effects);
275
- this.state = state || new atom.Atom({});
276
- }
277
- deref() {
278
- return this.state.deref();
279
- }
280
- addBuiltIns() {
281
- super.addBuiltIns();
282
- this.addHandlers({
283
- [EV_SET_VALUE]: (state, [_, [path, val]]) => ({
284
- [FX_STATE]: paths.setInUnsafe(state, path, val),
285
- }),
286
- [EV_UPDATE_VALUE]: (state, [_, [path, fn, ...args]]) => ({
287
- [FX_STATE]: paths.updateInUnsafe(state, path, fn, ...args),
288
- }),
289
- [EV_TOGGLE_VALUE]: (state, [_, path]) => ({
290
- [FX_STATE]: paths.updateInUnsafe(state, path, (x) => !x),
291
- }),
292
- [EV_UNDO]: undoHandler("undo"),
293
- [EV_REDO]: undoHandler("redo"),
294
- });
295
- this.addEffects({
296
- [FX_STATE]: [(state) => this.state.reset(state), -1000],
297
- });
298
- }
299
- processQueue(ctx) {
300
- if (this.eventQueue.length > 0) {
301
- const prev = this.state.deref();
302
- this.currQueue = [...this.eventQueue];
303
- this.eventQueue.length = 0;
304
- ctx = this.currCtx = Object.assign(Object.assign({}, ctx), { [FX_STATE]: prev });
305
- for (let e of this.currQueue) {
306
- this.processEvent(ctx, e);
307
- }
308
- this.currQueue = this.currCtx = undefined;
309
- this.processEffects(ctx);
310
- return this.state.deref() !== prev;
311
- }
312
- return false;
313
- }
314
- }
315
- const asInterceptor = (i) => checks.isFunction(i) ? { pre: i } : i;
316
- const undoHandler = (action) => (_, [__, ev], bus, ctx) => {
317
- const id = ev ? ev[0] : "history";
318
- if (checks.implementsFunction(ctx[id], action)) {
319
- const ok = ctx[id][action]();
320
- return {
321
- [FX_STATE]: bus.state.deref(),
322
- [FX_DISPATCH_NOW]: ev
323
- ? ok !== undefined
324
- ? ev[1]
325
- : ev[2]
326
- : undefined,
327
- };
328
- }
329
- else {
330
- exports.LOGGER.warn("no history in context");
331
- }
332
- };
333
-
334
- const trace = (_, e) => console.log("event:", e);
335
- const forwardSideFx = (fxID) => (_, [__, body]) => ({ [fxID]: body !== undefined ? body : true });
336
- const dispatch = (event) => () => ({
337
- [FX_DISPATCH]: event,
338
- });
339
- const dispatchNow = (event) => () => ({
340
- [FX_DISPATCH_NOW]: event,
341
- });
342
- const snapshot = (id = "history") => (_, __, ___, ctx) => ctx[id].record();
343
- const ensurePred = (pred, err) => (state, e, bus, ctx) => !pred(state, e, bus, ctx)
344
- ? Object.assign({ [FX_CANCEL]: true }, (err ? err(state, e, bus, ctx) : null)) : undefined;
345
- const eventPathState = (state, path, e) => paths.getInUnsafe(state, path ? path(e) : e[1]);
346
- const ensureStateLessThan = (max, path, err) => ensurePred((state, e) => eventPathState(state, path, e) < max, err);
347
- const ensureStateGreaterThan = (min, path, err) => ensurePred((state, e) => eventPathState(state, path, e) > min, err);
348
- const ensureStateRange = (min, max, path, err) => ensurePred((state, e) => {
349
- const x = eventPathState(state, path, e);
350
- return x >= min && x <= max;
351
- }, err);
352
- const ensureParamRange = (min, max, value, err) => ensurePred((_, e) => {
353
- const x = value ? value(e) : e[1];
354
- return x >= min && x <= max;
355
- }, err);
356
- const valueSetter = (path, tx) => {
357
- const $ = paths.defSetterUnsafe(path);
358
- return (state, [_, val]) => ({ [FX_STATE]: $(state, tx ? tx(val) : val) });
359
- };
360
- const valueUpdater = (path, fn) => {
361
- const $ = paths.defUpdaterUnsafe(path, fn);
362
- return (state, [_, ...args]) => ({ [FX_STATE]: $(state, ...args) });
363
- };
364
-
365
- exports.EV_REDO = EV_REDO;
366
- exports.EV_SET_VALUE = EV_SET_VALUE;
367
- exports.EV_TOGGLE_VALUE = EV_TOGGLE_VALUE;
368
- exports.EV_UNDO = EV_UNDO;
369
- exports.EV_UPDATE_VALUE = EV_UPDATE_VALUE;
370
- exports.EventBus = EventBus;
371
- exports.FX_CANCEL = FX_CANCEL;
372
- exports.FX_DELAY = FX_DELAY;
373
- exports.FX_DISPATCH = FX_DISPATCH;
374
- exports.FX_DISPATCH_ASYNC = FX_DISPATCH_ASYNC;
375
- exports.FX_DISPATCH_NOW = FX_DISPATCH_NOW;
376
- exports.FX_FETCH = FX_FETCH;
377
- exports.FX_STATE = FX_STATE;
378
- exports.StatelessEventBus = StatelessEventBus;
379
- exports.dispatch = dispatch;
380
- exports.dispatchNow = dispatchNow;
381
- exports.ensureParamRange = ensureParamRange;
382
- exports.ensurePred = ensurePred;
383
- exports.ensureStateGreaterThan = ensureStateGreaterThan;
384
- exports.ensureStateLessThan = ensureStateLessThan;
385
- exports.ensureStateRange = ensureStateRange;
386
- exports.forwardSideFx = forwardSideFx;
387
- exports.setLogger = setLogger;
388
- exports.snapshot = snapshot;
389
- exports.trace = trace;
390
- exports.valueSetter = valueSetter;
391
- exports.valueUpdater = valueUpdater;
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../api.js","../event-bus.js","../interceptors.js"],"sourcesContent":null,"names":["LOGGER","NULL_LOGGER","isPromise","illegalArgs","isArray","isFunction","Atom","setInUnsafe","updateInUnsafe","implementsFunction","getInUnsafe","defSetterUnsafe","defUpdaterUnsafe"],"mappings":"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"}
package/lib/index.umd.js DELETED
@@ -1 +0,0 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@thi.ng/api"),require("@thi.ng/atom"),require("@thi.ng/checks"),require("@thi.ng/errors"),require("@thi.ng/paths")):"function"==typeof define&&define.amd?define(["exports","@thi.ng/api","@thi.ng/atom","@thi.ng/checks","@thi.ng/errors","@thi.ng/paths"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).thi=e.thi||{},e.thi.ng=e.thi.ng||{},e.thi.ng.interceptors={}),e.thi.ng.api,e.thi.ng.atom,e.thi.ng.checks,e.thi.ng.errors,e.thi.ng.paths)}(this,(function(e,t,s,r,i,n){"use strict";const o="--set-value",h="--update-value",c="--toggle-value",f="--cancel",a="--dispatch",u="--dispatch-async",d="--dispatch-now",l="--delay",p="--fetch",g="--state",E="--redo",v="--undo";e.LOGGER=t.NULL_LOGGER;class m{constructor(e,t){this.handlers={},this.effects={},this.eventQueue=[],this.priorities=[],this.addBuiltIns(),e&&this.addHandlers(e),t&&this.addEffects(t)}addBuiltIns(){this.addEffects({[a]:[e=>this.dispatch(e),-999],[u]:[([t,s,i,n],o,h)=>{const c=this.effects[t];if(c){const t=c(s,o,h);r.isPromise(t)?t.then((e=>this.dispatch([i,e]))).catch((e=>this.dispatch([n,e]))):e.LOGGER.warn("async effect did not return Promise")}else e.LOGGER.warn(`skipping invalid async effect: ${t}`)},-999],[l]:[([e,t])=>new Promise((s=>setTimeout((()=>s(t)),e))),1e3],[p]:[e=>fetch(e).then((e=>{if(!e.ok)throw new Error(e.statusText);return e})),1e3]})}addHandler(t,s){const r=this.interceptorsFromSpec(s);r.length>0?(this.handlers[t]&&(this.removeHandler(t),e.LOGGER.warn(`overriding handler for ID: ${t}`)),this.handlers[t]=r):i.illegalArgs(`no handlers in spec for ID: ${t}`)}addHandlers(e){for(let t in e)this.addHandler(t,e[t])}addEffect(t,s,r=1){this.effects[t]&&(this.removeEffect(t),e.LOGGER.warn(`overriding effect for ID: ${t}`)),this.effects[t]=s;const i=[t,r],n=this.priorities;for(let e=0;e<n.length;e++)if(i[1]<n[e][1])return void n.splice(e,0,i);n.push(i)}addEffects(e){for(let t in e){const s=e[t];r.isArray(s)?this.addEffect(t,s[0],s[1]):this.addEffect(t,s)}}instrumentWith(e,t){const s=e.map(G),r=this.handlers;for(let e of t||Object.keys(r)){const t=r[e];t&&(r[e]=s.concat(t))}}removeHandler(e){delete this.handlers[e]}removeHandlers(e){for(let t of e)this.removeHandler(t)}removeEffect(e){delete this.effects[e];const t=this.priorities;for(let s=t.length-1;s>=0;s--)if(e===t[s][0])return void t.splice(s,1)}removeEffects(e){for(let t of e)this.removeEffect(t)}context(){return this.currCtx}dispatch(...e){this.eventQueue.push(...e)}dispatchNow(...e){(this.currQueue||this.eventQueue).push(...e)}dispatchLater(e,t=17){setTimeout((()=>this.dispatch(e)),t)}processQueue(e){if(this.eventQueue.length>0){this.currQueue=[...this.eventQueue],this.eventQueue.length=0,e=this.currCtx=e||{};for(let t of this.currQueue)this.processEvent(e,t);return this.currQueue=this.currCtx=void 0,this.processEffects(e),!0}return!1}processEvent(t,s){const r=this.handlers[s[0]];r?this.processForward(t,r,s)&&this.processReverse(t,r,s):e.LOGGER.warn(`missing handler for event type: ${s[0].toString()}`)}processForward(e,t,s){let r=!1;for(let i=0,n=t.length;i<n&&!e[f];i++){const n=t[i];n.pre&&this.mergeEffects(e,n.pre(e[g],s,this,e)),r=r||!!n.post}return r}processReverse(e,t,s){for(let r=t.length;--r>=0&&!e[f];){const i=t[r];i.post&&this.mergeEffects(e,i.post(e[g],s,this,e))}}processEffects(e){const t=this.effects;for(let s of this.priorities){const r=s[0],i=e[r];void 0!==i&&this.processEffect(e,t,r,i)}}processEffect(e,t,s,r){const i=t[s];if(s!==g)for(let t of r)i(t,this,e);else i(r,this,e)}mergeEffects(e,t){if(t)for(let s in t){const i=t[s];if(null!=i)if(s===g||s===f)e[s]=i;else if(s===d)if(r.isArray(i[0]))for(let e of i)e&&this.dispatchNow(e);else this.dispatchNow(i);else if(e[s]||(e[s]=[]),r.isArray(i[0]))for(let t of i)void 0!==t&&e[s].push(t);else e[s].push(i)}}interceptorsFromSpec(e){return r.isArray(e)?e.map(G):r.isFunction(e)?[{pre:e}]:[e]}}const G=e=>r.isFunction(e)?{pre:e}:e,L=t=>(s,[i,n],o,h)=>{const c=n?n[0]:"history";if(r.implementsFunction(h[c],t)){const e=h[c][t]();return{[g]:o.state.deref(),[d]:n?void 0!==e?n[1]:n[2]:void 0}}e.LOGGER.warn("no history in context")},_=(e,t)=>(s,r,i,n)=>e(s,r,i,n)?void 0:Object.assign({[f]:!0},t?t(s,r,i,n):null),w=(e,t,s)=>n.getInUnsafe(e,t?t(s):s[1]);e.EV_REDO=E,e.EV_SET_VALUE=o,e.EV_TOGGLE_VALUE=c,e.EV_UNDO=v,e.EV_UPDATE_VALUE=h,e.EventBus=class extends m{constructor(e,t,r){super(t,r),this.state=e||new s.Atom({})}deref(){return this.state.deref()}addBuiltIns(){super.addBuiltIns(),this.addHandlers({[o]:(e,[t,[s,r]])=>({[g]:n.setInUnsafe(e,s,r)}),[h]:(e,[t,[s,r,...i]])=>({[g]:n.updateInUnsafe(e,s,r,...i)}),[c]:(e,[t,s])=>({[g]:n.updateInUnsafe(e,s,(e=>!e))}),[v]:L("undo"),[E]:L("redo")}),this.addEffects({[g]:[e=>this.state.reset(e),-1e3]})}processQueue(e){if(this.eventQueue.length>0){const t=this.state.deref();this.currQueue=[...this.eventQueue],this.eventQueue.length=0,e=this.currCtx=Object.assign(Object.assign({},e),{[g]:t});for(let t of this.currQueue)this.processEvent(e,t);return this.currQueue=this.currCtx=void 0,this.processEffects(e),this.state.deref()!==t}return!1}},e.FX_CANCEL=f,e.FX_DELAY=l,e.FX_DISPATCH=a,e.FX_DISPATCH_ASYNC=u,e.FX_DISPATCH_NOW=d,e.FX_FETCH=p,e.FX_STATE=g,e.StatelessEventBus=m,e.dispatch=e=>()=>({[a]:e}),e.dispatchNow=e=>()=>({[d]:e}),e.ensureParamRange=(e,t,s,r)=>_(((r,i)=>{const n=s?s(i):i[1];return n>=e&&n<=t}),r),e.ensurePred=_,e.ensureStateGreaterThan=(e,t,s)=>_(((s,r)=>w(s,t,r)>e),s),e.ensureStateLessThan=(e,t,s)=>_(((s,r)=>w(s,t,r)<e),s),e.ensureStateRange=(e,t,s,r)=>_(((r,i)=>{const n=w(r,s,i);return n>=e&&n<=t}),r),e.forwardSideFx=e=>(t,[s,r])=>({[e]:void 0===r||r}),e.setLogger=t=>e.LOGGER=t,e.snapshot=(e="history")=>(t,s,r,i)=>i[e].record(),e.trace=(e,t)=>console.log("event:",t),e.valueSetter=(e,t)=>{const s=n.defSetterUnsafe(e);return(e,[r,i])=>({[g]:s(e,t?t(i):i)})},e.valueUpdater=(e,t)=>{const s=n.defUpdaterUnsafe(e,t);return(e,[t,...r])=>({[g]:s(e,...r)})},Object.defineProperty(e,"__esModule",{value:!0})}));
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../api.js","../event-bus.js","../interceptors.js"],"sourcesContent":null,"names":["LOGGER","NULL_LOGGER","isPromise","illegalArgs","isArray","isFunction","Atom","setInUnsafe","updateInUnsafe","implementsFunction","getInUnsafe","defSetterUnsafe","defUpdaterUnsafe"],"mappings":"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"}