Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added wallet connect options for Web5.connect() #694

Merged
merged 9 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,15 @@
"@changesets/cli": "^2.27.5",
"@npmcli/package-json": "5.0.0",
"@typescript-eslint/eslint-plugin": "7.9.0",
"@web5/dwn-server": "0.2.3",
"@web5/dwn-server": "0.3.1",
"audit-ci": "^7.0.1",
"eslint-plugin-mocha": "10.4.3",
"npkill": "0.11.3"
},
"pnpm": {
"overrides": {
"express@<4.19.2": ">=4.19.2"
"express@<4.19.2": ">=4.19.2",
"ws@<8.17.1": ">=8.17.1"
}
}
}
6 changes: 3 additions & 3 deletions packages/agent/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
"dependencies": {
"@noble/ciphers": "0.4.1",
"@scure/bip39": "1.2.2",
"@tbd54566975/dwn-sdk-js": "0.3.5",
"@tbd54566975/dwn-sdk-js": "0.3.10",
"@web5/common": "1.0.0",
"@web5/crypto": "1.0.0",
"@web5/dids": "1.1.0",
Expand All @@ -93,8 +93,8 @@
"@types/node": "20.11.19",
"@types/sinon": "17.0.2",
"@typescript-eslint/eslint-plugin": "7.9.0",
"@typescript-eslint/parser": "7.9.0",
"@web/test-runner": "0.18.0",
"@typescript-eslint/parser": "7.14.1",
"@web/test-runner": "0.18.2",
"@web/test-runner-playwright": "0.11.0",
"abstract-level": "1.0.4",
"c8": "9.1.0",
Expand Down
8 changes: 5 additions & 3 deletions packages/agent/src/dwn-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { DwnConfig, GenericMessage, UnionMessageReply } from '@tbd54566975/
import { Convert, NodeStream } from '@web5/common';
import { utils as cryptoUtils } from '@web5/crypto';
import { DidDht, DidJwk, DidResolverCacheLevel, UniversalResolver } from '@web5/dids';
import { Cid, DataStoreLevel, Dwn, DwnMethodName, EventLogLevel, Message, MessageStoreLevel } from '@tbd54566975/dwn-sdk-js';
import { Cid, DataStoreLevel, Dwn, DwnMethodName, EventLogLevel, Message, MessageStoreLevel, ResumableTaskStoreLevel } from '@tbd54566975/dwn-sdk-js';

import type { Web5PlatformAgent } from './types/agent.js';
import type { DwnMessage, DwnMessageInstance, DwnMessageParams, DwnMessageReply, DwnMessageWithData, DwnResponse, DwnSigner, MessageHandler, ProcessDwnRequest, SendDwnRequest } from './types/dwn.js';
Expand Down Expand Up @@ -95,7 +95,7 @@ export class AgentDwnApi {
}

public static async createDwn({
dataPath, dataStore, didResolver, eventLog, eventStream, messageStore, tenantGate
dataPath, dataStore, didResolver, eventLog, eventStream, messageStore, tenantGate, resumableTaskStore
}: DwnApiCreateDwnParams): Promise<Dwn> {
dataStore ??= new DataStoreLevel({ blockstoreLocation: `${dataPath}/DWN_DATASTORE` });

Expand All @@ -111,7 +111,9 @@ export class AgentDwnApi {
indexLocation : `${dataPath}/DWN_MESSAGEINDEX`
}));

return await Dwn.create({ dataStore, didResolver, eventLog, eventStream, messageStore, tenantGate });
resumableTaskStore ??= new ResumableTaskStoreLevel({ location: `${dataPath}/DWN_RESUMABLETASKSTORE` });

return await Dwn.create({ dataStore, didResolver, eventLog, eventStream, messageStore, tenantGate, resumableTaskStore });
}

public async processRequest<T extends DwnInterface>(
Expand Down
4 changes: 2 additions & 2 deletions packages/agent/src/prototyping/clients/dwn-rpc-types.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import type { RecordsReadReply, UnionMessageReply, EventSubscriptionHandler, RecordSubscriptionHandler } from '@tbd54566975/dwn-sdk-js';
import type { RecordsReadReply, UnionMessageReply, MessageSubscriptionHandler, RecordSubscriptionHandler } from '@tbd54566975/dwn-sdk-js';

export interface SerializableDwnMessage {
toJSON(): string;
}

export type DwnSubscriptionHandler = EventSubscriptionHandler | RecordSubscriptionHandler;
export type DwnSubscriptionHandler = MessageSubscriptionHandler | RecordSubscriptionHandler;

/**
* Interface for communicating with {@link https://github.com/TBD54566975/dwn-server | DWN Servers}
Expand Down
16 changes: 8 additions & 8 deletions packages/agent/src/sync-engine-level.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { ULIDFactory } from 'ulidx';
import type { AbstractBatchOperation, AbstractLevel } from 'abstract-level';
import type {
EventsGetReply,
EventsQueryReply,
GenericMessage,
MessagesGetReply,
PaginationCursor,
Expand Down Expand Up @@ -355,22 +355,22 @@ export class SyncEngineLevel implements SyncEngine {
syncDirection: SyncDirection,
cursor?: PaginationCursor
}) {
let eventsReply = {} as EventsGetReply;
let eventsReply = {} as EventsQueryReply;

if (syncDirection === 'pull') {
// When sync is a pull, get the event log from the remote DWN.
const eventsGetMessage = await this.agent.dwn.createMessage({
author : did,
messageType : DwnInterface.EventsGet,
messageParams : { cursor }
messageType : DwnInterface.EventsQuery,
messageParams : { filters: [], cursor }
});

try {
eventsReply = await this.agent.rpc.sendDwnRequest({
dwnUrl : dwnUrl,
targetDid : did,
message : eventsGetMessage
}) as EventsGetReply;
}) as EventsQueryReply;
} catch {
// If a particular DWN service endpoint is unreachable, silently ignore.
}
Expand All @@ -380,10 +380,10 @@ export class SyncEngineLevel implements SyncEngine {
const eventsGetDwnResponse = await this.agent.dwn.processRequest({
author : did,
target : did,
messageType : DwnInterface.EventsGet,
messageParams : { cursor }
messageType : DwnInterface.EventsQuery,
messageParams : { filters: [], cursor }
});
eventsReply = eventsGetDwnResponse.reply as EventsGetReply;
eventsReply = eventsGetDwnResponse.reply as EventsQueryReply;
}

const eventLog = eventsReply.entries ?? [];
Expand Down
22 changes: 15 additions & 7 deletions packages/agent/src/test-harness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { AbstractLevel } from 'abstract-level';

import { Level } from 'level';
import { LevelStore, MemoryStore } from '@web5/common';
import { DataStoreLevel, Dwn, EventEmitterStream, EventLogLevel, MessageStoreLevel } from '@tbd54566975/dwn-sdk-js';
import { DataStoreLevel, Dwn, EventEmitterStream, EventLogLevel, MessageStoreLevel, ResumableTaskStoreLevel } from '@tbd54566975/dwn-sdk-js';
import { DidDht, DidJwk, DidResolutionResult, DidResolverCache, DidResolverCacheLevel } from '@web5/dids';

import type { Web5PlatformAgent } from './types/agent.js';
Expand Down Expand Up @@ -32,6 +32,7 @@ type PlatformAgentTestHarnessParams = {
dwnDataStore: DataStoreLevel;
dwnEventLog: EventLogLevel;
dwnMessageStore: MessageStoreLevel;
dwnResumableTaskStore: ResumableTaskStoreLevel;
syncStore: AbstractLevel<string | Buffer | Uint8Array>;
vaultStore: KeyValueStore<string, string>;
}
Expand All @@ -51,6 +52,7 @@ export class PlatformAgentTestHarness {
public dwnDataStore: DataStoreLevel;
public dwnEventLog: EventLogLevel;
public dwnMessageStore: MessageStoreLevel;
public dwnResumableTaskStore: ResumableTaskStoreLevel;
public syncStore: AbstractLevel<string | Buffer | Uint8Array>;
public vaultStore: KeyValueStore<string, string>;

Expand All @@ -64,6 +66,7 @@ export class PlatformAgentTestHarness {
this.dwnMessageStore = params.dwnMessageStore;
this.syncStore = params.syncStore;
this.vaultStore = params.vaultStore;
this.dwnResumableTaskStore = params.dwnResumableTaskStore;
}

public async clearStorage(): Promise<void> {
Expand All @@ -73,6 +76,7 @@ export class PlatformAgentTestHarness {
await this.dwnDataStore.clear();
await this.dwnEventLog.clear();
await this.dwnMessageStore.clear();
await this.dwnResumableTaskStore.clear();
await this.syncStore.clear();
await this.vaultStore.clear();

Expand All @@ -98,6 +102,7 @@ export class PlatformAgentTestHarness {
await this.dwnDataStore.close();
await this.dwnEventLog.close();
await this.dwnMessageStore.close();
await this.dwnResumableTaskStore.close();
await this.syncStore.close();
await this.vaultStore.close();
}
Expand Down Expand Up @@ -181,6 +186,7 @@ export class PlatformAgentTestHarness {
const dwnDataStore = new DataStoreLevel({ blockstoreLocation: testDataPath('DWN_DATASTORE') });
const dwnEventLog = new EventLogLevel({ location: testDataPath('DWN_EVENTLOG') });
const dwnEventStream = new EventEmitterStream();
const dwnResumableTaskStore = new ResumableTaskStoreLevel({ location: testDataPath('DWN_RESUMABLETASKSTORE') });

const dwnMessageStore = new MessageStoreLevel({
blockstoreLocation : testDataPath('DWN_MESSAGESTORE'),
Expand All @@ -189,12 +195,13 @@ export class PlatformAgentTestHarness {

// Instantiate DWN instance using the custom stores.
const dwn = await AgentDwnApi.createDwn({
dataPath : testDataLocation,
dataStore : dwnDataStore,
didResolver : didApi,
eventLog : dwnEventLog,
eventStream : dwnEventStream,
messageStore : dwnMessageStore,
dataPath : testDataLocation,
dataStore : dwnDataStore,
didResolver : didApi,
eventLog : dwnEventLog,
eventStream : dwnEventStream,
messageStore : dwnMessageStore,
resumableTaskStore : dwnResumableTaskStore
});

// Instantiate Agent's DWN API using the custom DWN instance.
Expand Down Expand Up @@ -225,6 +232,7 @@ export class PlatformAgentTestHarness {
dwnDataStore,
dwnEventLog,
dwnMessageStore,
dwnResumableTaskStore,
syncStore,
vaultStore
});
Expand Down
23 changes: 8 additions & 15 deletions packages/agent/src/types/dwn.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import type { DidService } from '@web5/dids';
import type { Readable, RequireOnly } from '@web5/common';
import type {
EventsGetReply,
EventsGetOptions,
EventsGetMessage,
EventsQueryReply,
MessagesGetReply,
RecordsReadReply,
Expand Down Expand Up @@ -32,12 +29,11 @@ import type {
RecordsSubscribeOptions,
EventsSubscribeReply,
RecordsSubscribeReply,
MessageSubscriptionHandler,
RecordSubscriptionHandler,
EventSubscriptionHandler,
} from '@tbd54566975/dwn-sdk-js';

import {
EventsGet,
MessagesGet,
RecordsRead,
RecordsQuery,
Expand Down Expand Up @@ -91,7 +87,6 @@ export interface DwnDidService extends DidService {
}

export enum DwnInterface {
EventsGet = DwnInterfaceName.Events + DwnMethodName.Get,
EventsQuery = DwnInterfaceName.Events + DwnMethodName.Query,
EventsSubscribe = DwnInterfaceName.Events + DwnMethodName.Subscribe,
MessagesGet = DwnInterfaceName.Messages + DwnMethodName.Get,
Expand All @@ -105,7 +100,6 @@ export enum DwnInterface {
}

export interface DwnMessage {
[DwnInterface.EventsGet] : EventsGetMessage;
[DwnInterface.EventsSubscribe] : EventsSubscribeMessage;
[DwnInterface.EventsQuery] : EventsQueryMessage;
[DwnInterface.MessagesGet] : MessagesGetMessage;
Expand All @@ -119,7 +113,6 @@ export interface DwnMessage {
}

export interface DwnMessageDescriptor {
[DwnInterface.EventsGet] : EventsGetMessage['descriptor'];
[DwnInterface.EventsSubscribe] : EventsSubscribeMessage['descriptor'];
[DwnInterface.EventsQuery] : EventsQueryMessage['descriptor'];
[DwnInterface.MessagesGet] : MessagesGetMessage['descriptor'];
Expand All @@ -133,7 +126,6 @@ export interface DwnMessageDescriptor {
}

export interface DwnMessageParams {
[DwnInterface.EventsGet] : Partial<EventsGetOptions>;
[DwnInterface.EventsQuery] : RequireOnly<EventsQueryOptions, 'filters'>;
[DwnInterface.EventsSubscribe] : Partial<EventsSubscribeOptions>;
[DwnInterface.MessagesGet] : RequireOnly<MessagesGetOptions, 'messageCids'>;
Expand All @@ -147,7 +139,6 @@ export interface DwnMessageParams {
}

export interface DwnMessageReply {
[DwnInterface.EventsGet] : EventsGetReply;
[DwnInterface.EventsQuery] : EventsQueryReply;
[DwnInterface.EventsSubscribe] : EventsSubscribeReply;
[DwnInterface.MessagesGet] : MessagesGetReply;
Expand All @@ -161,11 +152,10 @@ export interface DwnMessageReply {
}

export interface MessageHandler {
[DwnInterface.EventsSubscribe] : EventSubscriptionHandler;
[DwnInterface.EventsSubscribe] : MessageSubscriptionHandler;
[DwnInterface.RecordsSubscribe] : RecordSubscriptionHandler;

// define all of them individually as undefined
[DwnInterface.EventsGet] : undefined;
[DwnInterface.EventsQuery] : undefined;
[DwnInterface.MessagesGet] : undefined;
[DwnInterface.ProtocolsConfigure] : undefined;
Expand Down Expand Up @@ -220,7 +210,6 @@ export interface DwnMessageConstructor<T extends DwnInterface> {
}

export const dwnMessageConstructors: { [T in DwnInterface]: DwnMessageConstructor<T> } = {
[DwnInterface.EventsGet] : EventsGet as any,
[DwnInterface.EventsQuery] : EventsQuery as any,
[DwnInterface.EventsSubscribe] : EventsSubscribe as any,
[DwnInterface.MessagesGet] : MessagesGet as any,
Expand All @@ -236,7 +225,6 @@ export const dwnMessageConstructors: { [T in DwnInterface]: DwnMessageConstructo
export type DwnMessageConstructors = typeof dwnMessageConstructors;

export interface DwnMessageInstance {
[DwnInterface.EventsGet] : EventsGet;
[DwnInterface.EventsQuery] : EventsQuery;
[DwnInterface.EventsSubscribe] : EventsSubscribe;
[DwnInterface.MessagesGet] : MessagesGet;
Expand Down Expand Up @@ -264,9 +252,14 @@ export {
DateSort as DwnDateSort,
PublicJwk as DwnPublicKeyJwk, // TODO: Remove once DWN SDK switches to Jwk from @web5/crypto
PaginationCursor as DwnPaginationCursor,
EventSubscriptionHandler as DwnEventSubscriptionHandler,
MessageSubscriptionHandler as DwnMessageSubscriptionHandler,
RecordSubscriptionHandler as DwnRecordSubscriptionHandler,
MessageSubscription as DwnMessageSubscription,
EncryptionAlgorithm as DwnEncryptionAlgorithm,
KeyDerivationScheme as DwnKeyDerivationScheme,
PermissionGrant as DwnPermissionGrant,
PermissionRequest as DwnPermissionRequest,
PermissionsProtocol as DwnPermissionsProtocol,
ProtocolDefinition as DwnProtocolDefinition,
RecordsPermissionScope as DwnRecordsPermissionScope,
} from '@tbd54566975/dwn-sdk-js';
Loading
Loading