@atproto/ozone 0.1.171 → 0.1.173

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 (80) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/daemon/event-reverser.d.ts +1 -0
  3. package/dist/daemon/event-reverser.d.ts.map +1 -1
  4. package/dist/daemon/event-reverser.js +42 -1
  5. package/dist/daemon/event-reverser.js.map +1 -1
  6. package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.d.ts +4 -0
  7. package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.d.ts.map +1 -0
  8. package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js +32 -0
  9. package/dist/db/migrations/20260428T000000000Z-add-expiring-tag-table.js.map +1 -0
  10. package/dist/db/migrations/index.d.ts +1 -0
  11. package/dist/db/migrations/index.d.ts.map +1 -1
  12. package/dist/db/migrations/index.js +2 -1
  13. package/dist/db/migrations/index.js.map +1 -1
  14. package/dist/db/schema/expiring_tag.d.ts +15 -0
  15. package/dist/db/schema/expiring_tag.d.ts.map +1 -0
  16. package/dist/db/schema/expiring_tag.js +5 -0
  17. package/dist/db/schema/expiring_tag.js.map +1 -0
  18. package/dist/db/schema/index.d.ts +2 -1
  19. package/dist/db/schema/index.d.ts.map +1 -1
  20. package/dist/db/schema/index.js.map +1 -1
  21. package/dist/lexicon/index.d.ts +2 -0
  22. package/dist/lexicon/index.d.ts.map +1 -1
  23. package/dist/lexicon/index.js +4 -0
  24. package/dist/lexicon/index.js.map +1 -1
  25. package/dist/lexicon/lexicons.d.ts +444 -64
  26. package/dist/lexicon/lexicons.d.ts.map +1 -1
  27. package/dist/lexicon/lexicons.js +225 -31
  28. package/dist/lexicon/lexicons.js.map +1 -1
  29. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +1 -0
  30. package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
  31. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  32. package/dist/lexicon/types/chat/bsky/actor/defs.d.ts +8 -2
  33. package/dist/lexicon/types/chat/bsky/actor/defs.d.ts.map +1 -1
  34. package/dist/lexicon/types/chat/bsky/actor/defs.js +9 -0
  35. package/dist/lexicon/types/chat/bsky/actor/defs.js.map +1 -1
  36. package/dist/lexicon/types/chat/bsky/convo/defs.d.ts +52 -22
  37. package/dist/lexicon/types/chat/bsky/convo/defs.d.ts.map +1 -1
  38. package/dist/lexicon/types/chat/bsky/convo/defs.js +9 -0
  39. package/dist/lexicon/types/chat/bsky/convo/defs.js.map +1 -1
  40. package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.d.ts +26 -0
  41. package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.d.ts.map +1 -0
  42. package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.js +7 -0
  43. package/dist/lexicon/types/chat/bsky/convo/getConvoMembers.js.map +1 -0
  44. package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts +3 -0
  45. package/dist/lexicon/types/chat/bsky/convo/getMessages.d.ts.map +1 -1
  46. package/dist/lexicon/types/chat/bsky/convo/getMessages.js.map +1 -1
  47. package/dist/lexicon/types/chat/bsky/group/addMembers.d.ts +2 -0
  48. package/dist/lexicon/types/chat/bsky/group/addMembers.d.ts.map +1 -1
  49. package/dist/lexicon/types/chat/bsky/group/addMembers.js.map +1 -1
  50. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +2 -0
  51. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts.map +1 -1
  52. package/dist/lexicon/types/tools/ozone/moderation/defs.js.map +1 -1
  53. package/dist/mod-service/expiring-tags.d.ts +27 -0
  54. package/dist/mod-service/expiring-tags.d.ts.map +1 -0
  55. package/dist/mod-service/expiring-tags.js +62 -0
  56. package/dist/mod-service/expiring-tags.js.map +1 -0
  57. package/dist/mod-service/index.d.ts.map +1 -1
  58. package/dist/mod-service/index.js +22 -0
  59. package/dist/mod-service/index.js.map +1 -1
  60. package/dist/mod-service/status.d.ts +4 -0
  61. package/dist/mod-service/status.d.ts.map +1 -1
  62. package/package.json +6 -6
  63. package/src/daemon/event-reverser.ts +50 -1
  64. package/src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts +32 -0
  65. package/src/db/migrations/index.ts +1 -0
  66. package/src/db/schema/expiring_tag.ts +17 -0
  67. package/src/db/schema/index.ts +3 -1
  68. package/src/lexicon/index.ts +13 -0
  69. package/src/lexicon/lexicons.ts +245 -31
  70. package/src/lexicon/types/app/bsky/actor/defs.ts +1 -0
  71. package/src/lexicon/types/chat/bsky/actor/defs.ts +17 -1
  72. package/src/lexicon/types/chat/bsky/convo/defs.ts +65 -22
  73. package/src/lexicon/types/chat/bsky/convo/getConvoMembers.ts +44 -0
  74. package/src/lexicon/types/chat/bsky/convo/getMessages.ts +3 -0
  75. package/src/lexicon/types/chat/bsky/group/addMembers.ts +2 -0
  76. package/src/lexicon/types/tools/ozone/moderation/defs.ts +2 -0
  77. package/src/mod-service/expiring-tags.ts +98 -0
  78. package/src/mod-service/index.ts +26 -0
  79. package/tests/expiring-tags.test.ts +231 -0
  80. package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atproto/ozone
2
2
 
3
+ ## 0.1.173
4
+
5
+ ### Patch Changes
6
+
7
+ - [#4894](https://github.com/bluesky-social/atproto/pull/4894) [`65a4b31`](https://github.com/bluesky-social/atproto/commit/65a4b31e67c786c06ce7d48d46b7c6c9d55fcec1) Thanks [@foysalit](https://github.com/foysalit)! - Add expiring tags in ozone
8
+
9
+ - Updated dependencies [[`65a4b31`](https://github.com/bluesky-social/atproto/commit/65a4b31e67c786c06ce7d48d46b7c6c9d55fcec1)]:
10
+ - @atproto/api@0.19.14
11
+
12
+ ## 0.1.172
13
+
14
+ ### Patch Changes
15
+
16
+ - [#4866](https://github.com/bluesky-social/atproto/pull/4866) [`750cfe9`](https://github.com/bluesky-social/atproto/commit/750cfe9020a11c5de1ce6b2e3647d52939a3e284) Thanks [@ds-boyce](https://github.com/ds-boyce)! - Add description fields
17
+
18
+ - Updated dependencies [[`3cb1569`](https://github.com/bluesky-social/atproto/commit/3cb156907a15f3f22a1be734f82b3b0c855b4da0), [`750cfe9`](https://github.com/bluesky-social/atproto/commit/750cfe9020a11c5de1ce6b2e3647d52939a3e284), [`dacb0e8`](https://github.com/bluesky-social/atproto/commit/dacb0e80053e00821408e64e91994fe7d1565f45)]:
19
+ - @atproto/api@0.19.10
20
+
3
21
  ## 0.1.171
4
22
 
5
23
  ### Patch Changes
@@ -12,5 +12,6 @@ export declare class EventReverser {
12
12
  destroy(): Promise<void>;
13
13
  revertState(subject: ReversalSubject): Promise<void>;
14
14
  findAndRevertDueActions(): Promise<void>;
15
+ findAndRevertExpiredTags(): Promise<void>;
15
16
  }
16
17
  //# sourceMappingURL=event-reverser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-reverser.d.ts","sourceRoot":"","sources":["../../src/daemon/event-reverser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAE1E,qBAAa,aAAa;IAMtB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,UAAU;IANpB,SAAS,UAAQ;IACjB,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAoB;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;gBAGZ,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,wBAAwB;IAG9C,KAAK;IAIL,IAAI;IAWE,OAAO;IASP,WAAW,CAAC,OAAO,EAAE,eAAe;IAkBpC,uBAAuB;CAS9B"}
1
+ {"version":3,"file":"event-reverser.d.ts","sourceRoot":"","sources":["../../src/daemon/event-reverser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAO1E,qBAAa,aAAa;IAMtB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,UAAU;IANpB,SAAS,UAAQ;IACjB,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAoB;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;gBAGZ,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,wBAAwB;IAG9C,KAAK;IAIL,IAAI;IAWE,OAAO;IASP,WAAW,CAAC,OAAO,EAAE,eAAe;IAkBpC,uBAAuB;IAavB,wBAAwB;CAwC/B"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventReverser = void 0;
4
4
  const common_1 = require("@atproto/common");
5
5
  const logger_1 = require("../logger");
6
+ const expiring_tags_1 = require("../mod-service/expiring-tags");
7
+ const subject_1 = require("../mod-service/subject");
6
8
  class EventReverser {
7
9
  constructor(db, modService) {
8
10
  Object.defineProperty(this, "db", {
@@ -76,7 +78,46 @@ class EventReverser {
76
78
  const subjectsDueForReversal = await moderationService.getSubjectsDueForReversal();
77
79
  // We shouldn't have too many actions due for reversal at any given time, so running in parallel is probably fine
78
80
  // Internally, each reversal runs within its own transaction
79
- await Promise.all(subjectsDueForReversal.map(this.revertState.bind(this)));
81
+ await Promise.all([
82
+ ...subjectsDueForReversal.map(this.revertState.bind(this)),
83
+ this.findAndRevertExpiredTags(),
84
+ ]);
85
+ }
86
+ async findAndRevertExpiredTags() {
87
+ const groups = await (0, expiring_tags_1.getExpiredTags)(this.db);
88
+ if (!groups.length)
89
+ return;
90
+ for (const group of groups) {
91
+ await this.db.transaction(async (dbTxn) => {
92
+ // Check which tags are still present on the subject
93
+ const status = await dbTxn.db
94
+ .selectFrom('moderation_subject_status')
95
+ .where('did', '=', group.did)
96
+ .where('recordPath', '=', group.recordPath)
97
+ .selectAll()
98
+ .executeTakeFirst();
99
+ const currentTags = status?.tags ?? [];
100
+ const tagsToRemove = group.tags.filter((t) => currentTags.includes(t));
101
+ // Delete the expiring_tag rows regardless
102
+ await (0, expiring_tags_1.deleteExpiringTagsByIds)(dbTxn, group.ids);
103
+ // Only emit removal event if there are tags still present to remove
104
+ if (tagsToRemove.length > 0 && status) {
105
+ const subject = (0, subject_1.subjectFromStatusRow)(status);
106
+ const moderationTxn = this.modService(dbTxn);
107
+ await moderationTxn.logEvent({
108
+ event: {
109
+ $type: 'tools.ozone.moderation.defs#modEventTag',
110
+ add: [],
111
+ remove: tagsToRemove,
112
+ comment: '[SCHEDULED_REVERSAL] Reverting temporary tags as originally scheduled',
113
+ },
114
+ createdBy: group.createdBy,
115
+ subject,
116
+ createdAt: new Date(),
117
+ });
118
+ }
119
+ });
120
+ }
80
121
  }
81
122
  }
82
123
  exports.EventReverser = EventReverser;
@@ -1 +1 @@
1
- {"version":3,"file":"event-reverser.js","sourceRoot":"","sources":["../../src/daemon/event-reverser.ts"],"names":[],"mappings":";;;AAAA,4CAAwC;AAExC,sCAAoC;AAGpC,MAAa,aAAa;IAKxB,YACU,EAAY,EACZ,UAAoC;QAD5C;;;;mBAAQ,EAAE;WAAU;QACpB;;;;mBAAQ,UAAU;WAA0B;QAN9C;;;;mBAAY,KAAK;WAAA;QACjB;;;;mBAAiC,OAAO,CAAC,OAAO,EAAE;WAAA;QAClD;;;;;WAAsB;IAKnB,CAAC;IAEJ,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,EAAE;aAClD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACb,iBAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oCAAoC,CAAC,CAC9D;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACxB,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAwB;QACxC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC5C,MAAM,aAAa,GACjB,MAAM,aAAa,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAA;YAC/D,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,aAAa,CAAC,WAAW,CAAC;oBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,OAAO,EACL,+DAA+D;oBACjE,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClD,MAAM,sBAAsB,GAC1B,MAAM,iBAAiB,CAAC,yBAAyB,EAAE,CAAA;QAErD,iHAAiH;QACjH,4DAA4D;QAC5D,MAAM,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;CACF;AA7DD,sCA6DC;AAED,MAAM,WAAW,GAAG,GAAW,EAAE;IAC/B,6FAA6F;IAC7F,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,UAAU,GAAG,eAAM,CAAA;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,CAAA;IACjD,OAAO,aAAa,GAAG,UAAU,GAAG,GAAG,CAAA;AACzC,CAAC,CAAA","sourcesContent":["import { MINUTE } from '@atproto/common'\nimport { Database } from '../db'\nimport { dbLogger } from '../logger'\nimport { ModerationServiceCreator, ReversalSubject } from '../mod-service'\n\nexport class EventReverser {\n destroyed = false\n reversalPromise: Promise<void> = Promise.resolve()\n timer?: NodeJS.Timeout\n\n constructor(\n private db: Database,\n private modService: ModerationServiceCreator,\n ) {}\n\n start() {\n this.poll()\n }\n\n poll() {\n if (this.destroyed) return\n this.reversalPromise = this.findAndRevertDueActions()\n .catch((err) =>\n dbLogger.error({ err }, 'moderation action reversal errored'),\n )\n .finally(() => {\n this.timer = setTimeout(() => this.poll(), getInterval())\n })\n }\n\n async destroy() {\n this.destroyed = true\n if (this.timer) {\n clearTimeout(this.timer)\n this.timer = undefined\n }\n await this.reversalPromise\n }\n\n async revertState(subject: ReversalSubject) {\n await this.db.transaction(async (dbTxn) => {\n const moderationTxn = this.modService(dbTxn)\n const originalEvent =\n await moderationTxn.getLastReversibleEventForSubject(subject)\n if (originalEvent) {\n await moderationTxn.revertState({\n action: originalEvent.action,\n createdBy: originalEvent.createdBy,\n comment:\n '[SCHEDULED_REVERSAL] Reverting action as originally scheduled',\n subject: subject.subject,\n createdAt: new Date(),\n })\n }\n })\n }\n\n async findAndRevertDueActions() {\n const moderationService = this.modService(this.db)\n const subjectsDueForReversal =\n await moderationService.getSubjectsDueForReversal()\n\n // We shouldn't have too many actions due for reversal at any given time, so running in parallel is probably fine\n // Internally, each reversal runs within its own transaction\n await Promise.all(subjectsDueForReversal.map(this.revertState.bind(this)))\n }\n}\n\nconst getInterval = (): number => {\n // super basic synchronization by agreeing when the intervals land relative to unix timestamp\n const now = Date.now()\n const intervalMs = MINUTE\n const nextIteration = Math.ceil(now / intervalMs)\n return nextIteration * intervalMs - now\n}\n"]}
1
+ {"version":3,"file":"event-reverser.js","sourceRoot":"","sources":["../../src/daemon/event-reverser.ts"],"names":[],"mappings":";;;AAAA,4CAAwC;AAExC,sCAAoC;AAEpC,gEAGqC;AACrC,oDAA6D;AAE7D,MAAa,aAAa;IAKxB,YACU,EAAY,EACZ,UAAoC;QAD5C;;;;mBAAQ,EAAE;WAAU;QACpB;;;;mBAAQ,UAAU;WAA0B;QAN9C;;;;mBAAY,KAAK;WAAA;QACjB;;;;mBAAiC,OAAO,CAAC,OAAO,EAAE;WAAA;QAClD;;;;;WAAsB;IAKnB,CAAC;IAEJ,KAAK;QACH,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,EAAE;aAClD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACb,iBAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,oCAAoC,CAAC,CAC9D;aACA,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACxB,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAwB;QACxC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC5C,MAAM,aAAa,GACjB,MAAM,aAAa,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAA;YAC/D,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,aAAa,CAAC,WAAW,CAAC;oBAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,SAAS,EAAE,aAAa,CAAC,SAAS;oBAClC,OAAO,EACL,+DAA+D;oBACjE,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClD,MAAM,sBAAsB,GAC1B,MAAM,iBAAiB,CAAC,yBAAyB,EAAE,CAAA;QAErD,iHAAiH;QACjH,4DAA4D;QAC5D,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,wBAAwB,EAAE;SAChC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAc,EAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAM;QAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxC,oDAAoD;gBACpD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,EAAE;qBAC1B,UAAU,CAAC,2BAA2B,CAAC;qBACvC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;qBAC5B,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;qBAC1C,SAAS,EAAE;qBACX,gBAAgB,EAAE,CAAA;gBAErB,MAAM,WAAW,GAAa,MAAM,EAAE,IAAI,IAAI,EAAE,CAAA;gBAChD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;gBAEtE,0CAA0C;gBAC1C,MAAM,IAAA,uCAAuB,EAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;gBAE/C,oEAAoE;gBACpE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;oBACtC,MAAM,OAAO,GAAG,IAAA,8BAAoB,EAAC,MAAM,CAAC,CAAA;oBAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;oBAC5C,MAAM,aAAa,CAAC,QAAQ,CAAC;wBAC3B,KAAK,EAAE;4BACL,KAAK,EAAE,yCAAyC;4BAChD,GAAG,EAAE,EAAE;4BACP,MAAM,EAAE,YAAY;4BACpB,OAAO,EACL,uEAAuE;yBAC1E;wBACD,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,OAAO;wBACP,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF;AAzGD,sCAyGC;AAED,MAAM,WAAW,GAAG,GAAW,EAAE;IAC/B,6FAA6F;IAC7F,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,UAAU,GAAG,eAAM,CAAA;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,CAAA;IACjD,OAAO,aAAa,GAAG,UAAU,GAAG,GAAG,CAAA;AACzC,CAAC,CAAA","sourcesContent":["import { MINUTE } from '@atproto/common'\nimport { Database } from '../db'\nimport { dbLogger } from '../logger'\nimport { ModerationServiceCreator, ReversalSubject } from '../mod-service'\nimport {\n deleteExpiringTagsByIds,\n getExpiredTags,\n} from '../mod-service/expiring-tags'\nimport { subjectFromStatusRow } from '../mod-service/subject'\n\nexport class EventReverser {\n destroyed = false\n reversalPromise: Promise<void> = Promise.resolve()\n timer?: NodeJS.Timeout\n\n constructor(\n private db: Database,\n private modService: ModerationServiceCreator,\n ) {}\n\n start() {\n this.poll()\n }\n\n poll() {\n if (this.destroyed) return\n this.reversalPromise = this.findAndRevertDueActions()\n .catch((err) =>\n dbLogger.error({ err }, 'moderation action reversal errored'),\n )\n .finally(() => {\n this.timer = setTimeout(() => this.poll(), getInterval())\n })\n }\n\n async destroy() {\n this.destroyed = true\n if (this.timer) {\n clearTimeout(this.timer)\n this.timer = undefined\n }\n await this.reversalPromise\n }\n\n async revertState(subject: ReversalSubject) {\n await this.db.transaction(async (dbTxn) => {\n const moderationTxn = this.modService(dbTxn)\n const originalEvent =\n await moderationTxn.getLastReversibleEventForSubject(subject)\n if (originalEvent) {\n await moderationTxn.revertState({\n action: originalEvent.action,\n createdBy: originalEvent.createdBy,\n comment:\n '[SCHEDULED_REVERSAL] Reverting action as originally scheduled',\n subject: subject.subject,\n createdAt: new Date(),\n })\n }\n })\n }\n\n async findAndRevertDueActions() {\n const moderationService = this.modService(this.db)\n const subjectsDueForReversal =\n await moderationService.getSubjectsDueForReversal()\n\n // We shouldn't have too many actions due for reversal at any given time, so running in parallel is probably fine\n // Internally, each reversal runs within its own transaction\n await Promise.all([\n ...subjectsDueForReversal.map(this.revertState.bind(this)),\n this.findAndRevertExpiredTags(),\n ])\n }\n\n async findAndRevertExpiredTags() {\n const groups = await getExpiredTags(this.db)\n if (!groups.length) return\n\n for (const group of groups) {\n await this.db.transaction(async (dbTxn) => {\n // Check which tags are still present on the subject\n const status = await dbTxn.db\n .selectFrom('moderation_subject_status')\n .where('did', '=', group.did)\n .where('recordPath', '=', group.recordPath)\n .selectAll()\n .executeTakeFirst()\n\n const currentTags: string[] = status?.tags ?? []\n const tagsToRemove = group.tags.filter((t) => currentTags.includes(t))\n\n // Delete the expiring_tag rows regardless\n await deleteExpiringTagsByIds(dbTxn, group.ids)\n\n // Only emit removal event if there are tags still present to remove\n if (tagsToRemove.length > 0 && status) {\n const subject = subjectFromStatusRow(status)\n const moderationTxn = this.modService(dbTxn)\n await moderationTxn.logEvent({\n event: {\n $type: 'tools.ozone.moderation.defs#modEventTag',\n add: [],\n remove: tagsToRemove,\n comment:\n '[SCHEDULED_REVERSAL] Reverting temporary tags as originally scheduled',\n },\n createdBy: group.createdBy,\n subject,\n createdAt: new Date(),\n })\n }\n })\n }\n }\n}\n\nconst getInterval = (): number => {\n // super basic synchronization by agreeing when the intervals land relative to unix timestamp\n const now = Date.now()\n const intervalMs = MINUTE\n const nextIteration = Math.ceil(now / intervalMs)\n return nextIteration * intervalMs - now\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { Kysely } from 'kysely';
2
+ export declare function up(db: Kysely<unknown>): Promise<void>;
3
+ export declare function down(db: Kysely<unknown>): Promise<void>;
4
+ //# sourceMappingURL=20260428T000000000Z-add-expiring-tag-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260428T000000000Z-add-expiring-tag-table.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,wBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3D;AAED,wBAAsB,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.up = up;
4
+ exports.down = down;
5
+ async function up(db) {
6
+ await db.schema
7
+ .createTable('expiring_tag')
8
+ .addColumn('id', 'serial', (col) => col.primaryKey())
9
+ .addColumn('eventId', 'integer', (col) => col.notNull())
10
+ .addColumn('did', 'varchar', (col) => col.notNull())
11
+ .addColumn('recordPath', 'varchar', (col) => col.notNull())
12
+ .addColumn('tag', 'varchar', (col) => col.notNull())
13
+ .addColumn('expiresAt', 'varchar', (col) => col.notNull())
14
+ .addColumn('createdBy', 'varchar', (col) => col.notNull())
15
+ .execute();
16
+ // Daemon polls for expired tags
17
+ await db.schema
18
+ .createIndex('idx_expiring_tag_expires_at')
19
+ .on('expiring_tag')
20
+ .column('expiresAt')
21
+ .execute();
22
+ // Cleanup queries when tags are manually removed
23
+ await db.schema
24
+ .createIndex('idx_expiring_tag_did_record_path')
25
+ .on('expiring_tag')
26
+ .columns(['did', 'recordPath'])
27
+ .execute();
28
+ }
29
+ async function down(db) {
30
+ await db.schema.dropTable('expiring_tag').execute();
31
+ }
32
+ //# sourceMappingURL=20260428T000000000Z-add-expiring-tag-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20260428T000000000Z-add-expiring-tag-table.js","sourceRoot":"","sources":["../../../src/db/migrations/20260428T000000000Z-add-expiring-tag-table.ts"],"names":[],"mappings":";;AAEA,gBAyBC;AAED,oBAEC;AA7BM,KAAK,UAAU,EAAE,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,cAAc,CAAC;SAC3B,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACpD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACvD,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAC1D,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACnD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACzD,OAAO,EAAE,CAAA;IAEZ,gCAAgC;IAChC,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,6BAA6B,CAAC;SAC1C,EAAE,CAAC,cAAc,CAAC;SAClB,MAAM,CAAC,WAAW,CAAC;SACnB,OAAO,EAAE,CAAA;IAEZ,iDAAiD;IACjD,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kCAAkC,CAAC;SAC/C,EAAE,CAAC,cAAc,CAAC;SAClB,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SAC9B,OAAO,EAAE,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAA;AACrD,CAAC","sourcesContent":["import { Kysely } from 'kysely'\n\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await db.schema\n .createTable('expiring_tag')\n .addColumn('id', 'serial', (col) => col.primaryKey())\n .addColumn('eventId', 'integer', (col) => col.notNull())\n .addColumn('did', 'varchar', (col) => col.notNull())\n .addColumn('recordPath', 'varchar', (col) => col.notNull())\n .addColumn('tag', 'varchar', (col) => col.notNull())\n .addColumn('expiresAt', 'varchar', (col) => col.notNull())\n .addColumn('createdBy', 'varchar', (col) => col.notNull())\n .execute()\n\n // Daemon polls for expired tags\n await db.schema\n .createIndex('idx_expiring_tag_expires_at')\n .on('expiring_tag')\n .column('expiresAt')\n .execute()\n\n // Cleanup queries when tags are manually removed\n await db.schema\n .createIndex('idx_expiring_tag_did_record_path')\n .on('expiring_tag')\n .columns(['did', 'recordPath'])\n .execute()\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await db.schema.dropTable('expiring_tag').execute()\n}\n"]}
@@ -30,4 +30,5 @@ export * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-i
30
30
  export * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions';
31
31
  export * as _20251008T120000000Z from './20251008T120000000Z-add-strike-system';
32
32
  export * as _20260210T154806448Z from './20260210T154806448Z-mod-event-created-by-indexes';
33
+ export * as _20260428T000000000Z from './20260428T000000000Z-add-expiring-tag-table';
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6DAA6D,CAAA;AACnG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,oBAAoB,MAAM,yDAAyD,CAAA;AAC/F,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,oBAAoB,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,oDAAoD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6DAA6D,CAAA;AACnG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA;AACpF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,KAAK,oBAAoB,MAAM,yDAAyD,CAAA;AAC/F,OAAO,KAAK,oBAAoB,MAAM,4BAA4B,CAAA;AAClE,OAAO,KAAK,oBAAoB,MAAM,+BAA+B,CAAA;AACrE,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,oBAAoB,MAAM,sCAAsC,CAAA;AAC5E,OAAO,KAAK,oBAAoB,MAAM,gDAAgD,CAAA;AACtF,OAAO,KAAK,oBAAoB,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,oBAAoB,MAAM,uCAAuC,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,oBAAoB,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,iDAAiD,CAAA;AACvF,OAAO,KAAK,oBAAoB,MAAM,kDAAkD,CAAA;AACxF,OAAO,KAAK,oBAAoB,MAAM,+CAA+C,CAAA;AACrF,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,yCAAyC,CAAA;AAC/E,OAAO,KAAK,oBAAoB,MAAM,oDAAoD,CAAA;AAC1F,OAAO,KAAK,oBAAoB,MAAM,8CAA8C,CAAA"}
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports._20260210T154806448Z = exports._20251008T120000000Z = exports._20250923T000000000Z = exports._20250813T000000000Z = exports._20250718T150931000Z = exports._20250715T000000000Z = exports._20250701T000000000Z = exports._20250618T180246000Z = exports._20250609T110704000Z = exports._20250417T201720309Z = exports._20250415T201720309Z = exports._20250404T201720309Z = exports._20250221T132135150Z = exports._20250211T132135150Z = exports._20250211T003647759Z = exports._20250204T003647759Z = exports._20241220T144630860Z = exports._20241026T205730722Z = exports._20241018T205730722Z = exports._20241008T205730722Z = exports._20241001T205730722Z = exports._20240904T205730722Z = exports._20240903T205730722Z = exports._20240814T003647759Z = exports._20240430T211332580Z = exports._20240506T225055595Z = exports._20240408T192432676Z = exports._20240228T003647759Z = exports._20240208T213404429Z = exports._20240201T051104136Z = exports._20240116T085607200Z = exports._20231219T205730722Z = void 0;
39
+ exports._20260428T000000000Z = exports._20260210T154806448Z = exports._20251008T120000000Z = exports._20250923T000000000Z = exports._20250813T000000000Z = exports._20250718T150931000Z = exports._20250715T000000000Z = exports._20250701T000000000Z = exports._20250618T180246000Z = exports._20250609T110704000Z = exports._20250417T201720309Z = exports._20250415T201720309Z = exports._20250404T201720309Z = exports._20250221T132135150Z = exports._20250211T132135150Z = exports._20250211T003647759Z = exports._20250204T003647759Z = exports._20241220T144630860Z = exports._20241026T205730722Z = exports._20241018T205730722Z = exports._20241008T205730722Z = exports._20241001T205730722Z = exports._20240904T205730722Z = exports._20240903T205730722Z = exports._20240814T003647759Z = exports._20240430T211332580Z = exports._20240506T225055595Z = exports._20240408T192432676Z = exports._20240228T003647759Z = exports._20240208T213404429Z = exports._20240201T051104136Z = exports._20240116T085607200Z = exports._20231219T205730722Z = void 0;
40
40
  exports._20231219T205730722Z = __importStar(require("./20231219T205730722Z-init"));
41
41
  exports._20240116T085607200Z = __importStar(require("./20240116T085607200Z-communication-template"));
42
42
  exports._20240201T051104136Z = __importStar(require("./20240201T051104136Z-mod-event-blobs"));
@@ -69,4 +69,5 @@ exports._20250813T000000000Z = __importStar(require("./20250813T000000000Z-mod-t
69
69
  exports._20250923T000000000Z = __importStar(require("./20250923T000000000Z-scheduled-actions"));
70
70
  exports._20251008T120000000Z = __importStar(require("./20251008T120000000Z-add-strike-system"));
71
71
  exports._20260210T154806448Z = __importStar(require("./20260210T154806448Z-mod-event-created-by-indexes"));
72
+ exports._20260428T000000000Z = __importStar(require("./20260428T000000000Z-add-expiring-tag-table"));
72
73
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE;AAClE,qGAAoF;AACpF,8FAA6E;AAC7E,oHAAmG;AACnG,6FAA4E;AAC5E,6FAA4E;AAC5E,8FAA6E;AAC7E,qFAAoE;AACpE,qGAAoF;AACpF,gGAA+E;AAC/E,oGAAmF;AACnF,gHAA+F;AAC/F,mFAAkE;AAClE,sFAAqE;AACrE,mHAAkG;AAClG,uGAAsF;AACtF,yGAAwF;AACxF,uGAAsF;AACtF,mHAAkG;AAClG,6FAA4E;AAC5E,uGAAsF;AACtF,2FAA0E;AAC1E,8FAA6E;AAC7E,uFAAsE;AACtE,+GAA8F;AAC9F,sGAAqF;AACrF,wGAAuF;AACvF,yGAAwF;AACxF,sGAAqF;AACrF,gGAA+E;AAC/E,gGAA+E;AAC/E,2GAA0F","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20231219T205730722Z from './20231219T205730722Z-init'\nexport * as _20240116T085607200Z from './20240116T085607200Z-communication-template'\nexport * as _20240201T051104136Z from './20240201T051104136Z-mod-event-blobs'\nexport * as _20240208T213404429Z from './20240208T213404429Z-add-tags-column-to-moderation-subject'\nexport * as _20240228T003647759Z from './20240228T003647759Z-add-label-sigs'\nexport * as _20240408T192432676Z from './20240408T192432676Z-mute-reporting'\nexport * as _20240506T225055595Z from './20240506T225055595Z-message-subject'\nexport * as _20240430T211332580Z from './20240521T211332580Z-member'\nexport * as _20240814T003647759Z from './20240814T003647759Z-event-created-at-index'\nexport * as _20240903T205730722Z from './20240903T205730722Z-add-template-lang'\nexport * as _20240904T205730722Z from './20240904T205730722Z-add-subject-did-index'\nexport * as _20241001T205730722Z from './20241001T205730722Z-subject-status-review-state-index'\nexport * as _20241008T205730722Z from './20241008T205730722Z-sets'\nexport * as _20241018T205730722Z from './20241018T205730722Z-setting'\nexport * as _20241026T205730722Z from './20241026T205730722Z-add-hosting-status-to-subject-status'\nexport * as _20241220T144630860Z from './20241220T144630860Z-stats-materialized-views'\nexport * as _20250204T003647759Z from './20250204T003647759Z-add-subject-priority-score'\nexport * as _20250211T003647759Z from './20250211T003647759Z-add-reporter-stats-index'\nexport * as _20250211T132135150Z from './20250211T132135150Z-moderation-event-message-partial-idx'\nexport * as _20250221T132135150Z from './20250221T132135150Z-member-details'\nexport * as _20250404T201720309Z from './20250404T201720309Z-subject-status-sort-idxs'\nexport * as _20250415T201720309Z from './20250415T201720309Z-verification'\nexport * as _20250417T201720309Z from './20250417T201720309Z-firehose-cursor'\nexport * as _20250609T110704000Z from './20250609T110704000Z-safelink'\nexport * as _20250618T180246000Z from './20250618T180246000Z-add-mod-tool-to-moderation-event'\nexport * as _20250701T000000000Z from './20250701T000000000Z-add-age-assurance-state'\nexport * as _20250715T000000000Z from './20250715T000000000Z-add-mod-event-external-id'\nexport * as _20250718T150931000Z from './20250718T150931000Z-update-appeal-reason-stats'\nexport * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-index'\nexport * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions'\nexport * as _20251008T120000000Z from './20251008T120000000Z-add-strike-system'\nexport * as _20260210T154806448Z from './20260210T154806448Z-mod-event-created-by-indexes'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/migrations/index.ts"],"names":[],"mappings":";AAAA,oGAAoG;AACpG,gGAAgG;AAChG,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/F,mFAAkE;AAClE,qGAAoF;AACpF,8FAA6E;AAC7E,oHAAmG;AACnG,6FAA4E;AAC5E,6FAA4E;AAC5E,8FAA6E;AAC7E,qFAAoE;AACpE,qGAAoF;AACpF,gGAA+E;AAC/E,oGAAmF;AACnF,gHAA+F;AAC/F,mFAAkE;AAClE,sFAAqE;AACrE,mHAAkG;AAClG,uGAAsF;AACtF,yGAAwF;AACxF,uGAAsF;AACtF,mHAAkG;AAClG,6FAA4E;AAC5E,uGAAsF;AACtF,2FAA0E;AAC1E,8FAA6E;AAC7E,uFAAsE;AACtE,+GAA8F;AAC9F,sGAAqF;AACrF,wGAAuF;AACvF,yGAAwF;AACxF,sGAAqF;AACrF,gGAA+E;AAC/E,gGAA+E;AAC/E,2GAA0F;AAC1F,qGAAoF","sourcesContent":["// NOTE this file can be edited by hand, but it is also appended to by the migration:create command.\n// It's important that every migration is exported from here with the proper name. We'd simplify\n// this with kysely's FileMigrationProvider, but it doesn't play nicely with the build process.\n\nexport * as _20231219T205730722Z from './20231219T205730722Z-init'\nexport * as _20240116T085607200Z from './20240116T085607200Z-communication-template'\nexport * as _20240201T051104136Z from './20240201T051104136Z-mod-event-blobs'\nexport * as _20240208T213404429Z from './20240208T213404429Z-add-tags-column-to-moderation-subject'\nexport * as _20240228T003647759Z from './20240228T003647759Z-add-label-sigs'\nexport * as _20240408T192432676Z from './20240408T192432676Z-mute-reporting'\nexport * as _20240506T225055595Z from './20240506T225055595Z-message-subject'\nexport * as _20240430T211332580Z from './20240521T211332580Z-member'\nexport * as _20240814T003647759Z from './20240814T003647759Z-event-created-at-index'\nexport * as _20240903T205730722Z from './20240903T205730722Z-add-template-lang'\nexport * as _20240904T205730722Z from './20240904T205730722Z-add-subject-did-index'\nexport * as _20241001T205730722Z from './20241001T205730722Z-subject-status-review-state-index'\nexport * as _20241008T205730722Z from './20241008T205730722Z-sets'\nexport * as _20241018T205730722Z from './20241018T205730722Z-setting'\nexport * as _20241026T205730722Z from './20241026T205730722Z-add-hosting-status-to-subject-status'\nexport * as _20241220T144630860Z from './20241220T144630860Z-stats-materialized-views'\nexport * as _20250204T003647759Z from './20250204T003647759Z-add-subject-priority-score'\nexport * as _20250211T003647759Z from './20250211T003647759Z-add-reporter-stats-index'\nexport * as _20250211T132135150Z from './20250211T132135150Z-moderation-event-message-partial-idx'\nexport * as _20250221T132135150Z from './20250221T132135150Z-member-details'\nexport * as _20250404T201720309Z from './20250404T201720309Z-subject-status-sort-idxs'\nexport * as _20250415T201720309Z from './20250415T201720309Z-verification'\nexport * as _20250417T201720309Z from './20250417T201720309Z-firehose-cursor'\nexport * as _20250609T110704000Z from './20250609T110704000Z-safelink'\nexport * as _20250618T180246000Z from './20250618T180246000Z-add-mod-tool-to-moderation-event'\nexport * as _20250701T000000000Z from './20250701T000000000Z-add-age-assurance-state'\nexport * as _20250715T000000000Z from './20250715T000000000Z-add-mod-event-external-id'\nexport * as _20250718T150931000Z from './20250718T150931000Z-update-appeal-reason-stats'\nexport * as _20250813T000000000Z from './20250813T000000000Z-mod-tool-batch-id-index'\nexport * as _20250923T000000000Z from './20250923T000000000Z-scheduled-actions'\nexport * as _20251008T120000000Z from './20251008T120000000Z-add-strike-system'\nexport * as _20260210T154806448Z from './20260210T154806448Z-mod-event-created-by-indexes'\nexport * as _20260428T000000000Z from './20260428T000000000Z-add-expiring-tag-table'\n"]}
@@ -0,0 +1,15 @@
1
+ import { Generated } from 'kysely';
2
+ export declare const tableName = "expiring_tag";
3
+ export interface ExpiringTag {
4
+ id: Generated<number>;
5
+ eventId: number;
6
+ did: string;
7
+ recordPath: string;
8
+ tag: string;
9
+ expiresAt: string;
10
+ createdBy: string;
11
+ }
12
+ export type PartialDB = {
13
+ [tableName]: ExpiringTag;
14
+ };
15
+ //# sourceMappingURL=expiring_tag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expiring_tag.d.ts","sourceRoot":"","sources":["../../../src/db/schema/expiring_tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,eAAO,MAAM,SAAS,iBAAiB,CAAA;AAEvC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,SAAS,CAAC,EAAE,WAAW,CAAA;CACzB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableName = void 0;
4
+ exports.tableName = 'expiring_tag';
5
+ //# sourceMappingURL=expiring_tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expiring_tag.js","sourceRoot":"","sources":["../../../src/db/schema/expiring_tag.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG,cAAc,CAAA","sourcesContent":["import { Generated } from 'kysely'\n\nexport const tableName = 'expiring_tag'\n\nexport interface ExpiringTag {\n id: Generated<number>\n eventId: number\n did: string\n recordPath: string\n tag: string\n expiresAt: string\n createdBy: string\n}\n\nexport type PartialDB = {\n [tableName]: ExpiringTag\n}\n"]}
@@ -5,6 +5,7 @@ import * as accountRecordStatusStats from './account_record_status_stats';
5
5
  import * as accountStrike from './account_strike';
6
6
  import * as blobPushEvent from './blob_push_event';
7
7
  import * as communicationTemplate from './communication_template';
8
+ import * as expiringTag from './expiring_tag';
8
9
  import * as firehoseCursor from './firehose_cursor';
9
10
  import * as jobCursor from './job_cursor';
10
11
  import * as label from './label';
@@ -20,7 +21,7 @@ import * as scheduledAction from './scheduled-action';
20
21
  import * as setting from './setting';
21
22
  import * as signingKey from './signing_key';
22
23
  import * as verification from './verification';
23
- export type DatabaseSchemaType = modEvent.PartialDB & modSubjectStatus.PartialDB & label.PartialDB & signingKey.PartialDB & repoPushEvent.PartialDB & recordPushEvent.PartialDB & blobPushEvent.PartialDB & communicationTemplate.PartialDB & set.PartialDB & member.PartialDB & setting.PartialDB & accountEventsStats.PartialDB & recordEventsStats.PartialDB & accountRecordEventsStats.PartialDB & accountRecordStatusStats.PartialDB & accountStrike.PartialDB & verification.PartialDB & firehoseCursor.PartialDB & jobCursor.PartialDB & safelink.PartialDB & scheduledAction.PartialDB;
24
+ export type DatabaseSchemaType = modEvent.PartialDB & modSubjectStatus.PartialDB & label.PartialDB & signingKey.PartialDB & repoPushEvent.PartialDB & recordPushEvent.PartialDB & blobPushEvent.PartialDB & communicationTemplate.PartialDB & set.PartialDB & member.PartialDB & setting.PartialDB & accountEventsStats.PartialDB & recordEventsStats.PartialDB & accountRecordEventsStats.PartialDB & accountRecordStatusStats.PartialDB & accountStrike.PartialDB & verification.PartialDB & firehoseCursor.PartialDB & jobCursor.PartialDB & safelink.PartialDB & scheduledAction.PartialDB & expiringTag.PartialDB;
24
25
  export type DatabaseSchema = Kysely<DatabaseSchemaType>;
25
26
  export default DatabaseSchema;
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,qBAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,GACjD,gBAAgB,CAAC,SAAS,GAC1B,KAAK,CAAC,SAAS,GACf,UAAU,CAAC,SAAS,GACpB,aAAa,CAAC,SAAS,GACvB,eAAe,CAAC,SAAS,GACzB,aAAa,CAAC,SAAS,GACvB,qBAAqB,CAAC,SAAS,GAC/B,GAAG,CAAC,SAAS,GACb,MAAM,CAAC,SAAS,GAChB,OAAO,CAAC,SAAS,GACjB,kBAAkB,CAAC,SAAS,GAC5B,iBAAiB,CAAC,SAAS,GAC3B,wBAAwB,CAAC,SAAS,GAClC,wBAAwB,CAAC,SAAS,GAClC,aAAa,CAAC,SAAS,GACvB,YAAY,CAAC,SAAS,GACtB,cAAc,CAAC,SAAS,GACxB,SAAS,CAAC,SAAS,GACnB,QAAQ,CAAC,SAAS,GAClB,eAAe,CAAC,SAAS,CAAA;AAE3B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEvD,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,wBAAwB,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,qBAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,SAAS,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAA;AAC9C,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,iBAAiB,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,aAAa,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAA;AAC3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,GACjD,gBAAgB,CAAC,SAAS,GAC1B,KAAK,CAAC,SAAS,GACf,UAAU,CAAC,SAAS,GACpB,aAAa,CAAC,SAAS,GACvB,eAAe,CAAC,SAAS,GACzB,aAAa,CAAC,SAAS,GACvB,qBAAqB,CAAC,SAAS,GAC/B,GAAG,CAAC,SAAS,GACb,MAAM,CAAC,SAAS,GAChB,OAAO,CAAC,SAAS,GACjB,kBAAkB,CAAC,SAAS,GAC5B,iBAAiB,CAAC,SAAS,GAC3B,wBAAwB,CAAC,SAAS,GAClC,wBAAwB,CAAC,SAAS,GAClC,aAAa,CAAC,SAAS,GACvB,YAAY,CAAC,SAAS,GACtB,cAAc,CAAC,SAAS,GACxB,SAAS,CAAC,SAAS,GACnB,QAAQ,CAAC,SAAS,GAClB,eAAe,CAAC,SAAS,GACzB,WAAW,CAAC,SAAS,CAAA;AAEvB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AAEvD,eAAe,cAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"","sourcesContent":["import { Kysely } from 'kysely'\nimport * as accountEventsStats from './account_events_stats'\nimport * as accountRecordEventsStats from './account_record_events_stats'\nimport * as accountRecordStatusStats from './account_record_status_stats'\nimport * as accountStrike from './account_strike'\nimport * as blobPushEvent from './blob_push_event'\nimport * as communicationTemplate from './communication_template'\nimport * as firehoseCursor from './firehose_cursor'\nimport * as jobCursor from './job_cursor'\nimport * as label from './label'\nimport * as member from './member'\nimport * as modEvent from './moderation_event'\nimport * as modSubjectStatus from './moderation_subject_status'\nimport * as set from './ozone_set'\nimport * as recordEventsStats from './record_events_stats'\nimport * as recordPushEvent from './record_push_event'\nimport * as repoPushEvent from './repo_push_event'\nimport * as safelink from './safelink'\nimport * as scheduledAction from './scheduled-action'\nimport * as setting from './setting'\nimport * as signingKey from './signing_key'\nimport * as verification from './verification'\n\nexport type DatabaseSchemaType = modEvent.PartialDB &\n modSubjectStatus.PartialDB &\n label.PartialDB &\n signingKey.PartialDB &\n repoPushEvent.PartialDB &\n recordPushEvent.PartialDB &\n blobPushEvent.PartialDB &\n communicationTemplate.PartialDB &\n set.PartialDB &\n member.PartialDB &\n setting.PartialDB &\n accountEventsStats.PartialDB &\n recordEventsStats.PartialDB &\n accountRecordEventsStats.PartialDB &\n accountRecordStatusStats.PartialDB &\n accountStrike.PartialDB &\n verification.PartialDB &\n firehoseCursor.PartialDB &\n jobCursor.PartialDB &\n safelink.PartialDB &\n scheduledAction.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n\nexport default DatabaseSchema\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/schema/index.ts"],"names":[],"mappings":"","sourcesContent":["import { Kysely } from 'kysely'\nimport * as accountEventsStats from './account_events_stats'\nimport * as accountRecordEventsStats from './account_record_events_stats'\nimport * as accountRecordStatusStats from './account_record_status_stats'\nimport * as accountStrike from './account_strike'\nimport * as blobPushEvent from './blob_push_event'\nimport * as communicationTemplate from './communication_template'\nimport * as expiringTag from './expiring_tag'\nimport * as firehoseCursor from './firehose_cursor'\nimport * as jobCursor from './job_cursor'\nimport * as label from './label'\nimport * as member from './member'\nimport * as modEvent from './moderation_event'\nimport * as modSubjectStatus from './moderation_subject_status'\nimport * as set from './ozone_set'\nimport * as recordEventsStats from './record_events_stats'\nimport * as recordPushEvent from './record_push_event'\nimport * as repoPushEvent from './repo_push_event'\nimport * as safelink from './safelink'\nimport * as scheduledAction from './scheduled-action'\nimport * as setting from './setting'\nimport * as signingKey from './signing_key'\nimport * as verification from './verification'\n\nexport type DatabaseSchemaType = modEvent.PartialDB &\n modSubjectStatus.PartialDB &\n label.PartialDB &\n signingKey.PartialDB &\n repoPushEvent.PartialDB &\n recordPushEvent.PartialDB &\n blobPushEvent.PartialDB &\n communicationTemplate.PartialDB &\n set.PartialDB &\n member.PartialDB &\n setting.PartialDB &\n accountEventsStats.PartialDB &\n recordEventsStats.PartialDB &\n accountRecordEventsStats.PartialDB &\n accountRecordStatusStats.PartialDB &\n accountStrike.PartialDB &\n verification.PartialDB &\n firehoseCursor.PartialDB &\n jobCursor.PartialDB &\n safelink.PartialDB &\n scheduledAction.PartialDB &\n expiringTag.PartialDB\n\nexport type DatabaseSchema = Kysely<DatabaseSchemaType>\n\nexport default DatabaseSchema\n"]}
@@ -120,6 +120,7 @@ import * as ChatBskyConvoDeleteMessageForSelf from './types/chat/bsky/convo/dele
120
120
  import * as ChatBskyConvoGetConvo from './types/chat/bsky/convo/getConvo.js';
121
121
  import * as ChatBskyConvoGetConvoAvailability from './types/chat/bsky/convo/getConvoAvailability.js';
122
122
  import * as ChatBskyConvoGetConvoForMembers from './types/chat/bsky/convo/getConvoForMembers.js';
123
+ import * as ChatBskyConvoGetConvoMembers from './types/chat/bsky/convo/getConvoMembers.js';
123
124
  import * as ChatBskyConvoGetLog from './types/chat/bsky/convo/getLog.js';
124
125
  import * as ChatBskyConvoGetMessages from './types/chat/bsky/convo/getMessages.js';
125
126
  import * as ChatBskyConvoLeaveConvo from './types/chat/bsky/convo/leaveConvo.js';
@@ -593,6 +594,7 @@ export declare class ChatBskyConvoNS {
593
594
  getConvo<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoGetConvo.QueryParams, ChatBskyConvoGetConvo.HandlerInput, ChatBskyConvoGetConvo.HandlerOutput>): void;
594
595
  getConvoAvailability<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoGetConvoAvailability.QueryParams, ChatBskyConvoGetConvoAvailability.HandlerInput, ChatBskyConvoGetConvoAvailability.HandlerOutput>): void;
595
596
  getConvoForMembers<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoGetConvoForMembers.QueryParams, ChatBskyConvoGetConvoForMembers.HandlerInput, ChatBskyConvoGetConvoForMembers.HandlerOutput>): void;
597
+ getConvoMembers<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoGetConvoMembers.QueryParams, ChatBskyConvoGetConvoMembers.HandlerInput, ChatBskyConvoGetConvoMembers.HandlerOutput>): void;
596
598
  getLog<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoGetLog.QueryParams, ChatBskyConvoGetLog.HandlerInput, ChatBskyConvoGetLog.HandlerOutput>): void;
597
599
  getMessages<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoGetMessages.QueryParams, ChatBskyConvoGetMessages.HandlerInput, ChatBskyConvoGetMessages.HandlerOutput>): void;
598
600
  leaveConvo<A extends Auth = void>(cfg: MethodConfigOrHandler<A, ChatBskyConvoLeaveConvo.QueryParams, ChatBskyConvoLeaveConvo.HandlerInput, ChatBskyConvoLeaveConvo.HandlerOutput>): void;