@getstrata/bootstrap 0.2.64 → 0.2.65

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,9 @@
1
1
  # @getstrata/bootstrap changelog
2
2
 
3
+ ## 0.2.65
4
+
5
+ - App listener discovery reads `src/listeners` from `process.cwd()` so a built `@getstrata/bootstrap` bundle still finds WorkHub registrars (`import.meta.dir` after `build:bootstrap` is the package dist). Listener boot calls each registrar every time (registrars are idempotent per `eventBus`).
6
+
3
7
  ## 0.2.64
4
8
 
5
9
  - `registerDefaultJobs()` no longer registers WorkHub `webhook.dispatch`. Apps that dispatch model webhooks should call `registerWebhookJobs()` (WorkHub’s webhook provider and `queue:work` do).
@@ -329,14 +329,21 @@ var eventsProvider = {
329
329
  var events_default = eventsProvider;
330
330
 
331
331
  // ../../src/bootstrap/discoverListeners.ts
332
- import { readdirSync as readdirSync2 } from "fs";
332
+ import { existsSync, readdirSync as readdirSync2 } from "fs";
333
333
  import { join as join2 } from "path";
334
334
  import { pathToFileURL as pathToFileURL2 } from "url";
335
+ function resolveListenersDirectory() {
336
+ const fromCwd = join2(process.cwd(), "src", "listeners");
337
+ if (existsSync(fromCwd)) {
338
+ return fromCwd;
339
+ }
340
+ return join2(import.meta.dir, "../listeners");
341
+ }
335
342
  async function loadDiscoveredListeners() {
336
- const listenersDirectory = join2(import.meta.dir, "../listeners");
343
+ const listenersDirectory = resolveListenersDirectory();
337
344
  let entries;
338
345
  try {
339
- entries = readdirSync2(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && entry.name.endsWith(".ts")).map((entry) => entry.name);
346
+ entries = readdirSync2(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && /\.(ts|js)$/.test(entry.name)).map((entry) => entry.name);
340
347
  } catch (error) {
341
348
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
342
349
  return [];
@@ -412,8 +419,8 @@ var listenersProvider = {
412
419
  registerListenerGroup("cache.invalidate-on-model-write", () => {
413
420
  registerInvalidateCacheOnModelWriteListeners();
414
421
  });
415
- for (const [index, registerListener] of discoverListeners().entries()) {
416
- registerListenerGroup(`app.listener.${index}`, registerListener);
422
+ for (const registerListener of discoverListeners()) {
423
+ registerListener();
417
424
  }
418
425
  }
419
426
  };
@@ -329,14 +329,21 @@ var eventsProvider = {
329
329
  var events_default = eventsProvider;
330
330
 
331
331
  // ../../src/bootstrap/discoverListeners.ts
332
- import { readdirSync as readdirSync2 } from "fs";
332
+ import { existsSync, readdirSync as readdirSync2 } from "fs";
333
333
  import { join as join2 } from "path";
334
334
  import { pathToFileURL as pathToFileURL2 } from "url";
335
+ function resolveListenersDirectory() {
336
+ const fromCwd = join2(process.cwd(), "src", "listeners");
337
+ if (existsSync(fromCwd)) {
338
+ return fromCwd;
339
+ }
340
+ return join2(import.meta.dir, "../listeners");
341
+ }
335
342
  async function loadDiscoveredListeners() {
336
- const listenersDirectory = join2(import.meta.dir, "../listeners");
343
+ const listenersDirectory = resolveListenersDirectory();
337
344
  let entries;
338
345
  try {
339
- entries = readdirSync2(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && entry.name.endsWith(".ts")).map((entry) => entry.name);
346
+ entries = readdirSync2(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && /\.(ts|js)$/.test(entry.name)).map((entry) => entry.name);
340
347
  } catch (error) {
341
348
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
342
349
  return [];
@@ -412,8 +419,8 @@ var listenersProvider = {
412
419
  registerListenerGroup("cache.invalidate-on-model-write", () => {
413
420
  registerInvalidateCacheOnModelWriteListeners();
414
421
  });
415
- for (const [index, registerListener] of discoverListeners().entries()) {
416
- registerListenerGroup(`app.listener.${index}`, registerListener);
422
+ for (const registerListener of discoverListeners()) {
423
+ registerListener();
417
424
  }
418
425
  }
419
426
  };
@@ -240,14 +240,21 @@ var eventsProvider = {
240
240
  var events_default = eventsProvider;
241
241
 
242
242
  // ../../src/bootstrap/discoverListeners.ts
243
- import { readdirSync } from "fs";
243
+ import { existsSync, readdirSync } from "fs";
244
244
  import { join } from "path";
245
245
  import { pathToFileURL } from "url";
246
+ function resolveListenersDirectory() {
247
+ const fromCwd = join(process.cwd(), "src", "listeners");
248
+ if (existsSync(fromCwd)) {
249
+ return fromCwd;
250
+ }
251
+ return join(import.meta.dir, "../listeners");
252
+ }
246
253
  async function loadDiscoveredListeners() {
247
- const listenersDirectory = join(import.meta.dir, "../listeners");
254
+ const listenersDirectory = resolveListenersDirectory();
248
255
  let entries;
249
256
  try {
250
- entries = readdirSync(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && entry.name.endsWith(".ts")).map((entry) => entry.name);
257
+ entries = readdirSync(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && /\.(ts|js)$/.test(entry.name)).map((entry) => entry.name);
251
258
  } catch (error) {
252
259
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
253
260
  return [];
@@ -402,8 +409,8 @@ var listenersProvider = {
402
409
  registerListenerGroup("cache.invalidate-on-model-write", () => {
403
410
  registerInvalidateCacheOnModelWriteListeners();
404
411
  });
405
- for (const [index, registerListener] of discoverListeners().entries()) {
406
- registerListenerGroup(`app.listener.${index}`, registerListener);
412
+ for (const registerListener of discoverListeners()) {
413
+ registerListener();
407
414
  }
408
415
  }
409
416
  };
package/dist/index.js CHANGED
@@ -734,14 +734,21 @@ var eventsProvider = {
734
734
  var events_default = eventsProvider;
735
735
 
736
736
  // ../../src/bootstrap/discoverListeners.ts
737
- import { readdirSync as readdirSync2 } from "fs";
737
+ import { existsSync, readdirSync as readdirSync2 } from "fs";
738
738
  import { join as join2 } from "path";
739
739
  import { pathToFileURL as pathToFileURL2 } from "url";
740
+ function resolveListenersDirectory() {
741
+ const fromCwd = join2(process.cwd(), "src", "listeners");
742
+ if (existsSync(fromCwd)) {
743
+ return fromCwd;
744
+ }
745
+ return join2(import.meta.dir, "../listeners");
746
+ }
740
747
  async function loadDiscoveredListeners() {
741
- const listenersDirectory = join2(import.meta.dir, "../listeners");
748
+ const listenersDirectory = resolveListenersDirectory();
742
749
  let entries;
743
750
  try {
744
- entries = readdirSync2(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && entry.name.endsWith(".ts")).map((entry) => entry.name);
751
+ entries = readdirSync2(listenersDirectory, { withFileTypes: true }).filter((entry) => entry.isFile() && /\.(ts|js)$/.test(entry.name)).map((entry) => entry.name);
745
752
  } catch (error) {
746
753
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
747
754
  return [];
@@ -803,8 +810,8 @@ var listenersProvider = {
803
810
  registerListenerGroup("cache.invalidate-on-model-write", () => {
804
811
  registerInvalidateCacheOnModelWriteListeners();
805
812
  });
806
- for (const [index, registerListener] of discoverListeners().entries()) {
807
- registerListenerGroup(`app.listener.${index}`, registerListener);
813
+ for (const registerListener of discoverListeners()) {
814
+ registerListener();
808
815
  }
809
816
  }
810
817
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstrata/bootstrap",
3
- "version": "0.2.64",
3
+ "version": "0.2.65",
4
4
  "description": "Strata application bootstrap — HttpKernel, DI, web session helpers",
5
5
  "type": "module",
6
6
  "license": "MIT",