@atproto/pds 0.4.204 → 0.4.206

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 (105) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/LICENSE.txt +1 -1
  3. package/dist/account-manager/helpers/token.d.ts +32 -32
  4. package/dist/actor-store/blob/transactor.d.ts +0 -2
  5. package/dist/actor-store/blob/transactor.d.ts.map +1 -1
  6. package/dist/actor-store/blob/transactor.js +2 -42
  7. package/dist/actor-store/blob/transactor.js.map +1 -1
  8. package/dist/actor-store/db/schema/blob.d.ts +0 -2
  9. package/dist/actor-store/db/schema/blob.d.ts.map +1 -1
  10. package/dist/actor-store/db/schema/blob.js.map +1 -1
  11. package/dist/actor-store/record/reader.d.ts.map +1 -1
  12. package/dist/actor-store/record/reader.js +0 -1
  13. package/dist/actor-store/record/reader.js.map +1 -1
  14. package/dist/actor-store/record/transactor.d.ts.map +1 -1
  15. package/dist/actor-store/record/transactor.js +0 -1
  16. package/dist/actor-store/record/transactor.js.map +1 -1
  17. package/dist/api/app/bsky/util/resolver.d.ts +11 -2
  18. package/dist/api/app/bsky/util/resolver.d.ts.map +1 -1
  19. package/dist/api/com/atproto/repo/importRepo.d.ts.map +1 -1
  20. package/dist/api/com/atproto/repo/importRepo.js +0 -1
  21. package/dist/api/com/atproto/repo/importRepo.js.map +1 -1
  22. package/dist/lexicon/index.d.ts +13 -0
  23. package/dist/lexicon/index.d.ts.map +1 -1
  24. package/dist/lexicon/index.js +37 -1
  25. package/dist/lexicon/index.js.map +1 -1
  26. package/dist/lexicon/lexicons.d.ts +804 -6
  27. package/dist/lexicon/lexicons.d.ts.map +1 -1
  28. package/dist/lexicon/lexicons.js +414 -2
  29. package/dist/lexicon/lexicons.js.map +1 -1
  30. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +19 -1
  31. package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
  32. package/dist/lexicon/types/app/bsky/actor/defs.js +18 -0
  33. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  34. package/dist/lexicon/types/app/bsky/draft/createDraft.d.ts +27 -0
  35. package/dist/lexicon/types/app/bsky/draft/createDraft.d.ts.map +1 -0
  36. package/dist/lexicon/types/app/bsky/draft/createDraft.js +7 -0
  37. package/dist/lexicon/types/app/bsky/draft/createDraft.js.map +1 -0
  38. package/dist/lexicon/types/app/bsky/draft/defs.d.ts +106 -0
  39. package/dist/lexicon/types/app/bsky/draft/defs.d.ts.map +1 -0
  40. package/dist/lexicon/types/app/bsky/draft/defs.js +97 -0
  41. package/dist/lexicon/types/app/bsky/draft/defs.js.map +1 -0
  42. package/dist/lexicon/types/app/bsky/draft/deleteDraft.d.ts +14 -0
  43. package/dist/lexicon/types/app/bsky/draft/deleteDraft.d.ts.map +1 -0
  44. package/dist/lexicon/types/app/bsky/draft/deleteDraft.js +7 -0
  45. package/dist/lexicon/types/app/bsky/draft/deleteDraft.js.map +1 -0
  46. package/dist/lexicon/types/app/bsky/draft/getDrafts.d.ts +24 -0
  47. package/dist/lexicon/types/app/bsky/draft/getDrafts.d.ts.map +1 -0
  48. package/dist/lexicon/types/app/bsky/draft/getDrafts.js +7 -0
  49. package/dist/lexicon/types/app/bsky/draft/getDrafts.js.map +1 -0
  50. package/dist/lexicon/types/app/bsky/draft/updateDraft.d.ts +15 -0
  51. package/dist/lexicon/types/app/bsky/draft/updateDraft.d.ts.map +1 -0
  52. package/dist/lexicon/types/app/bsky/draft/updateDraft.js +7 -0
  53. package/dist/lexicon/types/app/bsky/draft/updateDraft.js.map +1 -0
  54. package/dist/lexicon/types/app/bsky/embed/video.d.ts +4 -0
  55. package/dist/lexicon/types/app/bsky/embed/video.d.ts.map +1 -1
  56. package/dist/lexicon/types/app/bsky/embed/video.js.map +1 -1
  57. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.d.ts +1 -1
  58. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsers.js.map +1 -1
  59. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.d.ts +1 -1
  60. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.js.map +1 -1
  61. package/dist/repo/prepare.d.ts.map +1 -1
  62. package/dist/repo/prepare.js +0 -1
  63. package/dist/repo/prepare.js.map +1 -1
  64. package/dist/repo/types.d.ts.map +1 -1
  65. package/dist/repo/types.js +0 -1
  66. package/dist/repo/types.js.map +1 -1
  67. package/dist/sequencer/events.d.ts +6 -6
  68. package/dist/sequencer/events.d.ts.map +1 -1
  69. package/dist/sequencer/events.js +1 -2
  70. package/dist/sequencer/events.js.map +1 -1
  71. package/dist/sequencer/sequencer.d.ts.map +1 -1
  72. package/dist/sequencer/sequencer.js +0 -1
  73. package/dist/sequencer/sequencer.js.map +1 -1
  74. package/package.json +12 -13
  75. package/src/actor-store/blob/transactor.ts +2 -12
  76. package/src/actor-store/db/schema/blob.ts +2 -2
  77. package/src/actor-store/record/reader.ts +0 -2
  78. package/src/actor-store/record/transactor.ts +0 -2
  79. package/src/api/com/atproto/repo/importRepo.ts +0 -2
  80. package/src/lexicon/index.ts +62 -0
  81. package/src/lexicon/lexicons.ts +424 -2
  82. package/src/lexicon/types/app/bsky/actor/defs.ts +37 -0
  83. package/src/lexicon/types/app/bsky/draft/createDraft.ts +46 -0
  84. package/src/lexicon/types/app/bsky/draft/defs.ts +208 -0
  85. package/src/lexicon/types/app/bsky/draft/deleteDraft.ts +33 -0
  86. package/src/lexicon/types/app/bsky/draft/getDrafts.ts +42 -0
  87. package/src/lexicon/types/app/bsky/draft/updateDraft.ts +34 -0
  88. package/src/lexicon/types/app/bsky/embed/video.ts +4 -0
  89. package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts +1 -1
  90. package/src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts +1 -1
  91. package/src/repo/prepare.ts +0 -2
  92. package/src/repo/types.ts +0 -2
  93. package/src/sequencer/events.ts +2 -4
  94. package/src/sequencer/sequencer.ts +0 -2
  95. package/tests/crud.test.ts +0 -2
  96. package/tests/file-uploads.test.ts +0 -6
  97. package/tests/sequencer.test.ts +0 -2
  98. package/tests/sync/subscribe-repos.test.ts +0 -2
  99. package/tests/sync/sync.test.ts +0 -2
  100. package/tsconfig.build.tsbuildinfo +1 -1
  101. package/dist/image/index.d.ts +0 -16
  102. package/dist/image/index.d.ts.map +0 -1
  103. package/dist/image/index.js +0 -59
  104. package/dist/image/index.js.map +0 -1
  105. package/src/image/index.ts +0 -67
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteDraft.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/deleteDraft.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,4BAA4B,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.draft.deleteDraft'\n\nexport type QueryParams = {}\n\nexport interface InputSchema {\n id: string\n}\n\nexport interface HandlerInput {\n encoding: 'application/json'\n body: InputSchema\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | void\n"]}
@@ -0,0 +1,24 @@
1
+ import type * as AppBskyDraftDefs from './defs.js';
2
+ export type QueryParams = {
3
+ limit: number;
4
+ cursor?: string;
5
+ };
6
+ export type InputSchema = undefined;
7
+ export interface OutputSchema {
8
+ cursor?: string;
9
+ drafts: AppBskyDraftDefs.DraftView[];
10
+ }
11
+ export type HandlerInput = void;
12
+ export interface HandlerSuccess {
13
+ encoding: 'application/json';
14
+ body: OutputSchema;
15
+ headers?: {
16
+ [key: string]: string;
17
+ };
18
+ }
19
+ export interface HandlerError {
20
+ status: number;
21
+ message?: string;
22
+ }
23
+ export type HandlerOutput = HandlerError | HandlerSuccess;
24
+ //# sourceMappingURL=getDrafts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDrafts.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/getDrafts.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,gBAAgB,MAAM,WAAW,CAAA;AAMlD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,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;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.draft.getDrafts';
7
+ //# sourceMappingURL=getDrafts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDrafts.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/getDrafts.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,0BAA0B,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyDraftDefs from './defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.draft.getDrafts'\n\nexport type QueryParams = {\n limit: number\n cursor?: string\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n cursor?: string\n drafts: AppBskyDraftDefs.DraftView[]\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
@@ -0,0 +1,15 @@
1
+ import type * as AppBskyDraftDefs from './defs.js';
2
+ export type QueryParams = {};
3
+ export interface InputSchema {
4
+ draft: AppBskyDraftDefs.DraftWithId;
5
+ }
6
+ export interface HandlerInput {
7
+ encoding: 'application/json';
8
+ body: InputSchema;
9
+ }
10
+ export interface HandlerError {
11
+ status: number;
12
+ message?: string;
13
+ }
14
+ export type HandlerOutput = HandlerError | void;
15
+ //# sourceMappingURL=updateDraft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateDraft.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/updateDraft.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,gBAAgB,MAAM,WAAW,CAAA;AAMlD,MAAM,MAAM,WAAW,GAAG,EAAE,CAAA;AAE5B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAA;CACpC;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;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.draft.updateDraft';
7
+ //# sourceMappingURL=updateDraft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateDraft.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/updateDraft.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,4BAA4B,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyDraftDefs from './defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.draft.updateDraft'\n\nexport type QueryParams = {}\n\nexport interface InputSchema {\n draft: AppBskyDraftDefs.DraftWithId\n}\n\nexport interface HandlerInput {\n encoding: 'application/json'\n body: InputSchema\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | void\n"]}
@@ -11,6 +11,8 @@ export interface Main {
11
11
  /** Alt text description of the video, for accessibility. */
12
12
  alt?: string;
13
13
  aspectRatio?: AppBskyEmbedDefs.AspectRatio;
14
+ /** A hint to the client about how to present the video. */
15
+ presentation?: 'default' | 'gif' | (string & {});
14
16
  }
15
17
  export declare function isMain<V>(v: V): v is import("../../../../util").$TypedObject<V, "app.bsky.embed.video", "main">;
16
18
  export declare function validateMain<V>(v: V): ValidationResult<Main & V>;
@@ -28,6 +30,8 @@ export interface View {
28
30
  thumbnail?: string;
29
31
  alt?: string;
30
32
  aspectRatio?: AppBskyEmbedDefs.AspectRatio;
33
+ /** A hint to the client about how to present the video. */
34
+ presentation?: 'default' | 'gif' | (string & {});
31
35
  }
32
36
  export declare function isView<V>(v: V): v is import("../../../../util").$TypedObject<V, "app.bsky.embed.video", "view">;
33
37
  export declare function validateView<V>(v: V): ValidationResult<View & V>;
@@ -1 +1 @@
1
- {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/embed/video.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAQjE,OAAO,KAAK,KAAK,gBAAgB,MAAM,WAAW,CAAA;AAMlD,MAAM,WAAW,IAAI;IACnB,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAA;CAC3C;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,8BAA8B,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sFAEhC;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iCAEtC;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,CAAC,EAAE,2BAA2B,CAAA;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAA;CAC3C;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC"}
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/embed/video.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAQjE,OAAO,KAAK,KAAK,gBAAgB,MAAM,WAAW,CAAA;AAMlD,MAAM,WAAW,IAAI;IACnB,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAA;IAC1C,2DAA2D;IAC3D,YAAY,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;CACjD;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,8BAA8B,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACd;AAID,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sFAEhC;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iCAEtC;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,CAAC,EAAE,2BAA2B,CAAA;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAA;IAC1C,2DAA2D;IAC3D,YAAY,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;CACjD;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"video.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/embed/video.ts"],"names":[],"mappings":";;AA6BA,wBAEC;AAED,oCAEC;AAUD,8BAEC;AAED,0CAEC;AAaD,wBAEC;AAED,oCAEC;AAjED,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sBAAsB,CAAA;AAYjC,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAQD,MAAM,WAAW,GAAG,SAAS,CAAA;AAE7B,SAAgB,SAAS,CAAI,CAAI;IAC/B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;AACrC,CAAC;AAED,SAAgB,eAAe,CAAI,CAAI;IACrC,OAAO,QAAQ,CAAc,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;AAClD,CAAC;AAWD,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyEmbedDefs from './defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.embed.video'\n\nexport interface Main {\n $type?: 'app.bsky.embed.video'\n /** The mp4 video file. May be up to 100mb, formerly limited to 50mb. */\n video: BlobRef\n captions?: Caption[]\n /** Alt text description of the video, for accessibility. */\n alt?: string\n aspectRatio?: AppBskyEmbedDefs.AspectRatio\n}\n\nconst hashMain = 'main'\n\nexport function isMain<V>(v: V) {\n return is$typed(v, id, hashMain)\n}\n\nexport function validateMain<V>(v: V) {\n return validate<Main & V>(v, id, hashMain)\n}\n\nexport interface Caption {\n $type?: 'app.bsky.embed.video#caption'\n lang: string\n file: BlobRef\n}\n\nconst hashCaption = 'caption'\n\nexport function isCaption<V>(v: V) {\n return is$typed(v, id, hashCaption)\n}\n\nexport function validateCaption<V>(v: V) {\n return validate<Caption & V>(v, id, hashCaption)\n}\n\nexport interface View {\n $type?: 'app.bsky.embed.video#view'\n cid: string\n playlist: string\n thumbnail?: string\n alt?: string\n aspectRatio?: AppBskyEmbedDefs.AspectRatio\n}\n\nconst hashView = 'view'\n\nexport function isView<V>(v: V) {\n return is$typed(v, id, hashView)\n}\n\nexport function validateView<V>(v: V) {\n return validate<View & V>(v, id, hashView)\n}\n"]}
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/embed/video.ts"],"names":[],"mappings":";;AA+BA,wBAEC;AAED,oCAEC;AAUD,8BAEC;AAED,0CAEC;AAeD,wBAEC;AAED,oCAEC;AArED,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sBAAsB,CAAA;AAcjC,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAQD,MAAM,WAAW,GAAG,SAAS,CAAA;AAE7B,SAAgB,SAAS,CAAI,CAAI;IAC/B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;AACrC,CAAC;AAED,SAAgB,eAAe,CAAI,CAAI;IACrC,OAAO,QAAQ,CAAc,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;AAClD,CAAC;AAaD,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyEmbedDefs from './defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.embed.video'\n\nexport interface Main {\n $type?: 'app.bsky.embed.video'\n /** The mp4 video file. May be up to 100mb, formerly limited to 50mb. */\n video: BlobRef\n captions?: Caption[]\n /** Alt text description of the video, for accessibility. */\n alt?: string\n aspectRatio?: AppBskyEmbedDefs.AspectRatio\n /** A hint to the client about how to present the video. */\n presentation?: 'default' | 'gif' | (string & {})\n}\n\nconst hashMain = 'main'\n\nexport function isMain<V>(v: V) {\n return is$typed(v, id, hashMain)\n}\n\nexport function validateMain<V>(v: V) {\n return validate<Main & V>(v, id, hashMain)\n}\n\nexport interface Caption {\n $type?: 'app.bsky.embed.video#caption'\n lang: string\n file: BlobRef\n}\n\nconst hashCaption = 'caption'\n\nexport function isCaption<V>(v: V) {\n return is$typed(v, id, hashCaption)\n}\n\nexport function validateCaption<V>(v: V) {\n return validate<Caption & V>(v, id, hashCaption)\n}\n\nexport interface View {\n $type?: 'app.bsky.embed.video#view'\n cid: string\n playlist: string\n thumbnail?: string\n alt?: string\n aspectRatio?: AppBskyEmbedDefs.AspectRatio\n /** A hint to the client about how to present the video. */\n presentation?: 'default' | 'gif' | (string & {})\n}\n\nconst hashView = 'view'\n\nexport function isView<V>(v: V) {\n return is$typed(v, id, hashView)\n}\n\nexport function validateView<V>(v: V) {\n return validate<View & V>(v, id, hashView)\n}\n"]}
@@ -8,7 +8,7 @@ export type InputSchema = undefined;
8
8
  export interface OutputSchema {
9
9
  actors: AppBskyActorDefs.ProfileView[];
10
10
  /** Snowflake for this recommendation, use when submitting recommendation events. */
11
- recId?: number;
11
+ recId?: string;
12
12
  }
13
13
  export type HandlerInput = void;
14
14
  export interface HandlerSuccess {
@@ -1 +1 @@
1
- {"version":3,"file":"getSuggestedUsers.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sCAAsC,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyActorDefs from '../actor/defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.unspecced.getSuggestedUsers'\n\nexport type QueryParams = {\n /** Category of users to get suggestions for. */\n category?: string\n limit: number\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n actors: AppBskyActorDefs.ProfileView[]\n /** Snowflake for this recommendation, use when submitting recommendation events. */\n recId?: number\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
1
+ {"version":3,"file":"getSuggestedUsers.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedUsers.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,sCAAsC,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyActorDefs from '../actor/defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.unspecced.getSuggestedUsers'\n\nexport type QueryParams = {\n /** Category of users to get suggestions for. */\n category?: string\n limit: number\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n actors: AppBskyActorDefs.ProfileView[]\n /** Snowflake for this recommendation, use when submitting recommendation events. */\n recId?: string\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
@@ -9,7 +9,7 @@ export type InputSchema = undefined;
9
9
  export interface OutputSchema {
10
10
  dids: string[];
11
11
  /** Snowflake for this recommendation, use when submitting recommendation events. */
12
- recId?: number;
12
+ recId?: string;
13
13
  }
14
14
  export type HandlerInput = void;
15
15
  export interface HandlerSuccess {
@@ -1 +1 @@
1
- {"version":3,"file":"getSuggestedUsersSkeleton.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,8CAA8C,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.unspecced.getSuggestedUsersSkeleton'\n\nexport type QueryParams = {\n /** DID of the account making the request (not included for public/unauthenticated queries). */\n viewer?: string\n /** Category of users to get suggestions for. */\n category?: string\n limit: number\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n dids: string[]\n /** Snowflake for this recommendation, use when submitting recommendation events. */\n recId?: number\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
1
+ {"version":3,"file":"getSuggestedUsersSkeleton.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedUsersSkeleton.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,8CAA8C,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.unspecced.getSuggestedUsersSkeleton'\n\nexport type QueryParams = {\n /** DID of the account making the request (not included for public/unauthenticated queries). */\n viewer?: string\n /** Category of users to get suggestions for. */\n category?: string\n limit: number\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n dids: string[]\n /** Snowflake for this recommendation, use when submitting recommendation events. */\n recId?: string\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/repo/prepare.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,EACL,OAAO,EACP,QAAQ,EAER,UAAU,EAIX,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EAGd,MAAM,eAAe,CAAA;AAetB,OAAO,EAEL,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAQhB,eAAO,MAAM,2BAA2B,GACtC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,KAChC,gBAsBF,CAAA;AAID,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAYnE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,YAAY,MAAM,EAClB,QAAQ,UAAU,EAClB,UAAU,OAAO,eAWlB,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG,OAAO,CAAC,cAAc,CAwBzB,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG,OAAO,CAAC,cAAc,CAoBzB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,MAAM;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;CACrB,KAAG,cAOH,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAKtD,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAKtD,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAItD,CAAA;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,aAAa,KAAG,aAWhD,CAAA;AA6CD,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,QAAQ,UAAU,EAClB,UAAU,OAAO,KAChB,eAAe,EAoBjB,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,KAAK,QAAQ,EACb,OAAM,MAAM,EAAO,EACnB,cAAS,KACR,YAAY,EA6Bd,CAAA"}
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/repo/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,EACL,OAAO,EACP,QAAQ,EAER,UAAU,EAIX,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EAGd,MAAM,eAAe,CAAA;AAetB,OAAO,EAEL,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAQhB,eAAO,MAAM,2BAA2B,GACtC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,KAChC,gBAsBF,CAAA;AAID,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAYnE,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,YAAY,MAAM,EAClB,QAAQ,UAAU,EAClB,UAAU,OAAO,eAWlB,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG,OAAO,CAAC,cAAc,CAwBzB,CAAA;AAED,eAAO,MAAM,aAAa,GAAU,MAAM;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAG,OAAO,CAAC,cAAc,CAoBzB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,MAAM;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;CACrB,KAAG,cAOH,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAKtD,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAKtD,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAItD,CAAA;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,aAAa,KAAG,aAWhD,CAAA;AA6CD,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,QAAQ,UAAU,EAClB,UAAU,OAAO,KAChB,eAAe,EAoBjB,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,KAAK,QAAQ,EACb,OAAM,MAAM,EAAO,EACnB,cAAS,KACR,YAAY,EA6Bd,CAAA"}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable import/no-deprecated */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/repo/prepare.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-deprecated */\n\nimport { CID } from 'multiformats/cid'\nimport { TID, check, dataToCborBlock } from '@atproto/common'\nimport {\n BlobRef,\n LexValue,\n LexiconDefNotFoundError,\n RepoRecord,\n ValidationError,\n lexToIpld,\n untypedJsonBlobRef,\n} from '@atproto/lexicon'\nimport {\n RecordCreateOp,\n RecordDeleteOp,\n RecordUpdateOp,\n RecordWriteOp,\n WriteOpAction,\n cborToLex,\n} from '@atproto/repo'\nimport {\n AtUri,\n ensureValidDatetime,\n ensureValidRecordKey,\n} from '@atproto/syntax'\nimport { hasExplicitSlur } from '../handle/explicit-slurs'\nimport * as lex from '../lexicon/lexicons'\nimport * as AppBskyActorProfile from '../lexicon/types/app/bsky/actor/profile'\nimport * as AppBskyFeedGenerator from '../lexicon/types/app/bsky/feed/generator'\nimport * as AppBskyFeedPost from '../lexicon/types/app/bsky/feed/post'\nimport * as AppBskyGraphList from '../lexicon/types/app/bsky/graph/list'\nimport * as AppBskyGraphStarterpack from '../lexicon/types/app/bsky/graph/starterpack'\nimport { isTag } from '../lexicon/types/app/bsky/richtext/facet'\nimport { asPredicate } from '../lexicon/util'\nimport {\n InvalidRecordError,\n PreparedBlobRef,\n PreparedCreate,\n PreparedDelete,\n PreparedUpdate,\n PreparedWrite,\n ValidationStatus,\n} from './types'\n\nconst isValidFeedGenerator = asPredicate(AppBskyFeedGenerator.validateRecord)\nconst isValidStarterPack = asPredicate(AppBskyGraphStarterpack.validateRecord)\nconst isValidPost = asPredicate(AppBskyFeedPost.validateRecord)\nconst isValidList = asPredicate(AppBskyGraphList.validateRecord)\nconst isValidProfile = asPredicate(AppBskyActorProfile.validateRecord)\n\nexport const assertValidRecordWithStatus = (\n record: Record<string, unknown>,\n opts: { requireLexicon: boolean },\n): ValidationStatus => {\n if (typeof record.$type !== 'string') {\n throw new InvalidRecordError('No $type provided')\n }\n try {\n lex.lexicons.assertValidRecord(record.$type, record)\n assertValidCreatedAt(record)\n } catch (e) {\n if (e instanceof LexiconDefNotFoundError) {\n if (opts.requireLexicon) {\n throw new InvalidRecordError(e.message)\n } else {\n return 'unknown'\n }\n }\n throw new InvalidRecordError(\n `Invalid ${record.$type} record: ${\n e instanceof Error ? e.message : String(e)\n }`,\n )\n }\n return 'valid'\n}\n\n// additional more rigorous check on datetimes\n// this check will eventually be in the lex sdk, but this will stop the bleed until then\nexport const assertValidCreatedAt = (record: Record<string, unknown>) => {\n const createdAt = record['createdAt']\n if (typeof createdAt !== 'string') {\n return\n }\n try {\n ensureValidDatetime(createdAt)\n } catch {\n throw new ValidationError(\n 'createdAt must be an valid atproto datetime (both RFC-3339 and ISO-8601)',\n )\n }\n}\n\nexport const setCollectionName = (\n collection: string,\n record: RepoRecord,\n validate: boolean,\n) => {\n if (!record.$type) {\n record.$type = collection\n }\n if (validate && record.$type !== collection) {\n throw new InvalidRecordError(\n `Invalid $type: expected ${collection}, got ${record.$type}`,\n )\n }\n return record\n}\n\nexport const prepareCreate = async (opts: {\n did: string\n collection: string\n rkey?: string\n swapCid?: CID | null\n record: RepoRecord\n validate?: boolean\n}): Promise<PreparedCreate> => {\n const { did, collection, swapCid, validate } = opts\n const maybeValidate = validate !== false\n const record = setCollectionName(collection, opts.record, maybeValidate)\n let validationStatus: ValidationStatus\n if (maybeValidate) {\n validationStatus = assertValidRecordWithStatus(record, {\n requireLexicon: validate === true,\n })\n }\n const nextRkey = TID.next()\n const rkey = opts.rkey || nextRkey.toString()\n // @TODO: validate against Lexicon record 'key' type, not just overall recordkey syntax\n ensureValidRecordKey(rkey)\n assertNoExplicitSlurs(rkey, record)\n return {\n action: WriteOpAction.Create,\n uri: AtUri.make(did, collection, rkey),\n cid: await cidForSafeRecord(record),\n swapCid,\n record,\n blobs: blobsForWrite(record, maybeValidate),\n validationStatus,\n }\n}\n\nexport const prepareUpdate = async (opts: {\n did: string\n collection: string\n rkey: string\n swapCid?: CID | null\n record: RepoRecord\n validate?: boolean\n}): Promise<PreparedUpdate> => {\n const { did, collection, rkey, swapCid, validate } = opts\n const maybeValidate = validate !== false\n const record = setCollectionName(collection, opts.record, maybeValidate)\n let validationStatus: ValidationStatus\n if (maybeValidate) {\n validationStatus = assertValidRecordWithStatus(record, {\n requireLexicon: validate === true,\n })\n }\n assertNoExplicitSlurs(rkey, record)\n return {\n action: WriteOpAction.Update,\n uri: AtUri.make(did, collection, rkey),\n cid: await cidForSafeRecord(record),\n swapCid,\n record,\n blobs: blobsForWrite(record, maybeValidate),\n validationStatus,\n }\n}\n\nexport const prepareDelete = (opts: {\n did: string\n collection: string\n rkey: string\n swapCid?: CID | null\n}): PreparedDelete => {\n const { did, collection, rkey, swapCid } = opts\n return {\n action: WriteOpAction.Delete,\n uri: AtUri.make(did, collection, rkey),\n swapCid,\n }\n}\n\nexport const createWriteToOp = (write: PreparedCreate): RecordCreateOp => ({\n action: WriteOpAction.Create,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n record: write.record,\n})\n\nexport const updateWriteToOp = (write: PreparedUpdate): RecordUpdateOp => ({\n action: WriteOpAction.Update,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n record: write.record,\n})\n\nexport const deleteWriteToOp = (write: PreparedDelete): RecordDeleteOp => ({\n action: WriteOpAction.Delete,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n})\n\nexport const writeToOp = (write: PreparedWrite): RecordWriteOp => {\n switch (write.action) {\n case WriteOpAction.Create:\n return createWriteToOp(write)\n case WriteOpAction.Update:\n return updateWriteToOp(write)\n case WriteOpAction.Delete:\n return deleteWriteToOp(write)\n default:\n throw new Error(`Unrecognized action: ${write}`)\n }\n}\n\nasync function cidForSafeRecord(record: RepoRecord) {\n try {\n const block = await dataToCborBlock(lexToIpld(record))\n cborToLex(block.bytes)\n return block.cid\n } catch (err) {\n // Block does not properly transform between lex and cbor\n const badRecordErr = new InvalidRecordError('Bad record')\n badRecordErr.cause = err\n throw badRecordErr\n }\n}\n\nfunction assertNoExplicitSlurs(rkey: string, record: RepoRecord) {\n const toCheck: string[] = []\n\n if (isValidProfile(record)) {\n if (record.displayName) toCheck.push(record.displayName)\n } else if (isValidList(record)) {\n toCheck.push(record.name)\n } else if (isValidStarterPack(record)) {\n toCheck.push(record.name)\n } else if (isValidFeedGenerator(record)) {\n toCheck.push(rkey)\n toCheck.push(record.displayName)\n } else if (isValidPost(record)) {\n if (record.tags) {\n toCheck.push(...record.tags)\n }\n\n for (const facet of record.facets || []) {\n for (const feat of facet.features) {\n if (isTag(feat)) {\n toCheck.push(feat.tag)\n }\n }\n }\n }\n if (hasExplicitSlur(toCheck.join(' '))) {\n throw new InvalidRecordError('Unacceptable slur in record')\n }\n}\n\ntype FoundBlobRef = {\n ref: BlobRef\n path: string[]\n}\n\nexport const blobsForWrite = (\n record: RepoRecord,\n validate: boolean,\n): PreparedBlobRef[] => {\n const refs = findBlobRefs(record)\n const recordType =\n typeof record['$type'] === 'string' ? record['$type'] : undefined\n\n for (const ref of refs) {\n if (check.is(ref.ref.original, untypedJsonBlobRef)) {\n throw new InvalidRecordError(`Legacy blob ref at '${ref.path.join('/')}'`)\n }\n }\n\n return refs.map(({ ref, path }) => ({\n size: ref.size,\n cid: ref.ref,\n mimeType: ref.mimeType,\n constraints:\n validate && recordType\n ? CONSTRAINTS[recordType]?.[path.join('/')] ?? {}\n : {},\n }))\n}\n\nexport const findBlobRefs = (\n val: LexValue,\n path: string[] = [],\n layer = 0,\n): FoundBlobRef[] => {\n if (layer > 32) {\n return []\n }\n // walk arrays\n if (Array.isArray(val)) {\n return val.flatMap((item) => findBlobRefs(item, path, layer + 1))\n }\n // objects\n if (val && typeof val === 'object') {\n // convert blobs, leaving the original encoding so that we don't change CIDs on re-encode\n if (val instanceof BlobRef) {\n return [\n {\n ref: val,\n path,\n },\n ]\n }\n // retain cids & bytes\n if (CID.asCID(val) || val instanceof Uint8Array) {\n return []\n }\n return Object.entries(val).flatMap(([key, item]) =>\n findBlobRefs(item, [...path, key], layer + 1),\n )\n }\n // pass through\n return []\n}\n\nconst CONSTRAINTS = {\n [lex.ids.AppBskyActorProfile]: {\n avatar:\n lex.schemaDict.AppBskyActorProfile.defs.main.record.properties.avatar,\n banner:\n lex.schemaDict.AppBskyActorProfile.defs.main.record.properties.banner,\n },\n [lex.ids.AppBskyFeedGenerator]: {\n avatar:\n lex.schemaDict.AppBskyFeedGenerator.defs.main.record.properties.avatar,\n },\n [lex.ids.AppBskyGraphList]: {\n avatar: lex.schemaDict.AppBskyGraphList.defs.main.record.properties.avatar,\n },\n [lex.ids.AppBskyFeedPost]: {\n 'embed/images/image':\n lex.schemaDict.AppBskyEmbedImages.defs.image.properties.image,\n 'embed/external/thumb':\n lex.schemaDict.AppBskyEmbedExternal.defs.external.properties.thumb,\n 'embed/media/images/image':\n lex.schemaDict.AppBskyEmbedImages.defs.image.properties.image,\n 'embed/media/external/thumb':\n lex.schemaDict.AppBskyEmbedExternal.defs.external.properties.thumb,\n },\n}\n"]}
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/repo/prepare.ts"],"names":[],"mappings":"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","sourcesContent":["import { CID } from 'multiformats/cid'\nimport { TID, check, dataToCborBlock } from '@atproto/common'\nimport {\n BlobRef,\n LexValue,\n LexiconDefNotFoundError,\n RepoRecord,\n ValidationError,\n lexToIpld,\n untypedJsonBlobRef,\n} from '@atproto/lexicon'\nimport {\n RecordCreateOp,\n RecordDeleteOp,\n RecordUpdateOp,\n RecordWriteOp,\n WriteOpAction,\n cborToLex,\n} from '@atproto/repo'\nimport {\n AtUri,\n ensureValidDatetime,\n ensureValidRecordKey,\n} from '@atproto/syntax'\nimport { hasExplicitSlur } from '../handle/explicit-slurs'\nimport * as lex from '../lexicon/lexicons'\nimport * as AppBskyActorProfile from '../lexicon/types/app/bsky/actor/profile'\nimport * as AppBskyFeedGenerator from '../lexicon/types/app/bsky/feed/generator'\nimport * as AppBskyFeedPost from '../lexicon/types/app/bsky/feed/post'\nimport * as AppBskyGraphList from '../lexicon/types/app/bsky/graph/list'\nimport * as AppBskyGraphStarterpack from '../lexicon/types/app/bsky/graph/starterpack'\nimport { isTag } from '../lexicon/types/app/bsky/richtext/facet'\nimport { asPredicate } from '../lexicon/util'\nimport {\n InvalidRecordError,\n PreparedBlobRef,\n PreparedCreate,\n PreparedDelete,\n PreparedUpdate,\n PreparedWrite,\n ValidationStatus,\n} from './types'\n\nconst isValidFeedGenerator = asPredicate(AppBskyFeedGenerator.validateRecord)\nconst isValidStarterPack = asPredicate(AppBskyGraphStarterpack.validateRecord)\nconst isValidPost = asPredicate(AppBskyFeedPost.validateRecord)\nconst isValidList = asPredicate(AppBskyGraphList.validateRecord)\nconst isValidProfile = asPredicate(AppBskyActorProfile.validateRecord)\n\nexport const assertValidRecordWithStatus = (\n record: Record<string, unknown>,\n opts: { requireLexicon: boolean },\n): ValidationStatus => {\n if (typeof record.$type !== 'string') {\n throw new InvalidRecordError('No $type provided')\n }\n try {\n lex.lexicons.assertValidRecord(record.$type, record)\n assertValidCreatedAt(record)\n } catch (e) {\n if (e instanceof LexiconDefNotFoundError) {\n if (opts.requireLexicon) {\n throw new InvalidRecordError(e.message)\n } else {\n return 'unknown'\n }\n }\n throw new InvalidRecordError(\n `Invalid ${record.$type} record: ${\n e instanceof Error ? e.message : String(e)\n }`,\n )\n }\n return 'valid'\n}\n\n// additional more rigorous check on datetimes\n// this check will eventually be in the lex sdk, but this will stop the bleed until then\nexport const assertValidCreatedAt = (record: Record<string, unknown>) => {\n const createdAt = record['createdAt']\n if (typeof createdAt !== 'string') {\n return\n }\n try {\n ensureValidDatetime(createdAt)\n } catch {\n throw new ValidationError(\n 'createdAt must be an valid atproto datetime (both RFC-3339 and ISO-8601)',\n )\n }\n}\n\nexport const setCollectionName = (\n collection: string,\n record: RepoRecord,\n validate: boolean,\n) => {\n if (!record.$type) {\n record.$type = collection\n }\n if (validate && record.$type !== collection) {\n throw new InvalidRecordError(\n `Invalid $type: expected ${collection}, got ${record.$type}`,\n )\n }\n return record\n}\n\nexport const prepareCreate = async (opts: {\n did: string\n collection: string\n rkey?: string\n swapCid?: CID | null\n record: RepoRecord\n validate?: boolean\n}): Promise<PreparedCreate> => {\n const { did, collection, swapCid, validate } = opts\n const maybeValidate = validate !== false\n const record = setCollectionName(collection, opts.record, maybeValidate)\n let validationStatus: ValidationStatus\n if (maybeValidate) {\n validationStatus = assertValidRecordWithStatus(record, {\n requireLexicon: validate === true,\n })\n }\n const nextRkey = TID.next()\n const rkey = opts.rkey || nextRkey.toString()\n // @TODO: validate against Lexicon record 'key' type, not just overall recordkey syntax\n ensureValidRecordKey(rkey)\n assertNoExplicitSlurs(rkey, record)\n return {\n action: WriteOpAction.Create,\n uri: AtUri.make(did, collection, rkey),\n cid: await cidForSafeRecord(record),\n swapCid,\n record,\n blobs: blobsForWrite(record, maybeValidate),\n validationStatus,\n }\n}\n\nexport const prepareUpdate = async (opts: {\n did: string\n collection: string\n rkey: string\n swapCid?: CID | null\n record: RepoRecord\n validate?: boolean\n}): Promise<PreparedUpdate> => {\n const { did, collection, rkey, swapCid, validate } = opts\n const maybeValidate = validate !== false\n const record = setCollectionName(collection, opts.record, maybeValidate)\n let validationStatus: ValidationStatus\n if (maybeValidate) {\n validationStatus = assertValidRecordWithStatus(record, {\n requireLexicon: validate === true,\n })\n }\n assertNoExplicitSlurs(rkey, record)\n return {\n action: WriteOpAction.Update,\n uri: AtUri.make(did, collection, rkey),\n cid: await cidForSafeRecord(record),\n swapCid,\n record,\n blobs: blobsForWrite(record, maybeValidate),\n validationStatus,\n }\n}\n\nexport const prepareDelete = (opts: {\n did: string\n collection: string\n rkey: string\n swapCid?: CID | null\n}): PreparedDelete => {\n const { did, collection, rkey, swapCid } = opts\n return {\n action: WriteOpAction.Delete,\n uri: AtUri.make(did, collection, rkey),\n swapCid,\n }\n}\n\nexport const createWriteToOp = (write: PreparedCreate): RecordCreateOp => ({\n action: WriteOpAction.Create,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n record: write.record,\n})\n\nexport const updateWriteToOp = (write: PreparedUpdate): RecordUpdateOp => ({\n action: WriteOpAction.Update,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n record: write.record,\n})\n\nexport const deleteWriteToOp = (write: PreparedDelete): RecordDeleteOp => ({\n action: WriteOpAction.Delete,\n collection: write.uri.collection,\n rkey: write.uri.rkey,\n})\n\nexport const writeToOp = (write: PreparedWrite): RecordWriteOp => {\n switch (write.action) {\n case WriteOpAction.Create:\n return createWriteToOp(write)\n case WriteOpAction.Update:\n return updateWriteToOp(write)\n case WriteOpAction.Delete:\n return deleteWriteToOp(write)\n default:\n throw new Error(`Unrecognized action: ${write}`)\n }\n}\n\nasync function cidForSafeRecord(record: RepoRecord) {\n try {\n const block = await dataToCborBlock(lexToIpld(record))\n cborToLex(block.bytes)\n return block.cid\n } catch (err) {\n // Block does not properly transform between lex and cbor\n const badRecordErr = new InvalidRecordError('Bad record')\n badRecordErr.cause = err\n throw badRecordErr\n }\n}\n\nfunction assertNoExplicitSlurs(rkey: string, record: RepoRecord) {\n const toCheck: string[] = []\n\n if (isValidProfile(record)) {\n if (record.displayName) toCheck.push(record.displayName)\n } else if (isValidList(record)) {\n toCheck.push(record.name)\n } else if (isValidStarterPack(record)) {\n toCheck.push(record.name)\n } else if (isValidFeedGenerator(record)) {\n toCheck.push(rkey)\n toCheck.push(record.displayName)\n } else if (isValidPost(record)) {\n if (record.tags) {\n toCheck.push(...record.tags)\n }\n\n for (const facet of record.facets || []) {\n for (const feat of facet.features) {\n if (isTag(feat)) {\n toCheck.push(feat.tag)\n }\n }\n }\n }\n if (hasExplicitSlur(toCheck.join(' '))) {\n throw new InvalidRecordError('Unacceptable slur in record')\n }\n}\n\ntype FoundBlobRef = {\n ref: BlobRef\n path: string[]\n}\n\nexport const blobsForWrite = (\n record: RepoRecord,\n validate: boolean,\n): PreparedBlobRef[] => {\n const refs = findBlobRefs(record)\n const recordType =\n typeof record['$type'] === 'string' ? record['$type'] : undefined\n\n for (const ref of refs) {\n if (check.is(ref.ref.original, untypedJsonBlobRef)) {\n throw new InvalidRecordError(`Legacy blob ref at '${ref.path.join('/')}'`)\n }\n }\n\n return refs.map(({ ref, path }) => ({\n size: ref.size,\n cid: ref.ref,\n mimeType: ref.mimeType,\n constraints:\n validate && recordType\n ? CONSTRAINTS[recordType]?.[path.join('/')] ?? {}\n : {},\n }))\n}\n\nexport const findBlobRefs = (\n val: LexValue,\n path: string[] = [],\n layer = 0,\n): FoundBlobRef[] => {\n if (layer > 32) {\n return []\n }\n // walk arrays\n if (Array.isArray(val)) {\n return val.flatMap((item) => findBlobRefs(item, path, layer + 1))\n }\n // objects\n if (val && typeof val === 'object') {\n // convert blobs, leaving the original encoding so that we don't change CIDs on re-encode\n if (val instanceof BlobRef) {\n return [\n {\n ref: val,\n path,\n },\n ]\n }\n // retain cids & bytes\n if (CID.asCID(val) || val instanceof Uint8Array) {\n return []\n }\n return Object.entries(val).flatMap(([key, item]) =>\n findBlobRefs(item, [...path, key], layer + 1),\n )\n }\n // pass through\n return []\n}\n\nconst CONSTRAINTS = {\n [lex.ids.AppBskyActorProfile]: {\n avatar:\n lex.schemaDict.AppBskyActorProfile.defs.main.record.properties.avatar,\n banner:\n lex.schemaDict.AppBskyActorProfile.defs.main.record.properties.banner,\n },\n [lex.ids.AppBskyFeedGenerator]: {\n avatar:\n lex.schemaDict.AppBskyFeedGenerator.defs.main.record.properties.avatar,\n },\n [lex.ids.AppBskyGraphList]: {\n avatar: lex.schemaDict.AppBskyGraphList.defs.main.record.properties.avatar,\n },\n [lex.ids.AppBskyFeedPost]: {\n 'embed/images/image':\n lex.schemaDict.AppBskyEmbedImages.defs.image.properties.image,\n 'embed/external/thumb':\n lex.schemaDict.AppBskyEmbedExternal.defs.external.properties.thumb,\n 'embed/media/images/image':\n lex.schemaDict.AppBskyEmbedImages.defs.image.properties.image,\n 'embed/media/external/thumb':\n lex.schemaDict.AppBskyEmbedExternal.defs.external.properties.thumb,\n },\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/repo/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,cAAc,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;IAC5B,GAAG,EAAE,KAAK,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;IAC5B,GAAG,EAAE,KAAK,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;IAC5B,GAAG,EAAE,KAAK,CAAA;IACV,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,GAAG,IAAI,CAAA;IACf,IAAI,CAAC,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,GAAG,EAAE,QAAQ,EAAE,CAAA;IACf,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,CAAA;AAE5E,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,GAAG,CAAA;IACR,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,GAAG,EAAE,GAAG;gBAAR,GAAG,EAAE,GAAG;CAG5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,GAAG,EAAE,GAAG,GAAG,IAAI;gBAAf,GAAG,EAAE,GAAG,GAAG,IAAI;CAGnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/repo/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,CAAA;IACR,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,cAAc,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;IAC5B,GAAG,EAAE,KAAK,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;IAC5B,GAAG,EAAE,KAAK,CAAA;IACV,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAA;IAC5B,GAAG,EAAE,KAAK,CAAA;IACV,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,GAAG,GAAG,IAAI,CAAA;IACf,IAAI,CAAC,EAAE,GAAG,CAAA;CACX,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,GAAG,EAAE,QAAQ,EAAE,CAAA;IACf,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,GAAG,cAAc,CAAA;AAE5E,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,GAAG,CAAA;IACR,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,QAAQ,CAAA;CACjB,CAAA;AAED,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,GAAG,EAAE,GAAG;gBAAR,GAAG,EAAE,GAAG;CAG5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IACxB,GAAG,EAAE,GAAG,GAAG,IAAI;gBAAf,GAAG,EAAE,GAAG,GAAG,IAAI;CAGnC"}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable import/no-deprecated */
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.BadRecordSwapError = exports.BadCommitSwapError = exports.InvalidRecordError = void 0;
5
4
  class InvalidRecordError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/repo/types.ts"],"names":[],"mappings":";AAAA,yCAAyC;;;AAmEzC,MAAa,kBAAmB,SAAQ,KAAK;CAAG;AAAhD,gDAAgD;AAEhD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAQ;QACzB,KAAK,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAD9B;;;;mBAAO,GAAG;WAAK;IAE3B,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAe;QAChC,KAAK,CAAC,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;QADzC;;;;mBAAO,GAAG;WAAY;IAElC,CAAC;CACF;AAJD,gDAIC","sourcesContent":["/* eslint-disable import/no-deprecated */\n\nimport { CID } from 'multiformats/cid'\nimport { RepoRecord } from '@atproto/lexicon'\nimport { BlockMap, CommitData, WriteOpAction } from '@atproto/repo'\nimport { AtUri } from '@atproto/syntax'\n\nexport type ValidationStatus = 'valid' | 'unknown' | undefined\n\nexport type BlobConstraint = {\n accept?: string[]\n maxSize?: number\n}\n\nexport type PreparedBlobRef = {\n size: number\n cid: CID\n mimeType: string\n constraints: BlobConstraint\n}\n\nexport type PreparedCreate = {\n action: WriteOpAction.Create\n uri: AtUri\n cid: CID\n swapCid?: CID | null\n record: RepoRecord\n blobs: PreparedBlobRef[]\n validationStatus: ValidationStatus\n}\n\nexport type PreparedUpdate = {\n action: WriteOpAction.Update\n uri: AtUri\n cid: CID\n swapCid?: CID | null\n record: RepoRecord\n blobs: PreparedBlobRef[]\n validationStatus: ValidationStatus\n}\n\nexport type PreparedDelete = {\n action: WriteOpAction.Delete\n uri: AtUri\n swapCid?: CID | null\n}\n\nexport type CommitOp = {\n action: 'create' | 'update' | 'delete'\n path: string\n cid: CID | null\n prev?: CID\n}\n\nexport type CommitDataWithOps = CommitData & {\n ops: CommitOp[]\n prevData: CID | null\n}\n\nexport type PreparedWrite = PreparedCreate | PreparedUpdate | PreparedDelete\n\nexport type SyncEvtData = {\n cid: CID\n rev: string\n blocks: BlockMap\n}\n\nexport class InvalidRecordError extends Error {}\n\nexport class BadCommitSwapError extends Error {\n constructor(public cid: CID) {\n super(`Commit was at ${cid.toString()}`)\n }\n}\n\nexport class BadRecordSwapError extends Error {\n constructor(public cid: CID | null) {\n super(`Record was at ${cid?.toString() ?? 'null'}`)\n }\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/repo/types.ts"],"names":[],"mappings":";;;AAiEA,MAAa,kBAAmB,SAAQ,KAAK;CAAG;AAAhD,gDAAgD;AAEhD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAQ;QACzB,KAAK,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAD9B;;;;mBAAO,GAAG;WAAK;IAE3B,CAAC;CACF;AAJD,gDAIC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAmB,GAAe;QAChC,KAAK,CAAC,iBAAiB,GAAG,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC,CAAA;QADzC;;;;mBAAO,GAAG;WAAY;IAElC,CAAC;CACF;AAJD,gDAIC","sourcesContent":["import { CID } from 'multiformats/cid'\nimport { RepoRecord } from '@atproto/lexicon'\nimport { BlockMap, CommitData, WriteOpAction } from '@atproto/repo'\nimport { AtUri } from '@atproto/syntax'\n\nexport type ValidationStatus = 'valid' | 'unknown' | undefined\n\nexport type BlobConstraint = {\n accept?: string[]\n maxSize?: number\n}\n\nexport type PreparedBlobRef = {\n size: number\n cid: CID\n mimeType: string\n constraints: BlobConstraint\n}\n\nexport type PreparedCreate = {\n action: WriteOpAction.Create\n uri: AtUri\n cid: CID\n swapCid?: CID | null\n record: RepoRecord\n blobs: PreparedBlobRef[]\n validationStatus: ValidationStatus\n}\n\nexport type PreparedUpdate = {\n action: WriteOpAction.Update\n uri: AtUri\n cid: CID\n swapCid?: CID | null\n record: RepoRecord\n blobs: PreparedBlobRef[]\n validationStatus: ValidationStatus\n}\n\nexport type PreparedDelete = {\n action: WriteOpAction.Delete\n uri: AtUri\n swapCid?: CID | null\n}\n\nexport type CommitOp = {\n action: 'create' | 'update' | 'delete'\n path: string\n cid: CID | null\n prev?: CID\n}\n\nexport type CommitDataWithOps = CommitData & {\n ops: CommitOp[]\n prevData: CID | null\n}\n\nexport type PreparedWrite = PreparedCreate | PreparedUpdate | PreparedDelete\n\nexport type SyncEvtData = {\n cid: CID\n rev: string\n blocks: BlockMap\n}\n\nexport class InvalidRecordError extends Error {}\n\nexport class BadCommitSwapError extends Error {\n constructor(public cid: CID) {\n super(`Commit was at ${cid.toString()}`)\n }\n}\n\nexport class BadRecordSwapError extends Error {\n constructor(public cid: CID | null) {\n super(`Record was at ${cid?.toString() ?? 'null'}`)\n }\n}\n"]}
@@ -14,12 +14,12 @@ export declare const commitEvtOp: z.ZodObject<{
14
14
  prev: z.ZodOptional<z.ZodEffects<z.ZodUnknown, import("multiformats/cid").CID, unknown>>;
15
15
  }, "strip", z.ZodTypeAny, {
16
16
  cid: import("multiformats/cid").CID | null;
17
- action: "create" | "delete" | "update";
18
17
  path: string;
18
+ action: "create" | "delete" | "update";
19
19
  prev?: import("multiformats/cid").CID | undefined;
20
20
  }, {
21
- action: "create" | "delete" | "update";
22
21
  path: string;
22
+ action: "create" | "delete" | "update";
23
23
  cid?: unknown;
24
24
  prev?: unknown;
25
25
  }>;
@@ -39,12 +39,12 @@ export declare const commitEvt: z.ZodObject<{
39
39
  prev: z.ZodOptional<z.ZodEffects<z.ZodUnknown, import("multiformats/cid").CID, unknown>>;
40
40
  }, "strip", z.ZodTypeAny, {
41
41
  cid: import("multiformats/cid").CID | null;
42
- action: "create" | "delete" | "update";
43
42
  path: string;
43
+ action: "create" | "delete" | "update";
44
44
  prev?: import("multiformats/cid").CID | undefined;
45
45
  }, {
46
- action: "create" | "delete" | "update";
47
46
  path: string;
47
+ action: "create" | "delete" | "update";
48
48
  cid?: unknown;
49
49
  prev?: unknown;
50
50
  }>, "many">;
@@ -61,8 +61,8 @@ export declare const commitEvt: z.ZodObject<{
61
61
  tooBig: boolean;
62
62
  ops: {
63
63
  cid: import("multiformats/cid").CID | null;
64
- action: "create" | "delete" | "update";
65
64
  path: string;
65
+ action: "create" | "delete" | "update";
66
66
  prev?: import("multiformats/cid").CID | undefined;
67
67
  }[];
68
68
  prevData?: import("multiformats/cid").CID | undefined;
@@ -75,8 +75,8 @@ export declare const commitEvt: z.ZodObject<{
75
75
  rebase: boolean;
76
76
  tooBig: boolean;
77
77
  ops: {
78
- action: "create" | "delete" | "update";
79
78
  path: string;
79
+ action: "create" | "delete" | "update";
80
80
  cid?: unknown;
81
81
  prev?: unknown;
82
82
  }[];
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/sequencer/events.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEpC,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,EACX,YAAY,iBAAiB,KAC5B,OAAO,CAAC,aAAa,CAyBvB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,EACX,MAAM,WAAW,KAChB,OAAO,CAAC,aAAa,CAavB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,YAAY,iBAAiB,KAC5B,WAaF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,KAAK,MAAM,EACX,SAAS,MAAM,KACd,OAAO,CAAC,aAAa,CAavB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,KAAK,MAAM,EACX,QAAQ,aAAa,KACpB,OAAO,CAAC,aAAa,CAevB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAStB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,OAAO;;;;;;;;;;;;EAIlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAE7C,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,UAAU;;;;;;;;;;;;EAWrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,SAAS,CAAA;CACf,CAAA;AACD,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,OAAO,CAAA;CACb,CAAA;AACD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,WAAW,CAAA;CACjB,CAAA;AACD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,UAAU,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,MAAM,GACd,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,eAAe,CAAA"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/sequencer/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAA;AAEpC,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,EACX,YAAY,iBAAiB,KAC5B,OAAO,CAAC,aAAa,CAyBvB,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,EACX,MAAM,WAAW,KAChB,OAAO,CAAC,aAAa,CAavB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,YAAY,iBAAiB,KAC5B,WAaF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAC/B,KAAK,MAAM,EACX,SAAS,MAAM,KACd,OAAO,CAAC,aAAa,CAavB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,KAAK,MAAM,EACX,QAAQ,aAAa,KACpB,OAAO,CAAC,aAAa,CAevB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAStB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD,eAAO,MAAM,OAAO;;;;;;;;;;;;EAIlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAE7C,eAAO,MAAM,WAAW;;;;;;;;;EAGtB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,UAAU;;;;;;;;;;;;EAWrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,SAAS,CAAA;CACf,CAAA;AACD,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,OAAO,CAAA;CACb,CAAA;AACD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,WAAW,CAAA;CACjB,CAAA;AACD,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,UAAU,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,MAAM,GACd,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,eAAe,CAAA"}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable import/no-deprecated */
3
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
4
  };
@@ -30,7 +29,7 @@ const formatSeqCommit = async (did, commitData) => {
30
29
  return {
31
30
  did,
32
31
  eventType: 'append',
33
- event: (0, common_1.cborEncode)((0, common_1.noUndefinedVals)(evt)),
32
+ event: (0, common_1.cborEncode)(evt),
34
33
  sequencedAt: new Date().toISOString(),
35
34
  };
36
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/sequencer/events.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-deprecated */\n\nimport assert from 'node:assert'\nimport { z } from 'zod'\nimport { cborEncode, noUndefinedVals, schema } from '@atproto/common'\nimport { BlockMap, blocksToCarFile } from '@atproto/repo'\nimport { AccountStatus } from '../account-manager/account-manager'\nimport { CommitDataWithOps, SyncEvtData } from '../repo'\nimport { RepoSeqInsert } from './db'\n\nexport const formatSeqCommit = async (\n did: string,\n commitData: CommitDataWithOps,\n): Promise<RepoSeqInsert> => {\n const blocksToSend = new BlockMap()\n blocksToSend.addMap(commitData.newBlocks)\n blocksToSend.addMap(commitData.relevantBlocks)\n\n const evt = {\n repo: did,\n commit: commitData.cid,\n rev: commitData.rev,\n since: commitData.since,\n blocks: await blocksToCarFile(commitData.cid, blocksToSend),\n ops: commitData.ops,\n prevData: commitData.prevData ?? undefined,\n // deprecated (but still required) fields\n rebase: false,\n tooBig: false,\n blobs: [],\n }\n\n return {\n did,\n eventType: 'append' as const,\n event: cborEncode(noUndefinedVals(evt)),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const formatSeqSyncEvt = async (\n did: string,\n data: SyncEvtData,\n): Promise<RepoSeqInsert> => {\n const blocks = await blocksToCarFile(data.cid, data.blocks)\n const evt: SyncEvt = {\n did,\n rev: data.rev,\n blocks,\n }\n return {\n did,\n eventType: 'sync',\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const syncEvtDataFromCommit = (\n commitData: CommitDataWithOps,\n): SyncEvtData => {\n const { blocks, missing } = commitData.relevantBlocks.getMany([\n commitData.cid,\n ])\n assert(\n !missing.length,\n 'commit block was not found, could not build sync event',\n )\n return {\n rev: commitData.rev,\n cid: commitData.cid,\n blocks,\n }\n}\n\nexport const formatSeqIdentityEvt = async (\n did: string,\n handle?: string,\n): Promise<RepoSeqInsert> => {\n const evt: IdentityEvt = {\n did,\n }\n if (handle) {\n evt.handle = handle\n }\n return {\n did,\n eventType: 'identity',\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const formatSeqAccountEvt = async (\n did: string,\n status: AccountStatus,\n): Promise<RepoSeqInsert> => {\n const evt: AccountEvt = {\n did,\n active: status === 'active',\n }\n if (status !== AccountStatus.Active) {\n evt.status = status\n }\n\n return {\n did,\n eventType: 'account',\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const commitEvtOp = z.object({\n action: z.union([\n z.literal('create'),\n z.literal('update'),\n z.literal('delete'),\n ]),\n path: z.string(),\n cid: schema.cid.nullable(),\n prev: schema.cid.optional(),\n})\nexport type CommitEvtOp = z.infer<typeof commitEvtOp>\n\nexport const commitEvt = z.object({\n rebase: z.boolean(),\n tooBig: z.boolean(),\n repo: z.string(),\n commit: schema.cid,\n rev: z.string(),\n since: z.string().nullable(),\n blocks: schema.bytes,\n ops: z.array(commitEvtOp),\n blobs: z.array(schema.cid),\n prevData: schema.cid.optional(),\n})\nexport type CommitEvt = z.infer<typeof commitEvt>\n\nexport const syncEvt = z.object({\n did: z.string(),\n blocks: schema.bytes,\n rev: z.string(),\n})\nexport type SyncEvt = z.infer<typeof syncEvt>\n\nexport const identityEvt = z.object({\n did: z.string(),\n handle: z.string().optional(),\n})\nexport type IdentityEvt = z.infer<typeof identityEvt>\n\nexport const accountEvt = z.object({\n did: z.string(),\n active: z.boolean(),\n status: z\n .enum([\n AccountStatus.Takendown,\n AccountStatus.Suspended,\n AccountStatus.Deleted,\n AccountStatus.Deactivated,\n ])\n .optional(),\n})\nexport type AccountEvt = z.infer<typeof accountEvt>\n\ntype TypedCommitEvt = {\n type: 'commit'\n seq: number\n time: string\n evt: CommitEvt\n}\ntype TypedSyncEvt = {\n type: 'sync'\n seq: number\n time: string\n evt: SyncEvt\n}\ntype TypedIdentityEvt = {\n type: 'identity'\n seq: number\n time: string\n evt: IdentityEvt\n}\ntype TypedAccountEvt = {\n type: 'account'\n seq: number\n time: string\n evt: AccountEvt\n}\nexport type SeqEvt =\n | TypedCommitEvt\n | TypedSyncEvt\n | TypedIdentityEvt\n | TypedAccountEvt\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/sequencer/events.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAChC,6BAAuB;AACvB,4CAAoD;AACpD,wCAAyD;AACzD,wEAAkE;AAI3D,MAAM,eAAe,GAAG,KAAK,EAClC,GAAW,EACX,UAA6B,EACL,EAAE;IAC1B,MAAM,YAAY,GAAG,IAAI,eAAQ,EAAE,CAAA;IACnC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACzC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;IAE9C,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,UAAU,CAAC,GAAG;QACtB,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,MAAM,IAAA,sBAAe,EAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;QAC3D,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,SAAS;QAC1C,yCAAyC;QACzC,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,EAAE;KACV,CAAA;IAED,OAAO;QACL,GAAG;QACH,SAAS,EAAE,QAAiB;QAC5B,KAAK,EAAE,IAAA,mBAAU,EAAC,GAAG,CAAC;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAA;AACH,CAAC,CAAA;AA5BY,QAAA,eAAe,mBA4B3B;AAEM,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAAW,EACX,IAAiB,EACO,EAAE;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAe,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAY;QACnB,GAAG;QACH,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM;KACP,CAAA;IACD,OAAO;QACL,GAAG;QACH,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,IAAA,mBAAU,EAAC,GAAG,CAAC;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,gBAAgB,oBAgB5B;AAEM,MAAM,qBAAqB,GAAG,CACnC,UAA6B,EAChB,EAAE;IACf,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,UAAU,CAAC,GAAG;KACf,CAAC,CAAA;IACF,IAAA,qBAAM,EACJ,CAAC,OAAO,CAAC,MAAM,EACf,wDAAwD,CACzD,CAAA;IACD,OAAO;QACL,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,MAAM;KACP,CAAA;AACH,CAAC,CAAA;AAfY,QAAA,qBAAqB,yBAejC;AAEM,MAAM,oBAAoB,GAAG,KAAK,EACvC,GAAW,EACX,MAAe,EACS,EAAE;IAC1B,MAAM,GAAG,GAAgB;QACvB,GAAG;KACJ,CAAA;IACD,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACrB,CAAC;IACD,OAAO;QACL,GAAG;QACH,SAAS,EAAE,UAAU;QACrB,KAAK,EAAE,IAAA,mBAAU,EAAC,GAAG,CAAC;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,oBAAoB,wBAgBhC;AAEM,MAAM,mBAAmB,GAAG,KAAK,EACtC,GAAW,EACX,MAAqB,EACG,EAAE;IAC1B,MAAM,GAAG,GAAe;QACtB,GAAG;QACH,MAAM,EAAE,MAAM,KAAK,QAAQ;KAC5B,CAAA;IACD,IAAI,MAAM,KAAK,+BAAa,CAAC,MAAM,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;IACrB,CAAC;IAED,OAAO;QACL,GAAG;QACH,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,IAAA,mBAAU,EAAC,GAAG,CAAC;QACtB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAA;AACH,CAAC,CAAA;AAlBY,QAAA,mBAAmB,uBAkB/B;AAEY,QAAA,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC;QACd,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnB,OAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;KACpB,CAAC;IACF,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAA;AAGW,QAAA,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;IACnB,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;IACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,eAAM,CAAC,GAAG;IAClB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,eAAM,CAAC,KAAK;IACpB,GAAG,EAAE,OAAC,CAAC,KAAK,CAAC,mBAAW,CAAC;IACzB,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,eAAM,CAAC,GAAG,CAAC;IAC1B,QAAQ,EAAE,eAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAA;AAGW,QAAA,OAAO,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,eAAM,CAAC,KAAK;IACpB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAA;AAGW,QAAA,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAA;AAGW,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE;IACnB,MAAM,EAAE,OAAC;SACN,IAAI,CAAC;QACJ,+BAAa,CAAC,SAAS;QACvB,+BAAa,CAAC,SAAS;QACvB,+BAAa,CAAC,OAAO;QACrB,+BAAa,CAAC,WAAW;KAC1B,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAA","sourcesContent":["import assert from 'node:assert'\nimport { z } from 'zod'\nimport { cborEncode, schema } from '@atproto/common'\nimport { BlockMap, blocksToCarFile } from '@atproto/repo'\nimport { AccountStatus } from '../account-manager/account-manager'\nimport { CommitDataWithOps, SyncEvtData } from '../repo'\nimport { RepoSeqInsert } from './db'\n\nexport const formatSeqCommit = async (\n did: string,\n commitData: CommitDataWithOps,\n): Promise<RepoSeqInsert> => {\n const blocksToSend = new BlockMap()\n blocksToSend.addMap(commitData.newBlocks)\n blocksToSend.addMap(commitData.relevantBlocks)\n\n const evt = {\n repo: did,\n commit: commitData.cid,\n rev: commitData.rev,\n since: commitData.since,\n blocks: await blocksToCarFile(commitData.cid, blocksToSend),\n ops: commitData.ops,\n prevData: commitData.prevData ?? undefined,\n // deprecated (but still required) fields\n rebase: false,\n tooBig: false,\n blobs: [],\n }\n\n return {\n did,\n eventType: 'append' as const,\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const formatSeqSyncEvt = async (\n did: string,\n data: SyncEvtData,\n): Promise<RepoSeqInsert> => {\n const blocks = await blocksToCarFile(data.cid, data.blocks)\n const evt: SyncEvt = {\n did,\n rev: data.rev,\n blocks,\n }\n return {\n did,\n eventType: 'sync',\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const syncEvtDataFromCommit = (\n commitData: CommitDataWithOps,\n): SyncEvtData => {\n const { blocks, missing } = commitData.relevantBlocks.getMany([\n commitData.cid,\n ])\n assert(\n !missing.length,\n 'commit block was not found, could not build sync event',\n )\n return {\n rev: commitData.rev,\n cid: commitData.cid,\n blocks,\n }\n}\n\nexport const formatSeqIdentityEvt = async (\n did: string,\n handle?: string,\n): Promise<RepoSeqInsert> => {\n const evt: IdentityEvt = {\n did,\n }\n if (handle) {\n evt.handle = handle\n }\n return {\n did,\n eventType: 'identity',\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const formatSeqAccountEvt = async (\n did: string,\n status: AccountStatus,\n): Promise<RepoSeqInsert> => {\n const evt: AccountEvt = {\n did,\n active: status === 'active',\n }\n if (status !== AccountStatus.Active) {\n evt.status = status\n }\n\n return {\n did,\n eventType: 'account',\n event: cborEncode(evt),\n sequencedAt: new Date().toISOString(),\n }\n}\n\nexport const commitEvtOp = z.object({\n action: z.union([\n z.literal('create'),\n z.literal('update'),\n z.literal('delete'),\n ]),\n path: z.string(),\n cid: schema.cid.nullable(),\n prev: schema.cid.optional(),\n})\nexport type CommitEvtOp = z.infer<typeof commitEvtOp>\n\nexport const commitEvt = z.object({\n rebase: z.boolean(),\n tooBig: z.boolean(),\n repo: z.string(),\n commit: schema.cid,\n rev: z.string(),\n since: z.string().nullable(),\n blocks: schema.bytes,\n ops: z.array(commitEvtOp),\n blobs: z.array(schema.cid),\n prevData: schema.cid.optional(),\n})\nexport type CommitEvt = z.infer<typeof commitEvt>\n\nexport const syncEvt = z.object({\n did: z.string(),\n blocks: schema.bytes,\n rev: z.string(),\n})\nexport type SyncEvt = z.infer<typeof syncEvt>\n\nexport const identityEvt = z.object({\n did: z.string(),\n handle: z.string().optional(),\n})\nexport type IdentityEvt = z.infer<typeof identityEvt>\n\nexport const accountEvt = z.object({\n did: z.string(),\n active: z.boolean(),\n status: z\n .enum([\n AccountStatus.Takendown,\n AccountStatus.Suspended,\n AccountStatus.Deleted,\n AccountStatus.Deactivated,\n ])\n .optional(),\n})\nexport type AccountEvt = z.infer<typeof accountEvt>\n\ntype TypedCommitEvt = {\n type: 'commit'\n seq: number\n time: string\n evt: CommitEvt\n}\ntype TypedSyncEvt = {\n type: 'sync'\n seq: number\n time: string\n evt: SyncEvt\n}\ntype TypedIdentityEvt = {\n type: 'identity'\n seq: number\n time: string\n evt: IdentityEvt\n}\ntype TypedAccountEvt = {\n type: 'account'\n seq: number\n time: string\n evt: AccountEvt\n}\nexport type SeqEvt =\n | TypedCommitEvt\n | TypedSyncEvt\n | TypedIdentityEvt\n | TypedAccountEvt\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AAGA,OAAO,YAAY,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EAGZ,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,MAAM,EAMP,MAAM,UAAU,CAAA;AAEjB,cAAc,UAAU,CAAA;8BAEwB,UAAU,gBAAgB;AAA1E,qBAAa,SAAU,SAAQ,cAA4C;IAOhE,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ;IARjB,EAAE,EAAE,WAAW,CAAA;IACf,SAAS,UAAQ;IACjB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IACxC,kBAAkB,SAAI;gBAGb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,SAAI,EACnB,wBAAwB,UAAQ;IAQ5B,KAAK;IAWL,OAAO;IAQP,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU9B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAW5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWvD,eAAe,CAAC,IAAI,EAAE;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YA6BP,MAAM;YAwBN,kBAAkB;IAM1B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhD,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAKZ,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAK9C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlE,kBAAkB,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO;CAUjE;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,EAAE,KAAG,MAAM,EAuC7D,CAAA;AAED,KAAK,MAAM,GAAG,YAAY,CAAA;AAE1B,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAE5D,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EAGZ,MAAM,MAAM,CAAA;AACb,OAAO,EAIL,MAAM,EAMP,MAAM,UAAU,CAAA;AAEjB,cAAc,UAAU,CAAA;8BAEwB,UAAU,gBAAgB;AAA1E,qBAAa,SAAU,SAAQ,cAA4C;IAOhE,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ;IARjB,EAAE,EAAE,WAAW,CAAA;IACf,SAAS,UAAQ;IACjB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAO;IACxC,kBAAkB,SAAI;gBAGb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,SAAI,EACnB,wBAAwB,UAAQ;IAQ5B,KAAK;IAWL,OAAO;IAQP,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU9B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAW5C,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWvD,eAAe,CAAC,IAAI,EAAE;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YA6BP,MAAM;YAwBN,kBAAkB;IAM1B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhD,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAKZ,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAK9C,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlE,kBAAkB,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC;IAKZ,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO;CAUjE;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,YAAY,EAAE,KAAG,MAAM,EAuC7D,CAAA;AAED,KAAK,MAAM,GAAG,YAAY,CAAA;AAE1B,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,eAAe,CAAC,CAAA;AAE5D,eAAe,SAAS,CAAA"}
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable import/no-deprecated */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -1 +1 @@
1
- {"version":3,"file":"sequencer.js","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-deprecated */\n\nimport EventEmitter from 'node:events'\nimport TypedEmitter from 'typed-emitter'\nimport { SECOND, cborDecode, wait } from '@atproto/common'\nimport { AccountStatus } from '../account-manager/helpers/account'\nimport { Crawlers } from '../crawlers'\nimport { seqLogger as log } from '../logger'\nimport { CommitDataWithOps, SyncEvtData } from '../repo'\nimport {\n RepoSeqEntry,\n RepoSeqInsert,\n SequencerDb,\n getDb,\n getMigrator,\n} from './db'\nimport {\n AccountEvt,\n CommitEvt,\n IdentityEvt,\n SeqEvt,\n SyncEvt,\n formatSeqAccountEvt,\n formatSeqCommit,\n formatSeqIdentityEvt,\n formatSeqSyncEvt,\n} from './events'\n\nexport * from './events'\n\nexport class Sequencer extends (EventEmitter as new () => SequencerEmitter) {\n db: SequencerDb\n destroyed = false\n pollPromise: Promise<void> | null = null\n triesWithNoResults = 0\n\n constructor(\n public dbLocation: string,\n public crawlers: Crawlers,\n public lastSeen = 0,\n disableWalAutoCheckpoint = false,\n ) {\n super()\n // note: this does not err when surpassed, just prints a warning to stderr\n this.setMaxListeners(100)\n this.db = getDb(dbLocation, disableWalAutoCheckpoint)\n }\n\n async start() {\n await this.db.ensureWal()\n const migrator = getMigrator(this.db)\n await migrator.migrateToLatestOrThrow()\n const curr = await this.curr()\n this.lastSeen = curr ?? 0\n if (this.pollPromise === null) {\n this.pollPromise = this.pollDb()\n }\n }\n\n async destroy() {\n this.destroyed = true\n if (this.pollPromise) {\n await this.pollPromise\n }\n this.emit('close')\n }\n\n async curr(): Promise<number | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'desc')\n .limit(1)\n .executeTakeFirst()\n return got?.seq ?? null\n }\n\n async next(cursor: number): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('seq', '>', cursor)\n .limit(1)\n .orderBy('seq', 'asc')\n .executeTakeFirst()\n return got || null\n }\n\n async earliestAfterTime(time: string): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('sequencedAt', '>=', time)\n .orderBy('sequencedAt', 'asc')\n .limit(1)\n .executeTakeFirst()\n return got || null\n }\n\n async requestSeqRange(opts: {\n earliestSeq?: number\n latestSeq?: number\n earliestTime?: string\n limit?: number\n }): Promise<SeqEvt[]> {\n const { earliestSeq, latestSeq, earliestTime, limit } = opts\n\n let seqQb = this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'asc')\n .where('invalidated', '=', 0)\n if (earliestSeq !== undefined) {\n seqQb = seqQb.where('seq', '>', earliestSeq)\n }\n if (latestSeq !== undefined) {\n seqQb = seqQb.where('seq', '<=', latestSeq)\n }\n if (earliestTime !== undefined) {\n seqQb = seqQb.where('sequencedAt', '>=', earliestTime)\n }\n if (limit !== undefined) {\n seqQb = seqQb.limit(limit)\n }\n\n const rows = await seqQb.execute()\n if (rows.length < 1) {\n return []\n }\n\n return parseRepoSeqRows(rows)\n }\n\n private async pollDb(): Promise<void> {\n if (this.destroyed) return\n // if already polling, do not start another poll\n try {\n const evts = await this.requestSeqRange({\n earliestSeq: this.lastSeen,\n limit: 1000,\n })\n if (evts.length > 0) {\n this.triesWithNoResults = 0\n this.emit('events', evts)\n this.lastSeen = evts.at(-1)?.seq ?? this.lastSeen\n } else {\n await this.exponentialBackoff()\n }\n this.pollPromise = this.pollDb()\n } catch (err) {\n log.error({ err, lastSeen: this.lastSeen }, 'sequencer failed to poll db')\n await this.exponentialBackoff()\n this.pollPromise = this.pollDb()\n }\n }\n\n // when no results, exponential backoff on pulling, with a max of a second wait\n private async exponentialBackoff(): Promise<void> {\n this.triesWithNoResults++\n const waitTime = Math.min(Math.pow(2, this.triesWithNoResults), SECOND)\n await wait(waitTime)\n }\n\n async sequenceEvt(evt: RepoSeqInsert): Promise<number> {\n const [{ seq }] = await this.db.executeWithRetry(\n this.db.db.insertInto('repo_seq').values(evt).returning('seq'),\n )\n this.crawlers.notifyOfUpdate()\n return seq\n }\n\n async sequenceCommit(\n did: string,\n commitData: CommitDataWithOps,\n ): Promise<number> {\n const evt = await formatSeqCommit(did, commitData)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceSyncEvt(did: string, data: SyncEvtData) {\n const evt = await formatSeqSyncEvt(did, data)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceIdentityEvt(did: string, handle?: string): Promise<number> {\n const evt = await formatSeqIdentityEvt(did, handle)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceAccountEvt(\n did: string,\n status: AccountStatus,\n ): Promise<number> {\n const evt = await formatSeqAccountEvt(did, status)\n return await this.sequenceEvt(evt)\n }\n\n async deleteAllForUser(did: string, excludingSeqs: number[] = []) {\n await this.db.executeWithRetry(\n this.db.db\n .deleteFrom('repo_seq')\n .where('did', '=', did)\n .if(excludingSeqs.length > 0, (qb) =>\n qb.where('seq', 'not in', excludingSeqs),\n ),\n )\n }\n}\n\nexport const parseRepoSeqRows = (rows: RepoSeqEntry[]): SeqEvt[] => {\n const seqEvts: SeqEvt[] = []\n for (const row of rows) {\n // should never hit this because of WHERE clause\n if (row.seq === null) {\n continue\n }\n const evt = cborDecode(row.event)\n if (row.eventType === 'append') {\n seqEvts.push({\n type: 'commit',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as CommitEvt,\n })\n } else if (row.eventType === 'sync') {\n seqEvts.push({\n type: 'sync',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as SyncEvt,\n })\n } else if (row.eventType === 'identity') {\n seqEvts.push({\n type: 'identity',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as IdentityEvt,\n })\n } else if (row.eventType === 'account') {\n seqEvts.push({\n type: 'account',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as AccountEvt,\n })\n }\n }\n return seqEvts\n}\n\ntype SeqRow = RepoSeqEntry\n\ntype SequencerEvents = {\n events: (evts: SeqEvt[]) => void\n close: () => void\n}\n\nexport type SequencerEmitter = TypedEmitter<SequencerEvents>\n\nexport default Sequencer\n"]}
1
+ {"version":3,"file":"sequencer.js","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from 'node:events'\nimport TypedEmitter from 'typed-emitter'\nimport { SECOND, cborDecode, wait } from '@atproto/common'\nimport { AccountStatus } from '../account-manager/helpers/account'\nimport { Crawlers } from '../crawlers'\nimport { seqLogger as log } from '../logger'\nimport { CommitDataWithOps, SyncEvtData } from '../repo'\nimport {\n RepoSeqEntry,\n RepoSeqInsert,\n SequencerDb,\n getDb,\n getMigrator,\n} from './db'\nimport {\n AccountEvt,\n CommitEvt,\n IdentityEvt,\n SeqEvt,\n SyncEvt,\n formatSeqAccountEvt,\n formatSeqCommit,\n formatSeqIdentityEvt,\n formatSeqSyncEvt,\n} from './events'\n\nexport * from './events'\n\nexport class Sequencer extends (EventEmitter as new () => SequencerEmitter) {\n db: SequencerDb\n destroyed = false\n pollPromise: Promise<void> | null = null\n triesWithNoResults = 0\n\n constructor(\n public dbLocation: string,\n public crawlers: Crawlers,\n public lastSeen = 0,\n disableWalAutoCheckpoint = false,\n ) {\n super()\n // note: this does not err when surpassed, just prints a warning to stderr\n this.setMaxListeners(100)\n this.db = getDb(dbLocation, disableWalAutoCheckpoint)\n }\n\n async start() {\n await this.db.ensureWal()\n const migrator = getMigrator(this.db)\n await migrator.migrateToLatestOrThrow()\n const curr = await this.curr()\n this.lastSeen = curr ?? 0\n if (this.pollPromise === null) {\n this.pollPromise = this.pollDb()\n }\n }\n\n async destroy() {\n this.destroyed = true\n if (this.pollPromise) {\n await this.pollPromise\n }\n this.emit('close')\n }\n\n async curr(): Promise<number | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'desc')\n .limit(1)\n .executeTakeFirst()\n return got?.seq ?? null\n }\n\n async next(cursor: number): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('seq', '>', cursor)\n .limit(1)\n .orderBy('seq', 'asc')\n .executeTakeFirst()\n return got || null\n }\n\n async earliestAfterTime(time: string): Promise<SeqRow | null> {\n const got = await this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .where('sequencedAt', '>=', time)\n .orderBy('sequencedAt', 'asc')\n .limit(1)\n .executeTakeFirst()\n return got || null\n }\n\n async requestSeqRange(opts: {\n earliestSeq?: number\n latestSeq?: number\n earliestTime?: string\n limit?: number\n }): Promise<SeqEvt[]> {\n const { earliestSeq, latestSeq, earliestTime, limit } = opts\n\n let seqQb = this.db.db\n .selectFrom('repo_seq')\n .selectAll()\n .orderBy('seq', 'asc')\n .where('invalidated', '=', 0)\n if (earliestSeq !== undefined) {\n seqQb = seqQb.where('seq', '>', earliestSeq)\n }\n if (latestSeq !== undefined) {\n seqQb = seqQb.where('seq', '<=', latestSeq)\n }\n if (earliestTime !== undefined) {\n seqQb = seqQb.where('sequencedAt', '>=', earliestTime)\n }\n if (limit !== undefined) {\n seqQb = seqQb.limit(limit)\n }\n\n const rows = await seqQb.execute()\n if (rows.length < 1) {\n return []\n }\n\n return parseRepoSeqRows(rows)\n }\n\n private async pollDb(): Promise<void> {\n if (this.destroyed) return\n // if already polling, do not start another poll\n try {\n const evts = await this.requestSeqRange({\n earliestSeq: this.lastSeen,\n limit: 1000,\n })\n if (evts.length > 0) {\n this.triesWithNoResults = 0\n this.emit('events', evts)\n this.lastSeen = evts.at(-1)?.seq ?? this.lastSeen\n } else {\n await this.exponentialBackoff()\n }\n this.pollPromise = this.pollDb()\n } catch (err) {\n log.error({ err, lastSeen: this.lastSeen }, 'sequencer failed to poll db')\n await this.exponentialBackoff()\n this.pollPromise = this.pollDb()\n }\n }\n\n // when no results, exponential backoff on pulling, with a max of a second wait\n private async exponentialBackoff(): Promise<void> {\n this.triesWithNoResults++\n const waitTime = Math.min(Math.pow(2, this.triesWithNoResults), SECOND)\n await wait(waitTime)\n }\n\n async sequenceEvt(evt: RepoSeqInsert): Promise<number> {\n const [{ seq }] = await this.db.executeWithRetry(\n this.db.db.insertInto('repo_seq').values(evt).returning('seq'),\n )\n this.crawlers.notifyOfUpdate()\n return seq\n }\n\n async sequenceCommit(\n did: string,\n commitData: CommitDataWithOps,\n ): Promise<number> {\n const evt = await formatSeqCommit(did, commitData)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceSyncEvt(did: string, data: SyncEvtData) {\n const evt = await formatSeqSyncEvt(did, data)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceIdentityEvt(did: string, handle?: string): Promise<number> {\n const evt = await formatSeqIdentityEvt(did, handle)\n return await this.sequenceEvt(evt)\n }\n\n async sequenceAccountEvt(\n did: string,\n status: AccountStatus,\n ): Promise<number> {\n const evt = await formatSeqAccountEvt(did, status)\n return await this.sequenceEvt(evt)\n }\n\n async deleteAllForUser(did: string, excludingSeqs: number[] = []) {\n await this.db.executeWithRetry(\n this.db.db\n .deleteFrom('repo_seq')\n .where('did', '=', did)\n .if(excludingSeqs.length > 0, (qb) =>\n qb.where('seq', 'not in', excludingSeqs),\n ),\n )\n }\n}\n\nexport const parseRepoSeqRows = (rows: RepoSeqEntry[]): SeqEvt[] => {\n const seqEvts: SeqEvt[] = []\n for (const row of rows) {\n // should never hit this because of WHERE clause\n if (row.seq === null) {\n continue\n }\n const evt = cborDecode(row.event)\n if (row.eventType === 'append') {\n seqEvts.push({\n type: 'commit',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as CommitEvt,\n })\n } else if (row.eventType === 'sync') {\n seqEvts.push({\n type: 'sync',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as SyncEvt,\n })\n } else if (row.eventType === 'identity') {\n seqEvts.push({\n type: 'identity',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as IdentityEvt,\n })\n } else if (row.eventType === 'account') {\n seqEvts.push({\n type: 'account',\n seq: row.seq,\n time: row.sequencedAt,\n evt: evt as AccountEvt,\n })\n }\n }\n return seqEvts\n}\n\ntype SeqRow = RepoSeqEntry\n\ntype SequencerEvents = {\n events: (evts: SeqEvt[]) => void\n close: () => void\n}\n\nexport type SequencerEmitter = TypedEmitter<SequencerEvents>\n\nexport default Sequencer\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/pds",
3
- "version": "0.4.204",
3
+ "version": "0.4.206",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of atproto Personal Data Server (PDS)",
6
6
  "keywords": [
@@ -42,7 +42,6 @@
42
42
  "p-queue": "^6.6.2",
43
43
  "pino": "^8.21.0",
44
44
  "pino-http": "^8.2.1",
45
- "sharp": "^0.33.5",
46
45
  "typed-emitter": "^2.1.0",
47
46
  "uint8arrays": "3.0.0",
48
47
  "undici": "^6.19.8",
@@ -52,20 +51,20 @@
52
51
  "@atproto-labs/simple-store-memory": "0.1.4",
53
52
  "@atproto-labs/simple-store-redis": "0.0.1",
54
53
  "@atproto-labs/xrpc-utils": "0.0.24",
55
- "@atproto/api": "^0.18.14",
54
+ "@atproto/api": "^0.18.18",
56
55
  "@atproto/aws": "^0.2.31",
57
- "@atproto/common": "^0.5.8",
56
+ "@atproto/common": "^0.5.9",
58
57
  "@atproto/crypto": "^0.4.5",
59
58
  "@atproto/identity": "^0.4.10",
60
- "@atproto/lex-cbor": "^0.0.8",
61
- "@atproto/lex-data": "^0.0.8",
62
- "@atproto/lexicon": "^0.6.0",
63
- "@atproto/oauth-provider": "^0.15.4",
64
- "@atproto/oauth-scopes": "^0.3.0",
59
+ "@atproto/lex-cbor": "^0.0.9",
60
+ "@atproto/lex-data": "^0.0.9",
61
+ "@atproto/lexicon": "^0.6.1",
62
+ "@atproto/oauth-provider": "^0.15.6",
63
+ "@atproto/oauth-scopes": "^0.3.1",
65
64
  "@atproto/repo": "^0.8.12",
66
- "@atproto/syntax": "^0.4.2",
65
+ "@atproto/syntax": "^0.4.3",
67
66
  "@atproto/xrpc": "^0.7.7",
68
- "@atproto/xrpc-server": "^0.10.9"
67
+ "@atproto/xrpc-server": "^0.10.10"
69
68
  },
70
69
  "devDependencies": {
71
70
  "@atproto/pds-entryway": "npm:@atproto/pds@0.3.0-entryway.3",
@@ -83,8 +82,8 @@
83
82
  "ts-node": "^10.8.2",
84
83
  "typescript": "^5.6.3",
85
84
  "ws": "^8.12.0",
86
- "@atproto/api": "^0.18.14",
87
- "@atproto/bsky": "^0.0.210",
85
+ "@atproto/api": "^0.18.18",
86
+ "@atproto/bsky": "^0.0.212",
88
87
  "@atproto/lex-cli": "^0.9.8",
89
88
  "@atproto/oauth-client-browser-example": "0.0.9"
90
89
  },