agenda-ts 1.6.9-beta.1 → 1.6.9-beta.2

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 (131) hide show
  1. package/README.md +35 -35
  2. package/dist/agenda/cancel.d.ts +3 -0
  3. package/dist/agenda/cancel.js +21 -0
  4. package/dist/agenda/cancel.js.map +1 -0
  5. package/dist/agenda/close.d.ts +5 -0
  6. package/dist/agenda/close.js +25 -0
  7. package/dist/agenda/close.js.map +1 -0
  8. package/dist/agenda/count-jobs.d.ts +5 -0
  9. package/dist/agenda/count-jobs.js +12 -0
  10. package/dist/agenda/count-jobs.js.map +1 -0
  11. package/dist/agenda/create.d.ts +3 -0
  12. package/dist/agenda/create.js +31 -0
  13. package/dist/agenda/create.js.map +1 -0
  14. package/dist/agenda/database.d.ts +4 -0
  15. package/dist/agenda/database.js +33 -0
  16. package/dist/agenda/database.js.map +1 -0
  17. package/dist/agenda/db-init.d.ts +3 -0
  18. package/dist/agenda/db-init.js +34 -0
  19. package/dist/agenda/db-init.js.map +1 -0
  20. package/dist/agenda/default-concurrency.d.ts +3 -0
  21. package/dist/agenda/default-concurrency.js +13 -0
  22. package/dist/agenda/default-concurrency.js.map +1 -0
  23. package/dist/agenda/default-lock-lifetime.d.ts +3 -0
  24. package/dist/agenda/default-lock-lifetime.js +13 -0
  25. package/dist/agenda/default-lock-lifetime.js.map +1 -0
  26. package/dist/agenda/default-lock-limit.d.ts +3 -0
  27. package/dist/agenda/default-lock-limit.js +13 -0
  28. package/dist/agenda/default-lock-limit.js.map +1 -0
  29. package/dist/agenda/define.d.ts +23 -0
  30. package/dist/agenda/define.js +34 -0
  31. package/dist/agenda/define.js.map +1 -0
  32. package/dist/agenda/disable.d.ts +3 -0
  33. package/dist/agenda/disable.js +22 -0
  34. package/dist/agenda/disable.js.map +1 -0
  35. package/dist/agenda/drain.d.ts +2 -0
  36. package/dist/agenda/drain.js +26 -0
  37. package/dist/agenda/drain.js.map +1 -0
  38. package/dist/agenda/enable.d.ts +3 -0
  39. package/dist/agenda/enable.js +22 -0
  40. package/dist/agenda/enable.js.map +1 -0
  41. package/dist/agenda/every.d.ts +4 -0
  42. package/dist/agenda/every.js +37 -0
  43. package/dist/agenda/every.js.map +1 -0
  44. package/dist/agenda/find-and-lock-next-job.d.ts +3 -0
  45. package/dist/agenda/find-and-lock-next-job.js +43 -0
  46. package/dist/agenda/find-and-lock-next-job.js.map +1 -0
  47. package/dist/agenda/has-mongo-protocol.d.ts +1 -0
  48. package/dist/agenda/has-mongo-protocol.js +8 -0
  49. package/dist/agenda/has-mongo-protocol.js.map +1 -0
  50. package/dist/agenda/index.d.ts +115 -0
  51. package/dist/agenda/index.js +208 -0
  52. package/dist/agenda/index.js.map +1 -0
  53. package/dist/agenda/job-processing-queue.d.ts +11 -0
  54. package/dist/agenda/job-processing-queue.js +51 -0
  55. package/dist/agenda/job-processing-queue.js.map +1 -0
  56. package/dist/agenda/jobs.d.ts +6 -0
  57. package/dist/agenda/jobs.js +14 -0
  58. package/dist/agenda/jobs.js.map +1 -0
  59. package/dist/agenda/lock-limit.d.ts +3 -0
  60. package/dist/agenda/lock-limit.js +13 -0
  61. package/dist/agenda/lock-limit.js.map +1 -0
  62. package/dist/agenda/max-concurrency.d.ts +3 -0
  63. package/dist/agenda/max-concurrency.js +13 -0
  64. package/dist/agenda/max-concurrency.js.map +1 -0
  65. package/dist/agenda/mongo.d.ts +4 -0
  66. package/dist/agenda/mongo.js +10 -0
  67. package/dist/agenda/mongo.js.map +1 -0
  68. package/dist/agenda/name.d.ts +3 -0
  69. package/dist/agenda/name.js +13 -0
  70. package/dist/agenda/name.js.map +1 -0
  71. package/dist/agenda/now.d.ts +3 -0
  72. package/dist/agenda/now.js +21 -0
  73. package/dist/agenda/now.js.map +1 -0
  74. package/dist/agenda/process-every.d.ts +3 -0
  75. package/dist/agenda/process-every.js +14 -0
  76. package/dist/agenda/process-every.js.map +1 -0
  77. package/dist/agenda/purge.d.ts +2 -0
  78. package/dist/agenda/purge.js +13 -0
  79. package/dist/agenda/purge.js.map +1 -0
  80. package/dist/agenda/resume-on-restart.d.ts +3 -0
  81. package/dist/agenda/resume-on-restart.js +39 -0
  82. package/dist/agenda/resume-on-restart.js.map +1 -0
  83. package/dist/agenda/save-job.d.ts +4 -0
  84. package/dist/agenda/save-job.js +104 -0
  85. package/dist/agenda/save-job.js.map +1 -0
  86. package/dist/agenda/schedule.d.ts +4 -0
  87. package/dist/agenda/schedule.js +36 -0
  88. package/dist/agenda/schedule.js.map +1 -0
  89. package/dist/agenda/sort.d.ts +3 -0
  90. package/dist/agenda/sort.js +13 -0
  91. package/dist/agenda/sort.js.map +1 -0
  92. package/dist/agenda/start.d.ts +2 -0
  93. package/dist/agenda/start.js +19 -0
  94. package/dist/agenda/start.js.map +1 -0
  95. package/dist/agenda/stop.d.ts +2 -0
  96. package/dist/agenda/stop.js +38 -0
  97. package/dist/agenda/stop.js.map +1 -0
  98. package/dist/index.d.ts +5 -5
  99. package/dist/index.js +6 -6
  100. package/dist/index.js.map +1 -1
  101. package/dist/job/compute-next-run-at.js +1 -1
  102. package/dist/job/compute-next-run-at.js.map +1 -1
  103. package/dist/job/fail.js +1 -1
  104. package/dist/job/fail.js.map +1 -1
  105. package/dist/job/fetch-status.js +1 -1
  106. package/dist/job/fetch-status.js.map +1 -1
  107. package/dist/job/index.d.ts +3 -3
  108. package/dist/job/index.js +4 -4
  109. package/dist/job/index.js.map +1 -1
  110. package/dist/job/is-expired.js +1 -1
  111. package/dist/job/is-expired.js.map +1 -1
  112. package/dist/job/is-running.js +1 -2
  113. package/dist/job/is-running.js.map +1 -1
  114. package/dist/job/remove.js +1 -1
  115. package/dist/job/remove.js.map +1 -1
  116. package/dist/job/run.js +13 -13
  117. package/dist/job/run.js.map +1 -1
  118. package/dist/job/save.js +1 -1
  119. package/dist/job/save.js.map +1 -1
  120. package/dist/utils/create-job.d.ts +2 -2
  121. package/dist/utils/create-job.js +2 -2
  122. package/dist/utils/create-job.js.map +1 -1
  123. package/dist/utils/error.d.ts +1 -1
  124. package/dist/utils/error.js +3 -3
  125. package/dist/utils/error.js.map +1 -1
  126. package/dist/utils/parse-priority.js +1 -1
  127. package/dist/utils/parse-priority.js.map +1 -1
  128. package/dist/utils/process-jobs.d.ts +2 -2
  129. package/dist/utils/process-jobs.js +2 -2
  130. package/dist/utils/process-jobs.js.map +1 -1
  131. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable.js","sourceRoot":"","sources":["../../src/agenda/enable.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,eAAe,CAAC,CAAC;AAWvC,MAAM,MAAM,GAAiB,KAAK,WAAyB,KAAK,GAAG,EAAE;IAC1E,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE;YACjE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC1B,CAAC,CAAC;QACH,KAAK,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACxC,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,MAAM,UAYjB"}
@@ -0,0 +1,4 @@
1
+ import { Job, JobAttributesData } from '../job';
2
+ import { JobOptions } from '../job/repeat-every';
3
+ export type EveryMethod = <T extends JobAttributesData>(interval: string, names: string | string[], data?: T, options?: JobOptions) => Promise<Job | Job[]>;
4
+ export declare const every: EveryMethod;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.every = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const debug_1 = tslib_1.__importDefault(require("debug"));
6
+ const utils_1 = require("../utils");
7
+ const debug = (0, debug_1.default)('agenda:every');
8
+ const every = async function (interval, names, data, options) {
9
+ const createJob = async (interval, name, data, options) => {
10
+ const job = this.create(name, data || {});
11
+ job.attrs.type = 'single';
12
+ job.repeatEvery(interval, options);
13
+ return job.save();
14
+ };
15
+ const createJobs = async (interval, names, data, options) => {
16
+ try {
17
+ const jobs = [];
18
+ names.map((name) => jobs.push(createJob(interval, name, data, options)));
19
+ debug('every() -> all jobs created successfully');
20
+ return Promise.all(jobs);
21
+ }
22
+ catch (error) {
23
+ debug('every() -> error creating one or more of the jobs', error);
24
+ throw new utils_1.AgendaError('Error creating one or more of the jobs');
25
+ }
26
+ };
27
+ if (Array.isArray(names)) {
28
+ debug('Agenda.every(%s, %s, %O)', interval, names, options);
29
+ const jobs = await createJobs(interval, names, data, options);
30
+ return jobs;
31
+ }
32
+ debug('Agenda.every(%s, %O, %O)', interval, names, options);
33
+ const jobs = await createJob(interval, names, data, options);
34
+ return jobs;
35
+ };
36
+ exports.every = every;
37
+ //# sourceMappingURL=every.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"every.js","sourceRoot":"","sources":["../../src/agenda/every.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAInC,oCAAuC;AAEvC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,cAAc,CAAC,CAAC;AAmBtC,MAAM,KAAK,GAAgB,KAAK,WAAyB,QAAQ,EAAE,KAAK,EAAE,IAAK,EAAE,OAAQ;IAS9F,MAAM,SAAS,GAAG,KAAK,EACrB,QAAgB,EAChB,IAAY,EACZ,IAAQ,EACR,OAAoB,EACN,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAE1C,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC;IAUF,MAAM,UAAU,GAAG,KAAK,EACtB,QAAgB,EAChB,KAAe,EACf,IAAQ,EACR,OAAoB,EACJ,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAwB,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzE,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAElD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,IAAI,mBAAW,CAAC,wCAAwC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA3DW,QAAA,KAAK,SA2DhB"}
@@ -0,0 +1,3 @@
1
+ import { Agenda } from '.';
2
+ import { Job } from '../job';
3
+ export declare const findAndLockNextJob: (this: Agenda, jobName: string, definition: any) => Promise<Job | undefined>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findAndLockNextJob = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const debug_1 = tslib_1.__importDefault(require("debug"));
6
+ const mongodb_1 = require("mongodb");
7
+ const utils_1 = require("../utils");
8
+ const debug = (0, debug_1.default)('agenda:internal:_findAndLockNextJob');
9
+ const findAndLockNextJob = async function (jobName, definition) {
10
+ const now = new Date();
11
+ const lockDeadline = new Date(Date.now().valueOf() - definition.lockLifetime);
12
+ debug('_findAndLockNextJob(%s, [Function])', jobName);
13
+ const JOB_PROCESS_WHERE_QUERY = {
14
+ $and: [
15
+ {
16
+ name: jobName,
17
+ disabled: { $ne: true },
18
+ },
19
+ {
20
+ $or: [
21
+ {
22
+ lockedAt: { $eq: null },
23
+ nextRunAt: { $lte: this._nextScanAt },
24
+ },
25
+ {
26
+ lockedAt: { $lte: lockDeadline },
27
+ },
28
+ ],
29
+ },
30
+ ],
31
+ };
32
+ const JOB_PROCESS_SET_QUERY = { $set: { lockedAt: now } };
33
+ const JOB_RETURN_QUERY = { includeResultMetadata: true, returnDocument: mongodb_1.ReturnDocument.AFTER, sort: this._sort };
34
+ const result = await this._collection.findOneAndUpdate(JOB_PROCESS_WHERE_QUERY, JOB_PROCESS_SET_QUERY, JOB_RETURN_QUERY);
35
+ let job = undefined;
36
+ if (result?.value) {
37
+ debug('found a job available to lock, creating a new job on Agenda with id [%s]', result.value._id);
38
+ job = (0, utils_1.createJob)(this, result.value);
39
+ }
40
+ return job;
41
+ };
42
+ exports.findAndLockNextJob = findAndLockNextJob;
43
+ //# sourceMappingURL=find-and-lock-next-job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-and-lock-next-job.js","sourceRoot":"","sources":["../../src/agenda/find-and-lock-next-job.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AACnC,qCAAyC;AAGzC,oCAAqC;AAErC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,qCAAqC,CAAC,CAAC;AAW7D,MAAM,kBAAkB,GAAG,KAAK,WAErC,OAAe,EACf,UAAe;IAEf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC9E,KAAK,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAEtD,MAAM,uBAAuB,GAAG;QAC9B,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;aACxB;YACD;gBACE,GAAG,EAAE;oBACH;wBACE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;wBACvB,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;qBACtC;oBACD;wBACE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;qBACjC;iBACF;aACF;SACF;KACF,CAAC;IAMF,MAAM,qBAAqB,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC;IAO1D,MAAM,gBAAgB,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,wBAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAGjH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CACpD,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,CACjB,CAAC;IAEF,IAAI,GAAG,GAAoB,SAAS,CAAC;IACrC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,0EAA0E,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpG,GAAG,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAxDW,QAAA,kBAAkB,sBAwD7B"}
@@ -0,0 +1 @@
1
+ export declare const hasMongoProtocol: (url: string) => boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasMongoProtocol = void 0;
4
+ const hasMongoProtocol = function (url) {
5
+ return /mongodb(?:\+srv)?:\/\/.*/.exec(url) !== null;
6
+ };
7
+ exports.hasMongoProtocol = hasMongoProtocol;
8
+ //# sourceMappingURL=has-mongo-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-mongo-protocol.js","sourceRoot":"","sources":["../../src/agenda/has-mongo-protocol.ts"],"names":[],"mappings":";;;AAKO,MAAM,gBAAgB,GAAG,UAAU,GAAW;IACnD,OAAO,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
@@ -0,0 +1,115 @@
1
+ import { EventEmitter } from 'events';
2
+ import { AnyError, Collection, MongoClient, MongoClientOptions, Db as MongoDb } from 'mongodb';
3
+ import { Job } from '../job';
4
+ import { CancelMethod } from './cancel';
5
+ import { CloseMethod } from './close';
6
+ import { CountJobsMethod } from './count-jobs';
7
+ import { CreateMethod } from './create';
8
+ import { DatabaseMethod } from './database';
9
+ import { DbInitMethod } from './db-init';
10
+ import { DefaultConcurrencyMethod } from './default-concurrency';
11
+ import { DefaultLockLifetimeMethod } from './default-lock-lifetime';
12
+ import { DefaultLockLimitMethod } from './default-lock-limit';
13
+ import { DefineMethod } from './define';
14
+ import { DisableMethod } from './disable';
15
+ import { DrainMethod } from './drain';
16
+ import { EnableMethod } from './enable';
17
+ import { EveryMethod } from './every';
18
+ import { JobProcessingQueue } from './job-processing-queue';
19
+ import { JobsMethod } from './jobs';
20
+ import { LockLimitMethod } from './lock-limit';
21
+ import { MaxConcurrencyMethod } from './max-concurrency';
22
+ import { MongoMethod } from './mongo';
23
+ import { NameMethod } from './name';
24
+ import { NowMethod } from './now';
25
+ import { ProcessEveryMethod } from './process-every';
26
+ import { PurgeMethod } from './purge';
27
+ import { ResumeOnRestartMethod } from './resume-on-restart';
28
+ import { SaveJobMethod } from './save-job';
29
+ import { ScheduleMethod } from './schedule';
30
+ import { SortMethod } from './sort';
31
+ import { StartMethod } from './start';
32
+ import { StopMethod } from './stop';
33
+ export type AgendaOnEventType = 'ready' | 'start' | 'success' | 'fail' | 'complete' | 'cancel' | 'error';
34
+ export interface AgendaConfig {
35
+ name?: string;
36
+ processEvery?: string;
37
+ maxConcurrency?: number;
38
+ defaultConcurrency?: number;
39
+ lockLimit?: number;
40
+ defaultLockLimit?: number;
41
+ defaultLockLifetime?: number;
42
+ sort?: any;
43
+ mongo?: MongoDb;
44
+ db?: {
45
+ address: string;
46
+ collection?: string;
47
+ options?: MongoClientOptions;
48
+ };
49
+ disableAutoIndex?: boolean;
50
+ resumeOnRestart?: boolean;
51
+ }
52
+ declare class Agenda extends EventEmitter {
53
+ private _lazyBindings;
54
+ _defaultConcurrency: any;
55
+ _defaultLockLifetime: any;
56
+ _defaultLockLimit: any;
57
+ _definitions: any;
58
+ _findAndLockNextJob: (this: Agenda, jobName: string, definition: any) => Promise<Job | undefined>;
59
+ _indices: any;
60
+ _disableAutoIndex: boolean;
61
+ _resumeOnRestart: boolean;
62
+ _isLockingOnTheFly: boolean;
63
+ _isJobQueueFilling: Map<string, boolean>;
64
+ _jobQueue: JobProcessingQueue;
65
+ _jobsToLock: Job[];
66
+ _lockedJobs: Job[];
67
+ _runningJobs: Job[];
68
+ _lockLimit: any;
69
+ _maxConcurrency: any;
70
+ _mongoUseUnifiedTopology?: boolean;
71
+ _name: any;
72
+ _processEvery: number;
73
+ _ready: Promise<unknown>;
74
+ _sort: any;
75
+ _db: MongoClient;
76
+ _mdb: MongoDb;
77
+ _collection: Collection;
78
+ _nextScanAt: any;
79
+ _processInterval: any;
80
+ _readyAt: Date;
81
+ constructor(config?: AgendaConfig, cb?: (error: AnyError | undefined, collection: Collection<any> | null) => void);
82
+ get define(): DefineMethod;
83
+ get every(): EveryMethod;
84
+ get processEvery(): ProcessEveryMethod;
85
+ get cancel(): CancelMethod;
86
+ get close(): CloseMethod;
87
+ get create(): CreateMethod;
88
+ get dbInit(): DbInitMethod;
89
+ get defaultConcurrency(): DefaultConcurrencyMethod;
90
+ get defaultLockLifetime(): DefaultLockLifetimeMethod;
91
+ get defaultLockLimit(): DefaultLockLimitMethod;
92
+ get disable(): DisableMethod;
93
+ get enable(): EnableMethod;
94
+ get jobs(): JobsMethod;
95
+ get countJobs(): CountJobsMethod;
96
+ get lockLimit(): LockLimitMethod;
97
+ get maxConcurrency(): MaxConcurrencyMethod;
98
+ get name(): NameMethod;
99
+ get now(): NowMethod;
100
+ get purge(): PurgeMethod;
101
+ get saveJob(): SaveJobMethod;
102
+ get schedule(): ScheduleMethod;
103
+ get sort(): SortMethod;
104
+ get start(): StartMethod;
105
+ get stop(): StopMethod;
106
+ get drain(): DrainMethod;
107
+ get mongo(): MongoMethod;
108
+ get database(): DatabaseMethod;
109
+ get resumeOnRestart(): ResumeOnRestartMethod;
110
+ get getJobsRepo(): (this: Agenda, query?: {}, sort?: {}, limit?: number, skip?: number) => Promise<import("mongodb").WithId<import("bson").Document>[]>;
111
+ on(event: AgendaOnEventType, listener: (...arg: any[]) => void): this;
112
+ private init;
113
+ private bindMethod;
114
+ }
115
+ export { Agenda };
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Agenda = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const events_1 = require("events");
6
+ const human_interval_1 = tslib_1.__importDefault(require("human-interval"));
7
+ const cancel_1 = require("./cancel");
8
+ const close_1 = require("./close");
9
+ const count_jobs_1 = require("./count-jobs");
10
+ const create_1 = require("./create");
11
+ const database_1 = require("./database");
12
+ const db_init_1 = require("./db-init");
13
+ const default_concurrency_1 = require("./default-concurrency");
14
+ const default_lock_lifetime_1 = require("./default-lock-lifetime");
15
+ const default_lock_limit_1 = require("./default-lock-limit");
16
+ const define_1 = require("./define");
17
+ const disable_1 = require("./disable");
18
+ const drain_1 = require("./drain");
19
+ const enable_1 = require("./enable");
20
+ const every_1 = require("./every");
21
+ const find_and_lock_next_job_1 = require("./find-and-lock-next-job");
22
+ const job_processing_queue_1 = require("./job-processing-queue");
23
+ const jobs_1 = require("./jobs");
24
+ const lock_limit_1 = require("./lock-limit");
25
+ const max_concurrency_1 = require("./max-concurrency");
26
+ const mongo_1 = require("./mongo");
27
+ const name_1 = require("./name");
28
+ const now_1 = require("./now");
29
+ const process_every_1 = require("./process-every");
30
+ const purge_1 = require("./purge");
31
+ const resume_on_restart_1 = require("./resume-on-restart");
32
+ const save_job_1 = require("./save-job");
33
+ const schedule_1 = require("./schedule");
34
+ const sort_1 = require("./sort");
35
+ const start_1 = require("./start");
36
+ const stop_1 = require("./stop");
37
+ class Agenda extends events_1.EventEmitter {
38
+ _lazyBindings = {};
39
+ _defaultConcurrency;
40
+ _defaultLockLifetime;
41
+ _defaultLockLimit;
42
+ _definitions;
43
+ _findAndLockNextJob = find_and_lock_next_job_1.findAndLockNextJob;
44
+ _indices;
45
+ _disableAutoIndex;
46
+ _resumeOnRestart;
47
+ _isLockingOnTheFly;
48
+ _isJobQueueFilling;
49
+ _jobQueue;
50
+ _jobsToLock;
51
+ _lockedJobs;
52
+ _runningJobs;
53
+ _lockLimit;
54
+ _maxConcurrency;
55
+ _mongoUseUnifiedTopology;
56
+ _name;
57
+ _processEvery;
58
+ _ready;
59
+ _sort;
60
+ _db;
61
+ _mdb;
62
+ _collection;
63
+ _nextScanAt;
64
+ _processInterval;
65
+ _readyAt;
66
+ constructor(config = {}, cb) {
67
+ super();
68
+ this._name = config.name;
69
+ this._processEvery = ((0, human_interval_1.default)(config.processEvery) ?? (0, human_interval_1.default)('5 seconds'));
70
+ this._defaultConcurrency = config.defaultConcurrency || 5;
71
+ this._maxConcurrency = config.maxConcurrency || 20;
72
+ this._defaultLockLimit = config.defaultLockLimit || 0;
73
+ this._lockLimit = config.lockLimit || 0;
74
+ this._definitions = {};
75
+ this._runningJobs = [];
76
+ this._lockedJobs = [];
77
+ this._jobQueue = new job_processing_queue_1.JobProcessingQueue();
78
+ this._defaultLockLifetime = config.defaultLockLifetime || 10 * 60 * 1000;
79
+ this._sort = config.sort || { nextRunAt: 1, priority: -1 };
80
+ this._indices = {
81
+ name: 1,
82
+ ...this._sort,
83
+ priority: -1,
84
+ lockedAt: 1,
85
+ nextRunAt: 1,
86
+ disabled: 1,
87
+ };
88
+ this._disableAutoIndex = config.disableAutoIndex === true;
89
+ this._resumeOnRestart = config.resumeOnRestart !== false;
90
+ this._isLockingOnTheFly = false;
91
+ this._isJobQueueFilling = new Map();
92
+ this._jobsToLock = [];
93
+ this._ready = new Promise((resolve) => {
94
+ this.once('ready', resolve);
95
+ });
96
+ this._readyAt = new Date();
97
+ this.init(config, cb);
98
+ }
99
+ get define() {
100
+ return this.bindMethod('define', define_1.define);
101
+ }
102
+ get every() {
103
+ return this.bindMethod('every', every_1.every);
104
+ }
105
+ get processEvery() {
106
+ return this.bindMethod('processEvery', process_every_1.processEvery);
107
+ }
108
+ get cancel() {
109
+ return this.bindMethod('cancel', cancel_1.cancel);
110
+ }
111
+ get close() {
112
+ return this.bindMethod('close', close_1.close);
113
+ }
114
+ get create() {
115
+ return this.bindMethod('create', create_1.create);
116
+ }
117
+ get dbInit() {
118
+ return this.bindMethod('dbInit', db_init_1.dbInit);
119
+ }
120
+ get defaultConcurrency() {
121
+ return this.bindMethod('defaultConcurrency', default_concurrency_1.defaultConcurrency);
122
+ }
123
+ get defaultLockLifetime() {
124
+ return this.bindMethod('defaultLockLifetime', default_lock_lifetime_1.defaultLockLifetime);
125
+ }
126
+ get defaultLockLimit() {
127
+ return this.bindMethod('defaultLockLimit', default_lock_limit_1.defaultLockLimit);
128
+ }
129
+ get disable() {
130
+ return this.bindMethod('disable', disable_1.disable);
131
+ }
132
+ get enable() {
133
+ return this.bindMethod('enable', enable_1.enable);
134
+ }
135
+ get jobs() {
136
+ return this.bindMethod('jobs', jobs_1.jobs);
137
+ }
138
+ get countJobs() {
139
+ return this.bindMethod('countJobs', count_jobs_1.countJobs);
140
+ }
141
+ get lockLimit() {
142
+ return this.bindMethod('lockLimit', lock_limit_1.lockLimit);
143
+ }
144
+ get maxConcurrency() {
145
+ return this.bindMethod('maxConcurrency', max_concurrency_1.maxConcurrency);
146
+ }
147
+ get name() {
148
+ return this.bindMethod('name', name_1.name);
149
+ }
150
+ get now() {
151
+ return this.bindMethod('now', now_1.now);
152
+ }
153
+ get purge() {
154
+ return this.bindMethod('purge', purge_1.purge);
155
+ }
156
+ get saveJob() {
157
+ return this.bindMethod('saveJob', save_job_1.saveJob);
158
+ }
159
+ get schedule() {
160
+ return this.bindMethod('schedule', schedule_1.schedule);
161
+ }
162
+ get sort() {
163
+ return this.bindMethod('sort', sort_1.sort);
164
+ }
165
+ get start() {
166
+ return this.bindMethod('start', start_1.start);
167
+ }
168
+ get stop() {
169
+ return this.bindMethod('stop', stop_1.stop);
170
+ }
171
+ get drain() {
172
+ return this.bindMethod('drain', drain_1.drain);
173
+ }
174
+ get mongo() {
175
+ return this.bindMethod('mongo', mongo_1.mongo);
176
+ }
177
+ get database() {
178
+ return this.bindMethod('database', database_1.database);
179
+ }
180
+ get resumeOnRestart() {
181
+ return this.bindMethod('resumeOnRestart', resume_on_restart_1.resumeOnRestart);
182
+ }
183
+ get getJobsRepo() {
184
+ return this.bindMethod('getJobsRepo', jobs_1.getJobsRepo);
185
+ }
186
+ on(event, listener) {
187
+ return super.on(event, listener);
188
+ }
189
+ init(config, cb) {
190
+ if (config.mongo) {
191
+ this.mongo(config.mongo, config.db ? config.db.collection : undefined, cb);
192
+ if (config.mongo.s && config.mongo.topology && config.mongo.topology.s) {
193
+ this._mongoUseUnifiedTopology = Boolean(config.mongo.topology.s.options.useUnifiedTopology);
194
+ }
195
+ }
196
+ else if (config.db) {
197
+ this.database(config.db.address, config.db.collection, config.db.options, cb);
198
+ }
199
+ }
200
+ bindMethod(methodName, fn) {
201
+ if (!this._lazyBindings[methodName]) {
202
+ this._lazyBindings[methodName] = fn.bind(this);
203
+ }
204
+ return this._lazyBindings[methodName];
205
+ }
206
+ }
207
+ exports.Agenda = Agenda;
208
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agenda/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Job } from '../job';
2
+ declare class JobProcessingQueue {
3
+ protected _queue: Job[];
4
+ constructor();
5
+ get length(): number;
6
+ pop(this: JobProcessingQueue): Job<import("../job").JobAttributesData> | undefined;
7
+ insert(this: JobProcessingQueue, job: Job): void;
8
+ push(this: JobProcessingQueue, job: Job): void;
9
+ returnNextConcurrencyFreeJob(this: JobProcessingQueue, agendaDefinitions: any): Job<import("../job").JobAttributesData>;
10
+ }
11
+ export { JobProcessingQueue };
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JobProcessingQueue = void 0;
4
+ class JobProcessingQueue {
5
+ _queue;
6
+ constructor() {
7
+ this._queue = [];
8
+ }
9
+ get length() {
10
+ return this._queue.length;
11
+ }
12
+ pop() {
13
+ return this._queue.pop();
14
+ }
15
+ insert(job) {
16
+ const matchIndex = this._queue.findIndex((element) => {
17
+ if (element.attrs.nextRunAt.getTime() <= job.attrs.nextRunAt.getTime()) {
18
+ if (element.attrs.nextRunAt.getTime() === job.attrs.nextRunAt.getTime()) {
19
+ if (element.attrs.priority >= job.attrs.priority) {
20
+ return true;
21
+ }
22
+ }
23
+ else {
24
+ return true;
25
+ }
26
+ }
27
+ return false;
28
+ });
29
+ if (matchIndex === -1) {
30
+ this._queue.push(job);
31
+ }
32
+ else {
33
+ this._queue.splice(matchIndex, 0, job);
34
+ }
35
+ }
36
+ push(job) {
37
+ this._queue.push(job);
38
+ }
39
+ returnNextConcurrencyFreeJob(agendaDefinitions) {
40
+ let next;
41
+ for (next = this._queue.length - 1; next > 0; next -= 1) {
42
+ const def = agendaDefinitions[this._queue[next].attrs.name];
43
+ if (def.concurrency > def.running) {
44
+ break;
45
+ }
46
+ }
47
+ return this._queue[next];
48
+ }
49
+ }
50
+ exports.JobProcessingQueue = JobProcessingQueue;
51
+ //# sourceMappingURL=job-processing-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-processing-queue.js","sourceRoot":"","sources":["../../src/agenda/job-processing-queue.ts"],"names":[],"mappings":";;;AAQA,MAAM,kBAAkB;IACZ,MAAM,CAAQ;IAExB;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAMD,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IASD,MAAM,CAA2B,GAAQ;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACnD,IAAI,OAAO,CAAC,KAAK,CAAC,SAAU,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,SAAU,CAAC,OAAO,EAAE,EAAE,CAAC;gBACzE,IAAI,OAAO,CAAC,KAAK,CAAC,SAAU,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,SAAU,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC1E,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACjD,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAMD,IAAI,CAA2B,GAAQ;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAQD,4BAA4B,CAA2B,iBAAsB;QAC3E,IAAI,IAAI,CAAC;QACT,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF;AAEQ,gDAAkB"}
@@ -0,0 +1,6 @@
1
+ import { Filter, Sort } from 'mongodb';
2
+ import { Agenda } from '.';
3
+ import { Job } from '../job';
4
+ export declare const getJobsRepo: (this: Agenda, query?: {}, sort?: {}, limit?: number, skip?: number) => Promise<import("mongodb").WithId<import("bson").Document>[]>;
5
+ export type JobsMethod = (query?: Filter<any>, sort?: Sort | string, limit?: number, skip?: number) => Promise<Job[]>;
6
+ export declare const jobs: JobsMethod;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jobs = exports.getJobsRepo = void 0;
4
+ const utils_1 = require("../utils");
5
+ const getJobsRepo = async function (query = {}, sort = {}, limit = 0, skip = 0) {
6
+ return await this._collection.find(query).sort(sort).limit(limit).skip(skip).toArray();
7
+ };
8
+ exports.getJobsRepo = getJobsRepo;
9
+ const jobs = async function (query = {}, sort = {}, limit = 0, skip = 0) {
10
+ const result = await exports.getJobsRepo.call(this, query, sort, limit, skip);
11
+ return result.map((job) => (0, utils_1.createJob)(this, job));
12
+ };
13
+ exports.jobs = jobs;
14
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/agenda/jobs.ts"],"names":[],"mappings":";;;AAGA,oCAAqC;AAE9B,MAAM,WAAW,GAAG,KAAK,WAAyB,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC;IACjG,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACzF,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAcK,MAAM,IAAI,GAAe,KAAK,WAAyB,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC;IACtG,MAAM,MAAM,GAAG,MAAM,mBAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAHW,QAAA,IAAI,QAGf"}
@@ -0,0 +1,3 @@
1
+ import { Agenda } from '.';
2
+ export type LockLimitMethod = (limit: number) => Agenda;
3
+ export declare const lockLimit: LockLimitMethod;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lockLimit = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const debug_1 = tslib_1.__importDefault(require("debug"));
6
+ const debug = (0, debug_1.default)('agenda:locklimit');
7
+ const lockLimit = function (limit) {
8
+ debug('Agenda.lockLimit(%d)', limit);
9
+ this._lockLimit = limit;
10
+ return this;
11
+ };
12
+ exports.lockLimit = lockLimit;
13
+ //# sourceMappingURL=lock-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock-limit.js","sourceRoot":"","sources":["../../src/agenda/lock-limit.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,kBAAkB,CAAC,CAAC;AAS1C,MAAM,SAAS,GAAoB,UAAwB,KAAK;IAErE,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AALW,QAAA,SAAS,aAKpB"}
@@ -0,0 +1,3 @@
1
+ import { Agenda } from '.';
2
+ export type MaxConcurrencyMethod = (concurrency: number) => Agenda;
3
+ export declare const maxConcurrency: MaxConcurrencyMethod;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maxConcurrency = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const debug_1 = tslib_1.__importDefault(require("debug"));
6
+ const debug = (0, debug_1.default)('agenda:maxConcurrency');
7
+ const maxConcurrency = function (concurrency) {
8
+ debug('Agenda.maxConcurrency(%d)', concurrency);
9
+ this._maxConcurrency = concurrency;
10
+ return this;
11
+ };
12
+ exports.maxConcurrency = maxConcurrency;
13
+ //# sourceMappingURL=max-concurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-concurrency.js","sourceRoot":"","sources":["../../src/agenda/max-concurrency.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,uBAAuB,CAAC,CAAC;AAU/C,MAAM,cAAc,GAAyB,UAAwB,WAAW;IACrF,KAAK,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB"}
@@ -0,0 +1,4 @@
1
+ import { AnyError, Collection, Db } from 'mongodb';
2
+ import { Agenda } from '.';
3
+ export type MongoMethod = (mdb: Db, collection?: string, cb?: (error: AnyError | undefined, collection: Collection<any> | null) => void) => Agenda;
4
+ export declare const mongo: MongoMethod;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mongo = void 0;
4
+ const mongo = function (mdb, collection, cb) {
5
+ this._mdb = mdb;
6
+ this.dbInit(collection, cb);
7
+ return this;
8
+ };
9
+ exports.mongo = mongo;
10
+ //# sourceMappingURL=mongo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/agenda/mongo.ts"],"names":[],"mappings":";;;AAgBO,MAAM,KAAK,GAAgB,UAAwB,GAAG,EAAE,UAAW,EAAE,EAAG;IAC7E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAChB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,KAAK,SAIhB"}
@@ -0,0 +1,3 @@
1
+ import { Agenda } from '.';
2
+ export type NameMethod = (name: string) => Agenda;
3
+ export declare const name: NameMethod;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.name = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const debug_1 = tslib_1.__importDefault(require("debug"));
6
+ const debug = (0, debug_1.default)('agenda:name');
7
+ const name = function (name) {
8
+ debug('Agenda.name(%s)', name);
9
+ this._name = name;
10
+ return this;
11
+ };
12
+ exports.name = name;
13
+ //# sourceMappingURL=name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name.js","sourceRoot":"","sources":["../../src/agenda/name.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,aAAa,CAAC,CAAC;AASrC,MAAM,IAAI,GAAe,UAAwB,IAAI;IAC1D,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,IAAI,QAIf"}