mailery 0.8.1 → 0.9.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.
package/dist/index.cjs CHANGED
@@ -897,7 +897,7 @@ var BullDriver = class _BullDriver {
897
897
  bullQueues;
898
898
  workers = null;
899
899
  bull;
900
- static async create(redisConfig) {
900
+ static async create(redisConfig, prefix) {
901
901
  let bull;
902
902
  try {
903
903
  bull = await import('bullmq');
@@ -906,14 +906,22 @@ var BullDriver = class _BullDriver {
906
906
  "mailery: queue driver 'bull' requires the 'bullmq' peer dependency. Run `npm install bullmq ioredis`."
907
907
  );
908
908
  }
909
+ if (prefix?.includes(":")) {
910
+ throw new Error(
911
+ `mailery: queue prefix "${prefix}" must not contain ':' \u2014 BullMQ uses it as the Redis key separator.`
912
+ );
913
+ }
909
914
  const redis = isRedisLike(redisConfig) ? redisConfig : connect(redisConfig);
910
- return new _BullDriver(bull, redis);
915
+ return new _BullDriver(bull, redis, prefix);
911
916
  }
912
- constructor(bull, redis) {
917
+ prefix;
918
+ constructor(bull, redis, prefix) {
913
919
  this.bull = bull;
914
920
  this.redis = redis;
921
+ this.prefix = prefix;
915
922
  const opts = {
916
923
  connection: redis,
924
+ prefix,
917
925
  defaultJobOptions: {
918
926
  removeOnComplete: { age: 24 * 3600, count: 1e3 },
919
927
  removeOnFail: { age: 7 * 24 * 3600 }
@@ -945,7 +953,7 @@ var BullDriver = class _BullDriver {
945
953
  }
946
954
  async startWorkers(opts) {
947
955
  if (this.workers) return;
948
- const base = { connection: this.redis };
956
+ const base = { connection: this.redis, prefix: this.prefix };
949
957
  const { Worker } = this.bull;
950
958
  const tick = new Worker(
951
959
  QUEUE_NAMES.tick,
@@ -1197,7 +1205,7 @@ var NoopDriver = class {
1197
1205
  async function createQueueDriver(config, fallbackDb) {
1198
1206
  switch (config.driver) {
1199
1207
  case "bull":
1200
- return BullDriver.create(config.redis);
1208
+ return BullDriver.create(config.redis, config.prefix);
1201
1209
  case "agenda":
1202
1210
  return AgendaDriver.create({
1203
1211
  db: config.db ?? fallbackDb,
@@ -3941,6 +3949,7 @@ var Mailer = class _Mailer {
3941
3949
  * MAILER_MONGODB_URI — Mongo connection string (required)
3942
3950
  * MAILER_MONGODB_DB — database name (optional; defaults to the URI default)
3943
3951
  * MAILER_REDIS_URL — Redis connection URL (required)
3952
+ * MAILER_QUEUE_PREFIX — Redis key prefix to namespace this instance (optional)
3944
3953
  * MAILER_PUBLIC_URL — base for tracking/unsub URLs (required)
3945
3954
  * MAILER_UNSUBSCRIBE_SECRET — HMAC key (required)
3946
3955
  * MAILER_SENDER_ADDRESS — postal address for CAN-SPAM (optional)
@@ -3989,7 +3998,11 @@ var Mailer = class _Mailer {
3989
3998
  }
3990
3999
  const defaultProvider = env.MAILER_DEFAULT_PROVIDER ?? Object.keys(providers)[0];
3991
4000
  const driverEnv = env.MAILER_QUEUE_DRIVER ?? "bull";
3992
- const queue = driverEnv === "agenda" ? { driver: "agenda" } : driverEnv === "noop" ? { driver: "noop" } : { driver: "bull", redis: { url: required("MAILER_REDIS_URL") } };
4001
+ const queue = driverEnv === "agenda" ? { driver: "agenda" } : driverEnv === "noop" ? { driver: "noop" } : {
4002
+ driver: "bull",
4003
+ redis: { url: required("MAILER_REDIS_URL") },
4004
+ prefix: env.MAILER_QUEUE_PREFIX
4005
+ };
3993
4006
  return _Mailer.init({
3994
4007
  db,
3995
4008
  adapter,
@@ -7538,7 +7551,7 @@ var DEDUPE_POLICIES = [
7538
7551
  ];
7539
7552
 
7540
7553
  // src/server/index.ts
7541
- var VERSION = "0.8.1";
7554
+ var VERSION = "0.9.0" ;
7542
7555
 
7543
7556
  exports.DEDUPE_POLICIES = DEDUPE_POLICIES;
7544
7557
  exports.FLOW_STEP_KINDS = FLOW_STEP_KINDS;