@peerbit/canonical-client 1.0.0 → 1.1.0
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/dist/src/auto.d.ts +23 -1
- package/dist/src/auto.d.ts.map +1 -1
- package/dist/src/auto.js +26 -0
- package/dist/src/auto.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/peerbit.d.ts +3 -3
- package/dist/src/peerbit.d.ts.map +1 -1
- package/dist/src/peerbit.js +12 -3
- package/dist/src/peerbit.js.map +1 -1
- package/package.json +2 -2
- package/src/auto.ts +56 -1
- package/src/index.ts +2 -0
- package/src/peerbit.ts +29 -14
package/dist/src/auto.d.ts
CHANGED
|
@@ -5,9 +5,24 @@ export type CanonicalOpenResult<T> = {
|
|
|
5
5
|
proxy: T;
|
|
6
6
|
address?: Address;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Canonical open supports "proxy parents" (managed proxies returned by adapters),
|
|
10
|
+
* which are not instances of `Program`. This widens `OpenOptions.parent` so apps
|
|
11
|
+
* don't need `parent: proxy as any`.
|
|
12
|
+
*/
|
|
13
|
+
export type CanonicalOpenOptions<S extends Program<any>> = Omit<OpenOptions<S>, "parent"> & {
|
|
14
|
+
parent?: unknown;
|
|
15
|
+
};
|
|
8
16
|
export type CanonicalOpenAdapter<S extends Program<any> = Program<any>, T = unknown> = {
|
|
9
17
|
name: string;
|
|
10
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Optional list of borsh @variant strings this adapter can open.
|
|
20
|
+
* If `canOpen` is omitted, canonical open will match by comparing
|
|
21
|
+
* `getSchema(program.constructor).variant` against these values.
|
|
22
|
+
*/
|
|
23
|
+
variant?: string;
|
|
24
|
+
variants?: string[];
|
|
25
|
+
canOpen?(program: Program<any>): program is S;
|
|
11
26
|
getKey?(program: S, options?: OpenOptions<S>): string | undefined;
|
|
12
27
|
open(ctx: {
|
|
13
28
|
program: S;
|
|
@@ -16,6 +31,13 @@ export type CanonicalOpenAdapter<S extends Program<any> = Program<any>, T = unkn
|
|
|
16
31
|
client: CanonicalClient;
|
|
17
32
|
}): Promise<CanonicalOpenResult<T>>;
|
|
18
33
|
};
|
|
34
|
+
export declare const getProgramVariant: (program: Program<any>) => string | undefined;
|
|
35
|
+
export declare const createVariantAdapter: <S extends Program<any> = Program<any>, T = unknown>(options: {
|
|
36
|
+
name: string;
|
|
37
|
+
variant: string | string[];
|
|
38
|
+
getKey?: (program: S, options?: OpenOptions<S>) => string | undefined;
|
|
39
|
+
open: CanonicalOpenAdapter<S, T>["open"];
|
|
40
|
+
}) => CanonicalOpenAdapter<S, T>;
|
|
19
41
|
type ManagedProxy = {
|
|
20
42
|
parents: any[];
|
|
21
43
|
children: any[];
|
package/dist/src/auto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/auto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/auto.ts"],"names":[],"mappings":"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"}
|
package/dist/src/auto.js
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
import { getSchema } from "@dao-xyz/borsh";
|
|
2
|
+
export const getProgramVariant = (program) => {
|
|
3
|
+
if (!program || typeof program !== "object")
|
|
4
|
+
return undefined;
|
|
5
|
+
try {
|
|
6
|
+
const schema = getSchema(program.constructor);
|
|
7
|
+
const variant = schema?.variant;
|
|
8
|
+
return typeof variant === "string" ? variant : undefined;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export const createVariantAdapter = (options) => {
|
|
15
|
+
const variants = (Array.isArray(options.variant) ? options.variant : [options.variant]).map(String);
|
|
16
|
+
return {
|
|
17
|
+
name: options.name,
|
|
18
|
+
variants,
|
|
19
|
+
canOpen: (program) => {
|
|
20
|
+
const candidate = getProgramVariant(program);
|
|
21
|
+
return !!candidate && variants.includes(candidate);
|
|
22
|
+
},
|
|
23
|
+
getKey: options.getKey,
|
|
24
|
+
open: options.open,
|
|
25
|
+
};
|
|
26
|
+
};
|
|
1
27
|
export const createManagedProxy = (proxy, options = {}) => {
|
|
2
28
|
const parents = [];
|
|
3
29
|
const children = [];
|
package/dist/src/auto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/auto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/auto.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from "./client.js";
|
|
2
|
-
export type { CanonicalOpenAdapter, CanonicalOpenMode, CanonicalOpenResult, } from "./auto.js";
|
|
2
|
+
export type { CanonicalOpenAdapter, CanonicalOpenMode, CanonicalOpenOptions, CanonicalOpenResult, } from "./auto.js";
|
|
3
|
+
export { createVariantAdapter, getProgramVariant } from "./auto.js";
|
|
3
4
|
export * from "./service-worker.js";
|
|
4
5
|
export * from "./window.js";
|
|
5
6
|
export * from "./peerbit.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,YAAY,EACX,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACnB,MAAM,WAAW,CAAC;AACnB,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,YAAY,EACX,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACpE,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAO5B,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACpE,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
package/dist/src/peerbit.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import type { PeerId } from "@libp2p/interface";
|
|
|
2
2
|
import { type Multiaddr } from "@multiformats/multiaddr";
|
|
3
3
|
import type { Identity, PreHash, PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
|
|
4
4
|
import { Program } from "@peerbit/program";
|
|
5
|
-
import type { Address,
|
|
6
|
-
import { type CanonicalOpenAdapter, type CanonicalOpenMode } from "./auto.js";
|
|
5
|
+
import type { Address, ProgramClient } from "@peerbit/program";
|
|
6
|
+
import { type CanonicalOpenAdapter, type CanonicalOpenMode, type CanonicalOpenOptions } from "./auto.js";
|
|
7
7
|
import type { CanonicalChannel } from "./client.js";
|
|
8
8
|
import type { CanonicalClient } from "./index.js";
|
|
9
9
|
type IdentityProxy = Identity<PublicSignKey> & {
|
|
@@ -44,7 +44,7 @@ export declare class PeerbitCanonicalClient {
|
|
|
44
44
|
stop(): Promise<void>;
|
|
45
45
|
bootstrap(addresses?: string[] | Multiaddr[]): Promise<void>;
|
|
46
46
|
openPort(name: string, payload: Uint8Array): Promise<CanonicalChannel>;
|
|
47
|
-
open<S extends Program<any>>(storeOrAddress: S | Address, openOptions?:
|
|
47
|
+
open<S extends Program<any>>(storeOrAddress: S | Address, openOptions?: CanonicalOpenOptions<S>): Promise<S>;
|
|
48
48
|
close(): void;
|
|
49
49
|
}
|
|
50
50
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peerbit.d.ts","sourceRoot":"","sources":["../../src/peerbit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACN,KAAK,SAAS,EAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACX,QAAQ,EACR,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"peerbit.d.ts","sourceRoot":"","sources":["../../src/peerbit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACN,KAAK,SAAS,EAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACX,QAAQ,EACR,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAGzB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,KAAK,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG;IAC9C,MAAM,EAAE,CACP,OAAO,CAAC,EAAE,OAAO,KACb,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;CACxB,CAAC;AASF,qBAAa,sBAAsB;IAYjC,QAAQ,CAAC,SAAS,EAAE,eAAe;IAXpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAC,CAKhB;IAEF,OAAO;WASM,MAAM,CAClB,SAAS,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,iBAAiB,CAAA;KAAE,GACvE,OAAO,CAAC,sBAAsB,CAAC;IAalC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,OAAO,CAAC,MAAM,CAAC,YAAY;YAab,gBAAgB;IAe9B,UAAU,CAAC,OAAO,EAAE;QACnB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;QACjC,IAAI,CAAC,EAAE,iBAAiB,CAAC;KACzB,GAAG,IAAI;IAcR;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAYpD,IAAI,CACT,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,aAAa,GACvD,OAAO,CAAC,OAAO,CAAC;IAqCb,MAAM,CACX,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,GAClD,OAAO,CAAC,IAAI,CAAC;IAyBV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIhE,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EAChC,cAAc,EAAE,CAAC,GAAG,OAAO,EAC3B,WAAW,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACvC,OAAO,CAAC,CAAC,CAAC;IAqHb,KAAK,IAAI,IAAI;CAIb"}
|
package/dist/src/peerbit.js
CHANGED
|
@@ -2,7 +2,7 @@ import { deserialize } from "@dao-xyz/borsh";
|
|
|
2
2
|
import { peerIdFromString } from "@libp2p/peer-id";
|
|
3
3
|
import { isMultiaddr, multiaddr, } from "@multiformats/multiaddr";
|
|
4
4
|
import { Program } from "@peerbit/program";
|
|
5
|
-
import { createManagedProxy, } from "./auto.js";
|
|
5
|
+
import { createManagedProxy, getProgramVariant, } from "./auto.js";
|
|
6
6
|
const asMultiaddrs = (value) => {
|
|
7
7
|
if (Array.isArray(value) && value.every((x) => isMultiaddr(x))) {
|
|
8
8
|
return value;
|
|
@@ -182,9 +182,18 @@ export class PeerbitCanonicalClient {
|
|
|
182
182
|
return this.open(loaded, openOptions);
|
|
183
183
|
}
|
|
184
184
|
const program = storeOrAddress;
|
|
185
|
-
const
|
|
185
|
+
const programVariant = getProgramVariant(program);
|
|
186
|
+
const adapter = state.adapters.find((candidate) => typeof candidate.canOpen === "function"
|
|
187
|
+
? candidate.canOpen(program)
|
|
188
|
+
: !!programVariant &&
|
|
189
|
+
(candidate.variants ?? (candidate.variant ? [candidate.variant] : []))
|
|
190
|
+
.map(String)
|
|
191
|
+
.includes(programVariant));
|
|
186
192
|
if (!adapter) {
|
|
187
|
-
|
|
193
|
+
const knownVariants = state.adapters
|
|
194
|
+
.flatMap((candidate) => candidate.variants ?? (candidate.variant ? [candidate.variant] : []))
|
|
195
|
+
.filter((x) => typeof x === "string" && x.length > 0);
|
|
196
|
+
throw new Error(`No canonical adapter registered for ${program.constructor?.name ?? "program"}${programVariant ? ` (variant: '${programVariant}')` : ""}${knownVariants.length ? `. Known variants: ${knownVariants.join(", ")}` : ""}`);
|
|
188
197
|
}
|
|
189
198
|
const key = adapter.getKey?.(program, openOptions);
|
|
190
199
|
if (adapter.getKey && key === undefined) {
|
package/dist/src/peerbit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peerbit.js","sourceRoot":"","sources":["../../src/peerbit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAEN,WAAW,EACX,SAAS,GACT,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"peerbit.js","sourceRoot":"","sources":["../../src/peerbit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/canonical-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Client helpers for connecting to a Peerbit canonical runtime",
|
|
5
5
|
"author": "dao.xyz",
|
|
6
6
|
"license": "MIT",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"@multiformats/multiaddr": "^13.0.1",
|
|
69
69
|
"@peerbit/canonical-transport": "1.0.0",
|
|
70
70
|
"@peerbit/crypto": "2.4.1",
|
|
71
|
-
"@peerbit/program": "5.6.
|
|
71
|
+
"@peerbit/program": "5.6.1"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {},
|
|
74
74
|
"localMaintainers": [
|
package/src/auto.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getSchema } from "@dao-xyz/borsh";
|
|
1
2
|
import type {
|
|
2
3
|
Address,
|
|
3
4
|
OpenOptions,
|
|
@@ -13,12 +14,31 @@ export type CanonicalOpenResult<T> = {
|
|
|
13
14
|
address?: Address;
|
|
14
15
|
};
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Canonical open supports "proxy parents" (managed proxies returned by adapters),
|
|
19
|
+
* which are not instances of `Program`. This widens `OpenOptions.parent` so apps
|
|
20
|
+
* don't need `parent: proxy as any`.
|
|
21
|
+
*/
|
|
22
|
+
export type CanonicalOpenOptions<S extends Program<any>> = Omit<
|
|
23
|
+
OpenOptions<S>,
|
|
24
|
+
"parent"
|
|
25
|
+
> & {
|
|
26
|
+
parent?: unknown;
|
|
27
|
+
};
|
|
28
|
+
|
|
16
29
|
export type CanonicalOpenAdapter<
|
|
17
30
|
S extends Program<any> = Program<any>,
|
|
18
31
|
T = unknown,
|
|
19
32
|
> = {
|
|
20
33
|
name: string;
|
|
21
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Optional list of borsh @variant strings this adapter can open.
|
|
36
|
+
* If `canOpen` is omitted, canonical open will match by comparing
|
|
37
|
+
* `getSchema(program.constructor).variant` against these values.
|
|
38
|
+
*/
|
|
39
|
+
variant?: string;
|
|
40
|
+
variants?: string[];
|
|
41
|
+
canOpen?(program: Program<any>): program is S;
|
|
22
42
|
getKey?(program: S, options?: OpenOptions<S>): string | undefined;
|
|
23
43
|
open(ctx: {
|
|
24
44
|
program: S;
|
|
@@ -28,6 +48,41 @@ export type CanonicalOpenAdapter<
|
|
|
28
48
|
}): Promise<CanonicalOpenResult<T>>;
|
|
29
49
|
};
|
|
30
50
|
|
|
51
|
+
export const getProgramVariant = (program: Program<any>): string | undefined => {
|
|
52
|
+
if (!program || typeof program !== "object") return undefined;
|
|
53
|
+
try {
|
|
54
|
+
const schema = getSchema((program as any).constructor);
|
|
55
|
+
const variant = schema?.variant;
|
|
56
|
+
return typeof variant === "string" ? variant : undefined;
|
|
57
|
+
} catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const createVariantAdapter = <
|
|
63
|
+
S extends Program<any> = Program<any>,
|
|
64
|
+
T = unknown,
|
|
65
|
+
>(options: {
|
|
66
|
+
name: string;
|
|
67
|
+
variant: string | string[];
|
|
68
|
+
getKey?: (program: S, options?: OpenOptions<S>) => string | undefined;
|
|
69
|
+
open: CanonicalOpenAdapter<S, T>["open"];
|
|
70
|
+
}): CanonicalOpenAdapter<S, T> => {
|
|
71
|
+
const variants = (
|
|
72
|
+
Array.isArray(options.variant) ? options.variant : [options.variant]
|
|
73
|
+
).map(String);
|
|
74
|
+
return {
|
|
75
|
+
name: options.name,
|
|
76
|
+
variants,
|
|
77
|
+
canOpen: (program: Program<any>): program is S => {
|
|
78
|
+
const candidate = getProgramVariant(program);
|
|
79
|
+
return !!candidate && variants.includes(candidate);
|
|
80
|
+
},
|
|
81
|
+
getKey: options.getKey,
|
|
82
|
+
open: options.open,
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
|
|
31
86
|
type ManagedProxy = {
|
|
32
87
|
parents: any[];
|
|
33
88
|
children: any[];
|
package/src/index.ts
CHANGED
|
@@ -2,8 +2,10 @@ export * from "./client.js";
|
|
|
2
2
|
export type {
|
|
3
3
|
CanonicalOpenAdapter,
|
|
4
4
|
CanonicalOpenMode,
|
|
5
|
+
CanonicalOpenOptions,
|
|
5
6
|
CanonicalOpenResult,
|
|
6
7
|
} from "./auto.js";
|
|
8
|
+
export { createVariantAdapter, getProgramVariant } from "./auto.js";
|
|
7
9
|
export * from "./service-worker.js";
|
|
8
10
|
export * from "./window.js";
|
|
9
11
|
export * from "./peerbit.js";
|
package/src/peerbit.ts
CHANGED
|
@@ -17,7 +17,9 @@ import type { Address, OpenOptions, ProgramClient } from "@peerbit/program";
|
|
|
17
17
|
import {
|
|
18
18
|
type CanonicalOpenAdapter,
|
|
19
19
|
type CanonicalOpenMode,
|
|
20
|
+
type CanonicalOpenOptions,
|
|
20
21
|
createManagedProxy,
|
|
22
|
+
getProgramVariant,
|
|
21
23
|
} from "./auto.js";
|
|
22
24
|
import type { CanonicalChannel } from "./client.js";
|
|
23
25
|
import type { CanonicalClient } from "./index.js";
|
|
@@ -242,7 +244,7 @@ export class PeerbitCanonicalClient {
|
|
|
242
244
|
|
|
243
245
|
async open<S extends Program<any>>(
|
|
244
246
|
storeOrAddress: S | Address,
|
|
245
|
-
openOptions:
|
|
247
|
+
openOptions: CanonicalOpenOptions<S> = {},
|
|
246
248
|
): Promise<S> {
|
|
247
249
|
const state = this.openState;
|
|
248
250
|
if (!state || state.adapters.length === 0) {
|
|
@@ -269,16 +271,29 @@ export class PeerbitCanonicalClient {
|
|
|
269
271
|
}
|
|
270
272
|
|
|
271
273
|
const program = storeOrAddress as Program<any>;
|
|
274
|
+
const programVariant = getProgramVariant(program);
|
|
272
275
|
const adapter = state.adapters.find((candidate) =>
|
|
273
|
-
candidate.canOpen
|
|
276
|
+
typeof candidate.canOpen === "function"
|
|
277
|
+
? candidate.canOpen(program)
|
|
278
|
+
: !!programVariant &&
|
|
279
|
+
(candidate.variants ?? (candidate.variant ? [candidate.variant] : []))
|
|
280
|
+
.map(String)
|
|
281
|
+
.includes(programVariant),
|
|
274
282
|
);
|
|
275
283
|
if (!adapter) {
|
|
284
|
+
const knownVariants = state.adapters
|
|
285
|
+
.flatMap((candidate) =>
|
|
286
|
+
candidate.variants ?? (candidate.variant ? [candidate.variant] : []),
|
|
287
|
+
)
|
|
288
|
+
.filter((x): x is string => typeof x === "string" && x.length > 0);
|
|
276
289
|
throw new Error(
|
|
277
|
-
`No canonical adapter registered for ${program.constructor?.name ?? "program"}
|
|
290
|
+
`No canonical adapter registered for ${program.constructor?.name ?? "program"}${
|
|
291
|
+
programVariant ? ` (variant: '${programVariant}')` : ""
|
|
292
|
+
}${knownVariants.length ? `. Known variants: ${knownVariants.join(", ")}` : ""}`,
|
|
278
293
|
);
|
|
279
294
|
}
|
|
280
295
|
|
|
281
|
-
const key = adapter.getKey?.(program as any, openOptions);
|
|
296
|
+
const key = adapter.getKey?.(program as any, openOptions as OpenOptions<any>);
|
|
282
297
|
if (adapter.getKey && key === undefined) {
|
|
283
298
|
throw new Error(
|
|
284
299
|
`Canonical adapter '${adapter.name}' requires a cache key (adapter.getKey returned undefined)`,
|
|
@@ -306,21 +321,21 @@ export class PeerbitCanonicalClient {
|
|
|
306
321
|
if (openOptions?.parent) {
|
|
307
322
|
PeerbitCanonicalClient.attachParent(
|
|
308
323
|
existingProxy as any,
|
|
309
|
-
openOptions.parent,
|
|
324
|
+
openOptions.parent as any,
|
|
310
325
|
);
|
|
311
326
|
}
|
|
312
327
|
return existingProxy as S;
|
|
313
328
|
}
|
|
314
329
|
}
|
|
315
330
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
331
|
+
const peer = this as any as ProgramClient;
|
|
332
|
+
const openPromise = (async () => {
|
|
333
|
+
const result = await adapter.open({
|
|
334
|
+
program: program as any,
|
|
335
|
+
options: openOptions as OpenOptions<any>,
|
|
336
|
+
peer,
|
|
337
|
+
client: this.canonical,
|
|
338
|
+
});
|
|
324
339
|
|
|
325
340
|
let managed: any;
|
|
326
341
|
managed = createManagedProxy(result.proxy as any, {
|
|
@@ -336,7 +351,7 @@ export class PeerbitCanonicalClient {
|
|
|
336
351
|
|
|
337
352
|
this.openState?.proxies.add(managed);
|
|
338
353
|
if (openOptions?.parent) {
|
|
339
|
-
PeerbitCanonicalClient.attachParent(managed, openOptions.parent);
|
|
354
|
+
PeerbitCanonicalClient.attachParent(managed, openOptions.parent as any);
|
|
340
355
|
}
|
|
341
356
|
return managed as S;
|
|
342
357
|
})();
|