@atproto/ozone 0.1.69 → 0.1.70

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 (121) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/api/moderation/queryStatuses.d.ts.map +1 -1
  3. package/dist/api/moderation/queryStatuses.js +1 -33
  4. package/dist/api/moderation/queryStatuses.js.map +1 -1
  5. package/dist/background.d.ts +49 -6
  6. package/dist/background.d.ts.map +1 -1
  7. package/dist/background.js +149 -14
  8. package/dist/background.js.map +1 -1
  9. package/dist/config/config.d.ts +1 -0
  10. package/dist/config/config.d.ts.map +1 -1
  11. package/dist/config/config.js +1 -0
  12. package/dist/config/config.js.map +1 -1
  13. package/dist/config/env.d.ts +1 -0
  14. package/dist/config/env.d.ts.map +1 -1
  15. package/dist/config/env.js +1 -0
  16. package/dist/config/env.js.map +1 -1
  17. package/dist/daemon/context.d.ts +9 -3
  18. package/dist/daemon/context.d.ts.map +1 -1
  19. package/dist/daemon/context.js +33 -3
  20. package/dist/daemon/context.js.map +1 -1
  21. package/dist/daemon/index.d.ts.map +1 -1
  22. package/dist/daemon/index.js +3 -6
  23. package/dist/daemon/index.js.map +1 -1
  24. package/dist/daemon/materialized-view-refresher.d.ts +5 -0
  25. package/dist/daemon/materialized-view-refresher.d.ts.map +1 -0
  26. package/dist/daemon/materialized-view-refresher.js +29 -0
  27. package/dist/daemon/materialized-view-refresher.js.map +1 -0
  28. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts +5 -0
  29. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.d.ts.map +1 -0
  30. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js +158 -0
  31. package/dist/db/migrations/20241220T144630860Z-stats-materialized-views.js.map +1 -0
  32. package/dist/db/migrations/index.d.ts +1 -0
  33. package/dist/db/migrations/index.d.ts.map +1 -1
  34. package/dist/db/migrations/index.js +2 -1
  35. package/dist/db/migrations/index.js.map +1 -1
  36. package/dist/db/schema/account_events_stats.d.ts +15 -0
  37. package/dist/db/schema/account_events_stats.d.ts.map +1 -0
  38. package/dist/db/schema/account_events_stats.js +5 -0
  39. package/dist/db/schema/account_events_stats.js.map +1 -0
  40. package/dist/db/schema/account_record_events_stats.d.ts +15 -0
  41. package/dist/db/schema/account_record_events_stats.d.ts.map +1 -0
  42. package/dist/db/schema/account_record_events_stats.js +5 -0
  43. package/dist/db/schema/account_record_events_stats.js.map +1 -0
  44. package/dist/db/schema/account_record_status_stats.d.ts +15 -0
  45. package/dist/db/schema/account_record_status_stats.d.ts.map +1 -0
  46. package/dist/db/schema/account_record_status_stats.js +5 -0
  47. package/dist/db/schema/account_record_status_stats.js.map +1 -0
  48. package/dist/db/schema/index.d.ts +5 -1
  49. package/dist/db/schema/index.d.ts.map +1 -1
  50. package/dist/db/schema/record_events_stats.d.ts +14 -0
  51. package/dist/db/schema/record_events_stats.d.ts.map +1 -0
  52. package/dist/db/schema/record_events_stats.js +5 -0
  53. package/dist/db/schema/record_events_stats.js.map +1 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +1 -4
  56. package/dist/index.js.map +1 -1
  57. package/dist/lexicon/lexicons.d.ts +174 -2
  58. package/dist/lexicon/lexicons.d.ts.map +1 -1
  59. package/dist/lexicon/lexicons.js +92 -1
  60. package/dist/lexicon/lexicons.js.map +1 -1
  61. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +40 -0
  62. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
  63. package/dist/lexicon/types/tools/ozone/moderation/defs.js +20 -0
  64. package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
  65. package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.d.ts +7 -1
  66. package/dist/lexicon/types/tools/ozone/moderation/queryStatuses.d.ts.map +1 -1
  67. package/dist/mod-service/index.d.ts +4 -62
  68. package/dist/mod-service/index.d.ts.map +1 -1
  69. package/dist/mod-service/index.js +80 -74
  70. package/dist/mod-service/index.js.map +1 -1
  71. package/dist/mod-service/status.d.ts +115 -4
  72. package/dist/mod-service/status.d.ts.map +1 -1
  73. package/dist/mod-service/status.js +51 -34
  74. package/dist/mod-service/status.js.map +1 -1
  75. package/dist/mod-service/types.d.ts +16 -1
  76. package/dist/mod-service/types.d.ts.map +1 -1
  77. package/dist/mod-service/views.d.ts.map +1 -1
  78. package/dist/mod-service/views.js +49 -41
  79. package/dist/mod-service/views.js.map +1 -1
  80. package/dist/util.d.ts +34 -0
  81. package/dist/util.d.ts.map +1 -1
  82. package/dist/util.js +132 -0
  83. package/dist/util.js.map +1 -1
  84. package/package.json +3 -3
  85. package/src/api/moderation/queryStatuses.ts +1 -63
  86. package/src/background.ts +140 -14
  87. package/src/config/config.ts +2 -0
  88. package/src/config/env.ts +4 -0
  89. package/src/daemon/context.ts +43 -5
  90. package/src/daemon/index.ts +3 -6
  91. package/src/daemon/materialized-view-refresher.ts +27 -0
  92. package/src/db/migrations/20241220T144630860Z-stats-materialized-views.ts +218 -0
  93. package/src/db/migrations/index.ts +1 -0
  94. package/src/db/schema/account_events_stats.ts +16 -0
  95. package/src/db/schema/account_record_events_stats.ts +15 -0
  96. package/src/db/schema/account_record_status_stats.ts +15 -0
  97. package/src/db/schema/index.ts +10 -1
  98. package/src/db/schema/record_events_stats.ts +15 -0
  99. package/src/index.ts +1 -7
  100. package/src/lexicon/lexicons.ts +100 -1
  101. package/src/lexicon/types/tools/ozone/moderation/defs.ts +62 -0
  102. package/src/lexicon/types/tools/ozone/moderation/queryStatuses.ts +11 -1
  103. package/src/mod-service/index.ts +181 -118
  104. package/src/mod-service/status.ts +55 -28
  105. package/src/mod-service/types.ts +22 -1
  106. package/src/mod-service/views.ts +64 -50
  107. package/src/util.ts +145 -0
  108. package/tests/__snapshots__/get-record.test.ts.snap +28 -0
  109. package/tests/__snapshots__/get-records.test.ts.snap +14 -0
  110. package/tests/__snapshots__/get-repo.test.ts.snap +11 -0
  111. package/tests/__snapshots__/get-repos.test.ts.snap +11 -0
  112. package/tests/__snapshots__/moderation-events.test.ts.snap +19 -0
  113. package/tests/__snapshots__/moderation-statuses.test.ts.snap +114 -0
  114. package/tests/get-record.test.ts +4 -0
  115. package/tests/get-records.test.ts +4 -0
  116. package/tests/get-repo.test.ts +4 -0
  117. package/tests/get-repos.test.ts +4 -0
  118. package/tests/moderation-events.test.ts +4 -0
  119. package/tests/moderation-statuses.test.ts +4 -0
  120. package/tests/query-labels.test.ts +1 -0
  121. package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atproto/ozone
2
2
 
3
+ ## 0.1.70
4
+
5
+ ### Patch Changes
6
+
7
+ - [#3416](https://github.com/bluesky-social/atproto/pull/3416) [`50603b4f2`](https://github.com/bluesky-social/atproto/commit/50603b4f2ef08bd618730107ec164a57f27dcca6) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add account and record level statistics when querring `tools.ozone.moderation.queryStatuses`.
8
+
9
+ - Updated dependencies [[`50603b4f2`](https://github.com/bluesky-social/atproto/commit/50603b4f2ef08bd618730107ec164a57f27dcca6)]:
10
+ - @atproto/api@0.13.29
11
+
3
12
  ## 0.1.69
4
13
 
5
14
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"queryStatuses.d.ts","sourceRoot":"","sources":["../../../src/api/moderation/queryStatuses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,UAAU,MAAM,eAAe,CAAA;AAGtC,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAgFvD"}
1
+ {"version":3,"file":"queryStatuses.d.ts","sourceRoot":"","sources":["../../../src/api/moderation/queryStatuses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,UAAU,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,OAAO,WAAW,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,QAmBvD"}
@@ -1,45 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = default_1;
4
- const util_1 = require("../util");
5
4
  function default_1(server, ctx) {
6
5
  server.tools.ozone.moderation.queryStatuses({
7
6
  auth: ctx.authVerifier.modOrAdminToken,
8
7
  handler: async ({ params }) => {
9
- const { includeAllUserRecords, subject, takendown, appealed, reviewState, reviewedAfter, reviewedBefore, reportedAfter, reportedBefore, ignoreSubjects, lastReviewedBy, hostingDeletedBefore, hostingDeletedAfter, hostingUpdatedBefore, hostingUpdatedAfter, hostingStatuses, sortDirection = 'desc', sortField = 'lastReportedAt', includeMuted = false, onlyMuted = false, limit = 50, cursor, tags = [], excludeTags = [], collections = [], subjectType, queueCount, queueIndex, queueSeed, } = params;
10
8
  const db = ctx.db;
11
9
  const modService = ctx.modService(db);
12
- const results = await modService.getSubjectStatuses({
13
- reviewState: (0, util_1.getReviewState)(reviewState),
14
- includeAllUserRecords,
15
- subject,
16
- takendown,
17
- appealed,
18
- reviewedAfter,
19
- reviewedBefore,
20
- reportedAfter,
21
- reportedBefore,
22
- includeMuted,
23
- hostingDeletedBefore,
24
- hostingDeletedAfter,
25
- hostingUpdatedBefore,
26
- hostingUpdatedAfter,
27
- hostingStatuses,
28
- onlyMuted,
29
- ignoreSubjects,
30
- sortDirection,
31
- lastReviewedBy,
32
- sortField,
33
- limit,
34
- cursor,
35
- tags,
36
- excludeTags,
37
- collections,
38
- subjectType,
39
- queueCount,
40
- queueIndex,
41
- queueSeed,
42
- });
10
+ const results = await modService.getSubjectStatuses(params);
43
11
  const subjectStatuses = results.statuses.map((status) => modService.views.formatSubjectStatus(status));
44
12
  return {
45
13
  encoding: 'application/json',
@@ -1 +1 @@
1
- {"version":3,"file":"queryStatuses.js","sourceRoot":"","sources":["../../../src/api/moderation/queryStatuses.ts"],"names":[],"mappings":";;AAIA,4BAgFC;AAlFD,kCAAwC;AAExC,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;QAC1C,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,eAAe;QACtC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC5B,MAAM,EACJ,qBAAqB,EACrB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,aAAa,GAAG,MAAM,EACtB,SAAS,GAAG,gBAAgB,EAC5B,YAAY,GAAG,KAAK,EACpB,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,EAAE,EACV,MAAM,EACN,IAAI,GAAG,EAAE,EACT,WAAW,GAAG,EAAE,EAChB,WAAW,GAAG,EAAE,EAChB,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,GACV,GAAG,MAAM,CAAA;YACV,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAA;YACjB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC;gBAClD,WAAW,EAAE,IAAA,qBAAc,EAAC,WAAW,CAAC;gBACxC,qBAAqB;gBACrB,OAAO;gBACP,SAAS;gBACT,QAAQ;gBACR,aAAa;gBACb,cAAc;gBACd,aAAa;gBACb,cAAc;gBACd,YAAY;gBACZ,oBAAoB;gBACpB,mBAAmB;gBACnB,oBAAoB;gBACpB,mBAAmB;gBACnB,eAAe;gBACf,SAAS;gBACT,cAAc;gBACd,aAAa;gBACb,cAAc;gBACd,SAAS;gBACT,KAAK;gBACL,MAAM;gBACN,IAAI;gBACJ,WAAW;gBACX,WAAW;gBACX,WAAW;gBACX,UAAU;gBACV,UAAU;gBACV,SAAS;aACV,CAAC,CAAA;YACF,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtD,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAC7C,CAAA;YACD,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,eAAe;iBAChB;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"queryStatuses.js","sourceRoot":"","sources":["../../../src/api/moderation/queryStatuses.ts"],"names":[],"mappings":";;AAGA,4BAmBC;AAnBD,mBAAyB,MAAc,EAAE,GAAe;IACtD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC;QAC1C,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,eAAe;QACtC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC5B,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAA;YACjB,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACrC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;YAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtD,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAC7C,CAAA;YACD,OAAO;gBACL,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE;oBACJ,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,eAAe;iBAChB;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -1,14 +1,57 @@
1
- import PQueue from 'p-queue';
2
1
  import { Database } from './db';
2
+ type Task = (db: Database, signal: AbortSignal) => Promise<void>;
3
+ /**
4
+ * A simple queue for in-process, out-of-band/backgrounded work
5
+ */
3
6
  export declare class BackgroundQueue {
4
- db: Database;
5
- queue: PQueue<import("p-queue/dist/priority-queue").default, import("p-queue").DefaultAddOptions>;
6
- destroyed: boolean;
7
+ protected db: Database;
8
+ private abortController;
9
+ private queue;
10
+ get signal(): AbortSignal;
11
+ get destroyed(): boolean;
7
12
  constructor(db: Database);
8
- add(task: Task): void;
13
+ getStats(): {
14
+ runningCount: number;
15
+ waitingCount: number;
16
+ };
17
+ /**
18
+ * Add a task that will be executed at some point in the future.
19
+ *
20
+ * The task will be executed even if the backgroundQueue is destroyed, unless
21
+ * the provided `signal` is aborted.
22
+ *
23
+ * The `signal` provided to the task will be aborted whenever either the
24
+ * backgroundQueue is destroyed or the provided `signal` is aborted.
25
+ */
26
+ add(task: Task, signal?: AbortSignal): Promise<void>;
9
27
  processAll(): Promise<void>;
28
+ /**
29
+ * On destroy we stop accepting new tasks, but complete all
30
+ * pending/in-progress tasks. Tasks can decide to abort their current
31
+ * operation based on the signal they received. The application calls this
32
+ * only once http connections have drained (tasks no longer being added).
33
+ */
34
+ destroy(): Promise<void>;
35
+ }
36
+ /**
37
+ * A simple periodic background task runner. This class will schedule a task to
38
+ * run through a provided {@link BackgroundQueue} at a fixed interval. The task
39
+ * will never run more than once concurrently, and will wait at least `interval`
40
+ * milliseconds between the end of one run and the start of the next.
41
+ */
42
+ export declare class PeriodicBackgroundTask {
43
+ protected backgroundQueue: BackgroundQueue;
44
+ protected interval: number;
45
+ protected task: Task;
46
+ private abortController;
47
+ private intervalPromise?;
48
+ private runningPromise?;
49
+ get signal(): AbortSignal;
50
+ get destroyed(): boolean;
51
+ constructor(backgroundQueue: BackgroundQueue, interval: number, task: Task);
52
+ run(signal?: AbortSignal): Promise<void>;
53
+ start(): void;
10
54
  destroy(): Promise<void>;
11
55
  }
12
- type Task = (db: Database) => Promise<void>;
13
56
  export {};
14
57
  //# sourceMappingURL=background.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAK/B,qBAAa,eAAe;IAGP,EAAE,EAAE,QAAQ;IAF/B,KAAK,6FAAkC;IACvC,SAAS,UAAQ;gBACE,EAAE,EAAE,QAAQ;IAE/B,GAAG,CAAC,IAAI,EAAE,IAAI;IAWR,UAAU;IAMV,OAAO;CAId;AAED,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAI/B,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhE;;GAEG;AACH,qBAAa,eAAe;IAYd,SAAS,CAAC,EAAE,EAAE,QAAQ;IAXlC,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,KAAK,CAAkC;IAE/C,IAAW,MAAM,gBAEhB;IAED,IAAW,SAAS,YAEnB;gBAEqB,EAAE,EAAE,QAAQ;IAElC,QAAQ;;;;IAOR;;;;;;;;OAQG;IACG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BpD,UAAU;IAIhB;;;;;OAKG;IACG,OAAO;CAId;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IAe/B,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,IAAI,EAAE,IAAI;IAhBtB,OAAO,CAAC,eAAe,CAAiB;IAExC,OAAO,CAAC,eAAe,CAAC,CAAe;IACvC,OAAO,CAAC,cAAc,CAAC,CAAe;IAEtC,IAAW,MAAM,gBAEhB;IAED,IAAW,SAAS,YAEnB;gBAGW,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI;IAWf,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxC,KAAK;IAUC,OAAO;CAWrB"}
@@ -3,11 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BackgroundQueue = void 0;
6
+ exports.PeriodicBackgroundTask = exports.BackgroundQueue = void 0;
7
7
  const p_queue_1 = __importDefault(require("p-queue"));
8
8
  const logger_1 = require("./logger");
9
- // A simple queue for in-process, out-of-band/backgrounded work
9
+ const util_1 = require("./util");
10
+ /**
11
+ * A simple queue for in-process, out-of-band/backgrounded work
12
+ */
10
13
  class BackgroundQueue {
14
+ get signal() {
15
+ return this.abortController.signal;
16
+ }
17
+ get destroyed() {
18
+ return this.signal.aborted;
19
+ }
11
20
  constructor(db) {
12
21
  Object.defineProperty(this, "db", {
13
22
  enumerable: true,
@@ -15,38 +24,164 @@ class BackgroundQueue {
15
24
  writable: true,
16
25
  value: db
17
26
  });
18
- Object.defineProperty(this, "queue", {
27
+ Object.defineProperty(this, "abortController", {
19
28
  enumerable: true,
20
29
  configurable: true,
21
30
  writable: true,
22
- value: new p_queue_1.default({ concurrency: 20 })
31
+ value: new AbortController()
23
32
  });
24
- Object.defineProperty(this, "destroyed", {
33
+ Object.defineProperty(this, "queue", {
25
34
  enumerable: true,
26
35
  configurable: true,
27
36
  writable: true,
28
- value: false
37
+ value: new p_queue_1.default({ concurrency: 20 })
29
38
  });
30
39
  }
31
- add(task) {
40
+ getStats() {
41
+ return {
42
+ runningCount: this.queue.pending,
43
+ waitingCount: this.queue.size,
44
+ };
45
+ }
46
+ /**
47
+ * Add a task that will be executed at some point in the future.
48
+ *
49
+ * The task will be executed even if the backgroundQueue is destroyed, unless
50
+ * the provided `signal` is aborted.
51
+ *
52
+ * The `signal` provided to the task will be aborted whenever either the
53
+ * backgroundQueue is destroyed or the provided `signal` is aborted.
54
+ */
55
+ async add(task, signal) {
32
56
  if (this.destroyed) {
33
57
  return;
34
58
  }
35
- this.queue
36
- .add(() => task(this.db))
37
- .catch((err) => {
38
- logger_1.dbLogger.error(err, 'background queue task failed');
59
+ const abortController = (0, util_1.boundAbortController)(this.signal, signal);
60
+ return this.queue.add(async () => {
61
+ try {
62
+ // Do not run the task if the signal provided to the task has become
63
+ // aborted. Do not use `abortController.signal` here since we do not
64
+ // want to abort the task if the backgroundQueue is being destroyed.
65
+ if (signal?.aborted)
66
+ return;
67
+ // The task will receive a "combined signal" allowing it to abort if
68
+ // either the backgroundQueue is destroyed or the provided signal is
69
+ // aborted.
70
+ await task(this.db, abortController.signal);
71
+ }
72
+ catch (err) {
73
+ if (!(0, util_1.isCausedBySignal)(err, abortController.signal)) {
74
+ logger_1.dbLogger.error(err, 'background queue task failed');
75
+ }
76
+ }
77
+ finally {
78
+ abortController.abort();
79
+ }
39
80
  });
40
81
  }
41
82
  async processAll() {
42
83
  await this.queue.onIdle();
43
84
  }
44
- // On destroy we stop accepting new tasks, but complete all pending/in-progress tasks.
45
- // The application calls this only once http connections have drained (tasks no longer being added).
85
+ /**
86
+ * On destroy we stop accepting new tasks, but complete all
87
+ * pending/in-progress tasks. Tasks can decide to abort their current
88
+ * operation based on the signal they received. The application calls this
89
+ * only once http connections have drained (tasks no longer being added).
90
+ */
46
91
  async destroy() {
47
- this.destroyed = true;
92
+ this.abortController.abort();
48
93
  await this.queue.onIdle();
49
94
  }
50
95
  }
51
96
  exports.BackgroundQueue = BackgroundQueue;
97
+ /**
98
+ * A simple periodic background task runner. This class will schedule a task to
99
+ * run through a provided {@link BackgroundQueue} at a fixed interval. The task
100
+ * will never run more than once concurrently, and will wait at least `interval`
101
+ * milliseconds between the end of one run and the start of the next.
102
+ */
103
+ class PeriodicBackgroundTask {
104
+ get signal() {
105
+ return this.abortController.signal;
106
+ }
107
+ get destroyed() {
108
+ return this.signal.aborted;
109
+ }
110
+ constructor(backgroundQueue, interval, task) {
111
+ Object.defineProperty(this, "backgroundQueue", {
112
+ enumerable: true,
113
+ configurable: true,
114
+ writable: true,
115
+ value: backgroundQueue
116
+ });
117
+ Object.defineProperty(this, "interval", {
118
+ enumerable: true,
119
+ configurable: true,
120
+ writable: true,
121
+ value: interval
122
+ });
123
+ Object.defineProperty(this, "task", {
124
+ enumerable: true,
125
+ configurable: true,
126
+ writable: true,
127
+ value: task
128
+ });
129
+ Object.defineProperty(this, "abortController", {
130
+ enumerable: true,
131
+ configurable: true,
132
+ writable: true,
133
+ value: void 0
134
+ });
135
+ Object.defineProperty(this, "intervalPromise", {
136
+ enumerable: true,
137
+ configurable: true,
138
+ writable: true,
139
+ value: void 0
140
+ });
141
+ Object.defineProperty(this, "runningPromise", {
142
+ enumerable: true,
143
+ configurable: true,
144
+ writable: true,
145
+ value: void 0
146
+ });
147
+ if (!Number.isFinite(interval) || interval <= 0) {
148
+ throw new TypeError('interval must be a positive number');
149
+ }
150
+ // Bind this class's signal to the backgroundQueue's signal (destroying this
151
+ // instance if the backgroundQueue is destroyed)
152
+ this.abortController = (0, util_1.boundAbortController)(backgroundQueue.signal);
153
+ }
154
+ run(signal) {
155
+ // `startInterval` already ensures that only one run is in progress at a
156
+ // time. However, we want to be able to expose a `run()` method that can be
157
+ // used to force a run, which could cause concurrent executions. We prevent
158
+ // this using the `runningPromise` property.
159
+ if (this.runningPromise)
160
+ return this.runningPromise;
161
+ // Combine the `this.signal` with the provided `signal`, if any.
162
+ const abortController = (0, util_1.boundAbortController)(this.signal, signal);
163
+ const promise = this.backgroundQueue.add(this.task, abortController.signal);
164
+ return (this.runningPromise = promise).finally(() => {
165
+ if (this.runningPromise === promise)
166
+ this.runningPromise = undefined;
167
+ // Cleanup the listeners added by `boundAbortController`
168
+ abortController.abort();
169
+ });
170
+ }
171
+ start() {
172
+ // Noop if already started. Throws if this.signal is aborted (instance is
173
+ // destroyed).
174
+ this.intervalPromise || (this.intervalPromise = (0, util_1.startInterval)(async (signal) => this.run(signal), this.interval, this.signal));
175
+ }
176
+ async destroy() {
177
+ // @NOTE This instance does not "own" the backgroundQueue, so we do not
178
+ // destroy it here.
179
+ this.abortController.abort();
180
+ console.error('ABOOOORT');
181
+ await this.intervalPromise;
182
+ this.intervalPromise = undefined;
183
+ console.error('DONE -_-');
184
+ }
185
+ }
186
+ exports.PeriodicBackgroundTask = PeriodicBackgroundTask;
52
187
  //# sourceMappingURL=background.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"background.js","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA4B;AAE5B,qCAAmC;AAEnC,+DAA+D;AAE/D,MAAa,eAAe;IAG1B,YAAmB,EAAY;QAAnB;;;;mBAAO,EAAE;WAAU;QAF/B;;;;mBAAQ,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;WAAA;QACvC;;;;mBAAY,KAAK;WAAA;IACiB,CAAC;IAEnC,GAAG,CAAC,IAAU;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK;aACP,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,iBAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,sFAAsF;IACtF,oGAAoG;IACpG,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;CACF;AA1BD,0CA0BC"}
1
+ {"version":3,"file":"background.js","sourceRoot":"","sources":["../src/background.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA4B;AAE5B,qCAAmC;AACnC,iCAA8E;AAI9E;;GAEG;AACH,MAAa,eAAe;IAI1B,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;IACpC,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,YAAsB,EAAY;QAAtB;;;;mBAAU,EAAE;WAAU;QAX1B;;;;mBAAkB,IAAI,eAAe,EAAE;WAAA;QACvC;;;;mBAAQ,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;WAAA;IAUV,CAAC;IAEtC,QAAQ;QACN,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAChC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;SAC9B,CAAA;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,CAAC,IAAU,EAAE,MAAoB;QACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QAED,MAAM,eAAe,GAAG,IAAA,2BAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAEjE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAO,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC;gBACH,oEAAoE;gBACpE,oEAAoE;gBACpE,oEAAoE;gBACpE,IAAI,MAAM,EAAE,OAAO;oBAAE,OAAM;gBAE3B,oEAAoE;gBACpE,oEAAoE;gBACpE,WAAW;gBACX,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;YAC7C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAA,uBAAgB,EAAC,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnD,iBAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,eAAe,CAAC,KAAK,EAAE,CAAA;YACzB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;CACF;AAxED,0CAwEC;AAED;;;;;GAKG;AACH,MAAa,sBAAsB;IAMjC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;IACpC,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC5B,CAAC;IAED,YACY,eAAgC,EAChC,QAAgB,EAChB,IAAU;QAFpB;;;;mBAAU,eAAe;WAAiB;QAC1C;;;;mBAAU,QAAQ;WAAQ;QAC1B;;;;mBAAU,IAAI;WAAM;QAhBd;;;;;WAAgC;QAEhC;;;;;WAA+B;QAC/B;;;;;WAA8B;QAepC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAA;QAC3D,CAAC;QAED,4EAA4E;QAC5E,gDAAgD;QAChD,IAAI,CAAC,eAAe,GAAG,IAAA,2BAAoB,EAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC;IAEM,GAAG,CAAC,MAAoB;QAC7B,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,4CAA4C;QAE5C,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc,CAAA;QAEnD,gEAAgE;QAChE,MAAM,eAAe,GAAG,IAAA,2BAAoB,EAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAEjE,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;QAE3E,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YAClD,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO;gBAAE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;YAEpE,wDAAwD;YACxD,eAAe,CAAC,KAAK,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK;QACV,yEAAyE;QACzE,cAAc;QACd,IAAI,CAAC,eAAe,KAApB,IAAI,CAAC,eAAe,GAAK,IAAA,oBAAa,EACpC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAClC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,CACZ,EAAA;IACH,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,uEAAuE;QACvE,mBAAmB;QAEnB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAEzB,MAAM,IAAI,CAAC,eAAe,CAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;QAChC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC3B,CAAC;CACF;AAtED,wDAsEC"}
@@ -28,6 +28,7 @@ export type DatabaseConfig = {
28
28
  poolSize?: number;
29
29
  poolMaxUses?: number;
30
30
  poolIdleTimeoutMs?: number;
31
+ materializedViewRefreshIntervalMs?: number;
31
32
  };
32
33
  export type AppviewConfig = {
33
34
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAMxC,eAAO,MAAM,QAAQ,QAAS,gBAAgB,KAAG,WAoFhD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,aAAa,CAAA;IACtB,EAAE,EAAE,cAAc,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,GAAG,EAAE,SAAS,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,GAAG,EAAE,SAAS,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACnC,MAAM,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAMxC,eAAO,MAAM,QAAQ,QAAS,gBAAgB,KAAG,WAqFhD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,aAAa,CAAA;IACtB,EAAE,EAAE,cAAc,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,GAAG,EAAE,SAAS,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IACvB,GAAG,EAAE,SAAS,CAAA;IACd,QAAQ,EAAE,cAAc,CAAA;IACxB,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACnC,MAAM,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iCAAiC,CAAC,EAAE,MAAM,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA"}
@@ -26,6 +26,7 @@ const envToCfg = (env) => {
26
26
  poolSize: env.dbPoolSize,
27
27
  poolMaxUses: env.dbPoolMaxUses,
28
28
  poolIdleTimeoutMs: env.dbPoolIdleTimeoutMs,
29
+ materializedViewRefreshIntervalMs: env.dbMaterializedViewRefreshIntervalMs,
29
30
  };
30
31
  (0, node_assert_1.default)(env.appviewUrl, 'appviewUrl is required');
31
32
  (0, node_assert_1.default)(env.appviewDid, 'appviewDid is required');
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAEhC,4CAA2C;AAE3C,iCAAiC;AACjC,gEAAgE;AAEzD,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAe,EAAE;IAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAA;IAC7B,IAAA,qBAAM,EAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAA;IAC9C,IAAA,qBAAM,EAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAA;IAC9C,MAAM,UAAU,GAA2B;QACzC,IAAI;QACJ,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,EAAE,GAAG,CAAC,SAAS;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAA;IAED,IAAA,qBAAM,EAAC,GAAG,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAA;IACtD,MAAM,KAAK,GAAsB;QAC/B,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,QAAQ,EAAE,GAAG,CAAC,UAAU;QACxB,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;QAC1C,iCAAiC,EAAE,GAAG,CAAC,mCAAmC;KAC3E,CAAA;IAED,IAAA,qBAAM,EAAC,GAAG,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAA;IAChD,IAAA,qBAAM,EAAC,GAAG,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAA;IAChD,MAAM,UAAU,GAA2B;QACzC,GAAG,EAAE,GAAG,CAAC,UAAU;QACnB,GAAG,EAAE,GAAG,CAAC,UAAU;QACnB,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB;KACpC,CAAA;IAED,IAAI,MAAM,GAAuB,IAAI,CAAA;IACrC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAA,qBAAM,EAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;QACxC,IAAA,qBAAM,EAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;QACxC,MAAM,GAAG;YACP,GAAG,EAAE,GAAG,CAAC,MAAM;YACf,GAAG,EAAE,GAAG,CAAC,MAAM;SAChB,CAAA;IACH,CAAC;IAED,IAAI,OAAO,GAAwB,IAAI,CAAA;IACvC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAA,qBAAM,EAAC,GAAG,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAA;QACnE,IAAA,qBAAM,EAAC,GAAG,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAA;QACnE,OAAO,GAAG;YACR,GAAG,EAAE,GAAG,CAAC,OAAO;YAChB,GAAG,EAAE,GAAG,CAAC,OAAO;SACjB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAuB;QACjC,KAAK,EAAE,GAAG,CAAC,QAAQ;KACpB,CAAA;IAED,IAAA,qBAAM,EAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAA;IAC9C,MAAM,WAAW,GAA4B;QAC3C,MAAM,EAAE,GAAG,CAAC,SAAS;QACrB,WAAW,EAAE,GAAG,CAAC,cAAc,IAAI,YAAG;QACtC,aAAa,EAAE,GAAG,CAAC,gBAAgB,IAAI,aAAI;KAC5C,CAAA;IAED,MAAM,oBAAoB,GACxB,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,uBAAuB;QAC9C,CAAC,CAAC;YACE,GAAG,EAAE,GAAG,CAAC,aAAa;YACtB,aAAa,EAAE,GAAG,CAAC,uBAAuB;SAC3C;QACH,CAAC,CAAC,IAAI,CAAA;IACV,MAAM,SAAS,GAA0B;QACvC,MAAM,EAAE,GAAG,CAAC,SAAS;QACrB,UAAU,EAAE,GAAG,CAAC,aAAa;QAC7B,MAAM,EAAE,GAAG,CAAC,UAAU;KACvB,CAAA;IAED,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,MAAM;QACX,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,oBAAoB;QAChC,MAAM,EAAE,SAAS;KAClB,CAAA;AACH,CAAC,CAAA;AArFY,QAAA,QAAQ,YAqFpB"}
@@ -18,6 +18,7 @@ export type OzoneEnvironment = {
18
18
  dbPoolSize?: number;
19
19
  dbPoolMaxUses?: number;
20
20
  dbPoolIdleTimeoutMs?: number;
21
+ dbMaterializedViewRefreshIntervalMs?: number;
21
22
  didPlcUrl?: string;
22
23
  didCacheStaleTTL?: number;
23
24
  didCacheMaxTTL?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAAO,gBAgC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAAO,gBAmC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mCAAmC,CAAC,EAAE,MAAM,CAAA;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA"}
@@ -22,6 +22,7 @@ const readEnv = () => {
22
22
  dbPoolSize: (0, common_1.envInt)('OZONE_DB_POOL_SIZE'),
23
23
  dbPoolMaxUses: (0, common_1.envInt)('OZONE_DB_POOL_MAX_USES'),
24
24
  dbPoolIdleTimeoutMs: (0, common_1.envInt)('OZONE_DB_POOL_IDLE_TIMEOUT_MS'),
25
+ dbMaterializedViewRefreshIntervalMs: (0, common_1.envInt)('OZONE_DB_MATERIALIZED_VIEW_REFRESH_INTERVAL_MS'),
25
26
  didPlcUrl: (0, common_1.envStr)('OZONE_DID_PLC_URL'),
26
27
  didCacheStaleTTL: (0, common_1.envInt)('OZONE_DID_CACHE_STALE_TTL'),
27
28
  didCacheMaxTTL: (0, common_1.envInt)('OZONE_DID_CACHE_MAX_TTL'),
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":";;;AAAA,4CAAkE;AAE3D,MAAM,OAAO,GAAG,GAAqB,EAAE;IAC5C,OAAO;QACL,OAAO,EAAE,IAAA,eAAM,EAAC,UAAU,CAAC;QAC3B,OAAO,EAAE,IAAA,gBAAO,EAAC,gBAAgB,CAAC;QAClC,OAAO,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAChC,IAAI,EAAE,IAAA,eAAM,EAAC,YAAY,CAAC;QAC1B,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,iBAAiB,EAAE,IAAA,gBAAO,EAAC,2BAA2B,CAAC;QACvD,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,gBAAgB,EAAE,IAAA,eAAM,EAAC,0BAA0B,CAAC;QACpD,UAAU,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,wBAAwB,CAAC;QAC/C,mBAAmB,EAAE,IAAA,eAAM,EAAC,+BAA+B,CAAC;QAC5D,SAAS,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACtC,gBAAgB,EAAE,IAAA,eAAM,EAAC,2BAA2B,CAAC;QACrD,cAAc,EAAE,IAAA,eAAM,EAAC,yBAAyB,CAAC;QACjD,QAAQ,EAAE,IAAA,gBAAO,EAAC,iBAAiB,CAAC;QACpC,SAAS,EAAE,IAAA,gBAAO,EAAC,kBAAkB,CAAC;QACtC,aAAa,EAAE,IAAA,gBAAO,EAAC,sBAAsB,CAAC;QAC9C,UAAU,EAAE,IAAA,gBAAO,EAAC,mBAAmB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,sBAAsB,CAAC;QAC7C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,uBAAuB,EAAE,IAAA,eAAM,EAAC,kCAAkC,CAAC;KACpE,CAAA;AACH,CAAC,CAAA;AAhCY,QAAA,OAAO,WAgCnB"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":";;;AAAA,4CAAkE;AAE3D,MAAM,OAAO,GAAG,GAAqB,EAAE;IAC5C,OAAO;QACL,OAAO,EAAE,IAAA,eAAM,EAAC,UAAU,CAAC;QAC3B,OAAO,EAAE,IAAA,gBAAO,EAAC,gBAAgB,CAAC;QAClC,OAAO,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAChC,IAAI,EAAE,IAAA,eAAM,EAAC,YAAY,CAAC;QAC1B,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,SAAS,EAAE,IAAA,eAAM,EAAC,kBAAkB,CAAC;QACrC,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,UAAU,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACvC,iBAAiB,EAAE,IAAA,gBAAO,EAAC,2BAA2B,CAAC;QACvD,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,MAAM,EAAE,IAAA,eAAM,EAAC,eAAe,CAAC;QAC/B,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,OAAO,EAAE,IAAA,eAAM,EAAC,gBAAgB,CAAC;QACjC,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,gBAAgB,EAAE,IAAA,eAAM,EAAC,0BAA0B,CAAC;QACpD,UAAU,EAAE,IAAA,eAAM,EAAC,oBAAoB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,wBAAwB,CAAC;QAC/C,mBAAmB,EAAE,IAAA,eAAM,EAAC,+BAA+B,CAAC;QAC5D,mCAAmC,EAAE,IAAA,eAAM,EACzC,gDAAgD,CACjD;QACD,SAAS,EAAE,IAAA,eAAM,EAAC,mBAAmB,CAAC;QACtC,gBAAgB,EAAE,IAAA,eAAM,EAAC,2BAA2B,CAAC;QACrD,cAAc,EAAE,IAAA,eAAM,EAAC,yBAAyB,CAAC;QACjD,QAAQ,EAAE,IAAA,gBAAO,EAAC,iBAAiB,CAAC;QACpC,SAAS,EAAE,IAAA,gBAAO,EAAC,kBAAkB,CAAC;QACtC,aAAa,EAAE,IAAA,gBAAO,EAAC,sBAAsB,CAAC;QAC9C,UAAU,EAAE,IAAA,gBAAO,EAAC,mBAAmB,CAAC;QACxC,aAAa,EAAE,IAAA,eAAM,EAAC,sBAAsB,CAAC;QAC7C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,aAAa,EAAE,IAAA,eAAM,EAAC,uBAAuB,CAAC;QAC9C,uBAAuB,EAAE,IAAA,eAAM,EAAC,kCAAkC,CAAC;KACpE,CAAA;AACH,CAAC,CAAA;AAnCY,QAAA,OAAO,WAmCnB"}
@@ -3,14 +3,16 @@ import { OzoneConfig, OzoneSecrets } from '../config';
3
3
  import { Database } from '../db';
4
4
  import { EventPusher } from './event-pusher';
5
5
  import { EventReverser } from './event-reverser';
6
- import { ModerationServiceCreator } from '../mod-service';
6
+ import { BackgroundQueue } from '../background';
7
+ import { MaterializedViewRefresher } from './materialized-view-refresher';
7
8
  export type DaemonContextOptions = {
8
9
  db: Database;
9
10
  cfg: OzoneConfig;
10
- modService: ModerationServiceCreator;
11
+ backgroundQueue: BackgroundQueue;
11
12
  signingKey: Keypair;
12
13
  eventPusher: EventPusher;
13
14
  eventReverser: EventReverser;
15
+ materializedViewRefresher: MaterializedViewRefresher;
14
16
  };
15
17
  export declare class DaemonContext {
16
18
  private opts;
@@ -18,9 +20,13 @@ export declare class DaemonContext {
18
20
  static fromConfig(cfg: OzoneConfig, secrets: OzoneSecrets, overrides?: Partial<DaemonContextOptions>): Promise<DaemonContext>;
19
21
  get db(): Database;
20
22
  get cfg(): OzoneConfig;
21
- get modService(): ModerationServiceCreator;
23
+ get backgroundQueue(): BackgroundQueue;
22
24
  get eventPusher(): EventPusher;
23
25
  get eventReverser(): EventReverser;
26
+ get materializedViewRefresher(): MaterializedViewRefresher;
27
+ start(): Promise<void>;
28
+ processAll(): Promise<void>;
29
+ destroy(): Promise<void>;
24
30
  }
25
31
  export default DaemonContext;
26
32
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAA;AAI3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAqB,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AAI5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,QAAQ,CAAA;IACZ,GAAG,EAAE,WAAW,CAAA;IAChB,UAAU,EAAE,wBAAwB,CAAA;IACpC,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;CAC7B,CAAA;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,oBAAoB;WAEjC,UAAU,CACrB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC;IAoDzB,IAAI,EAAE,IAAI,QAAQ,CAEjB;IAED,IAAI,GAAG,IAAI,WAAW,CAErB;IAED,IAAI,UAAU,IAAI,wBAAwB,CAEzC;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;CACF;AAED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,iBAAiB,CAAA;AAI3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAGzE,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,QAAQ,CAAA;IACZ,GAAG,EAAE,WAAW,CAAA;IAChB,eAAe,EAAE,eAAe,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,yBAAyB,EAAE,yBAAyB,CAAA;CACrD,CAAA;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,oBAAoB;WAEjC,UAAU,CACrB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACxC,OAAO,CAAC,aAAa,CAAC;IA0DzB,IAAI,EAAE,IAAI,QAAQ,CAEjB;IAED,IAAI,GAAG,IAAI,WAAW,CAErB;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,IAAI,yBAAyB,IAAI,yBAAyB,CAEzD;IAEK,KAAK;IAML,UAAU;IAMV,OAAO;CAYd;AAED,eAAe,aAAa,CAAA"}
@@ -11,6 +11,8 @@ const event_reverser_1 = require("./event-reverser");
11
11
  const mod_service_1 = require("../mod-service");
12
12
  const background_1 = require("../background");
13
13
  const util_1 = require("../util");
14
+ const materialized_view_refresher_1 = require("./materialized-view-refresher");
15
+ const common_1 = require("@atproto/common");
14
16
  class DaemonContext {
15
17
  constructor(opts) {
16
18
  Object.defineProperty(this, "opts", {
@@ -44,13 +46,15 @@ class DaemonContext {
44
46
  const backgroundQueue = new background_1.BackgroundQueue(db);
45
47
  const modService = mod_service_1.ModerationService.creator(signingKey, signingKeyId, cfg, backgroundQueue, idResolver, eventPusher, appviewAgent, createAuthHeaders);
46
48
  const eventReverser = new event_reverser_1.EventReverser(db, modService);
49
+ const materializedViewRefresher = new materialized_view_refresher_1.MaterializedViewRefresher(backgroundQueue, cfg.db.materializedViewRefreshIntervalMs);
47
50
  return new DaemonContext({
48
51
  db,
49
52
  cfg,
50
- modService,
53
+ backgroundQueue,
51
54
  signingKey,
52
55
  eventPusher,
53
56
  eventReverser,
57
+ materializedViewRefresher,
54
58
  ...(overrides ?? {}),
55
59
  });
56
60
  }
@@ -60,8 +64,8 @@ class DaemonContext {
60
64
  get cfg() {
61
65
  return this.opts.cfg;
62
66
  }
63
- get modService() {
64
- return this.opts.modService;
67
+ get backgroundQueue() {
68
+ return this.opts.backgroundQueue;
65
69
  }
66
70
  get eventPusher() {
67
71
  return this.opts.eventPusher;
@@ -69,6 +73,32 @@ class DaemonContext {
69
73
  get eventReverser() {
70
74
  return this.opts.eventReverser;
71
75
  }
76
+ get materializedViewRefresher() {
77
+ return this.opts.materializedViewRefresher;
78
+ }
79
+ async start() {
80
+ this.eventPusher.start();
81
+ this.eventReverser.start();
82
+ this.materializedViewRefresher.start();
83
+ }
84
+ async processAll() {
85
+ // Sequential because the materialized view values depend on the events.
86
+ await this.eventPusher.processAll();
87
+ await this.materializedViewRefresher.run();
88
+ }
89
+ async destroy() {
90
+ try {
91
+ await (0, common_1.allFulfilled)([
92
+ this.eventReverser.destroy(),
93
+ this.eventPusher.destroy(),
94
+ this.materializedViewRefresher.destroy(),
95
+ ]);
96
+ }
97
+ finally {
98
+ await this.backgroundQueue.destroy();
99
+ await this.db.close();
100
+ }
101
+ }
72
102
  }
73
103
  exports.DaemonContext = DaemonContext;
74
104
  exports.default = DaemonContext;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":";;;AAAA,4CAA2D;AAC3D,sDAA+D;AAC/D,gDAA8C;AAC9C,sCAAuC;AAEvC,8BAAgC;AAChC,iDAA4C;AAC5C,qDAAgD;AAChD,gDAA4E;AAC5E,8CAA+C;AAC/C,kCAAyC;AAWzC,MAAa,aAAa;IACxB,YAAoB,IAA0B;QAAlC;;;;mBAAQ,IAAI;WAAsB;IAAG,CAAC;IAElD,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,GAAgB,EAChB,OAAqB,EACrB,SAAyC;QAEzC,MAAM,EAAE,GAAG,IAAI,aAAQ,CAAC;YACtB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW;YACvB,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,cAAc;SAC9B,CAAC,CAAA;QACF,MAAM,UAAU,GAAG,MAAM,yBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACvE,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAe,EAAC,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAEhE,MAAM,UAAU,GAAG,IAAI,qBAAU,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,IAAI,cAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC/D,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CACrD,IAAA,sCAAwB,EAAC;YACvB,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,kBAAkB;YACzC,GAAG;YACH,GAAG;YACH,OAAO,EAAE,UAAU;SACpB,CAAC,CAAA;QAEJ,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,EAAE,EAAE,iBAAiB,EAAE;YACzD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACzD,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,SAAS;SAC1B,CAAC,CAAA;QAEF,MAAM,eAAe,GAAG,IAAI,4BAAe,CAAC,EAAE,CAAC,CAAA;QAE/C,MAAM,UAAU,GAAG,+BAAiB,CAAC,OAAO,CAC1C,UAAU,EACV,YAAY,EACZ,GAAG,EACH,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,CAClB,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAEvD,OAAO,IAAI,aAAa,CAAC;YACvB,EAAE;YACF,GAAG;YACH,UAAU;YACV,UAAU;YACV,WAAW;YACX,aAAa;YACb,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC7B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;CACF;AA9ED,sCA8EC;AAED,kBAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/daemon/context.ts"],"names":[],"mappings":";;;AAAA,4CAA2D;AAC3D,sDAA+D;AAC/D,gDAA8C;AAC9C,sCAAuC;AAEvC,8BAAgC;AAChC,iDAA4C;AAC5C,qDAAgD;AAChD,gDAAkD;AAClD,8CAA+C;AAC/C,kCAAyC;AACzC,+EAAyE;AACzE,4CAA8C;AAY9C,MAAa,aAAa;IACxB,YAAoB,IAA0B;QAAlC;;;;mBAAQ,IAAI;WAAsB;IAAG,CAAC;IAElD,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,GAAgB,EAChB,OAAqB,EACrB,SAAyC;QAEzC,MAAM,EAAE,GAAG,IAAI,aAAQ,CAAC;YACtB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,WAAW;YACvB,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,cAAc;SAC9B,CAAC,CAAA;QACF,MAAM,UAAU,GAAG,MAAM,yBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACvE,MAAM,YAAY,GAAG,MAAM,IAAA,sBAAe,EAAC,EAAE,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;QAEhE,MAAM,UAAU,GAAG,IAAI,qBAAU,CAAC;YAChC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;SAC5B,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,IAAI,cAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;QAC/D,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CACrD,IAAA,sCAAwB,EAAC;YACvB,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,kBAAkB;YACzC,GAAG;YACH,GAAG;YACH,OAAO,EAAE,UAAU;SACpB,CAAC,CAAA;QAEJ,MAAM,WAAW,GAAG,IAAI,0BAAW,CAAC,EAAE,EAAE,iBAAiB,EAAE;YACzD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACzD,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,SAAS;SAC1B,CAAC,CAAA;QAEF,MAAM,eAAe,GAAG,IAAI,4BAAe,CAAC,EAAE,CAAC,CAAA;QAE/C,MAAM,UAAU,GAAG,+BAAiB,CAAC,OAAO,CAC1C,UAAU,EACV,YAAY,EACZ,GAAG,EACH,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,CAClB,CAAA;QAED,MAAM,aAAa,GAAG,IAAI,8BAAa,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;QAEvD,MAAM,yBAAyB,GAAG,IAAI,uDAAyB,CAC7D,eAAe,EACf,GAAG,CAAC,EAAE,CAAC,iCAAiC,CACzC,CAAA;QAED,OAAO,IAAI,aAAa,CAAC;YACvB,EAAE;YACF,GAAG;YACH,eAAe;YACf,UAAU;YACV,WAAW;YACX,aAAa;YACb,yBAAyB;YACzB,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAA;IAClC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;IAC9B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;IAChC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,wEAAwE;QACxE,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;QACnC,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,CAAA;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,IAAA,qBAAY,EAAC;gBACjB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBAC1B,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE;aACzC,CAAC,CAAA;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAA;YACpC,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;CACF;AAjHD,sCAiHC;AAED,kBAAe,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,aAAa,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,qBAAa,WAAW;IACH,GAAG,EAAE,aAAa;gBAAlB,GAAG,EAAE,aAAa;WACxB,MAAM,CACjB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC;IAKjB,KAAK;IAKL,UAAU;IAIV,OAAO;CAKd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,aAAa,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,qBAAa,WAAW;IACH,GAAG,EAAE,aAAa;gBAAlB,GAAG,EAAE,aAAa;WACxB,MAAM,CACjB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,OAAO,CAAC,WAAW,CAAC;IAKjB,KAAK;IAIL,UAAU;IAIV,OAAO;CAGd"}
@@ -25,16 +25,13 @@ class OzoneDaemon {
25
25
  return new OzoneDaemon(ctx);
26
26
  }
27
27
  async start() {
28
- this.ctx.eventPusher.start();
29
- this.ctx.eventReverser.start();
28
+ await this.ctx.start();
30
29
  }
31
30
  async processAll() {
32
- await this.ctx.eventPusher.processAll();
31
+ await this.ctx.processAll();
33
32
  }
34
33
  async destroy() {
35
- await this.ctx.eventReverser.destroy();
36
- await this.ctx.eventPusher.destroy();
37
- await this.ctx.db.close();
34
+ await this.ctx.destroy();
38
35
  }
39
36
  }
40
37
  exports.OzoneDaemon = OzoneDaemon;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":";;;;;;AACA,wDAAqC;AAGrC,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AAEtB,MAAa,WAAW;IACtB,YAAmB,GAAkB;QAAzB;;;;mBAAO,GAAG;WAAe;IAAG,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,GAAgB,EAChB,OAAqB,EACrB,SAAsC;QAEtC,MAAM,GAAG,GAAG,MAAM,iBAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;QACnE,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,CAAA;QACtC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;QACpC,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;CACF;AAzBD,kCAyBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":";;;;;;AACA,wDAAqC;AAGrC,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AACpB,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AAEtB,MAAa,WAAW;IACtB,YAAmB,GAAkB;QAAzB;;;;mBAAO,GAAG;WAAe;IAAG,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,GAAgB,EAChB,OAAqB,EACrB,SAAsC;QAEtC,MAAM,GAAG,GAAG,MAAM,iBAAa,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;QACnE,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF;AAtBD,kCAsBC"}
@@ -0,0 +1,5 @@
1
+ import { BackgroundQueue, PeriodicBackgroundTask } from '../background';
2
+ export declare class MaterializedViewRefresher extends PeriodicBackgroundTask {
3
+ constructor(backgroundQueue: BackgroundQueue, interval?: number);
4
+ }
5
+ //# sourceMappingURL=materialized-view-refresher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialized-view-refresher.d.ts","sourceRoot":"","sources":["../../src/daemon/materialized-view-refresher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEvE,qBAAa,yBAA0B,SAAQ,sBAAsB;gBACvD,eAAe,EAAE,eAAe,EAAE,QAAQ,SAAc;CAqBrE"}