@warlock.js/notifications 5.12.0 → 5.14.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 (416) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/{src-Cx9y1PWY.cjs → esm-vxGmLpQa.cjs} +207 -299
  3. package/cjs/esm-vxGmLpQa.cjs.map +1 -0
  4. package/cjs/index.cjs +118 -7
  5. package/cjs/index.cjs.map +1 -1
  6. package/cjs/rabbitmq-driver-wtDiBUNX.cjs +3 -0
  7. package/esm/index.d.mts +8 -1
  8. package/esm/index.mjs +4 -1
  9. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/communicators/broker-registry.d.mts +1 -0
  10. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/communicators/broker-registry.mjs +5 -5
  11. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/communicators/broker-registry.mjs.map +1 -0
  12. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/communicators/broker.d.mts +1 -0
  13. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/communicators/broker.mjs +1 -7
  14. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/communicators/broker.mjs.map +1 -0
  15. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/communicators/index.mjs +3 -0
  16. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/contracts/broker-driver.contract.d.mts +1 -0
  17. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/contracts/channel.contract.d.mts +1 -0
  18. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/decorators/consumable.mjs +1 -1
  19. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/decorators/consumable.mjs.map +1 -0
  20. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/decorators/index.mjs +3 -0
  21. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/drivers/index.mjs +5 -0
  22. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/drivers/rabbitmq/index.mjs +4 -0
  23. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/drivers/rabbitmq/rabbitmq-channel.d.mts +1 -0
  24. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/drivers/rabbitmq/rabbitmq-channel.mjs +6 -13
  25. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/drivers/rabbitmq/rabbitmq-channel.mjs.map +1 -0
  26. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/drivers/rabbitmq/rabbitmq-driver.d.mts +1 -0
  27. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/drivers/rabbitmq/rabbitmq-driver.mjs +10 -11
  28. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/drivers/rabbitmq/rabbitmq-driver.mjs.map +1 -0
  29. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/index.d.mts +1 -0
  30. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/message-managers/event-consumer.d.mts +1 -0
  31. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/message-managers/event-consumer.mjs +10 -22
  32. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/message-managers/event-consumer.mjs.map +1 -0
  33. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/message-managers/event-message.d.mts +1 -0
  34. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/message-managers/event-message.mjs +3 -20
  35. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/message-managers/event-message.mjs.map +1 -0
  36. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/message-managers/index.mjs +3 -0
  37. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/message-managers/prepare-consumer-subscription.mjs +1 -1
  38. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/message-managers/prepare-consumer-subscription.mjs.map +1 -0
  39. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/types/channel.types.d.mts +1 -0
  40. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/types/registry.types.d.mts +1 -0
  41. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/use-case-broadcast.mjs +1 -1
  42. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/use-case-broadcast.mjs.map +1 -0
  43. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/utils/connect-to-broker.d.mts +1 -0
  44. package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/utils/connect-to-broker.mjs +1 -1
  45. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/utils/connect-to-broker.mjs.map +1 -0
  46. package/esm/node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm/utils/index.mjs +3 -0
  47. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/config.mjs +1 -1
  48. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/config.mjs.map +1 -0
  49. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/factory/index.mjs +3 -0
  50. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/factory/validate.mjs +1 -1
  51. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/factory/validate.mjs.map +1 -0
  52. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/factory/validators.mjs +1 -1
  53. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/factory/validators.mjs.map +1 -0
  54. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/helpers/date-helpers.mjs +1 -1
  55. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/date-helpers.mjs.map +1 -0
  56. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/helpers/get-field-value.mjs +3 -3
  57. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/get-field-value.mjs.map +1 -0
  58. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/index.mjs +3 -0
  59. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/is-empty-value.mjs +10 -0
  60. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/is-empty-value.mjs.map +1 -0
  61. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/helpers/path-helpers.mjs +1 -1
  62. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/path-helpers.mjs.map +1 -0
  63. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/helpers/validation-helpers.mjs +1 -1
  64. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/helpers/validation-helpers.mjs.map +1 -0
  65. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/index.d.mts +10 -0
  66. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/index.mjs +7 -0
  67. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/mutators/array-mutators.mjs +3 -3
  68. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/array-mutators.mjs.map +1 -0
  69. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/mutators/boolean-mutators.mjs +1 -1
  70. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/boolean-mutators.mjs.map +1 -0
  71. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/mutators/date-mutators.mjs +3 -3
  72. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/date-mutators.mjs.map +1 -0
  73. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/index.mjs +8 -0
  74. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/mutators/number-mutators.mjs +4 -4
  75. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/number-mutators.mjs.map +1 -0
  76. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/mutators/object-mutators.mjs +4 -4
  77. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/object-mutators.mjs.map +1 -0
  78. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/scalar-mutators.mjs +9 -0
  79. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/scalar-mutators.mjs.map +1 -0
  80. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/mutators/string-mutators.mjs +11 -11
  81. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/mutators/string-mutators.mjs.map +1 -0
  82. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/array/array-rules.mjs +1 -1
  83. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/array/array-rules.mjs.map +1 -0
  84. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/array/index.mjs +3 -0
  85. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/color/color-rules.mjs +1 -1
  86. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/color/color-rules.mjs.map +1 -0
  87. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/color/index.mjs +3 -0
  88. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/common/enum.mjs +1 -1
  89. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/enum.mjs.map +1 -0
  90. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/common/equals-field-rules.mjs +1 -1
  91. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/equals-field-rules.mjs.map +1 -0
  92. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/index.mjs +8 -0
  93. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/common/instanceof.mjs +1 -1
  94. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/instanceof.mjs.map +1 -0
  95. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/common/literal.mjs +1 -1
  96. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/literal.mjs.map +1 -0
  97. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/common/type-rules.mjs +2 -2
  98. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/type-rules.mjs.map +1 -0
  99. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/common/unknown-key.mjs +1 -1
  100. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/common/unknown-key.mjs.map +1 -0
  101. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/forbidden-if-rules.mjs +1 -1
  102. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/forbidden-if-rules.mjs.map +1 -0
  103. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/index.mjs +12 -0
  104. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/present-if-rules.mjs +1 -1
  105. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/present-if-rules.mjs.map +1 -0
  106. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/present-unless-rules.mjs +1 -1
  107. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/present-unless-rules.mjs.map +1 -0
  108. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/present-with-rules.mjs +3 -3
  109. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/present-with-rules.mjs.map +1 -0
  110. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/present-without-rules.mjs +3 -3
  111. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/present-without-rules.mjs.map +1 -0
  112. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/required-if-rules.mjs +3 -3
  113. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/required-if-rules.mjs.map +1 -0
  114. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/required-unless-rules.mjs +1 -1
  115. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/required-unless-rules.mjs.map +1 -0
  116. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/required-when-rule.mjs +1 -1
  117. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/required-when-rule.mjs.map +1 -0
  118. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/required-with-rules.mjs +3 -3
  119. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/required-with-rules.mjs.map +1 -0
  120. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/conditional/required-without-rules.mjs +3 -3
  121. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/conditional/required-without-rules.mjs.map +1 -0
  122. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/core/equal.mjs +1 -1
  123. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/core/equal.mjs.map +1 -0
  124. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/core/forbidden.mjs +1 -1
  125. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/core/forbidden.mjs.map +1 -0
  126. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/core/index.mjs +7 -0
  127. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/core/required.mjs +1 -1
  128. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/core/required.mjs.map +1 -0
  129. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/core/union.mjs +1 -1
  130. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/core/union.mjs.map +1 -0
  131. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/core/when.mjs +3 -3
  132. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/core/when.mjs.map +1 -0
  133. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date-comparison-rules.mjs +1 -1
  134. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date-comparison-rules.mjs.map +1 -0
  135. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date-day-rules.mjs +1 -1
  136. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date-day-rules.mjs.map +1 -0
  137. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date-field-comparison-rules.mjs +3 -3
  138. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date-field-comparison-rules.mjs.map +1 -0
  139. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date-period-rules.mjs +3 -3
  140. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date-period-rules.mjs.map +1 -0
  141. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date-relative-rules.mjs +1 -1
  142. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date-relative-rules.mjs.map +1 -0
  143. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date-special-rules.mjs +1 -1
  144. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date-special-rules.mjs.map +1 -0
  145. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/date/date.mjs +3 -3
  146. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/date.mjs.map +1 -0
  147. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/date/index.mjs +9 -0
  148. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/index.mjs +57 -0
  149. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/length/index.mjs +3 -0
  150. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/length/length-rules.mjs +1 -1
  151. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/length/length-rules.mjs.map +1 -0
  152. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/number/index.mjs +3 -0
  153. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/number/number-rules.mjs +3 -3
  154. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/number/number-rules.mjs.map +1 -0
  155. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/scalar/accepted-rule.mjs +1 -1
  156. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/scalar/accepted-rule.mjs.map +1 -0
  157. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/scalar/declined-rule.mjs +1 -1
  158. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/scalar/declined-rule.mjs.map +1 -0
  159. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/scalar/index.mjs +4 -0
  160. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/alpha.mjs +1 -1
  161. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/alpha.mjs.map +1 -0
  162. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/credit-card.mjs +1 -1
  163. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/credit-card.mjs.map +1 -0
  164. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/email.mjs +2 -2
  165. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/email.mjs.map +1 -0
  166. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/id-formats.mjs +1 -1
  167. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/id-formats.mjs.map +1 -0
  168. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/index.mjs +13 -0
  169. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/ip.mjs +1 -1
  170. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/ip.mjs.map +1 -0
  171. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/matches.mjs +4 -0
  172. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/pattern.mjs +1 -1
  173. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/pattern.mjs.map +1 -0
  174. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/string-comparison.mjs +1 -1
  175. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/string-comparison.mjs.map +1 -0
  176. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/strong-password-rule.mjs +1 -1
  177. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/strong-password-rule.mjs.map +1 -0
  178. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/url.mjs +1 -1
  179. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/url.mjs.map +1 -0
  180. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/string/without-whitespace.mjs +1 -1
  181. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/rules/string/without-whitespace.mjs.map +1 -0
  182. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/standard-schema/json-schema.d.mts +32 -0
  183. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/standard-schema/json-schema.d.mts.map +1 -0
  184. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/standard-schema/json-schema.mjs +1 -1
  185. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/standard-schema/json-schema.mjs.map +1 -0
  186. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/standard-schema/map-result.mjs +1 -1
  187. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/standard-schema/map-result.mjs.map +1 -0
  188. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/standard-schema/types.d.mts +97 -0
  189. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/standard-schema/types.d.mts.map +1 -0
  190. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/conditional-types.d.mts +16 -0
  191. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/conditional-types.d.mts.map +1 -0
  192. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/context-types.d.mts +42 -0
  193. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/context-types.d.mts.map +1 -0
  194. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/data-transformer-types.d.mts +30 -0
  195. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/data-transformer-types.d.mts.map +1 -0
  196. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/types/date-types.mjs +1 -1
  197. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/date-types.mjs.map +1 -0
  198. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/mutator-types.d.mts +28 -0
  199. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/mutator-types.d.mts.map +1 -0
  200. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/result-types.d.mts +17 -0
  201. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/result-types.d.mts.map +1 -0
  202. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/rule-types.d.mts +53 -0
  203. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/rule-types.d.mts.map +1 -0
  204. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/schema-types.d.mts +11 -0
  205. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/types/schema-types.d.mts.map +1 -0
  206. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/any-validator.mjs +6 -9
  207. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/any-validator.mjs.map +1 -0
  208. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/array-validator.mjs +1 -2
  209. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/array-validator.mjs.map +1 -0
  210. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/base-validator.d.mts +492 -0
  211. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/base-validator.d.mts.map +1 -0
  212. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/base-validator.mjs +16 -49
  213. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/base-validator.mjs.map +1 -0
  214. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/boolean-validator.mjs +1 -1
  215. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/boolean-validator.mjs.map +1 -0
  216. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/computed-validator.mjs +1 -3
  217. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/computed-validator.mjs.map +1 -0
  218. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/date-validator.mjs +3 -3
  219. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/date-validator.mjs.map +1 -0
  220. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/discriminated-union-validator.mjs +2 -6
  221. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/discriminated-union-validator.mjs.map +1 -0
  222. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/float-validator.mjs +1 -1
  223. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/float-validator.mjs.map +1 -0
  224. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/index.mjs +28 -0
  225. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/instanceof-validator.mjs +1 -2
  226. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/instanceof-validator.mjs.map +1 -0
  227. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/int-validator.mjs +1 -1
  228. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/int-validator.mjs.map +1 -0
  229. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/lazy-validator.mjs +1 -3
  230. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/lazy-validator.mjs.map +1 -0
  231. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/literal-validator.mjs +1 -2
  232. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/literal-validator.mjs.map +1 -0
  233. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/managed-validator.mjs +1 -1
  234. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/managed-validator.mjs.map +1 -0
  235. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/equality-conditional-methods.d.mts +91 -0
  236. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/equality-conditional-methods.d.mts.map +1 -0
  237. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/methods/equality-conditional-methods.mjs +1 -1
  238. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/equality-conditional-methods.mjs.map +1 -0
  239. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/forbidden-methods.d.mts +59 -0
  240. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/forbidden-methods.d.mts.map +1 -0
  241. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/methods/forbidden-methods.mjs +1 -1
  242. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/forbidden-methods.mjs.map +1 -0
  243. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/present-methods.d.mts +103 -0
  244. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/present-methods.d.mts.map +1 -0
  245. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/methods/present-methods.mjs +1 -1
  246. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/present-methods.mjs.map +1 -0
  247. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/required-methods.d.mts +194 -0
  248. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/required-methods.d.mts.map +1 -0
  249. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/methods/required-methods.mjs +1 -1
  250. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/methods/required-methods.mjs.map +1 -0
  251. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/number-validator.mjs +1 -1
  252. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/number-validator.mjs.map +1 -0
  253. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/numeric-validator.mjs +2 -2
  254. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/numeric-validator.mjs.map +1 -0
  255. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/object-validator.mjs +7 -8
  256. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/object-validator.mjs.map +1 -0
  257. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/primitive-validator.mjs +1 -1
  258. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/primitive-validator.mjs.map +1 -0
  259. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/record-validator.mjs +2 -3
  260. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/record-validator.mjs.map +1 -0
  261. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/scalar-validator.mjs +1 -1
  262. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/scalar-validator.mjs.map +1 -0
  263. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/string-validator.mjs +1 -1
  264. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/string-validator.mjs.map +1 -0
  265. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/tuple-validator.mjs +1 -2
  266. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/tuple-validator.mjs.map +1 -0
  267. package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/validators/union-validator.mjs +1 -1
  268. package/esm/node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm/validators/union-validator.mjs.map +1 -0
  269. package/esm/queue/bullmq-queue.d.mts +25 -0
  270. package/esm/queue/bullmq-queue.d.mts.map +1 -0
  271. package/esm/queue/bullmq-queue.mjs +65 -0
  272. package/esm/queue/bullmq-queue.mjs.map +1 -0
  273. package/esm/queue/index.d.mts +4 -1
  274. package/esm/queue/index.mjs +3 -0
  275. package/esm/queue/load-herald.d.mts.map +1 -1
  276. package/esm/queue/load-herald.mjs +1 -1
  277. package/esm/queue/load-queue.d.mts +11 -0
  278. package/esm/queue/load-queue.d.mts.map +1 -0
  279. package/esm/queue/load-queue.mjs +32 -0
  280. package/esm/queue/load-queue.mjs.map +1 -0
  281. package/esm/queue/queue-package-not-installed.error.d.mts +13 -0
  282. package/esm/queue/queue-package-not-installed.error.d.mts.map +1 -0
  283. package/esm/queue/queue-package-not-installed.error.mjs +21 -0
  284. package/esm/queue/queue-package-not-installed.error.mjs.map +1 -0
  285. package/llms-full.txt +64 -36
  286. package/llms.txt +1 -1
  287. package/package.json +14 -6
  288. package/skills/queue-notifications/SKILL.md +64 -36
  289. package/cjs/rabbitmq-driver-Dn0M0-ln.cjs +0 -3
  290. package/cjs/src-Cx9y1PWY.cjs.map +0 -1
  291. package/esm/herald/src/communicators/broker-registry.mjs.map +0 -1
  292. package/esm/herald/src/communicators/broker.mjs.map +0 -1
  293. package/esm/herald/src/communicators/index.mjs +0 -4
  294. package/esm/herald/src/decorators/consumable.mjs.map +0 -1
  295. package/esm/herald/src/decorators/index.mjs +0 -3
  296. package/esm/herald/src/drivers/index.mjs +0 -5
  297. package/esm/herald/src/drivers/rabbitmq/index.mjs +0 -4
  298. package/esm/herald/src/drivers/rabbitmq/rabbitmq-channel.mjs.map +0 -1
  299. package/esm/herald/src/drivers/rabbitmq/rabbitmq-driver.mjs.map +0 -1
  300. package/esm/herald/src/message-managers/event-consumer.mjs.map +0 -1
  301. package/esm/herald/src/message-managers/event-message.mjs.map +0 -1
  302. package/esm/herald/src/message-managers/index.mjs +0 -4
  303. package/esm/herald/src/message-managers/prepare-consumer-subscription.mjs.map +0 -1
  304. package/esm/herald/src/use-case-broadcast.mjs.map +0 -1
  305. package/esm/herald/src/utils/connect-to-broker.mjs.map +0 -1
  306. package/esm/herald/src/utils/index.mjs +0 -3
  307. package/esm/seal/src/config.mjs.map +0 -1
  308. package/esm/seal/src/factory/index.mjs +0 -4
  309. package/esm/seal/src/factory/validate.mjs.map +0 -1
  310. package/esm/seal/src/factory/validators.mjs.map +0 -1
  311. package/esm/seal/src/helpers/date-helpers.mjs.map +0 -1
  312. package/esm/seal/src/helpers/get-field-value.mjs.map +0 -1
  313. package/esm/seal/src/helpers/index.mjs +0 -6
  314. package/esm/seal/src/helpers/is-empty-value.mjs +0 -10
  315. package/esm/seal/src/helpers/is-empty-value.mjs.map +0 -1
  316. package/esm/seal/src/helpers/path-helpers.mjs.map +0 -1
  317. package/esm/seal/src/helpers/validation-helpers.mjs.map +0 -1
  318. package/esm/seal/src/mutators/array-mutators.mjs.map +0 -1
  319. package/esm/seal/src/mutators/boolean-mutators.mjs.map +0 -1
  320. package/esm/seal/src/mutators/date-mutators.mjs.map +0 -1
  321. package/esm/seal/src/mutators/index.mjs +0 -9
  322. package/esm/seal/src/mutators/number-mutators.mjs.map +0 -1
  323. package/esm/seal/src/mutators/object-mutators.mjs.map +0 -1
  324. package/esm/seal/src/mutators/scalar-mutators.mjs +0 -9
  325. package/esm/seal/src/mutators/scalar-mutators.mjs.map +0 -1
  326. package/esm/seal/src/mutators/string-mutators.mjs.map +0 -1
  327. package/esm/seal/src/rules/array/array-rules.mjs.map +0 -1
  328. package/esm/seal/src/rules/array/index.mjs +0 -3
  329. package/esm/seal/src/rules/color/color-rules.mjs.map +0 -1
  330. package/esm/seal/src/rules/color/index.mjs +0 -3
  331. package/esm/seal/src/rules/common/enum.mjs.map +0 -1
  332. package/esm/seal/src/rules/common/equals-field-rules.mjs.map +0 -1
  333. package/esm/seal/src/rules/common/index.mjs +0 -8
  334. package/esm/seal/src/rules/common/instanceof.mjs.map +0 -1
  335. package/esm/seal/src/rules/common/literal.mjs.map +0 -1
  336. package/esm/seal/src/rules/common/type-rules.mjs.map +0 -1
  337. package/esm/seal/src/rules/common/unknown-key.mjs.map +0 -1
  338. package/esm/seal/src/rules/conditional/forbidden-if-rules.mjs.map +0 -1
  339. package/esm/seal/src/rules/conditional/index.mjs +0 -12
  340. package/esm/seal/src/rules/conditional/present-if-rules.mjs.map +0 -1
  341. package/esm/seal/src/rules/conditional/present-unless-rules.mjs.map +0 -1
  342. package/esm/seal/src/rules/conditional/present-with-rules.mjs.map +0 -1
  343. package/esm/seal/src/rules/conditional/present-without-rules.mjs.map +0 -1
  344. package/esm/seal/src/rules/conditional/required-if-rules.mjs.map +0 -1
  345. package/esm/seal/src/rules/conditional/required-unless-rules.mjs.map +0 -1
  346. package/esm/seal/src/rules/conditional/required-when-rule.mjs.map +0 -1
  347. package/esm/seal/src/rules/conditional/required-with-rules.mjs.map +0 -1
  348. package/esm/seal/src/rules/conditional/required-without-rules.mjs.map +0 -1
  349. package/esm/seal/src/rules/core/equal.mjs.map +0 -1
  350. package/esm/seal/src/rules/core/forbidden.mjs.map +0 -1
  351. package/esm/seal/src/rules/core/index.mjs +0 -7
  352. package/esm/seal/src/rules/core/required.mjs.map +0 -1
  353. package/esm/seal/src/rules/core/union.mjs.map +0 -1
  354. package/esm/seal/src/rules/core/when.mjs.map +0 -1
  355. package/esm/seal/src/rules/date/date-comparison-rules.mjs.map +0 -1
  356. package/esm/seal/src/rules/date/date-day-rules.mjs.map +0 -1
  357. package/esm/seal/src/rules/date/date-field-comparison-rules.mjs.map +0 -1
  358. package/esm/seal/src/rules/date/date-period-rules.mjs.map +0 -1
  359. package/esm/seal/src/rules/date/date-relative-rules.mjs.map +0 -1
  360. package/esm/seal/src/rules/date/date-special-rules.mjs.map +0 -1
  361. package/esm/seal/src/rules/date/date.mjs.map +0 -1
  362. package/esm/seal/src/rules/date/index.mjs +0 -9
  363. package/esm/seal/src/rules/index.mjs +0 -54
  364. package/esm/seal/src/rules/length/index.mjs +0 -3
  365. package/esm/seal/src/rules/length/length-rules.mjs.map +0 -1
  366. package/esm/seal/src/rules/number/index.mjs +0 -3
  367. package/esm/seal/src/rules/number/number-rules.mjs.map +0 -1
  368. package/esm/seal/src/rules/scalar/accepted-rule.mjs.map +0 -1
  369. package/esm/seal/src/rules/scalar/declined-rule.mjs.map +0 -1
  370. package/esm/seal/src/rules/scalar/index.mjs +0 -4
  371. package/esm/seal/src/rules/string/alpha.mjs.map +0 -1
  372. package/esm/seal/src/rules/string/credit-card.mjs.map +0 -1
  373. package/esm/seal/src/rules/string/email.mjs.map +0 -1
  374. package/esm/seal/src/rules/string/id-formats.mjs.map +0 -1
  375. package/esm/seal/src/rules/string/index.mjs +0 -13
  376. package/esm/seal/src/rules/string/ip.mjs.map +0 -1
  377. package/esm/seal/src/rules/string/matches.mjs +0 -4
  378. package/esm/seal/src/rules/string/pattern.mjs.map +0 -1
  379. package/esm/seal/src/rules/string/string-comparison.mjs.map +0 -1
  380. package/esm/seal/src/rules/string/strong-password-rule.mjs.map +0 -1
  381. package/esm/seal/src/rules/string/url.mjs.map +0 -1
  382. package/esm/seal/src/rules/string/without-whitespace.mjs.map +0 -1
  383. package/esm/seal/src/standard-schema/json-schema.mjs.map +0 -1
  384. package/esm/seal/src/standard-schema/map-result.mjs.map +0 -1
  385. package/esm/seal/src/types/date-types.mjs.map +0 -1
  386. package/esm/seal/src/validators/any-validator.mjs.map +0 -1
  387. package/esm/seal/src/validators/array-validator.mjs.map +0 -1
  388. package/esm/seal/src/validators/base-validator.mjs.map +0 -1
  389. package/esm/seal/src/validators/boolean-validator.mjs.map +0 -1
  390. package/esm/seal/src/validators/computed-validator.mjs.map +0 -1
  391. package/esm/seal/src/validators/date-validator.mjs.map +0 -1
  392. package/esm/seal/src/validators/discriminated-union-validator.mjs.map +0 -1
  393. package/esm/seal/src/validators/float-validator.mjs.map +0 -1
  394. package/esm/seal/src/validators/index.mjs +0 -28
  395. package/esm/seal/src/validators/instanceof-validator.mjs.map +0 -1
  396. package/esm/seal/src/validators/int-validator.mjs.map +0 -1
  397. package/esm/seal/src/validators/lazy-validator.mjs.map +0 -1
  398. package/esm/seal/src/validators/literal-validator.mjs.map +0 -1
  399. package/esm/seal/src/validators/managed-validator.mjs.map +0 -1
  400. package/esm/seal/src/validators/methods/equality-conditional-methods.mjs.map +0 -1
  401. package/esm/seal/src/validators/methods/forbidden-methods.mjs.map +0 -1
  402. package/esm/seal/src/validators/methods/present-methods.mjs.map +0 -1
  403. package/esm/seal/src/validators/methods/required-methods.mjs.map +0 -1
  404. package/esm/seal/src/validators/number-validator.mjs.map +0 -1
  405. package/esm/seal/src/validators/numeric-validator.mjs.map +0 -1
  406. package/esm/seal/src/validators/object-validator.mjs.map +0 -1
  407. package/esm/seal/src/validators/primitive-validator.mjs.map +0 -1
  408. package/esm/seal/src/validators/record-validator.mjs.map +0 -1
  409. package/esm/seal/src/validators/scalar-validator.mjs.map +0 -1
  410. package/esm/seal/src/validators/string-validator.mjs.map +0 -1
  411. package/esm/seal/src/validators/tuple-validator.mjs.map +0 -1
  412. package/esm/seal/src/validators/union-validator.mjs.map +0 -1
  413. /package/esm/{herald/src → node_modules/.pnpm/@warlock.js_herald@5.13.0_@_59180b5cb298943e15ce89ac6e9c641d/node_modules/@warlock.js/herald/esm}/index.mjs +0 -0
  414. /package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/file/dimensions.mjs +0 -0
  415. /package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/file/file-size.mjs +0 -0
  416. /package/esm/{seal/src → node_modules/.pnpm/@warlock.js_seal@5.13.0/node_modules/@warlock.js/seal/esm}/rules/file/index.mjs +0 -0
package/llms.txt CHANGED
@@ -11,7 +11,7 @@
11
11
  - [define-notification](@warlock.js/notifications/define-notification/SKILL.md): Build a reusable multi-channel notification with `defineNotification<Data>({ type, via, ...renderers })`. `type` is the stable identifier preference/rate-limit gates use AND defaults the database channel's `type`. `via` is `ChannelName[]` OR `(data, to) => ChannelName[]` for per-recipient channel selection. Renderers are `(data, to, ctx) => NotificationChannels[C]`; `ctx` carries `locale` + `meta` from `SendOptions`. The returned object exposes `.send(to|to[], data, options?)`, `.queue(to|to[], data, options?)`, and `.only(...channels)`. Per-recipient + per-channel `Promise.allSettled` isolates failures; the database channel's `type` is auto-defaulted from `def.type`; `SendOptions.idempotencyKey` is injected into the database payload. Triggers: `defineNotification`, `via`, "reusable notification", "multi-channel notification", "send through several channels at once", "render per channel", `RenderContext`, `def.type`; "force on a notification", "queue with delay"; typical import `import { defineNotification } from "@warlock.js/notifications"`. Skip: single-channel ad-hoc sends — `@warlock.js/notifications/send-ad-hoc/SKILL.md`; adding a brand-new channel — `@warlock.js/notifications/define-channel/SKILL.md`; observing dispatch outcomes — `@warlock.js/notifications/observe-notifications/SKILL.md`.
12
12
  - [notifications-basics](@warlock.js/notifications/notifications-basics/SKILL.md): Front-door for `@warlock.js/notifications` — what the package is, when to reach for it, and the four moving parts (channel registry, defineNotification, notify, inApp). Multi-channel dispatch: define once, fire anywhere. Recipients are cascade `Model` instances; payloads are typed per channel via a declaration-merge `NotificationChannels` registry; reusable definitions go through `defineNotification`; ad-hoc per-channel sends go through the `notify.<channel>` proxy; the in-app database channel is read via the `inApp` facade. Phase 1 ships `mail` + `database`; bridges-backed channels (whatsapp/telegram/push/slack) arrive in Phase 2. Triggers: `defineNotification`, `notify.<channel>`, `inApp.configure`, `setNotificationConfig`, `NotificationConfig`, `NotificationChannels`; "send a notification", "in-app notifications", "what channels can I use", "what is `@warlock.js/notifications`", "where do I start"; typical import `import { defineNotification, notify, inApp } from "@warlock.js/notifications"`. Skip: configuring channels in `config/notifications.ts` — `@warlock.js/notifications/configure-notifications/SKILL.md`; building a multi-channel definition — `@warlock.js/notifications/define-notification/SKILL.md`; reading in-app rows — `@warlock.js/notifications/use-in-app/SKILL.md`.
13
13
  - [observe-notifications](@warlock.js/notifications/observe-notifications/SKILL.md): Wire metrics, logging, tracing, and audits via `notifications.on(event, handler)` — four events fire per (channel, recipient): `sending` (gates passed, about to hit the transport), `sent` (succeeded), `failed` (channel threw — carries the Error), `skipped` (a pre-send gate dropped it — carries `reason: "preference" | "rate-limit"`). Every event carries the recipient as `notifiable?` (undefined only for raw-target ad-hoc sends) and a `dispatchId` — `sending` and its terminal `sent`/`failed` share it, so observers can pair them (spans, latency, hung-send detection). `sent`/`failed` also carry `durationMs`. Handler exceptions are logged-and-swallowed so one bad listener can not break the dispatcher. `on(...)` returns an unsubscribe function; `off(event, handler)` exists for symmetry. Triggers: `notifications.on`, `notifications.off`, `"sending"` event, `"sent"` event, `"failed"` event, `"skipped"` event, `dispatchId`, `durationMs`, `NotificationEvents`, "notification metrics", "notification latency", "trace notifications", "notification audit log", "track notification drops"; typical import `import { notifications } from "@warlock.js/notifications"`. Skip: building notifications — `@warlock.js/notifications/define-notification/SKILL.md`; configuring the preference/rate-limit gates that produce `skipped` — `@warlock.js/notifications/configure-notifications/SKILL.md`.
14
- - [queue-notifications](@warlock.js/notifications/queue-notifications/SKILL.md): Send notifications asynchronously via the herald-backed queue. `heraldQueue({ channel?, broker? })` is a `QueueDispatcher` you add to the `queue` slot of the declarative `config/notifications.ts` (the connector registers it at boot); then `notif.queue(to, data, options?)` / `notify` publish a rendered job instead of sending inline. `startNotificationsWorker({ channel?, broker? })` runs the consumer (in a worker or the web process) that pulls jobs and runs `channel.send`. Both lazy-import `@warlock.js/herald` (optional peer) — a missing package throws a curated install message at use time. `defineNotification` renders payloads + resolves routes BEFORE queuing, so the job (`{ channel, route, payload, options }`) is fully serializable — no model re-hydration. Without a queue configured, `.queue()` rejects `NoQueueDispatcherError`. Triggers: `heraldQueue`, `startNotificationsWorker`, `QueueDispatcher`, `.queue(`, "async notifications", "queue notifications", "notification worker", "background notifications", `notifications.dispatch`; typical import `import { heraldQueue, startNotificationsWorker } from "@warlock.js/notifications"`. Skip: synchronous sends — `@warlock.js/notifications/define-notification/SKILL.md`; herald itself — `@warlock.js/herald/*`.
14
+ - [queue-notifications](@warlock.js/notifications/queue-notifications/SKILL.md): Send notifications asynchronously through the herald backend or the BullMQ driver. Configure a QueueDispatcher in config/notifications.ts, then use notif.queue(to, data, options?) to enqueue rendered jobs. Herald uses heraldQueue() and startNotificationsWorker(); bullmqQueue({ attempts, backoff }) from @warlock.js/notifications uses BullMQ (lazy-loading the optional @warlock.js/queue peer), supports retries, and honours SendOptions.delay. Without a queue configured, .queue() rejects NoQueueDispatcherError. Triggers: heraldQueue, bullmqQueue, startNotificationsWorker, QueueDispatcher, .queue(, async notifications, queue notifications, notification worker, background notifications, notifications.dispatch. Skip: synchronous sends - @warlock.js/notifications/define-notification/SKILL.md; herald itself - @warlock.js/herald/*.
15
15
  - [send-ad-hoc](@warlock.js/notifications/send-ad-hoc/SKILL.md): Ad-hoc per-channel send via the `notify.<channel>(to, payload, options?)` Proxy facade. Works for any channel registered in `NotificationChannels` (built-in or custom). `to` accepts a `Notifiable` model OR a raw route string (`"x@y.com"`); `payload` is typed per channel via the registry; `options` is the standard `SendOptions`. `notify.channel(name).send(...)` is the runtime escape when the channel name is not a compile-time literal. Type-based preference gating applies when a type is known — explicit via `options.type` OR auto-detected from a database payload's `type` field. For multi-channel sends use `defineNotification` instead — there is no inline `notify(to, { via, ... })` form on purpose. Triggers: `notify.<channel>`, `notify.channel(name)`, `notify.mail`, `notify.database`, "send a one-off notification", "ad-hoc notification", "send an email without defining a notification", "raw email target", "dynamic channel name"; typical import `import { notify } from "@warlock.js/notifications"`. Skip: reusable multi-channel notifications — `@warlock.js/notifications/define-notification/SKILL.md`; configuring channels — `@warlock.js/notifications/configure-notifications/SKILL.md`.
16
16
  - [use-in-app](@warlock.js/notifications/use-in-app/SKILL.md): Use the `inApp` facade for the in-app/database channel's READ side: `inApp.configure({ model: Notification })` or `{ repository: myRepo }` binds the store AND returns the channel; `inApp.list / listUnread / countUnread / markAsRead / markAsUnread` are RECIPIENT-SCOPED by construction (no IDOR — `markAsRead(user, id)` cannot flip another user's row even with a foreign id). `countUnread` uses `RepositoryManager.countCached` for the badge fast-path. Triggers: `inApp.configure`, `inApp.list`, `inApp.listUnread`, `inApp.countUnread`, `inApp.markAsRead`, `inApp.markAsUnread`, `BaseNotificationsRepository`, `DatabaseNotification`, `NotificationsFilter`, "in-app notifications", "mark notification as read", "unread count", "notification badge", "IDOR-safe markAsRead"; typical import `import { inApp } from "@warlock.js/notifications"`. Skip: writing notifications (use `defineNotification` or `notify.database`) — `@warlock.js/notifications/define-notification/SKILL.md`; the migration columns — `@warlock.js/notifications/write-notification-migration/SKILL.md`; wiring it into config — `@warlock.js/notifications/configure-notifications/SKILL.md`.
17
17
  - [write-notification-migration](@warlock.js/notifications/write-notification-migration/SKILL.md): Create the notifications table with the `notificationColumns(Notification)` factory + cascade `Migration.create`. Column NAMES come from the model's `columnMap` (recipient / tenant / readAt / isRead); the fixed columns are `type` / `title` / `body` / `payload` / `idempotency_key`. Read-state follows columnMap presence: `readAt` → nullable timestamp, `isRead` → indexed boolean, both → both. Defaults to `user_id` + `read_at` when no columnMap. Spread + extend for extras (FK references, composite indexes). Triggers: `notificationColumns`, `Migration.create` for notifications, "create the notifications table", "notification migration", "add organization_id to notifications", `is_read` column, `read_at` column, `idempotency_key` column; typical import `import { Migration } from "@warlock.js/cascade"; import { notificationColumns } from "@warlock.js/notifications"`. Skip: generic cascade migration writing — `@warlock.js/cascade/write-migration/SKILL.md`; the model itself — `@warlock.js/notifications/use-in-app/SKILL.md`.
package/package.json CHANGED
@@ -5,13 +5,21 @@
5
5
  "environment": "server"
6
6
  },
7
7
  "dependencies": {
8
- "@warlock.js/cache": "5.12.0",
9
- "@warlock.js/cascade": "5.12.0",
10
- "@warlock.js/core": "5.12.0",
11
- "@warlock.js/logger": "5.12.0"
8
+ "@warlock.js/cache": "5.14.0",
9
+ "@warlock.js/cascade": "5.14.0",
10
+ "@warlock.js/core": "5.14.0",
11
+ "@warlock.js/logger": "5.14.0"
12
12
  },
13
13
  "optionalDependencies": {
14
- "@warlock.js/herald": "5.12.0"
14
+ "@warlock.js/herald": "5.14.0"
15
+ },
16
+ "peerDependencies": {
17
+ "@warlock.js/queue": "5.14.0"
18
+ },
19
+ "peerDependenciesMeta": {
20
+ "@warlock.js/queue": {
21
+ "optional": true
22
+ }
15
23
  },
16
24
  "repository": {
17
25
  "type": "git",
@@ -27,7 +35,7 @@
27
35
  ],
28
36
  "author": "hassanzohdy",
29
37
  "license": "MIT",
30
- "version": "5.12.0",
38
+ "version": "5.14.0",
31
39
  "main": "./cjs/index.cjs",
32
40
  "module": "./esm/index.mjs",
33
41
  "types": "./esm/index.d.mts",
@@ -1,81 +1,109 @@
1
1
  ---
2
2
  name: queue-notifications
3
- description: 'Send notifications asynchronously via the herald-backed queue. `heraldQueue({ channel?, broker? })` is a `QueueDispatcher` you add to the `queue` slot of the declarative `config/notifications.ts` (the connector registers it at boot); then `notif.queue(to, data, options?)` / `notify` publish a rendered job instead of sending inline. `startNotificationsWorker({ channel?, broker? })` runs the consumer (in a worker or the web process) that pulls jobs and runs `channel.send`. Both lazy-import `@warlock.js/herald` (optional peer) — a missing package throws a curated install message at use time. `defineNotification` renders payloads + resolves routes BEFORE queuing, so the job (`{ channel, route, payload, options }`) is fully serializable — no model re-hydration. Without a queue configured, `.queue()` rejects `NoQueueDispatcherError`. Triggers: `heraldQueue`, `startNotificationsWorker`, `QueueDispatcher`, `.queue(`, "async notifications", "queue notifications", "notification worker", "background notifications", `notifications.dispatch`; typical import `import { heraldQueue, startNotificationsWorker } from "@warlock.js/notifications"`. Skip: synchronous sends — `@warlock.js/notifications/define-notification/SKILL.md`; herald itself — `@warlock.js/herald/*`.'
3
+ description: "Send notifications asynchronously through the herald backend or the BullMQ driver. Configure a QueueDispatcher in config/notifications.ts, then use notif.queue(to, data, options?) to enqueue rendered jobs. Herald uses heraldQueue() and startNotificationsWorker(); bullmqQueue({ attempts, backoff }) from @warlock.js/notifications uses BullMQ (lazy-loading the optional @warlock.js/queue peer), supports retries, and honours SendOptions.delay. Without a queue configured, .queue() rejects NoQueueDispatcherError. Triggers: heraldQueue, bullmqQueue, startNotificationsWorker, QueueDispatcher, .queue(, async notifications, queue notifications, notification worker, background notifications, notifications.dispatch. Skip: synchronous sends - @warlock.js/notifications/define-notification/SKILL.md; herald itself - @warlock.js/herald/*."
4
4
  ---
5
5
 
6
6
  # Queue notifications (async)
7
7
 
8
- Move slow channels (SMTP, HTTP) off the request path. `.queue()` publishes a
9
- rendered job to herald; a worker delivers it.
8
+ Move slow channels (SMTP, HTTP) off the request path. `.queue()` renders the
9
+ payload and resolves the route before passing a serializable job to a dispatcher.
10
10
 
11
- ## Wire the dispatcher
11
+ ## Wire the herald dispatcher
12
12
 
13
13
  ```ts title="src/config/notifications.ts"
14
- import { type NotificationConfig, heraldQueue, inApp, mailChannel } from "@warlock.js/notifications";
14
+ import {
15
+ type NotificationConfig,
16
+ heraldQueue,
17
+ inApp,
18
+ mailChannel,
19
+ } from "@warlock.js/notifications";
15
20
  import { Notification } from "app/notifications/notification.model";
16
21
 
17
22
  const config: NotificationConfig = {
18
23
  channels: { mail: mailChannel(), database: inApp.configure({ model: Notification }) },
19
- queue: heraldQueue(), // → `.queue()` now works
24
+ queue: heraldQueue(),
20
25
  };
21
26
 
22
- export default config; // the notifications connector registers it at boot
27
+ export default config;
23
28
  ```
24
29
 
25
- `heraldQueue({ channel?, broker? })` publishes to `"notifications.dispatch"` on
26
- the default broker unless overridden. It lazy-imports `@warlock.js/herald`; if
27
- that package isn't installed, the first `.queue()` throws an install message.
30
+ `heraldQueue({ channel?, broker? })` publishes to `"notifications.dispatch"`
31
+ on the default broker unless overridden. It lazy-imports `@warlock.js/herald`;
32
+ if that package is missing, the first `.queue()` throws an install message.
28
33
 
29
- Without `queue` configured, `.queue()` rejects `NoQueueDispatcherError` — a loud
30
- config error, not a silent no-op.
34
+ ## Use BullMQ for delayed or retried delivery
31
35
 
32
- ## Run the worker
36
+ Use the `bullmq` driver instead of the herald dispatcher — it ships inside
37
+ `@warlock.js/notifications` itself and lazy-loads `@warlock.js/queue` (an
38
+ OPTIONAL peer) the first time `.queue()` runs:
33
39
 
34
- In a worker entrypoint (or the web process), after the config + the herald
35
- broker are up:
40
+ ```ts title="src/config/notifications.ts"
41
+ import { type NotificationConfig, bullmqQueue, mailChannel } from "@warlock.js/notifications";
42
+
43
+ const config: NotificationConfig = {
44
+ channels: { mail: mailChannel() },
45
+ queue: bullmqQueue({ attempts: 3, backoff: { type: "exponential", delay: 5000 } }),
46
+ };
47
+
48
+ export default config;
49
+ ```
50
+
51
+ The BullMQ driver honours `SendOptions.delay`: numeric delays are seconds and
52
+ string delays use the normal duration syntax, such as `"10m"`. It also supports
53
+ BullMQ retries through `attempts` and `backoff`. If `@warlock.js/queue` isn't
54
+ installed, the first `.queue()` throws `QueuePackageNotInstalledError` naming
55
+ `warlock add queue`.
56
+
57
+ > **Deprecated:** `queueNotificationDispatcher` from
58
+ > `@warlock.js/queue/notifications` still works for this release (it logs a
59
+ > one-time deprecation warning) and is removed next release. Migrate to
60
+ > `bullmqQueue` above — same option names (`queue`, `attempts`, `backoff`).
61
+
62
+ ## Run the herald worker
63
+
64
+ In a worker entrypoint (or the web process), after the config and herald broker
65
+ are up:
36
66
 
37
67
  ```ts
38
68
  import { startNotificationsWorker } from "@warlock.js/notifications";
39
69
 
40
- await startNotificationsWorker(); // subscribes to "notifications.dispatch"
70
+ await startNotificationsWorker();
41
71
  ```
42
72
 
43
- The worker pulls each job, looks the channel up by name, and runs
44
- `channel.send({ payload, route, options })`. The job carries an
45
- ALREADY-RENDERED payload + resolved route (rendering happens at enqueue), so the
46
- worker needs no recipient model.
73
+ The worker looks up the channel by name and runs
74
+ `channel.send({ payload, route, options })`. The worker needs no recipient model
75
+ because rendering happened at enqueue time.
47
76
 
48
77
  ## Send
49
78
 
50
79
  ```ts
51
- await orderShipped.queue(user, { order }); // async
80
+ await orderShipped.queue(user, { order });
52
81
  await orderShipped.queue(buyers, { order }, { delay: "10m" });
53
- await notify.mail(user, payload, { /* sync — notify.* doesn't queue */ });
82
+ await notify.mail(user, payload, {/* synchronous - notify.* does not queue */});
54
83
  ```
55
84
 
56
- `.queue()` renders synchronously then enqueues. Fan-out renders per recipient
57
- and enqueues one job each.
85
+ `.queue()` renders per recipient and enqueues one job per recipient. Without a
86
+ configured dispatcher, it rejects `NoQueueDispatcherError`.
58
87
 
59
88
  ## Idempotency
60
89
 
61
- Pass `idempotencyKey` so a redelivered/retried job doesn't create a duplicate
62
- in-app row — `createFor` find-or-creates on the key.
90
+ Pass `idempotencyKey` so a redelivered or retried job does not create a duplicate
91
+ in-app row. `createFor` finds or creates the row by that key.
63
92
 
64
93
  ```ts
65
94
  await orderShipped.queue(user, { order }, { idempotencyKey: `ship:${order.id}` });
66
95
  ```
67
96
 
68
- ## Phase notes / current limits
97
+ ## Current limits
69
98
 
70
- - **`delay` is carried on the job but not yet honored** — the worker delivers
71
- immediately. Delay-aware delivery lands with a scheduled worker.
72
- - **No retry / dead-letter yet** — a failed `channel.send` is logged + acked
73
- (no poison-message loop). DLQ handling is a follow-up.
74
- - Rate-limit budget is consumed at ENQUEUE time for queued sends (see
75
- `RateLimiter` docstring).
99
+ - With the herald backend, `delay` is carried on the job but not honoured; the
100
+ worker delivers immediately. Use the BullMQ adapter for delayed delivery.
101
+ - Herald has no retry or dead-letter handling yet; failed `channel.send` calls
102
+ are logged and acknowledged.
103
+ - Rate-limit budget is consumed at enqueue time for queued sends.
76
104
 
77
105
  ## See also
78
106
 
79
- - [`define-notification/SKILL.md`](../define-notification/SKILL.md) — `.queue()` on a defined notification.
80
- - [`configure-notifications/SKILL.md`](../configure-notifications/SKILL.md) — the `queue` config slot.
81
- - [`@warlock.js/herald/herald-basics/SKILL.md`](../../../herald/skills/herald-basics/SKILL.md) — connecting the broker.
107
+ - [`define-notification/SKILL.md`](../define-notification/SKILL.md) - `.queue()` on a defined notification.
108
+ - [`configure-notifications/SKILL.md`](../configure-notifications/SKILL.md) - the `queue` config slot.
109
+ - [`@warlock.js/herald/herald-basics/SKILL.md`](../../../herald/skills/herald-basics/SKILL.md) - connecting the broker.
@@ -1,3 +0,0 @@
1
- const require_src = require('./src-Cx9y1PWY.cjs');
2
-
3
- exports.RabbitMQDriver = require_src.RabbitMQDriver;