@antelopejs/interface-dms 0.3.0 → 0.3.1
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 +12 -0
- package/README.md +3 -0
- package/dist/base/table-view/realtime.js +7 -3
- package/dist/base/table-view/realtime.js.map +1 -1
- package/dist/hooks.js +14 -15
- package/dist/hooks.js.map +1 -1
- package/dist/utils/owned-registry.d.ts +10 -0
- package/dist/utils/owned-registry.js +34 -0
- package/dist/utils/owned-registry.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.3.1
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.3.0...v0.3.1)
|
|
6
|
+
|
|
7
|
+
### 🩹 Fixes
|
|
8
|
+
|
|
9
|
+
- **hooks:** Release hook handlers and mutation listeners with the module that registered them ([#89](https://github.com/AntelopeJS/dms/pull/89))
|
|
10
|
+
|
|
11
|
+
### ❤️ Contributors
|
|
12
|
+
|
|
13
|
+
- Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
|
|
14
|
+
|
|
3
15
|
## v0.3.0
|
|
4
16
|
|
|
5
17
|
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.2.8...v0.3.0)
|
package/README.md
CHANGED
|
@@ -49,6 +49,9 @@ other than the canonical one, so a mismatch is caught at startup rather than
|
|
|
49
49
|
diagnosed later. Depend on it with a wide range -- `>=0.0.1 <1.0.0`, raising the lower bound
|
|
50
50
|
to the version you actually need rather than pinning an upper one -- so package
|
|
51
51
|
managers can deduplicate, and never vendor or bundle this package into a module.
|
|
52
|
+
`@antelopejs/dms`, which implements this interface, is the exception: it caps its
|
|
53
|
+
range below the next minor, so a breaking minor of this package never reaches an
|
|
54
|
+
older DMS.
|
|
52
55
|
|
|
53
56
|
One more consequence worth knowing when writing a module: the runtime hands a
|
|
54
57
|
module a per-context view of the values it receives through an interface, so
|
|
@@ -13,6 +13,7 @@ const interface_core_1 = require("@antelopejs/interface-core");
|
|
|
13
13
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
14
14
|
const auth_1 = require("../../auth");
|
|
15
15
|
const realtime_1 = require("../../realtime");
|
|
16
|
+
const owned_registry_1 = require("../../utils/owned-registry");
|
|
16
17
|
const meta_1 = require("./meta");
|
|
17
18
|
const REALTIME_SESSION_HEADER = "x-realtime-session";
|
|
18
19
|
exports.REALTIME_PRESENCE_QUERY = "_presence";
|
|
@@ -36,16 +37,19 @@ var internal;
|
|
|
36
37
|
internal.PublishMutation = (0, interface_core_1.InterfaceFunction)();
|
|
37
38
|
internal.AcquirePresence = (0, interface_core_1.InterfaceFunction)();
|
|
38
39
|
})(internal || (exports.internal = internal = {}));
|
|
39
|
-
const realtimeMutationListeners = new
|
|
40
|
+
const realtimeMutationListeners = new owned_registry_1.OwnedRegistry();
|
|
40
41
|
function registerRealtimeMutationListener(listener) {
|
|
42
|
+
if (realtimeMutationListeners.has((registered) => registered === listener)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
41
45
|
realtimeMutationListeners.add(listener);
|
|
42
46
|
}
|
|
43
47
|
function unregisterRealtimeMutationListener(listener) {
|
|
44
|
-
realtimeMutationListeners.
|
|
48
|
+
realtimeMutationListeners.remove((registered) => registered === listener);
|
|
45
49
|
}
|
|
46
50
|
async function dispatchRealtimeMutation(context) {
|
|
47
51
|
await internal.PublishMutation(context);
|
|
48
|
-
for (const listener of realtimeMutationListeners) {
|
|
52
|
+
for (const listener of realtimeMutationListeners.values()) {
|
|
49
53
|
try {
|
|
50
54
|
await listener(context);
|
|
51
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../src/base/table-view/realtime.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../src/base/table-view/realtime.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.js
CHANGED
|
@@ -23,6 +23,7 @@ exports.ExecuteHooks = ExecuteHooks;
|
|
|
23
23
|
exports.CollectHooks = CollectHooks;
|
|
24
24
|
const interface_core_1 = require("@antelopejs/interface-core");
|
|
25
25
|
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
26
|
+
const owned_registry_1 = require("./utils/owned-registry");
|
|
26
27
|
__exportStar(require("./tenant-export"), exports);
|
|
27
28
|
var Hook;
|
|
28
29
|
(function (Hook) {
|
|
@@ -40,29 +41,29 @@ var Hook;
|
|
|
40
41
|
})(Hook || (exports.Hook = Hook = {}));
|
|
41
42
|
const hooksRegistry = new Map();
|
|
42
43
|
function getHooks(name) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
const existing = hooksRegistry.get(name);
|
|
45
|
+
if (existing)
|
|
46
|
+
return existing;
|
|
47
|
+
const hooks = new owned_registry_1.OwnedRegistry();
|
|
48
|
+
hooksRegistry.set(name, hooks);
|
|
49
|
+
return hooks;
|
|
47
50
|
}
|
|
48
51
|
function logHookFailure(name, error) {
|
|
49
52
|
logging_1.Logging.Error(`Hook '${name}' execution failed:`, error);
|
|
50
53
|
}
|
|
51
54
|
function RegisterHook(name, callback, options) {
|
|
52
|
-
getHooks(name).
|
|
55
|
+
getHooks(name).add({
|
|
53
56
|
callback: callback,
|
|
54
57
|
moduleId: options?.moduleId ?? (0, interface_core_1.GetResponsibleModule)(),
|
|
55
58
|
});
|
|
56
59
|
}
|
|
57
60
|
function UnregisterHook(name, callback) {
|
|
58
|
-
|
|
59
|
-
const index = hooks.findIndex((entry) => entry.callback === callback);
|
|
60
|
-
if (index !== -1) {
|
|
61
|
-
hooks.splice(index, 1);
|
|
62
|
-
}
|
|
61
|
+
getHooks(name).remove((entry) => entry.callback === callback);
|
|
63
62
|
}
|
|
64
63
|
function GetRegisteredHooks(name) {
|
|
65
|
-
return getHooks(name)
|
|
64
|
+
return getHooks(name)
|
|
65
|
+
.values()
|
|
66
|
+
.map((entry) => ({
|
|
66
67
|
moduleId: entry.moduleId,
|
|
67
68
|
handler: entry.callback,
|
|
68
69
|
}));
|
|
@@ -71,15 +72,13 @@ function RegisterTenantDataExportContributor(moduleId, handler) {
|
|
|
71
72
|
RegisterHook(Hook.TENANT_DATA_EXPORT, handler, { moduleId });
|
|
72
73
|
}
|
|
73
74
|
async function ExecuteHooks(name, ...args) {
|
|
74
|
-
const
|
|
75
|
-
for (const hook of hooks) {
|
|
75
|
+
for (const hook of getHooks(name).values()) {
|
|
76
76
|
await hook.callback(...args);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
async function CollectHooks(name, ...args) {
|
|
80
|
-
const hooks = getHooks(name);
|
|
81
80
|
const results = [];
|
|
82
|
-
for (const hook of
|
|
81
|
+
for (const hook of getHooks(name).values()) {
|
|
83
82
|
try {
|
|
84
83
|
const value = (await hook.callback(...args));
|
|
85
84
|
results.push(value);
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type EntryMatcher<V> = (value: V) => boolean;
|
|
2
|
+
export declare class OwnedRegistry<V> {
|
|
3
|
+
private readonly entries;
|
|
4
|
+
add(value: V): void;
|
|
5
|
+
remove(matches: EntryMatcher<V>): void;
|
|
6
|
+
has(matches: EntryMatcher<V>): boolean;
|
|
7
|
+
values(): V[];
|
|
8
|
+
private findEntry;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OwnedRegistry = void 0;
|
|
4
|
+
const interface_core_1 = require("@antelopejs/interface-core");
|
|
5
|
+
class OwnedRegistry {
|
|
6
|
+
entries = new interface_core_1.EventProxy();
|
|
7
|
+
add(value) {
|
|
8
|
+
const entry = (visit) => visit(value, entry);
|
|
9
|
+
this.entries.register(entry);
|
|
10
|
+
}
|
|
11
|
+
remove(matches) {
|
|
12
|
+
const entry = this.findEntry(matches);
|
|
13
|
+
if (entry)
|
|
14
|
+
this.entries.unregister(entry);
|
|
15
|
+
}
|
|
16
|
+
has(matches) {
|
|
17
|
+
return this.findEntry(matches) !== undefined;
|
|
18
|
+
}
|
|
19
|
+
values() {
|
|
20
|
+
const values = [];
|
|
21
|
+
this.entries.emit((value) => values.push(value));
|
|
22
|
+
return values;
|
|
23
|
+
}
|
|
24
|
+
findEntry(matches) {
|
|
25
|
+
let found;
|
|
26
|
+
this.entries.emit((value, entry) => {
|
|
27
|
+
if (!found && matches(value))
|
|
28
|
+
found = entry;
|
|
29
|
+
});
|
|
30
|
+
return found;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.OwnedRegistry = OwnedRegistry;
|
|
34
|
+
//# sourceMappingURL=owned-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owned-registry.js","sourceRoot":"","sources":["../../src/utils/owned-registry.ts"],"names":[],"mappings":";;;AAAA,+DAAwD;AAyBxD,MAAa,aAAa;IACP,OAAO,GAAG,IAAI,2BAAU,EAAoB,CAAC;IAGvD,GAAG,CAAC,KAAQ;QACjB,MAAM,KAAK,GAAqB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAMM,MAAM,CAAC,OAAwB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,KAAK;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAGM,GAAG,CAAC,OAAwB;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;IAC/C,CAAC;IAGM,MAAM;QACX,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,OAAwB;QACxC,IAAI,KAAmC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,KAAK,GAAG,KAAK,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AArCD,sCAqCC"}
|
package/package.json
CHANGED