diff --git a/deno.lock b/deno.lock index bce480e..826a5fe 100644 --- a/deno.lock +++ b/deno.lock @@ -221,7 +221,6 @@ "dependencies": [ "jsr:@puregarlic/randimal@^1.1.1", "jsr:@std/expect@^1.0.17", - "npm:@atcute/atproto@^3.1.9", "npm:@atcute/client@^4.0.5", "npm:@atcute/jetstream@^1.1.2", "npm:@atcute/lexicons@^1.2.2", @@ -246,7 +245,6 @@ "packages/producer": { "dependencies": [ "jsr:@std/expect@^1.0.17", - "npm:@atcute/atproto@^3.1.9", "npm:@atcute/client@^4.0.5", "npm:@atcute/lexicons@^1.2.2", "npm:@atcute/tid@^1.0.3" @@ -254,6 +252,7 @@ }, "packages/shared": { "dependencies": [ + "npm:@atcute/atproto@^3.1.9", "npm:@atcute/client@^4.0.5", "npm:@atcute/lexicons@^1.2.2" ] diff --git a/packages/consumer/deno.jsonc b/packages/consumer/deno.jsonc index ca760d0..7023cc4 100644 --- a/packages/consumer/deno.jsonc +++ b/packages/consumer/deno.jsonc @@ -9,7 +9,6 @@ "exclude": ["*.test.ts"] }, "imports": { - "@atcute/atproto": "npm:@atcute/atproto@^3.1.9", "@atcute/client": "npm:@atcute/client@^4.0.5", "@atcute/jetstream": "npm:@atcute/jetstream@^1.1.2", "@atcute/lexicons": "npm:@atcute/lexicons@^1.2.2", diff --git a/packages/consumer/mod.test.ts b/packages/consumer/mod.test.ts index 5d962a2..9b93e3a 100644 --- a/packages/consumer/mod.test.ts +++ b/packages/consumer/mod.test.ts @@ -6,6 +6,7 @@ import type { Client, CredentialManager } from "@atcute/client"; import type { Did, Handle, ResourceUri } from "@atcute/lexicons"; import { now } from "@atcute/tid"; import type { AppCisternMemo } from "@cistern/lexicon"; +import type { XRPCProcedures, XRPCQueries } from "@cistern/shared"; // Helper to create a mock Consumer instance function createMockConsumer( @@ -31,7 +32,7 @@ function createMockConsumer( } // Helper to create a mock RPC client -function createMockRpcClient(): Client { +function createMockRpcClient(): Client { return { get: () => { throw new Error("Mock RPC get not implemented"); @@ -39,7 +40,7 @@ function createMockRpcClient(): Client { post: () => { throw new Error("Mock RPC post not implemented"); }, - } as unknown as Client; + } as unknown as Client; } Deno.test({ @@ -101,7 +102,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc }); const keypair = await consumer.generateKeyPair(); @@ -152,7 +153,7 @@ Deno.test({ status: 500, data: { error: "Internal Server Error" }, }), - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc }); @@ -210,7 +211,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc, @@ -272,7 +273,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc, @@ -363,7 +364,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc, @@ -399,7 +400,7 @@ Deno.test({ status: 401, data: { error: "Unauthorized" }, }), - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc, @@ -448,7 +449,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc }); @@ -468,7 +469,7 @@ Deno.test({ status: 404, data: { error: "Not Found" }, }), - } as unknown as Client; + } as unknown as Client; const consumer = createMockConsumer({ rpc: mockRpc }); diff --git a/packages/consumer/mod.ts b/packages/consumer/mod.ts index a0d118d..3ca30aa 100644 --- a/packages/consumer/mod.ts +++ b/packages/consumer/mod.ts @@ -1,4 +1,8 @@ -import { produceRequirements } from "@cistern/shared"; +import { + produceRequirements, + type XRPCProcedures, + type XRPCQueries, +} from "@cistern/shared"; import { decryptText, generateKeys } from "@cistern/crypto"; import { generateRandomName } from "@puregarlic/randimal"; import { is, parse, type RecordKey } from "@atcute/lexicons"; @@ -13,8 +17,6 @@ import type { LocalKeyPair, } from "./types.ts"; -import type {} from "@atcute/atproto"; - export async function createConsumer( options: ConsumerOptions, ): Promise { @@ -29,7 +31,7 @@ export async function createConsumer( export class Consumer { did: Did; keypair?: LocalKeyPair; - rpc: Client; + rpc: Client; manager: CredentialManager; constructor(params: ConsumerParams) { diff --git a/packages/lexicon/src/types/app/cistern/memo.ts b/packages/lexicon/src/types/app/cistern/memo.ts index b50f719..922d8f6 100644 --- a/packages/lexicon/src/types/app/cistern/memo.ts +++ b/packages/lexicon/src/types/app/cistern/memo.ts @@ -1,6 +1,5 @@ import type {} from "@atcute/lexicons"; import * as v from "@atcute/lexicons/validations"; -import type {} from "@atcute/lexicons/ambient"; const _mainSchema = /*#__PURE__*/ v.record( /*#__PURE__*/ v.string(), @@ -50,9 +49,3 @@ export interface mainSchema extends main$schematype {} export const mainSchema = _mainSchema as mainSchema; export interface Main extends v.InferInput {} - -declare module "@atcute/lexicons/ambient" { - interface Records { - "app.cistern.memo": mainSchema; - } -} diff --git a/packages/lexicon/src/types/app/cistern/pubkey.ts b/packages/lexicon/src/types/app/cistern/pubkey.ts index 5599f38..0a12cd4 100644 --- a/packages/lexicon/src/types/app/cistern/pubkey.ts +++ b/packages/lexicon/src/types/app/cistern/pubkey.ts @@ -1,6 +1,5 @@ import type {} from "@atcute/lexicons"; import * as v from "@atcute/lexicons/validations"; -import type {} from "@atcute/lexicons/ambient"; const _mainSchema = /*#__PURE__*/ v.record( /*#__PURE__*/ v.string(), @@ -32,9 +31,3 @@ export interface mainSchema extends main$schematype {} export const mainSchema = _mainSchema as mainSchema; export interface Main extends v.InferInput {} - -declare module "@atcute/lexicons/ambient" { - interface Records { - "app.cistern.pubkey": mainSchema; - } -} diff --git a/packages/producer/deno.jsonc b/packages/producer/deno.jsonc index 65bd6f7..1430c19 100644 --- a/packages/producer/deno.jsonc +++ b/packages/producer/deno.jsonc @@ -9,7 +9,6 @@ "exclude": ["*.test.ts"] }, "imports": { - "@atcute/atproto": "npm:@atcute/atproto@^3.1.9", "@atcute/client": "npm:@atcute/client@^4.0.5", "@atcute/lexicons": "npm:@atcute/lexicons@^1.2.2", "@atcute/tid": "npm:@atcute/tid@^1.0.3", diff --git a/packages/producer/mod.test.ts b/packages/producer/mod.test.ts index d711333..d3e55e6 100644 --- a/packages/producer/mod.test.ts +++ b/packages/producer/mod.test.ts @@ -5,6 +5,7 @@ import type { ProducerParams, PublicKeyOption } from "./types.ts"; import type { Client, CredentialManager } from "@atcute/client"; import type { Did, Handle, ResourceUri } from "@atcute/lexicons"; import type { AppCisternPubkey } from "@cistern/lexicon"; +import type { XRPCProcedures, XRPCQueries } from "@cistern/shared"; // Helper to create a mock Producer instance function createMockProducer( @@ -30,7 +31,7 @@ function createMockProducer( } // Helper to create a mock RPC client -function createMockRpcClient(): Client { +function createMockRpcClient(): Client { return { get: () => { throw new Error("Mock RPC get not implemented"); @@ -38,7 +39,7 @@ function createMockRpcClient(): Client { post: () => { throw new Error("Mock RPC post not implemented"); }, - } as unknown as Client; + } as unknown as Client; } Deno.test({ @@ -98,7 +99,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const producer = createMockProducer({ rpc: mockRpc, @@ -142,7 +143,7 @@ Deno.test({ status: 500, data: { error: "Internal Server Error" }, }), - } as unknown as Client; + } as unknown as Client; const producer = createMockProducer({ rpc: mockRpc, @@ -196,7 +197,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const producer = createMockProducer({ rpc: mockRpc }); @@ -262,7 +263,7 @@ Deno.test({ } return Promise.resolve({ ok: false, status: 500, data: {} }); }, - } as unknown as Client; + } as unknown as Client; const producer = createMockProducer({ rpc: mockRpc }); @@ -288,7 +289,7 @@ Deno.test({ status: 401, data: { error: "Unauthorized" }, }), - } as unknown as Client; + } as unknown as Client; const producer = createMockProducer({ rpc: mockRpc }); diff --git a/packages/producer/mod.ts b/packages/producer/mod.ts index d82778c..f0eca72 100644 --- a/packages/producer/mod.ts +++ b/packages/producer/mod.ts @@ -10,8 +10,6 @@ import type { Client, CredentialManager } from "@atcute/client"; import { now } from "@atcute/tid"; import { type AppCisternMemo, AppCisternPubkey } from "@cistern/lexicon"; -import type {} from "@atcute/atproto"; - export async function createProducer( { publicKey: rkey, ...opts }: ProducerOptions, ): Promise { diff --git a/packages/shared/deno.jsonc b/packages/shared/deno.jsonc index 6c589e4..7fb0fac 100644 --- a/packages/shared/deno.jsonc +++ b/packages/shared/deno.jsonc @@ -9,6 +9,7 @@ "exclude": ["*.test.ts"] }, "imports": { + "@atcute/atproto": "npm:@atcute/atproto@^3.1.9", "@atcute/client": "npm:@atcute/client@^4.0.5", "@atcute/lexicons": "npm:@atcute/lexicons@^1.2.2" } diff --git a/packages/shared/types.ts b/packages/shared/types.ts index e26359e..61544b7 100644 --- a/packages/shared/types.ts +++ b/packages/shared/types.ts @@ -1,5 +1,11 @@ import type { Did, Handle } from "@atcute/lexicons"; import type { Client, CredentialManager } from "@atcute/client"; +import type { + ComAtprotoRepoCreateRecord, + ComAtprotoRepoDeleteRecord, + ComAtprotoRepoGetRecord, + ComAtprotoRepoListRecords, +} from "@atcute/atproto"; export interface MiniDoc { did: Did; @@ -13,9 +19,19 @@ export interface BaseClientOptions { appPassword: string; } +export interface XRPCQueries { + "com.atproto.repo.getRecord": ComAtprotoRepoGetRecord.mainSchema; + "com.atproto.repo.listRecords": ComAtprotoRepoListRecords.mainSchema; +} + +export interface XRPCProcedures { + "com.atproto.repo.createRecord": ComAtprotoRepoCreateRecord.mainSchema; + "com.atproto.repo.deleteRecord": ComAtprotoRepoDeleteRecord.mainSchema; +} + export interface ClientRequirements { miniDoc: MiniDoc; manager: CredentialManager; - rpc: Client; + rpc: Client; options: Options; }