@venizia/ignis-worker 0.2.0-4 → 0.2.0-40

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.
Files changed (117) hide show
  1. package/dist/cjs/applications/common/index.d.ts +2 -0
  2. package/dist/cjs/applications/common/index.d.ts.map +1 -0
  3. package/dist/cjs/applications/common/index.js +18 -0
  4. package/dist/cjs/applications/common/index.js.map +1 -0
  5. package/dist/cjs/applications/common/types.d.ts +10 -0
  6. package/dist/cjs/applications/common/types.d.ts.map +1 -0
  7. package/dist/cjs/applications/common/types.js.map +1 -0
  8. package/dist/cjs/applications/index.d.ts +1 -0
  9. package/dist/cjs/applications/index.d.ts.map +1 -1
  10. package/dist/cjs/applications/index.js +1 -0
  11. package/dist/cjs/applications/index.js.map +1 -1
  12. package/dist/cjs/applications/worker.d.ts +12 -0
  13. package/dist/cjs/applications/worker.d.ts.map +1 -1
  14. package/dist/cjs/applications/worker.js +14 -0
  15. package/dist/cjs/applications/worker.js.map +1 -1
  16. package/dist/cjs/envelope/common/index.d.ts +2 -0
  17. package/dist/cjs/envelope/common/index.d.ts.map +1 -0
  18. package/dist/cjs/envelope/common/index.js +18 -0
  19. package/dist/cjs/envelope/common/index.js.map +1 -0
  20. package/dist/cjs/envelope/common/types.d.ts.map +1 -0
  21. package/dist/cjs/envelope/common/types.js +3 -0
  22. package/dist/{esm/envelope → cjs/envelope/common}/types.js.map +1 -1
  23. package/dist/cjs/envelope/encode.d.ts +1 -1
  24. package/dist/cjs/envelope/encode.d.ts.map +1 -1
  25. package/dist/cjs/envelope/index.d.ts +1 -1
  26. package/dist/cjs/envelope/index.d.ts.map +1 -1
  27. package/dist/cjs/envelope/index.js +1 -1
  28. package/dist/cjs/envelope/index.js.map +1 -1
  29. package/dist/cjs/transport/in-process.d.ts +2 -1
  30. package/dist/cjs/transport/in-process.d.ts.map +1 -1
  31. package/dist/cjs/transport/in-process.js +3 -1
  32. package/dist/cjs/transport/in-process.js.map +1 -1
  33. package/dist/cjs/transport/shared/common/constants.d.ts +14 -0
  34. package/dist/cjs/transport/shared/common/constants.d.ts.map +1 -0
  35. package/dist/cjs/transport/shared/common/constants.js +19 -0
  36. package/dist/cjs/transport/shared/common/constants.js.map +1 -0
  37. package/dist/cjs/transport/shared/common/index.d.ts +3 -0
  38. package/dist/cjs/transport/shared/common/index.d.ts.map +1 -0
  39. package/dist/cjs/transport/shared/common/index.js +19 -0
  40. package/dist/cjs/transport/shared/common/index.js.map +1 -0
  41. package/dist/cjs/transport/shared/common/types.d.ts +35 -0
  42. package/dist/cjs/transport/shared/common/types.d.ts.map +1 -0
  43. package/dist/cjs/transport/shared/common/types.js +3 -0
  44. package/dist/cjs/transport/shared/common/types.js.map +1 -0
  45. package/dist/cjs/transport/shared/index.d.ts +4 -0
  46. package/dist/cjs/transport/shared/index.d.ts.map +1 -0
  47. package/dist/cjs/transport/shared/index.js +11 -0
  48. package/dist/cjs/transport/shared/index.js.map +1 -0
  49. package/dist/cjs/transport/{shared.d.ts → shared/transport.d.ts} +3 -18
  50. package/dist/cjs/transport/shared/transport.d.ts.map +1 -0
  51. package/dist/cjs/transport/{shared.js → shared/transport.js} +20 -33
  52. package/dist/cjs/transport/shared/transport.js.map +1 -0
  53. package/dist/esm/applications/common/index.d.ts +2 -0
  54. package/dist/esm/applications/common/index.d.ts.map +1 -0
  55. package/dist/esm/applications/common/index.js +2 -0
  56. package/dist/esm/applications/common/index.js.map +1 -0
  57. package/dist/esm/applications/common/types.d.ts +10 -0
  58. package/dist/esm/applications/common/types.d.ts.map +1 -0
  59. package/dist/esm/applications/common/types.js.map +1 -0
  60. package/dist/esm/applications/index.d.ts +1 -0
  61. package/dist/esm/applications/index.d.ts.map +1 -1
  62. package/dist/esm/applications/index.js +1 -0
  63. package/dist/esm/applications/index.js.map +1 -1
  64. package/dist/esm/applications/worker.d.ts +12 -0
  65. package/dist/esm/applications/worker.d.ts.map +1 -1
  66. package/dist/esm/applications/worker.js +16 -2
  67. package/dist/esm/applications/worker.js.map +1 -1
  68. package/dist/esm/envelope/common/index.d.ts +2 -0
  69. package/dist/esm/envelope/common/index.d.ts.map +1 -0
  70. package/dist/esm/envelope/common/index.js +2 -0
  71. package/dist/esm/envelope/common/index.js.map +1 -0
  72. package/dist/esm/envelope/common/types.d.ts.map +1 -0
  73. package/dist/esm/envelope/common/types.js +2 -0
  74. package/dist/{cjs/envelope → esm/envelope/common}/types.js.map +1 -1
  75. package/dist/esm/envelope/encode.d.ts +1 -1
  76. package/dist/esm/envelope/encode.d.ts.map +1 -1
  77. package/dist/esm/envelope/index.d.ts +1 -1
  78. package/dist/esm/envelope/index.d.ts.map +1 -1
  79. package/dist/esm/envelope/index.js +1 -1
  80. package/dist/esm/envelope/index.js.map +1 -1
  81. package/dist/esm/transport/in-process.d.ts +2 -1
  82. package/dist/esm/transport/in-process.d.ts.map +1 -1
  83. package/dist/esm/transport/in-process.js +4 -2
  84. package/dist/esm/transport/in-process.js.map +1 -1
  85. package/dist/esm/transport/index.d.ts +1 -1
  86. package/dist/esm/transport/index.js +1 -1
  87. package/dist/esm/transport/shared/common/constants.d.ts +14 -0
  88. package/dist/esm/transport/shared/common/constants.d.ts.map +1 -0
  89. package/dist/esm/transport/shared/common/constants.js +14 -0
  90. package/dist/esm/transport/shared/common/constants.js.map +1 -0
  91. package/dist/esm/transport/shared/common/index.d.ts +3 -0
  92. package/dist/esm/transport/shared/common/index.d.ts.map +1 -0
  93. package/dist/esm/transport/shared/common/index.js +3 -0
  94. package/dist/esm/transport/shared/common/index.js.map +1 -0
  95. package/dist/esm/transport/shared/common/types.d.ts +35 -0
  96. package/dist/esm/transport/shared/common/types.d.ts.map +1 -0
  97. package/dist/esm/transport/shared/common/types.js +2 -0
  98. package/dist/esm/transport/shared/common/types.js.map +1 -0
  99. package/dist/esm/transport/shared/index.d.ts +4 -0
  100. package/dist/esm/transport/shared/index.d.ts.map +1 -0
  101. package/dist/esm/transport/shared/index.js +6 -0
  102. package/dist/esm/transport/shared/index.js.map +1 -0
  103. package/dist/esm/transport/{shared.d.ts → shared/transport.d.ts} +3 -18
  104. package/dist/esm/transport/shared/transport.d.ts.map +1 -0
  105. package/dist/esm/transport/{shared.js → shared/transport.js} +4 -16
  106. package/dist/esm/transport/shared/transport.js.map +1 -0
  107. package/package.json +9 -9
  108. package/dist/cjs/envelope/types.d.ts.map +0 -1
  109. package/dist/cjs/transport/shared.d.ts.map +0 -1
  110. package/dist/cjs/transport/shared.js.map +0 -1
  111. package/dist/esm/envelope/types.d.ts.map +0 -1
  112. package/dist/esm/transport/shared.d.ts.map +0 -1
  113. package/dist/esm/transport/shared.js.map +0 -1
  114. /package/dist/cjs/{envelope → applications/common}/types.js +0 -0
  115. /package/dist/cjs/envelope/{types.d.ts → common/types.d.ts} +0 -0
  116. /package/dist/esm/{envelope → applications/common}/types.js +0 -0
  117. /package/dist/esm/envelope/{types.d.ts → common/types.d.ts} +0 -0
@@ -1,23 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SharedBffTransport = exports.BffRoles = void 0;
3
+ exports.SharedBffTransport = void 0;
4
4
  const core_1 = require("@venizia/ignis-helpers/core");
5
- const encode_1 = require("../envelope/encode");
6
- const worker_1 = require("./worker");
7
- const DEFAULT_CHANNEL_NAME = 'ignis.bff';
8
- const DEFAULT_TIMEOUT_MS = 30_000;
9
- /** Which part this tab plays. `ELECTING` is the brief window before the lock answers. */
10
- class BffRoles {
11
- static { this.ELECTING = 'electing'; }
12
- static { this.LEADER = 'leader'; }
13
- static { this.FOLLOWER = 'follower'; }
14
- }
15
- exports.BffRoles = BffRoles;
16
- class ChannelMessageKinds {
17
- static { this.REQUEST = 'ignis.bff.request'; }
18
- static { this.RESPONSE = 'ignis.bff.response'; }
19
- static { this.ERROR = 'ignis.bff.error'; }
20
- }
5
+ const encode_1 = require("../../envelope/encode");
6
+ const worker_1 = require("../worker");
7
+ const common_1 = require("./common");
21
8
  /**
22
9
  * One BFF for every tab of an origin, instead of one per tab.
23
10
  *
@@ -45,7 +32,7 @@ class SharedBffTransport extends core_1.BaseHelper {
45
32
  constructor(opts) {
46
33
  super({ scope: opts.scope ?? SharedBffTransport.name });
47
34
  this.pendingRequests = new Map();
48
- this.role = BffRoles.ELECTING;
35
+ this.role = common_1.BffRoles.ELECTING;
49
36
  this.isClosed = false;
50
37
  /** Drops this tab out of the lock QUEUE on close, so a closed transport cannot be promoted. */
51
38
  this.leadershipQueueAbort = new AbortController();
@@ -60,8 +47,8 @@ class SharedBffTransport extends core_1.BaseHelper {
60
47
  this.handleChannelMessage = (event) => {
61
48
  const message = event.data;
62
49
  switch (message?.kind) {
63
- case ChannelMessageKinds.REQUEST: {
64
- if (this.role !== BffRoles.LEADER) {
50
+ case common_1.ChannelMessageKinds.REQUEST: {
51
+ if (this.role !== common_1.BffRoles.LEADER) {
65
52
  return;
66
53
  }
67
54
  // `serveAsLeader` answers its own failures on the channel; this catch is for the one case
@@ -77,7 +64,7 @@ class SharedBffTransport extends core_1.BaseHelper {
77
64
  // a secret, and version skew is the realistic trigger: a long-lived tab on v1 and a new tab
78
65
  // on v2 share the same channel and lock BY DESIGN. An envelope this build cannot read must
79
66
  // fail its caller, never leave the promise unsettled for the full timeout.
80
- case ChannelMessageKinds.RESPONSE: {
67
+ case common_1.ChannelMessageKinds.RESPONSE: {
81
68
  const pending = this.takePending({ id: message.envelope.id });
82
69
  if (!pending) {
83
70
  return;
@@ -96,7 +83,7 @@ class SharedBffTransport extends core_1.BaseHelper {
96
83
  }
97
84
  return;
98
85
  }
99
- case ChannelMessageKinds.ERROR: {
86
+ case common_1.ChannelMessageKinds.ERROR: {
100
87
  const pending = this.takePending({ id: message.envelope.id });
101
88
  if (!pending) {
102
89
  return;
@@ -117,9 +104,9 @@ class SharedBffTransport extends core_1.BaseHelper {
117
104
  }
118
105
  }
119
106
  };
120
- const channelName = opts.channelName ?? DEFAULT_CHANNEL_NAME;
107
+ const channelName = opts.channelName ?? common_1.DEFAULT_CHANNEL_NAME;
121
108
  this.createWorker = opts.createWorker;
122
- this.timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
109
+ this.timeoutMs = opts.timeoutMs ?? common_1.DEFAULT_TIMEOUT_MS;
123
110
  this.lockName = `${channelName}.leader`;
124
111
  this.requestIdGenerator = new core_1.RequestIdGenerator({ scope: SharedBffTransport.name });
125
112
  // Attached BEFORE the election starts: a tab that becomes leader a moment later must not miss a
@@ -137,7 +124,7 @@ class SharedBffTransport extends core_1.BaseHelper {
137
124
  this.logger
138
125
  .for(this.elect.name)
139
126
  .error('Leader election failed, falling back to single-tab | error: %s', error);
140
- if (this.role === BffRoles.ELECTING) {
127
+ if (this.role === common_1.BffRoles.ELECTING) {
141
128
  this.becomeLeader();
142
129
  }
143
130
  });
@@ -167,7 +154,7 @@ class SharedBffTransport extends core_1.BaseHelper {
167
154
  cause: this.leaderStartupError,
168
155
  });
169
156
  }
170
- if (this.role === BffRoles.LEADER && this.leaderTransport) {
157
+ if (this.role === common_1.BffRoles.LEADER && this.leaderTransport) {
171
158
  return this.leaderTransport.fetch(opts);
172
159
  }
173
160
  return this.fetchViaLeader(opts);
@@ -270,11 +257,11 @@ class SharedBffTransport extends core_1.BaseHelper {
270
257
  .for(this.becomeLeader.name)
271
258
  .error('Could not start the BFF worker | error: %s', error);
272
259
  }
273
- this.role = BffRoles.LEADER;
260
+ this.role = common_1.BffRoles.LEADER;
274
261
  this.settleRoleWaiters();
275
262
  }
276
263
  becomeFollower() {
277
- this.role = BffRoles.FOLLOWER;
264
+ this.role = common_1.BffRoles.FOLLOWER;
278
265
  this.settleRoleWaiters();
279
266
  }
280
267
  heldUntilClosed() {
@@ -283,7 +270,7 @@ class SharedBffTransport extends core_1.BaseHelper {
283
270
  });
284
271
  }
285
272
  whenRoleSettled() {
286
- if (this.role !== BffRoles.ELECTING) {
273
+ if (this.role !== common_1.BffRoles.ELECTING) {
287
274
  return Promise.resolve();
288
275
  }
289
276
  return new Promise(resolve => {
@@ -342,7 +329,7 @@ class SharedBffTransport extends core_1.BaseHelper {
342
329
  return;
343
330
  }
344
331
  this.channel.postMessage({
345
- kind: ChannelMessageKinds.REQUEST,
332
+ kind: common_1.ChannelMessageKinds.REQUEST,
346
333
  envelope,
347
334
  });
348
335
  });
@@ -375,7 +362,7 @@ class SharedBffTransport extends core_1.BaseHelper {
375
362
  request: encode_1.BffEnvelope.decodeRequest({ envelope }),
376
363
  });
377
364
  this.channel.postMessage({
378
- kind: ChannelMessageKinds.RESPONSE,
365
+ kind: common_1.ChannelMessageKinds.RESPONSE,
379
366
  envelope: await encode_1.BffEnvelope.encodeResponse({ response, id: envelope.id }),
380
367
  });
381
368
  }
@@ -386,11 +373,11 @@ class SharedBffTransport extends core_1.BaseHelper {
386
373
  .for(this.serveAsLeader.name)
387
374
  .error('Failed to serve a follower request | id: %s | error: %s', envelope.id, error);
388
375
  this.channel.postMessage({
389
- kind: ChannelMessageKinds.ERROR,
376
+ kind: common_1.ChannelMessageKinds.ERROR,
390
377
  envelope: encode_1.BffEnvelope.encodeError({ id: envelope.id, error }),
391
378
  });
392
379
  }
393
380
  }
394
381
  }
395
382
  exports.SharedBffTransport = SharedBffTransport;
396
- //# sourceMappingURL=shared.js.map
383
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/transport/shared/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/applications/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/applications/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { IApplicationConfigs } from '@venizia/ignis-kernel';
2
+ /**
3
+ * What a Web Worker host configures on top of the kernel's shape. `host`/`port` stay off this
4
+ * interface on purpose - `@venizia/ignis`'s `IServerApplicationConfigs` is the one with a socket.
5
+ */
6
+ export interface IWorkerApplicationConfigs extends IApplicationConfigs {
7
+ /** Bound as `CoreBindings.APPLICATION_PROJECT_ROOT` when `getProjectRoot()` resolves it, and shared with `ModuleUtility`; default is the host's own working directory when one exists, else `''`. */
8
+ projectRoot?: string;
9
+ }
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/applications/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,qMAAqM;IACrM,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/applications/common/types.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
+ export * from './common/index.js';
1
2
  export * from './worker.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -1,2 +1,3 @@
1
+ export * from './common/index.js';
1
2
  export * from './worker.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/applications/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { RestApplication } from '@venizia/ignis-kernel';
2
2
  import type { Env, Schema } from 'hono';
3
+ import type { IWorkerApplicationConfigs } from './common/index.js';
3
4
  /**
4
5
  * Structural shape of the two globals `listen()` can attach to. Never `DedicatedWorkerGlobalScope`:
5
6
  * naming it emits it into the published `.d.ts` and forces every consumer to compile with
@@ -19,12 +20,23 @@ export interface IWorkerMessageScope {
19
20
  * reason the DI helpers and `RestComponent` sit in the kernel.
20
21
  */
21
22
  export declare abstract class WorkerApplication<AppEnv extends Env = Env, AppSchema extends Schema = {}, BasePath extends string = '/'> extends RestApplication<AppEnv, AppSchema, BasePath> {
23
+ /** Widened by this layer, the only one with an optional `projectRoot` to read. Assigned by the base constructor - `declare` so no field initializer runs here and overwrites it with `undefined`. */
24
+ protected configs: IWorkerApplicationConfigs;
22
25
  /** Resolves once the router tree is mounted - what an envelope arriving during boot waits on. */
23
26
  private servingPromise?;
24
27
  /** The whole `listen()` call, kept so a second one is a no-op instead of a second listener. */
25
28
  private listenPromise?;
26
29
  private detachFromScope?;
27
30
  private isStopped;
31
+ /**
32
+ * `configs.projectRoot` wins, else the host's own working directory - read as
33
+ * `globalThis.process?.cwd?.()`, never a bare `process.cwd()`, because a real browser Worker has no
34
+ * such global and this class ships there. Bound AND shared with `ModuleUtility` (through the
35
+ * purity-safe `ProjectRootRegistry`), the same seam `ServerApplication` gives a socket host. No
36
+ * `node_modules` check here, unlike that host: a browser has no filesystem to check, and `node:fs`
37
+ * would bundle a Node builtin straight into a Worker.
38
+ */
39
+ getProjectRoot(): string;
28
40
  /**
29
41
  * Every failure here is posted back as an `IBffErrorEnvelope`, the failed `postMessage` included:
30
42
  * an exception nobody posts leaves the UI waiting out the transport timeout.
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/applications/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAIxC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IACjF,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,mBAAmB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACrF,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,8BAAsB,iBAAiB,CACrC,MAAM,SAAS,GAAG,GAAG,GAAG,EACxB,SAAS,SAAS,MAAM,GAAG,EAAE,EAC7B,QAAQ,SAAS,MAAM,GAAG,GAAG,CAC7B,SAAQ,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;IACpD,iGAAiG;IACjG,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,+FAA+F;IAC/F,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B;;;OAGG;YACW,aAAa;IAoC3B,kKAAkK;IAClK,OAAO,CAAC,iBAAiB;IAgBzB,kIAAkI;YACpH,YAAY;IAW1B;;;;;OAKG;YACW,eAAe;IAqC7B,OAAO,CAAC,QAAQ;IAsChB;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjF;;;;;;;;;OASG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAU5B"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/applications/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IACjF,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,mBAAmB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;IACrF,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED;;;;;GAKG;AACH,8BAAsB,iBAAiB,CACrC,MAAM,SAAS,GAAG,GAAG,GAAG,EACxB,SAAS,SAAS,MAAM,GAAG,EAAE,EAC7B,QAAQ,SAAS,MAAM,GAAG,GAAG,CAC7B,SAAQ,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;IACpD,qMAAqM;IACrM,UAAkB,OAAO,EAAE,yBAAyB,CAAC;IAErD,iGAAiG;IACjG,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,+FAA+F;IAC/F,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;;;OAOG;IACM,cAAc,IAAI,MAAM;IASjC;;;OAGG;YACW,aAAa;IAoC3B,kKAAkK;IAClK,OAAO,CAAC,iBAAiB;IAgBzB,kIAAkI;YACpH,YAAY;IAW1B;;;;;OAKG;YACW,eAAe;IAqC7B,OAAO,CAAC,QAAQ;IAsChB;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjF;;;;;;;;;OASG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAU5B"}
@@ -1,6 +1,6 @@
1
- import { getError } from '@venizia/ignis-helpers/core';
1
+ import { getError, ProjectRootRegistry } from '@venizia/ignis-helpers/core';
2
2
  import { HTTP } from '@venizia/ignis-helpers/common';
3
- import { RestApplication } from '@venizia/ignis-kernel';
3
+ import { CoreBindings, RestApplication } from '@venizia/ignis-kernel';
4
4
  import { BffEnvelope } from '../envelope/encode.js';
5
5
  /**
6
6
  * Runs an IGNIS application inside a browser Web Worker: `listen()` replaces what
@@ -13,6 +13,20 @@ export class WorkerApplication extends RestApplication {
13
13
  super(...arguments);
14
14
  this.isStopped = false;
15
15
  }
16
+ /**
17
+ * `configs.projectRoot` wins, else the host's own working directory - read as
18
+ * `globalThis.process?.cwd?.()`, never a bare `process.cwd()`, because a real browser Worker has no
19
+ * such global and this class ships there. Bound AND shared with `ModuleUtility` (through the
20
+ * purity-safe `ProjectRootRegistry`), the same seam `ServerApplication` gives a socket host. No
21
+ * `node_modules` check here, unlike that host: a browser has no filesystem to check, and `node:fs`
22
+ * would bundle a Node builtin straight into a Worker.
23
+ */
24
+ getProjectRoot() {
25
+ const projectRoot = this.configs.projectRoot ?? globalThis.process?.cwd?.() ?? '';
26
+ this.bind({ key: CoreBindings.APPLICATION_PROJECT_ROOT }).toValue(projectRoot);
27
+ ProjectRootRegistry.set({ projectRoot });
28
+ return projectRoot;
29
+ }
16
30
  /**
17
31
  * Every failure here is posted back as an `IBffErrorEnvelope`, the failed `postMessage` included:
18
32
  * an exception nobody posts leaves the UI waiting out the transport timeout.
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/applications/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/applications/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/envelope/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/envelope/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/envelope/common/types.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,gBAAgB,CAAC;IAC1B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACxD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/envelope/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/envelope/common/types.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import type { ApplicationError } from '@venizia/ignis-helpers/core';
2
- import type { IBffErrorEnvelope, IBffRequestEnvelope, IBffResponseEnvelope } from './types.js';
2
+ import type { IBffErrorEnvelope, IBffRequestEnvelope, IBffResponseEnvelope } from './common/index.js';
3
3
  /**
4
4
  * Every request built inside the Worker uses this origin. Never `self.location.href`: a `blob:`
5
5
  * worker origin is opaque and `new URL(path, blobUrl)` throws, and Hono's `getPath()` mis-parses
@@ -1 +1 @@
1
- {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../../src/envelope/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE5F;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D,+IAA+I;AAC/I,qBAAa,WAAW;IACtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAEtE;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAKpD;;;;;OAKG;WACU,aAAa,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAahC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO;WAUzD,cAAc,CAAC,IAAI,EAAE;QAChC,QAAQ,EAAE,QAAQ,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAajC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,oBAAoB,CAAA;KAAE,GAAG,QAAQ;IAazE;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,iBAAiB;IAoB3E,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAA;KAAE,GAAG,gBAAgB;CAc5E"}
1
+ {"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../../src/envelope/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7F;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D,+IAA+I;AAC/I,qBAAa,WAAW;IACtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAEtE;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAKpD;;;;;OAKG;WACU,aAAa,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAahC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO;WAUzD,cAAc,CAAC,IAAI,EAAE;QAChC,QAAQ,EAAE,QAAQ,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAajC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,oBAAoB,CAAA;KAAE,GAAG,QAAQ;IAazE;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,iBAAiB;IAoB3E,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAA;KAAE,GAAG,gBAAgB;CAc5E"}
@@ -1,3 +1,3 @@
1
+ export * from './common/index.js';
1
2
  export * from './encode.js';
2
- export * from './types.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/envelope/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/envelope/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -1,3 +1,3 @@
1
+ export * from './common/index.js';
1
2
  export * from './encode.js';
2
- export * from './types.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/envelope/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/envelope/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers/core';
1
2
  import type { IBffTransport } from './common/types.js';
2
3
  /**
3
4
  * No worker, no browser - the seam that makes a BFF testable in-process. It still runs the full
@@ -9,7 +10,7 @@ import type { IBffTransport } from './common/types.js';
9
10
  * What it deliberately does NOT mirror is the timeout: in-process there is no message that can be
10
11
  * lost, so a handler either settles or the caller's own test timeout fires.
11
12
  */
12
- export declare class InProcessBffTransport implements IBffTransport {
13
+ export declare class InProcessBffTransport extends BaseHelper implements IBffTransport {
13
14
  private readonly handler;
14
15
  private readonly requestIdGenerator;
15
16
  constructor(opts: {
@@ -1 +1 @@
1
- {"version":3,"file":"in-process.d.ts","sourceRoot":"","sources":["../../../src/transport/in-process.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAEhC;gBAES,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE;IAIhE,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;CAuB3D"}
1
+ {"version":3,"file":"in-process.d.ts","sourceRoot":"","sources":["../../../src/transport/in-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,6BAA6B,CAAC;AAG7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,UAAW,YAAW,aAAa;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0C;IAClE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAEhC;gBAES,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE;IAMhE,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;CAyB3D"}
@@ -1,4 +1,4 @@
1
- import { RequestIdGenerator } from '@venizia/ignis-helpers/core';
1
+ import { BaseHelper, RequestIdGenerator } from '@venizia/ignis-helpers/core';
2
2
  import { BffEnvelope } from '../envelope/encode.js';
3
3
  /**
4
4
  * No worker, no browser - the seam that makes a BFF testable in-process. It still runs the full
@@ -10,8 +10,9 @@ import { BffEnvelope } from '../envelope/encode.js';
10
10
  * What it deliberately does NOT mirror is the timeout: in-process there is no message that can be
11
11
  * lost, so a handler either settles or the caller's own test timeout fires.
12
12
  */
13
- export class InProcessBffTransport {
13
+ export class InProcessBffTransport extends BaseHelper {
14
14
  constructor(opts) {
15
+ super({ scope: InProcessBffTransport.name });
15
16
  this.requestIdGenerator = new RequestIdGenerator({
16
17
  scope: InProcessBffTransport.name,
17
18
  });
@@ -30,6 +31,7 @@ export class InProcessBffTransport {
30
31
  responseEnvelope = await BffEnvelope.encodeResponse({ response, id });
31
32
  }
32
33
  catch (error) {
34
+ this.logger.for(this.fetch.name).error('Handler failed | id: %s | error: %s', id, error);
33
35
  // Encoded and decoded rather than rethrown: what a UI receives over a real Worker is a
34
36
  // rebuilt `ApplicationError` carrying only the normalised shape - never the original object,
35
37
  // its stack or its `extra`.
@@ -1 +1 @@
1
- {"version":3,"file":"in-process.js","sourceRoot":"","sources":["../../../src/transport/in-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;GASG;AACH,MAAM,OAAO,qBAAqB;IAMhC,YAAY,IAA0D;QAJrD,uBAAkB,GAAG,IAAI,kBAAkB,CAAC;YAC3D,KAAK,EAAE,qBAAqB,CAAC,IAAI;SAClC,CAAC,CAAC;QAGD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAA0B;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAE5C,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE;YACF,GAAG,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SAC3D,CAAC,CAAC;QAEH,IAAI,gBAAsC,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC9F,gBAAgB,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uFAAuF;YACvF,6FAA6F;YAC7F,4BAA4B;YAC5B,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"in-process.js","sourceRoot":"","sources":["../../../src/transport/in-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;GASG;AACH,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IAMnD,YAAY,IAA0D;QACpE,KAAK,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;QAL9B,uBAAkB,GAAG,IAAI,kBAAkB,CAAC;YAC3D,KAAK,EAAE,qBAAqB,CAAC,IAAI;SAClC,CAAC,CAAC;QAKD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAA0B;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAE5C,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE;YACF,GAAG,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;SAC3D,CAAC,CAAC;QAEH,IAAI,gBAAsC,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC9F,gBAAgB,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAEzF,uFAAuF;YACvF,6FAA6F;YAC7F,4BAA4B;YAC5B,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  export * from './common/index.js';
2
2
  export * from './fetch-bridge.js';
3
3
  export * from './in-process.js';
4
- export * from './shared.js';
4
+ export * from './shared/index.js';
5
5
  export * from './worker.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  export * from './common/index.js';
2
2
  export * from './fetch-bridge.js';
3
3
  export * from './in-process.js';
4
- export * from './shared.js';
4
+ export * from './shared/index.js';
5
5
  export * from './worker.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,14 @@
1
+ export declare const DEFAULT_CHANNEL_NAME = "ignis.bff";
2
+ export declare const DEFAULT_TIMEOUT_MS = 30000;
3
+ /** Which part this tab plays. `ELECTING` is the brief window before the lock answers. */
4
+ export declare class BffRoles {
5
+ static readonly ELECTING = "electing";
6
+ static readonly LEADER = "leader";
7
+ static readonly FOLLOWER = "follower";
8
+ }
9
+ export declare class ChannelMessageKinds {
10
+ static readonly REQUEST = "ignis.bff.request";
11
+ static readonly RESPONSE = "ignis.bff.response";
12
+ static readonly ERROR = "ignis.bff.error";
13
+ }
14
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/transport/shared/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,yFAAyF;AACzF,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;CACvC;AAED,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,uBAAuB;IAC9C,MAAM,CAAC,QAAQ,CAAC,QAAQ,wBAAwB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,qBAAqB;CAC3C"}
@@ -0,0 +1,14 @@
1
+ export const DEFAULT_CHANNEL_NAME = 'ignis.bff';
2
+ export const DEFAULT_TIMEOUT_MS = 30_000;
3
+ /** Which part this tab plays. `ELECTING` is the brief window before the lock answers. */
4
+ export class BffRoles {
5
+ static { this.ELECTING = 'electing'; }
6
+ static { this.LEADER = 'leader'; }
7
+ static { this.FOLLOWER = 'follower'; }
8
+ }
9
+ export class ChannelMessageKinds {
10
+ static { this.REQUEST = 'ignis.bff.request'; }
11
+ static { this.RESPONSE = 'ignis.bff.response'; }
12
+ static { this.ERROR = 'ignis.bff.error'; }
13
+ }
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/transport/shared/common/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,yFAAyF;AACzF,MAAM,OAAO,QAAQ;aACH,aAAQ,GAAG,UAAU,CAAC;aACtB,WAAM,GAAG,QAAQ,CAAC;aAClB,aAAQ,GAAG,UAAU,CAAC;;AAGxC,MAAM,OAAO,mBAAmB;aACd,YAAO,GAAG,mBAAmB,CAAC;aAC9B,aAAQ,GAAG,oBAAoB,CAAC;aAChC,UAAK,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './constants.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/transport/shared/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './constants.js';
2
+ export * from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/transport/shared/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { TConstValue } from '@venizia/ignis-helpers/common';
2
+ import type { IBffErrorEnvelope, IBffRequestEnvelope, IBffResponseEnvelope } from '../../../envelope/common/index.js';
3
+ import { BffRoles, ChannelMessageKinds } from './constants.js';
4
+ export type TBffRole = TConstValue<typeof BffRoles>;
5
+ /**
6
+ * There is deliberately no "a new leader is ready" broadcast. A follower cannot act on one safely:
7
+ * BroadcastChannel does not order messages across senders, so a request posted around the moment of
8
+ * promotion may well be answered by the new leader - and a follower that failed its in-flight
9
+ * requests on hearing the announcement would turn some of those successes into errors. The request
10
+ * timeout is the one honest answer for that window.
11
+ */
12
+ export type TChannelMessage = {
13
+ kind: typeof ChannelMessageKinds.REQUEST;
14
+ envelope: IBffRequestEnvelope;
15
+ } | {
16
+ kind: typeof ChannelMessageKinds.RESPONSE;
17
+ envelope: IBffResponseEnvelope;
18
+ } | {
19
+ kind: typeof ChannelMessageKinds.ERROR;
20
+ envelope: IBffErrorEnvelope;
21
+ };
22
+ export interface IPendingRequest {
23
+ resolve: (response: Response) => void;
24
+ reject: (error: unknown) => void;
25
+ release: () => void;
26
+ }
27
+ export interface ISharedBffTransportOptions {
28
+ /** Builds the Worker. Called ONLY by whichever tab wins the election - the others never start one. */
29
+ createWorker: () => Worker;
30
+ /** Distinguishes independent BFFs on one origin. The lock name is derived from it. */
31
+ channelName?: string;
32
+ timeoutMs?: number;
33
+ scope?: string;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/transport/shared/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,mBAAmB,CAAC,OAAO,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,sGAAsG;IACtG,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/transport/shared/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { BffRoles } from './common/constants.js';
2
+ export type { ISharedBffTransportOptions, TBffRole } from './common/types.js';
3
+ export { SharedBffTransport } from './transport.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transport/shared/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ // `export * from './common/index.js'` would also publish five module-private names - `DEFAULT_CHANNEL_NAME`,
2
+ // `DEFAULT_TIMEOUT_MS`, `ChannelMessageKinds`, `TChannelMessage`, `IPendingRequest` - through
3
+ // `transport/index.ts`.
4
+ export { BffRoles } from './common/constants.js';
5
+ export { SharedBffTransport } from './transport.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transport/shared/index.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,8FAA8F;AAC9F,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}