@owlmeans/state 0.1.0 → 0.1.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/LICENSE +1 -1
- package/build/resource.d.ts.map +1 -1
- package/build/resource.js +43 -50
- package/build/resource.js.map +1 -1
- package/build/types.d.ts +1 -1
- package/build/types.d.ts.map +1 -1
- package/build/utils/model.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/resource.ts +44 -54
- package/src/types.ts +1 -1
- package/tsconfig.tsbuildinfo +0 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2026 OwlMeans Common — Fullstack typescript framework
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/build/resource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgC,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACtF,OAAO,KAAK,EAAiB,aAAa,EAAE,mBAAmB,EAA2B,MAAM,YAAY,CAAA;AAI5G,OAAO,KAAK,EAAE,YAAY,IAAI,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEvF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,cAAc,
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgC,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACtF,OAAO,KAAK,EAAiB,aAAa,EAAE,mBAAmB,EAA2B,MAAM,YAAY,CAAA;AAI5G,OAAO,KAAK,EAAE,YAAY,IAAI,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEvF,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,cAAc,EAAE,QAAO,MAAsB,KAAG,aAAa,CAAC,CAAC,CA6N5G,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACxE,KAAK,CAAC,EAAE,QAAO,MAAsB,KACpC,CAAC,GAAG,mBAWN,CAAA"}
|
package/build/resource.js
CHANGED
|
@@ -6,30 +6,25 @@ import { createStateModel } from './utils/model.js';
|
|
|
6
6
|
export const createStateResource = (alias = DEFAULT_ALIAS) => {
|
|
7
7
|
const location = `state-resource:${alias}`;
|
|
8
8
|
const store = {};
|
|
9
|
-
const listeners = [];
|
|
10
9
|
const recordToListener = new Map();
|
|
11
10
|
const listenerToRecord = new Map();
|
|
12
11
|
const globalListeners = [];
|
|
13
12
|
const systemToListeners = {};
|
|
14
|
-
const
|
|
13
|
+
const _notifyGlobalListeners = (records) => {
|
|
15
14
|
globalListeners.forEach(listener => listener(records.map(record => createStateModel(record, resource))));
|
|
16
15
|
};
|
|
17
16
|
const _usubscribe = (params) => () => {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
listeners.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
listeners.delete(params.listener);
|
|
27
|
-
if (listeners.size === 0) {
|
|
28
|
-
recordToListener.delete(id);
|
|
29
|
-
}
|
|
17
|
+
const ids = listenerToRecord.get(params.listener);
|
|
18
|
+
listenerToRecord.delete(params.listener);
|
|
19
|
+
ids?.forEach(id => {
|
|
20
|
+
const listeners = recordToListener.get(id);
|
|
21
|
+
if (listeners != null) {
|
|
22
|
+
listeners.delete(params.listener);
|
|
23
|
+
if (listeners.size === 0) {
|
|
24
|
+
recordToListener.delete(id);
|
|
30
25
|
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
33
28
|
Object.entries(systemToListeners).some(([key, listener]) => {
|
|
34
29
|
if (listener === params.listener) {
|
|
35
30
|
delete systemToListeners[key];
|
|
@@ -38,6 +33,18 @@ export const createStateResource = (alias = DEFAULT_ALIAS) => {
|
|
|
38
33
|
return false;
|
|
39
34
|
});
|
|
40
35
|
};
|
|
36
|
+
const _notifyListeners = (record) => {
|
|
37
|
+
for (const listener of recordToListener.get(record.id) ?? []) {
|
|
38
|
+
listener([createStateModel(record, resource)]);
|
|
39
|
+
}
|
|
40
|
+
for (const key of Object.keys(systemToListeners)) {
|
|
41
|
+
const [, ...idsProto] = key.split(':');
|
|
42
|
+
const ids = idsProto.join(':').split(',');
|
|
43
|
+
if (ids.includes(record.id)) {
|
|
44
|
+
systemToListeners[key](ids.map(id => createStateModel(store[id], resource)), key);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
41
48
|
const resource = appendContextual(alias, {
|
|
42
49
|
get: async (id, field, opts) => {
|
|
43
50
|
const record = await resource.load(id, field, opts);
|
|
@@ -89,7 +96,8 @@ export const createStateResource = (alias = DEFAULT_ALIAS) => {
|
|
|
89
96
|
throw new UnsupportedArgumentError(`${location}:create:opts`);
|
|
90
97
|
}
|
|
91
98
|
store[record.id] = record;
|
|
92
|
-
|
|
99
|
+
_notifyListeners(store[record.id]);
|
|
100
|
+
_notifyGlobalListeners([store[record.id]]);
|
|
93
101
|
return record;
|
|
94
102
|
},
|
|
95
103
|
update: async (record, opts) => {
|
|
@@ -104,8 +112,8 @@ export const createStateResource = (alias = DEFAULT_ALIAS) => {
|
|
|
104
112
|
throw new UnknownRecordError(record.id);
|
|
105
113
|
}
|
|
106
114
|
Object.assign(reference, record);
|
|
107
|
-
|
|
108
|
-
|
|
115
|
+
_notifyListeners(reference);
|
|
116
|
+
_notifyGlobalListeners([reference]);
|
|
109
117
|
return reference;
|
|
110
118
|
},
|
|
111
119
|
delete: async (id, opts) => {
|
|
@@ -121,25 +129,8 @@ export const createStateResource = (alias = DEFAULT_ALIAS) => {
|
|
|
121
129
|
throw new UnsupportedArgumentError(`${location}:delete:opts`);
|
|
122
130
|
}
|
|
123
131
|
delete store[_id];
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
listeners.forEach(listener => {
|
|
127
|
-
listener([createStateModel(record, resource)]);
|
|
128
|
-
// const listeners = listenerToRecord.get(listener)
|
|
129
|
-
// if (listeners != null) {
|
|
130
|
-
// const idx = listeners.indexOf(_id)
|
|
131
|
-
// if (idx > 0) {
|
|
132
|
-
// listeners.splice(idx, 1)
|
|
133
|
-
// }
|
|
134
|
-
// if (listeners.length < 1) {
|
|
135
|
-
// listenerToRecord.delete(listener)
|
|
136
|
-
// }
|
|
137
|
-
// }
|
|
138
|
-
});
|
|
139
|
-
// listeners.clear()
|
|
140
|
-
// recordToListener.delete(_id)
|
|
141
|
-
}
|
|
142
|
-
notifyGlobalListenrs([record]);
|
|
132
|
+
_notifyListeners(record);
|
|
133
|
+
_notifyGlobalListeners([record]);
|
|
143
134
|
return record;
|
|
144
135
|
},
|
|
145
136
|
pick: async (id, opts) => {
|
|
@@ -163,22 +154,24 @@ export const createStateResource = (alias = DEFAULT_ALIAS) => {
|
|
|
163
154
|
return createStateModel(store[id], resource);
|
|
164
155
|
});
|
|
165
156
|
if (params._systemId != null) {
|
|
166
|
-
|
|
157
|
+
const key = `${params._systemId}:${ids.join(",")}`;
|
|
158
|
+
if (systemToListeners[key] != null) {
|
|
167
159
|
return [_usubscribe(params), records];
|
|
168
160
|
}
|
|
169
|
-
systemToListeners[
|
|
170
|
-
}
|
|
171
|
-
if (listeners.includes(params.listener)) {
|
|
172
|
-
throw new StateListenerError('subscribed');
|
|
161
|
+
systemToListeners[key] = params.listener;
|
|
173
162
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if (!recordToListener.has(id)) {
|
|
178
|
-
recordToListener.set(id, new Set());
|
|
163
|
+
else {
|
|
164
|
+
if (listenerToRecord.has(params.listener)) {
|
|
165
|
+
throw new StateListenerError('subscribed');
|
|
179
166
|
}
|
|
180
|
-
|
|
181
|
-
|
|
167
|
+
listenerToRecord.set(params.listener, ids);
|
|
168
|
+
ids.forEach(id => {
|
|
169
|
+
if (!recordToListener.has(id)) {
|
|
170
|
+
recordToListener.set(id, new Set());
|
|
171
|
+
}
|
|
172
|
+
recordToListener.get(id)?.add(params.listener);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
182
175
|
return [_usubscribe(params), records];
|
|
183
176
|
},
|
|
184
177
|
listen: listener => {
|
package/build/resource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGhH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAGnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAA2B,QAAgB,aAAa,EAAoB,EAAE;IAC/G,MAAM,QAAQ,GAAG,kBAAkB,KAAK,EAAE,CAAA;IAE1C,MAAM,KAAK,GAAwB,EAAE,CAAA;IACrC,MAAM,
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface StateSubscriptionOption<T extends ResourceRecord> {
|
|
|
15
15
|
listener: StateListener<T>;
|
|
16
16
|
}
|
|
17
17
|
export interface StateListener<T extends ResourceRecord> {
|
|
18
|
-
(record: StateModel<T>[]): void | Promise<void>;
|
|
18
|
+
(record: StateModel<T>[], systemId?: string): void | Promise<void>;
|
|
19
19
|
}
|
|
20
20
|
export interface StateModel<T extends ResourceRecord> {
|
|
21
21
|
record: T;
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC1E;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChF,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAA;IAClD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,cAAc;IAC/D,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACpB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc;IACrD,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IAC1E;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChF,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAA;IAClD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,cAAc;IAC/D,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACpB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc;IACrD,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,cAAc;IAClD,MAAM,EAAE,CAAC,CAAC;IAEV,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAEjC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAEnC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,CAAA;CACjF;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;CACtI;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,CAAC,SAAS,cAAc,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;CACnJ;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;IACnH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE5D,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,cAAc,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE5D,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,cAAc,EACvD,QAAQ,CAAC,EAAE,UAAU,aAAa,CAAC,CAAC,CAAC,KACpC,UAAU,CAAC,CAAC,CAmCd,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/state",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"license": "MIT",
|
|
4
5
|
"type": "module",
|
|
5
6
|
"scripts": {
|
|
6
7
|
"build": "tsc -b",
|
|
@@ -20,15 +21,14 @@
|
|
|
20
21
|
}
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@owlmeans/context": "^0.1.
|
|
24
|
-
"@owlmeans/resource": "^0.1.
|
|
24
|
+
"@owlmeans/context": "^0.1.2",
|
|
25
|
+
"@owlmeans/resource": "^0.1.2"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
|
-
"nodemon": "^3.1.
|
|
28
|
-
"typescript": "^5.
|
|
28
|
+
"nodemon": "^3.1.11",
|
|
29
|
+
"typescript": "^5.8.3"
|
|
29
30
|
},
|
|
30
|
-
"private": false,
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public"
|
|
33
33
|
}
|
|
34
|
-
}
|
|
34
|
+
}
|
package/src/resource.ts
CHANGED
|
@@ -11,7 +11,6 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
11
11
|
const location = `state-resource:${alias}`
|
|
12
12
|
|
|
13
13
|
const store: { [id: string]: R } = {}
|
|
14
|
-
const listeners: StateListener<R>[] = []
|
|
15
14
|
const recordToListener = new Map<string, Set<StateListener<R>>>()
|
|
16
15
|
const listenerToRecord = new Map<StateListener<R>, string[]>()
|
|
17
16
|
const globalListeners: StateListener<R>[] = []
|
|
@@ -19,28 +18,24 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
19
18
|
|
|
20
19
|
type StoreKey = keyof typeof store
|
|
21
20
|
|
|
22
|
-
const
|
|
21
|
+
const _notifyGlobalListeners = (records: R[]) => {
|
|
23
22
|
globalListeners.forEach(listener => listener(
|
|
24
23
|
records.map(record => createStateModel(record, resource))
|
|
25
24
|
))
|
|
26
25
|
}
|
|
27
26
|
|
|
28
27
|
const _usubscribe = (params: StateSubscriptionOption<R>) => () => {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
listeners.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
listeners.delete(params.listener)
|
|
38
|
-
if (listeners.size === 0) {
|
|
39
|
-
recordToListener.delete(id)
|
|
40
|
-
}
|
|
28
|
+
const ids = listenerToRecord.get(params.listener)
|
|
29
|
+
listenerToRecord.delete(params.listener)
|
|
30
|
+
ids?.forEach(id => {
|
|
31
|
+
const listeners = recordToListener.get(id)
|
|
32
|
+
if (listeners != null) {
|
|
33
|
+
listeners.delete(params.listener)
|
|
34
|
+
if (listeners.size === 0) {
|
|
35
|
+
recordToListener.delete(id)
|
|
41
36
|
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
37
|
+
}
|
|
38
|
+
})
|
|
44
39
|
Object.entries(systemToListeners).some(([key, listener]) => {
|
|
45
40
|
if (listener === params.listener) {
|
|
46
41
|
delete systemToListeners[key]
|
|
@@ -51,6 +46,19 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
51
46
|
})
|
|
52
47
|
}
|
|
53
48
|
|
|
49
|
+
const _notifyListeners = (record: R) => {
|
|
50
|
+
for (const listener of recordToListener.get(record.id!) ?? []) {
|
|
51
|
+
listener([createStateModel(record, resource)])
|
|
52
|
+
}
|
|
53
|
+
for (const key of Object.keys(systemToListeners)) {
|
|
54
|
+
const [, ...idsProto] = key.split(':')
|
|
55
|
+
const ids = idsProto.join(':').split(',')
|
|
56
|
+
if (ids.includes(record.id!)) {
|
|
57
|
+
systemToListeners[key](ids.map(id => createStateModel(store[id], resource)), key)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
54
62
|
const resource: StateResource<R> = appendContextual<StateResource<R>>(alias, {
|
|
55
63
|
get: async (id, field, opts) => {
|
|
56
64
|
const record = await resource.load(id, field, opts)
|
|
@@ -113,7 +121,8 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
113
121
|
}
|
|
114
122
|
store[record.id as StoreKey] = record as unknown as R
|
|
115
123
|
|
|
116
|
-
|
|
124
|
+
_notifyListeners(store[record.id as StoreKey])
|
|
125
|
+
_notifyGlobalListeners([store[record.id as StoreKey]])
|
|
117
126
|
|
|
118
127
|
return record as any
|
|
119
128
|
},
|
|
@@ -131,11 +140,8 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
131
140
|
}
|
|
132
141
|
Object.assign(reference, record)
|
|
133
142
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
)
|
|
137
|
-
|
|
138
|
-
notifyGlobalListenrs([reference])
|
|
143
|
+
_notifyListeners(reference)
|
|
144
|
+
_notifyGlobalListeners([reference])
|
|
139
145
|
|
|
140
146
|
return reference as any
|
|
141
147
|
},
|
|
@@ -154,25 +160,8 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
154
160
|
}
|
|
155
161
|
delete store[_id as StoreKey]
|
|
156
162
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
listeners.forEach(listener => {
|
|
160
|
-
listener([createStateModel(record, resource)])
|
|
161
|
-
// const listeners = listenerToRecord.get(listener)
|
|
162
|
-
// if (listeners != null) {
|
|
163
|
-
// const idx = listeners.indexOf(_id)
|
|
164
|
-
// if (idx > 0) {
|
|
165
|
-
// listeners.splice(idx, 1)
|
|
166
|
-
// }
|
|
167
|
-
// if (listeners.length < 1) {
|
|
168
|
-
// listenerToRecord.delete(listener)
|
|
169
|
-
// }
|
|
170
|
-
// }
|
|
171
|
-
})
|
|
172
|
-
// listeners.clear()
|
|
173
|
-
// recordToListener.delete(_id)
|
|
174
|
-
}
|
|
175
|
-
notifyGlobalListenrs([record])
|
|
163
|
+
_notifyListeners(record)
|
|
164
|
+
_notifyGlobalListeners([record])
|
|
176
165
|
|
|
177
166
|
return record as any
|
|
178
167
|
},
|
|
@@ -200,23 +189,24 @@ export const createStateResource = <R extends ResourceRecord>(alias: string = DE
|
|
|
200
189
|
return createStateModel(store[id], resource)
|
|
201
190
|
})
|
|
202
191
|
if (params._systemId != null) {
|
|
203
|
-
|
|
192
|
+
const key = `${params._systemId}:${ids.join(",")}`
|
|
193
|
+
if (systemToListeners[key] != null) {
|
|
204
194
|
return [_usubscribe(params), records]
|
|
205
195
|
}
|
|
206
196
|
|
|
207
|
-
systemToListeners[
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
listeners.push(params.listener)
|
|
213
|
-
listenerToRecord.set(params.listener, ids)
|
|
214
|
-
ids.forEach(id => {
|
|
215
|
-
if (!recordToListener.has(id)) {
|
|
216
|
-
recordToListener.set(id, new Set())
|
|
197
|
+
systemToListeners[key] = params.listener
|
|
198
|
+
} else {
|
|
199
|
+
if (listenerToRecord.has(params.listener)) {
|
|
200
|
+
throw new StateListenerError('subscribed')
|
|
217
201
|
}
|
|
218
|
-
|
|
219
|
-
|
|
202
|
+
listenerToRecord.set(params.listener, ids)
|
|
203
|
+
ids.forEach(id => {
|
|
204
|
+
if (!recordToListener.has(id)) {
|
|
205
|
+
recordToListener.set(id, new Set())
|
|
206
|
+
}
|
|
207
|
+
recordToListener.get(id)?.add(params.listener)
|
|
208
|
+
})
|
|
209
|
+
}
|
|
220
210
|
|
|
221
211
|
return [_usubscribe(params), records]
|
|
222
212
|
},
|
package/src/types.ts
CHANGED
|
@@ -18,7 +18,7 @@ export interface StateSubscriptionOption<T extends ResourceRecord> {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export interface StateListener<T extends ResourceRecord> {
|
|
21
|
-
(record: StateModel<T>[]): void | Promise<void>
|
|
21
|
+
(record: StateModel<T>[], systemId?: string): void | Promise<void>
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export interface StateModel<T extends ResourceRecord> {
|
package/tsconfig.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"root":["./src/consts.ts","./src/errors.ts","./src/index.ts","./src/resource.ts","./src/types.ts","./src/utils/index.ts","./src/utils/model.ts"],"version":"5.6.3"}
|