@atproto/ozone 0.0.17-next.0 → 0.0.17

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 (148) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/api/util.d.ts +10 -0
  3. package/dist/auth-verifier.d.ts +2 -2
  4. package/dist/communication-service/template.d.ts +2 -2
  5. package/dist/config/config.d.ts +5 -0
  6. package/dist/config/env.d.ts +2 -0
  7. package/dist/context.d.ts +6 -0
  8. package/dist/daemon/blob-diverter.d.ts +26 -0
  9. package/dist/daemon/event-pusher.d.ts +4 -0
  10. package/dist/daemon/index.d.ts +1 -0
  11. package/dist/db/index.js +21 -1
  12. package/dist/db/index.js.map +3 -3
  13. package/dist/db/migrations/20240228T003647759Z-add-label-sigs.d.ts +3 -0
  14. package/dist/db/migrations/index.d.ts +1 -0
  15. package/dist/db/schema/index.d.ts +2 -1
  16. package/dist/db/schema/label.d.ts +4 -0
  17. package/dist/db/schema/moderation_event.d.ts +1 -1
  18. package/dist/db/schema/moderation_subject_status.d.ts +1 -1
  19. package/dist/db/schema/signing_key.d.ts +9 -0
  20. package/dist/index.js +10950 -10629
  21. package/dist/index.js.map +3 -3
  22. package/dist/lexicon/index.d.ts +48 -28
  23. package/dist/lexicon/lexicons.d.ts +4641 -4650
  24. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +7 -7
  25. package/dist/lexicon/types/app/bsky/feed/defs.d.ts +1 -0
  26. package/dist/lexicon/types/app/bsky/graph/defs.d.ts +3 -0
  27. package/dist/lexicon/types/com/atproto/admin/defs.d.ts +0 -305
  28. package/dist/lexicon/types/com/atproto/label/defs.d.ts +5 -0
  29. package/dist/lexicon/types/{com/atproto/admin/createCommunicationTemplate.d.ts → tools/ozone/communication/createTemplate.d.ts} +2 -2
  30. package/dist/lexicon/types/tools/ozone/communication/defs.d.ts +14 -0
  31. package/dist/lexicon/types/{com/atproto/admin/listCommunicationTemplates.d.ts → tools/ozone/communication/listTemplates.d.ts} +2 -2
  32. package/dist/lexicon/types/{com/atproto/admin/updateCommunicationTemplate.d.ts → tools/ozone/communication/updateTemplate.d.ts} +2 -2
  33. package/dist/lexicon/types/tools/ozone/moderation/defs.d.ts +269 -0
  34. package/dist/lexicon/types/{com/atproto/admin/emitModerationEvent.d.ts → tools/ozone/moderation/emitEvent.d.ts} +5 -4
  35. package/dist/lexicon/types/{com/atproto/admin/getModerationEvent.d.ts → tools/ozone/moderation/getEvent.d.ts} +2 -2
  36. package/dist/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRecord.d.ts +2 -2
  37. package/dist/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRepo.d.ts +2 -2
  38. package/dist/lexicon/types/{com/atproto/admin/queryModerationEvents.d.ts → tools/ozone/moderation/queryEvents.d.ts} +2 -2
  39. package/dist/lexicon/types/{com/atproto/admin/queryModerationStatuses.d.ts → tools/ozone/moderation/queryStatuses.d.ts} +2 -2
  40. package/dist/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/searchRepos.d.ts +2 -2
  41. package/dist/mod-service/index.d.ts +16 -15
  42. package/dist/mod-service/subject.d.ts +1 -1
  43. package/dist/mod-service/types.d.ts +2 -2
  44. package/dist/mod-service/util.d.ts +6 -0
  45. package/dist/mod-service/views.d.ts +9 -3
  46. package/dist/sequencer/sequencer.d.ts +6 -4
  47. package/dist/util.d.ts +2 -0
  48. package/package.json +14 -14
  49. package/src/api/{admin/createCommunicationTemplate.ts → communication/createTemplate.ts} +1 -1
  50. package/src/api/{admin/deleteCommunicationTemplate.ts → communication/deleteTemplate.ts} +1 -1
  51. package/src/api/{admin/listCommunicationTemplates.ts → communication/listTemplates.ts} +1 -1
  52. package/src/api/{admin/updateCommunicationTemplate.ts → communication/updateTemplate.ts} +1 -1
  53. package/src/api/index.ts +21 -21
  54. package/src/api/{temp → label}/fetchLabels.ts +4 -2
  55. package/src/api/label/queryLabels.ts +4 -2
  56. package/src/api/label/subscribeLabels.ts +1 -1
  57. package/src/api/moderation/emitEvent.ts +218 -0
  58. package/src/api/{admin/getModerationEvent.ts → moderation/getEvent.ts} +1 -1
  59. package/src/api/{admin → moderation}/getRecord.ts +2 -2
  60. package/src/api/{admin → moderation}/getRepo.ts +2 -2
  61. package/src/api/{admin/queryModerationEvents.ts → moderation/queryEvents.ts} +2 -2
  62. package/src/api/{admin/queryModerationStatuses.ts → moderation/queryStatuses.ts} +2 -2
  63. package/src/api/{admin → moderation}/searchRepos.ts +1 -1
  64. package/src/api/{moderation → report}/createReport.ts +1 -1
  65. package/src/api/util.ts +119 -0
  66. package/src/auth-verifier.ts +2 -2
  67. package/src/communication-service/template.ts +2 -2
  68. package/src/config/config.ts +14 -0
  69. package/src/config/env.ts +4 -0
  70. package/src/context.ts +35 -9
  71. package/src/daemon/blob-diverter.ts +150 -0
  72. package/src/daemon/context.ts +9 -5
  73. package/src/daemon/event-pusher.ts +49 -14
  74. package/src/daemon/index.ts +1 -0
  75. package/src/db/migrations/20240228T003647759Z-add-label-sigs.ts +25 -0
  76. package/src/db/migrations/index.ts +1 -0
  77. package/src/db/schema/index.ts +2 -0
  78. package/src/db/schema/label.ts +3 -0
  79. package/src/db/schema/moderation_event.ts +11 -11
  80. package/src/db/schema/moderation_subject_status.ts +1 -1
  81. package/src/db/schema/signing_key.ts +10 -0
  82. package/src/lexicon/index.ts +178 -138
  83. package/src/lexicon/lexicons.ts +6078 -6106
  84. package/src/lexicon/types/app/bsky/actor/defs.ts +11 -11
  85. package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
  86. package/src/lexicon/types/app/bsky/graph/defs.ts +3 -0
  87. package/src/lexicon/types/com/atproto/admin/defs.ts +0 -697
  88. package/src/lexicon/types/com/atproto/label/defs.ts +10 -0
  89. package/src/lexicon/types/{com/atproto/admin/createCommunicationTemplate.ts → tools/ozone/communication/createTemplate.ts} +2 -2
  90. package/src/lexicon/types/tools/ozone/communication/defs.ts +35 -0
  91. package/src/lexicon/types/{com/atproto/admin/listCommunicationTemplates.ts → tools/ozone/communication/listTemplates.ts} +2 -2
  92. package/src/lexicon/types/{com/atproto/admin/updateCommunicationTemplate.ts → tools/ozone/communication/updateTemplate.ts} +2 -2
  93. package/src/lexicon/types/tools/ozone/moderation/defs.ts +641 -0
  94. package/src/lexicon/types/{com/atproto/admin/emitModerationEvent.ts → tools/ozone/moderation/emitEvent.ts} +15 -14
  95. package/src/lexicon/types/{com/atproto/admin/getModerationEvent.ts → tools/ozone/moderation/getEvent.ts} +2 -2
  96. package/src/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRecord.ts +2 -2
  97. package/src/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/getRepo.ts +2 -2
  98. package/src/lexicon/types/{com/atproto/admin/queryModerationEvents.ts → tools/ozone/moderation/queryEvents.ts} +3 -3
  99. package/src/lexicon/types/{com/atproto/admin/queryModerationStatuses.ts → tools/ozone/moderation/queryStatuses.ts} +2 -2
  100. package/src/lexicon/types/{com/atproto/admin → tools/ozone/moderation}/searchRepos.ts +2 -2
  101. package/src/mod-service/index.ts +42 -47
  102. package/src/mod-service/lang.ts +1 -1
  103. package/src/mod-service/status.ts +19 -16
  104. package/src/mod-service/subject.ts +1 -1
  105. package/src/mod-service/types.ts +10 -10
  106. package/src/mod-service/util.ts +49 -5
  107. package/src/mod-service/views.ts +45 -18
  108. package/src/sequencer/sequencer.ts +12 -11
  109. package/src/util.ts +21 -0
  110. package/tests/__snapshots__/blob-divert.test.ts.snap +22 -0
  111. package/tests/__snapshots__/get-record.test.ts.snap +10 -2
  112. package/tests/__snapshots__/get-repo.test.ts.snap +5 -1
  113. package/tests/__snapshots__/moderation-events.test.ts.snap +8 -8
  114. package/tests/__snapshots__/moderation-statuses.test.ts.snap +6 -6
  115. package/tests/_util.ts +5 -0
  116. package/tests/blob-divert.test.ts +87 -0
  117. package/tests/communication-templates.test.ts +30 -34
  118. package/tests/db.test.ts +6 -6
  119. package/tests/get-record.test.ts +6 -6
  120. package/tests/get-repo.test.ts +11 -11
  121. package/tests/moderation-appeals.test.ts +28 -28
  122. package/tests/moderation-events.test.ts +44 -44
  123. package/tests/moderation-status-tags.test.ts +8 -10
  124. package/tests/moderation-statuses.test.ts +27 -27
  125. package/tests/moderation.test.ts +50 -57
  126. package/tests/query-labels.test.ts +86 -10
  127. package/tests/repo-search.test.ts +8 -8
  128. package/tests/sequencer.test.ts +6 -3
  129. package/dist/api/admin/util.d.ts +0 -5
  130. package/dist/api/moderation/util.d.ts +0 -4
  131. package/src/api/admin/emitModerationEvent.ts +0 -174
  132. package/src/api/admin/util.ts +0 -54
  133. package/src/api/moderation/util.ts +0 -67
  134. /package/dist/api/{admin/createCommunicationTemplate.d.ts → communication/createTemplate.d.ts} +0 -0
  135. /package/dist/api/{admin/deleteCommunicationTemplate.d.ts → communication/deleteTemplate.d.ts} +0 -0
  136. /package/dist/api/{admin/emitModerationEvent.d.ts → communication/listTemplates.d.ts} +0 -0
  137. /package/dist/api/{admin/getModerationEvent.d.ts → communication/updateTemplate.d.ts} +0 -0
  138. /package/dist/api/{temp → label}/fetchLabels.d.ts +0 -0
  139. /package/dist/api/{admin/getRecord.d.ts → moderation/emitEvent.d.ts} +0 -0
  140. /package/dist/api/{admin/getRepo.d.ts → moderation/getEvent.d.ts} +0 -0
  141. /package/dist/api/{admin/listCommunicationTemplates.d.ts → moderation/getRecord.d.ts} +0 -0
  142. /package/dist/api/{admin/queryModerationEvents.d.ts → moderation/getRepo.d.ts} +0 -0
  143. /package/dist/api/{admin/queryModerationStatuses.d.ts → moderation/queryEvents.d.ts} +0 -0
  144. /package/dist/api/{admin/searchRepos.d.ts → moderation/queryStatuses.d.ts} +0 -0
  145. /package/dist/api/{admin/updateCommunicationTemplate.d.ts → moderation/searchRepos.d.ts} +0 -0
  146. /package/dist/api/{moderation → report}/createReport.d.ts +0 -0
  147. /package/dist/lexicon/types/{com/atproto/admin/deleteCommunicationTemplate.d.ts → tools/ozone/communication/deleteTemplate.d.ts} +0 -0
  148. /package/src/lexicon/types/{com/atproto/admin/deleteCommunicationTemplate.ts → tools/ozone/communication/deleteTemplate.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @atproto/ozone
2
2
 
3
+ ## 0.0.17
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`4eaadc0ac`](https://github.com/bluesky-social/atproto/commit/4eaadc0acb6b73b9745dd7a2b929d02e58083ab0), [`4eaadc0ac`](https://github.com/bluesky-social/atproto/commit/4eaadc0acb6b73b9745dd7a2b929d02e58083ab0)]:
8
+ - @atproto/identity@0.3.3
9
+ - @atproto/api@0.11.0
10
+ - @atproto/common@0.3.4
11
+ - @atproto/lexicon@0.3.3
12
+ - @atproto/syntax@0.2.1
13
+ - @atproto/crypto@0.3.0
14
+ - @atproto/xrpc-server@0.4.4
15
+
3
16
  ## 0.0.16
4
17
 
5
18
  ### Patch Changes
@@ -0,0 +1,10 @@
1
+ import { InputSchema as ReportInput } from '../lexicon/types/com/atproto/moderation/createReport';
2
+ import { AccountView } from '../lexicon/types/com/atproto/admin/defs';
3
+ import { RepoView, RepoViewDetail } from '../lexicon/types/tools/ozone/moderation/defs';
4
+ import AppContext from '../context';
5
+ export declare const getPdsAccountInfo: (ctx: AppContext, did: string) => Promise<AccountView | null>;
6
+ export declare const addAccountInfoToRepoViewDetail: (repoView: RepoViewDetail, accountInfo: AccountView | null, includeEmail?: boolean) => RepoViewDetail;
7
+ export declare const addAccountInfoToRepoView: (repoView: RepoView, accountInfo: AccountView | null, includeEmail?: boolean) => RepoView;
8
+ export declare const getReasonType: (reasonType: ReportInput['reasonType']) => string | boolean;
9
+ export declare const getEventType: (type: string) => "tools.ozone.moderation.defs#modEventTakedown" | "tools.ozone.moderation.defs#modEventAcknowledge" | "tools.ozone.moderation.defs#modEventEscalate" | "tools.ozone.moderation.defs#modEventComment" | "tools.ozone.moderation.defs#modEventLabel" | "tools.ozone.moderation.defs#modEventReport" | "tools.ozone.moderation.defs#modEventMute" | "tools.ozone.moderation.defs#modEventReverseTakedown" | "tools.ozone.moderation.defs#modEventEmail" | "tools.ozone.moderation.defs#modEventResolveAppeal" | "tools.ozone.moderation.defs#modEventTag";
10
+ export declare const getReviewState: (reviewState?: string) => "tools.ozone.moderation.defs#reviewOpen" | "tools.ozone.moderation.defs#reviewEscalated" | "tools.ozone.moderation.defs#reviewClosed" | "tools.ozone.moderation.defs#reviewNone" | undefined;
@@ -3,7 +3,7 @@ import { IdResolver } from '@atproto/identity';
3
3
  type ReqCtx = {
4
4
  req: express.Request;
5
5
  };
6
- type AdminTokenOutput = {
6
+ export type AdminTokenOutput = {
7
7
  credentials: {
8
8
  type: 'admin_token';
9
9
  isAdmin: true;
@@ -11,7 +11,7 @@ type AdminTokenOutput = {
11
11
  isTriage: true;
12
12
  };
13
13
  };
14
- type ModeratorOutput = {
14
+ export type ModeratorOutput = {
15
15
  credentials: {
16
16
  type: 'moderator';
17
17
  aud: string;
@@ -1,7 +1,7 @@
1
1
  import Database from '../db';
2
2
  import { Selectable } from 'kysely';
3
3
  import { CommunicationTemplate } from '../db/schema/communication_template';
4
- import { CommunicationTemplateView } from '../lexicon/types/com/atproto/admin/defs';
4
+ import { TemplateView } from '../lexicon/types/tools/ozone/communication/defs';
5
5
  export type CommunicationTemplateServiceCreator = (db: Database) => CommunicationTemplateService;
6
6
  export declare class CommunicationTemplateService {
7
7
  db: Database;
@@ -14,5 +14,5 @@ export declare class CommunicationTemplateService {
14
14
  }): Promise<Selectable<CommunicationTemplate>>;
15
15
  update(id: number, { name, contentMarkdown, subject, disabled, updatedAt, lastUpdatedBy, }: Partial<Omit<Selectable<CommunicationTemplate>, 'id' | 'createdAt'>>): Promise<Selectable<CommunicationTemplate>>;
16
16
  delete(id: number): Promise<void>;
17
- view(template: Selectable<CommunicationTemplate>): CommunicationTemplateView;
17
+ view(template: Selectable<CommunicationTemplate>): TemplateView;
18
18
  }
@@ -7,6 +7,7 @@ export type OzoneConfig = {
7
7
  pds: PdsConfig | null;
8
8
  cdn: CdnConfig;
9
9
  identity: IdentityConfig;
10
+ blobDivert: BlobDivertConfig | null;
10
11
  access: AccessConfig;
11
12
  };
12
13
  export type ServiceConfig = {
@@ -16,6 +17,10 @@ export type ServiceConfig = {
16
17
  version?: string;
17
18
  devMode?: boolean;
18
19
  };
20
+ export type BlobDivertConfig = {
21
+ url: string;
22
+ adminPassword: string;
23
+ };
19
24
  export type DatabaseConfig = {
20
25
  postgresUrl: string;
21
26
  postgresSchema?: string;
@@ -23,4 +23,6 @@ export type OzoneEnvironment = {
23
23
  triageDids: string[];
24
24
  adminPassword?: string;
25
25
  signingKeyHex?: string;
26
+ blobDivertUrl?: string;
27
+ blobDivertAdminPassword?: string;
26
28
  };
package/dist/context.d.ts CHANGED
@@ -8,6 +8,7 @@ import { ModerationServiceCreator } from './mod-service';
8
8
  import { BackgroundQueue } from './background';
9
9
  import Sequencer from './sequencer/sequencer';
10
10
  import { CommunicationTemplateServiceCreator } from './communication-service/template';
11
+ import { BlobDiverter } from './daemon/blob-diverter';
11
12
  import { AuthVerifier } from './auth-verifier';
12
13
  import { ImageInvalidator } from './image-invalidator';
13
14
  export type AppContextOptions = {
@@ -17,7 +18,9 @@ export type AppContextOptions = {
17
18
  communicationTemplateService: CommunicationTemplateServiceCreator;
18
19
  appviewAgent: AtpAgent;
19
20
  pdsAgent: AtpAgent | undefined;
21
+ blobDiverter?: BlobDiverter;
20
22
  signingKey: Keypair;
23
+ signingKeyId: number;
21
24
  idResolver: IdResolver;
22
25
  imgInvalidator?: ImageInvalidator;
23
26
  backgroundQueue: BackgroundQueue;
@@ -33,10 +36,12 @@ export declare class AppContext {
33
36
  get db(): Database;
34
37
  get cfg(): OzoneConfig;
35
38
  get modService(): ModerationServiceCreator;
39
+ get blobDiverter(): BlobDiverter | undefined;
36
40
  get communicationTemplateService(): CommunicationTemplateServiceCreator;
37
41
  get appviewAgent(): AtpAgent;
38
42
  get pdsAgent(): AtpAgent | undefined;
39
43
  get signingKey(): Keypair;
44
+ get signingKeyId(): number;
40
45
  get plcClient(): plc.Client;
41
46
  get idResolver(): IdResolver;
42
47
  get backgroundQueue(): BackgroundQueue;
@@ -57,5 +62,6 @@ export declare class AppContext {
57
62
  authorization: string;
58
63
  };
59
64
  }>;
65
+ devOverride(overrides: Partial<AppContextOptions>): void;
60
66
  }
61
67
  export default AppContext;
@@ -0,0 +1,26 @@
1
+ /// <reference types="node" />
2
+ import { IdResolver } from '@atproto/identity';
3
+ import { Readable } from 'stream';
4
+ import Database from '../db';
5
+ import { BlobDivertConfig } from '../config';
6
+ export declare class BlobDiverter {
7
+ db: Database;
8
+ serviceConfig: BlobDivertConfig;
9
+ idResolver: IdResolver;
10
+ constructor(db: Database, services: {
11
+ idResolver: IdResolver;
12
+ serviceConfig: BlobDivertConfig;
13
+ });
14
+ private getBlob;
15
+ sendImage({ url, imageStream, contentType, }: {
16
+ url: string;
17
+ imageStream: Readable;
18
+ contentType: string;
19
+ }): Promise<boolean>;
20
+ private uploadBlob;
21
+ uploadBlobOnService({ subjectDid, subjectUri, subjectBlobCids, }: {
22
+ subjectDid: string;
23
+ subjectUri: string;
24
+ subjectBlobCids: string[];
25
+ }): Promise<boolean>;
26
+ }
@@ -2,6 +2,8 @@
2
2
  import AtpAgent from '@atproto/api';
3
3
  import Database from '../db';
4
4
  import { RepoPushEventType } from '../db/schema/repo_push_event';
5
+ import { BlobPushEvent } from '../db/schema/blob_push_event';
6
+ import { Insertable, Selectable } from 'kysely';
5
7
  type PollState = {
6
8
  timer?: NodeJS.Timer;
7
9
  promise: Promise<void>;
@@ -46,5 +48,7 @@ export declare class EventPusher {
46
48
  attemptRepoEvent(id: number): Promise<void>;
47
49
  attemptRecordEvent(id: number): Promise<void>;
48
50
  attemptBlobEvent(id: number): Promise<void>;
51
+ markBlobEventAttempt(dbTxn: Database, event: Selectable<BlobPushEvent>, succeeded: boolean): Promise<void>;
52
+ logBlobPushEvent(blobValues: Insertable<BlobPushEvent>[], takedownRef?: string | null): Promise<import("kysely").Selection<import("../db/schema").DatabaseSchemaType, "blob_push_event", "id" | "subjectDid" | "subjectUri" | "eventType" | "subjectBlobCid">[]>;
49
53
  }
50
54
  export {};
@@ -2,6 +2,7 @@ import { OzoneConfig, OzoneSecrets } from '../config';
2
2
  import DaemonContext from './context';
3
3
  import { AppContextOptions } from '../context';
4
4
  export { EventPusher } from './event-pusher';
5
+ export { BlobDiverter } from './blob-diverter';
5
6
  export { EventReverser } from './event-reverser';
6
7
  export declare class OzoneDaemon {
7
8
  ctx: DaemonContext;
package/dist/db/index.js CHANGED
@@ -33784,7 +33784,8 @@ __export(migrations_exports, {
33784
33784
  _20231219T205730722Z: () => T205730722Z_init_exports,
33785
33785
  _20240116T085607200Z: () => T085607200Z_communication_template_exports,
33786
33786
  _20240201T051104136Z: () => T051104136Z_mod_event_blobs_exports,
33787
- _20240208T213404429Z: () => T213404429Z_add_tags_column_to_moderation_subject_exports
33787
+ _20240208T213404429Z: () => T213404429Z_add_tags_column_to_moderation_subject_exports,
33788
+ _20240228T003647759Z: () => T003647759Z_add_label_sigs_exports
33788
33789
  });
33789
33790
 
33790
33791
  // src/db/migrations/20231219T205730722Z-init.ts
@@ -33873,6 +33874,25 @@ async function down4(db) {
33873
33874
  await db.schema.alterTable("moderation_subject_status").dropColumn("tags").execute();
33874
33875
  }
33875
33876
 
33877
+ // src/db/migrations/20240228T003647759Z-add-label-sigs.ts
33878
+ var T003647759Z_add_label_sigs_exports = {};
33879
+ __export(T003647759Z_add_label_sigs_exports, {
33880
+ down: () => down5,
33881
+ up: () => up5
33882
+ });
33883
+ async function up5(db) {
33884
+ await db.schema.alterTable("label").addColumn("exp", "varchar").execute();
33885
+ await db.schema.alterTable("label").addColumn("sig", sql`bytea`).execute();
33886
+ await db.schema.alterTable("label").addColumn("signingKeyId", "integer").execute();
33887
+ await db.schema.createTable("signing_key").addColumn("id", "serial", (col) => col.primaryKey()).addColumn("key", "varchar", (col) => col.notNull().unique()).execute();
33888
+ }
33889
+ async function down5(db) {
33890
+ await db.schema.dropTable("signing_key");
33891
+ await db.schema.alterTable("label").dropColumn("exp").execute();
33892
+ await db.schema.alterTable("label").dropColumn("sig").execute();
33893
+ await db.schema.alterTable("label").dropColumn("signingKey").execute();
33894
+ }
33895
+
33876
33896
  // src/db/migrations/provider.ts
33877
33897
  var CtxMigrationProvider = class {
33878
33898
  constructor(migrations, ctx) {