@atproto/bsky 0.0.199 → 0.0.200
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.
- package/CHANGELOG.md +12 -0
- package/dist/api/app/bsky/contact/dismissMatch.d.ts +4 -0
- package/dist/api/app/bsky/contact/dismissMatch.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/dismissMatch.js +23 -0
- package/dist/api/app/bsky/contact/dismissMatch.js.map +1 -0
- package/dist/api/app/bsky/contact/getMatches.d.ts +4 -0
- package/dist/api/app/bsky/contact/getMatches.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/getMatches.js +59 -0
- package/dist/api/app/bsky/contact/getMatches.js.map +1 -0
- package/dist/api/app/bsky/contact/getSyncStatus.d.ts +4 -0
- package/dist/api/app/bsky/contact/getSyncStatus.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/getSyncStatus.js +32 -0
- package/dist/api/app/bsky/contact/getSyncStatus.js.map +1 -0
- package/dist/api/app/bsky/contact/importContacts.d.ts +4 -0
- package/dist/api/app/bsky/contact/importContacts.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/importContacts.js +62 -0
- package/dist/api/app/bsky/contact/importContacts.js.map +1 -0
- package/dist/api/app/bsky/contact/removeData.d.ts +4 -0
- package/dist/api/app/bsky/contact/removeData.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/removeData.js +22 -0
- package/dist/api/app/bsky/contact/removeData.js.map +1 -0
- package/dist/api/app/bsky/contact/startPhoneVerification.d.ts +4 -0
- package/dist/api/app/bsky/contact/startPhoneVerification.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/startPhoneVerification.js +23 -0
- package/dist/api/app/bsky/contact/startPhoneVerification.js.map +1 -0
- package/dist/api/app/bsky/contact/util.d.ts +6 -0
- package/dist/api/app/bsky/contact/util.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/util.js +10 -0
- package/dist/api/app/bsky/contact/util.js.map +1 -0
- package/dist/api/app/bsky/contact/verifyPhone.d.ts +4 -0
- package/dist/api/app/bsky/contact/verifyPhone.d.ts.map +1 -0
- package/dist/api/app/bsky/contact/verifyPhone.js +26 -0
- package/dist/api/app/bsky/contact/verifyPhone.js.map +1 -0
- package/dist/api/app/bsky/graph/getRelationships.d.ts.map +1 -1
- package/dist/api/app/bsky/graph/getRelationships.js +4 -0
- package/dist/api/app/bsky/graph/getRelationships.js.map +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +14 -0
- package/dist/api/index.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +3 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -0
- package/dist/context.js.map +1 -1
- package/dist/hydration/actor.js +1 -1
- package/dist/hydration/actor.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/lexicon/index.d.ts +19 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +48 -1
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +664 -0
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +354 -0
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/app/bsky/contact/defs.d.ts +24 -0
- package/dist/lexicon/types/app/bsky/contact/defs.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/defs.js +25 -0
- package/dist/lexicon/types/app/bsky/contact/defs.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.d.ts +25 -0
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/dismissMatch.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/getMatches.d.ts +25 -0
- package/dist/lexicon/types/app/bsky/contact/getMatches.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/getMatches.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/getMatches.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.d.ts +21 -0
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/getSyncStatus.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/importContacts.d.ts +30 -0
- package/dist/lexicon/types/app/bsky/contact/importContacts.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/importContacts.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/importContacts.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/removeData.d.ts +23 -0
- package/dist/lexicon/types/app/bsky/contact/removeData.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/removeData.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/removeData.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.d.ts +25 -0
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/startPhoneVerification.js.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.d.ts +29 -0
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.d.ts.map +1 -0
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.js +7 -0
- package/dist/lexicon/types/app/bsky/contact/verifyPhone.js.map +1 -0
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts +8 -0
- package/dist/lexicon/types/app/bsky/graph/defs.d.ts.map +1 -1
- package/dist/lexicon/types/app/bsky/graph/defs.js.map +1 -1
- package/dist/proto/bsky_pb.d.ts +0 -4
- package/dist/proto/bsky_pb.d.ts.map +1 -1
- package/dist/proto/bsky_pb.js +0 -10
- package/dist/proto/bsky_pb.js.map +1 -1
- package/dist/proto/rolodex_connect.d.ts +83 -0
- package/dist/proto/rolodex_connect.d.ts.map +1 -0
- package/dist/proto/rolodex_connect.js +90 -0
- package/dist/proto/rolodex_connect.js.map +1 -0
- package/dist/proto/rolodex_pb.d.ts +363 -0
- package/dist/proto/rolodex_pb.d.ts.map +1 -0
- package/dist/proto/rolodex_pb.js +1032 -0
- package/dist/proto/rolodex_pb.js.map +1 -0
- package/dist/rolodex.d.ts +9 -0
- package/dist/rolodex.d.ts.map +1 -0
- package/dist/rolodex.js +25 -0
- package/dist/rolodex.js.map +1 -0
- package/package.json +13 -13
- package/proto/rolodex.proto +116 -0
- package/src/api/app/bsky/contact/dismissMatch.ts +24 -0
- package/src/api/app/bsky/contact/getMatches.ts +111 -0
- package/src/api/app/bsky/contact/getSyncStatus.ts +35 -0
- package/src/api/app/bsky/contact/importContacts.ts +118 -0
- package/src/api/app/bsky/contact/removeData.ts +23 -0
- package/src/api/app/bsky/contact/startPhoneVerification.ts +24 -0
- package/src/api/app/bsky/contact/util.ts +13 -0
- package/src/api/app/bsky/contact/verifyPhone.ts +27 -0
- package/src/api/app/bsky/graph/getRelationships.ts +4 -0
- package/src/api/index.ts +14 -0
- package/src/config.ts +27 -0
- package/src/context.ts +6 -0
- package/src/hydration/actor.ts +1 -1
- package/src/index.ts +13 -0
- package/src/lexicon/index.ts +101 -0
- package/src/lexicon/lexicons.ts +375 -0
- package/src/lexicon/types/app/bsky/contact/defs.ts +52 -0
- package/src/lexicon/types/app/bsky/contact/dismissMatch.ts +43 -0
- package/src/lexicon/types/app/bsky/contact/getMatches.ts +43 -0
- package/src/lexicon/types/app/bsky/contact/getSyncStatus.ts +39 -0
- package/src/lexicon/types/app/bsky/contact/importContacts.ts +49 -0
- package/src/lexicon/types/app/bsky/contact/removeData.ts +40 -0
- package/src/lexicon/types/app/bsky/contact/startPhoneVerification.ts +43 -0
- package/src/lexicon/types/app/bsky/contact/verifyPhone.ts +48 -0
- package/src/lexicon/types/app/bsky/graph/defs.ts +8 -0
- package/src/proto/bsky_pb.ts +0 -6
- package/src/proto/rolodex_connect.ts +89 -0
- package/src/proto/rolodex_pb.ts +746 -0
- package/src/rolodex.ts +42 -0
- package/tests/views/__snapshots__/profile.test.ts.snap +103 -0
- package/tests/views/profile.test.ts +39 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rolodex_pb.js","sourceRoot":"","sources":["../../src/proto/rolodex_pb.ts"],"names":[],"mappings":"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","sourcesContent":["// @generated by protoc-gen-es v1.6.0 with parameter \"target=ts,import_extension=\"\n// @generated from file rolodex.proto (package rolodex, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from \"@bufbuild/protobuf\";\nimport { Message, proto3, Timestamp } from \"@bufbuild/protobuf\";\n\n/**\n * Ping\n *\n * @generated from message rolodex.PingRequest\n */\nexport class PingRequest extends Message<PingRequest> {\n constructor(data?: PartialMessage<PingRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.PingRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): PingRequest {\n return new PingRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): PingRequest {\n return new PingRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): PingRequest {\n return new PingRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: PingRequest | PlainMessage<PingRequest> | undefined, b: PingRequest | PlainMessage<PingRequest> | undefined): boolean {\n return proto3.util.equals(PingRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.PingResponse\n */\nexport class PingResponse extends Message<PingResponse> {\n constructor(data?: PartialMessage<PingResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.PingResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): PingResponse {\n return new PingResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): PingResponse {\n return new PingResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): PingResponse {\n return new PingResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: PingResponse | PlainMessage<PingResponse> | undefined, b: PingResponse | PlainMessage<PingResponse> | undefined): boolean {\n return proto3.util.equals(PingResponse, a, b);\n }\n}\n\n/**\n * GetSyncStatus\n *\n * @generated from message rolodex.GetSyncStatusRequest\n */\nexport class GetSyncStatusRequest extends Message<GetSyncStatusRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n constructor(data?: PartialMessage<GetSyncStatusRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.GetSyncStatusRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetSyncStatusRequest {\n return new GetSyncStatusRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetSyncStatusRequest {\n return new GetSyncStatusRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetSyncStatusRequest {\n return new GetSyncStatusRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSyncStatusRequest | PlainMessage<GetSyncStatusRequest> | undefined, b: GetSyncStatusRequest | PlainMessage<GetSyncStatusRequest> | undefined): boolean {\n return proto3.util.equals(GetSyncStatusRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.SyncStatus\n */\nexport class SyncStatus extends Message<SyncStatus> {\n /**\n * @generated from field: google.protobuf.Timestamp synced_at = 1;\n */\n syncedAt?: Timestamp;\n\n /**\n * @generated from field: int32 matches_count = 2;\n */\n matchesCount = 0;\n\n constructor(data?: PartialMessage<SyncStatus>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.SyncStatus\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"synced_at\", kind: \"message\", T: Timestamp },\n { no: 2, name: \"matches_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SyncStatus {\n return new SyncStatus().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SyncStatus {\n return new SyncStatus().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SyncStatus {\n return new SyncStatus().fromJsonString(jsonString, options);\n }\n\n static equals(a: SyncStatus | PlainMessage<SyncStatus> | undefined, b: SyncStatus | PlainMessage<SyncStatus> | undefined): boolean {\n return proto3.util.equals(SyncStatus, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.GetSyncStatusResponse\n */\nexport class GetSyncStatusResponse extends Message<GetSyncStatusResponse> {\n /**\n * @generated from field: rolodex.SyncStatus status = 1;\n */\n status?: SyncStatus;\n\n constructor(data?: PartialMessage<GetSyncStatusResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.GetSyncStatusResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"status\", kind: \"message\", T: SyncStatus },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetSyncStatusResponse {\n return new GetSyncStatusResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetSyncStatusResponse {\n return new GetSyncStatusResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetSyncStatusResponse {\n return new GetSyncStatusResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetSyncStatusResponse | PlainMessage<GetSyncStatusResponse> | undefined, b: GetSyncStatusResponse | PlainMessage<GetSyncStatusResponse> | undefined): boolean {\n return proto3.util.equals(GetSyncStatusResponse, a, b);\n }\n}\n\n/**\n * StartPhoneVerification\n *\n * @generated from message rolodex.StartPhoneVerificationRequest\n */\nexport class StartPhoneVerificationRequest extends Message<StartPhoneVerificationRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n /**\n * @generated from field: string phone = 2;\n */\n phone = \"\";\n\n constructor(data?: PartialMessage<StartPhoneVerificationRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.StartPhoneVerificationRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phone\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): StartPhoneVerificationRequest {\n return new StartPhoneVerificationRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): StartPhoneVerificationRequest {\n return new StartPhoneVerificationRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): StartPhoneVerificationRequest {\n return new StartPhoneVerificationRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartPhoneVerificationRequest | PlainMessage<StartPhoneVerificationRequest> | undefined, b: StartPhoneVerificationRequest | PlainMessage<StartPhoneVerificationRequest> | undefined): boolean {\n return proto3.util.equals(StartPhoneVerificationRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.StartPhoneVerificationResponse\n */\nexport class StartPhoneVerificationResponse extends Message<StartPhoneVerificationResponse> {\n constructor(data?: PartialMessage<StartPhoneVerificationResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.StartPhoneVerificationResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): StartPhoneVerificationResponse {\n return new StartPhoneVerificationResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): StartPhoneVerificationResponse {\n return new StartPhoneVerificationResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): StartPhoneVerificationResponse {\n return new StartPhoneVerificationResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: StartPhoneVerificationResponse | PlainMessage<StartPhoneVerificationResponse> | undefined, b: StartPhoneVerificationResponse | PlainMessage<StartPhoneVerificationResponse> | undefined): boolean {\n return proto3.util.equals(StartPhoneVerificationResponse, a, b);\n }\n}\n\n/**\n * VerifyPhone\n *\n * @generated from message rolodex.VerifyPhoneRequest\n */\nexport class VerifyPhoneRequest extends Message<VerifyPhoneRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n /**\n * @generated from field: string phone = 2;\n */\n phone = \"\";\n\n /**\n * @generated from field: string verification_code = 3;\n */\n verificationCode = \"\";\n\n constructor(data?: PartialMessage<VerifyPhoneRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.VerifyPhoneRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"phone\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"verification_code\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VerifyPhoneRequest {\n return new VerifyPhoneRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VerifyPhoneRequest {\n return new VerifyPhoneRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VerifyPhoneRequest {\n return new VerifyPhoneRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: VerifyPhoneRequest | PlainMessage<VerifyPhoneRequest> | undefined, b: VerifyPhoneRequest | PlainMessage<VerifyPhoneRequest> | undefined): boolean {\n return proto3.util.equals(VerifyPhoneRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.VerifyPhoneResponse\n */\nexport class VerifyPhoneResponse extends Message<VerifyPhoneResponse> {\n /**\n * @generated from field: string token = 1;\n */\n token = \"\";\n\n constructor(data?: PartialMessage<VerifyPhoneResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.VerifyPhoneResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): VerifyPhoneResponse {\n return new VerifyPhoneResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): VerifyPhoneResponse {\n return new VerifyPhoneResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): VerifyPhoneResponse {\n return new VerifyPhoneResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: VerifyPhoneResponse | PlainMessage<VerifyPhoneResponse> | undefined, b: VerifyPhoneResponse | PlainMessage<VerifyPhoneResponse> | undefined): boolean {\n return proto3.util.equals(VerifyPhoneResponse, a, b);\n }\n}\n\n/**\n * ImportContacts\n *\n * @generated from message rolodex.ImportContactsRequest\n */\nexport class ImportContactsRequest extends Message<ImportContactsRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n /**\n * @generated from field: string token = 2;\n */\n token = \"\";\n\n /**\n * @generated from field: repeated string contacts = 3;\n */\n contacts: string[] = [];\n\n constructor(data?: PartialMessage<ImportContactsRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.ImportContactsRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"token\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"contacts\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ImportContactsRequest {\n return new ImportContactsRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ImportContactsRequest {\n return new ImportContactsRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ImportContactsRequest {\n return new ImportContactsRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: ImportContactsRequest | PlainMessage<ImportContactsRequest> | undefined, b: ImportContactsRequest | PlainMessage<ImportContactsRequest> | undefined): boolean {\n return proto3.util.equals(ImportContactsRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.ImportContactsMatch\n */\nexport class ImportContactsMatch extends Message<ImportContactsMatch> {\n /**\n * To which index of the input contacts this contact corresponds.\n *\n * @generated from field: int32 input_index = 1;\n */\n inputIndex = 0;\n\n /**\n * @generated from field: string subject = 2;\n */\n subject = \"\";\n\n constructor(data?: PartialMessage<ImportContactsMatch>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.ImportContactsMatch\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"input_index\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 2, name: \"subject\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ImportContactsMatch {\n return new ImportContactsMatch().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ImportContactsMatch {\n return new ImportContactsMatch().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ImportContactsMatch {\n return new ImportContactsMatch().fromJsonString(jsonString, options);\n }\n\n static equals(a: ImportContactsMatch | PlainMessage<ImportContactsMatch> | undefined, b: ImportContactsMatch | PlainMessage<ImportContactsMatch> | undefined): boolean {\n return proto3.util.equals(ImportContactsMatch, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.ImportContactsResponse\n */\nexport class ImportContactsResponse extends Message<ImportContactsResponse> {\n /**\n * @generated from field: repeated rolodex.ImportContactsMatch matches = 1;\n */\n matches: ImportContactsMatch[] = [];\n\n constructor(data?: PartialMessage<ImportContactsResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.ImportContactsResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"matches\", kind: \"message\", T: ImportContactsMatch, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ImportContactsResponse {\n return new ImportContactsResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ImportContactsResponse {\n return new ImportContactsResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ImportContactsResponse {\n return new ImportContactsResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: ImportContactsResponse | PlainMessage<ImportContactsResponse> | undefined, b: ImportContactsResponse | PlainMessage<ImportContactsResponse> | undefined): boolean {\n return proto3.util.equals(ImportContactsResponse, a, b);\n }\n}\n\n/**\n * GetMatches\n *\n * @generated from message rolodex.GetMatchesRequest\n */\nexport class GetMatchesRequest extends Message<GetMatchesRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n /**\n * @generated from field: int32 limit = 2;\n */\n limit = 0;\n\n /**\n * @generated from field: string cursor = 3;\n */\n cursor = \"\";\n\n constructor(data?: PartialMessage<GetMatchesRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.GetMatchesRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"limit\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 3, name: \"cursor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetMatchesRequest {\n return new GetMatchesRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetMatchesRequest {\n return new GetMatchesRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetMatchesRequest {\n return new GetMatchesRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetMatchesRequest | PlainMessage<GetMatchesRequest> | undefined, b: GetMatchesRequest | PlainMessage<GetMatchesRequest> | undefined): boolean {\n return proto3.util.equals(GetMatchesRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.GetMatchesResponse\n */\nexport class GetMatchesResponse extends Message<GetMatchesResponse> {\n /**\n * @generated from field: repeated string subjects = 1;\n */\n subjects: string[] = [];\n\n /**\n * @generated from field: string cursor = 2;\n */\n cursor = \"\";\n\n constructor(data?: PartialMessage<GetMatchesResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.GetMatchesResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"subjects\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"cursor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetMatchesResponse {\n return new GetMatchesResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetMatchesResponse {\n return new GetMatchesResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetMatchesResponse {\n return new GetMatchesResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: GetMatchesResponse | PlainMessage<GetMatchesResponse> | undefined, b: GetMatchesResponse | PlainMessage<GetMatchesResponse> | undefined): boolean {\n return proto3.util.equals(GetMatchesResponse, a, b);\n }\n}\n\n/**\n * DismissMatch\n *\n * @generated from message rolodex.DismissMatchRequest\n */\nexport class DismissMatchRequest extends Message<DismissMatchRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n /**\n * @generated from field: string subject = 2;\n */\n subject = \"\";\n\n constructor(data?: PartialMessage<DismissMatchRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.DismissMatchRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"subject\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DismissMatchRequest {\n return new DismissMatchRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DismissMatchRequest {\n return new DismissMatchRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DismissMatchRequest {\n return new DismissMatchRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: DismissMatchRequest | PlainMessage<DismissMatchRequest> | undefined, b: DismissMatchRequest | PlainMessage<DismissMatchRequest> | undefined): boolean {\n return proto3.util.equals(DismissMatchRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.DismissMatchResponse\n */\nexport class DismissMatchResponse extends Message<DismissMatchResponse> {\n /**\n * @generated from field: int32 matches_count = 1;\n */\n matchesCount = 0;\n\n constructor(data?: PartialMessage<DismissMatchResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.DismissMatchResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"matches_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DismissMatchResponse {\n return new DismissMatchResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DismissMatchResponse {\n return new DismissMatchResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DismissMatchResponse {\n return new DismissMatchResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: DismissMatchResponse | PlainMessage<DismissMatchResponse> | undefined, b: DismissMatchResponse | PlainMessage<DismissMatchResponse> | undefined): boolean {\n return proto3.util.equals(DismissMatchResponse, a, b);\n }\n}\n\n/**\n * RemoveData\n *\n * @generated from message rolodex.RemoveDataRequest\n */\nexport class RemoveDataRequest extends Message<RemoveDataRequest> {\n /**\n * @generated from field: string actor = 1;\n */\n actor = \"\";\n\n constructor(data?: PartialMessage<RemoveDataRequest>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.RemoveDataRequest\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"actor\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RemoveDataRequest {\n return new RemoveDataRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RemoveDataRequest {\n return new RemoveDataRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RemoveDataRequest {\n return new RemoveDataRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: RemoveDataRequest | PlainMessage<RemoveDataRequest> | undefined, b: RemoveDataRequest | PlainMessage<RemoveDataRequest> | undefined): boolean {\n return proto3.util.equals(RemoveDataRequest, a, b);\n }\n}\n\n/**\n * @generated from message rolodex.RemoveDataResponse\n */\nexport class RemoveDataResponse extends Message<RemoveDataResponse> {\n /**\n * @generated from field: int32 contacts_count = 1;\n */\n contactsCount = 0;\n\n /**\n * @generated from field: int32 matches_count = 2;\n */\n matchesCount = 0;\n\n constructor(data?: PartialMessage<RemoveDataResponse>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime: typeof proto3 = proto3;\n static readonly typeName = \"rolodex.RemoveDataResponse\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"contacts_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 2, name: \"matches_count\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RemoveDataResponse {\n return new RemoveDataResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): RemoveDataResponse {\n return new RemoveDataResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): RemoveDataResponse {\n return new RemoveDataResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: RemoveDataResponse | PlainMessage<RemoveDataResponse> | undefined, b: RemoveDataResponse | PlainMessage<RemoveDataResponse> | undefined): boolean {\n return proto3.util.equals(RemoveDataResponse, a, b);\n }\n}\n\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Code, ConnectError, Interceptor, PromiseClient } from '@connectrpc/connect';
|
|
2
|
+
import { ConnectTransportOptions } from '@connectrpc/connect-node';
|
|
3
|
+
import { RolodexService } from './proto/rolodex_connect';
|
|
4
|
+
export type RolodexClient = PromiseClient<typeof RolodexService>;
|
|
5
|
+
export declare const createRolodexClient: (opts: ConnectTransportOptions) => RolodexClient;
|
|
6
|
+
export { Code };
|
|
7
|
+
export declare const isRolodexError: (err: unknown, code?: Code) => err is ConnectError;
|
|
8
|
+
export declare const authWithApiKey: (apiKey: string) => Interceptor;
|
|
9
|
+
//# sourceMappingURL=rolodex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rolodex.d.ts","sourceRoot":"","sources":["../src/rolodex.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,uBAAuB,EAExB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,cAAc,CAAC,CAAA;AAEhE,eAAO,MAAM,mBAAmB,GAC9B,MAAM,uBAAuB,KAC5B,aAGF,CAAA;AAED,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,eAAO,MAAM,cAAc,GACzB,KAAK,OAAO,EACZ,OAAO,IAAI,KACV,GAAG,IAAI,YAKT,CAAA;AAED,eAAO,MAAM,cAAc,GACxB,QAAQ,MAAM,KAAG,WAKjB,CAAA"}
|
package/dist/rolodex.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authWithApiKey = exports.isRolodexError = exports.Code = exports.createRolodexClient = void 0;
|
|
4
|
+
const connect_1 = require("@connectrpc/connect");
|
|
5
|
+
Object.defineProperty(exports, "Code", { enumerable: true, get: function () { return connect_1.Code; } });
|
|
6
|
+
const connect_node_1 = require("@connectrpc/connect-node");
|
|
7
|
+
const rolodex_connect_1 = require("./proto/rolodex_connect");
|
|
8
|
+
const createRolodexClient = (opts) => {
|
|
9
|
+
const transport = (0, connect_node_1.createConnectTransport)(opts);
|
|
10
|
+
return (0, connect_1.createPromiseClient)(rolodex_connect_1.RolodexService, transport);
|
|
11
|
+
};
|
|
12
|
+
exports.createRolodexClient = createRolodexClient;
|
|
13
|
+
const isRolodexError = (err, code) => {
|
|
14
|
+
if (err instanceof connect_1.ConnectError) {
|
|
15
|
+
return !code || err.code === code;
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
exports.isRolodexError = isRolodexError;
|
|
20
|
+
const authWithApiKey = (apiKey) => (next) => (req) => {
|
|
21
|
+
req.header.set('authorization', `Bearer ${apiKey}`);
|
|
22
|
+
return next(req);
|
|
23
|
+
};
|
|
24
|
+
exports.authWithApiKey = authWithApiKey;
|
|
25
|
+
//# sourceMappingURL=rolodex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rolodex.js","sourceRoot":"","sources":["../src/rolodex.ts"],"names":[],"mappings":";;;AAAA,iDAM4B;AAiBnB,qFAtBP,cAAI,OAsBO;AAhBb,2DAGiC;AACjC,6DAAwD;AAKjD,MAAM,mBAAmB,GAAG,CACjC,IAA6B,EACd,EAAE;IACjB,MAAM,SAAS,GAAG,IAAA,qCAAsB,EAAC,IAAI,CAAC,CAAA;IAC9C,OAAO,IAAA,6BAAmB,EAAC,gCAAc,EAAE,SAAS,CAAC,CAAA;AACvD,CAAC,CAAA;AALY,QAAA,mBAAmB,uBAK/B;AAIM,MAAM,cAAc,GAAG,CAC5B,GAAY,EACZ,IAAW,EACU,EAAE;IACvB,IAAI,GAAG,YAAY,sBAAY,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAA;IACnC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AARY,QAAA,cAAc,kBAQ1B;AAEM,MAAM,cAAc,GACzB,CAAC,MAAc,EAAe,EAAE,CAChC,CAAC,IAAI,EAAE,EAAE,CACT,CAAC,GAAG,EAAE,EAAE;IACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,MAAM,EAAE,CAAC,CAAA;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC,CAAA;AANU,QAAA,cAAc,kBAMxB","sourcesContent":["import {\n Code,\n ConnectError,\n Interceptor,\n PromiseClient,\n createPromiseClient,\n} from '@connectrpc/connect'\nimport {\n ConnectTransportOptions,\n createConnectTransport,\n} from '@connectrpc/connect-node'\nimport { RolodexService } from './proto/rolodex_connect'\n\n// Rolodex is the service that does contact imports following https://docs.bsky.app/blog/contact-import-rfc.\nexport type RolodexClient = PromiseClient<typeof RolodexService>\n\nexport const createRolodexClient = (\n opts: ConnectTransportOptions,\n): RolodexClient => {\n const transport = createConnectTransport(opts)\n return createPromiseClient(RolodexService, transport)\n}\n\nexport { Code }\n\nexport const isRolodexError = (\n err: unknown,\n code?: Code,\n): err is ConnectError => {\n if (err instanceof ConnectError) {\n return !code || err.code === code\n }\n return false\n}\n\nexport const authWithApiKey =\n (apiKey: string): Interceptor =>\n (next) =>\n (req) => {\n req.header.set('authorization', `Bearer ${apiKey}`)\n return next(req)\n }\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/bsky",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.200",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Reference implementation of app.bsky App View (Bluesky API)",
|
|
6
6
|
"keywords": [
|
|
@@ -51,18 +51,18 @@
|
|
|
51
51
|
"uint8arrays": "3.0.0",
|
|
52
52
|
"undici": "^6.19.8",
|
|
53
53
|
"zod": "3.23.8",
|
|
54
|
-
"@atproto-labs/fetch-node": "0.2.0",
|
|
55
54
|
"@atproto-labs/xrpc-utils": "0.0.24",
|
|
56
|
-
"@atproto/
|
|
57
|
-
"@atproto/
|
|
55
|
+
"@atproto-labs/fetch-node": "0.2.0",
|
|
56
|
+
"@atproto/api": "^0.18.5",
|
|
57
|
+
"@atproto/common": "^0.5.3",
|
|
58
58
|
"@atproto/crypto": "^0.4.5",
|
|
59
59
|
"@atproto/did": "^0.2.3",
|
|
60
60
|
"@atproto/identity": "^0.4.10",
|
|
61
|
-
"@atproto/lexicon": "^0.
|
|
62
|
-
"@atproto/repo": "^0.8.
|
|
63
|
-
"@atproto/sync": "^0.1.
|
|
64
|
-
"@atproto/
|
|
65
|
-
"@atproto/
|
|
61
|
+
"@atproto/lexicon": "^0.6.0",
|
|
62
|
+
"@atproto/repo": "^0.8.12",
|
|
63
|
+
"@atproto/sync": "^0.1.39",
|
|
64
|
+
"@atproto/xrpc-server": "^0.10.3",
|
|
65
|
+
"@atproto/syntax": "^0.4.2"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@bufbuild/buf": "^1.28.1",
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
"jest": "^28.1.2",
|
|
79
79
|
"ts-node": "^10.8.2",
|
|
80
80
|
"typescript": "^5.6.3",
|
|
81
|
-
"@atproto/api": "^0.18.
|
|
82
|
-
"@atproto/lex-cli": "^0.9.
|
|
83
|
-
"@atproto/pds": "^0.4.
|
|
84
|
-
"@atproto/xrpc": "^0.7.
|
|
81
|
+
"@atproto/api": "^0.18.5",
|
|
82
|
+
"@atproto/lex-cli": "^0.9.8",
|
|
83
|
+
"@atproto/pds": "^0.4.198",
|
|
84
|
+
"@atproto/xrpc": "^0.7.7"
|
|
85
85
|
},
|
|
86
86
|
"scripts": {
|
|
87
87
|
"codegen": "lex gen-server --yes ./src/lexicon ../../lexicons/com/atproto/*/* ../../lexicons/app/bsky/*/* ../../lexicons/chat/bsky/*/*",
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
syntax = "proto3";
|
|
2
|
+
|
|
3
|
+
package rolodex;
|
|
4
|
+
option go_package = "./;rolodex";
|
|
5
|
+
|
|
6
|
+
import "google/protobuf/timestamp.proto";
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// Messages
|
|
10
|
+
//
|
|
11
|
+
|
|
12
|
+
// Ping
|
|
13
|
+
message PingRequest {}
|
|
14
|
+
|
|
15
|
+
message PingResponse {}
|
|
16
|
+
|
|
17
|
+
// GetSyncStatus
|
|
18
|
+
message GetSyncStatusRequest {
|
|
19
|
+
string actor = 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
message SyncStatus {
|
|
23
|
+
google.protobuf.Timestamp synced_at = 1;
|
|
24
|
+
int32 matches_count = 2;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
message GetSyncStatusResponse {
|
|
28
|
+
SyncStatus status = 1;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// StartPhoneVerification
|
|
32
|
+
message StartPhoneVerificationRequest {
|
|
33
|
+
string actor = 1;
|
|
34
|
+
string phone = 2;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
message StartPhoneVerificationResponse {}
|
|
38
|
+
|
|
39
|
+
// VerifyPhone
|
|
40
|
+
message VerifyPhoneRequest {
|
|
41
|
+
string actor = 1;
|
|
42
|
+
string phone = 2;
|
|
43
|
+
string verification_code = 3;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
message VerifyPhoneResponse {
|
|
47
|
+
string token = 1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ImportContacts
|
|
51
|
+
message ImportContactsRequest {
|
|
52
|
+
string actor = 1;
|
|
53
|
+
string token = 2;
|
|
54
|
+
repeated string contacts = 3;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
message ImportContactsMatch {
|
|
58
|
+
// To which index of the input contacts this contact corresponds.
|
|
59
|
+
int32 input_index = 1;
|
|
60
|
+
string subject = 2;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
message ImportContactsResponse {
|
|
64
|
+
repeated ImportContactsMatch matches = 1;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// GetMatches
|
|
68
|
+
message GetMatchesRequest {
|
|
69
|
+
string actor = 1;
|
|
70
|
+
int32 limit = 2;
|
|
71
|
+
string cursor = 3;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
message GetMatchesResponse {
|
|
75
|
+
repeated string subjects = 1;
|
|
76
|
+
string cursor = 2;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// DismissMatch
|
|
80
|
+
message DismissMatchRequest {
|
|
81
|
+
string actor = 1;
|
|
82
|
+
string subject = 2;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
message DismissMatchResponse {
|
|
86
|
+
int32 matches_count = 1;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// RemoveData
|
|
90
|
+
message RemoveDataRequest {
|
|
91
|
+
string actor = 1;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
message RemoveDataResponse {
|
|
95
|
+
int32 contacts_count = 1;
|
|
96
|
+
int32 matches_count = 2;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
//
|
|
100
|
+
// Service
|
|
101
|
+
//
|
|
102
|
+
|
|
103
|
+
service RolodexService {
|
|
104
|
+
rpc Ping(PingRequest) returns (PingResponse);
|
|
105
|
+
|
|
106
|
+
rpc GetSyncStatus(GetSyncStatusRequest) returns (GetSyncStatusResponse);
|
|
107
|
+
|
|
108
|
+
rpc StartPhoneVerification(StartPhoneVerificationRequest) returns (StartPhoneVerificationResponse);
|
|
109
|
+
rpc VerifyPhone(VerifyPhoneRequest) returns (VerifyPhoneResponse);
|
|
110
|
+
rpc ImportContacts(ImportContactsRequest) returns (ImportContactsResponse);
|
|
111
|
+
|
|
112
|
+
rpc GetMatches(GetMatchesRequest) returns (GetMatchesResponse);
|
|
113
|
+
rpc DismissMatch(DismissMatchRequest) returns (DismissMatchResponse);
|
|
114
|
+
|
|
115
|
+
rpc RemoveData(RemoveDataRequest) returns (RemoveDataResponse);
|
|
116
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AppContext } from '../../../../context'
|
|
2
|
+
import { Server } from '../../../../lexicon'
|
|
3
|
+
import { assertRolodexOrThrowUnimplemented } from './util'
|
|
4
|
+
|
|
5
|
+
export default function (server: Server, ctx: AppContext) {
|
|
6
|
+
server.app.bsky.contact.dismissMatch({
|
|
7
|
+
auth: ctx.authVerifier.standard,
|
|
8
|
+
handler: async ({ input, auth }) => {
|
|
9
|
+
assertRolodexOrThrowUnimplemented(ctx)
|
|
10
|
+
|
|
11
|
+
const actor = auth.credentials.iss
|
|
12
|
+
// TODO: Error handling.
|
|
13
|
+
await ctx.rolodexClient.dismissMatch({
|
|
14
|
+
actor,
|
|
15
|
+
subject: input.body.subject,
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
encoding: 'application/json',
|
|
20
|
+
body: {},
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { mapDefined } from '@atproto/common'
|
|
2
|
+
import { AppContext } from '../../../../context'
|
|
3
|
+
import {
|
|
4
|
+
HydrateCtx,
|
|
5
|
+
HydrationState,
|
|
6
|
+
Hydrator,
|
|
7
|
+
} from '../../../../hydration/hydrator'
|
|
8
|
+
import { Server } from '../../../../lexicon'
|
|
9
|
+
import { QueryParams } from '../../../../lexicon/types/app/bsky/contact/getMatches'
|
|
10
|
+
import {
|
|
11
|
+
HydrationFnInput,
|
|
12
|
+
SkeletonFnInput,
|
|
13
|
+
createPipeline,
|
|
14
|
+
} from '../../../../pipeline'
|
|
15
|
+
import { RolodexClient } from '../../../../rolodex'
|
|
16
|
+
import { Views } from '../../../../views'
|
|
17
|
+
import { assertRolodexOrThrowUnimplemented } from './util'
|
|
18
|
+
|
|
19
|
+
export default function (server: Server, ctx: AppContext) {
|
|
20
|
+
const getMatches = createPipeline(skeleton, hydration, noBlocks, presentation)
|
|
21
|
+
server.app.bsky.contact.getMatches({
|
|
22
|
+
auth: ctx.authVerifier.standard,
|
|
23
|
+
handler: async ({ params, auth, req }) => {
|
|
24
|
+
assertRolodexOrThrowUnimplemented(ctx)
|
|
25
|
+
|
|
26
|
+
const viewer = auth.credentials.iss
|
|
27
|
+
const labelers = ctx.reqLabelers(req)
|
|
28
|
+
const hydrateCtx = await ctx.hydrator.createContext({
|
|
29
|
+
labelers,
|
|
30
|
+
viewer,
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
const result = await getMatches(
|
|
34
|
+
{ ...params, hydrateCtx: hydrateCtx.copy({ viewer }) },
|
|
35
|
+
ctx,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
encoding: 'application/json',
|
|
40
|
+
body: result,
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const skeleton = async (
|
|
47
|
+
input: SkeletonFnInput<Context, Params>,
|
|
48
|
+
): Promise<SkeletonState> => {
|
|
49
|
+
const { params, ctx } = input
|
|
50
|
+
const actor = params.hydrateCtx.viewer
|
|
51
|
+
// TODO: Error handling.
|
|
52
|
+
const { cursor, subjects } = await ctx.rolodexClient.getMatches({
|
|
53
|
+
actor: params.hydrateCtx.viewer,
|
|
54
|
+
limit: params.limit,
|
|
55
|
+
cursor: params.cursor,
|
|
56
|
+
})
|
|
57
|
+
return {
|
|
58
|
+
actor,
|
|
59
|
+
subjects,
|
|
60
|
+
cursor: cursor || undefined,
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const hydration = async (
|
|
65
|
+
input: HydrationFnInput<Context, Params, SkeletonState>,
|
|
66
|
+
) => {
|
|
67
|
+
const { ctx, params, skeleton } = input
|
|
68
|
+
const { subjects } = skeleton
|
|
69
|
+
return ctx.hydrator.hydrateProfiles(subjects, params.hydrateCtx)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const noBlocks = (inputs: {
|
|
73
|
+
ctx: Context
|
|
74
|
+
skeleton: SkeletonState
|
|
75
|
+
hydration: HydrationState
|
|
76
|
+
}) => {
|
|
77
|
+
const { ctx, skeleton, hydration } = inputs
|
|
78
|
+
skeleton.subjects = skeleton.subjects.filter((subject) => {
|
|
79
|
+
return !ctx.views.viewerBlockExists(subject, hydration)
|
|
80
|
+
})
|
|
81
|
+
return skeleton
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const presentation = (input: {
|
|
85
|
+
ctx: Context
|
|
86
|
+
params: Params
|
|
87
|
+
skeleton: SkeletonState
|
|
88
|
+
hydration: HydrationState
|
|
89
|
+
}) => {
|
|
90
|
+
const { ctx, skeleton, hydration } = input
|
|
91
|
+
const matches = mapDefined(skeleton.subjects, (did) =>
|
|
92
|
+
ctx.views.profile(did, hydration),
|
|
93
|
+
)
|
|
94
|
+
return { matches }
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
type Context = {
|
|
98
|
+
hydrator: Hydrator
|
|
99
|
+
rolodexClient: RolodexClient
|
|
100
|
+
views: Views
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
type Params = QueryParams & {
|
|
104
|
+
hydrateCtx: HydrateCtx & { viewer: string }
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
type SkeletonState = {
|
|
108
|
+
actor: string
|
|
109
|
+
subjects: string[]
|
|
110
|
+
cursor?: string
|
|
111
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AppContext } from '../../../../context'
|
|
2
|
+
import { Server } from '../../../../lexicon'
|
|
3
|
+
import { SyncStatus } from '../../../../lexicon/types/app/bsky/contact/defs'
|
|
4
|
+
import { assertRolodexOrThrowUnimplemented } from './util'
|
|
5
|
+
|
|
6
|
+
export default function (server: Server, ctx: AppContext) {
|
|
7
|
+
server.app.bsky.contact.getSyncStatus({
|
|
8
|
+
auth: ctx.authVerifier.standard,
|
|
9
|
+
handler: async ({ auth }) => {
|
|
10
|
+
assertRolodexOrThrowUnimplemented(ctx)
|
|
11
|
+
|
|
12
|
+
const actor = auth.credentials.iss
|
|
13
|
+
// TODO: Error handling.
|
|
14
|
+
const res = await ctx.rolodexClient.getSyncStatus({
|
|
15
|
+
actor,
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
let syncStatus: SyncStatus | undefined
|
|
19
|
+
if (res.status && res.status.syncedAt) {
|
|
20
|
+
const syncedAt = res.status?.syncedAt?.toDate().toISOString()
|
|
21
|
+
syncStatus = {
|
|
22
|
+
matchesCount: res.status.matchesCount,
|
|
23
|
+
syncedAt,
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
encoding: 'application/json',
|
|
29
|
+
body: {
|
|
30
|
+
syncStatus,
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { mapDefined } from '@atproto/common'
|
|
2
|
+
import { AppContext } from '../../../../context'
|
|
3
|
+
import {
|
|
4
|
+
HydrateCtx,
|
|
5
|
+
HydrationState,
|
|
6
|
+
Hydrator,
|
|
7
|
+
} from '../../../../hydration/hydrator'
|
|
8
|
+
import { Server } from '../../../../lexicon'
|
|
9
|
+
import { MatchAndContactIndex } from '../../../../lexicon/types/app/bsky/contact/defs'
|
|
10
|
+
import { InputSchema } from '../../../../lexicon/types/app/bsky/contact/importContacts'
|
|
11
|
+
import {
|
|
12
|
+
HydrationFnInput,
|
|
13
|
+
SkeletonFnInput,
|
|
14
|
+
createPipeline,
|
|
15
|
+
noRules,
|
|
16
|
+
} from '../../../../pipeline'
|
|
17
|
+
import { ImportContactsMatch } from '../../../../proto/rolodex_pb'
|
|
18
|
+
import { RolodexClient } from '../../../../rolodex'
|
|
19
|
+
import { Views } from '../../../../views'
|
|
20
|
+
import { assertRolodexOrThrowUnimplemented } from './util'
|
|
21
|
+
|
|
22
|
+
export default function (server: Server, ctx: AppContext) {
|
|
23
|
+
const importContacts = createPipeline(
|
|
24
|
+
skeleton,
|
|
25
|
+
hydration,
|
|
26
|
+
noRules, //
|
|
27
|
+
presentation,
|
|
28
|
+
)
|
|
29
|
+
server.app.bsky.contact.importContacts({
|
|
30
|
+
auth: ctx.authVerifier.standard,
|
|
31
|
+
handler: async ({ input, auth, req }) => {
|
|
32
|
+
assertRolodexOrThrowUnimplemented(ctx)
|
|
33
|
+
|
|
34
|
+
const viewer = auth.credentials.iss
|
|
35
|
+
const labelers = ctx.reqLabelers(req)
|
|
36
|
+
const hydrateCtx = await ctx.hydrator.createContext({
|
|
37
|
+
labelers,
|
|
38
|
+
viewer,
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
const result = await importContacts(
|
|
42
|
+
{ ...input.body, hydrateCtx: hydrateCtx.copy({ viewer }) },
|
|
43
|
+
ctx,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
return {
|
|
47
|
+
encoding: 'application/json',
|
|
48
|
+
body: result,
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const skeleton = async (
|
|
55
|
+
input: SkeletonFnInput<Context, Params>,
|
|
56
|
+
): Promise<SkeletonState> => {
|
|
57
|
+
const { params, ctx } = input
|
|
58
|
+
const actor = params.hydrateCtx.viewer
|
|
59
|
+
// TODO: Error handling.
|
|
60
|
+
const { matches } = await ctx.rolodexClient.importContacts({
|
|
61
|
+
actor: params.hydrateCtx.viewer,
|
|
62
|
+
contacts: params.contacts,
|
|
63
|
+
token: params.token,
|
|
64
|
+
})
|
|
65
|
+
return {
|
|
66
|
+
actor,
|
|
67
|
+
matches,
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const hydration = async (
|
|
72
|
+
input: HydrationFnInput<Context, Params, SkeletonState>,
|
|
73
|
+
) => {
|
|
74
|
+
const { ctx, params, skeleton } = input
|
|
75
|
+
const { matches } = skeleton
|
|
76
|
+
const subjects = matches.map((m) => m.subject)
|
|
77
|
+
return ctx.hydrator.hydrateProfiles(subjects, params.hydrateCtx)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const presentation = (input: {
|
|
81
|
+
ctx: Context
|
|
82
|
+
params: Params
|
|
83
|
+
skeleton: SkeletonState
|
|
84
|
+
hydration: HydrationState
|
|
85
|
+
}) => {
|
|
86
|
+
const { ctx, skeleton, hydration } = input
|
|
87
|
+
const matchesAndContactIndexes = mapDefined(
|
|
88
|
+
skeleton.matches,
|
|
89
|
+
({ subject, inputIndex }): MatchAndContactIndex | undefined => {
|
|
90
|
+
const profile = ctx.views.profile(subject, hydration)
|
|
91
|
+
|
|
92
|
+
if (!profile) {
|
|
93
|
+
return undefined
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
contactIndex: inputIndex,
|
|
98
|
+
match: profile,
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
)
|
|
102
|
+
return { matchesAndContactIndexes }
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
type Context = {
|
|
106
|
+
hydrator: Hydrator
|
|
107
|
+
rolodexClient: RolodexClient
|
|
108
|
+
views: Views
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
type Params = InputSchema & {
|
|
112
|
+
hydrateCtx: HydrateCtx & { viewer: string }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
type SkeletonState = {
|
|
116
|
+
actor: string
|
|
117
|
+
matches: ImportContactsMatch[]
|
|
118
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AppContext } from '../../../../context'
|
|
2
|
+
import { Server } from '../../../../lexicon'
|
|
3
|
+
import { assertRolodexOrThrowUnimplemented } from './util'
|
|
4
|
+
|
|
5
|
+
export default function (server: Server, ctx: AppContext) {
|
|
6
|
+
server.app.bsky.contact.removeData({
|
|
7
|
+
auth: ctx.authVerifier.standard,
|
|
8
|
+
handler: async ({ auth }) => {
|
|
9
|
+
assertRolodexOrThrowUnimplemented(ctx)
|
|
10
|
+
|
|
11
|
+
const actor = auth.credentials.iss
|
|
12
|
+
// TODO: Error handling.
|
|
13
|
+
await ctx.rolodexClient.removeData({
|
|
14
|
+
actor,
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
encoding: 'application/json',
|
|
19
|
+
body: {},
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
})
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AppContext } from '../../../../context'
|
|
2
|
+
import { Server } from '../../../../lexicon'
|
|
3
|
+
import { assertRolodexOrThrowUnimplemented } from './util'
|
|
4
|
+
|
|
5
|
+
export default function (server: Server, ctx: AppContext) {
|
|
6
|
+
server.app.bsky.contact.startPhoneVerification({
|
|
7
|
+
auth: ctx.authVerifier.standard,
|
|
8
|
+
handler: async ({ auth, input }) => {
|
|
9
|
+
assertRolodexOrThrowUnimplemented(ctx)
|
|
10
|
+
|
|
11
|
+
const actor = auth.credentials.iss
|
|
12
|
+
// TODO: Error handling.
|
|
13
|
+
await ctx.rolodexClient.startPhoneVerification({
|
|
14
|
+
actor,
|
|
15
|
+
phone: input.body.phone,
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
encoding: 'application/json',
|
|
20
|
+
body: {},
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
}
|