@c9up/bay 0.1.13 → 0.2.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 (85) hide show
  1. package/README.md +122 -16
  2. package/dist/BayProvider.d.ts +39 -11
  3. package/dist/BayProvider.d.ts.map +1 -1
  4. package/dist/BayProvider.js +35 -13
  5. package/dist/BayProvider.js.map +1 -1
  6. package/dist/Job.d.ts +99 -0
  7. package/dist/Job.d.ts.map +1 -0
  8. package/dist/Job.js +78 -0
  9. package/dist/Job.js.map +1 -0
  10. package/dist/QueueManager.d.ts +140 -21
  11. package/dist/QueueManager.d.ts.map +1 -1
  12. package/dist/QueueManager.js +247 -53
  13. package/dist/QueueManager.js.map +1 -1
  14. package/dist/adapters.d.ts +68 -0
  15. package/dist/adapters.d.ts.map +1 -0
  16. package/dist/adapters.js +56 -0
  17. package/dist/adapters.js.map +1 -0
  18. package/dist/augmentations.d.ts +28 -0
  19. package/dist/augmentations.d.ts.map +1 -0
  20. package/dist/augmentations.js +17 -0
  21. package/dist/augmentations.js.map +1 -0
  22. package/dist/configure.d.ts +1 -0
  23. package/dist/configure.d.ts.map +1 -1
  24. package/dist/configure.js +24 -7
  25. package/dist/configure.js.map +1 -1
  26. package/dist/console/contract.d.ts +60 -0
  27. package/dist/console/contract.d.ts.map +1 -0
  28. package/dist/console/contract.js +36 -0
  29. package/dist/console/contract.js.map +1 -0
  30. package/dist/console/index.d.ts +29 -0
  31. package/dist/console/index.d.ts.map +1 -0
  32. package/dist/console/index.js +45 -0
  33. package/dist/console/index.js.map +1 -0
  34. package/dist/console/makeJob.d.ts +32 -0
  35. package/dist/console/makeJob.d.ts.map +1 -0
  36. package/dist/console/makeJob.js +118 -0
  37. package/dist/console/makeJob.js.map +1 -0
  38. package/dist/console/queueWork.d.ts +18 -0
  39. package/dist/console/queueWork.d.ts.map +1 -0
  40. package/dist/console/queueWork.js +58 -0
  41. package/dist/console/queueWork.js.map +1 -0
  42. package/dist/drivers/MemoryDriver.d.ts +14 -8
  43. package/dist/drivers/MemoryDriver.d.ts.map +1 -1
  44. package/dist/drivers/MemoryDriver.js +61 -7
  45. package/dist/drivers/MemoryDriver.js.map +1 -1
  46. package/dist/drivers/RedisDriver.d.ts +60 -8
  47. package/dist/drivers/RedisDriver.d.ts.map +1 -1
  48. package/dist/drivers/RedisDriver.js +209 -29
  49. package/dist/drivers/RedisDriver.js.map +1 -1
  50. package/dist/index.d.ts +10 -6
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +8 -4
  53. package/dist/index.js.map +1 -1
  54. package/dist/jobs.d.ts +43 -0
  55. package/dist/jobs.d.ts.map +1 -0
  56. package/dist/jobs.js +105 -0
  57. package/dist/jobs.js.map +1 -0
  58. package/dist/quasar.d.ts +1 -1
  59. package/dist/quasar.js +1 -1
  60. package/dist/testing/FakeQueue.d.ts +15 -9
  61. package/dist/testing/FakeQueue.d.ts.map +1 -1
  62. package/dist/testing/FakeQueue.js +13 -3
  63. package/dist/testing/FakeQueue.js.map +1 -1
  64. package/package.json +5 -3
  65. package/src/BayProvider.ts +79 -26
  66. package/src/Job.ts +137 -0
  67. package/src/QueueManager.ts +411 -56
  68. package/src/adapters.ts +75 -0
  69. package/src/augmentations.ts +31 -0
  70. package/src/configure.ts +25 -7
  71. package/src/console/contract.ts +94 -0
  72. package/src/console/index.ts +68 -0
  73. package/src/console/makeJob.ts +139 -0
  74. package/src/console/queueWork.ts +70 -0
  75. package/src/drivers/MemoryDriver.ts +66 -14
  76. package/src/drivers/RedisDriver.ts +298 -42
  77. package/src/index.ts +35 -6
  78. package/src/jobs.ts +111 -0
  79. package/src/quasar.ts +1 -1
  80. package/src/testing/FakeQueue.ts +25 -15
  81. package/dist/stores.d.ts +0 -41
  82. package/dist/stores.d.ts.map +0 -1
  83. package/dist/stores.js +0 -46
  84. package/dist/stores.js.map +0 -1
  85. package/src/stores.ts +0 -59
@@ -1 +1 @@
1
- {"version":3,"file":"RedisDriver.js","sourceRoot":"","sources":["../../src/drivers/RedisDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedisDriver.js","sourceRoot":"","sources":["../../src/drivers/RedisDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAoC,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAuC/E,SAAS,UAAU,CAAC,GAAY;IAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,CACN,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,QAAQ;QAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,QAAQ;QAC5C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,QAAQ;QAChD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,QAAQ;QACnD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,QAAQ,CAC9C,CAAC;AACH,CAAC;AAiBD;;;;GAIG;AACH,SAAS,SAAS,CAAC,MAAc;IAChC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAC1E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACvB,CAAC;AAYD;;;;GAIG;AACH,MAAM,MAAM,GAAG,IAAI,OAAO,EAAU,CAAC;AACrC,SAAS,UAAU,CAAC,MAAmB,EAAE,iBAA0B;IAClE,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO;IAE/C,4EAA4E;IAC5E,0EAA0E;IAC1E,sEAAsE;IACtE,wEAAwE;IACxE,2DAA2D;IAC3D,IAAI,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACd,kGAAkG;YACjG,sGAAsG;YACtG,mHAAmH,CACpH,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IAC/B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEnB,4EAA4E;IAC5E,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,OAAO,GAAG,YAAY,EAAE,IAAI,iBAAiB,CAAC;IACpD,OAAO,CAAC,IAAI,CACX,0EAA0E;QACzE,sEAAsE;QACtE,0EAA0E;QAC1E,CAAC,OAAO;YACP,CAAC,CAAC,uEAAuE;YACzE,CAAC,CAAC,EAAE,CAAC,CACP,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,MAAc;IACpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;AACzD,CAAC;AAED,MAAM,OAAO,WAAW;IACvB,OAAO,CAAoB;IAC3B,SAAS,CAA0B;IACnC,QAAQ,CAAmC;IAC3C,OAAO,CAAS;IAChB,kBAAkB,CAAS;IAE3B;;;OAGG;IACH,KAAK,CAAC,OAAO;QACZ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1C,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,SAAS,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;iBACzC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,OAAO,MAAM,CAAC;YACf,CAAC,CAAC;gBACF,4DAA4D;gBAC5D,8DAA8D;gBAC9D,+DAA+D;gBAC/D,8DAA8D;iBAC7D,OAAO,CAAC,GAAG,EAAE;gBACb,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,YACC,MAAyB,EACzB,OA0BC;QAED,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,uEAAuE;QACvE,sEAAsE;QACtE,2DAA2D;QAC3D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,kDAAkD;QAClD,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,iBAAiB,IAAI,KAAK,CAAC;QAC9D,MAAM,iBAAiB,GAAG,OAAO,EAAE,mBAAmB,IAAI,MAAM,CAAC;QACjE,0EAA0E;QAC1E,wEAAwE;QACxE,2EAA2E;QAC3E,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CACd,8EAA8E,iBAAiB,EAAE,CACjG,CAAC;QACH,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAE5C,MAAM,UAAU,GAAG,OAAO,EAAE,eAAe,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACd,yEAAyE,UAAU,EAAE,CACrF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;QAEnC,MAAM,SAAS,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACd,uEAAuE,SAAS,EAAE,CAClF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,IAAI,eAAe;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,GAAG,CAAC,QAAgB,aAAa,EAAE,EAAE,CAC/C,KAAK,KAAK,aAAa;QACtB,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS;QAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC;IACxC,WAAW,GAAG,CAAC,QAAgB,aAAa,EAAE,EAAE,CAC/C,KAAK,KAAK,aAAa;QACtB,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS;QAC1B,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC;IACxC,cAAc,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,YAAY,CAAC;IACnD,kBAAkB,GAAG,KAAK,CAAC;IAC3B,gBAAgB,GAAG,CAAC,CAAC;IACrB,cAAc,GAAG,IAAI,CAAC;IACtB,8CAA8C;IAC9C,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,UAAU,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,QAAQ,CAAC;IAC3C,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,KAAK,EAAE,CAAC;IAE/D,KAAK,CAAC,IAAI,CAAC,GAAc;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClB,gEAAgE;gBAChE,uCAAuC;gBACvC,MAAM,IAAI,KAAK,CACd,+DAA+D;oBAC9D,wFAAwF,CACzF,CAAC;YACH,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,CAChB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACvB,GAAG,CAAC,KAAK,EACT,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CACnB,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,GAAG,CACR,SAA4B,CAAC,aAAa,CAAC;QAE3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,GAAG,GAAkB,IAAI,CAAC;QAE9B,uEAAuE;QACvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACtC,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,GAAG,KAAK,IAAI;gBAAE,MAAM;QACzB,CAAC;QAED,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,uEAAuE;QACvE,sEAAsE;QACtE,oEAAoE;QACpE,qEAAqE;QACrE,sBAAsB;QACtB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACR,6DAA6D;YAC7D,4DAA4D;YAC5D,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,qEAAqE;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,yDAAyD;QACzD,MAAM,MAAM,CAAC,GAAG,CACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EACzB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAkB,CAAC,EAC9D,IAAI,EACJ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAC/B,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,GAAc;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAClC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAc;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAc,EAAE,KAAa;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QACtB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAc;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;QACvB,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACR,6DAA6D;gBAC7D,8CAA8C;gBAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACjD,SAAS;YACV,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;gBACjD,SAAS;YACV,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;YAE7B,8DAA8D;YAC9D,iEAAiE;YACjE,qEAAqE;YACrE,8DAA8D;YAC9D,oEAAoE;YACpE,iEAAiE;YACjE,kEAAkE;YAClE,sEAAsE;YACtE,kCAAkC;YAClC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,OAAO,KAAK,CAAC;gBAAE,SAAS;YAE5B,gEAAgE;YAChE,gEAAgE;YAChE,+DAA+D;YAC/D,mEAAmE;YACnE,6DAA6D;YAC7D,gDAAgD;YAChD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACrC,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;gBAC9B,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACzB,MAAM,CAAC,KAAK,GAAG,WAAW,OAAO,gDAAgD,IAAI,CAAC,gBAAgB,GAAG,CAAC;gBAC1G,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvC,SAAS;YACV,CAAC;YAED,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC;YAC9B,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;YAC1B,sEAAsE;YACtE,uDAAuD;YACvD,MAAM,MAAM,CAAC,KAAK,CACjB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACtB,CAAC;YACF,SAAS,EAAE,CAAC;QACb,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,CAAC,MAAmB,EAAE,GAAc;QACpD,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO;QACvD,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,qBAAqB,CAAC,GAAc;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO;QACzB,CAAC;QACD,qEAAqE;QACrE,kEAAkE;QAClE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACR,SAAS;YACV,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC;gBAChD,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAClD,OAAO;YACR,CAAC;QACF,CAAC;IACF,CAAC;IAED,KAAK,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,QAAgB,aAAa;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;YAC3B,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC,CAAC;QACL,OAAO,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,MAAmB,EAAE,KAAa;QACnD,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;QAClD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACvB,CAAC,EACD,IAAI,CAAC,GAAG,EAAE,EACV,OAAO,EACP,GAAG,EACH,KAAK,CACL,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,IAAI,OAAO,KAAK,CAAC;gBAAE,SAAS;YAC5B,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACR,mEAAmE;gBACnE,SAAS;YACV,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YAClC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,CAAC;IACF,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,KAAK,CAAC,MAAmB,EAAE,KAAa;QAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EACvB,IAAI,CAAC,cAAc,EAAE,EACrB,MAAM,EACN,OAAO,CACP,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,IAAI,GAAG;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD"}
package/dist/index.d.ts CHANGED
@@ -1,17 +1,21 @@
1
1
  /**
2
2
  * @c9up/bay — Background job queue for the Ream framework.
3
3
  *
4
- * Dispatch/process/retry/fail pattern with pluggable drivers (Memory, Redis).
4
+ * A job is a class: it carries its own name, its options and the type of the
5
+ * payload it reads, and `dispatch(SomeJob, payload)` takes it. Named queues,
6
+ * `delay`, `timeout` and worker `concurrency` come from the same declaration.
5
7
  *
6
- * @implements MISS-11
8
+ * Dispatch/process/retry/fail, with pluggable drivers (Memory, Redis).
7
9
  */
8
- export type { BayProviderConfig } from "./BayProvider.js";
10
+ export { type AdapterFactory, drivers, type QueueStoreFactory, stores, } from "./adapters.js";
11
+ import "./augmentations.js";
12
+ export type { BayAppContext, BayConfigStore, BayContainer, BayProviderConfig, } from "./BayProvider.js";
9
13
  export { MemoryDriver } from "./drivers/MemoryDriver.js";
10
14
  export type { RedisClient } from "./drivers/RedisDriver.js";
11
15
  export { RedisDriver } from "./drivers/RedisDriver.js";
12
- export type { Job, JobHandler, QueueDriver } from "./QueueManager.js";
13
- export { QueueManager } from "./QueueManager.js";
14
- export { type QueueStoreFactory, stores } from "./stores.js";
16
+ export { DEFAULT_QUEUE, type Duration, isJobClass, Job, type JobClass, type JobOptions, } from "./Job.js";
17
+ export type { DispatchOptions, JobHandler, JobRecord, QueueDriver, WorkerOptions, } from "./QueueManager.js";
18
+ export { QueueManager, queueOf } from "./QueueManager.js";
15
19
  import type { BayProviderConfig } from "./BayProvider.js";
16
20
  /**
17
21
  * Author-time config helper for `config/queue.ts` — AdonisJS `defineConfig`
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAEtE;AACD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACN,KAAK,cAAc,EACnB,OAAO,EACP,KAAK,iBAAiB,EACtB,MAAM,GACN,MAAM,eAAe,CAAC;AAEvB,OAAO,oBAAoB,CAAC;AAE5B,YAAY,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,iBAAiB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACN,aAAa,EACb,KAAK,QAAQ,EACb,UAAU,EACV,GAAG,EACH,KAAK,QAAQ,EACb,KAAK,UAAU,GACf,MAAM,UAAU,CAAC;AAClB,YAAY,EACX,eAAe,EACf,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAEtE;AACD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,14 +1,18 @@
1
1
  /**
2
2
  * @c9up/bay — Background job queue for the Ream framework.
3
3
  *
4
- * Dispatch/process/retry/fail pattern with pluggable drivers (Memory, Redis).
4
+ * A job is a class: it carries its own name, its options and the type of the
5
+ * payload it reads, and `dispatch(SomeJob, payload)` takes it. Named queues,
6
+ * `delay`, `timeout` and worker `concurrency` come from the same declaration.
5
7
  *
6
- * @implements MISS-11
8
+ * Dispatch/process/retry/fail, with pluggable drivers (Memory, Redis).
7
9
  */
10
+ export { drivers, stores, } from "./adapters.js";
11
+ import "./augmentations.js";
8
12
  export { MemoryDriver } from "./drivers/MemoryDriver.js";
9
13
  export { RedisDriver } from "./drivers/RedisDriver.js";
10
- export { QueueManager } from "./QueueManager.js";
11
- export { stores } from "./stores.js";
14
+ export { DEFAULT_QUEUE, isJobClass, Job, } from "./Job.js";
15
+ export { QueueManager, queueOf } from "./QueueManager.js";
12
16
  /**
13
17
  * Author-time config helper for `config/queue.ts` — AdonisJS `defineConfig`
14
18
  * parity. Identity at runtime; the generic preserves literal types for inference.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAA0B,MAAM,EAAE,MAAM,aAAa,CAAC;AAI7D;;;GAGG;AACH,MAAM,UAAU,YAAY,CAA8B,MAAS;IAClE,OAAO,MAAM,CAAC;AACf,CAAC;AACD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEN,OAAO,EAEP,MAAM,GACN,MAAM,eAAe,CAAC;AAEvB,OAAO,oBAAoB,CAAC;AAQ5B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACN,aAAa,EAEb,UAAU,EACV,GAAG,GAGH,MAAM,UAAU,CAAC;AAQlB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI1D;;;GAGG;AACH,MAAM,UAAU,YAAY,CAA8B,MAAS;IAClE,OAAO,MAAM,CAAC;AACf,CAAC;AACD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
package/dist/jobs.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Finding the job classes an application wrote.
3
+ *
4
+ * A job class carries its own name, and a worker resolves a queued record by
5
+ * that name — so the worker process has to have imported the class. Written by
6
+ * hand that is a registration list to keep in step with a directory:
7
+ *
8
+ * queue.registerJob(SendEmail)
9
+ * queue.registerJob(SendInvoice) // …and the one nobody added
10
+ *
11
+ * `locations` in `config/queue.ts` is the directory instead. Every module under
12
+ * it is imported once at boot, and a default export that is a job class is
13
+ * registered under its own name.
14
+ *
15
+ * Directories, not globs. `'./app/jobs/**\/*.{ts,js}'` — the spelling upstream's
16
+ * config uses — is accepted and read as the directory it starts with, so a
17
+ * config copied from there works; bay ships no glob engine and adding a
18
+ * dependency for one path shape is not worth it.
19
+ */
20
+ import { type JobClass } from "./Job.js";
21
+ /** Where `make:job` writes, and where discovery looks when nothing is declared. */
22
+ export declare const DEFAULT_JOBS_DIR = "app/jobs";
23
+ /** @internal Told by the provider what the config declared. */
24
+ export declare function setJobsDir(dir: string): void;
25
+ /** Where job files live — the first `locations` entry, or the default. */
26
+ export declare function getJobsDir(): string;
27
+ /**
28
+ * The directory a `locations` entry names.
29
+ *
30
+ * Everything from the first glob character on is dropped: `app/jobs/** /*.ts`
31
+ * and `app/jobs` name the same directory, and the walk below is recursive
32
+ * either way.
33
+ */
34
+ export declare function directoryOf(location: string): string;
35
+ /**
36
+ * Import every module under `locations` and return the job classes they
37
+ * default-export.
38
+ *
39
+ * A module that throws on import is reported and skipped: one unfinished job
40
+ * file must not stop the worker from running every other job.
41
+ */
42
+ export declare function discoverJobs(locations: readonly string[]): Promise<JobClass[]>;
43
+ //# sourceMappingURL=jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAErD,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAI3C,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIpD;AA6BD;;;;;;GAMG;AACH,wBAAsB,YAAY,CACjC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqBrB"}
package/dist/jobs.js ADDED
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Finding the job classes an application wrote.
3
+ *
4
+ * A job class carries its own name, and a worker resolves a queued record by
5
+ * that name — so the worker process has to have imported the class. Written by
6
+ * hand that is a registration list to keep in step with a directory:
7
+ *
8
+ * queue.registerJob(SendEmail)
9
+ * queue.registerJob(SendInvoice) // …and the one nobody added
10
+ *
11
+ * `locations` in `config/queue.ts` is the directory instead. Every module under
12
+ * it is imported once at boot, and a default export that is a job class is
13
+ * registered under its own name.
14
+ *
15
+ * Directories, not globs. `'./app/jobs/**\/*.{ts,js}'` — the spelling upstream's
16
+ * config uses — is accepted and read as the directory it starts with, so a
17
+ * config copied from there works; bay ships no glob engine and adding a
18
+ * dependency for one path shape is not worth it.
19
+ */
20
+ import * as fsp from "node:fs/promises";
21
+ import * as path from "node:path";
22
+ import { pathToFileURL } from "node:url";
23
+ import { isJobClass } from "./Job.js";
24
+ /** Where `make:job` writes, and where discovery looks when nothing is declared. */
25
+ export const DEFAULT_JOBS_DIR = "app/jobs";
26
+ let jobsDir = DEFAULT_JOBS_DIR;
27
+ /** @internal Told by the provider what the config declared. */
28
+ export function setJobsDir(dir) {
29
+ jobsDir = dir;
30
+ }
31
+ /** Where job files live — the first `locations` entry, or the default. */
32
+ export function getJobsDir() {
33
+ return jobsDir;
34
+ }
35
+ /**
36
+ * The directory a `locations` entry names.
37
+ *
38
+ * Everything from the first glob character on is dropped: `app/jobs/** /*.ts`
39
+ * and `app/jobs` name the same directory, and the walk below is recursive
40
+ * either way.
41
+ */
42
+ export function directoryOf(location) {
43
+ const withoutGlob = location.split(/[*?[{]/)[0] ?? location;
44
+ const trimmed = withoutGlob.replace(/\/+$/, "");
45
+ return trimmed.replace(/^\.\//, "") || ".";
46
+ }
47
+ /** Every module file under `dir`, recursively. */
48
+ async function walk(dir, depth = 0) {
49
+ // A jobs directory is a flat convention with the occasional subdirectory;
50
+ // an unbounded walk would follow whatever happens to live under it.
51
+ if (depth > 8)
52
+ return [];
53
+ let entries;
54
+ try {
55
+ entries = await fsp.readdir(dir, { withFileTypes: true });
56
+ }
57
+ catch {
58
+ // A declared directory that does not exist yet is not an error: a project
59
+ // can name where its jobs will go before writing the first one.
60
+ return [];
61
+ }
62
+ const found = [];
63
+ for (const entry of entries) {
64
+ const full = path.join(dir, entry.name);
65
+ if (entry.isDirectory()) {
66
+ found.push(...(await walk(full, depth + 1)));
67
+ continue;
68
+ }
69
+ // `.d.ts` is a declaration, not a module with a job in it.
70
+ if (/\.d\.[cm]?ts$/.test(entry.name))
71
+ continue;
72
+ if (/\.[cm]?[jt]s$/.test(entry.name))
73
+ found.push(full);
74
+ }
75
+ return found.sort();
76
+ }
77
+ /**
78
+ * Import every module under `locations` and return the job classes they
79
+ * default-export.
80
+ *
81
+ * A module that throws on import is reported and skipped: one unfinished job
82
+ * file must not stop the worker from running every other job.
83
+ */
84
+ export async function discoverJobs(locations) {
85
+ const found = [];
86
+ for (const location of locations) {
87
+ for (const file of await walk(directoryOf(location))) {
88
+ let module;
89
+ try {
90
+ module = await import(pathToFileURL(path.resolve(file)).href);
91
+ }
92
+ catch (err) {
93
+ process.stderr.write(`[bay] could not load '${file}': ${err instanceof Error ? err.message : String(err)}\n`);
94
+ continue;
95
+ }
96
+ if (typeof module !== "object" || module === null)
97
+ continue;
98
+ const exported = Reflect.get(module, "default");
99
+ if (isJobClass(exported))
100
+ found.push(exported);
101
+ }
102
+ }
103
+ return found;
104
+ }
105
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
package/dist/quasar.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Bay does not depend on quasar: it is an optional peer, and this module
5
5
  * never imports it statically. The specifier is built at runtime so the
6
- * TypeScript build stays free of it too — a hard type import would make echo
6
+ * TypeScript build stays free of it too — a hard type import would make bay
7
7
  * unbuildable for anyone who queues in memory.
8
8
  *
9
9
  * The shape is checked before use rather than asserted, the same way bay
package/dist/quasar.js CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Bay does not depend on quasar: it is an optional peer, and this module
5
5
  * never imports it statically. The specifier is built at runtime so the
6
- * TypeScript build stays free of it too — a hard type import would make echo
6
+ * TypeScript build stays free of it too — a hard type import would make bay
7
7
  * unbuildable for anyone who queues in memory.
8
8
  *
9
9
  * The shape is checked before use rather than asserted, the same way bay
@@ -8,7 +8,7 @@
8
8
  * `@c9up/bay/testing` so production code never accidentally pulls
9
9
  * the fake into a runtime build.
10
10
  */
11
- import type { Job, QueueDriver } from "../QueueManager.js";
11
+ import type { JobRecord, QueueDriver } from "../QueueManager.js";
12
12
  export interface FakeQueuePredicate {
13
13
  /** Custom payload predicate — receives the job's `payload` and
14
14
  * returns `true` to match. The job name is always taken from the
@@ -18,25 +18,31 @@ export interface FakeQueuePredicate {
18
18
  * matches 'b' but the error message says 'a'). */
19
19
  payloadMatches?: (payload: unknown) => boolean;
20
20
  }
21
- export type FakeQueuePredicateArg = FakeQueuePredicate | ((job: Job) => boolean);
21
+ export type FakeQueuePredicateArg = FakeQueuePredicate | ((job: JobRecord) => boolean);
22
22
  export declare class FakeQueue implements QueueDriver {
23
23
  #private;
24
- push(job: Job): Promise<void>;
24
+ push(job: JobRecord): Promise<void>;
25
25
  /** Always returns `null` — fake queues never auto-dispatch.
26
26
  * Tests that need handler execution should use the memory
27
27
  * driver directly. */
28
- pop(): Promise<Job | null>;
29
- fail(job: Job, error: string): Promise<void>;
30
- complete(job: Job): Promise<void>;
31
- retry(job: Job): Promise<void>;
32
- failed(): Promise<Job[]>;
28
+ /**
29
+ * Always empty: this fake captures what was dispatched, it does not run it.
30
+ *
31
+ * The parameter is declared so the queue names a caller asks for are part of
32
+ * the signature a test reads, even though nothing here serves them.
33
+ */
34
+ pop(_queues?: readonly string[]): Promise<JobRecord | null>;
35
+ fail(job: JobRecord, error: string): Promise<void>;
36
+ complete(job: JobRecord): Promise<void>;
37
+ retry(job: JobRecord): Promise<void>;
38
+ failed(): Promise<JobRecord[]>;
33
39
  size(): Promise<number>;
34
40
  /**
35
41
  * Defensive snapshot of every captured job. Each entry is a
36
42
  * shallow clone so test-side mutations can't bleed back into the
37
43
  * internal capture store — avoids cross-test contamination.
38
44
  */
39
- getPushed(): Job[];
45
+ getPushed(): JobRecord[];
40
46
  reset(): void;
41
47
  assertPushed(name: string, predicate?: FakeQueuePredicateArg): void;
42
48
  assertNotPushed(name: string, predicate?: FakeQueuePredicateArg): void;
@@ -1 +1 @@
1
- {"version":3,"file":"FakeQueue.d.ts","sourceRoot":"","sources":["../../src/testing/FakeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IAClC;;;;;uDAKmD;IACnD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,qBAAqB,GAC9B,kBAAkB,GAClB,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;AAE3B,qBAAa,SAAU,YAAW,WAAW;;IAGtC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnC;;2BAEuB;IACjB,GAAG,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAI1B,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B9B,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAMxB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B;;;;OAIG;IACH,SAAS,IAAI,GAAG,EAAE;IAIlB,KAAK,IAAI,IAAI;IAIb,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAQnE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI;CAQtE"}
1
+ {"version":3,"file":"FakeQueue.d.ts","sourceRoot":"","sources":["../../src/testing/FakeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IAClC;;;;;uDAKmD;IACnD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,qBAAqB,GAC9B,kBAAkB,GAClB,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC;AAEjC,qBAAa,SAAU,YAAW,WAAW;;IAGtC,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC;;2BAEuB;IACvB;;;;;OAKG;IACG,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAI3D,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAM9B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B;;;;OAIG;IACH,SAAS,IAAI,SAAS,EAAE;IAIxB,KAAK,IAAI,IAAI;IAIb,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAQnE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI;CAQtE"}
@@ -22,7 +22,13 @@ export class FakeQueue {
22
22
  /** Always returns `null` — fake queues never auto-dispatch.
23
23
  * Tests that need handler execution should use the memory
24
24
  * driver directly. */
25
- async pop() {
25
+ /**
26
+ * Always empty: this fake captures what was dispatched, it does not run it.
27
+ *
28
+ * The parameter is declared so the queue names a caller asks for are part of
29
+ * the signature a test reads, even though nothing here serves them.
30
+ */
31
+ async pop(_queues) {
26
32
  return null;
27
33
  }
28
34
  async fail(job, error) {
@@ -37,7 +43,11 @@ export class FakeQueue {
37
43
  }
38
44
  async retry(job) {
39
45
  const found = this.#requireJob(job, "retry");
40
- found.attempts += 1;
46
+ // `attempts` is the WORKER's counter, not the driver's: `processOne`
47
+ // increments it before it calls this, and neither real driver touches it
48
+ // again. Incrementing here counted the same attempt twice, so a fake
49
+ // exhausted `maxAttempts` in half the tries the real queue takes — a
50
+ // test double that disagrees with what it stands in for.
41
51
  found.status = "pending";
42
52
  // Reset transient state from the prior failure so a retried
43
53
  // job's invariants match a fresh push (a real driver would
@@ -48,7 +58,7 @@ export class FakeQueue {
48
58
  }
49
59
  /** Look up the captured copy of a job by id. Throws when the id
50
60
  * isn't present — silent no-op on a missing job is the most
51
- * insidious test bug (caller's local Job ref shows the new
61
+ * insidious test bug (caller's local job ref shows the new
52
62
  * status while the FakeQueue's internal capture is unchanged). */
53
63
  #requireJob(job, verb) {
54
64
  const found = this.#pushed.find((j) => j.id === job.id);
@@ -1 +1 @@
1
- {"version":3,"file":"FakeQueue.js","sourceRoot":"","sources":["../../src/testing/FakeQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FakeQueue.js","sourceRoot":"","sources":["../../src/testing/FakeQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkBH,MAAM,OAAO,SAAS;IACrB,OAAO,GAAgB,EAAE,CAAC;IAE1B,KAAK,CAAC,IAAI,CAAC,GAAc;QACxB,+DAA+D;QAC/D,4DAA4D;QAC5D,6DAA6D;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACd,gCAAgC,GAAG,CAAC,EAAE,wGAAwG,CAC9I,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED;;2BAEuB;IACvB;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,OAA2B;QACpC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAc,EAAE,KAAa;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5C,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAc;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;QAC3B,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAc;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,qEAAqE;QACrE,yEAAyE;QACzE,qEAAqE;QACrE,qEAAqE;QACrE,yDAAyD;QACzD,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACzB,4DAA4D;QAC5D,2DAA2D;QAC3D,8DAA8D;QAC9D,4BAA4B;QAC5B,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QACxB,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;;uEAGmE;IACnE,WAAW,CAAC,GAAc,EAAE,IAAY;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACd,aAAa,IAAI,aAAa,GAAG,CAAC,EAAE,iGAAiG,CACrI,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM;QACX,OAAO,IAAI,CAAC,OAAO;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,SAAS;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,SAAiC;QAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO;QACrC,MAAM,IAAI,KAAK,CACd,uBAAuB,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC,wCAAwC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnI,CAAC;IACH,CAAC;IAED,eAAe,CAAC,IAAY,EAAE,SAAiC;QAC9D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,IAAI,KAAK,CACd,0BAA0B,IAAI,IAAI,iBAAiB,CAAC,SAAS,CAAC,kDAAkD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAChJ,CAAC;IACH,CAAC;CACD;AAED,SAAS,WAAW,CACnB,IAAY,EACZ,SAA4C;IAE5C,8DAA8D;IAC9D,2CAA2C;IAC3C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IAC/B,CAAC;IACD,gEAAgE;IAChE,wCAAwC;IACxC,OAAO,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAClC,IAAI,SAAS,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACzB,SAA4C;IAE5C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,wBAAwB,CAAC;IACrE,kEAAkE;IAClE,iEAAiE;IACjE,oDAAoD;IACpD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QACtC,OAAO,iCAAiC,CAAC;IAC1C,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAqB;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC;IACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CACzB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CACvF,CAAC;IACF,OAAO,aAAa,QAAQ,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c9up/bay",
3
- "version": "0.1.13",
3
+ "version": "0.2.0",
4
4
  "description": "Queue — pluggable job-queue contract with memory + Redis drivers for the Ream framework",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -36,8 +36,10 @@
36
36
  "@biomejs/biome": "^2.4.10",
37
37
  "@c9up/quasar": "^0.1.0",
38
38
  "@types/node": "^22.19.15",
39
+ "@vitest/coverage-v8": "^4.1.2",
39
40
  "typescript": "^6.0.2",
40
- "vitest": "^4.1.2"
41
+ "vitest": "^4.1.2",
42
+ "@c9up/ream": "^0.2.0"
41
43
  },
42
44
  "engines": {
43
45
  "node": ">=22.0.0"
@@ -66,7 +68,7 @@
66
68
  "scripts": {
67
69
  "build": "tsc -p tsconfig.build.json",
68
70
  "test": "vitest run",
69
- "lint": "biome check src/",
71
+ "lint": "biome check src/ tests/",
70
72
  "test:coverage": "vitest run --coverage",
71
73
  "typecheck": "tsc --noEmit"
72
74
  }
@@ -1,8 +1,15 @@
1
+ import type { AdapterFactory } from "./adapters.js";
2
+ import "./augmentations.js";
1
3
  import { MemoryDriver } from "./drivers/MemoryDriver.js";
4
+ import {
5
+ DEFAULT_JOBS_DIR,
6
+ directoryOf,
7
+ discoverJobs,
8
+ setJobsDir,
9
+ } from "./jobs.js";
2
10
  import type { QueueDriver } from "./QueueManager.js";
3
- import { QueueManager } from "./QueueManager.js";
11
+ import { QueueManager, type WorkerOptions } from "./QueueManager.js";
4
12
  import { clearQueue, getQueue, setQueue } from "./services/main.js";
5
- import type { QueueStoreFactory } from "./stores.js";
6
13
 
7
14
  /**
8
15
  * Slim, duck-typed host context — bay stays publishable without
@@ -10,11 +17,16 @@ import type { QueueStoreFactory } from "./stores.js";
10
17
  * `singleton(token, factory)` + `resolve(token)` and a config store
11
18
  * with `get(key)` satisfies the contract.
12
19
  */
13
- interface BayContainer {
20
+ /**
21
+ * The slice of a host container bay uses. Exported because `BayAppContext` is:
22
+ * a host — or a test — cannot describe one without being able to name its
23
+ * members, and the two that could not were reached for with `as any` instead.
24
+ */
25
+ export interface BayContainer {
14
26
  singleton(token: unknown, factory: () => unknown): void;
15
27
  resolve<T = unknown>(token: unknown): Promise<T>;
16
28
  }
17
- interface BayConfigStore {
29
+ export interface BayConfigStore {
18
30
  get<T = unknown>(key: string): T | undefined;
19
31
  }
20
32
  export interface BayAppContext {
@@ -24,23 +36,45 @@ export interface BayAppContext {
24
36
 
25
37
  export interface BayProviderConfig {
26
38
  /**
27
- * Which named store to use — a key of {@link stores}. Read from the
39
+ * Which named adapter to use — a key of {@link adapters}. Read from the
28
40
  * environment in the generated config, so a deployment picks its queue
29
41
  * backend without editing a file.
30
42
  */
31
43
  default?: string;
32
44
  /**
33
- * The queue stores this application can use, by name. Each is a factory
34
- * from `stores.*`, built only when it is the one selected.
45
+ * The queue adapters this application can use, by name. Each is a factory
46
+ * from `drivers.*`, built only when it is the one selected.
47
+ */
48
+ adapters?: Record<string, AdapterFactory>;
49
+ /**
50
+ * The name this key had before it matched upstream's. Read when `adapters`
51
+ * is absent, so a config written against the older spelling keeps selecting
52
+ * the backend it named — silently falling back to an in-process queue is the
53
+ * one outcome `buildDriver` exists to prevent.
35
54
  */
36
- stores?: Record<string, QueueStoreFactory>;
55
+ stores?: Record<string, AdapterFactory>;
37
56
  /**
38
- * The single-store form, kept for configs written against it: only
39
- * `"memory"` was ever accepted. Prefer `default` + `stores`, which is how a
40
- * pluggable backend is configured everywhere else and what lets the
57
+ * The single-adapter form, kept for configs written against it: only
58
+ * `"memory"` was ever accepted. Prefer `default` + `adapters`, which is how
59
+ * a pluggable backend is configured everywhere else and what lets the
41
60
  * environment choose.
42
61
  */
43
62
  driver?: "memory";
63
+ /**
64
+ * Defaults for the worker `queue.work()` starts — upstream's `worker` block,
65
+ * by the names it gives them. An argument to `work()` still wins.
66
+ */
67
+ worker?: WorkerOptions;
68
+ /**
69
+ * Where the application's job classes live. Default `['app/jobs']`.
70
+ *
71
+ * Every module under them is imported at boot and a default export that is
72
+ * a job class is registered under its own name — which is what lets a
73
+ * worker process resolve a record queued by an HTTP one. Without it the
74
+ * registration list is a directory kept in step by hand, and the job
75
+ * nobody added to it fails as "no handler registered".
76
+ */
77
+ locations?: readonly string[];
44
78
  }
45
79
 
46
80
  /**
@@ -75,35 +109,39 @@ export interface BayProviderConfig {
75
109
  * queue would only find out when a restart dropped every pending job.
76
110
  */
77
111
  function buildDriver(config: BayProviderConfig | undefined): QueueDriver {
78
- const stores = config?.stores;
112
+ // `adapters` first, `stores` when it is absent: the key was renamed to the
113
+ // one upstream reads, and a config that still says `stores` must keep
114
+ // selecting its backend rather than quietly landing on memory.
115
+ const adapters = config?.adapters ?? config?.stores;
116
+ const key = config?.adapters ? "adapters" : "stores";
79
117
  const name = config?.default;
80
118
 
81
- if (stores && name !== undefined) {
82
- const selected = stores[name];
119
+ if (adapters && name !== undefined) {
120
+ const selected = adapters[name];
83
121
  if (!selected) {
84
- const known = Object.keys(stores);
122
+ const known = Object.keys(adapters);
85
123
  throw new Error(
86
- `[bay] config.queue names the store '${name}', which is not in \`stores\`. ` +
124
+ `[bay] config.queue names the adapter '${name}', which is not in \`${key}\`. ` +
87
125
  (known.length > 0
88
126
  ? `Declared: ${known.join(", ")}.`
89
- : "`stores` is empty — declare one with stores.memory() or stores.redis()."),
127
+ : `\`${key}\` is empty — declare one with drivers.memory() or drivers.redis().`),
90
128
  );
91
129
  }
92
130
  return selected();
93
131
  }
94
132
 
95
- if (stores && name === undefined) {
133
+ if (adapters && name === undefined) {
96
134
  throw new Error(
97
- "[bay] config.queue declares `stores` but no `default` naming which one to use. " +
98
- `Set default to one of: ${Object.keys(stores).join(", ")}.`,
135
+ `[bay] config.queue declares \`${key}\` but no \`default\` naming which one to use. ` +
136
+ `Set default to one of: ${Object.keys(adapters).join(", ")}.`,
99
137
  );
100
138
  }
101
139
 
102
140
  const driverName = config?.driver ?? "memory";
103
141
  if (driverName !== "memory") {
104
142
  throw new Error(
105
- `[bay] Unsupported driver '${driverName}' — name it under \`stores\` instead: ` +
106
- "stores: { redis: stores.redis({ connection: 'main' }) }.",
143
+ `[bay] Unsupported driver '${driverName}' — name it under \`adapters\` instead: ` +
144
+ "adapters: { redis: drivers.redis({ connection: 'main' }) }.",
107
145
  );
108
146
  }
109
147
  return new MemoryDriver();
@@ -115,11 +153,17 @@ export default class BayProvider {
115
153
  register(): void {
116
154
  this.app.container.singleton(QueueManager, () => {
117
155
  const config = this.app.config.get<BayProviderConfig>("queue");
118
- return new QueueManager(buildDriver(config));
156
+ return new QueueManager(buildDriver(config), config?.worker);
119
157
  });
120
- this.app.container.singleton("queue", () =>
121
- this.app.container.resolve<QueueManager>(QueueManager),
122
- );
158
+ // Namespaced by the package that owns it, the way upstream namespaces
159
+ // `lucid.db`, `auth.manager` and `drive.manager` by theirs. The bare
160
+ // token stays bound beside it: it is what every existing
161
+ // `container.make(...)` asks for, and a token is not worth breaking an
162
+ // application over.
163
+ const queue = (): Promise<QueueManager> =>
164
+ this.app.container.resolve<QueueManager>(QueueManager);
165
+ this.app.container.singleton("bay.queue", queue);
166
+ this.app.container.singleton("queue", queue);
123
167
  }
124
168
 
125
169
  /** The queue THIS provider booted — not whatever the module singleton holds. */
@@ -130,6 +174,15 @@ export default class BayProvider {
130
174
  // `import queue from '@c9up/bay/services/main'` from anywhere.
131
175
  this.#queue = await this.app.container.resolve<QueueManager>(QueueManager);
132
176
  setQueue(this.#queue);
177
+
178
+ const config = this.app.config.get<BayProviderConfig>("queue");
179
+ const locations = config?.locations ?? [DEFAULT_JOBS_DIR];
180
+ // `make:job` writes where discovery reads, so the two cannot drift.
181
+ const first = locations[0];
182
+ if (first !== undefined) setJobsDir(directoryOf(first));
183
+ for (const job of await discoverJobs(locations)) {
184
+ this.#queue.registerJob(job);
185
+ }
133
186
  }
134
187
 
135
188
  /**