@thi.ng/interceptors 2.2.50 → 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,172 +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.50](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.49...@thi.ng/interceptors@2.2.50) (2021-08-08)
7
-
8
- **Note:** Version bump only for package @thi.ng/interceptors
9
-
10
-
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)
11
7
 
12
8
 
9
+ ### Build System
13
10
 
14
- ## [2.2.49](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.48...@thi.ng/interceptors@2.2.49) (2021-08-04)
11
+ * major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
15
12
 
16
- **Note:** Version bump only for package @thi.ng/interceptors
17
13
 
14
+ ### BREAKING CHANGES
18
15
 
16
+ * discontinue CommonJS & UMD versions
19
17
 
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
20
24
 
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
21
29
 
22
- ## [2.2.48](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.47...@thi.ng/interceptors@2.2.48) (2021-07-01)
23
30
 
24
- **Note:** Version bump only for package @thi.ng/interceptors
25
31
 
26
32
 
27
33
 
28
34
 
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)
29
36
 
30
- ## [2.2.47](https://github.com/thi-ng/umbrella/compare/@thi.ng/interceptors@2.2.46...@thi.ng/interceptors@2.2.47) (2021-06-08)
37
+ ### Features
31
38
 
32
- **Note:** Version bump only for package @thi.ng/interceptors
39
+ - **interceptors:** add module logger, setLogger() ([17f050d](https://github.com/thi-ng/umbrella/commit/17f050d))
33
40
 
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)
34
42
 
43
+ ### Bug Fixes
35
44
 
45
+ - **interceptors:** update EventBus ctor args ([557a78f](https://github.com/thi-ng/umbrella/commit/557a78f))
36
46
 
47
+ ### Features
37
48
 
38
- # [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)
49
+ - **interceptors:** enable TS strict compiler flags (refactor) ([13bea8f](https://github.com/thi-ng/umbrella/commit/13bea8f))
39
50
 
40
- ### Features
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)
41
52
 
42
- * **interceptors:** add module logger, setLogger() ([17f050d](https://github.com/thi-ng/umbrella/commit/17f050d))
53
+ ### Build System
43
54
 
44
- # [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)
55
+ - update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
45
56
 
46
- ### Bug Fixes
57
+ ### BREAKING CHANGES
47
58
 
48
- * **interceptors:** update EventBus ctor args ([557a78f](https://github.com/thi-ng/umbrella/commit/557a78f))
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.
49
62
 
50
- ### 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)
51
64
 
52
- * **interceptors:** enable TS strict compiler flags (refactor) ([13bea8f](https://github.com/thi-ng/umbrella/commit/13bea8f))
65
+ ### Features
53
66
 
54
- # [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)
67
+ - **interceptors:** update forwardSideFx(), refactor iceps as arrow fns ([9334f83](https://github.com/thi-ng/umbrella/commit/9334f83))
55
68
 
56
- ### Build System
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)
57
70
 
58
- * update package build scripts & outputs, imports in ~50 packages ([b54b703](https://github.com/thi-ng/umbrella/commit/b54b703))
71
+ ### Performance Improvements
59
72
 
60
- ### BREAKING CHANGES
73
+ - **interceptors:** update valueSetter()/valueUpdater() ([73c7b8a](https://github.com/thi-ng/umbrella/commit/73c7b8a))
61
74
 
62
- * enabled multi-outputs (ES6 modules, CJS, UMD)
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)
63
76
 
64
- - build scripts now first build ES6 modules in package root, then call
65
- `scripts/bundle-module` to build minified CJS & UMD bundles in `/lib`
66
- - all imports MUST be updated to only refer to package level
67
- (not individual files anymore). tree shaking in user land will get rid of
68
- all unused imported symbols.
77
+ ### Features
69
78
 
70
- # [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)
79
+ - **interceptors:** update dispatch() / dispatchNow() ([5e72970](https://github.com/thi-ng/umbrella/commit/5e72970))
71
80
 
72
- ### 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)
73
82
 
74
- * **interceptors:** update forwardSideFx(), refactor iceps as arrow fns ([9334f83](https://github.com/thi-ng/umbrella/commit/9334f83))
83
+ ### Features
75
84
 
76
- <a name="1.8.7"></a>
77
- ## [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)
85
+ - **interceptors:** add dispatch/dispatchNow() helper interceptors ([6748515](https://github.com/thi-ng/umbrella/commit/6748515))
78
86
 
79
- ### Performance Improvements
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)
80
88
 
81
- * **interceptors:** update valueSetter()/valueUpdater() ([73c7b8a](https://github.com/thi-ng/umbrella/commit/73c7b8a))
89
+ ### Bug Fixes
82
90
 
83
- <a name="1.8.0"></a>
84
- # [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)
91
+ - **interceptors:** multiple sidefx value assignment ([c4d8851](https://github.com/thi-ng/umbrella/commit/c4d8851))
85
92
 
86
- ### Features
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)
87
94
 
88
- * **interceptors:** update dispatch() / dispatchNow() ([5e72970](https://github.com/thi-ng/umbrella/commit/5e72970))
95
+ ### Features
89
96
 
90
- <a name="1.7.0"></a>
91
- # [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)
97
+ - **interceptors:** add dispatchLater() ([f4a095a](https://github.com/thi-ng/umbrella/commit/f4a095a))
92
98
 
93
- ### Features
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)
94
100
 
95
- * **interceptors:** add dispatch/dispatchNow() helper interceptors ([6748515](https://github.com/thi-ng/umbrella/commit/6748515))
101
+ ### Features
96
102
 
97
- <a name="1.6.1"></a>
98
- ## [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)
103
+ - **interceptors:** add EV_TOGGLE_VALUE handler, update EV_UNDO/REDO ([87e3b48](https://github.com/thi-ng/umbrella/commit/87e3b48))
99
104
 
100
- ### Bug Fixes
101
-
102
- * **interceptors:** multiple sidefx value assignment ([c4d8851](https://github.com/thi-ng/umbrella/commit/c4d8851))
103
-
104
- <a name="1.6.0"></a>
105
- # [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)
106
-
107
- ### Features
108
-
109
- * **interceptors:** add dispatchLater() ([f4a095a](https://github.com/thi-ng/umbrella/commit/f4a095a))
110
-
111
- <a name="1.5.0"></a>
112
- # [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)
113
-
114
- ### Features
115
-
116
- * **interceptors:** add EV_TOGGLE_VALUE handler, update EV_UNDO/REDO ([87e3b48](https://github.com/thi-ng/umbrella/commit/87e3b48))
117
-
118
- <a name="1.4.0"></a>
119
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)
120
106
 
121
107
  ### Features
122
108
 
123
- * **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))
124
110
 
125
- <a name="1.3.3"></a>
126
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)
127
112
 
128
113
  ### Bug Fixes
129
114
 
130
- * **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))
131
116
 
132
- <a name="1.3.1"></a>
133
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)
134
118
 
135
119
  ### Bug Fixes
136
120
 
137
- * **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))
138
122
 
139
- <a name="1.3.0"></a>
140
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)
141
124
 
142
125
  ### Features
143
126
 
144
- * **interceptors:** add default FX_UNDO/REDO side fx ([a102eb7](https://github.com/thi-ng/umbrella/commit/a102eb7))
145
- * **interceptors:** add undo/redo handlers/fx & snapshot() interceptor ([3c92f7e](https://github.com/thi-ng/umbrella/commit/3c92f7e))
146
- * **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))
147
130
 
148
- <a name="1.2.0"></a>
149
- # [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)
150
132
 
151
- ### Features
133
+ ### Features
152
134
 
153
- * **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))
154
136
 
155
- <a name="1.1.0"></a>
156
- # [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)
157
138
 
158
- ### Features
139
+ ### Features
159
140
 
160
- * **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))
161
142
 
162
- <a name="1.0.5"></a>
163
- ## [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)
164
144
 
165
- ### Bug Fixes
145
+ ### Bug Fixes
166
146
 
167
- * **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))
168
148
 
169
- <a name="1.0.0"></a>
170
- # 1.0.0 (2018-03-17)
149
+ # 1.0.0 (2018-03-17)
171
150
 
172
- ### Documentation
151
+ ### Documentation
173
152
 
174
- * **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
@@ -16,6 +16,7 @@ This project is part of the
16
16
  - [Events vs Effects:](#events-vs-effects)
17
17
  - [Great, but why?](#great-but-why)
18
18
  - [Status](#status)
19
+ - [Related packages](#related-packages)
19
20
  - [Installation](#installation)
20
21
  - [Dependencies](#dependencies)
21
22
  - [Usage examples](#usage-examples)
@@ -116,25 +117,39 @@ commented source code and examples for now:
116
117
 
117
118
  ### Status
118
119
 
119
- **STABLE** - used in production
120
+ **DEPRECATED** - no further development planned
120
121
 
121
122
  [Search or submit any issues for this package](https://github.com/thi-ng/umbrella/issues?q=%5Binterceptors%5D+in%3Atitle)
122
123
 
124
+ ### Related packages
125
+
126
+ - [@thi.ng/atom](https://github.com/thi-ng/umbrella/tree/develop/packages/atom) - Mutable wrappers for nested immutable values with optional undo/redo history and transaction support
127
+ - [@thi.ng/hdom](https://github.com/thi-ng/umbrella/tree/develop/packages/hdom) - Lightweight vanilla ES6 UI component trees with customizable branch-local behaviors
128
+ - [@thi.ng/rdom](https://github.com/thi-ng/umbrella/tree/develop/packages/rdom) - Lightweight, reactive, VDOM-less UI/DOM components with async lifecycle and [@thi.ng/hiccup](https://github.com/thi-ng/umbrella/tree/develop/packages/hiccup) compatible
129
+
123
130
  ## Installation
124
131
 
125
132
  ```bash
126
133
  yarn add @thi.ng/interceptors
127
134
  ```
128
135
 
136
+ ES module import:
137
+
129
138
  ```html
130
- // ES module
131
- <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
132
148
 
133
- // UMD
134
- <script src="https://unpkg.com/@thi.ng/interceptors/lib/index.umd.js" crossorigin></script>
149
+ > const interceptors = await import("@thi.ng/interceptors");
135
150
  ```
136
151
 
137
- 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
138
153
 
139
154
  ## Dependencies
140
155
 
@@ -142,6 +157,7 @@ Package sizes (gzipped, pre-treeshake): ESM: 2.17 KB / CJS: 2.30 KB / UMD: 2.27
142
157
  - [@thi.ng/atom](https://github.com/thi-ng/umbrella/tree/develop/packages/atom)
143
158
  - [@thi.ng/checks](https://github.com/thi-ng/umbrella/tree/develop/packages/checks)
144
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)
145
161
  - [@thi.ng/paths](https://github.com/thi-ng/umbrella/tree/develop/packages/paths)
146
162
 
147
163
  ## Usage examples
@@ -153,8 +169,9 @@ directory are using this package.
153
169
  A selection:
154
170
 
155
171
  | Screenshot | Description | Live demo | Source |
156
- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------- |
172
+ |:---------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------|:----------------------------------------------------------|:---------------------------------------------------------------------------------------|
157
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) |
158
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) |
159
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) |
160
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.50",
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.1.8",
42
- "@thi.ng/atom": "^4.1.39",
43
- "@thi.ng/checks": "^2.9.9",
44
- "@thi.ng/errors": "^1.3.3",
45
- "@thi.ng/paths": "^4.2.11"
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,9 +56,32 @@
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": {
78
+ "related": [
79
+ "atom",
80
+ "hdom",
81
+ "rdom"
82
+ ],
83
+ "status": "deprecated",
66
84
  "year": 2016
67
85
  },
68
- "gitHead": "c3d907d40c82572fea9c259007dd68c9acbd5f1d"
86
+ "gitHead": "9ac1344b38b565eb894306fbf72233b6c0b2d115"
69
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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"}