@figliolia/galena 4.0.0 → 4.0.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/dist/State.cjs +6 -7
- package/dist/State.d.cts +4 -5
- package/dist/State.d.cts.map +1 -1
- package/dist/State.d.mts +4 -5
- package/dist/State.d.mts.map +1 -1
- package/dist/State.mjs +6 -7
- package/dist/State.mjs.map +1 -1
- package/package.json +2 -2
- package/src/Galena.ts +8 -2
- package/src/State.ts +6 -7
package/dist/State.cjs
CHANGED
|
@@ -60,26 +60,25 @@ var State = class extends require_API.API {
|
|
|
60
60
|
*/
|
|
61
61
|
reset = this.withEmission(() => this.initialState);
|
|
62
62
|
/**
|
|
63
|
-
* Get
|
|
63
|
+
* Get State
|
|
64
64
|
*
|
|
65
|
-
* Returns the current state
|
|
66
|
-
* `useSyncExternalStore`
|
|
65
|
+
* Returns the current state
|
|
67
66
|
*/
|
|
68
|
-
getState
|
|
67
|
+
getState() {
|
|
69
68
|
return this.state;
|
|
70
|
-
}
|
|
69
|
+
}
|
|
71
70
|
/**
|
|
72
71
|
* Subscribe
|
|
73
72
|
*
|
|
74
73
|
* Registers a callback to be executed each time state
|
|
75
74
|
* changes. Returns an `unsubscribe` function
|
|
76
75
|
*/
|
|
77
|
-
subscribe
|
|
76
|
+
subscribe(fn) {
|
|
78
77
|
const ID = this.Emitter.on("change", fn);
|
|
79
78
|
return () => {
|
|
80
79
|
this.Emitter.off("change", ID);
|
|
81
80
|
};
|
|
82
|
-
}
|
|
81
|
+
}
|
|
83
82
|
/**
|
|
84
83
|
* Register Middleware
|
|
85
84
|
*
|
package/dist/State.d.cts
CHANGED
|
@@ -56,19 +56,18 @@ declare class State<T> extends API<T, NonFunction<T>> {
|
|
|
56
56
|
*/
|
|
57
57
|
readonly reset: () => void;
|
|
58
58
|
/**
|
|
59
|
-
* Get
|
|
59
|
+
* Get State
|
|
60
60
|
*
|
|
61
|
-
* Returns the current state
|
|
62
|
-
* `useSyncExternalStore`
|
|
61
|
+
* Returns the current state
|
|
63
62
|
*/
|
|
64
|
-
|
|
63
|
+
getState(): NonFunction<T>;
|
|
65
64
|
/**
|
|
66
65
|
* Subscribe
|
|
67
66
|
*
|
|
68
67
|
* Registers a callback to be executed each time state
|
|
69
68
|
* changes. Returns an `unsubscribe` function
|
|
70
69
|
*/
|
|
71
|
-
|
|
70
|
+
subscribe(fn: Subscriber<T>): () => void;
|
|
72
71
|
/**
|
|
73
72
|
* Register Middleware
|
|
74
73
|
*
|
package/dist/State.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.d.cts","names":[],"sources":["../src/State.ts"],"mappings":";;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,KAAA,YAAiB,GAAA,CAAI,CAAA,EAAG,WAAA,CAAY,CAAA;EAAA,SAI7B,YAAA,EAAc,WAAA,CAAY,CAAA;EAAA,QAHpC,KAAA;EAAA,iBACS,OAAA;cAEC,YAAA,EAAc,WAAA,CAAY,CAAA,MACvC,UAAA,EAAY,UAAA,CAAW,CAAA;EALG;;;;;;EAAA,SAiBf,GAAA,GAAG,KAAA,EAAA,WAAA,CAAA,CAAA;EAba;;;;;;;EAAA,SAsBhB,MAAA,GAAM,MAAA,EAAA,MAAA,CAAA,CAAA;EArBjB;;;;;;EAAA,SAkCW,KAAA;EAbA
|
|
1
|
+
{"version":3,"file":"State.d.cts","names":[],"sources":["../src/State.ts"],"mappings":";;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,KAAA,YAAiB,GAAA,CAAI,CAAA,EAAG,WAAA,CAAY,CAAA;EAAA,SAI7B,YAAA,EAAc,WAAA,CAAY,CAAA;EAAA,QAHpC,KAAA;EAAA,iBACS,OAAA;cAEC,YAAA,EAAc,WAAA,CAAY,CAAA,MACvC,UAAA,EAAY,UAAA,CAAW,CAAA;EALG;;;;;;EAAA,SAiBf,GAAA,GAAG,KAAA,EAAA,WAAA,CAAA,CAAA;EAba;;;;;;;EAAA,SAsBhB,MAAA,GAAM,MAAA,EAAA,MAAA,CAAA,CAAA;EArBjB;;;;;;EAAA,SAkCW,KAAA;EAbA;;;;;EAoBT,QAAA,CAAA,GAAQ,WAAA,CAAA,CAAA;EAAA;;;;;;EAUR,SAAA,CAAU,EAAA,EAAI,UAAA,CAAW,CAAA;EAcH;;;;;;;EAAtB,kBAAA,CAAA,GAAsB,UAAA,EAAY,UAAA,CAAW,CAAA;EAAA,QAI5C,YAAA;EAAA,QAaA,IAAA;EAAA,UAOE,UAAA,CAAW,MAAA,EAAQ,MAAA,CAAO,CAAA,IAAK,MAAA,IAAU,WAAA,CAAY,CAAA;EAAA,QAIvD,gBAAA;AAAA;;;AAgCV;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,WAAA,GAAA,CAAA,GACX,IAAA,EAAM,qBAAA,QAA6B,KAAA,CAAM,CAAA,KAAG,KAAA,CAAA,CAAA"}
|
package/dist/State.d.mts
CHANGED
|
@@ -56,19 +56,18 @@ declare class State<T> extends API<T, NonFunction<T>> {
|
|
|
56
56
|
*/
|
|
57
57
|
readonly reset: () => void;
|
|
58
58
|
/**
|
|
59
|
-
* Get
|
|
59
|
+
* Get State
|
|
60
60
|
*
|
|
61
|
-
* Returns the current state
|
|
62
|
-
* `useSyncExternalStore`
|
|
61
|
+
* Returns the current state
|
|
63
62
|
*/
|
|
64
|
-
|
|
63
|
+
getState(): NonFunction<T>;
|
|
65
64
|
/**
|
|
66
65
|
* Subscribe
|
|
67
66
|
*
|
|
68
67
|
* Registers a callback to be executed each time state
|
|
69
68
|
* changes. Returns an `unsubscribe` function
|
|
70
69
|
*/
|
|
71
|
-
|
|
70
|
+
subscribe(fn: Subscriber<T>): () => void;
|
|
72
71
|
/**
|
|
73
72
|
* Register Middleware
|
|
74
73
|
*
|
package/dist/State.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.d.mts","names":[],"sources":["../src/State.ts"],"mappings":";;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,KAAA,YAAiB,GAAA,CAAI,CAAA,EAAG,WAAA,CAAY,CAAA;EAAA,SAI7B,YAAA,EAAc,WAAA,CAAY,CAAA;EAAA,QAHpC,KAAA;EAAA,iBACS,OAAA;cAEC,YAAA,EAAc,WAAA,CAAY,CAAA,MACvC,UAAA,EAAY,UAAA,CAAW,CAAA;EALG;;;;;;EAAA,SAiBf,GAAA,GAAG,KAAA,EAAA,WAAA,CAAA,CAAA;EAba;;;;;;;EAAA,SAsBhB,MAAA,GAAM,MAAA,EAAA,MAAA,CAAA,CAAA;EArBjB;;;;;;EAAA,SAkCW,KAAA;EAbA
|
|
1
|
+
{"version":3,"file":"State.d.mts","names":[],"sources":["../src/State.ts"],"mappings":";;;;;;;AA8BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,KAAA,YAAiB,GAAA,CAAI,CAAA,EAAG,WAAA,CAAY,CAAA;EAAA,SAI7B,YAAA,EAAc,WAAA,CAAY,CAAA;EAAA,QAHpC,KAAA;EAAA,iBACS,OAAA;cAEC,YAAA,EAAc,WAAA,CAAY,CAAA,MACvC,UAAA,EAAY,UAAA,CAAW,CAAA;EALG;;;;;;EAAA,SAiBf,GAAA,GAAG,KAAA,EAAA,WAAA,CAAA,CAAA;EAba;;;;;;;EAAA,SAsBhB,MAAA,GAAM,MAAA,EAAA,MAAA,CAAA,CAAA;EArBjB;;;;;;EAAA,SAkCW,KAAA;EAbA;;;;;EAoBT,QAAA,CAAA,GAAQ,WAAA,CAAA,CAAA;EAAA;;;;;;EAUR,SAAA,CAAU,EAAA,EAAI,UAAA,CAAW,CAAA;EAcH;;;;;;;EAAtB,kBAAA,CAAA,GAAsB,UAAA,EAAY,UAAA,CAAW,CAAA;EAAA,QAI5C,YAAA;EAAA,QAaA,IAAA;EAAA,UAOE,UAAA,CAAW,MAAA,EAAQ,MAAA,CAAO,CAAA,IAAK,MAAA,IAAU,WAAA,CAAY,CAAA;EAAA,QAIvD,gBAAA;AAAA;;;AAgCV;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,WAAA,GAAA,CAAA,GACX,IAAA,EAAM,qBAAA,QAA6B,KAAA,CAAM,CAAA,KAAG,KAAA,CAAA,CAAA"}
|
package/dist/State.mjs
CHANGED
|
@@ -60,26 +60,25 @@ var State = class extends API {
|
|
|
60
60
|
*/
|
|
61
61
|
reset = this.withEmission(() => this.initialState);
|
|
62
62
|
/**
|
|
63
|
-
* Get
|
|
63
|
+
* Get State
|
|
64
64
|
*
|
|
65
|
-
* Returns the current state
|
|
66
|
-
* `useSyncExternalStore`
|
|
65
|
+
* Returns the current state
|
|
67
66
|
*/
|
|
68
|
-
getState
|
|
67
|
+
getState() {
|
|
69
68
|
return this.state;
|
|
70
|
-
}
|
|
69
|
+
}
|
|
71
70
|
/**
|
|
72
71
|
* Subscribe
|
|
73
72
|
*
|
|
74
73
|
* Registers a callback to be executed each time state
|
|
75
74
|
* changes. Returns an `unsubscribe` function
|
|
76
75
|
*/
|
|
77
|
-
subscribe
|
|
76
|
+
subscribe(fn) {
|
|
78
77
|
const ID = this.Emitter.on("change", fn);
|
|
79
78
|
return () => {
|
|
80
79
|
this.Emitter.off("change", ID);
|
|
81
80
|
};
|
|
82
|
-
}
|
|
81
|
+
}
|
|
83
82
|
/**
|
|
84
83
|
* Register Middleware
|
|
85
84
|
*
|
package/dist/State.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"State.mjs","names":[],"sources":["../src/State.ts"],"sourcesContent":["import { EventEmitter } from \"@figliolia/event-emitter\";\nimport { API } from \"./API\";\nimport type { Middleware } from \"./Middleware\";\nimport type { NonFunction, Setter, Subscriber } from \"./types\";\n\n/**\n * ### State\n *\n * The unit of reactivity for Galena. `State`'s can act\n * as isolated instances or be part of your global app\n * state (via `Galena` instances).\n *\n * There are two ways to create state instances\n *\n * ```typescript\n * import { State, createState, Profiler } from \"@figliolia/galena\";\n \n * const myState = new State(\"<any value>\", ...middleware);\n * // or\n * const myState = createState(\"<any value>\", ...middleware);\n *\n * myState.set(\"<new-value>\");\n * myState.update(previousValue => \"<new-value>\");\n * myState.subscribe(nextValue => {});\n * myState.registerMiddleware(new Profiler());\n * myState.reset(); // reset back to it's original value\n * // to get the current value at any point in time\n * const currentValue = myState.getState();\n * ```\n */\nexport class State<T> extends API<T, NonFunction<T>> {\n private state: NonFunction<T>;\n private readonly Emitter = new EventEmitter<{ change: NonFunction<T> }>();\n constructor(\n public readonly initialState: NonFunction<T>,\n ...middleware: Middleware<T>[]\n ) {\n super(...middleware);\n this.state = initialState;\n }\n\n /**\n * Set\n *\n * Updates the current value of state notifying\n * all interested parties\n */\n public readonly set = this.withEmission((state: NonFunction<T>) => state);\n\n /**\n * Update\n *\n * Updates the current value of state using a setter function\n * receiving the previous state as a parameter. Notifies all\n * interested parties\n */\n public readonly update = this.withEmission((setter: Setter<T>) => {\n if (this.diffSetter(setter)) {\n return setter;\n }\n return setter(this.state);\n });\n\n /**\n * Reset\n *\n * Resets the current state back to the state which the instance\n * was initialized with. Notifies all interested parties\n */\n public readonly reset = this.withEmission(() => this.initialState);\n\n /**\n * Get
|
|
1
|
+
{"version":3,"file":"State.mjs","names":[],"sources":["../src/State.ts"],"sourcesContent":["import { EventEmitter } from \"@figliolia/event-emitter\";\nimport { API } from \"./API\";\nimport type { Middleware } from \"./Middleware\";\nimport type { NonFunction, Setter, Subscriber } from \"./types\";\n\n/**\n * ### State\n *\n * The unit of reactivity for Galena. `State`'s can act\n * as isolated instances or be part of your global app\n * state (via `Galena` instances).\n *\n * There are two ways to create state instances\n *\n * ```typescript\n * import { State, createState, Profiler } from \"@figliolia/galena\";\n \n * const myState = new State(\"<any value>\", ...middleware);\n * // or\n * const myState = createState(\"<any value>\", ...middleware);\n *\n * myState.set(\"<new-value>\");\n * myState.update(previousValue => \"<new-value>\");\n * myState.subscribe(nextValue => {});\n * myState.registerMiddleware(new Profiler());\n * myState.reset(); // reset back to it's original value\n * // to get the current value at any point in time\n * const currentValue = myState.getState();\n * ```\n */\nexport class State<T> extends API<T, NonFunction<T>> {\n private state: NonFunction<T>;\n private readonly Emitter = new EventEmitter<{ change: NonFunction<T> }>();\n constructor(\n public readonly initialState: NonFunction<T>,\n ...middleware: Middleware<T>[]\n ) {\n super(...middleware);\n this.state = initialState;\n }\n\n /**\n * Set\n *\n * Updates the current value of state notifying\n * all interested parties\n */\n public readonly set = this.withEmission((state: NonFunction<T>) => state);\n\n /**\n * Update\n *\n * Updates the current value of state using a setter function\n * receiving the previous state as a parameter. Notifies all\n * interested parties\n */\n public readonly update = this.withEmission((setter: Setter<T>) => {\n if (this.diffSetter(setter)) {\n return setter;\n }\n return setter(this.state);\n });\n\n /**\n * Reset\n *\n * Resets the current state back to the state which the instance\n * was initialized with. Notifies all interested parties\n */\n public readonly reset = this.withEmission(() => this.initialState);\n\n /**\n * Get State\n *\n * Returns the current state\n */\n public getState() {\n return this.state;\n }\n\n /**\n * Subscribe\n *\n * Registers a callback to be executed each time state\n * changes. Returns an `unsubscribe` function\n */\n public subscribe(fn: Subscriber<T>) {\n const ID = this.Emitter.on(\"change\", fn);\n return () => {\n this.Emitter.off(\"change\", ID);\n };\n }\n\n /**\n * Register Middleware\n *\n * Registers any number of `Middleware` instances on the\n * current instance of `State`. Your middleware will begin\n * executing at the next state transition\n */\n public registerMiddleware(...middleware: Middleware<T>[]) {\n this.middleware.push(...middleware);\n }\n\n private withEmission<\n F extends (...args: any[]) => NonFunction<T> | Promise<NonFunction<T>>,\n >(fn: F) {\n return (...args: Parameters<F>) => {\n const result = fn(...args);\n if (result instanceof Promise) {\n void result.then(resolved => this.emit(resolved));\n return;\n }\n return this.emit(result);\n };\n }\n\n private emit(nextState: NonFunction<T>) {\n this.invokeMiddleware(\"onBeforeUpdate\");\n this.state = nextState;\n this.Emitter.emit(\"change\", this.state);\n this.invokeMiddleware(\"onUpdate\");\n }\n\n protected diffSetter(setter: Setter<T>): setter is NonFunction<T> {\n return typeof setter !== \"function\";\n }\n\n private invokeMiddleware<K extends keyof Middleware<T>>(fn: K) {\n for (const middleware of this.middleware) {\n middleware[fn](this);\n }\n }\n}\n\n/**\n * ### createState\n *\n * The unit of reactivity for Galena. `State`'s can act\n * as isolated instances or be part of your global app\n * state (via `Galena` instances).\n *\n * There are two ways to create state instances\n *\n * ```typescript\n * import { State, createState, Profiler } from \"@figliolia/galena\";\n \n * const myState = new State(\"<any value>\", ...middleware);\n * // or\n * const myState = createState(\"<any value>\", ...middleware);\n *\n * myState.set(\"<new-value>\");\n * myState.update(previousValue => \"<new-value>\");\n * myState.subscribe(nextValue => {});\n * myState.registerMiddleware(new Profiler());\n * myState.reset(); // reset back to it's original value\n * // to get the current value at any point in time\n * const currentValue = myState.getState();\n * ```\n */\nexport function createState<T>(\n ...args: ConstructorParameters<typeof State<T>>\n) {\n return new State<T>(...args);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,IAAa,QAAb,cAA8B,IAAuB;CACnD;CACA,UAA2B,IAAI,cAA0C;CACzE,YACE,cACA,GAAG,YACH;AACA,QAAM,GAAG,WAAW;AAHJ,OAAA,eAAA;AAIhB,OAAK,QAAQ;;;;;;;;CASf,MAAsB,KAAK,cAAc,UAA0B,MAAM;;;;;;;;CASzE,SAAyB,KAAK,cAAc,WAAsB;AAChE,MAAI,KAAK,WAAW,OAAO,CACzB,QAAO;AAET,SAAO,OAAO,KAAK,MAAM;GACzB;;;;;;;CAQF,QAAwB,KAAK,mBAAmB,KAAK,aAAa;;;;;;CAOlE,WAAkB;AAChB,SAAO,KAAK;;;;;;;;CASd,UAAiB,IAAmB;EAClC,MAAM,KAAK,KAAK,QAAQ,GAAG,UAAU,GAAG;AACxC,eAAa;AACX,QAAK,QAAQ,IAAI,UAAU,GAAG;;;;;;;;;;CAWlC,mBAA0B,GAAG,YAA6B;AACxD,OAAK,WAAW,KAAK,GAAG,WAAW;;CAGrC,aAEE,IAAO;AACP,UAAQ,GAAG,SAAwB;GACjC,MAAM,SAAS,GAAG,GAAG,KAAK;AAC1B,OAAI,kBAAkB,SAAS;AACxB,WAAO,MAAK,aAAY,KAAK,KAAK,SAAS,CAAC;AACjD;;AAEF,UAAO,KAAK,KAAK,OAAO;;;CAI5B,KAAa,WAA2B;AACtC,OAAK,iBAAiB,iBAAiB;AACvC,OAAK,QAAQ;AACb,OAAK,QAAQ,KAAK,UAAU,KAAK,MAAM;AACvC,OAAK,iBAAiB,WAAW;;CAGnC,WAAqB,QAA6C;AAChE,SAAO,OAAO,WAAW;;CAG3B,iBAAwD,IAAO;AAC7D,OAAK,MAAM,cAAc,KAAK,WAC5B,YAAW,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B1B,SAAgB,YACd,GAAG,MACH;AACA,QAAO,IAAI,MAAS,GAAG,KAAK"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@figliolia/galena",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "A performant state management library supporting middleware and a rich developer API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"flux",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
49
49
|
"oxfmt": "^0.42.0",
|
|
50
50
|
"oxlint": "^1.36.0",
|
|
51
|
-
"oxlint-tsgolint": "^0.
|
|
51
|
+
"oxlint-tsgolint": "^0.18.1",
|
|
52
52
|
"tsdown": "^0.21.1",
|
|
53
53
|
"typescript": "^6.0.2"
|
|
54
54
|
},
|
package/src/Galena.ts
CHANGED
|
@@ -62,6 +62,12 @@ export class Galena<T extends Record<string, State<any>>> extends API<
|
|
|
62
62
|
super(...middleware);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Get State
|
|
67
|
+
*
|
|
68
|
+
* Returns an assembled state object containing each
|
|
69
|
+
* state instance's current value of state
|
|
70
|
+
*/
|
|
65
71
|
public getState() {
|
|
66
72
|
const result = {} as GalenaState<T>;
|
|
67
73
|
for (const key in this.state) {
|
|
@@ -112,7 +118,7 @@ export class Galena<T extends Record<string, State<any>>> extends API<
|
|
|
112
118
|
* changes. To your callback will be provided the `updated` state
|
|
113
119
|
* instance, along with the entire `state` tree
|
|
114
120
|
*/
|
|
115
|
-
public subscribe
|
|
121
|
+
public subscribe(subscriber: AppSubscriber<T>) {
|
|
116
122
|
const ID = this.Emitter.on("change", subscriber);
|
|
117
123
|
const unsubscribers: (() => void)[] = [];
|
|
118
124
|
for (const key in this.state) {
|
|
@@ -132,7 +138,7 @@ export class Galena<T extends Record<string, State<any>>> extends API<
|
|
|
132
138
|
unsubscribers.pop?.()?.();
|
|
133
139
|
}
|
|
134
140
|
};
|
|
135
|
-
}
|
|
141
|
+
}
|
|
136
142
|
|
|
137
143
|
/**
|
|
138
144
|
* Register Middleware
|
package/src/State.ts
CHANGED
|
@@ -70,14 +70,13 @@ export class State<T> extends API<T, NonFunction<T>> {
|
|
|
70
70
|
public readonly reset = this.withEmission(() => this.initialState);
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
|
-
* Get
|
|
73
|
+
* Get State
|
|
74
74
|
*
|
|
75
|
-
* Returns the current state
|
|
76
|
-
* `useSyncExternalStore`
|
|
75
|
+
* Returns the current state
|
|
77
76
|
*/
|
|
78
|
-
public
|
|
77
|
+
public getState() {
|
|
79
78
|
return this.state;
|
|
80
|
-
}
|
|
79
|
+
}
|
|
81
80
|
|
|
82
81
|
/**
|
|
83
82
|
* Subscribe
|
|
@@ -85,12 +84,12 @@ export class State<T> extends API<T, NonFunction<T>> {
|
|
|
85
84
|
* Registers a callback to be executed each time state
|
|
86
85
|
* changes. Returns an `unsubscribe` function
|
|
87
86
|
*/
|
|
88
|
-
public
|
|
87
|
+
public subscribe(fn: Subscriber<T>) {
|
|
89
88
|
const ID = this.Emitter.on("change", fn);
|
|
90
89
|
return () => {
|
|
91
90
|
this.Emitter.off("change", ID);
|
|
92
91
|
};
|
|
93
|
-
}
|
|
92
|
+
}
|
|
94
93
|
|
|
95
94
|
/**
|
|
96
95
|
* Register Middleware
|