@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 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 Set();
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.delete(listener);
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":"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"}
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
- if (!hooksRegistry.has(name)) {
44
- hooksRegistry.set(name, []);
45
- }
46
- return hooksRegistry.get(name) ?? [];
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).push({
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
- const hooks = getHooks(name);
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).map((entry) => ({
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 hooks = getHooks(name);
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 hooks) {
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":";;;;;;;;;;;;;;;;;AA8NA,oCASC;AAED,wCASC;AAOD,gDAOC;AAQD,kFAKC;AAED,oCAQC;AAED,oCAiBC;AA1SD,+DAAkE;AAClE,gEAA6D;AAO7D,kDAAgC;AAMhC,IAAY,IAgCX;AAhCD,WAAY,IAAI;IACd,qDAA6C,CAAA;IAqB7C,6DAAqD,CAAA;IACrD,yCAAiC,CAAA;IACjC,iDAAyC,CAAA;IACzC,qDAA6C,CAAA;IAC7C,yCAAiC,CAAA;IACjC,yCAAiC,CAAA;IACjC,iDAAyC,CAAA;IACzC,qCAA6B,CAAA;IAC7B,yCAAiC,CAAA;IACjC,2CAAmC,CAAA;AACrC,CAAC,EAhCW,IAAI,oBAAJ,IAAI,QAgCf;AAmKD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEnD,SAAS,QAAQ,CAAC,IAAU;IAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,IAAU,EAAE,KAAc;IAChD,iBAAO,CAAC,KAAK,CAAC,SAAS,IAAI,qBAAqB,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,YAAY,CAC1B,IAAO,EACP,QAAwB,EACxB,OAAiC;IAEjC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAClB,QAAQ,EAAE,QAAwB;QAClC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAA,qCAAoB,GAAE;KACtD,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAC5B,IAAO,EACP,QAAwB;IAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACtE,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAOD,SAAgB,kBAAkB,CAChC,IAAO;IAEP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,QAA0B;KAC1C,CAAC,CAAC,CAAC;AACN,CAAC;AAQD,SAAgB,mCAAmC,CACjD,QAAgB,EAChB,OAA6C;IAE7C,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,IAAO,EACP,GAAG,IAA+B;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,IAAO,EACP,GAAG,IAA+B;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAChC,GAAG,IAAI,CACR,CAAgC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/interface-dms",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Public AntelopeJS interfaces of the DMS: pages, components, permissions, tenancy, auth, notifications and HTML rendering.",
5
5
  "keywords": [
6
6
  "antelopejs",