@atproto/bsky 0.0.80 → 0.0.82

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 (68) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/data-plane/client.d.ts.map +1 -1
  3. package/dist/data-plane/client.js +2 -1
  4. package/dist/data-plane/client.js.map +1 -1
  5. package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.d.ts +4 -0
  6. package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.d.ts.map +1 -0
  7. package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.js +26 -0
  8. package/dist/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.js.map +1 -0
  9. package/dist/data-plane/server/db/migrations/index.d.ts +1 -0
  10. package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
  11. package/dist/data-plane/server/db/migrations/index.js +2 -1
  12. package/dist/data-plane/server/db/migrations/index.js.map +1 -1
  13. package/dist/data-plane/server/db/tables/actor-sync.d.ts +0 -3
  14. package/dist/data-plane/server/db/tables/actor-sync.d.ts.map +1 -1
  15. package/dist/data-plane/server/db/tables/actor-sync.js.map +1 -1
  16. package/dist/data-plane/server/indexing/index.d.ts +2 -7
  17. package/dist/data-plane/server/indexing/index.d.ts.map +1 -1
  18. package/dist/data-plane/server/indexing/index.js +4 -21
  19. package/dist/data-plane/server/indexing/index.js.map +1 -1
  20. package/dist/data-plane/server/subscription.d.ts +26 -0
  21. package/dist/data-plane/server/subscription.d.ts.map +1 -0
  22. package/dist/data-plane/server/subscription.js +115 -0
  23. package/dist/data-plane/server/subscription.js.map +1 -0
  24. package/dist/lexicon/lexicons.d.ts +110 -3
  25. package/dist/lexicon/lexicons.d.ts.map +1 -1
  26. package/dist/lexicon/lexicons.js +117 -6
  27. package/dist/lexicon/lexicons.js.map +1 -1
  28. package/dist/lexicon/types/com/atproto/repo/applyWrites.d.ts +38 -4
  29. package/dist/lexicon/types/com/atproto/repo/applyWrites.d.ts.map +1 -1
  30. package/dist/lexicon/types/com/atproto/repo/applyWrites.js +31 -1
  31. package/dist/lexicon/types/com/atproto/repo/applyWrites.js.map +1 -1
  32. package/dist/lexicon/types/com/atproto/repo/createRecord.d.ts +5 -2
  33. package/dist/lexicon/types/com/atproto/repo/createRecord.d.ts.map +1 -1
  34. package/dist/lexicon/types/com/atproto/repo/defs.d.ts +12 -0
  35. package/dist/lexicon/types/com/atproto/repo/defs.d.ts.map +1 -0
  36. package/dist/lexicon/types/com/atproto/repo/defs.js +16 -0
  37. package/dist/lexicon/types/com/atproto/repo/defs.js.map +1 -0
  38. package/dist/lexicon/types/com/atproto/repo/deleteRecord.d.ts +14 -2
  39. package/dist/lexicon/types/com/atproto/repo/deleteRecord.d.ts.map +1 -1
  40. package/dist/lexicon/types/com/atproto/repo/putRecord.d.ts +5 -2
  41. package/dist/lexicon/types/com/atproto/repo/putRecord.d.ts.map +1 -1
  42. package/package.json +6 -5
  43. package/src/data-plane/client.ts +4 -1
  44. package/src/data-plane/server/db/migrations/20240829T211238293Z-simplify-actor-sync.ts +23 -0
  45. package/src/data-plane/server/db/migrations/index.ts +1 -0
  46. package/src/data-plane/server/db/tables/actor-sync.ts +0 -3
  47. package/src/data-plane/server/indexing/index.ts +4 -25
  48. package/src/data-plane/server/subscription.ts +104 -0
  49. package/src/lexicon/lexicons.ts +117 -6
  50. package/src/lexicon/types/com/atproto/repo/applyWrites.ts +70 -3
  51. package/src/lexicon/types/com/atproto/repo/createRecord.ts +5 -2
  52. package/src/lexicon/types/com/atproto/repo/defs.ts +25 -0
  53. package/src/lexicon/types/com/atproto/repo/deleteRecord.ts +13 -1
  54. package/src/lexicon/types/com/atproto/repo/putRecord.ts +5 -2
  55. package/tests/data-plane/indexing.test.ts +1 -1
  56. package/tests/data-plane/{subscription/repo.test.ts → subscription.test.ts} +4 -9
  57. package/tests/views/actor-search.test.ts +1 -1
  58. package/dist/data-plane/server/subscription/index.d.ts +0 -33
  59. package/dist/data-plane/server/subscription/index.d.ts.map +0 -1
  60. package/dist/data-plane/server/subscription/index.js +0 -341
  61. package/dist/data-plane/server/subscription/index.js.map +0 -1
  62. package/dist/data-plane/server/subscription/util.d.ts +0 -65
  63. package/dist/data-plane/server/subscription/util.d.ts.map +0 -1
  64. package/dist/data-plane/server/subscription/util.js +0 -215
  65. package/dist/data-plane/server/subscription/util.js.map +0 -1
  66. package/src/data-plane/server/subscription/index.ts +0 -352
  67. package/src/data-plane/server/subscription/util.ts +0 -156
  68. package/tests/data-plane/subscription/util.test.ts +0 -185
@@ -3,29 +3,42 @@
3
3
  */
4
4
  import express from 'express';
5
5
  import { ValidationResult } from '@atproto/lexicon';
6
- import { HandlerAuth } from '@atproto/xrpc-server';
6
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
7
+ import * as ComAtprotoRepoDefs from './defs';
7
8
  export interface QueryParams {
8
9
  }
9
10
  export interface InputSchema {
10
11
  /** The handle or DID of the repo (aka, current account). */
11
12
  repo: string;
12
- /** Can be set to 'false' to skip Lexicon schema validation of record data, for all operations. */
13
- validate: boolean;
13
+ /** Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons. */
14
+ validate?: boolean;
14
15
  writes: (Create | Update | Delete)[];
15
16
  /** If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations. */
16
17
  swapCommit?: string;
17
18
  [k: string]: unknown;
18
19
  }
20
+ export interface OutputSchema {
21
+ commit?: ComAtprotoRepoDefs.CommitMeta;
22
+ results?: (CreateResult | UpdateResult | DeleteResult)[];
23
+ [k: string]: unknown;
24
+ }
19
25
  export interface HandlerInput {
20
26
  encoding: 'application/json';
21
27
  body: InputSchema;
22
28
  }
29
+ export interface HandlerSuccess {
30
+ encoding: 'application/json';
31
+ body: OutputSchema;
32
+ headers?: {
33
+ [key: string]: string;
34
+ };
35
+ }
23
36
  export interface HandlerError {
24
37
  status: number;
25
38
  message?: string;
26
39
  error?: 'InvalidSwap';
27
40
  }
28
- export type HandlerOutput = HandlerError | void;
41
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
29
42
  export type HandlerReqCtx<HA extends HandlerAuth = never> = {
30
43
  auth: HA;
31
44
  params: QueryParams;
@@ -60,4 +73,25 @@ export interface Delete {
60
73
  }
61
74
  export declare function isDelete(v: unknown): v is Delete;
62
75
  export declare function validateDelete(v: unknown): ValidationResult;
76
+ export interface CreateResult {
77
+ uri: string;
78
+ cid: string;
79
+ validationStatus?: 'valid' | 'unknown' | (string & {});
80
+ [k: string]: unknown;
81
+ }
82
+ export declare function isCreateResult(v: unknown): v is CreateResult;
83
+ export declare function validateCreateResult(v: unknown): ValidationResult;
84
+ export interface UpdateResult {
85
+ uri: string;
86
+ cid: string;
87
+ validationStatus?: 'valid' | 'unknown' | (string & {});
88
+ [k: string]: unknown;
89
+ }
90
+ export declare function isUpdateResult(v: unknown): v is UpdateResult;
91
+ export declare function validateUpdateResult(v: unknown): ValidationResult;
92
+ export interface DeleteResult {
93
+ [k: string]: unknown;
94
+ }
95
+ export declare function isDeleteResult(v: unknown): v is DeleteResult;
96
+ export declare function validateDeleteResult(v: unknown): ValidationResult;
63
97
  //# sourceMappingURL=applyWrites.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyWrites.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/applyWrites.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAI5D,OAAO,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAA;AAEtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,kGAAkG;IAClG,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACpC,wJAAwJ;IACxJ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA;AAC/C,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;AAE3C,4CAA4C;AAC5C,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,EAAE,CAAA;IACT,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAMhD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAE3D;AAED,kDAAkD;AAClD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,EAAE,CAAA;IACT,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAMhD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAE3D;AAED,kDAAkD;AAClD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAMhD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAE3D"}
1
+ {"version":3,"file":"applyWrites.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/applyWrites.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateDelete = exports.isDelete = exports.validateUpdate = exports.isUpdate = exports.validateCreate = exports.isCreate = void 0;
3
+ exports.validateDeleteResult = exports.isDeleteResult = exports.validateUpdateResult = exports.isUpdateResult = exports.validateCreateResult = exports.isCreateResult = exports.validateDelete = exports.isDelete = exports.validateUpdate = exports.isUpdate = exports.validateCreate = exports.isCreate = void 0;
4
4
  const lexicons_1 = require("../../../../lexicons");
5
5
  const util_1 = require("../../../../util");
6
6
  function isCreate(v) {
@@ -33,4 +33,34 @@ function validateDelete(v) {
33
33
  return lexicons_1.lexicons.validate('com.atproto.repo.applyWrites#delete', v);
34
34
  }
35
35
  exports.validateDelete = validateDelete;
36
+ function isCreateResult(v) {
37
+ return ((0, util_1.isObj)(v) &&
38
+ (0, util_1.hasProp)(v, '$type') &&
39
+ v.$type === 'com.atproto.repo.applyWrites#createResult');
40
+ }
41
+ exports.isCreateResult = isCreateResult;
42
+ function validateCreateResult(v) {
43
+ return lexicons_1.lexicons.validate('com.atproto.repo.applyWrites#createResult', v);
44
+ }
45
+ exports.validateCreateResult = validateCreateResult;
46
+ function isUpdateResult(v) {
47
+ return ((0, util_1.isObj)(v) &&
48
+ (0, util_1.hasProp)(v, '$type') &&
49
+ v.$type === 'com.atproto.repo.applyWrites#updateResult');
50
+ }
51
+ exports.isUpdateResult = isUpdateResult;
52
+ function validateUpdateResult(v) {
53
+ return lexicons_1.lexicons.validate('com.atproto.repo.applyWrites#updateResult', v);
54
+ }
55
+ exports.validateUpdateResult = validateUpdateResult;
56
+ function isDeleteResult(v) {
57
+ return ((0, util_1.isObj)(v) &&
58
+ (0, util_1.hasProp)(v, '$type') &&
59
+ v.$type === 'com.atproto.repo.applyWrites#deleteResult');
60
+ }
61
+ exports.isDeleteResult = isDeleteResult;
62
+ function validateDeleteResult(v) {
63
+ return lexicons_1.lexicons.validate('com.atproto.repo.applyWrites#deleteResult', v);
64
+ }
65
+ exports.validateDeleteResult = validateDeleteResult;
36
66
  //# sourceMappingURL=applyWrites.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyWrites.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/applyWrites.ts"],"names":[],"mappings":";;;AAKA,mDAA+C;AAC/C,2CAAiD;AAgDjD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,qCAAqC,CAClD,CAAA;AACH,CAAC;AAND,4BAMC;AAED,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,mBAAQ,CAAC,QAAQ,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAFD,wCAEC;AAUD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,qCAAqC,CAClD,CAAA;AACH,CAAC;AAND,4BAMC;AAED,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,mBAAQ,CAAC,QAAQ,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAFD,wCAEC;AASD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,qCAAqC,CAClD,CAAA;AACH,CAAC;AAND,4BAMC;AAED,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,mBAAQ,CAAC,QAAQ,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAFD,wCAEC"}
1
+ {"version":3,"file":"applyWrites.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/applyWrites.ts"],"names":[],"mappings":";;;AAKA,mDAA+C;AAC/C,2CAAiD;AA6DjD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,qCAAqC,CAClD,CAAA;AACH,CAAC;AAND,4BAMC;AAED,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,mBAAQ,CAAC,QAAQ,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAFD,wCAEC;AAUD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,qCAAqC,CAClD,CAAA;AACH,CAAC;AAND,4BAMC;AAED,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,mBAAQ,CAAC,QAAQ,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAFD,wCAEC;AASD,SAAgB,QAAQ,CAAC,CAAU;IACjC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,qCAAqC,CAClD,CAAA;AACH,CAAC;AAND,4BAMC;AAED,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,mBAAQ,CAAC,QAAQ,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAFD,wCAEC;AASD,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,2CAA2C,CACxD,CAAA;AACH,CAAC;AAND,wCAMC;AAED,SAAgB,oBAAoB,CAAC,CAAU;IAC7C,OAAO,mBAAQ,CAAC,QAAQ,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAA;AAC1E,CAAC;AAFD,oDAEC;AASD,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,2CAA2C,CACxD,CAAA;AACH,CAAC;AAND,wCAMC;AAED,SAAgB,oBAAoB,CAAC,CAAU;IAC7C,OAAO,mBAAQ,CAAC,QAAQ,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAA;AAC1E,CAAC;AAFD,oDAEC;AAMD,SAAgB,cAAc,CAAC,CAAU;IACvC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,2CAA2C,CACxD,CAAA;AACH,CAAC;AAND,wCAMC;AAED,SAAgB,oBAAoB,CAAC,CAAU;IAC7C,OAAO,mBAAQ,CAAC,QAAQ,CAAC,2CAA2C,EAAE,CAAC,CAAC,CAAA;AAC1E,CAAC;AAFD,oDAEC"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import express from 'express';
5
5
  import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import * as ComAtprotoRepoDefs from './defs';
6
7
  export interface QueryParams {
7
8
  }
8
9
  export interface InputSchema {
@@ -12,8 +13,8 @@ export interface InputSchema {
12
13
  collection: string;
13
14
  /** The Record Key. */
14
15
  rkey?: string;
15
- /** Can be set to 'false' to skip Lexicon schema validation of record data. */
16
- validate: boolean;
16
+ /** Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons. */
17
+ validate?: boolean;
17
18
  /** The record itself. Must contain a $type field. */
18
19
  record: {};
19
20
  /** Compare and swap with the previous commit by CID. */
@@ -23,6 +24,8 @@ export interface InputSchema {
23
24
  export interface OutputSchema {
24
25
  uri: string;
25
26
  cid: string;
27
+ commit?: ComAtprotoRepoDefs.CommitMeta;
28
+ validationStatus?: 'valid' | 'unknown' | (string & {});
26
29
  [k: string]: unknown;
27
30
  }
28
31
  export interface HandlerInput {
@@ -1 +1 @@
1
- {"version":3,"file":"createRecord.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/createRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAA;IACjB,qDAAqD;IACrD,MAAM,EAAE,EAAE,CAAA;IACV,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
1
+ {"version":3,"file":"createRecord.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/createRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,kBAAkB,MAAM,QAAQ,CAAA;AAE5C,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wJAAwJ;IACxJ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qDAAqD;IACrD,MAAM,EAAE,EAAE,CAAA;IACV,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAA;IACtC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * GENERATED CODE - DO NOT MODIFY
3
+ */
4
+ import { ValidationResult } from '@atproto/lexicon';
5
+ export interface CommitMeta {
6
+ cid: string;
7
+ rev: string;
8
+ [k: string]: unknown;
9
+ }
10
+ export declare function isCommitMeta(v: unknown): v is CommitMeta;
11
+ export declare function validateCommitMeta(v: unknown): ValidationResult;
12
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AAK5D,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAMxD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAE/D"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateCommitMeta = exports.isCommitMeta = void 0;
4
+ const lexicons_1 = require("../../../../lexicons");
5
+ const util_1 = require("../../../../util");
6
+ function isCommitMeta(v) {
7
+ return ((0, util_1.isObj)(v) &&
8
+ (0, util_1.hasProp)(v, '$type') &&
9
+ v.$type === 'com.atproto.repo.defs#commitMeta');
10
+ }
11
+ exports.isCommitMeta = isCommitMeta;
12
+ function validateCommitMeta(v) {
13
+ return lexicons_1.lexicons.validate('com.atproto.repo.defs#commitMeta', v);
14
+ }
15
+ exports.validateCommitMeta = validateCommitMeta;
16
+ //# sourceMappingURL=defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/defs.ts"],"names":[],"mappings":";;;AAIA,mDAA+C;AAC/C,2CAAiD;AASjD,SAAgB,YAAY,CAAC,CAAU;IACrC,OAAO,CACL,IAAA,YAAK,EAAC,CAAC,CAAC;QACR,IAAA,cAAO,EAAC,CAAC,EAAE,OAAO,CAAC;QACnB,CAAC,CAAC,KAAK,KAAK,kCAAkC,CAC/C,CAAA;AACH,CAAC;AAND,oCAMC;AAED,SAAgB,kBAAkB,CAAC,CAAU;IAC3C,OAAO,mBAAQ,CAAC,QAAQ,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAA;AACjE,CAAC;AAFD,gDAEC"}
@@ -2,7 +2,8 @@
2
2
  * GENERATED CODE - DO NOT MODIFY
3
3
  */
4
4
  import express from 'express';
5
- import { HandlerAuth } from '@atproto/xrpc-server';
5
+ import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import * as ComAtprotoRepoDefs from './defs';
6
7
  export interface QueryParams {
7
8
  }
8
9
  export interface InputSchema {
@@ -18,16 +19,27 @@ export interface InputSchema {
18
19
  swapCommit?: string;
19
20
  [k: string]: unknown;
20
21
  }
22
+ export interface OutputSchema {
23
+ commit?: ComAtprotoRepoDefs.CommitMeta;
24
+ [k: string]: unknown;
25
+ }
21
26
  export interface HandlerInput {
22
27
  encoding: 'application/json';
23
28
  body: InputSchema;
24
29
  }
30
+ export interface HandlerSuccess {
31
+ encoding: 'application/json';
32
+ body: OutputSchema;
33
+ headers?: {
34
+ [key: string]: string;
35
+ };
36
+ }
25
37
  export interface HandlerError {
26
38
  status: number;
27
39
  message?: string;
28
40
  error?: 'InvalidSwap';
29
41
  }
30
- export type HandlerOutput = HandlerError | void;
42
+ export type HandlerOutput = HandlerError | HandlerSuccess | HandlerPipeThrough;
31
43
  export type HandlerReqCtx<HA extends HandlerAuth = never> = {
32
44
  auth: HA;
33
45
  params: QueryParams;
@@ -1 +1 @@
1
- {"version":3,"file":"deleteRecord.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/deleteRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAsB,MAAM,sBAAsB,CAAA;AAEtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA;AAC/C,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
1
+ {"version":3,"file":"deleteRecord.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/deleteRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,kBAAkB,MAAM,QAAQ,CAAA;AAE5C,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAA;IACtC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import express from 'express';
5
5
  import { HandlerAuth, HandlerPipeThrough } from '@atproto/xrpc-server';
6
+ import * as ComAtprotoRepoDefs from './defs';
6
7
  export interface QueryParams {
7
8
  }
8
9
  export interface InputSchema {
@@ -12,8 +13,8 @@ export interface InputSchema {
12
13
  collection: string;
13
14
  /** The Record Key. */
14
15
  rkey: string;
15
- /** Can be set to 'false' to skip Lexicon schema validation of record data. */
16
- validate: boolean;
16
+ /** Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons. */
17
+ validate?: boolean;
17
18
  /** The record to write. */
18
19
  record: {};
19
20
  /** Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation */
@@ -25,6 +26,8 @@ export interface InputSchema {
25
26
  export interface OutputSchema {
26
27
  uri: string;
27
28
  cid: string;
29
+ commit?: ComAtprotoRepoDefs.CommitMeta;
30
+ validationStatus?: 'valid' | 'unknown' | (string & {});
28
31
  [k: string]: unknown;
29
32
  }
30
33
  export interface HandlerInput {
@@ -1 +1 @@
1
- {"version":3,"file":"putRecord.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/putRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,8EAA8E;IAC9E,QAAQ,EAAE,OAAO,CAAA;IACjB,2BAA2B;IAC3B,MAAM,EAAE,EAAE,CAAA;IACV,4IAA4I;IAC5I,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
1
+ {"version":3,"file":"putRecord.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/com/atproto/repo/putRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,kBAAkB,MAAM,QAAQ,CAAA;AAE5C,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,wJAAwJ;IACxJ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2BAA2B;IAC3B,MAAM,EAAE,EAAE,CAAA;IACV,4IAA4I;IAC5I,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAA;IACtC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,WAAW,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAA;AAC9E,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI;IAC1D,IAAI,EAAE,EAAE,CAAA;IACR,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,YAAY,CAAA;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAA;CACtB,CAAA;AACD,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,WAAW,GAAG,KAAK,IAAI,CACpD,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,KACnB,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/bsky",
3
- "version": "0.0.80",
3
+ "version": "0.0.82",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of app.bsky App View (Bluesky API)",
6
6
  "keywords": [
@@ -40,12 +40,13 @@
40
40
  "structured-headers": "^1.0.1",
41
41
  "typed-emitter": "^2.1.0",
42
42
  "uint8arrays": "3.0.0",
43
- "@atproto/api": "^0.13.5",
43
+ "@atproto/api": "^0.13.6",
44
44
  "@atproto/common": "^0.4.1",
45
45
  "@atproto/crypto": "^0.4.1",
46
46
  "@atproto/identity": "^0.4.1",
47
47
  "@atproto/lexicon": "^0.4.1",
48
- "@atproto/repo": "^0.4.3",
48
+ "@atproto/repo": "^0.5.0",
49
+ "@atproto/sync": "^0.1.0",
49
50
  "@atproto/syntax": "^0.3.0",
50
51
  "@atproto/xrpc-server": "^0.6.3"
51
52
  },
@@ -62,9 +63,9 @@
62
63
  "axios": "^0.27.2",
63
64
  "jest": "^28.1.2",
64
65
  "ts-node": "^10.8.2",
65
- "@atproto/api": "^0.13.5",
66
+ "@atproto/api": "^0.13.6",
66
67
  "@atproto/lex-cli": "^0.5.0",
67
- "@atproto/pds": "^0.4.56",
68
+ "@atproto/pds": "^0.4.58",
68
69
  "@atproto/xrpc": "^0.6.1"
69
70
  },
70
71
  "scripts": {
@@ -34,7 +34,10 @@ export const createDataPlaneClient = (
34
34
  try {
35
35
  return await client.lib[method.localName](...args)
36
36
  } catch (err) {
37
- if (err instanceof ConnectError && err.code === Code.Unavailable) {
37
+ if (
38
+ err instanceof ConnectError &&
39
+ (err.code === Code.Unavailable || err.code === Code.Aborted)
40
+ ) {
38
41
  tries++
39
42
  error = err
40
43
  remainingClients = getRemainingClients(remainingClients, client)
@@ -0,0 +1,23 @@
1
+ import { Kysely } from 'kysely'
2
+
3
+ export async function up(db: Kysely<unknown>): Promise<void> {
4
+ await db.schema.alterTable('actor_sync').dropColumn('commitDataCid').execute()
5
+ await db.schema.alterTable('actor_sync').dropColumn('rebaseCount').execute()
6
+ await db.schema.alterTable('actor_sync').dropColumn('tooBigCount').execute()
7
+ // Migration code
8
+ }
9
+
10
+ export async function down(db: Kysely<unknown>): Promise<void> {
11
+ await db.schema
12
+ .alterTable('actor_sync')
13
+ .addColumn('commitDataCid', 'varchar', (col) => col.notNull())
14
+ .execute()
15
+ await db.schema
16
+ .alterTable('actor_sync')
17
+ .addColumn('rebaseCount', 'integer', (col) => col.notNull())
18
+ .execute()
19
+ await db.schema
20
+ .alterTable('actor_sync')
21
+ .addColumn('tooBigCount', 'integer', (col) => col.notNull())
22
+ .execute()
23
+ }
@@ -42,3 +42,4 @@ export * as _20240723T220700077Z from './20240723T220700077Z-quotes-post-aggs'
42
42
  export * as _20240723T220703655Z from './20240723T220703655Z-quotes'
43
43
  export * as _20240801T193939827Z from './20240801T193939827Z-post-gate'
44
44
  export * as _20240808T224251220Z from './20240808T224251220Z-post-gate-flags'
45
+ export * as _20240829T211238293Z from './20240829T211238293Z-simplify-actor-sync'
@@ -1,10 +1,7 @@
1
1
  export interface ActorSync {
2
2
  did: string
3
3
  commitCid: string
4
- commitDataCid: string
5
4
  repoRev: string | null
6
- rebaseCount: number
7
- tooBigCount: number
8
5
  }
9
6
 
10
7
  export const tableName = 'actor_sync'
@@ -5,7 +5,6 @@ import {
5
5
  readCarWithRoot,
6
6
  WriteOpAction,
7
7
  verifyRepo,
8
- Commit,
9
8
  VerifiedRepo,
10
9
  getAndParseRecord,
11
10
  } from '@atproto/repo'
@@ -227,45 +226,25 @@ export class IndexingService {
227
226
  )
228
227
  }
229
228
 
230
- async setCommitLastSeen(
231
- commit: Commit,
232
- details: { commit: CID; rebase: boolean; tooBig: boolean },
233
- ) {
229
+ async setCommitLastSeen(did: string, commit: CID, rev: string) {
234
230
  const { ref } = this.db.db.dynamic
235
231
  await this.db.db
236
232
  .insertInto('actor_sync')
237
233
  .values({
238
- did: commit.did,
239
- commitCid: details.commit.toString(),
240
- commitDataCid: commit.data.toString(),
241
- repoRev: commit.rev ?? null,
242
- rebaseCount: details.rebase ? 1 : 0,
243
- tooBigCount: details.tooBig ? 1 : 0,
234
+ did,
235
+ commitCid: commit.toString(),
236
+ repoRev: rev ?? null,
244
237
  })
245
238
  .onConflict((oc) => {
246
- const sync = (col: string) => ref(`actor_sync.${col}`)
247
239
  const excluded = (col: string) => ref(`excluded.${col}`)
248
240
  return oc.column('did').doUpdateSet({
249
241
  commitCid: sql`${excluded('commitCid')}`,
250
- commitDataCid: sql`${excluded('commitDataCid')}`,
251
242
  repoRev: sql`${excluded('repoRev')}`,
252
- rebaseCount: sql`${sync('rebaseCount')} + ${excluded('rebaseCount')}`,
253
- tooBigCount: sql`${sync('tooBigCount')} + ${excluded('tooBigCount')}`,
254
243
  })
255
244
  })
256
245
  .execute()
257
246
  }
258
247
 
259
- async checkCommitNeedsIndexing(commit: Commit) {
260
- const sync = await this.db.db
261
- .selectFrom('actor_sync')
262
- .select('commitDataCid')
263
- .where('did', '=', commit.did)
264
- .executeTakeFirst()
265
- if (!sync) return true
266
- return sync.commitDataCid !== commit.data.toString()
267
- }
268
-
269
248
  findIndexerForCollection(collection: string) {
270
249
  const indexers = Object.values(
271
250
  this.records as Record<string, RecordProcessor<unknown, unknown>>,
@@ -0,0 +1,104 @@
1
+ import { Firehose, MemoryRunner } from '@atproto/sync'
2
+ import { IdResolver } from '@atproto/identity'
3
+ import { WriteOpAction } from '@atproto/repo'
4
+ import { subLogger as log } from '../../logger'
5
+ import { IndexingService } from './indexing'
6
+ import { Database } from './db'
7
+ import { BackgroundQueue } from './background'
8
+
9
+ export class RepoSubscription {
10
+ firehose: Firehose
11
+ runner: MemoryRunner
12
+ background: BackgroundQueue
13
+ indexingSvc: IndexingService
14
+
15
+ constructor(
16
+ public opts: { service: string; db: Database; idResolver: IdResolver },
17
+ ) {
18
+ const { service, db, idResolver } = opts
19
+ this.background = new BackgroundQueue(db)
20
+ this.indexingSvc = new IndexingService(db, idResolver, this.background)
21
+
22
+ const { runner, firehose } = createFirehose({
23
+ idResolver,
24
+ service,
25
+ indexingSvc: this.indexingSvc,
26
+ })
27
+ this.runner = runner
28
+ this.firehose = firehose
29
+ }
30
+
31
+ start() {
32
+ this.firehose.start()
33
+ }
34
+
35
+ async restart() {
36
+ await this.destroy()
37
+ const { runner, firehose } = createFirehose({
38
+ idResolver: this.opts.idResolver,
39
+ service: this.opts.service,
40
+ indexingSvc: this.indexingSvc,
41
+ })
42
+ this.runner = runner
43
+ this.firehose = firehose
44
+ this.start()
45
+ }
46
+
47
+ async processAll() {
48
+ await this.runner.processAll()
49
+ await this.background.processAll()
50
+ }
51
+
52
+ async destroy() {
53
+ await this.firehose.destroy()
54
+ await this.runner.destroy()
55
+ await this.background.processAll()
56
+ }
57
+ }
58
+
59
+ const createFirehose = (opts: {
60
+ idResolver: IdResolver
61
+ service: string
62
+ indexingSvc: IndexingService
63
+ }) => {
64
+ const { idResolver, service, indexingSvc } = opts
65
+ const runner = new MemoryRunner({ startCursor: 0 })
66
+ const firehose = new Firehose({
67
+ idResolver,
68
+ runner,
69
+ service,
70
+ unauthenticatedHandles: true, // indexing service handles these
71
+ unauthenticatedCommits: true, // @TODO there seems to be a very rare issue where the authenticator thinks a block is missing in deletion ops
72
+ onError: (err) => log.error({ err }, 'error in subscription'),
73
+ handleEvent: async (evt) => {
74
+ if (evt.event === 'identity') {
75
+ await indexingSvc.indexHandle(evt.did, evt.time, true)
76
+ } else if (evt.event === 'account') {
77
+ if (evt.active === false && evt.status === 'deleted') {
78
+ await indexingSvc.deleteActor(evt.did)
79
+ } else {
80
+ await indexingSvc.updateActorStatus(evt.did, evt.active, evt.status)
81
+ }
82
+ } else {
83
+ const indexFn =
84
+ evt.event === 'delete'
85
+ ? indexingSvc.deleteRecord(evt.uri)
86
+ : indexingSvc.indexRecord(
87
+ evt.uri,
88
+ evt.cid,
89
+ evt.record,
90
+ evt.event === 'create'
91
+ ? WriteOpAction.Create
92
+ : WriteOpAction.Update,
93
+ evt.time,
94
+ )
95
+ await Promise.all([
96
+ indexFn,
97
+ indexingSvc.setCommitLastSeen(evt.did, evt.commit, evt.rev),
98
+ indexingSvc.indexHandle(evt.did, evt.time),
99
+ ])
100
+ }
101
+ },
102
+ })
103
+ return { firehose, runner }
104
+ }