@atproto/ozone 0.0.12 → 0.0.14

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 (47) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/api/label/queryLabels.d.ts +3 -0
  3. package/dist/api/label/subscribeLabels.d.ts +3 -0
  4. package/dist/config/config.d.ts +3 -0
  5. package/dist/config/env.d.ts +3 -0
  6. package/dist/context.d.ts +3 -0
  7. package/dist/db/index.js +3 -1
  8. package/dist/db/index.js.map +2 -2
  9. package/dist/db/schema/label.d.ts +4 -0
  10. package/dist/index.js +593 -244
  11. package/dist/index.js.map +3 -3
  12. package/dist/logger.d.ts +1 -0
  13. package/dist/mod-service/util.d.ts +3 -0
  14. package/dist/sequencer/index.d.ts +2 -0
  15. package/dist/sequencer/outbox.d.ts +16 -0
  16. package/dist/sequencer/sequencer.d.ts +33 -0
  17. package/package.json +10 -10
  18. package/src/api/admin/emitModerationEvent.ts +16 -10
  19. package/src/api/index.ts +4 -0
  20. package/src/api/label/queryLabels.ts +58 -0
  21. package/src/api/label/subscribeLabels.ts +25 -0
  22. package/src/api/temp/fetchLabels.ts +2 -4
  23. package/src/config/config.ts +6 -0
  24. package/src/config/env.ts +6 -0
  25. package/src/context.ts +12 -0
  26. package/src/db/migrations/20231219T205730722Z-init.ts +7 -1
  27. package/src/db/schema/label.ts +7 -0
  28. package/src/index.ts +2 -0
  29. package/src/lexicon/lexicons.ts +1 -1
  30. package/src/logger.ts +2 -0
  31. package/src/mod-service/index.ts +73 -72
  32. package/src/mod-service/status.ts +3 -0
  33. package/src/mod-service/util.ts +17 -0
  34. package/src/mod-service/views.ts +2 -5
  35. package/src/sequencer/index.ts +2 -0
  36. package/src/sequencer/outbox.ts +122 -0
  37. package/src/sequencer/sequencer.ts +143 -0
  38. package/tests/__snapshots__/moderation-events.test.ts.snap +53 -75
  39. package/tests/__snapshots__/moderation.test.ts.snap +4 -4
  40. package/tests/moderation-appeals.test.ts +19 -7
  41. package/tests/moderation-events.test.ts +7 -7
  42. package/tests/moderation-statuses.test.ts +2 -2
  43. package/tests/moderation.test.ts +14 -13
  44. package/tests/query-labels.test.ts +163 -0
  45. package/tests/repo-search.test.ts +0 -1
  46. package/tests/sequencer.test.ts +222 -0
  47. package/tests/server.test.ts +2 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atproto/ozone
2
2
 
3
+ ## 0.0.14
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`2a0ceb818`](https://github.com/bluesky-social/atproto/commit/2a0ceb8180faa17de8061d4fa6c361b57a2005ed), [`2a0ceb818`](https://github.com/bluesky-social/atproto/commit/2a0ceb8180faa17de8061d4fa6c361b57a2005ed), [`2a0ceb818`](https://github.com/bluesky-social/atproto/commit/2a0ceb8180faa17de8061d4fa6c361b57a2005ed), [`2a0ceb818`](https://github.com/bluesky-social/atproto/commit/2a0ceb8180faa17de8061d4fa6c361b57a2005ed)]:
8
+ - @atproto/api@0.10.3
9
+
10
+ ## 0.0.13
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`0c815b964`](https://github.com/bluesky-social/atproto/commit/0c815b964c030aa0f277c40bf9786f130dc320f4), [`61b3d2525`](https://github.com/bluesky-social/atproto/commit/61b3d25253353db2da1336004f94e7dc5adb0410), [`43531905c`](https://github.com/bluesky-social/atproto/commit/43531905ce1aec6d36d9be5943782811ecca6e6d), [`61b3d2525`](https://github.com/bluesky-social/atproto/commit/61b3d25253353db2da1336004f94e7dc5adb0410)]:
15
+ - @atproto/syntax@0.2.0
16
+ - @atproto/api@0.10.2
17
+ - @atproto/lexicon@0.3.2
18
+ - @atproto/xrpc-server@0.4.3
19
+
3
20
  ## 0.0.12
4
21
 
5
22
  ### Patch Changes
@@ -0,0 +1,3 @@
1
+ import { Server } from '../../lexicon';
2
+ import AppContext from '../../context';
3
+ export default function (server: Server, ctx: AppContext): void;
@@ -0,0 +1,3 @@
1
+ import { Server } from '../../lexicon';
2
+ import AppContext from '../../context';
3
+ export default function (server: Server, ctx: AppContext): void;
@@ -16,6 +16,9 @@ export type ServiceConfig = {
16
16
  export type DatabaseConfig = {
17
17
  postgresUrl: string;
18
18
  postgresSchema?: string;
19
+ poolSize?: number;
20
+ poolMaxUses?: number;
21
+ poolIdleTimeoutMs?: number;
19
22
  };
20
23
  export type AppviewConfig = {
21
24
  url: string;
@@ -11,6 +11,9 @@ export type OzoneEnvironment = {
11
11
  pdsDid?: string;
12
12
  dbPostgresUrl?: string;
13
13
  dbPostgresSchema?: string;
14
+ dbPoolSize?: number;
15
+ dbPoolMaxUses?: number;
16
+ dbPoolIdleTimeoutMs?: number;
14
17
  didPlcUrl?: string;
15
18
  adminPassword?: string;
16
19
  moderatorPassword?: string;
package/dist/context.d.ts CHANGED
@@ -8,6 +8,7 @@ import { Database } from './db';
8
8
  import { OzoneConfig, OzoneSecrets } from './config';
9
9
  import { ModerationServiceCreator } from './mod-service';
10
10
  import { BackgroundQueue } from './background';
11
+ import Sequencer from './sequencer/sequencer';
11
12
  import { CommunicationTemplateServiceCreator } from './communication-service/template';
12
13
  export type AppContextOptions = {
13
14
  db: Database;
@@ -19,6 +20,7 @@ export type AppContextOptions = {
19
20
  signingKey: Keypair;
20
21
  idResolver: IdResolver;
21
22
  backgroundQueue: BackgroundQueue;
23
+ sequencer: Sequencer;
22
24
  };
23
25
  export declare class AppContext {
24
26
  private opts;
@@ -36,6 +38,7 @@ export declare class AppContext {
36
38
  get plcClient(): plc.Client;
37
39
  get idResolver(): IdResolver;
38
40
  get backgroundQueue(): BackgroundQueue;
41
+ get sequencer(): Sequencer;
39
42
  get authVerifier(): (reqCtx: {
40
43
  req: import("express").Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
41
44
  res: import("express").Response<any, Record<string, any>>;
package/dist/db/index.js CHANGED
@@ -33760,6 +33760,7 @@ var subsystemLogger = (name2) => {
33760
33760
 
33761
33761
  // src/logger.ts
33762
33762
  var dbLogger = subsystemLogger("ozone:db");
33763
+ var seqLogger = subsystemLogger("ozone:sequencer");
33763
33764
  var httpLogger = subsystemLogger("ozone");
33764
33765
  var langLogger = subsystemLogger("ozone:lang");
33765
33766
  var loggerMiddleware = (0, import_pino_http.default)({
@@ -33796,7 +33797,8 @@ async function up(db) {
33796
33797
  await db.schema.createTable("moderation_event").addColumn("id", "serial", (col) => col.primaryKey()).addColumn("action", "varchar", (col) => col.notNull()).addColumn("subjectType", "varchar", (col) => col.notNull()).addColumn("subjectDid", "varchar", (col) => col.notNull()).addColumn("subjectUri", "varchar").addColumn("subjectCid", "varchar").addColumn("comment", "text").addColumn("meta", "jsonb").addColumn("createdAt", "varchar", (col) => col.notNull()).addColumn("createdBy", "varchar", (col) => col.notNull()).addColumn("reversedAt", "varchar").addColumn("reversedBy", "varchar").addColumn("durationInHours", "integer").addColumn("expiresAt", "varchar").addColumn("reversedReason", "text").addColumn("createLabelVals", "varchar").addColumn("negateLabelVals", "varchar").addColumn("legacyRefId", "integer").execute();
33797
33798
  await db.schema.createTable("moderation_subject_status").addColumn("id", "serial", (col) => col.primaryKey()).addColumn("did", "varchar", (col) => col.notNull()).addColumn("recordPath", "varchar", (col) => col.notNull().defaultTo("")).addColumn("blobCids", "jsonb").addColumn("recordCid", "varchar").addColumn("reviewState", "varchar", (col) => col.notNull()).addColumn("comment", "varchar").addColumn("muteUntil", "varchar").addColumn("lastReviewedAt", "varchar").addColumn("lastReviewedBy", "varchar").addColumn("lastReportedAt", "varchar").addColumn("lastAppealedAt", "varchar").addColumn("takendown", "boolean", (col) => col.defaultTo(false).notNull()).addColumn("suspendUntil", "varchar").addColumn("appealed", "boolean").addColumn("createdAt", "varchar", (col) => col.notNull()).addColumn("updatedAt", "varchar", (col) => col.notNull()).addUniqueConstraint("moderation_status_unique_idx", ["did", "recordPath"]).execute();
33798
33799
  await db.schema.createIndex("moderation_subject_status_blob_cids_idx").on("moderation_subject_status").using("gin").column("blobCids").execute();
33799
- await db.schema.createTable("label").addColumn("src", "varchar", (col) => col.notNull()).addColumn("uri", "varchar", (col) => col.notNull()).addColumn("cid", "varchar", (col) => col.notNull()).addColumn("val", "varchar", (col) => col.notNull()).addColumn("neg", "boolean", (col) => col.notNull()).addColumn("cts", "varchar", (col) => col.notNull()).addPrimaryKeyConstraint("label_pkey", ["src", "uri", "cid", "val"]).execute();
33800
+ await db.schema.createTable("label").addColumn("id", "bigserial", (col) => col.primaryKey()).addColumn("src", "varchar", (col) => col.notNull()).addColumn("uri", "varchar", (col) => col.notNull()).addColumn("cid", "varchar", (col) => col.notNull()).addColumn("val", "varchar", (col) => col.notNull()).addColumn("neg", "boolean", (col) => col.notNull()).addColumn("cts", "varchar", (col) => col.notNull()).execute();
33801
+ await db.schema.createIndex("unique_label_idx").unique().on("label").columns(["src", "uri", "cid", "val"]).execute();
33800
33802
  await db.schema.createIndex("label_uri_index").on("label").column("uri").execute();
33801
33803
  await db.schema.createTable("repo_push_event").addColumn("id", "serial", (col) => col.primaryKey()).addColumn("eventType", "varchar", (col) => col.notNull()).addColumn("subjectDid", "varchar", (col) => col.notNull()).addColumn("takedownRef", "varchar").addColumn("confirmedAt", "timestamptz").addColumn("lastAttempted", "timestamptz").addColumn("attempts", "integer", (col) => col.notNull().defaultTo(0)).addUniqueConstraint("repo_push_event_unique_evt", [
33802
33804
  "subjectDid",