@spinajs/queue 2.0.481 → 2.0.482

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 (83) hide show
  1. package/lib/cjs/config/queue.d.ts +10 -0
  2. package/lib/cjs/config/queue.d.ts.map +1 -1
  3. package/lib/cjs/config/queue.js +21 -0
  4. package/lib/cjs/config/queue.js.map +1 -1
  5. package/lib/cjs/decorators.d.ts.map +1 -1
  6. package/lib/cjs/decorators.js.map +1 -1
  7. package/lib/cjs/fp.d.ts.map +1 -1
  8. package/lib/cjs/fp.js.map +1 -1
  9. package/lib/cjs/index.d.ts +13 -2
  10. package/lib/cjs/index.d.ts.map +1 -1
  11. package/lib/cjs/index.js +103 -14
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/interfaces.d.ts +178 -7
  14. package/lib/cjs/interfaces.d.ts.map +1 -1
  15. package/lib/cjs/interfaces.js +59 -11
  16. package/lib/cjs/interfaces.js.map +1 -1
  17. package/lib/cjs/migrations/Queue_2026_06_30_00_00_00.d.ts +10 -0
  18. package/lib/cjs/migrations/Queue_2026_06_30_00_00_00.d.ts.map +1 -0
  19. package/lib/cjs/migrations/Queue_2026_06_30_00_00_00.js +29 -0
  20. package/lib/cjs/migrations/Queue_2026_06_30_00_00_00.js.map +1 -0
  21. package/lib/cjs/migrations/Queue_2026_07_02_00_00_00.d.ts +14 -0
  22. package/lib/cjs/migrations/Queue_2026_07_02_00_00_00.d.ts.map +1 -0
  23. package/lib/cjs/migrations/Queue_2026_07_02_00_00_00.js +53 -0
  24. package/lib/cjs/migrations/Queue_2026_07_02_00_00_00.js.map +1 -0
  25. package/lib/cjs/migrations/Queue_2026_07_10_00_00_00.d.ts +10 -0
  26. package/lib/cjs/migrations/Queue_2026_07_10_00_00_00.d.ts.map +1 -0
  27. package/lib/cjs/migrations/Queue_2026_07_10_00_00_00.js +31 -0
  28. package/lib/cjs/migrations/Queue_2026_07_10_00_00_00.js.map +1 -0
  29. package/lib/cjs/migrations/Queue_2026_07_17_00_00_00.d.ts +16 -0
  30. package/lib/cjs/migrations/Queue_2026_07_17_00_00_00.d.ts.map +1 -0
  31. package/lib/cjs/migrations/Queue_2026_07_17_00_00_00.js +49 -0
  32. package/lib/cjs/migrations/Queue_2026_07_17_00_00_00.js.map +1 -0
  33. package/lib/cjs/models/JobModel.d.ts +66 -4
  34. package/lib/cjs/models/JobModel.d.ts.map +1 -1
  35. package/lib/cjs/models/JobModel.js +43 -2
  36. package/lib/cjs/models/JobModel.js.map +1 -1
  37. package/lib/cjs/services/JobRetentionService.d.ts +26 -0
  38. package/lib/cjs/services/JobRetentionService.d.ts.map +1 -0
  39. package/lib/cjs/services/JobRetentionService.js +87 -0
  40. package/lib/cjs/services/JobRetentionService.js.map +1 -0
  41. package/lib/mjs/config/queue.d.ts +10 -0
  42. package/lib/mjs/config/queue.d.ts.map +1 -1
  43. package/lib/mjs/config/queue.js +21 -0
  44. package/lib/mjs/config/queue.js.map +1 -1
  45. package/lib/mjs/decorators.d.ts.map +1 -1
  46. package/lib/mjs/decorators.js.map +1 -1
  47. package/lib/mjs/fp.d.ts.map +1 -1
  48. package/lib/mjs/fp.js.map +1 -1
  49. package/lib/mjs/index.d.ts +13 -2
  50. package/lib/mjs/index.d.ts.map +1 -1
  51. package/lib/mjs/index.js +105 -16
  52. package/lib/mjs/index.js.map +1 -1
  53. package/lib/mjs/interfaces.d.ts +178 -7
  54. package/lib/mjs/interfaces.d.ts.map +1 -1
  55. package/lib/mjs/interfaces.js +57 -10
  56. package/lib/mjs/interfaces.js.map +1 -1
  57. package/lib/mjs/migrations/Queue_2026_06_30_00_00_00.d.ts +10 -0
  58. package/lib/mjs/migrations/Queue_2026_06_30_00_00_00.d.ts.map +1 -0
  59. package/lib/mjs/migrations/Queue_2026_06_30_00_00_00.js +26 -0
  60. package/lib/mjs/migrations/Queue_2026_06_30_00_00_00.js.map +1 -0
  61. package/lib/mjs/migrations/Queue_2026_07_02_00_00_00.d.ts +14 -0
  62. package/lib/mjs/migrations/Queue_2026_07_02_00_00_00.d.ts.map +1 -0
  63. package/lib/mjs/migrations/Queue_2026_07_02_00_00_00.js +50 -0
  64. package/lib/mjs/migrations/Queue_2026_07_02_00_00_00.js.map +1 -0
  65. package/lib/mjs/migrations/Queue_2026_07_10_00_00_00.d.ts +10 -0
  66. package/lib/mjs/migrations/Queue_2026_07_10_00_00_00.d.ts.map +1 -0
  67. package/lib/mjs/migrations/Queue_2026_07_10_00_00_00.js +28 -0
  68. package/lib/mjs/migrations/Queue_2026_07_10_00_00_00.js.map +1 -0
  69. package/lib/mjs/migrations/Queue_2026_07_17_00_00_00.d.ts +16 -0
  70. package/lib/mjs/migrations/Queue_2026_07_17_00_00_00.d.ts.map +1 -0
  71. package/lib/mjs/migrations/Queue_2026_07_17_00_00_00.js +46 -0
  72. package/lib/mjs/migrations/Queue_2026_07_17_00_00_00.js.map +1 -0
  73. package/lib/mjs/models/JobModel.d.ts +66 -4
  74. package/lib/mjs/models/JobModel.d.ts.map +1 -1
  75. package/lib/mjs/models/JobModel.js +42 -2
  76. package/lib/mjs/models/JobModel.js.map +1 -1
  77. package/lib/mjs/services/JobRetentionService.d.ts +26 -0
  78. package/lib/mjs/services/JobRetentionService.d.ts.map +1 -0
  79. package/lib/mjs/services/JobRetentionService.js +84 -0
  80. package/lib/mjs/services/JobRetentionService.js.map +1 -0
  81. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  82. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  83. package/package.json +9 -6
@@ -5,6 +5,16 @@ declare const queue: {
5
5
  name: string;
6
6
  service: string;
7
7
  }[];
8
+ deduplicate: boolean;
9
+ retention: {
10
+ service: string;
11
+ enabled: boolean;
12
+ interval: number;
13
+ };
14
+ progress: {
15
+ minDelta: number;
16
+ minInterval: number;
17
+ };
8
18
  };
9
19
  };
10
20
  export default queue;
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;CAaV,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,KAAK;;;;;;;;;;;;;;;;;;CAqCV,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -12,6 +12,27 @@ const queue = {
12
12
  service: 'BlackHoleQueueClient',
13
13
  },
14
14
  ],
15
+ // Skip re-executing a job whose tracking row ( queue_jobs ) is already terminal
16
+ // ( success / error / dead ). Messaging is at-least-once, so duplicates happen on
17
+ // consumer crash and broker failover - dedup keeps jobs idempotent. Defaults to true.
18
+ deduplicate: true,
19
+ // Periodic cleanup of tracked jobs ( queue_jobs rows ). The `service` selects the
20
+ // JobRetentionService implementation; swap it to plug in a custom purge strategy.
21
+ // Disabled by default - set `enabled: true` and a `maxAge` ( ms ) to opt in.
22
+ retention: {
23
+ service: 'DefaultJobRetentionService',
24
+ enabled: false,
25
+ interval: 60 * 60 * 1000, // how often ( ms ) to run the purge
26
+ // maxAge: 7 * 24 * 60 * 60 * 1000, // delete terminal jobs older than this ( ms )
27
+ // statuses: ['success', 'error', 'dead'], // which statuses to purge
28
+ },
29
+ // Throttle job progress persistence so a chatty job doesn't write to the DB on every
30
+ // callback. A non-final, meta-less progress update is skipped unless it moved at least
31
+ // `minDelta` % or `minInterval` ms have passed since the last persisted write.
32
+ progress: {
33
+ minDelta: 5, // minimum progress delta ( % ) between throttled writes
34
+ minInterval: 1000, // minimum time ( ms ) between throttled writes
35
+ },
15
36
  },
16
37
  };
17
38
  exports.default = queue;
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE;QACL,kDAAkD;QAClD,gEAAgE;QAChE,sEAAsE;QACtE,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,sBAAsB;aAChC;SACF;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":";;AAAA,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE;QACL,kDAAkD;QAClD,gEAAgE;QAChE,sEAAsE;QACtE,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,sBAAsB;aAChC;SACF;QAED,gFAAgF;QAChF,kFAAkF;QAClF,sFAAsF;QACtF,WAAW,EAAE,IAAI;QAEjB,kFAAkF;QAClF,kFAAkF;QAClF,6EAA6E;QAC7E,SAAS,EAAE;YACT,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,oCAAoC;YAC9D,kFAAkF;YAClF,qEAAqE;SACtE;QAED,qFAAqF;QACrF,uFAAuF;QACvF,+EAA+E;QAC/E,QAAQ,EAAE;YACR,QAAQ,EAAE,CAAC,EAAE,wDAAwD;YACrE,WAAW,EAAE,IAAI,EAAE,+CAA+C;SACnE;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,KACT,QAAQ,GAAG,UAWpB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,IAClC,QAAQ,GAAG,UAYpB"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,KACT,QAAQ,GAAG,UAWpB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,IAClC,QAAQ,GAAG,UAYpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":";;AAcA,kBAYC;AAOD,sBAaC;AAtCD;;;;;GAKG;AACH,SAAgB,GAAG;IACjB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf;gBACE,IAAI,EAAE,KAAK;aACZ,EACD,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAC,OAAsB;IAC1C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf;gBACE,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO;aACd,EACD,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.ts"],"names":[],"mappings":";;AAaA,kBAYC;AAOD,sBAaC;AAtCD;;;;;GAKG;AACH,SAAgB,GAAG;IACjB,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf;gBACE,IAAI,EAAE,KAAK;aACZ,EACD,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,KAAK,CAAC,OAAsB;IAC1C,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,cAAc,CACpB,eAAe,EACf;gBACE,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO;aACd,EACD,MAAM,CACP,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAIpF,wBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAKrF"}
1
+ {"version":3,"file":"fp.d.ts","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,iBAAiB,CAAC;AAIpF,wBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAErF"}
package/lib/cjs/fp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":";;AAIA,kBAKC;AATD,mDAAoF;AACpF,wCAAuC;AACvC,oCAAuC;AAEvC,SAAgB,GAAG,CAAC,KAA4C;IAC9D,OAAO,GAAG,EAAE,CAAC,IAAA,aAAM,EACjB,IAAA,aAAQ,EAAC,4BAAY,CAAC,EACtB,CAAC,OAAqB,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fp.js","sourceRoot":"","sources":["../../src/fp.ts"],"names":[],"mappings":";;AAIA,kBAEC;AAND,mDAAoF;AACpF,wCAAuC;AACvC,oCAAuC;AAEvC,SAAgB,GAAG,CAAC,KAA4C;IAC9D,OAAO,GAAG,EAAE,CAAC,IAAA,aAAM,EAAC,IAAA,aAAQ,EAAC,4BAAY,CAAC,EAAE,CAAC,OAAqB,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC"}
@@ -1,17 +1,28 @@
1
1
  import { Constructor } from '@spinajs/di';
2
2
  import { Log } from '@spinajs/log';
3
- import { QueueClient, QueueJob, QueueEvent, IQueueMessage, QueueMessage, QueueService } from './interfaces.js';
3
+ import { QueueClient, QueueJob, QueueEvent, IQueueMessage, QueueMessage, QueueService, JobRetentionService } from './interfaces.js';
4
4
  export * from './BlackHoleQueueClient.js';
5
5
  export * from './interfaces.js';
6
6
  export * from './decorators.js';
7
7
  export * from './models/JobModel.js';
8
+ export * from './services/JobRetentionService.js';
8
9
  export * from './migrations/Queue_2022_10_18_01_13_00.js';
10
+ export * from './migrations/Queue_2026_06_30_00_00_00.js';
11
+ export * from './migrations/Queue_2026_07_02_00_00_00.js';
12
+ export * from './migrations/Queue_2026_07_10_00_00_00.js';
13
+ export * from './migrations/Queue_2026_07_17_00_00_00.js';
9
14
  export * from './fp.js';
10
15
  export declare class DefaultQueueService extends QueueService {
11
16
  protected Log: Log;
12
17
  protected Connections: Map<string, QueueClient>;
18
+ /**
19
+ * Config-selected retention service that periodically purges old tracked jobs.
20
+ * Started / stopped by DI on injection / disposal. May be undefined if retention
21
+ * is not configured.
22
+ */
23
+ protected Retention?: JobRetentionService;
13
24
  dispose(): Promise<void>;
14
- emit(event: IQueueMessage | QueueEvent | QueueJob): Promise<void>;
25
+ emit(event: IQueueMessage | QueueEvent | QueueJob): Promise<string | undefined>;
15
26
  stopConsuming(event: Constructor<QueueMessage>): Promise<void>;
16
27
  /**
17
28
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAS,MAAM,iBAAiB,CAAC;AAMtH,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,SAAS,CAAC;AAExB,qBACa,mBAAoB,SAAQ,YAAY;IAEnD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEnC,OAAO;IAYP,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ;IA6BjD,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC;IAI3D;;;;;;;;;;;;;;;OAeG;IACU,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAuFnK;;;;OAIG;IACI,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;CAG7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAoB,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAS,MAAM,iBAAiB,CAAC;AAM7J,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,SAAS,CAAC;AAMxB,qBACa,mBAAoB,SAAQ,YAAY;IAEnD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEhD;;;;OAIG;IAEH,SAAS,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAE7B,OAAO;IAoBP,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAwB/E,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC;IAI3D;;;;;;;;;;;;;;;OAeG;IACU,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAwKnK;;;;OAIG;IACI,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;CAG7C"}
package/lib/cjs/index.js CHANGED
@@ -36,10 +36,26 @@ __exportStar(require("./BlackHoleQueueClient.js"), exports);
36
36
  __exportStar(require("./interfaces.js"), exports);
37
37
  __exportStar(require("./decorators.js"), exports);
38
38
  __exportStar(require("./models/JobModel.js"), exports);
39
+ __exportStar(require("./services/JobRetentionService.js"), exports);
39
40
  __exportStar(require("./migrations/Queue_2022_10_18_01_13_00.js"), exports);
41
+ __exportStar(require("./migrations/Queue_2026_06_30_00_00_00.js"), exports);
42
+ __exportStar(require("./migrations/Queue_2026_07_02_00_00_00.js"), exports);
43
+ __exportStar(require("./migrations/Queue_2026_07_10_00_00_00.js"), exports);
44
+ __exportStar(require("./migrations/Queue_2026_07_17_00_00_00.js"), exports);
40
45
  __exportStar(require("./fp.js"), exports);
46
+ /** Fallback progress-throttle values used when `queue.progress` is not configured. */
47
+ const DEFAULT_PROGRESS_MIN_DELTA = 5;
48
+ const DEFAULT_PROGRESS_MIN_INTERVAL_MS = 1000;
41
49
  let DefaultQueueService = class DefaultQueueService extends interfaces_js_1.QueueService {
42
50
  async dispose() {
51
+ if (this.Retention) {
52
+ try {
53
+ await this.Retention.dispose();
54
+ }
55
+ catch (err) {
56
+ this.Log.error(err, 'Cannot dispose job retention service');
57
+ }
58
+ }
43
59
  this.Connections.forEach(async (val) => {
44
60
  try {
45
61
  await val.dispose();
@@ -52,24 +68,21 @@ let DefaultQueueService = class DefaultQueueService extends interfaces_js_1.Queu
52
68
  }
53
69
  async emit(event) {
54
70
  const connections = this.getConnectionsForMessage(event);
71
+ let jobId;
55
72
  for (let c of connections) {
56
73
  const connection = this.Connections.get(c);
57
74
  if (!connection) {
58
75
  throw new exceptions_1.ConnectionNotFound(`Queue connection ${c} not found. Please check your configuration before emitting events to this connection.`);
59
76
  }
60
77
  if ((0, interfaces_js_1.isJob)(event)) {
61
- const jModel = new JobModel_js_1.JobModel();
62
- jModel.JobId = (0, uuid_1.v4)();
63
- jModel.Name = event.Name;
64
- jModel.Status = 'created';
65
- jModel.Progress = 0;
66
- jModel.Connection = c;
67
- await jModel.insert();
68
- event.JobId = jModel.JobId;
78
+ event.JobId = event.JobId ?? (0, uuid_1.v4)(); // generate only; consumer writes the row
79
+ jobId = event.JobId;
69
80
  }
70
81
  await connection.emit(event);
71
82
  this.Log.trace(`Emitted message ${event.Name}, type: ${event.Type} to connection ${c}`);
72
83
  }
84
+ // for jobs this is the id the caller uses to track progress / status
85
+ return jobId;
73
86
  }
74
87
  async stopConsuming(event) {
75
88
  this.getConnectionsForMessage(event).forEach((c) => this.Connections.get(c).unsubscribe(event));
@@ -116,9 +129,46 @@ let DefaultQueueService = class DefaultQueueService extends interfaces_js_1.Queu
116
129
  */
117
130
  if (ev instanceof interfaces_js_1.QueueJob) {
118
131
  let jobResult = null;
119
- const jModel = await JobModel_js_1.JobModel.where({ JobId: ev.JobId }).firstOrThrow(new exceptions_1.UnexpectedServerError(`No model found for jobId ${ev.JobId}`));
132
+ // Consumer owns the tracking row. First receipt inserts; a redelivery finds the
133
+ // row from the prior attempt. The queue_jobs.JobId unique index makes a rare
134
+ // concurrent double-receipt safe (second insert collides -> re-read).
135
+ let jModel = await JobModel_js_1.JobModel.where({ JobId: ev.JobId }).first();
136
+ if (!jModel) {
137
+ jModel = new JobModel_js_1.JobModel();
138
+ jModel.JobId = ev.JobId;
139
+ jModel.Name = ev.Name;
140
+ jModel.Connection = c;
141
+ jModel.Attempt = 0;
142
+ jModel.Progress = 0;
143
+ // set Status explicitly so tracking never depends on the DB column default,
144
+ // which can differ across dialects ( and MySQL MODIFY COLUMN can drop it ).
145
+ jModel.Status = 'created';
146
+ // capture the dispatch-time attempt ceiling ( retries + 1 ) so it stays authoritative
147
+ // across redeliveries and consumers can render Attempt/MaxAttempts consistently.
148
+ jModel.MaxAttempts = (ev.RetryCount ?? 0) + 1;
149
+ try {
150
+ await jModel.insert();
151
+ }
152
+ catch (e) {
153
+ // concurrent first-receipt from another worker won the insert; re-read and continue.
154
+ jModel = await JobModel_js_1.JobModel.where({ JobId: ev.JobId }).firstOrThrow(new exceptions_1.UnexpectedServerError(`No model found for jobId ${ev.JobId}`));
155
+ }
156
+ }
157
+ // at-least-once delivery means a job can be redelivered after it already finished
158
+ // ( consumer crash before ack, broker failover ). Skip re-running a job whose tracking
159
+ // row is already terminal so jobs stay idempotent. Acks without re-execution or rethrow.
160
+ if ((this.Configuration?.deduplicate ?? true) && JobModel_js_1.JOB_TERMINAL_STATUSES.includes(jModel.Status)) {
161
+ this.Log.info(`Job ${ev.Name}:${ev.JobId} already in terminal state ${jModel.Status}, skipping duplicate delivery`);
162
+ return;
163
+ }
120
164
  jModel.Status = 'executing';
121
165
  jModel.ExecutedAt = luxon_1.DateTime.now();
166
+ // throttle progress persistence: skip writes smaller than the threshold and
167
+ // closer together than the min interval, so a chatty job doesn't hammer the DB.
168
+ let lastProgress = 0;
169
+ let lastProgressAt = 0;
170
+ const minProgressDelta = this.Configuration.progress?.minDelta ?? DEFAULT_PROGRESS_MIN_DELTA;
171
+ const minProgressInterval = this.Configuration.progress?.minInterval ?? DEFAULT_PROGRESS_MIN_INTERVAL_MS;
122
172
  try {
123
173
  // update executing state
124
174
  await jModel.update();
@@ -131,13 +181,48 @@ let DefaultQueueService = class DefaultQueueService extends interfaces_js_1.Queu
131
181
  }
132
182
  catch (err) {
133
183
  this.Log.error(err, `Cannot execute job ${event.name}`);
134
- jModel.Result = {
135
- message: err.message,
136
- };
137
- jModel.Status = 'error';
184
+ // record the failed attempt and mark the job retrying / dead so the
185
+ // transport can apply its retry-then-dead-letter policy ( re-thrown below ).
186
+ // the error goes to LastError - Result is reserved for the successful output.
187
+ jModel.Attempt = (jModel.Attempt ?? 0) + 1;
188
+ // derive the retry limit from the dispatch-time ceiling captured on the row so it stays
189
+ // authoritative across redeliveries ( a redelivered wire message could carry a different
190
+ // RetryCount ). MaxAttempts is retries + 1, so the limit is MaxAttempts - 1.
191
+ const maxRetries = jModel.MaxAttempts ? jModel.MaxAttempts - 1 : (ev.RetryCount ?? 0);
192
+ jModel.Status = jModel.Attempt > maxRetries ? 'dead' : 'retrying';
193
+ jModel.LastError = err instanceof Error ? err.message : String(err);
194
+ await jModel.update();
195
+ // notify the job of the failed attempt ( e.g. to send an alert on the final one ).
196
+ // the hook must never mask the original error, so its own failure is only logged.
197
+ try {
198
+ await ev.onFailed(err, { attempt: jModel.Attempt, maxAttempts: jModel.MaxAttempts ?? maxRetries + 1, isFinal: jModel.Status === 'dead', jobId: ev.JobId });
199
+ }
200
+ catch (hookErr) {
201
+ this.Log.error(hookErr, `onFailed hook for job ${event.name} threw`);
202
+ }
203
+ // propagate so the transport sees the failure and can retry / dead-letter.
204
+ // ( previously the error was swallowed and the message silently acked )
205
+ throw err;
138
206
  }
139
207
  await jModel.update();
140
- async function onProgress(p) {
208
+ async function onProgress(p, meta) {
209
+ const now = luxon_1.DateTime.now().toMillis();
210
+ const isFinal = p >= 100;
211
+ const hasMeta = meta?.phase !== undefined || meta?.message !== undefined;
212
+ // apply meta eagerly so a phase / message change is never lost to throttling
213
+ if (meta?.phase !== undefined) {
214
+ jModel.Phase = meta.phase;
215
+ }
216
+ if (meta?.message !== undefined) {
217
+ jModel.Message = meta.message;
218
+ }
219
+ // always persist the final 100% or a meta change; otherwise throttle by delta + time
220
+ if (!isFinal && !hasMeta && p - lastProgress < minProgressDelta && now - lastProgressAt < minProgressInterval) {
221
+ jModel.Progress = p;
222
+ return;
223
+ }
224
+ lastProgress = p;
225
+ lastProgressAt = now;
141
226
  jModel.Progress = p;
142
227
  await jModel.update();
143
228
  self.Log.trace(`Job ${event.name}:${jModel.JobId} progress: ${p}%`);
@@ -172,6 +257,10 @@ __decorate([
172
257
  (0, configuration_1.AutoinjectService)('queue.connections', interfaces_js_1.QueueClient),
173
258
  __metadata("design:type", Map)
174
259
  ], DefaultQueueService.prototype, "Connections", void 0);
260
+ __decorate([
261
+ (0, configuration_1.AutoinjectService)('queue.retention', interfaces_js_1.JobRetentionService),
262
+ __metadata("design:type", interfaces_js_1.JobRetentionService)
263
+ ], DefaultQueueService.prototype, "Retention", void 0);
175
264
  exports.DefaultQueueService = DefaultQueueService = __decorate([
176
265
  (0, di_1.Injectable)(interfaces_js_1.QueueService)
177
266
  ], DefaultQueueService);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,12 @@ export interface IQueueJob extends IQueueMessage {
34
34
  }
35
35
  export declare abstract class QueueService extends AsyncService {
36
36
  protected Configuration: IQueueConfiguration;
37
- abstract emit(event: IQueueMessage | QueueEvent | QueueJob): Promise<void>;
37
+ /**
38
+ * Emit a message. For jobs the generated JobId is returned so the caller can
39
+ * correlate the job with its progress/status (e.g. via queue-http-progress).
40
+ * Returns undefined for non-job messages.
41
+ */
42
+ abstract emit(event: IQueueMessage | QueueEvent | QueueJob): Promise<string | undefined>;
38
43
  abstract consume<T extends QueueMessage>(event: Constructor<QueueMessage>, callback?: (message: T) => Promise<void>, subscriptionId?: string, durable?: boolean): Promise<void>;
39
44
  abstract stopConsuming(event: Constructor<QueueMessage>): Promise<void>;
40
45
  abstract get(connection?: string): QueueClient;
@@ -88,6 +93,35 @@ export declare abstract class QueueEvent extends QueueMessage {
88
93
  *
89
94
  * Job results are preserved
90
95
  */
96
+ /**
97
+ * Optional richer progress metadata a job may report alongside the numeric
98
+ * percentage - persisted to the job model and exposed by queue-http-progress.
99
+ */
100
+ export interface IJobProgressMeta {
101
+ /** Short phase label, e.g. `loading`, `rendering`. */
102
+ phase?: string;
103
+ /** Human-facing status message. */
104
+ message?: string;
105
+ }
106
+ /**
107
+ * Progress reporter passed to {@link QueueJob.execute}. Call with a 0-100
108
+ * percentage; the optional `meta` carries a phase label / message. Jobs that
109
+ * only report a percentage can ignore `meta`.
110
+ */
111
+ export type JobProgressCallback = (p: number, meta?: IJobProgressMeta) => Promise<void>;
112
+ /**
113
+ * Context passed to {@link QueueJob.onFailed} describing the failed attempt.
114
+ */
115
+ export interface IJobFailureContext {
116
+ /** The attempt number that just failed ( 1-based ). */
117
+ attempt: number;
118
+ /** The total allowed executions ( retries + 1 ). */
119
+ maxAttempts: number;
120
+ /** True when this failure exhausted the retries and the job was marked dead. */
121
+ isFinal: boolean;
122
+ /** The failed job's JobId. */
123
+ jobId: string;
124
+ }
91
125
  export declare abstract class QueueJob extends QueueMessage implements IQueueJob {
92
126
  JobId: string;
93
127
  /**
@@ -95,8 +129,18 @@ export declare abstract class QueueJob extends QueueMessage implements IQueueJob
95
129
  */
96
130
  RetryCount: number;
97
131
  constructor();
98
- abstract execute(progress: (p: number) => Promise<void>): Promise<unknown>;
99
- static emit<T extends typeof QueueMessage>(this: T, val: Partial<InstanceType<T>>, options?: IMessageOptions): Promise<void>;
132
+ abstract execute(progress: JobProgressCallback): Promise<unknown>;
133
+ /**
134
+ * Called by the consumer after a failed execute(); isFinal=true when the job was marked dead.
135
+ * Must not throw - errors are logged and swallowed. Override to react to failures ( e.g. send an
136
+ * alert on the final attempt ). No-op by default.
137
+ */
138
+ onFailed(_err: unknown, _ctx: IJobFailureContext): Promise<void>;
139
+ /**
140
+ * Emit (enqueue) this job. Returns the generated JobId so the caller can track
141
+ * the job's progress / status (e.g. via queue-http-progress `:jobId/status`).
142
+ */
143
+ static emit<T extends typeof QueueMessage>(this: T, val: Partial<InstanceType<T>>, options?: IMessageOptions): Promise<string | undefined>;
100
144
  }
101
145
  export declare abstract class QueueClient extends AsyncService implements IInstanceCheck, IMappableService {
102
146
  Options: IQueueConnectionOptions;
@@ -108,9 +152,14 @@ export declare abstract class QueueClient extends AsyncService implements IInsta
108
152
  __checkInstance__(creationOptions: any): boolean;
109
153
  /**
110
154
  *
111
- * Dispatches event to queue
155
+ * Dispatches a message to the broker.
112
156
  *
113
- * @param event - event to dispatch
157
+ * Delivery-guarantee contract: the returned promise MUST resolve only once the broker has
158
+ * taken custody of the message ( AMQP publisher confirm / STOMP RECEIPT frame ), so callers
159
+ * emitting persistent Jobs get an at-least-once guarantee. Fire-and-forget publishing is only
160
+ * acceptable for non-persistent Events.
161
+ *
162
+ * @param event - message to dispatch
114
163
  */
115
164
  abstract emit(event: IQueueMessage): Promise<void>;
116
165
  /**
@@ -128,8 +177,17 @@ export declare abstract class QueueClient extends AsyncService implements IInsta
128
177
  * @param durable - is durable event ?
129
178
  */
130
179
  abstract subscribe(channel: string, callback: (e: IQueueMessage) => Promise<void>, subscriptionId?: string, durable?: boolean): Promise<void>;
131
- abstract unsubscribe(event: Constructor<QueueMessage>): void;
132
- abstract unsubscribe(channel: string): void;
180
+ abstract unsubscribe(event: Constructor<QueueMessage>, removeDurable?: boolean): void;
181
+ abstract unsubscribe(channel: string, removeDurable?: boolean): void;
182
+ /**
183
+ *
184
+ * Gets dead-letter channel for message from routing table or connection default if non is set.
185
+ * Used by transports to redirect messages that failed processing so they don't block the queue.
186
+ *
187
+ * @param event - event/job to check
188
+ * @returns the dead-letter channel, or undefined if none is configured
189
+ */
190
+ getDeadLetterChannelForMessage(event: IQueueMessage | Constructor<QueueMessage>): string | undefined;
133
191
  /**
134
192
  *
135
193
  * Gets event channel from routing table or default if non is set
@@ -154,6 +212,78 @@ export interface IQueueConfiguration {
154
212
  */
155
213
  routing?: IQueueMessageRoutingOptions;
156
214
  connections: IQueueConnectionOptions[];
215
+ /**
216
+ * Skip re-executing a job whose {@link JobModel} is already in a terminal state
217
+ * ( `success` or `dead` ). Messaging is at-least-once, so duplicates happen on
218
+ * consumer crash and on broker failover - dedup keeps jobs idempotent.
219
+ *
220
+ * Defaults to `true`.
221
+ */
222
+ deduplicate?: boolean;
223
+ /**
224
+ * Automatic cleanup of old tracked jobs ( {@link JobModel} rows ) so the table doesn't
225
+ * grow unbounded. Disabled by default - opt in to avoid silently deleting data.
226
+ */
227
+ retention?: IQueueRetentionOptions;
228
+ /**
229
+ * Throttling of job progress persistence, so a chatty job that reports progress
230
+ * frequently doesn't hammer the DB with a write per callback.
231
+ */
232
+ progress?: IQueueProgressOptions;
233
+ }
234
+ export interface IQueueProgressOptions {
235
+ /**
236
+ * Minimum progress delta ( % ) between throttled DB writes. Default `5`.
237
+ */
238
+ minDelta?: number;
239
+ /**
240
+ * Minimum time ( ms ) between throttled DB writes. Default `1000`.
241
+ */
242
+ minInterval?: number;
243
+ }
244
+ export interface IQueueRetentionOptions {
245
+ /**
246
+ * DI service name of the {@link JobRetentionService} implementation that runs the purge.
247
+ * Selected via {@link AutoinjectService}; defaults to `DefaultJobRetentionService`.
248
+ */
249
+ service: string;
250
+ /**
251
+ * Turn the periodic purge on. Default `false`.
252
+ */
253
+ enabled?: boolean;
254
+ /**
255
+ * Age in milliseconds after which a purged job is deleted ( based on CreatedAt ).
256
+ */
257
+ maxAge?: number;
258
+ /**
259
+ * Which statuses to purge. Defaults to terminal statuses ( success / error / dead ).
260
+ */
261
+ statuses?: string[];
262
+ /**
263
+ * How often ( ms ) to run the purge. Default 1 hour.
264
+ */
265
+ interval?: number;
266
+ }
267
+ /**
268
+ * Runs the periodic cleanup of tracked jobs ( {@link JobModel} rows ) so the table doesn't grow
269
+ * unbounded. The concrete implementation is selected by config ( `queue.retention.service` ) and
270
+ * injected into the {@link QueueService} via {@link AutoinjectService}. Because it is an
271
+ * {@link AsyncService}, DI runs `resolve()` on injection ( where the periodic purge is started )
272
+ * and `dispose()` on teardown ( where it is stopped ).
273
+ */
274
+ export declare abstract class JobRetentionService extends AsyncService implements IMappableService {
275
+ Options: IQueueRetentionOptions;
276
+ constructor(Options: IQueueRetentionOptions);
277
+ get ServiceName(): string;
278
+ /**
279
+ * Deletes tracked jobs ( {@link JobModel} rows ) created before `olderThan` in one of `statuses`.
280
+ * Used by the periodic purge and available for manual cleanup.
281
+ *
282
+ * @param olderThan - delete jobs created before this moment
283
+ * @param statuses - which statuses to purge ( defaults to terminal: success / error / dead )
284
+ * @returns number of deleted rows
285
+ */
286
+ abstract purgeJobs(olderThan: DateTime, statuses?: string[]): Promise<number>;
157
287
  }
158
288
  export interface IMessageRoutingOption {
159
289
  channel?: string;
@@ -190,6 +320,47 @@ export interface IQueueConnectionOptions {
190
320
  * and for unblocking source queue
191
321
  */
192
322
  defaultQueueDeadLetterChannel?: string;
323
+ /**
324
+ * Delay in milliseconds before the transport tries to reconnect after a dropped connection.
325
+ */
326
+ reconnectDelay?: number;
327
+ /**
328
+ * Incoming heartbeat interval in milliseconds ( 0 to disable ).
329
+ */
330
+ heartbeatIncoming?: number;
331
+ /**
332
+ * Outgoing heartbeat interval in milliseconds ( 0 to disable ).
333
+ */
334
+ heartbeatOutgoing?: number;
335
+ /**
336
+ * How long ( ms ) to wait for the initial connection before giving up.
337
+ */
338
+ connectionTimeout?: number;
339
+ /**
340
+ * How long ( ms ) to wait for a broker delivery receipt when emitting a message.
341
+ */
342
+ receiptTimeout?: number;
343
+ /**
344
+ * Base delay ( ms ) for retry backoff when a job fails and is rescheduled.
345
+ * Transports may apply exponential backoff based on this value. 0 means retry immediately.
346
+ */
347
+ retryDelay?: number;
348
+ /**
349
+ * Optional DI service name resolving to an {@link IQueueCredentialsProvider}.
350
+ * When set, the transport asks it for credentials right before each ( re )connect,
351
+ * allowing rotating secrets / token based authentication.
352
+ */
353
+ credentialProvider?: string;
354
+ }
355
+ /**
356
+ * Provides connection credentials on demand ( e.g. rotating secrets, short lived tokens ).
357
+ * Resolved from DI by the name set in {@link IQueueConnectionOptions.credentialProvider}.
358
+ */
359
+ export interface IQueueCredentialsProvider {
360
+ getCredentials(options: IQueueConnectionOptions): Promise<{
361
+ login?: string;
362
+ passcode?: string;
363
+ }>;
193
364
  }
194
365
  export interface IMessageOptions {
195
366
  Persistent: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAM,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAG3C,oBAAY,gBAAgB;IAC1B,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,QAAQ,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;IAEvB,UAAU,EAAE,OAAO,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8BAAsB,YAAa,SAAQ,YAAY;IAErD,SAAS,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAE7C;;;;OAIG;aACa,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;aAC/E,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACtK,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;aAC9D,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;IAErD,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE;CAsB/F;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,QAAQ,CAE7D;AAED;;GAEG;AACH,8BAAsB,YAAa,YAAW,aAAa;IACzD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEZ,SAAS,EAAE,QAAQ,CAAC;IAIpB,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,EAAG,gBAAgB,CAAC;IAExB,UAAU,EAAG,OAAO,CAAC;IAErB,QAAQ,EAAG,MAAM,CAAC;IAEzB;;OAEG;IACI,aAAa,EAAG,MAAM,GAAG,SAAS,CAAC;IAE1C;;OAEG;IACI,cAAc,EAAG,MAAM,GAAG,SAAS,CAAC;IAE3C;;OAEG;IACI,cAAc,EAAG,MAAM,GAAG,SAAS,CAAC;IAE3C;;OAEG;IACI,YAAY,EAAG,MAAM,GAAG,SAAS,CAAC;gBAE7B,IAAI,CAAC,EAAE,GAAG;IASf,OAAO,CAAC,OAAO,EAAE,GAAG;CAG5B;AAED;;;;;;;GAOG;AACH,8BAAsB,UAAW,SAAQ,YAAY;gBACvC,IAAI,CAAC,EAAE,GAAG;WAMF,IAAI,CAAC,CAAC,SAAS,OAAO,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAc1I;AAED;;;;;GAKG;AACH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8BAAsB,QAAS,SAAQ,YAAa,YAAW,SAAS;IAC/D,KAAK,EAAE,MAAM,CAAC;IAErB;;OAEG;IACI,UAAU,EAAE,MAAM,CAAC;;aAQV,OAAO,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAExE;;;;OAIG;IACU,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7E;;;OAGG;WACiB,IAAI,CAAC,CAAC,SAAS,OAAO,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAiBxJ;AAED,8BAAsB,WAAY,SAAQ,YAAa,YAAW,cAAc,EAAE,gBAAgB;IAe7E,OAAO,EAAE,uBAAuB;IAbnD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,WAAW,WAErB;gBAEkB,OAAO,EAAE,uBAAuB;IAI5C,iBAAiB,CAAC,eAAe,EAAE,GAAG,GAAG,OAAO;IAIvD;;;;;;;;;;OAUG;aACa,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzD;;;;OAIG;aACa,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAErK;;;;;;;OAOG;aACa,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aAEpI,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;aAC5E,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI;IAE3E;;;;;;;OAOG;IACI,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,MAAM,GAAG,SAAS;IAoB3G;;;;;OAKG;IACI,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC,GAAG,MAAM,EAAE;CA6BxF;AAED,MAAM,WAAW,2BAA2B;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,qBAAqB,GAAG,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,2BAA2B,CAAC;IACtC,WAAW,EAAE,uBAAuB,EAAE,CAAC;IAEvC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;IAEnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,8BAAsB,mBAAoB,SAAQ,YAAa,YAAW,gBAAgB;IACrE,OAAO,EAAE,sBAAsB;gBAA/B,OAAO,EAAE,sBAAsB;IAIlD,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;;;;;;OAOG;aACa,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CACrF;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,KAAK,CAAC;IAEtB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClG;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB"}