effectable 0.1.0 → 1.0.0-canary.2
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 +22 -4
- package/build/bootstrap/bootstrap.d.ts.map +1 -1
- package/build/bootstrap/bootstrap.js +12 -6
- package/build/bootstrap/bootstrap.js.map +1 -1
- package/build/bootstrap/types.d.ts +7 -1
- package/build/bootstrap/types.d.ts.map +1 -1
- package/build/component/GraphRuntime.d.ts +226 -18
- package/build/component/GraphRuntime.d.ts.map +1 -1
- package/build/component/GraphRuntime.js +944 -211
- package/build/component/GraphRuntime.js.map +1 -1
- package/build/component/context.d.ts +3 -11
- package/build/component/context.d.ts.map +1 -1
- package/build/component/context.js +24 -23
- package/build/component/context.js.map +1 -1
- package/build/component/h.d.ts +14 -6
- package/build/component/h.d.ts.map +1 -1
- package/build/component/h.js +19 -1
- package/build/component/h.js.map +1 -1
- package/build/component/refs.d.ts +7 -5
- package/build/component/refs.d.ts.map +1 -1
- package/build/component/refs.js +45 -22
- package/build/component/refs.js.map +1 -1
- package/build/component/types.d.ts +16 -5
- package/build/component/types.d.ts.map +1 -1
- package/build/component/types.js.map +1 -1
- package/build/connect/connect.d.ts.map +1 -1
- package/build/connect/connect.js +3 -12
- package/build/connect/connect.js.map +1 -1
- package/build/connect/types.d.ts +2 -2
- package/build/connect/types.d.ts.map +1 -1
- package/build/runtime/BusDecorators.d.ts +6 -0
- package/build/runtime/BusDecorators.d.ts.map +1 -1
- package/build/runtime/BusDecorators.js +117 -56
- package/build/runtime/BusDecorators.js.map +1 -1
- package/build/runtime/CommandBus.d.ts +1 -1
- package/build/runtime/CommandBus.d.ts.map +1 -1
- package/build/runtime/CommandBus.js +6 -3
- package/build/runtime/CommandBus.js.map +1 -1
- package/build/runtime/HandleRegistry.d.ts +2 -1
- package/build/runtime/HandleRegistry.d.ts.map +1 -1
- package/build/runtime/HandleRegistry.js +38 -7
- package/build/runtime/HandleRegistry.js.map +1 -1
- package/build/runtime/QueryBus.d.ts +1 -1
- package/build/runtime/QueryBus.d.ts.map +1 -1
- package/build/runtime/QueryBus.js +6 -3
- package/build/runtime/QueryBus.js.map +1 -1
- package/build/store/createStore.d.ts +2 -2
- package/build/store/createStore.d.ts.map +1 -1
- package/build/store/createStore.js +31 -4
- package/build/store/createStore.js.map +1 -1
- package/build/store/middleware.d.ts +16 -1
- package/build/store/middleware.d.ts.map +1 -1
- package/build/store/middleware.js +16 -15
- package/build/store/middleware.js.map +1 -1
- package/build/store/types.d.ts +11 -4
- package/build/store/types.d.ts.map +1 -1
- package/build/store/types.js.map +1 -1
- package/package.json +20 -2
|
@@ -62,7 +62,7 @@ function UseImperativeHandle() {
|
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
const ctor = target.constructor;
|
|
65
|
-
const current = Reflect.
|
|
65
|
+
const current = Reflect.getOwnMetadata(USE_IMPERATIVE_HANDLE_METADATA_KEY, ctor);
|
|
66
66
|
const next = typeof current === 'undefined'
|
|
67
67
|
? new Set()
|
|
68
68
|
: new Set(current);
|
|
@@ -89,6 +89,21 @@ function UseRef() {
|
|
|
89
89
|
*/
|
|
90
90
|
class HandleRegistry {
|
|
91
91
|
handles = new Map();
|
|
92
|
+
getInheritedMetadata(ctor, metaKey) {
|
|
93
|
+
let current = ctor;
|
|
94
|
+
while (current != null && typeof current === 'function') {
|
|
95
|
+
const value = Reflect.getOwnMetadata(metaKey, current);
|
|
96
|
+
if (value !== undefined) {
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
const next = Object.getPrototypeOf(current);
|
|
100
|
+
if (typeof next !== 'function' || next === null) {
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
current = next;
|
|
104
|
+
}
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
92
107
|
buildRefHandle(instance) {
|
|
93
108
|
const ctor = instance !== null && typeof instance === 'object'
|
|
94
109
|
? instance.constructor
|
|
@@ -96,7 +111,7 @@ class HandleRegistry {
|
|
|
96
111
|
if (typeof ctor !== 'function') {
|
|
97
112
|
throw new Error('HandleRegistry.autoRegister: invalid instance');
|
|
98
113
|
}
|
|
99
|
-
const refPropertyKey =
|
|
114
|
+
const refPropertyKey = this.getInheritedMetadata(ctor, USE_REF_PROPERTY_METADATA_KEY);
|
|
100
115
|
if (typeof refPropertyKey === 'undefined') {
|
|
101
116
|
throw new Error('HandleRegistry.autoRegister: missing ref property metadata (@UseRef)');
|
|
102
117
|
}
|
|
@@ -104,8 +119,22 @@ class HandleRegistry {
|
|
|
104
119
|
if (typeof ref !== 'object' || ref === null) {
|
|
105
120
|
throw new Error('HandleRegistry.autoRegister: ref property is not an object');
|
|
106
121
|
}
|
|
107
|
-
const methodNames =
|
|
108
|
-
|
|
122
|
+
const methodNames = new Set();
|
|
123
|
+
let current = ctor;
|
|
124
|
+
while (current != null && typeof current === 'function') {
|
|
125
|
+
const ownMethods = Reflect.getOwnMetadata(USE_IMPERATIVE_HANDLE_METADATA_KEY, current);
|
|
126
|
+
if (ownMethods !== undefined) {
|
|
127
|
+
for (const methodName of ownMethods) {
|
|
128
|
+
methodNames.add(methodName);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const next = Object.getPrototypeOf(current);
|
|
132
|
+
if (typeof next !== 'function' || next === null) {
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
current = next;
|
|
136
|
+
}
|
|
137
|
+
if (methodNames.size === 0) {
|
|
109
138
|
throw new Error('HandleRegistry.autoRegister: no @UseImperativeHandle methods');
|
|
110
139
|
}
|
|
111
140
|
for (const methodName of methodNames) {
|
|
@@ -124,7 +153,7 @@ class HandleRegistry {
|
|
|
124
153
|
if (typeof ctor !== 'function') {
|
|
125
154
|
throw new Error('HandleRegistry.autoRegister: invalid instance');
|
|
126
155
|
}
|
|
127
|
-
const keyOrFactory =
|
|
156
|
+
const keyOrFactory = this.getInheritedMetadata(ctor, USE_REF_METADATA_KEY);
|
|
128
157
|
if (typeof keyOrFactory === 'undefined') {
|
|
129
158
|
throw new Error('HandleRegistry.autoRegister: missing @UseRef metadata');
|
|
130
159
|
}
|
|
@@ -156,12 +185,14 @@ class HandleRegistry {
|
|
|
156
185
|
*
|
|
157
186
|
* @param {string} key - handle key
|
|
158
187
|
* @param {THandle} handle - imperative API object
|
|
159
|
-
* @returns {() => void} unregister function
|
|
188
|
+
* @returns {() => void} unregister function; no-op if a different handle is now registered under the same key
|
|
160
189
|
*/
|
|
161
190
|
register(key, handle) {
|
|
162
191
|
this.handles.set(key, handle);
|
|
163
192
|
return () => {
|
|
164
|
-
this.
|
|
193
|
+
if (this.handles.get(key) === handle) {
|
|
194
|
+
this.handles.delete(key);
|
|
195
|
+
}
|
|
165
196
|
};
|
|
166
197
|
}
|
|
167
198
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleRegistry.js","sourceRoot":"","sources":["../../src/runtime/HandleRegistry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;;AAoBH,gCAMC;AAQD,kDAmBC;AAOD,wBASC;AAnED,4BAA0B;AAE1B,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAChE,MAAM,6BAA6B,GAAG,0CAA0C,CAAC;AACjF,MAAM,kCAAkC,GAAG,+CAA+C,CAAC;AAM3F;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,YAA4C;IAE5C,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB;IACjC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"HandleRegistry.js","sourceRoot":"","sources":["../../src/runtime/HandleRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export declare class QueryBus<TQuery extends RuntimeQuery = RuntimeQuery> {
|
|
|
14
14
|
*
|
|
15
15
|
* @param {TQuery['type']} queryType - query type
|
|
16
16
|
* @param {QueryHandler<TQuery, TResult>} handler - query handler
|
|
17
|
-
* @returns {() => void} unregister function
|
|
17
|
+
* @returns {() => void} unregister function; no-op if a different handler is now registered for the type
|
|
18
18
|
* @throws {Error} if a handler is already registered
|
|
19
19
|
*/
|
|
20
20
|
register<TResult>(queryType: TQuery['type'], handler: QueryHandler<TQuery, TResult>): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBus.d.ts","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAE7E;;;;;;;OAOG;IACI,QAAQ,CAAC,OAAO,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,MAAM,IAAI;
|
|
1
|
+
{"version":3,"file":"QueryBus.d.ts","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,qBAAa,QAAQ,CAAC,MAAM,SAAS,YAAY,GAAG,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAE7E;;;;;;;OAOG;IACI,QAAQ,CAAC,OAAO,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EACzB,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,MAAM,IAAI;IAcb;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,EAAG,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/D;;;;;OAKG;IACI,UAAU,CAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;IAInD;;;;OAIG;IACI,KAAK,IAAK,IAAI;CAGtB"}
|
|
@@ -16,16 +16,19 @@ class QueryBus {
|
|
|
16
16
|
*
|
|
17
17
|
* @param {TQuery['type']} queryType - query type
|
|
18
18
|
* @param {QueryHandler<TQuery, TResult>} handler - query handler
|
|
19
|
-
* @returns {() => void} unregister function
|
|
19
|
+
* @returns {() => void} unregister function; no-op if a different handler is now registered for the type
|
|
20
20
|
* @throws {Error} if a handler is already registered
|
|
21
21
|
*/
|
|
22
22
|
register(queryType, handler) {
|
|
23
23
|
if (this.handlers.has(queryType)) {
|
|
24
24
|
throw new Error(`Query handler is already registered: ${queryType}`);
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
const registered = handler;
|
|
27
|
+
this.handlers.set(queryType, registered);
|
|
27
28
|
return () => {
|
|
28
|
-
this.
|
|
29
|
+
if (this.handlers.get(queryType) === registered) {
|
|
30
|
+
this.handlers.delete(queryType);
|
|
31
|
+
}
|
|
29
32
|
};
|
|
30
33
|
}
|
|
31
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBus.js","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,QAAQ;IACF,QAAQ,GAAG,IAAI,GAAG,EAAyC,CAAC;IAE7E;;;;;;;OAOG;IACI,QAAQ,CACb,SAAyB,EACzB,OAAsC;QAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"QueryBus.js","sourceRoot":"","sources":["../../src/runtime/QueryBus.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH;;GAEG;AACH,MAAa,QAAQ;IACF,QAAQ,GAAG,IAAI,GAAG,EAAyC,CAAC;IAE7E;;;;;;;OAOG;IACI,QAAQ,CACb,SAAyB,EACzB,OAAsC;QAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,UAAU,GAAG,OAAwC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE;YACV,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC;gBAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAW,KAAa;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,UAAU,CAAE,SAAyB;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA/DD,4BA+DC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Redux Store Creator with RxJS Support
|
|
3
3
|
*
|
|
4
|
-
* Implements createStore
|
|
5
|
-
*
|
|
4
|
+
* Implements createStore with strict Redux v4 compatibility
|
|
5
|
+
* plus reactive RxJS extensions (state$, select).
|
|
6
6
|
*
|
|
7
7
|
* @module Effectable/store/createStore
|
|
8
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStore.d.ts","sourceRoot":"","sources":["../../src/store/createStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAY,MAAM,SAAS,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAC7C,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,YAAY,EAAE,CAAC,EACf,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"createStore.d.ts","sourceRoot":"","sources":["../../src/store/createStore.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAY,MAAM,SAAS,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAC7C,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,YAAY,EAAE,CAAC,EACf,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAyJb"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Redux Store Creator with RxJS Support
|
|
4
4
|
*
|
|
5
|
-
* Implements createStore
|
|
6
|
-
*
|
|
5
|
+
* Implements createStore with strict Redux v4 compatibility
|
|
6
|
+
* plus reactive RxJS extensions (state$, select).
|
|
7
7
|
*
|
|
8
8
|
* @module Effectable/store/createStore
|
|
9
9
|
*/
|
|
@@ -46,6 +46,8 @@ function createStore(reducer, initialState, enhancer) {
|
|
|
46
46
|
const state$ = new rxjs_1.BehaviorSubject(initialState);
|
|
47
47
|
// Flag to prevent dispatch while a reducer is running
|
|
48
48
|
let isDispatching = false;
|
|
49
|
+
// Flag to track if the store has been destroyed
|
|
50
|
+
let isDestroyed = false;
|
|
49
51
|
/**
|
|
50
52
|
* Base dispatch without middleware
|
|
51
53
|
*
|
|
@@ -56,10 +58,24 @@ function createStore(reducer, initialState, enhancer) {
|
|
|
56
58
|
* @returns The same action
|
|
57
59
|
*/
|
|
58
60
|
function dispatch(action) {
|
|
59
|
-
//
|
|
61
|
+
// Guard: store has been destroyed
|
|
62
|
+
if (isDestroyed) {
|
|
63
|
+
throw new Error('Cannot dispatch an action after the store has been destroyed.');
|
|
64
|
+
}
|
|
65
|
+
// Action validation - strict plain object check (Redux-compatible)
|
|
60
66
|
if (typeof action !== 'object' || action === null) {
|
|
61
67
|
throw new Error('Actions must be plain objects. Use custom middleware for async actions.');
|
|
62
68
|
}
|
|
69
|
+
// Reject arrays (typeof [] === 'object' but not a plain object)
|
|
70
|
+
if (Array.isArray(action)) {
|
|
71
|
+
throw new Error('Actions must be plain objects. Use custom middleware for async actions.');
|
|
72
|
+
}
|
|
73
|
+
// Reject class instances and Object.create(null) (strict Redux v4 behavior)
|
|
74
|
+
// Real Redux only accepts objects with Object.prototype
|
|
75
|
+
const proto = Object.getPrototypeOf(action);
|
|
76
|
+
if (proto !== Object.prototype) {
|
|
77
|
+
throw new Error('Actions must be plain objects. Use custom middleware for async actions.');
|
|
78
|
+
}
|
|
63
79
|
if (typeof action.type === 'undefined') {
|
|
64
80
|
throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');
|
|
65
81
|
}
|
|
@@ -74,6 +90,11 @@ function createStore(reducer, initialState, enhancer) {
|
|
|
74
90
|
const currentState = state$.getValue();
|
|
75
91
|
// Call reducer to get the new state
|
|
76
92
|
newState = reducer(currentState, action);
|
|
93
|
+
// Redux-compatible: reject undefined state from reducer
|
|
94
|
+
if (typeof newState === 'undefined') {
|
|
95
|
+
throw new Error(`Reducer returned undefined when handling action "${action.type}". ` +
|
|
96
|
+
'To ignore an action, you must explicitly return the previous state.');
|
|
97
|
+
}
|
|
77
98
|
}
|
|
78
99
|
finally {
|
|
79
100
|
// Important: reset the flag before notifying subscribers
|
|
@@ -89,7 +110,12 @@ function createStore(reducer, initialState, enhancer) {
|
|
|
89
110
|
*
|
|
90
111
|
* @returns Current Store state
|
|
91
112
|
*/
|
|
92
|
-
const getState = () =>
|
|
113
|
+
const getState = () => {
|
|
114
|
+
if (isDestroyed) {
|
|
115
|
+
throw new Error('Cannot access state after the store has been destroyed.');
|
|
116
|
+
}
|
|
117
|
+
return state$.getValue();
|
|
118
|
+
};
|
|
93
119
|
/**
|
|
94
120
|
* Universal select method for applying selectors
|
|
95
121
|
*
|
|
@@ -118,6 +144,7 @@ function createStore(reducer, initialState, enhancer) {
|
|
|
118
144
|
* store.destroy();
|
|
119
145
|
*/
|
|
120
146
|
const destroy = () => {
|
|
147
|
+
isDestroyed = true;
|
|
121
148
|
state$.complete();
|
|
122
149
|
};
|
|
123
150
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../src/store/createStore.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AA+BH,
|
|
1
|
+
{"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../src/store/createStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,27 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module Effectable/store/middleware
|
|
9
9
|
*/
|
|
10
|
+
import { Action, MiddlewareAPI, MiddlewareInput, StoreEnhancer } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Dispatch-shaped function used to type the wrap-mode chain.
|
|
13
|
+
* Method-syntax bivariance lets {@link DispatchMethod} satisfy this type under
|
|
14
|
+
* `strictFunctionTypes`, so wrap-mode `D extends DispatchFn` typechecks without `as`.
|
|
15
|
+
*/
|
|
16
|
+
type DispatchFn = {
|
|
17
|
+
bivarianceHack(action: unknown): unknown | Promise<unknown>;
|
|
18
|
+
}['bivarianceHack'];
|
|
10
19
|
/**
|
|
11
20
|
* Supports two modes:
|
|
12
21
|
* 1. `applyMiddleware(api, rawDispatch, ...middlewares)` — wrap an existing dispatch
|
|
13
22
|
* 2. `applyMiddleware(...middlewares)` — legacy enhancer-style for compatibility
|
|
14
23
|
* 3. Middleware may arrive as default-export functions from slice modules.
|
|
24
|
+
*
|
|
25
|
+
* Wrap-mode overload is first so `applyMiddleware(api, rawDispatch, ...)` is not
|
|
26
|
+
* parsed as enhancer-style rest middlewares.
|
|
15
27
|
*/
|
|
16
|
-
export declare function applyMiddleware(...
|
|
28
|
+
export declare function applyMiddleware<S, D extends DispatchFn>(api: MiddlewareAPI<D, S>, rawDispatch: D, ...middlewares: unknown[]): D;
|
|
29
|
+
export declare function applyMiddleware(): StoreEnhancer;
|
|
30
|
+
export declare function applyMiddleware<S = unknown, A extends Action = Action>(...middlewares: Array<MiddlewareInput<unknown, S>>): StoreEnhancer<S, A>;
|
|
17
31
|
/**
|
|
18
32
|
* Compose function for function composition
|
|
19
33
|
*
|
|
@@ -35,4 +49,5 @@ export declare function applyMiddleware(...args: unknown[]): unknown;
|
|
|
35
49
|
* Rarely needed for external use.
|
|
36
50
|
*/
|
|
37
51
|
export declare function compose<T>(...funcs: Array<(arg: T) => T>): (arg: T) => T;
|
|
52
|
+
export {};
|
|
38
53
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/store/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/store/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAA4B,aAAa,EAAE,eAAe,EAAyB,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjI;;;;GAIG;AACH,KAAK,UAAU,GAAG;IAChB,cAAc,CAAE,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D,CAAC,gBAAgB,CAAC,CAAC;AAwDpB;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EACrD,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EACxB,WAAW,EAAE,CAAC,EACd,GAAG,WAAW,EAAE,OAAO,EAAE,GACxB,CAAC,CAAC;AACL,wBAAgB,eAAe,IAAK,aAAa,CAAC;AAClD,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EACpE,GAAG,WAAW,EAAE,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GACjD,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAsBvB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAG,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAiBzE"}
|
|
@@ -11,6 +11,13 @@
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.applyMiddleware = applyMiddleware;
|
|
13
13
|
exports.compose = compose;
|
|
14
|
+
const types_1 = require("./types");
|
|
15
|
+
function hasGetState(value) {
|
|
16
|
+
return typeof value === 'object' && value !== null && 'getState' in value;
|
|
17
|
+
}
|
|
18
|
+
function isWrapModeArgs(args) {
|
|
19
|
+
return args.length > 1 && hasGetState(args[0]);
|
|
20
|
+
}
|
|
14
21
|
/**
|
|
15
22
|
* Normalizes middleware: a function or a default-export module `{ default: fn }`.
|
|
16
23
|
*
|
|
@@ -18,12 +25,12 @@ exports.compose = compose;
|
|
|
18
25
|
* @returns {Middleware<unknown, S, D>}
|
|
19
26
|
*/
|
|
20
27
|
function coerceMiddleware(middleware) {
|
|
21
|
-
if (
|
|
28
|
+
if ((0, types_1.isMiddleware)(middleware)) {
|
|
22
29
|
return middleware;
|
|
23
30
|
}
|
|
24
31
|
if (typeof middleware === 'object' && middleware !== null && Object.hasOwn(middleware, 'default')) {
|
|
25
32
|
const defaultExport = Reflect.get(middleware, 'default');
|
|
26
|
-
if (
|
|
33
|
+
if ((0, types_1.isMiddleware)(defaultExport)) {
|
|
27
34
|
return defaultExport;
|
|
28
35
|
}
|
|
29
36
|
}
|
|
@@ -32,32 +39,26 @@ function coerceMiddleware(middleware) {
|
|
|
32
39
|
function wrapDispatch(api, rawDispatch, middlewares) {
|
|
33
40
|
const chain = middlewares.reduceRight((next, middleware) => {
|
|
34
41
|
const coerced = coerceMiddleware(middleware);
|
|
35
|
-
|
|
36
|
-
const resolvedMiddleware = coerced(api);
|
|
37
|
-
return resolvedMiddleware(next);
|
|
42
|
+
return coerced(api)(next);
|
|
38
43
|
}, rawDispatch);
|
|
39
44
|
api.dispatch = chain;
|
|
40
45
|
return chain;
|
|
41
46
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
* 2. `applyMiddleware(...middlewares)` — legacy enhancer-style for compatibility
|
|
46
|
-
* 3. Middleware may arrive as default-export functions from slice modules.
|
|
47
|
-
*/
|
|
47
|
+
function unboundDispatch(action) {
|
|
48
|
+
return action;
|
|
49
|
+
}
|
|
48
50
|
function applyMiddleware(...args) {
|
|
49
|
-
if (args
|
|
51
|
+
if (isWrapModeArgs(args)) {
|
|
50
52
|
const [api, rawDispatch, ...middlewares] = args;
|
|
51
53
|
return wrapDispatch(api, rawDispatch, middlewares);
|
|
52
54
|
}
|
|
53
|
-
const middlewares = args;
|
|
54
55
|
return (createStore) => (reducer, initialState) => {
|
|
55
56
|
const store = createStore(reducer, initialState);
|
|
56
57
|
const api = {
|
|
57
58
|
getState: store.getState,
|
|
58
|
-
dispatch:
|
|
59
|
+
dispatch: unboundDispatch,
|
|
59
60
|
};
|
|
60
|
-
const dispatch = wrapDispatch(api, store.dispatch,
|
|
61
|
+
const dispatch = wrapDispatch(api, store.dispatch, args);
|
|
61
62
|
return {
|
|
62
63
|
...store,
|
|
63
64
|
dispatch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/store/middleware.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/store/middleware.ts"],"names":[],"mappings":"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"}
|
package/build/store/types.d.ts
CHANGED
|
@@ -179,11 +179,11 @@ export interface MiddlewareAPI<D = Dispatch, S = unknown> {
|
|
|
179
179
|
* Middleware can:
|
|
180
180
|
* - Intercept actions
|
|
181
181
|
* - Perform side-effects
|
|
182
|
-
* - Dispatch new actions
|
|
182
|
+
* - Dispatch new actions via api.dispatch()
|
|
183
|
+
* - Read state via api.getState()
|
|
183
184
|
* - Modify or block actions
|
|
184
185
|
* - Call next() multiple times
|
|
185
186
|
* - Use async/await
|
|
186
|
-
* - Subscribe to state$ for reactive logic
|
|
187
187
|
*
|
|
188
188
|
* @template S - State type
|
|
189
189
|
* @template A - Action type
|
|
@@ -204,7 +204,7 @@ export interface MiddlewareAPI<D = Dispatch, S = unknown> {
|
|
|
204
204
|
* return result;
|
|
205
205
|
* };
|
|
206
206
|
*/
|
|
207
|
-
export interface Middleware<
|
|
207
|
+
export interface Middleware<_DispatchExt = {}, S = unknown, D = Dispatch> {
|
|
208
208
|
/**
|
|
209
209
|
* Creates middleware in redux-style format `(api) => (next) => (action)`.
|
|
210
210
|
* `next(action)` forwards the action down the current chain.
|
|
@@ -217,6 +217,13 @@ export interface Middleware<DispatchExt = {}, S = unknown, D = Dispatch> {
|
|
|
217
217
|
*/
|
|
218
218
|
(api: MiddlewareAPI<D, S>): (next: D) => (action: unknown) => unknown | Promise<unknown>;
|
|
219
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Middleware argument accepted by enhancer-mode `applyMiddleware`.
|
|
222
|
+
* Matches runtime: a middleware function or a module namespace `{ default: fn }`.
|
|
223
|
+
*/
|
|
224
|
+
export type MiddlewareInput<DispatchExt = {}, S = unknown, D = Dispatch> = Middleware<DispatchExt, S, D> | {
|
|
225
|
+
default: Middleware<DispatchExt, S, D>;
|
|
226
|
+
};
|
|
220
227
|
/**
|
|
221
228
|
* Memoized selector
|
|
222
229
|
*
|
|
@@ -255,5 +262,5 @@ export declare function isAction(obj: any): obj is Action;
|
|
|
255
262
|
/**
|
|
256
263
|
* Type guard to check whether a function is Middleware
|
|
257
264
|
*/
|
|
258
|
-
export declare function isMiddleware<DispatchExt = {}, S = unknown, D
|
|
265
|
+
export declare function isMiddleware<DispatchExt = {}, S = unknown, D = Dispatch>(fn: unknown): fn is Middleware<DispatchExt, S, D>;
|
|
259
266
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMlC;;;;GAIG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAU,SAAQ,MAAM,CAAC,OAAO,CAAC;CAAG;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CACxD,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,KACN,CAAC,CAAC;AAEP;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAMpE;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAC7D,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,YAAY,EAAE,CAAC,KACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjB;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAC9D,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5B,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IACvD;;;;;;;;;OASG;IACH,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAE5B;;;;;;OAMG;IACH,QAAQ,IAAI,CAAC,CAAC;IAEd;;;;;;;;;;OAUG;IACH,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAErD;;;;;OAKG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO;IACtD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC;IAEZ;;;;OAIG;IACH,QAAQ,IAAI,CAAC,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,UAAU,CACzB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMlC;;;;GAIG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,CAAC;CACb;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAU,SAAQ,MAAM,CAAC,OAAO,CAAC;CAAG;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CACxD,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC,KACN,CAAC,CAAC;AAEP;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvG;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAMpE;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAC7D,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,YAAY,EAAE,CAAC,KACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjB;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAC9D,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5B,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM;IACvD;;;;;;;;;OASG;IACH,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAE5B;;;;;;OAMG;IACH,QAAQ,IAAI,CAAC,CAAC;IAEd;;;;;;;;;;OAUG;IACH,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAErD;;;;;OAKG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO;IACtD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC;IAEZ;;;;OAIG;IACH,QAAQ,IAAI,CAAC,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,UAAU,CACzB,YAAY,GAAG,EAAE,EACjB,CAAC,GAAG,OAAO,EACX,CAAC,GAAG,QAAQ;IAEZ;;;;;;;;;OASG;IACH,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,CACzB,WAAW,GAAG,EAAE,EAChB,CAAC,GAAG,OAAO,EACX,CAAC,GAAG,QAAQ,IACV,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAAE,CAAC;AAM/E;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5D;;;;;;;;OAQG;IACH,gBAAgB,IAAI,IAAI,CAAC;IAEzB;;;;;;;;OAQG;IACH,cAAc,IAAI,MAAM,CAAC;CAC1B;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,QAAQ,EACtE,EAAE,EAAE,OAAO,GACV,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAErC"}
|
package/build/store/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAoTH,4BAEC;AAKD,oCAIC;AAlBD,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;GAEG;AACH,SAAgB,QAAQ,CAAE,GAAQ;IAChC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,EAAW;IAEX,OAAO,OAAO,EAAE,KAAK,UAAU,CAAC;AAClC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effectable",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-canary.2",
|
|
4
4
|
"description": "Declarative reactive runtime for Node.js: bootstrap, Redux-style RxJS store, Component lifecycle, class-based connect, and GraphRuntime.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -81,18 +81,25 @@
|
|
|
81
81
|
"build": "npm run clean && tsc --project ./tsconfig.build.json && npm run build:license",
|
|
82
82
|
"build:license": "cp ./LICENSE ./build/LICENSE",
|
|
83
83
|
"typecheck": "tsc --noEmit --project ./tsconfig.json",
|
|
84
|
+
"lint": "eslint .",
|
|
85
|
+
"lint:fix": "eslint . --fix",
|
|
84
86
|
"test": "jest --config ./jest.config.js --runInBand",
|
|
87
|
+
"test:pack-smoke": "node ./scripts/pack-smoke.cjs",
|
|
85
88
|
"test:watch": "jest --config ./jest.config.js --watch",
|
|
86
89
|
"test:spec": "jest --config ./jest.config.js --runInBand --testPathPatterns=spec",
|
|
87
90
|
"test:entity": "jest --config ./jest.config.js --runInBand --testPathPatterns=entity",
|
|
88
91
|
"bench": "jest --config ./jest.bench.config.js --runInBand",
|
|
92
|
+
"prepare": "lefthook install",
|
|
93
|
+
"commitlint": "commitlint --edit",
|
|
94
|
+
"semantic-release": "semantic-release",
|
|
95
|
+
"semantic-release:dry-run": "semantic-release --dry-run",
|
|
89
96
|
"prepublishOnly": "npm run typecheck && npm test && npm run build"
|
|
90
97
|
},
|
|
91
98
|
"publishConfig": {
|
|
92
99
|
"access": "public"
|
|
93
100
|
},
|
|
94
101
|
"engines": {
|
|
95
|
-
"node": ">=
|
|
102
|
+
"node": ">=22",
|
|
96
103
|
"npm": ">=9"
|
|
97
104
|
},
|
|
98
105
|
"dependencies": {
|
|
@@ -100,9 +107,20 @@
|
|
|
100
107
|
"rxjs": "^7.8.2"
|
|
101
108
|
},
|
|
102
109
|
"devDependencies": {
|
|
110
|
+
"@commitlint/cli": "^21.2.1",
|
|
111
|
+
"@commitlint/config-conventional": "^21.2.0",
|
|
112
|
+
"@semantic-release/changelog": "^7.0.0",
|
|
113
|
+
"@semantic-release/git": "^11.0.1",
|
|
103
114
|
"@types/jest": "^29.5.14",
|
|
104
115
|
"@types/node": "^22.16.0",
|
|
116
|
+
"@typescript-eslint/eslint-plugin": "^8.67.0",
|
|
117
|
+
"@typescript-eslint/parser": "^8.67.0",
|
|
118
|
+
"conventional-changelog-conventionalcommits": "^10.2.1",
|
|
119
|
+
"eslint": "^10.8.1",
|
|
120
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
105
121
|
"jest": "^30.1.3",
|
|
122
|
+
"lefthook": "^2.1.10",
|
|
123
|
+
"semantic-release": "^25.0.9",
|
|
106
124
|
"ts-jest": "^29.4.9",
|
|
107
125
|
"typescript": "^6.0.3"
|
|
108
126
|
}
|