@holo-js/cli 0.2.5 → 0.3.0

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 (53) hide show
  1. package/dist/{agent-skills-MSEMQUXT.mjs → agent-skills-CHAXS2YN.mjs} +13 -6
  2. package/dist/bin/holo.mjs +436 -109
  3. package/dist/{broadcast-5MJ3GJK7.mjs → broadcast-5VZM5SGQ.mjs} +13 -10
  4. package/dist/{broadcast-MRJGFCFH.mjs → broadcast-AABT52BK.mjs} +13 -10
  5. package/dist/cache-A42JSVYA.mjs +138 -0
  6. package/dist/cache-DUVBBOZU.mjs +138 -0
  7. package/dist/{cache-migrations-CPYQC7T6.mjs → cache-migrations-4WKSEN2Q.mjs} +12 -10
  8. package/dist/{cache-migrations-APDFSFEX.mjs → cache-migrations-PD2T5AV4.mjs} +14 -12
  9. package/dist/chunk-3RFRE7XG.mjs +491 -0
  10. package/dist/{chunk-PT72AMV7.mjs → chunk-6BHJLCAO.mjs} +256 -392
  11. package/dist/{chunk-KS5TWO75.mjs → chunk-EQUFFLRG.mjs} +7 -7
  12. package/dist/chunk-HX6MOYBO.mjs +2 -0
  13. package/dist/{chunk-YEFJBN56.mjs → chunk-JVLZ3SOW.mjs} +11 -8
  14. package/dist/{chunk-UPXQONEH.mjs → chunk-KRADH7PK.mjs} +55 -51
  15. package/dist/chunk-LALDNNPH.mjs +428 -0
  16. package/dist/chunk-LHK5YUR4.mjs +156 -0
  17. package/dist/{chunk-LBJAJLKU.mjs → chunk-M3IPUCTM.mjs} +1 -1
  18. package/dist/{chunk-TWITVSFZ.mjs → chunk-OI54DOHK.mjs} +256 -392
  19. package/dist/{chunk-LXGQCG56.mjs → chunk-OLZEMIDQ.mjs} +1 -1
  20. package/dist/{chunk-VP2E62DF.mjs → chunk-QSVMXMTQ.mjs} +49 -349
  21. package/dist/{chunk-J76GH2DR.mjs → chunk-R4ZYMEDU.mjs} +129 -86
  22. package/dist/{chunk-XDRCZ3Z5.mjs → chunk-TH5YCOZB.mjs} +57 -53
  23. package/dist/chunk-TRYHX5S4.mjs +360 -0
  24. package/dist/chunk-XBOVM6LO.mjs +41 -0
  25. package/dist/{chunk-ILU426CF.mjs → chunk-YACY2572.mjs} +482 -2
  26. package/dist/{config-MD27U4FM.mjs → config-BZHQK532.mjs} +3 -3
  27. package/dist/{dev-CT4DRTLN.mjs → dev-7KGRV56X.mjs} +10 -8
  28. package/dist/{dev-QDLR6C7K.mjs → dev-GQT37XJU.mjs} +10 -8
  29. package/dist/{discovery-GWTBF5RZ.mjs → discovery-HNH3BLDL.mjs} +8 -6
  30. package/dist/{generators-PUN5TFP5.mjs → generators-3FVW4AEJ.mjs} +18 -15
  31. package/dist/{generators-WQHI7DBW.mjs → generators-JWVNGUUE.mjs} +14 -11
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.mjs +434 -107
  34. package/dist/{media-migrations-D3CDNMPT.mjs → media-migrations-EG34NYAG.mjs} +13 -11
  35. package/dist/{media-migrations-IWCSCKSA.mjs → media-migrations-LGI7R7AR.mjs} +11 -9
  36. package/dist/plugins-ZGLB6JO6.mjs +24 -0
  37. package/dist/{queue-O3OSLGOV.mjs → queue-BEZDCZCY.mjs} +54 -16
  38. package/dist/{queue-GRB2IH5M.mjs → queue-R54DUUYA.mjs} +54 -16
  39. package/dist/{queue-migrations-7T42S4FX.mjs → queue-migrations-AM3AKT76.mjs} +16 -11
  40. package/dist/{queue-migrations-HFZB64OG.mjs → queue-migrations-U477YSFD.mjs} +18 -13
  41. package/dist/{runtime-TTRP2DGL.mjs → runtime-4TJYZLQV.mjs} +10 -8
  42. package/dist/{runtime-M3G5OKQV.mjs → runtime-MSRQD5W5.mjs} +10 -8
  43. package/dist/{runtime-GSXF4NB3.mjs → runtime-VR5BDPYQ.mjs} +1 -1
  44. package/dist/runtime-worker.mjs +7 -1
  45. package/dist/{scaffold-5BOVJYF3.mjs → scaffold-ASEX5LEX.mjs} +8 -4
  46. package/dist/{scaffold-NY3MWUZF.mjs → scaffold-ZAD3XUSD.mjs} +8 -4
  47. package/dist/{security-ST6ED7EK.mjs → security-4QLV7QCH.mjs} +8 -6
  48. package/dist/{security-H7AGDFBX.mjs → security-KYTLP4DF.mjs} +8 -6
  49. package/package.json +35 -8
  50. package/dist/cache-KVRYC7FB.mjs +0 -66
  51. package/dist/cache-WWE4Q4YE.mjs +0 -66
  52. package/dist/chunk-D7O4SU6N.mjs +0 -2
  53. package/dist/chunk-FGQ2I2YH.mjs +0 -22
@@ -2,27 +2,29 @@ import {
2
2
  hasRegisteredCreateTableMigration,
3
3
  hasRegisteredMigrationSlug,
4
4
  nextMigrationTemplate
5
- } from "./chunk-LXGQCG56.mjs";
5
+ } from "./chunk-OLZEMIDQ.mjs";
6
+ import "./chunk-M3IPUCTM.mjs";
6
7
  import {
7
8
  writeLine
8
9
  } from "./chunk-I7QBCEV7.mjs";
9
- import "./chunk-LBJAJLKU.mjs";
10
- import "./chunk-D7O4SU6N.mjs";
11
- import {
12
- prepareProjectDiscovery
13
- } from "./chunk-VP2E62DF.mjs";
14
- import "./chunk-PT72AMV7.mjs";
10
+ import "./chunk-HX6MOYBO.mjs";
11
+ import "./chunk-6BHJLCAO.mjs";
15
12
  import {
16
13
  ensureProjectConfig
17
- } from "./chunk-YEFJBN56.mjs";
14
+ } from "./chunk-JVLZ3SOW.mjs";
15
+ import {
16
+ prepareProjectDiscovery
17
+ } from "./chunk-QSVMXMTQ.mjs";
18
18
  import {
19
19
  loadGeneratedProjectRegistry
20
- } from "./chunk-J76GH2DR.mjs";
20
+ } from "./chunk-R4ZYMEDU.mjs";
21
+ import "./chunk-3RFRE7XG.mjs";
22
+ import "./chunk-TRYHX5S4.mjs";
21
23
  import {
22
24
  makeProjectRelativePath,
23
25
  resolveDefaultArtifactPath,
24
26
  writeTextFile
25
- } from "./chunk-ILU426CF.mjs";
27
+ } from "./chunk-YACY2572.mjs";
26
28
 
27
29
  // src/media-migrations.ts
28
30
  import { readdir } from "fs/promises";
@@ -93,7 +95,7 @@ async function createMediaTableMigration(projectRoot, options = {}) {
93
95
  }
94
96
  async function runMediaTableCommand(io, projectRoot) {
95
97
  const migrationFilePath = await createMediaTableMigration(projectRoot);
96
- const { runProjectPrepare } = await import("./dev-QDLR6C7K.mjs");
98
+ const { runProjectPrepare } = await import("./dev-GQT37XJU.mjs");
97
99
  await runProjectPrepare(projectRoot);
98
100
  writeLine(io.stdout, `Created migration: ${makeProjectRelativePath(projectRoot, migrationFilePath)}`);
99
101
  }
@@ -2,27 +2,29 @@ import {
2
2
  hasRegisteredCreateTableMigration,
3
3
  hasRegisteredMigrationSlug,
4
4
  nextMigrationTemplate
5
- } from "./chunk-LXGQCG56.mjs";
6
- import "./chunk-LBJAJLKU.mjs";
5
+ } from "./chunk-OLZEMIDQ.mjs";
6
+ import "./chunk-M3IPUCTM.mjs";
7
7
  import {
8
8
  writeLine
9
9
  } from "./chunk-I7QBCEV7.mjs";
10
- import "./chunk-D7O4SU6N.mjs";
10
+ import "./chunk-HX6MOYBO.mjs";
11
11
  import {
12
12
  prepareProjectDiscovery
13
- } from "./chunk-VP2E62DF.mjs";
14
- import "./chunk-TWITVSFZ.mjs";
13
+ } from "./chunk-QSVMXMTQ.mjs";
14
+ import "./chunk-OI54DOHK.mjs";
15
15
  import {
16
16
  ensureProjectConfig
17
- } from "./chunk-YEFJBN56.mjs";
17
+ } from "./chunk-JVLZ3SOW.mjs";
18
18
  import {
19
19
  loadGeneratedProjectRegistry
20
- } from "./chunk-J76GH2DR.mjs";
20
+ } from "./chunk-R4ZYMEDU.mjs";
21
+ import "./chunk-3RFRE7XG.mjs";
22
+ import "./chunk-TRYHX5S4.mjs";
21
23
  import {
22
24
  makeProjectRelativePath,
23
25
  resolveDefaultArtifactPath,
24
26
  writeTextFile
25
- } from "./chunk-ILU426CF.mjs";
27
+ } from "./chunk-YACY2572.mjs";
26
28
 
27
29
  // src/media-migrations.ts
28
30
  import { readdir } from "fs/promises";
@@ -93,7 +95,7 @@ async function createMediaTableMigration(projectRoot, options = {}) {
93
95
  }
94
96
  async function runMediaTableCommand(io, projectRoot) {
95
97
  const migrationFilePath = await createMediaTableMigration(projectRoot);
96
- const { runProjectPrepare } = await import("./dev-CT4DRTLN.mjs");
98
+ const { runProjectPrepare } = await import("./dev-7KGRV56X.mjs");
97
99
  await runProjectPrepare(projectRoot);
98
100
  writeLine(io.stdout, `Created migration: ${makeProjectRelativePath(projectRoot, migrationFilePath)}`);
99
101
  }
@@ -0,0 +1,24 @@
1
+ import {
2
+ activateProjectPlugin,
3
+ deactivateProjectPlugin,
4
+ loadHoloPluginFromPackage,
5
+ loadProjectPluginCommands,
6
+ loadProjectPluginFrameworkDescriptors,
7
+ normalizeHoloPluginDefinition,
8
+ readProjectPluginNames,
9
+ resolveProjectPlugins,
10
+ writeProjectPluginNames
11
+ } from "./chunk-3RFRE7XG.mjs";
12
+ import "./chunk-TRYHX5S4.mjs";
13
+ import "./chunk-YACY2572.mjs";
14
+ export {
15
+ activateProjectPlugin,
16
+ deactivateProjectPlugin,
17
+ loadHoloPluginFromPackage,
18
+ loadProjectPluginCommands,
19
+ loadProjectPluginFrameworkDescriptors,
20
+ normalizeHoloPluginDefinition,
21
+ readProjectPluginNames,
22
+ resolveProjectPlugins,
23
+ writeProjectPluginNames
24
+ };
@@ -1,35 +1,40 @@
1
1
  import {
2
2
  initializeProjectRuntime
3
- } from "./chunk-KS5TWO75.mjs";
3
+ } from "./chunk-EQUFFLRG.mjs";
4
+ import {
5
+ loadProjectDatabaseDrivers
6
+ } from "./chunk-XBOVM6LO.mjs";
4
7
  import {
5
8
  isIgnorableWatchError,
6
9
  isRecursiveWatchUnsupported,
7
10
  normalizeWatchedFilePath,
8
11
  runProjectPrepare,
9
12
  toPosixSlashes
10
- } from "./chunk-XDRCZ3Z5.mjs";
11
- import "./chunk-FGQ2I2YH.mjs";
12
- import "./chunk-LBJAJLKU.mjs";
13
+ } from "./chunk-TH5YCOZB.mjs";
14
+ import "./chunk-LHK5YUR4.mjs";
15
+ import "./chunk-M3IPUCTM.mjs";
13
16
  import {
14
17
  writeLine
15
18
  } from "./chunk-I7QBCEV7.mjs";
16
- import "./chunk-D7O4SU6N.mjs";
17
- import {
18
- prepareProjectDiscovery
19
- } from "./chunk-VP2E62DF.mjs";
20
- import "./chunk-TWITVSFZ.mjs";
19
+ import "./chunk-HX6MOYBO.mjs";
20
+ import "./chunk-6BHJLCAO.mjs";
21
21
  import {
22
22
  ensureProjectConfig,
23
23
  loadProjectConfig
24
- } from "./chunk-YEFJBN56.mjs";
24
+ } from "./chunk-JVLZ3SOW.mjs";
25
+ import {
26
+ prepareProjectDiscovery
27
+ } from "./chunk-QSVMXMTQ.mjs";
25
28
  import {
26
29
  loadGeneratedProjectRegistry
27
- } from "./chunk-J76GH2DR.mjs";
30
+ } from "./chunk-R4ZYMEDU.mjs";
31
+ import "./chunk-3RFRE7XG.mjs";
32
+ import "./chunk-TRYHX5S4.mjs";
28
33
  import {
29
34
  HOLO_RUNTIME_ROOT,
30
35
  bundleProjectModule,
31
36
  resolveProjectPackageImportSpecifier
32
- } from "./chunk-ILU426CF.mjs";
37
+ } from "./chunk-YACY2572.mjs";
33
38
 
34
39
  // src/queue.ts
35
40
  import { spawn } from "child_process";
@@ -67,9 +72,17 @@ var QUEUE_LISTEN_IGNORED_DIRECTORY_NAMES = /* @__PURE__ */ new Set([
67
72
  var QUEUE_LISTEN_IGNORED_PATH_PREFIXES = [
68
73
  HOLO_RUNTIME_ROOT
69
74
  ].map(toPosixSlashes);
75
+ var BUILT_IN_QUEUE_DRIVER_NAMES = /* @__PURE__ */ new Set(["database", "redis", "sync"]);
70
76
  async function loadQueueCliModule(projectRoot) {
71
77
  return await import(resolveProjectPackageImportSpecifier(projectRoot, "@holo-js/queue"));
72
78
  }
79
+ async function loadQueueRedisDriverFactory(projectRoot) {
80
+ const queueRedis = await import(resolveProjectPackageImportSpecifier(projectRoot, "@holo-js/queue-redis"));
81
+ if (!queueRedis.redisQueueDriverFactory) {
82
+ throw new Error("Queue driver package @holo-js/queue-redis does not export redisQueueDriverFactory.");
83
+ }
84
+ return queueRedis.redisQueueDriverFactory;
85
+ }
73
86
  function isIgnoredQueueListenPath(filePath) {
74
87
  const normalized = toPosixSlashes(filePath);
75
88
  if (QUEUE_LISTEN_IGNORED_PATH_PREFIXES.some((prefix) => normalized === prefix || normalized.startsWith(`${prefix}/`))) {
@@ -77,6 +90,18 @@ function isIgnoredQueueListenPath(filePath) {
77
90
  }
78
91
  return normalized.split("/").filter(Boolean).some((segment) => QUEUE_LISTEN_IGNORED_DIRECTORY_NAMES.has(segment));
79
92
  }
93
+ function resolveQueuePluginDriverLoader(queueModule, connectionName, connection) {
94
+ if (!connection || BUILT_IN_QUEUE_DRIVER_NAMES.has(connection.driver)) {
95
+ return void 0;
96
+ }
97
+ const loadQueuePluginDrivers = queueModule.loadQueuePluginDrivers?.bind(queueModule);
98
+ if (loadQueuePluginDrivers) {
99
+ return loadQueuePluginDrivers;
100
+ }
101
+ throw new Error(
102
+ `[Holo CLI] Queue connection "${connectionName}" uses plugin driver "${connection.driver}", but the installed @holo-js/queue package does not support queue plugin drivers.`
103
+ );
104
+ }
80
105
  async function collectQueueWatchTree(rootPath, directories, projectRoot, project) {
81
106
  const relativePath = toPosixSlashes(relative(projectRoot, rootPath));
82
107
  if (relativePath && isIgnoredQueueListenPath(relativePath)) {
@@ -309,16 +334,28 @@ async function runQueueWorkCommand(io, projectRoot, options, dependencies = {})
309
334
  await environment.cleanup();
310
335
  }
311
336
  }
312
- async function initializeQueueMaintenanceEnvironment(projectRoot, connectionName) {
313
- const loadedConfig = await loadConfigDirectory(projectRoot);
314
- const queueModule = await loadQueueCliModule(projectRoot);
337
+ async function initializeQueueMaintenanceEnvironment(projectRoot, connectionName, dependencies = {}) {
338
+ const loadedConfig = await (dependencies.loadConfig ?? loadConfigDirectory)(projectRoot);
339
+ const queueModule = await (dependencies.loadQueueModule ?? loadQueueCliModule)(projectRoot);
315
340
  const resolvedConnectionName = connectionName?.trim() || loadedConfig.queue.default;
316
341
  const connection = loadedConfig.queue.connections[resolvedConnectionName];
342
+ const loadQueuePluginDrivers = resolveQueuePluginDriverLoader(queueModule, resolvedConnectionName, connection);
317
343
  if (!connection || connection.driver !== "database") {
344
+ const driverFactories = connection?.driver === "redis" ? [await loadQueueRedisDriverFactory(projectRoot)] : void 0;
318
345
  queueModule.configureQueueRuntime({
319
346
  config: loadedConfig.queue,
320
- redisConfig: loadedConfig.redis
347
+ redisConfig: loadedConfig.redis,
348
+ ...driverFactories ? { driverFactories } : {}
321
349
  });
350
+ if (loadQueuePluginDrivers) {
351
+ try {
352
+ await loadQueuePluginDrivers(projectRoot, loadedConfig.app.plugins);
353
+ } catch (error) {
354
+ await queueModule.shutdownQueueRuntime().catch(() => {
355
+ });
356
+ throw error;
357
+ }
358
+ }
322
359
  return {
323
360
  async cleanup() {
324
361
  await queueModule.shutdownQueueRuntime();
@@ -331,6 +368,7 @@ async function initializeQueueMaintenanceEnvironment(projectRoot, connectionName
331
368
  redisConfig: loadedConfig.redis,
332
369
  ...createQueueDbRuntimeOptions()
333
370
  });
371
+ await loadProjectDatabaseDrivers(projectRoot, loadedConfig.database);
334
372
  const manager = resolveRuntimeConnectionManagerOptions({
335
373
  db: loadedConfig.database
336
374
  });
@@ -1,35 +1,40 @@
1
+ import {
2
+ loadProjectDatabaseDrivers
3
+ } from "./chunk-XBOVM6LO.mjs";
4
+ import {
5
+ initializeProjectRuntime
6
+ } from "./chunk-LALDNNPH.mjs";
1
7
  import {
2
8
  isIgnorableWatchError,
3
9
  isRecursiveWatchUnsupported,
4
10
  normalizeWatchedFilePath,
5
11
  runProjectPrepare,
6
12
  toPosixSlashes
7
- } from "./chunk-UPXQONEH.mjs";
8
- import "./chunk-FGQ2I2YH.mjs";
13
+ } from "./chunk-KRADH7PK.mjs";
14
+ import "./chunk-LHK5YUR4.mjs";
15
+ import "./chunk-M3IPUCTM.mjs";
9
16
  import {
10
17
  writeLine
11
18
  } from "./chunk-I7QBCEV7.mjs";
12
- import {
13
- initializeProjectRuntime
14
- } from "./chunk-KS5TWO75.mjs";
15
- import "./chunk-LBJAJLKU.mjs";
16
- import "./chunk-D7O4SU6N.mjs";
19
+ import "./chunk-HX6MOYBO.mjs";
17
20
  import {
18
21
  prepareProjectDiscovery
19
- } from "./chunk-VP2E62DF.mjs";
20
- import "./chunk-PT72AMV7.mjs";
22
+ } from "./chunk-QSVMXMTQ.mjs";
23
+ import "./chunk-OI54DOHK.mjs";
21
24
  import {
22
25
  ensureProjectConfig,
23
26
  loadProjectConfig
24
- } from "./chunk-YEFJBN56.mjs";
27
+ } from "./chunk-JVLZ3SOW.mjs";
25
28
  import {
26
29
  loadGeneratedProjectRegistry
27
- } from "./chunk-J76GH2DR.mjs";
30
+ } from "./chunk-R4ZYMEDU.mjs";
31
+ import "./chunk-3RFRE7XG.mjs";
32
+ import "./chunk-TRYHX5S4.mjs";
28
33
  import {
29
34
  HOLO_RUNTIME_ROOT,
30
35
  bundleProjectModule,
31
36
  resolveProjectPackageImportSpecifier
32
- } from "./chunk-ILU426CF.mjs";
37
+ } from "./chunk-YACY2572.mjs";
33
38
 
34
39
  // src/queue.ts
35
40
  import { spawn } from "child_process";
@@ -67,9 +72,17 @@ var QUEUE_LISTEN_IGNORED_DIRECTORY_NAMES = /* @__PURE__ */ new Set([
67
72
  var QUEUE_LISTEN_IGNORED_PATH_PREFIXES = [
68
73
  HOLO_RUNTIME_ROOT
69
74
  ].map(toPosixSlashes);
75
+ var BUILT_IN_QUEUE_DRIVER_NAMES = /* @__PURE__ */ new Set(["database", "redis", "sync"]);
70
76
  async function loadQueueCliModule(projectRoot) {
71
77
  return await import(resolveProjectPackageImportSpecifier(projectRoot, "@holo-js/queue"));
72
78
  }
79
+ async function loadQueueRedisDriverFactory(projectRoot) {
80
+ const queueRedis = await import(resolveProjectPackageImportSpecifier(projectRoot, "@holo-js/queue-redis"));
81
+ if (!queueRedis.redisQueueDriverFactory) {
82
+ throw new Error("Queue driver package @holo-js/queue-redis does not export redisQueueDriverFactory.");
83
+ }
84
+ return queueRedis.redisQueueDriverFactory;
85
+ }
73
86
  function isIgnoredQueueListenPath(filePath) {
74
87
  const normalized = toPosixSlashes(filePath);
75
88
  if (QUEUE_LISTEN_IGNORED_PATH_PREFIXES.some((prefix) => normalized === prefix || normalized.startsWith(`${prefix}/`))) {
@@ -77,6 +90,18 @@ function isIgnoredQueueListenPath(filePath) {
77
90
  }
78
91
  return normalized.split("/").filter(Boolean).some((segment) => QUEUE_LISTEN_IGNORED_DIRECTORY_NAMES.has(segment));
79
92
  }
93
+ function resolveQueuePluginDriverLoader(queueModule, connectionName, connection) {
94
+ if (!connection || BUILT_IN_QUEUE_DRIVER_NAMES.has(connection.driver)) {
95
+ return void 0;
96
+ }
97
+ const loadQueuePluginDrivers = queueModule.loadQueuePluginDrivers?.bind(queueModule);
98
+ if (loadQueuePluginDrivers) {
99
+ return loadQueuePluginDrivers;
100
+ }
101
+ throw new Error(
102
+ `[Holo CLI] Queue connection "${connectionName}" uses plugin driver "${connection.driver}", but the installed @holo-js/queue package does not support queue plugin drivers.`
103
+ );
104
+ }
80
105
  async function collectQueueWatchTree(rootPath, directories, projectRoot, project) {
81
106
  const relativePath = toPosixSlashes(relative(projectRoot, rootPath));
82
107
  if (relativePath && isIgnoredQueueListenPath(relativePath)) {
@@ -309,16 +334,28 @@ async function runQueueWorkCommand(io, projectRoot, options, dependencies = {})
309
334
  await environment.cleanup();
310
335
  }
311
336
  }
312
- async function initializeQueueMaintenanceEnvironment(projectRoot, connectionName) {
313
- const loadedConfig = await loadConfigDirectory(projectRoot);
314
- const queueModule = await loadQueueCliModule(projectRoot);
337
+ async function initializeQueueMaintenanceEnvironment(projectRoot, connectionName, dependencies = {}) {
338
+ const loadedConfig = await (dependencies.loadConfig ?? loadConfigDirectory)(projectRoot);
339
+ const queueModule = await (dependencies.loadQueueModule ?? loadQueueCliModule)(projectRoot);
315
340
  const resolvedConnectionName = connectionName?.trim() || loadedConfig.queue.default;
316
341
  const connection = loadedConfig.queue.connections[resolvedConnectionName];
342
+ const loadQueuePluginDrivers = resolveQueuePluginDriverLoader(queueModule, resolvedConnectionName, connection);
317
343
  if (!connection || connection.driver !== "database") {
344
+ const driverFactories = connection?.driver === "redis" ? [await loadQueueRedisDriverFactory(projectRoot)] : void 0;
318
345
  queueModule.configureQueueRuntime({
319
346
  config: loadedConfig.queue,
320
- redisConfig: loadedConfig.redis
347
+ redisConfig: loadedConfig.redis,
348
+ ...driverFactories ? { driverFactories } : {}
321
349
  });
350
+ if (loadQueuePluginDrivers) {
351
+ try {
352
+ await loadQueuePluginDrivers(projectRoot, loadedConfig.app.plugins);
353
+ } catch (error) {
354
+ await queueModule.shutdownQueueRuntime().catch(() => {
355
+ });
356
+ throw error;
357
+ }
358
+ }
322
359
  return {
323
360
  async cleanup() {
324
361
  await queueModule.shutdownQueueRuntime();
@@ -331,6 +368,7 @@ async function initializeQueueMaintenanceEnvironment(projectRoot, connectionName
331
368
  redisConfig: loadedConfig.redis,
332
369
  ...createQueueDbRuntimeOptions()
333
370
  });
371
+ await loadProjectDatabaseDrivers(projectRoot, loadedConfig.database);
334
372
  const manager = resolveRuntimeConnectionManagerOptions({
335
373
  db: loadedConfig.database
336
374
  });
@@ -1,33 +1,35 @@
1
1
  import {
2
2
  runProjectPrepare
3
- } from "./chunk-XDRCZ3Z5.mjs";
4
- import "./chunk-FGQ2I2YH.mjs";
3
+ } from "./chunk-KRADH7PK.mjs";
4
+ import "./chunk-LHK5YUR4.mjs";
5
5
  import {
6
6
  getRegistryMigrationSlug,
7
7
  hasRegisteredCreateTableMigration,
8
8
  hasRegisteredMigrationSlug,
9
9
  nextMigrationTemplate
10
- } from "./chunk-LXGQCG56.mjs";
11
- import "./chunk-LBJAJLKU.mjs";
10
+ } from "./chunk-OLZEMIDQ.mjs";
11
+ import "./chunk-M3IPUCTM.mjs";
12
12
  import {
13
13
  writeLine
14
14
  } from "./chunk-I7QBCEV7.mjs";
15
- import "./chunk-D7O4SU6N.mjs";
15
+ import "./chunk-HX6MOYBO.mjs";
16
16
  import {
17
17
  prepareProjectDiscovery
18
- } from "./chunk-VP2E62DF.mjs";
19
- import "./chunk-TWITVSFZ.mjs";
18
+ } from "./chunk-QSVMXMTQ.mjs";
19
+ import "./chunk-OI54DOHK.mjs";
20
20
  import {
21
21
  ensureProjectConfig
22
- } from "./chunk-YEFJBN56.mjs";
22
+ } from "./chunk-JVLZ3SOW.mjs";
23
23
  import {
24
24
  loadGeneratedProjectRegistry
25
- } from "./chunk-J76GH2DR.mjs";
25
+ } from "./chunk-R4ZYMEDU.mjs";
26
+ import "./chunk-3RFRE7XG.mjs";
27
+ import "./chunk-TRYHX5S4.mjs";
26
28
  import {
27
29
  makeProjectRelativePath,
28
30
  resolveDefaultArtifactPath,
29
31
  writeTextFile
30
- } from "./chunk-ILU426CF.mjs";
32
+ } from "./chunk-YACY2572.mjs";
31
33
 
32
34
  // src/queue-migrations.ts
33
35
  import { resolve } from "path";
@@ -38,6 +40,9 @@ var DEFAULT_FAILED_JOBS_TABLE = "failed_jobs";
38
40
  async function loadQueueConfig(projectRoot) {
39
41
  return (await loadConfigDirectory(projectRoot)).queue;
40
42
  }
43
+ function isDatabaseQueueConnection(connection) {
44
+ return connection.driver === "database";
45
+ }
41
46
  function normalizeQueueMigrationName(tableName) {
42
47
  return normalizeMigrationSlug(`create_${tableName.replaceAll(".", "_")}_table`);
43
48
  }
@@ -103,7 +108,7 @@ function renderFailedJobsTableMigration(tableName) {
103
108
  ].join("\n");
104
109
  }
105
110
  function resolveDatabaseQueueTables(queueConfig) {
106
- const configured = Object.values(queueConfig.connections).filter((connection) => connection.driver === "database").map((connection) => connection.table);
111
+ const configured = Object.values(queueConfig.connections).filter(isDatabaseQueueConnection).map((connection) => connection.table);
107
112
  return Object.freeze(configured.length > 0 ? [...new Set(configured)] : [DEFAULT_DATABASE_QUEUE_TABLE]);
108
113
  }
109
114
  async function runQueueTableCommand(io, projectRoot) {
@@ -1,33 +1,35 @@
1
1
  import {
2
2
  runProjectPrepare
3
- } from "./chunk-UPXQONEH.mjs";
4
- import "./chunk-FGQ2I2YH.mjs";
3
+ } from "./chunk-TH5YCOZB.mjs";
4
+ import "./chunk-LHK5YUR4.mjs";
5
5
  import {
6
6
  getRegistryMigrationSlug,
7
7
  hasRegisteredCreateTableMigration,
8
8
  hasRegisteredMigrationSlug,
9
9
  nextMigrationTemplate
10
- } from "./chunk-LXGQCG56.mjs";
10
+ } from "./chunk-OLZEMIDQ.mjs";
11
+ import "./chunk-M3IPUCTM.mjs";
11
12
  import {
12
13
  writeLine
13
14
  } from "./chunk-I7QBCEV7.mjs";
14
- import "./chunk-LBJAJLKU.mjs";
15
- import "./chunk-D7O4SU6N.mjs";
16
- import {
17
- prepareProjectDiscovery
18
- } from "./chunk-VP2E62DF.mjs";
19
- import "./chunk-PT72AMV7.mjs";
15
+ import "./chunk-HX6MOYBO.mjs";
16
+ import "./chunk-6BHJLCAO.mjs";
20
17
  import {
21
18
  ensureProjectConfig
22
- } from "./chunk-YEFJBN56.mjs";
19
+ } from "./chunk-JVLZ3SOW.mjs";
20
+ import {
21
+ prepareProjectDiscovery
22
+ } from "./chunk-QSVMXMTQ.mjs";
23
23
  import {
24
24
  loadGeneratedProjectRegistry
25
- } from "./chunk-J76GH2DR.mjs";
25
+ } from "./chunk-R4ZYMEDU.mjs";
26
+ import "./chunk-3RFRE7XG.mjs";
27
+ import "./chunk-TRYHX5S4.mjs";
26
28
  import {
27
29
  makeProjectRelativePath,
28
30
  resolveDefaultArtifactPath,
29
31
  writeTextFile
30
- } from "./chunk-ILU426CF.mjs";
32
+ } from "./chunk-YACY2572.mjs";
31
33
 
32
34
  // src/queue-migrations.ts
33
35
  import { resolve } from "path";
@@ -38,6 +40,9 @@ var DEFAULT_FAILED_JOBS_TABLE = "failed_jobs";
38
40
  async function loadQueueConfig(projectRoot) {
39
41
  return (await loadConfigDirectory(projectRoot)).queue;
40
42
  }
43
+ function isDatabaseQueueConnection(connection) {
44
+ return connection.driver === "database";
45
+ }
41
46
  function normalizeQueueMigrationName(tableName) {
42
47
  return normalizeMigrationSlug(`create_${tableName.replaceAll(".", "_")}_table`);
43
48
  }
@@ -103,7 +108,7 @@ function renderFailedJobsTableMigration(tableName) {
103
108
  ].join("\n");
104
109
  }
105
110
  function resolveDatabaseQueueTables(queueConfig) {
106
- const configured = Object.values(queueConfig.connections).filter((connection) => connection.driver === "database").map((connection) => connection.table);
111
+ const configured = Object.values(queueConfig.connections).filter(isDatabaseQueueConnection).map((connection) => connection.table);
107
112
  return Object.freeze(configured.length > 0 ? [...new Set(configured)] : [DEFAULT_DATABASE_QUEUE_TABLE]);
108
113
  }
109
114
  async function runQueueTableCommand(io, projectRoot) {
@@ -22,14 +22,16 @@ import {
22
22
  resolveRuntimeWorkerPath,
23
23
  runRuntimeInvocation,
24
24
  withRuntimeEnvironment
25
- } from "./chunk-KS5TWO75.mjs";
26
- import "./chunk-LBJAJLKU.mjs";
27
- import "./chunk-D7O4SU6N.mjs";
28
- import "./chunk-VP2E62DF.mjs";
29
- import "./chunk-PT72AMV7.mjs";
30
- import "./chunk-YEFJBN56.mjs";
31
- import "./chunk-J76GH2DR.mjs";
32
- import "./chunk-ILU426CF.mjs";
25
+ } from "./chunk-EQUFFLRG.mjs";
26
+ import "./chunk-M3IPUCTM.mjs";
27
+ import "./chunk-HX6MOYBO.mjs";
28
+ import "./chunk-6BHJLCAO.mjs";
29
+ import "./chunk-JVLZ3SOW.mjs";
30
+ import "./chunk-QSVMXMTQ.mjs";
31
+ import "./chunk-R4ZYMEDU.mjs";
32
+ import "./chunk-3RFRE7XG.mjs";
33
+ import "./chunk-TRYHX5S4.mjs";
34
+ import "./chunk-YACY2572.mjs";
33
35
  export {
34
36
  RUNTIME_MIGRATION_NAME_PATTERN,
35
37
  cacheProjectConfig,
@@ -22,14 +22,16 @@ import {
22
22
  resolveRuntimeWorkerPath,
23
23
  runRuntimeInvocation,
24
24
  withRuntimeEnvironment
25
- } from "./chunk-KS5TWO75.mjs";
26
- import "./chunk-LBJAJLKU.mjs";
27
- import "./chunk-D7O4SU6N.mjs";
28
- import "./chunk-VP2E62DF.mjs";
29
- import "./chunk-TWITVSFZ.mjs";
30
- import "./chunk-YEFJBN56.mjs";
31
- import "./chunk-J76GH2DR.mjs";
32
- import "./chunk-ILU426CF.mjs";
25
+ } from "./chunk-LALDNNPH.mjs";
26
+ import "./chunk-M3IPUCTM.mjs";
27
+ import "./chunk-HX6MOYBO.mjs";
28
+ import "./chunk-QSVMXMTQ.mjs";
29
+ import "./chunk-OI54DOHK.mjs";
30
+ import "./chunk-JVLZ3SOW.mjs";
31
+ import "./chunk-R4ZYMEDU.mjs";
32
+ import "./chunk-3RFRE7XG.mjs";
33
+ import "./chunk-TRYHX5S4.mjs";
34
+ import "./chunk-YACY2572.mjs";
33
35
  export {
34
36
  RUNTIME_MIGRATION_NAME_PATTERN,
35
37
  cacheProjectConfig,
@@ -13,7 +13,7 @@ import {
13
13
  resolveProjectPackageImportSpecifier,
14
14
  setProjectModuleBundlerForTesting,
15
15
  writeTextFile
16
- } from "./chunk-ILU426CF.mjs";
16
+ } from "./chunk-YACY2572.mjs";
17
17
  export {
18
18
  bundleProjectModule,
19
19
  findProjectRoot,
@@ -1,3 +1,7 @@
1
+ import {
2
+ loadProjectDatabaseDrivers
3
+ } from "./chunk-XBOVM6LO.mjs";
4
+
1
5
  // src/runtime-worker.ts
2
6
  import { mkdir, writeFile } from "fs/promises";
3
7
  import { dirname } from "path";
@@ -193,7 +197,9 @@ function writeOutput(message) {
193
197
  process.stdout.write(`${message}
194
198
  `);
195
199
  }
196
- var manager = resolveRuntimeConnectionManagerOptions(resolveRuntimeConfig(payload.runtimeConfig));
200
+ var resolvedRuntimeConfig = resolveRuntimeConfig(payload.runtimeConfig);
201
+ await loadProjectDatabaseDrivers(payload.projectRoot ?? process.cwd(), resolvedRuntimeConfig.db);
202
+ var manager = resolveRuntimeConnectionManagerOptions(resolvedRuntimeConfig);
197
203
  configureDB(manager);
198
204
  try {
199
205
  await manager.initializeAll();
@@ -56,20 +56,23 @@ import {
56
56
  upsertMediaPackageDependency,
57
57
  upsertNotificationsPackageDependency,
58
58
  upsertSecurityPackageDependency
59
- } from "./chunk-TWITVSFZ.mjs";
60
- import "./chunk-YEFJBN56.mjs";
59
+ } from "./chunk-6BHJLCAO.mjs";
60
+ import "./chunk-JVLZ3SOW.mjs";
61
61
  import {
62
62
  renderAuthProviderRouteFiles,
63
63
  renderFrameworkFiles,
64
64
  renderFrameworkRunner,
65
+ renderFrameworkRunnerForDescriptor,
65
66
  renderNextBroadcastConfigRoute
66
- } from "./chunk-J76GH2DR.mjs";
67
+ } from "./chunk-R4ZYMEDU.mjs";
68
+ import "./chunk-3RFRE7XG.mjs";
69
+ import "./chunk-TRYHX5S4.mjs";
67
70
  import {
68
71
  isSupportedCacheInstallerDriver,
69
72
  isSupportedQueueInstallerDriver,
70
73
  normalizeScaffoldOptionalPackages,
71
74
  sanitizePackageName
72
- } from "./chunk-ILU426CF.mjs";
75
+ } from "./chunk-YACY2572.mjs";
73
76
  export {
74
77
  authFeaturesRequireConfigUpdate,
75
78
  detectAuthInstallFeaturesFromConfig,
@@ -104,6 +107,7 @@ export {
104
107
  renderEnvFileContents,
105
108
  renderFrameworkFiles,
106
109
  renderFrameworkRunner,
110
+ renderFrameworkRunnerForDescriptor,
107
111
  renderMailConfig,
108
112
  renderMailEnvFiles,
109
113
  renderMediaConfig,
@@ -56,20 +56,23 @@ import {
56
56
  upsertMediaPackageDependency,
57
57
  upsertNotificationsPackageDependency,
58
58
  upsertSecurityPackageDependency
59
- } from "./chunk-PT72AMV7.mjs";
60
- import "./chunk-YEFJBN56.mjs";
59
+ } from "./chunk-OI54DOHK.mjs";
60
+ import "./chunk-JVLZ3SOW.mjs";
61
61
  import {
62
62
  renderAuthProviderRouteFiles,
63
63
  renderFrameworkFiles,
64
64
  renderFrameworkRunner,
65
+ renderFrameworkRunnerForDescriptor,
65
66
  renderNextBroadcastConfigRoute
66
- } from "./chunk-J76GH2DR.mjs";
67
+ } from "./chunk-R4ZYMEDU.mjs";
68
+ import "./chunk-3RFRE7XG.mjs";
69
+ import "./chunk-TRYHX5S4.mjs";
67
70
  import {
68
71
  isSupportedCacheInstallerDriver,
69
72
  isSupportedQueueInstallerDriver,
70
73
  normalizeScaffoldOptionalPackages,
71
74
  sanitizePackageName
72
- } from "./chunk-ILU426CF.mjs";
75
+ } from "./chunk-YACY2572.mjs";
73
76
  export {
74
77
  authFeaturesRequireConfigUpdate,
75
78
  detectAuthInstallFeaturesFromConfig,
@@ -104,6 +107,7 @@ export {
104
107
  renderEnvFileContents,
105
108
  renderFrameworkFiles,
106
109
  renderFrameworkRunner,
110
+ renderFrameworkRunnerForDescriptor,
107
111
  renderMailConfig,
108
112
  renderMailEnvFiles,
109
113
  renderMediaConfig,