@warlock.js/notifications 5.23.2 → 5.25.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 (103) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cjs/index.cjs +1 -1
  3. package/cjs/rabbitmq-driver-DvWaCPES.cjs +3 -0
  4. package/cjs/{src-DbAWktJm.cjs → src-BVlqtCR2.cjs} +22 -6
  5. package/cjs/src-BVlqtCR2.cjs.map +1 -0
  6. package/esm/herald/src/communicators/broker-registry.mjs.map +1 -1
  7. package/esm/herald/src/communicators/broker.mjs.map +1 -1
  8. package/esm/herald/src/drivers/rabbitmq/rabbitmq-channel.mjs.map +1 -1
  9. package/esm/herald/src/drivers/rabbitmq/rabbitmq-driver.mjs.map +1 -1
  10. package/esm/herald/src/message-managers/prepare-consumer-subscription.mjs.map +1 -1
  11. package/esm/herald/src/utils/connect-to-broker.mjs.map +1 -1
  12. package/esm/seal/src/config.mjs.map +1 -1
  13. package/esm/seal/src/factory/validate.mjs.map +1 -1
  14. package/esm/seal/src/factory/validators.mjs +1 -1
  15. package/esm/seal/src/factory/validators.mjs.map +1 -1
  16. package/esm/seal/src/helpers/date-helpers.mjs.map +1 -1
  17. package/esm/seal/src/helpers/get-field-value.mjs.map +1 -1
  18. package/esm/seal/src/helpers/path-helpers.mjs.map +1 -1
  19. package/esm/seal/src/mutators/array-mutators.mjs.map +1 -1
  20. package/esm/seal/src/mutators/date-mutators.mjs.map +1 -1
  21. package/esm/seal/src/mutators/number-mutators.mjs.map +1 -1
  22. package/esm/seal/src/mutators/object-mutators.mjs.map +1 -1
  23. package/esm/seal/src/mutators/scalar-mutators.mjs.map +1 -1
  24. package/esm/seal/src/mutators/string-mutators.mjs.map +1 -1
  25. package/esm/seal/src/rules/array/array-rules.mjs.map +1 -1
  26. package/esm/seal/src/rules/color/color-rules.mjs.map +1 -1
  27. package/esm/seal/src/rules/common/enum.mjs.map +1 -1
  28. package/esm/seal/src/rules/common/equals-field-rules.mjs.map +1 -1
  29. package/esm/seal/src/rules/common/type-rules.mjs.map +1 -1
  30. package/esm/seal/src/rules/conditional/forbidden-if-rules.mjs.map +1 -1
  31. package/esm/seal/src/rules/conditional/present-if-rules.mjs.map +1 -1
  32. package/esm/seal/src/rules/conditional/present-unless-rules.mjs.map +1 -1
  33. package/esm/seal/src/rules/conditional/present-with-rules.mjs.map +1 -1
  34. package/esm/seal/src/rules/conditional/present-without-rules.mjs.map +1 -1
  35. package/esm/seal/src/rules/conditional/required-if-rules.mjs.map +1 -1
  36. package/esm/seal/src/rules/conditional/required-unless-rules.mjs.map +1 -1
  37. package/esm/seal/src/rules/conditional/required-with-rules.mjs.map +1 -1
  38. package/esm/seal/src/rules/conditional/required-without-rules.mjs.map +1 -1
  39. package/esm/seal/src/rules/core/equal.mjs.map +1 -1
  40. package/esm/seal/src/rules/core/forbidden.mjs.map +1 -1
  41. package/esm/seal/src/rules/core/required.mjs.map +1 -1
  42. package/esm/seal/src/rules/core/union.mjs.map +1 -1
  43. package/esm/seal/src/rules/core/when.mjs.map +1 -1
  44. package/esm/seal/src/rules/date/date-comparison-rules.mjs.map +1 -1
  45. package/esm/seal/src/rules/date/date-day-rules.mjs.map +1 -1
  46. package/esm/seal/src/rules/date/date-field-comparison-rules.mjs.map +1 -1
  47. package/esm/seal/src/rules/date/date-period-rules.mjs.map +1 -1
  48. package/esm/seal/src/rules/date/date-relative-rules.mjs.map +1 -1
  49. package/esm/seal/src/rules/date/date-special-rules.mjs.map +1 -1
  50. package/esm/seal/src/rules/date/date.mjs.map +1 -1
  51. package/esm/seal/src/rules/length/length-rules.mjs.map +1 -1
  52. package/esm/seal/src/rules/number/number-rules.mjs.map +1 -1
  53. package/esm/seal/src/rules/scalar/accepted-rule.mjs.map +1 -1
  54. package/esm/seal/src/rules/scalar/declined-rule.mjs.map +1 -1
  55. package/esm/seal/src/rules/string/alpha.mjs.map +1 -1
  56. package/esm/seal/src/rules/string/credit-card.mjs.map +1 -1
  57. package/esm/seal/src/rules/string/email.mjs.map +1 -1
  58. package/esm/seal/src/rules/string/pattern.mjs.map +1 -1
  59. package/esm/seal/src/rules/string/string-comparison.mjs.map +1 -1
  60. package/esm/seal/src/rules/string/strong-password-rule.mjs.map +1 -1
  61. package/esm/seal/src/rules/string/url.mjs.map +1 -1
  62. package/esm/seal/src/rules/string/without-whitespace.mjs.map +1 -1
  63. package/esm/seal/src/types/date-types.mjs.map +1 -1
  64. package/esm/seal/src/validators/any-validator.mjs.map +1 -1
  65. package/esm/seal/src/validators/array-validator.mjs +1 -0
  66. package/esm/seal/src/validators/array-validator.mjs.map +1 -1
  67. package/esm/seal/src/validators/base-validator.mjs +12 -1
  68. package/esm/seal/src/validators/base-validator.mjs.map +1 -1
  69. package/esm/seal/src/validators/boolean-validator.mjs +1 -0
  70. package/esm/seal/src/validators/boolean-validator.mjs.map +1 -1
  71. package/esm/seal/src/validators/date-validator.mjs +1 -0
  72. package/esm/seal/src/validators/date-validator.mjs.map +1 -1
  73. package/esm/seal/src/validators/float-validator.mjs.map +1 -1
  74. package/esm/seal/src/validators/int-validator.mjs.map +1 -1
  75. package/esm/seal/src/validators/literal-validator.mjs +1 -3
  76. package/esm/seal/src/validators/literal-validator.mjs.map +1 -1
  77. package/esm/seal/src/validators/methods/equality-conditional-methods.mjs.map +1 -1
  78. package/esm/seal/src/validators/methods/forbidden-methods.mjs.map +1 -1
  79. package/esm/seal/src/validators/methods/present-methods.mjs.map +1 -1
  80. package/esm/seal/src/validators/methods/required-methods.mjs.map +1 -1
  81. package/esm/seal/src/validators/number-validator.mjs +1 -0
  82. package/esm/seal/src/validators/number-validator.mjs.map +1 -1
  83. package/esm/seal/src/validators/numeric-validator.mjs.map +1 -1
  84. package/esm/seal/src/validators/object-validator.mjs +1 -1
  85. package/esm/seal/src/validators/object-validator.mjs.map +1 -1
  86. package/esm/seal/src/validators/record-validator.mjs.map +1 -1
  87. package/esm/seal/src/validators/scalar-validator.mjs +1 -0
  88. package/esm/seal/src/validators/scalar-validator.mjs.map +1 -1
  89. package/esm/seal/src/validators/string-validator.mjs.map +1 -1
  90. package/esm/seal/src/validators/tuple-validator.mjs.map +1 -1
  91. package/esm/seal/src/validators/union-validator.mjs.map +1 -1
  92. package/llms-full.txt +891 -891
  93. package/package.json +7 -7
  94. package/skills/configure-notifications/SKILL.md +138 -138
  95. package/skills/define-channel/SKILL.md +107 -107
  96. package/skills/define-notification/SKILL.md +133 -133
  97. package/skills/observe-notifications/SKILL.md +66 -66
  98. package/skills/queue-notifications/SKILL.md +110 -110
  99. package/skills/send-ad-hoc/SKILL.md +95 -95
  100. package/skills/use-in-app/SKILL.md +172 -172
  101. package/skills/write-notification-migration/SKILL.md +66 -66
  102. package/cjs/rabbitmq-driver-C0o3Pz15.cjs +0 -3
  103. package/cjs/src-DbAWktJm.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,18 @@ All notable changes to `@warlock.js/notifications` are documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). `@warlock.js/*` packages are released in lockstep — every package shares the same version number, so a version below may list only the changes that affected this package.
6
6
 
7
+ ## 5.25.0 - 2026-09-28
8
+
9
+ ### Changed
10
+
11
+ - Lockstep release; package APIs are unchanged.
12
+
13
+ ## 5.24.0 - 2026-09-27
14
+
15
+ ### Changed
16
+
17
+ - Lockstep release; package APIs are unchanged.
18
+
7
19
  ## 5.23.2 - 2026-09-26
8
20
 
9
21
  ### Changed
package/cjs/index.cjs CHANGED
@@ -988,7 +988,7 @@ Or with your preferred package manager:
988
988
  async function loadHerald() {
989
989
  if (heraldModule) return heraldModule;
990
990
  try {
991
- heraldModule = await Promise.resolve().then(() => require("./src-DbAWktJm.cjs"));
991
+ heraldModule = await Promise.resolve().then(() => require("./src-BVlqtCR2.cjs"));
992
992
  return heraldModule;
993
993
  } catch {
994
994
  throw new Error(INSTALL_INSTRUCTIONS);
@@ -0,0 +1,3 @@
1
+ const require_src = require('./src-BVlqtCR2.cjs');
2
+
3
+ exports.RabbitMQDriver = require_src.RabbitMQDriver;
@@ -1203,6 +1203,8 @@ var BaseValidator = class {
1203
1203
  shouldOmit = false;
1204
1204
  isNullable = false;
1205
1205
  isMutable = false;
1206
+ /** Treat empty or whitespace-only form strings as an absent value. */
1207
+ blankIsMissing = false;
1206
1208
  /**
1207
1209
  * Catch state — when `hasCatch` is true and validation fails, `catchValue`
1208
1210
  * (or its callback result) substitutes for the failed value, and the public
@@ -1495,8 +1497,10 @@ var BaseValidator = class {
1495
1497
  cloned.shouldOmit = this.shouldOmit;
1496
1498
  cloned.description = this.description;
1497
1499
  cloned.attributesText = { ...this.attributesText };
1500
+ cloned.translatedAttributes = { ...this.translatedAttributes };
1498
1501
  cloned.isNullable = this.isNullable;
1499
1502
  cloned.isOptional = this.isOptional;
1503
+ cloned.blankIsMissing = this.blankIsMissing;
1500
1504
  cloned.requiredRule = this.requiredRule;
1501
1505
  cloned.catchValue = this.catchValue;
1502
1506
  cloned.hasCatch = this.hasCatch;
@@ -1742,7 +1746,13 @@ var BaseValidator = class {
1742
1746
  errors: [],
1743
1747
  data: null
1744
1748
  };
1745
- const valueForRules = data ?? this.getDefaultValue();
1749
+ const isBlank = this.blankIsMissing && typeof data === "string" && data.trim() === "";
1750
+ if (isBlank && this.isNullable) return {
1751
+ isValid: true,
1752
+ errors: [],
1753
+ data: null
1754
+ };
1755
+ const valueForRules = (isBlank ? void 0 : data) ?? this.getDefaultValue();
1746
1756
  const mutatedData = this.isOptional && valueForRules === void 0 ? void 0 : await this.mutate(valueForRules, context);
1747
1757
  const errors = [];
1748
1758
  let isValid = true;
@@ -1781,6 +1791,7 @@ var BaseValidator = class {
1781
1791
  */
1782
1792
  setRuleAttributesList(rule) {
1783
1793
  rule.context.attributesList = typeof this.attributesText[rule.name] === "object" ? this.attributesText[rule.name] : this.attributesText;
1794
+ rule.context.translatedAttributes = this.translatedAttributes;
1784
1795
  }
1785
1796
  /**
1786
1797
  * Standard Schema V1 compliance.
@@ -5621,6 +5632,7 @@ var ArrayValidator = class extends BaseValidator {
5621
5632
  constructor(validator, errorMessage) {
5622
5633
  super();
5623
5634
  this.validator = validator;
5635
+ this.blankIsMissing = true;
5624
5636
  this.addMutableRule(arrayRule, errorMessage);
5625
5637
  }
5626
5638
  /**
@@ -6688,6 +6700,7 @@ var PrimitiveValidator = class extends BaseValidator {
6688
6700
  var BooleanValidator = class extends PrimitiveValidator {
6689
6701
  constructor(errorMessage) {
6690
6702
  super();
6703
+ this.blankIsMissing = true;
6691
6704
  this.addMutableRule(booleanRule, errorMessage);
6692
6705
  }
6693
6706
  /**
@@ -6961,6 +6974,7 @@ var ComputedValidator = class extends BaseValidator {
6961
6974
  var DateValidator = class extends BaseValidator {
6962
6975
  constructor(errorMessage) {
6963
6976
  super();
6977
+ this.blankIsMissing = true;
6964
6978
  this.addMutableMutator(dateMutator);
6965
6979
  this.addMutableRule(dateRule, errorMessage);
6966
6980
  }
@@ -7593,9 +7607,9 @@ var LiteralValidator = class extends BaseValidator {
7593
7607
  values;
7594
7608
  constructor(values, errorMessage) {
7595
7609
  super();
7610
+ this.blankIsMissing = true;
7596
7611
  this.values = values;
7597
7612
  this.addMutableRule(literalRule, errorMessage, { values });
7598
- if (values.some((value) => isEmptyValue(value))) this.requiredRule = this.createRule(presentRule);
7599
7613
  }
7600
7614
  /**
7601
7615
  * Check if value is one of the configured literals
@@ -7766,6 +7780,7 @@ var DiscriminatedUnionValidator = class DiscriminatedUnionValidator extends Base
7766
7780
  var NumberValidator = class extends PrimitiveValidator {
7767
7781
  constructor(errorMessage) {
7768
7782
  super();
7783
+ this.blankIsMissing = true;
7769
7784
  this.addMutableRule(numberRule, errorMessage);
7770
7785
  }
7771
7786
  /**
@@ -8600,7 +8615,7 @@ var ObjectValidator = class ObjectValidator extends BaseValidator {
8600
8615
  }
8601
8616
  const result = await super.validate(mutatedData, context);
8602
8617
  if (result.isValid === false) return result;
8603
- if (data === void 0) return result;
8618
+ if (mutatedData === void 0 || mutatedData === null) return result;
8604
8619
  const errors = [];
8605
8620
  const validatedData = {};
8606
8621
  const validationPromises = Object.entries(this.schema).filter(([, validator]) => !this.isComputedValidator(validator)).map(async ([key, validator]) => {
@@ -8851,6 +8866,7 @@ var RecordValidator = class extends BaseValidator {
8851
8866
  var ScalarValidator = class extends PrimitiveValidator {
8852
8867
  constructor(errorMessage) {
8853
8868
  super();
8869
+ this.blankIsMissing = true;
8854
8870
  this.addMutableRule({
8855
8871
  name: "scalar",
8856
8872
  defaultErrorMessage: "The :input must be a scalar value",
@@ -9696,7 +9712,7 @@ const v = {
9696
9712
  * Implementation is loosely typed; the public `ValidatorV.enum`
9697
9713
  * surface declares the precise overloads.
9698
9714
  */
9699
- enum: ((values, errorMessage) => Array.isArray(values) ? new StringValidator().oneOf(values, errorMessage) : new ScalarValidator().enum(values, errorMessage)),
9715
+ enum: ((values, errorMessage) => Array.isArray(values) ? new ScalarValidator().oneOf(values, errorMessage) : new ScalarValidator().enum(values, errorMessage)),
9700
9716
  /** Create a number validator */
9701
9717
  number: (errorMessage) => new NumberValidator(errorMessage),
9702
9718
  /** Create a numeric validator */
@@ -10794,7 +10810,7 @@ async function connectToBroker(options) {
10794
10810
  switch (driverType) {
10795
10811
  case "rabbitmq": {
10796
10812
  const rabbitOptions = options;
10797
- const { RabbitMQDriver } = await Promise.resolve().then(() => require("./rabbitmq-driver-C0o3Pz15.cjs"));
10813
+ const { RabbitMQDriver } = await Promise.resolve().then(() => require("./rabbitmq-driver-DvWaCPES.cjs"));
10798
10814
  driver = new RabbitMQDriver(rabbitOptions);
10799
10815
  break;
10800
10816
  }
@@ -11118,4 +11134,4 @@ exports.heraldChannel = heraldChannel;
11118
11134
  exports.pendingSubscribers = pendingSubscribers;
11119
11135
  exports.publishEvent = publishEvent;
11120
11136
  exports.subscribeConsumer = subscribeConsumer;
11121
- //# sourceMappingURL=src-DbAWktJm.cjs.map
11137
+ //# sourceMappingURL=src-BVlqtCR2.cjs.map