@peerbit/program 4.0.7-a9206a8 → 4.0.7-cccc078
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/client.d.ts +6 -4
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +2 -2
- package/dist/src/client.js.map +1 -1
- package/dist/src/handler.d.ts.map +1 -1
- package/dist/src/handler.js +3 -3
- package/dist/src/handler.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/program.d.ts +6 -6
- package/dist/src/program.d.ts.map +1 -1
- package/dist/src/program.js +19 -14
- package/dist/src/program.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -22
- package/dist/src/utils.js.map +1 -1
- package/package.json +10 -9
- package/src/client.ts +13 -6
- package/src/handler.ts +19 -19
- package/src/index.ts +1 -1
- package/src/program.ts +50 -44
- package/src/utils.ts +2 -32
package/dist/src/client.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { PeerId as Libp2pPeerId } from "@libp2p/interface";
|
|
2
|
+
import type { Multiaddr } from "@multiformats/multiaddr";
|
|
3
|
+
import type { AnyStore } from "@peerbit/any-store-interface";
|
|
2
4
|
import { type Blocks } from "@peerbit/blocks-interface";
|
|
3
|
-
import { type
|
|
4
|
-
import {
|
|
5
|
+
import { type Ed25519PublicKey, type Identity } from "@peerbit/crypto";
|
|
6
|
+
import type { Indices } from "@peerbit/indexer-interface";
|
|
5
7
|
import { type Keychain } from "@peerbit/keychain";
|
|
6
|
-
import type
|
|
7
|
-
import type { Multiaddr } from "@multiformats/multiaddr";
|
|
8
|
+
import { type PubSub } from "@peerbit/pubsub-interface";
|
|
8
9
|
import type { Address } from "./address.js";
|
|
9
10
|
import type { CanOpen, ExtractArgs, Manageable, OpenOptions } from "./handler.js";
|
|
10
11
|
export interface Client<T extends Manageable<ExtractArgs<T>>> {
|
|
@@ -18,6 +19,7 @@ export interface Client<T extends Manageable<ExtractArgs<T>>> {
|
|
|
18
19
|
keychain: Keychain;
|
|
19
20
|
};
|
|
20
21
|
storage: AnyStore;
|
|
22
|
+
indexer: Indices;
|
|
21
23
|
start(): Promise<void>;
|
|
22
24
|
stop(): Promise<void>;
|
|
23
25
|
open<S extends T & CanOpen<ExtractArgs<S>>>(program: S | Address, options?: OpenOptions<S>): Promise<S>;
|
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EACX,OAAO,EACP,WAAW,EACX,UAAU,EACV,WAAW,EACX,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACrC,aAAa,EAAE,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,QAAQ,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,QAAQ,CAAC;KACnB,CAAC;IACF,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACzC,OAAO,EAAE,CAAC,GAAG,OAAO,EACpB,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,CAAC,CAAC;CACd"}
|
package/dist/src/client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {} from "@peerbit/blocks-interface";
|
|
2
|
-
import {} from "@peerbit/
|
|
3
|
-
import { Ed25519PublicKey } from "@peerbit/crypto";
|
|
2
|
+
import {} from "@peerbit/crypto";
|
|
4
3
|
import {} from "@peerbit/keychain";
|
|
4
|
+
import {} from "@peerbit/pubsub-interface";
|
|
5
5
|
//# sourceMappingURL=client.js.map
|
package/dist/src/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAwC,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAe,MAAM,2BAA2B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/src/handler.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {} from "@peerbit/blocks-interface";
|
|
2
|
-
import PQueue from "p-queue";
|
|
3
2
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
3
|
+
import PQueue from "p-queue";
|
|
4
4
|
export const logger = loggerFn({ module: "program-handler" });
|
|
5
5
|
export const addParent = (child, parent) => {
|
|
6
6
|
(child.parents || (child.parents = [])).push(parent);
|
|
@@ -76,7 +76,7 @@ export class Handler {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
else {
|
|
79
|
-
if (options.parent
|
|
79
|
+
if (options.parent === program) {
|
|
80
80
|
throw new Error("Parent program can not be equal to the program");
|
|
81
81
|
}
|
|
82
82
|
if (!program.closed) {
|
|
@@ -124,7 +124,7 @@ export class Handler {
|
|
|
124
124
|
return this._onProgamClose(p);
|
|
125
125
|
}
|
|
126
126
|
},
|
|
127
|
-
...options
|
|
127
|
+
...options,
|
|
128
128
|
// If the program opens more programs
|
|
129
129
|
// reset: options.reset,
|
|
130
130
|
});
|
package/dist/src/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,2BAA2B,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
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,OAAO,EACN,KAAK,4BAA4B,EACjC,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,4BAA4B,EACjC,KAAK,WAAW,GAChB,MAAM,cAAc,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/src/program.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { PublicSignKey } from "@peerbit/crypto";
|
|
2
1
|
import { type Constructor } from "@dao-xyz/borsh";
|
|
3
|
-
import { type TypedEventTarget } from "@libp2p/interface";
|
|
4
|
-
import { type Client } from "./client.js";
|
|
2
|
+
import { type PeerId as Libp2pPeerId, type TypedEventTarget } from "@libp2p/interface";
|
|
5
3
|
import { type Blocks } from "@peerbit/blocks-interface";
|
|
6
|
-
import {
|
|
4
|
+
import { PublicSignKey } from "@peerbit/crypto";
|
|
7
5
|
import { type Address } from "./address.js";
|
|
6
|
+
import { type Client } from "./client.js";
|
|
8
7
|
import { Handler, type Manageable, type ProgramInitializationOptions } from "./handler.js";
|
|
9
8
|
export type OpenProgram = (program: Program) => Promise<Program>;
|
|
10
9
|
export interface NetworkEvents {
|
|
@@ -36,6 +35,7 @@ export declare abstract class Program<Args = any, Events extends ProgramEvents =
|
|
|
36
35
|
private _address?;
|
|
37
36
|
get address(): Address;
|
|
38
37
|
set address(address: Address);
|
|
38
|
+
calculateAddress(): Promise<Address>;
|
|
39
39
|
get events(): TypedEventTarget<Events>;
|
|
40
40
|
get closed(): boolean;
|
|
41
41
|
set closed(closed: boolean);
|
|
@@ -75,6 +75,6 @@ export declare abstract class Program<Args = any, Events extends ProgramEvents =
|
|
|
75
75
|
}): Promise<P | undefined>;
|
|
76
76
|
static open<T extends Program<ExtractArgs<T>>>(this: Constructor<T>, address: string, node: ProgramClient, options?: ProgramInitializationOptions<ExtractArgs<T>, T>): Promise<T>;
|
|
77
77
|
}
|
|
78
|
-
export declare const getProgramFromVariants: <T extends Program
|
|
79
|
-
export declare const getProgramFromVariant: <T extends Program
|
|
78
|
+
export declare const getProgramFromVariants: <T extends Program>() => Constructor<T>[];
|
|
79
|
+
export declare const getProgramFromVariant: <T extends Program>(variant: string) => Constructor<T> | undefined;
|
|
80
80
|
//# sourceMappingURL=program.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAEN,KAAK,MAAM,IAAI,YAAY,EAE3B,KAAK,gBAAgB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,aAAa,EAA0B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAEN,OAAO,EACP,KAAK,UAAU,EACf,KAAK,4BAA4B,EAEjC,MAAM,cAAc,CAAC;AAyBtB,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3B,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa,EAAE,eAAe;CAAG;AAoBxE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5C,cAAM,cAAe,SAAQ,OAAO,CAAC,OAAO,CAAC;gBAChC,UAAU,EAAE;QAAE,MAAM,EAAE,aAAa,CAAA;KAAE;CAOjD;AACD,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAEnE,8BACsB,OAAO,CAC5B,IAAI,GAAG,GAAG,EACV,MAAM,SAAS,aAAa,GAAG,aAAa,CAC3C,YAAW,UAAU,CAAC,IAAI,CAAC;IAE5B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,YAAY,CAAwB;IAE5C,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,CAAU;IAE3B,IAAI,OAAO,IAAI,OAAO,CAOrB;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAE3B;IAEK,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK1C,IAAI,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAErC;IAED,IAAI,MAAM,IAAI,OAAO,CAKpB;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAEzB;IAED,IAAI,IAAI,IAAI,aAAa,CAExB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,EAE3B;IAED,OAAO,CAAC,aAAa,CAA2B;IAE1C,UAAU,CACf,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,4BAA4B,CAAC,IAAI,EAAE,IAAI,CAAC;IA+C7C,SAAS;IAUf,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzC,OAAO,CAAC,MAAM;YAIA,sBAAsB;YAmBtB,uBAAuB;IAmBrC,OAAO,CAAC,0BAA0B,CAExB;IACV,OAAO,CAAC,4BAA4B,CAE1B;YAEI,UAAU;YA8BV,GAAG;IA2CX,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,UAAQ;IAW7C;;;OAGG;IACG,OAAO,CACZ,KAAK,EAAE,aAAa,GAAG,YAAY,GAAG,CAAC,aAAa,GAAG,YAAY,CAAC,EAAE,EACtE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IA4DV,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAsBrD,IAAI,WAAW,IAAI,OAAO,EAAE,CAW3B;IAED,IAAI,QAAQ,IAAI,OAAO,EAAE,CAExB;IAED,KAAK,IAAI,IAAI;IAIb,SAAS,CAAC,IAAI,MAAM,EAAE;IAEhB,IAAI,CAAC,KAAK,GAAE,MAAkC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBjE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;WAOhB,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EACvC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB,GACC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAUZ,IAAI,CAAC,CAAC,SAAS,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAClD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC;CASb;AAED,eAAO,MAAM,sBAAsB,GAClC,CAAC,SAAS,OAAO,OACb,WAAW,CAAC,CAAC,CAAC,EAGlB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,OAAO,WAC7C,MAAM,KACb,WAAW,CAAC,CAAC,CAAC,GAAG,SAInB,CAAC"}
|
package/dist/src/program.js
CHANGED
|
@@ -5,17 +5,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
var Program_1;
|
|
8
|
-
import { PublicSignKey, getPublicKeyFromPeerId } from "@peerbit/crypto";
|
|
9
8
|
import { getSchema, variant } from "@dao-xyz/borsh";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {} from "
|
|
14
|
-
import {} from "@peerbit/
|
|
15
|
-
import {} from "@libp2p/interface";
|
|
16
|
-
import { SubscriptionEvent, UnsubcriptionEvent } from "@peerbit/pubsub-interface";
|
|
9
|
+
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
10
|
+
import { CustomEvent, TypedEventEmitter, } from "@libp2p/interface";
|
|
11
|
+
import { calculateRawCid } from "@peerbit/blocks-interface";
|
|
12
|
+
import { PublicSignKey, getPublicKeyFromPeerId } from "@peerbit/crypto";
|
|
13
|
+
import { SubscriptionEvent, UnsubcriptionEvent, } from "@peerbit/pubsub-interface";
|
|
17
14
|
import {} from "./address.js";
|
|
18
|
-
import {
|
|
15
|
+
import {} from "./client.js";
|
|
16
|
+
import { Handler, addParent, } from "./handler.js";
|
|
17
|
+
import { getValuesWithType } from "./utils.js";
|
|
19
18
|
const intersection = (a, b) => {
|
|
20
19
|
const newSet = new Map();
|
|
21
20
|
if (Array.isArray(b)) {
|
|
@@ -55,7 +54,7 @@ class ProgramHandler extends Handler {
|
|
|
55
54
|
super({
|
|
56
55
|
client: properties.client,
|
|
57
56
|
shouldMonitor: (p) => p instanceof Program,
|
|
58
|
-
load: Program.load
|
|
57
|
+
load: Program.load,
|
|
59
58
|
});
|
|
60
59
|
}
|
|
61
60
|
}
|
|
@@ -77,6 +76,10 @@ let Program = Program_1 = class Program {
|
|
|
77
76
|
set address(address) {
|
|
78
77
|
this._address = address;
|
|
79
78
|
}
|
|
79
|
+
async calculateAddress() {
|
|
80
|
+
this._address = await calculateRawCid(serialize(this));
|
|
81
|
+
return this._address;
|
|
82
|
+
}
|
|
80
83
|
get events() {
|
|
81
84
|
return this._events || (this._events = new TypedEventEmitter());
|
|
82
85
|
}
|
|
@@ -100,7 +103,7 @@ let Program = Program_1 = class Program {
|
|
|
100
103
|
// check that a discriminator exist
|
|
101
104
|
const schema = getSchema(this.constructor);
|
|
102
105
|
if (!schema || typeof schema.variant !== "string") {
|
|
103
|
-
throw new Error(`Expecting class to be decorated with a string variant. Example:\n
|
|
106
|
+
throw new Error(`Expecting class to be decorated with a string variant. Example:\n'import { variant } "@dao-xyz/borsh"\n@variant("example-db")\nclass ${this.constructor.name} { ...`);
|
|
104
107
|
}
|
|
105
108
|
await this.save(node.services.blocks);
|
|
106
109
|
if (getAllParentAddresses(this).includes(this.address)) {
|
|
@@ -196,12 +199,15 @@ let Program = Program_1 = class Program {
|
|
|
196
199
|
}
|
|
197
200
|
async end(type, from) {
|
|
198
201
|
if (this.closed) {
|
|
202
|
+
if (type === "drop") {
|
|
203
|
+
throw new Error("Program is closed, cannot drop");
|
|
204
|
+
}
|
|
199
205
|
return true;
|
|
200
206
|
}
|
|
201
207
|
let parentIdx = -1;
|
|
202
208
|
let close = true;
|
|
203
209
|
if (this.parents) {
|
|
204
|
-
parentIdx = this.parents.findIndex((x) => x
|
|
210
|
+
parentIdx = this.parents.findIndex((x) => x === from);
|
|
205
211
|
if (parentIdx !== -1) {
|
|
206
212
|
if (this.parents.length === 1) {
|
|
207
213
|
close = true;
|
|
@@ -333,8 +339,7 @@ let Program = Program_1 = class Program {
|
|
|
333
339
|
}
|
|
334
340
|
async save(store = this.node.services.blocks) {
|
|
335
341
|
const existingAddress = this._address;
|
|
336
|
-
|
|
337
|
-
this._address = hash;
|
|
342
|
+
this._address = await store.put(serialize(this));
|
|
338
343
|
if (!this.address) {
|
|
339
344
|
throw new Error("Unexpected");
|
|
340
345
|
}
|
package/dist/src/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,iBAAiB,GAAI,CAAC,QAC5B,GAAG,QACH,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,eACzB,WAAW,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAC/C,CAAC,EAgCH,CAAC"}
|
package/dist/src/utils.js
CHANGED
|
@@ -1,25 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const MAX_PROTOTYPE_SEARCH = 500;
|
|
3
|
-
const PROTOTYPE_DESERIALIZATION_HANDLER_OFFSET = 500;
|
|
4
|
-
const PROTOTYPE_DEPENDENCY_HANDLER_OFFSET = PROTOTYPE_DESERIALIZATION_HANDLER_OFFSET + MAX_PROTOTYPE_SEARCH;
|
|
5
|
-
const getDependencies = (ctor, offset) => ctor.prototype[PROTOTYPE_DEPENDENCY_HANDLER_OFFSET + offset];
|
|
6
|
-
const getSchemasBottomUp = (ctor) => {
|
|
7
|
-
let last = undefined;
|
|
8
|
-
const ret = [];
|
|
9
|
-
for (let i = 0; i < 1000; i++) {
|
|
10
|
-
const curr = getSchema(ctor, i);
|
|
11
|
-
if (!curr) {
|
|
12
|
-
if (last && !getDependencies(ctor, i)?.length) {
|
|
13
|
-
return ret;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
ret.push(curr);
|
|
18
|
-
last = curr;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return ret;
|
|
22
|
-
};
|
|
1
|
+
import { getSchemasBottomUp, } from "@dao-xyz/borsh";
|
|
23
2
|
export const getValuesWithType = (from, type, stopAtType) => {
|
|
24
3
|
const schemas = getSchemasBottomUp(from.constructor);
|
|
25
4
|
const values = [];
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,kBAAkB,GAClB,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,IAAS,EACT,IAAsC,EACtC,UAAiD,EAC3C,EAAE;IACR,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,SAAS;YACV,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE;gBAC1B,IAAI,OAAO,IAAI,OAAO,YAAY,IAAI,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,OAAY,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACxC,IAAI,UAAU,IAAI,OAAO,YAAY,UAAU,EAAE,CAAC;wBACjD,OAAO;oBACR,CAAC;oBACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBAClE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC7B,CAAC,CAAC,OAAO,CAAC,CAAC;gBACZ,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,CAAC,CAAC,KAAK,CAAC,CAAC;YACV,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/program",
|
|
3
|
-
"version": "4.0.7-
|
|
3
|
+
"version": "4.0.7-cccc078",
|
|
4
4
|
"description": "Program interface",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"eslintConfig": {
|
|
38
|
-
"extends": "
|
|
38
|
+
"extends": "peerbit",
|
|
39
39
|
"parserOptions": {
|
|
40
40
|
"project": true,
|
|
41
41
|
"sourceType": "module"
|
|
@@ -52,16 +52,17 @@
|
|
|
52
52
|
"scripts": {
|
|
53
53
|
"clean": "aegir clean",
|
|
54
54
|
"build": "aegir build --no-bundle",
|
|
55
|
-
"test": "aegir test"
|
|
55
|
+
"test": "aegir test",
|
|
56
|
+
"lint": "aegir lint"
|
|
56
57
|
},
|
|
57
58
|
"author": "dao.xyz",
|
|
58
59
|
"license": "MIT",
|
|
59
60
|
"dependencies": {
|
|
60
|
-
"@dao-xyz/borsh": "^5.2.
|
|
61
|
-
"@peerbit/crypto": "2.2.0-
|
|
62
|
-
"@peerbit/keychain": "1.0.17-
|
|
63
|
-
"@peerbit/blocks-interface": "1.2.19-
|
|
64
|
-
"@peerbit/pubsub-interface": "3.0.3-
|
|
65
|
-
"@peerbit/any-store-interface": "2.0.2-
|
|
61
|
+
"@dao-xyz/borsh": "^5.2.3",
|
|
62
|
+
"@peerbit/crypto": "2.2.0-cccc078",
|
|
63
|
+
"@peerbit/keychain": "1.0.17-cccc078",
|
|
64
|
+
"@peerbit/blocks-interface": "1.2.19-cccc078",
|
|
65
|
+
"@peerbit/pubsub-interface": "3.0.3-cccc078",
|
|
66
|
+
"@peerbit/any-store-interface": "2.0.2-cccc078"
|
|
66
67
|
}
|
|
67
68
|
}
|
package/src/client.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import type { PeerId as Libp2pPeerId } from "@libp2p/interface";
|
|
2
|
+
import type { Multiaddr } from "@multiformats/multiaddr";
|
|
3
|
+
import type { AnyStore } from "@peerbit/any-store-interface";
|
|
2
4
|
import { type Blocks } from "@peerbit/blocks-interface";
|
|
3
|
-
import { type
|
|
4
|
-
import {
|
|
5
|
+
import { type Ed25519PublicKey, type Identity } from "@peerbit/crypto";
|
|
6
|
+
import type { Indices } from "@peerbit/indexer-interface";
|
|
5
7
|
import { type Keychain } from "@peerbit/keychain";
|
|
6
|
-
import type
|
|
7
|
-
import type { Multiaddr } from "@multiformats/multiaddr";
|
|
8
|
+
import { type PubSub } from "@peerbit/pubsub-interface";
|
|
8
9
|
import type { Address } from "./address.js";
|
|
9
|
-
import type {
|
|
10
|
+
import type {
|
|
11
|
+
CanOpen,
|
|
12
|
+
ExtractArgs,
|
|
13
|
+
Manageable,
|
|
14
|
+
OpenOptions,
|
|
15
|
+
} from "./handler.js";
|
|
10
16
|
|
|
11
17
|
export interface Client<T extends Manageable<ExtractArgs<T>>> {
|
|
12
18
|
peerId: Libp2pPeerId;
|
|
@@ -19,10 +25,11 @@ export interface Client<T extends Manageable<ExtractArgs<T>>> {
|
|
|
19
25
|
keychain: Keychain;
|
|
20
26
|
};
|
|
21
27
|
storage: AnyStore;
|
|
28
|
+
indexer: Indices;
|
|
22
29
|
start(): Promise<void>;
|
|
23
30
|
stop(): Promise<void>;
|
|
24
31
|
open<S extends T & CanOpen<ExtractArgs<S>>>(
|
|
25
32
|
program: S | Address,
|
|
26
|
-
options?: OpenOptions<S
|
|
33
|
+
options?: OpenOptions<S>,
|
|
27
34
|
): Promise<S>;
|
|
28
35
|
}
|
package/src/handler.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Blocks } from "@peerbit/blocks-interface";
|
|
2
|
+
import { logger as loggerFn } from "@peerbit/logger";
|
|
2
3
|
import PQueue from "p-queue";
|
|
3
4
|
import type { Address } from "./address.js";
|
|
4
|
-
import { logger as loggerFn } from "@peerbit/logger";
|
|
5
5
|
|
|
6
6
|
export const logger = loggerFn({ module: "program-handler" });
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ export interface Saveable {
|
|
|
30
30
|
options?: {
|
|
31
31
|
format?: string;
|
|
32
32
|
timeout?: number;
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
34
|
): Promise<Address>;
|
|
35
35
|
|
|
36
36
|
delete(): Promise<void>;
|
|
@@ -76,10 +76,10 @@ export class Handler<T extends Manageable<any>> {
|
|
|
76
76
|
load: (
|
|
77
77
|
address: Address,
|
|
78
78
|
blocks: Blocks,
|
|
79
|
-
options?: { timeout?: number }
|
|
79
|
+
options?: { timeout?: number },
|
|
80
80
|
) => Promise<T | undefined>;
|
|
81
81
|
shouldMonitor: (thing: any) => boolean;
|
|
82
|
-
}
|
|
82
|
+
},
|
|
83
83
|
) {
|
|
84
84
|
this._openQueue = new Map();
|
|
85
85
|
this.items = new Map();
|
|
@@ -90,13 +90,13 @@ export class Handler<T extends Manageable<any>> {
|
|
|
90
90
|
[...this._openQueue.values()].map((x) => {
|
|
91
91
|
x.clear();
|
|
92
92
|
return x.onIdle();
|
|
93
|
-
})
|
|
93
|
+
}),
|
|
94
94
|
);
|
|
95
95
|
this._openQueue.clear();
|
|
96
96
|
|
|
97
97
|
// Close all open databases
|
|
98
98
|
await Promise.all(
|
|
99
|
-
[...this.items.values()].map((program) => program.close())
|
|
99
|
+
[...this.items.values()].map((program) => program.close()),
|
|
100
100
|
);
|
|
101
101
|
|
|
102
102
|
// Remove all databases from the state
|
|
@@ -112,7 +112,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
112
112
|
private async checkProcessExisting<S extends T>(
|
|
113
113
|
address: Address,
|
|
114
114
|
toOpen: Manageable<any>,
|
|
115
|
-
mergeSrategy: ProgramMergeStrategy = "reject"
|
|
115
|
+
mergeSrategy: ProgramMergeStrategy = "reject",
|
|
116
116
|
): Promise<S | undefined> {
|
|
117
117
|
const prev = this.items.get(address);
|
|
118
118
|
if (mergeSrategy === "reject") {
|
|
@@ -130,7 +130,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
130
130
|
|
|
131
131
|
async open<S extends T>(
|
|
132
132
|
storeOrAddress: S | Address | string,
|
|
133
|
-
options: OpenOptions<S> = {}
|
|
133
|
+
options: OpenOptions<S> = {},
|
|
134
134
|
): Promise<S> {
|
|
135
135
|
const fn = async (): Promise<S> => {
|
|
136
136
|
// TODO add locks for store lifecycle, e.g. what happens if we try to open and close a store at the same time?
|
|
@@ -141,7 +141,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
141
141
|
const existing = await this.checkProcessExisting(
|
|
142
142
|
storeOrAddress.toString(),
|
|
143
143
|
program,
|
|
144
|
-
options?.existing
|
|
144
|
+
options?.existing,
|
|
145
145
|
);
|
|
146
146
|
if (existing) {
|
|
147
147
|
return existing as S;
|
|
@@ -150,28 +150,28 @@ export class Handler<T extends Manageable<any>> {
|
|
|
150
150
|
program = (await this.properties.load(
|
|
151
151
|
storeOrAddress,
|
|
152
152
|
this.properties.client.services.blocks,
|
|
153
|
-
options
|
|
153
|
+
options,
|
|
154
154
|
)) as S; // TODO fix typings
|
|
155
155
|
|
|
156
156
|
if (!this.properties.shouldMonitor(program)) {
|
|
157
157
|
if (!program) {
|
|
158
158
|
throw new Error(
|
|
159
|
-
"Failed to resolve program with address: " + storeOrAddress
|
|
159
|
+
"Failed to resolve program with address: " + storeOrAddress,
|
|
160
160
|
);
|
|
161
161
|
}
|
|
162
162
|
throw new Error(
|
|
163
|
-
`Failed to open program because program is of type ${program?.constructor.name}
|
|
163
|
+
`Failed to open program because program is of type ${program?.constructor.name} `,
|
|
164
164
|
);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
} catch (error) {
|
|
168
168
|
logger.error(
|
|
169
|
-
"Failed to load store with address: " + storeOrAddress.toString()
|
|
169
|
+
"Failed to load store with address: " + storeOrAddress.toString(),
|
|
170
170
|
);
|
|
171
171
|
throw error;
|
|
172
172
|
}
|
|
173
173
|
} else {
|
|
174
|
-
if (options.parent
|
|
174
|
+
if (options.parent === program) {
|
|
175
175
|
throw new Error("Parent program can not be equal to the program");
|
|
176
176
|
}
|
|
177
177
|
|
|
@@ -185,7 +185,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
185
185
|
const existing = await this.checkProcessExisting(
|
|
186
186
|
program.address,
|
|
187
187
|
program,
|
|
188
|
-
options?.existing
|
|
188
|
+
options?.existing,
|
|
189
189
|
);
|
|
190
190
|
|
|
191
191
|
if (existing) {
|
|
@@ -205,13 +205,13 @@ export class Handler<T extends Manageable<any>> {
|
|
|
205
205
|
|
|
206
206
|
// TODO prevent resave if already saved
|
|
207
207
|
const address = await program.save(
|
|
208
|
-
this.properties.client.services.blocks
|
|
208
|
+
this.properties.client.services.blocks,
|
|
209
209
|
);
|
|
210
210
|
|
|
211
211
|
const existing = await this.checkProcessExisting(
|
|
212
212
|
address,
|
|
213
213
|
program,
|
|
214
|
-
options?.existing
|
|
214
|
+
options?.existing,
|
|
215
215
|
);
|
|
216
216
|
if (existing) {
|
|
217
217
|
return existing as S;
|
|
@@ -233,7 +233,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
233
233
|
return this._onProgamClose(p);
|
|
234
234
|
}
|
|
235
235
|
},
|
|
236
|
-
...options
|
|
236
|
+
...options,
|
|
237
237
|
// If the program opens more programs
|
|
238
238
|
// reset: options.reset,
|
|
239
239
|
});
|
|
@@ -254,7 +254,7 @@ export class Handler<T extends Manageable<any>> {
|
|
|
254
254
|
} else {
|
|
255
255
|
if (storeOrAddress.closed) {
|
|
256
256
|
address = await storeOrAddress.save(
|
|
257
|
-
this.properties.client.services.blocks
|
|
257
|
+
this.properties.client.services.blocks,
|
|
258
258
|
);
|
|
259
259
|
} else {
|
|
260
260
|
address = storeOrAddress.address;
|
package/src/index.ts
CHANGED
package/src/program.ts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import { PublicSignKey, getPublicKeyFromPeerId } from "@peerbit/crypto";
|
|
2
1
|
import { type Constructor, getSchema, variant } from "@dao-xyz/borsh";
|
|
3
|
-
import {
|
|
4
|
-
import { serialize, deserialize } from "@dao-xyz/borsh";
|
|
2
|
+
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
5
3
|
import {
|
|
6
|
-
type TypedEventTarget,
|
|
7
4
|
CustomEvent,
|
|
8
|
-
|
|
5
|
+
type PeerId as Libp2pPeerId,
|
|
6
|
+
TypedEventEmitter,
|
|
7
|
+
type TypedEventTarget,
|
|
9
8
|
} from "@libp2p/interface";
|
|
10
|
-
import { type
|
|
11
|
-
import {
|
|
12
|
-
import { type PeerId as Libp2pPeerId } from "@libp2p/interface";
|
|
9
|
+
import { type Blocks, calculateRawCid } from "@peerbit/blocks-interface";
|
|
10
|
+
import { PublicSignKey, getPublicKeyFromPeerId } from "@peerbit/crypto";
|
|
13
11
|
import {
|
|
14
12
|
SubscriptionEvent,
|
|
15
|
-
UnsubcriptionEvent
|
|
13
|
+
UnsubcriptionEvent,
|
|
16
14
|
} from "@peerbit/pubsub-interface";
|
|
17
15
|
import { type Address } from "./address.js";
|
|
16
|
+
import { type Client } from "./client.js";
|
|
18
17
|
import {
|
|
19
18
|
type EventOptions,
|
|
20
19
|
Handler,
|
|
21
20
|
type Manageable,
|
|
22
21
|
type ProgramInitializationOptions,
|
|
23
|
-
addParent
|
|
22
|
+
addParent,
|
|
24
23
|
} from "./handler.js";
|
|
24
|
+
import { getValuesWithType } from "./utils.js";
|
|
25
25
|
|
|
26
26
|
const intersection = (
|
|
27
27
|
a: Map<string, PublicSignKey> | undefined,
|
|
28
|
-
b: Map<string, PublicSignKey> | PublicSignKey[]
|
|
28
|
+
b: Map<string, PublicSignKey> | PublicSignKey[],
|
|
29
29
|
) => {
|
|
30
30
|
const newSet = new Map<string, PublicSignKey>();
|
|
31
31
|
|
|
@@ -58,7 +58,7 @@ export interface LifeCycleEvents {
|
|
|
58
58
|
close: CustomEvent<Program>;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
export interface ProgramEvents extends NetworkEvents, LifeCycleEvents {
|
|
61
|
+
export interface ProgramEvents extends NetworkEvents, LifeCycleEvents {}
|
|
62
62
|
|
|
63
63
|
const getAllParentAddresses = (p: Program): string[] => {
|
|
64
64
|
return getAllParent(p, [])
|
|
@@ -84,7 +84,7 @@ class ProgramHandler extends Handler<Program> {
|
|
|
84
84
|
super({
|
|
85
85
|
client: properties.client,
|
|
86
86
|
shouldMonitor: (p) => p instanceof Program,
|
|
87
|
-
load: Program.load
|
|
87
|
+
load: Program.load,
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -95,7 +95,7 @@ type ExtractArgs<T> = T extends Program<infer Args> ? Args : never;
|
|
|
95
95
|
@variant(0)
|
|
96
96
|
export abstract class Program<
|
|
97
97
|
Args = any,
|
|
98
|
-
Events extends ProgramEvents = ProgramEvents
|
|
98
|
+
Events extends ProgramEvents = ProgramEvents,
|
|
99
99
|
> implements Manageable<Args>
|
|
100
100
|
{
|
|
101
101
|
private _node: ProgramClient;
|
|
@@ -112,7 +112,7 @@ export abstract class Program<
|
|
|
112
112
|
get address(): Address {
|
|
113
113
|
if (!this._address) {
|
|
114
114
|
throw new Error(
|
|
115
|
-
"Address does not exist, please open or save this program once to obtain it"
|
|
115
|
+
"Address does not exist, please open or save this program once to obtain it",
|
|
116
116
|
);
|
|
117
117
|
}
|
|
118
118
|
return this._address;
|
|
@@ -122,6 +122,11 @@ export abstract class Program<
|
|
|
122
122
|
this._address = address;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
async calculateAddress(): Promise<Address> {
|
|
126
|
+
this._address = await calculateRawCid(serialize(this));
|
|
127
|
+
return this._address;
|
|
128
|
+
}
|
|
129
|
+
|
|
125
130
|
get events(): TypedEventTarget<Events> {
|
|
126
131
|
return this._events || (this._events = new TypedEventEmitter<Events>());
|
|
127
132
|
}
|
|
@@ -148,20 +153,20 @@ export abstract class Program<
|
|
|
148
153
|
|
|
149
154
|
async beforeOpen(
|
|
150
155
|
node: ProgramClient,
|
|
151
|
-
options?: ProgramInitializationOptions<Args, this
|
|
156
|
+
options?: ProgramInitializationOptions<Args, this>,
|
|
152
157
|
) {
|
|
153
158
|
// check that a discriminator exist
|
|
154
159
|
const schema = getSchema(this.constructor);
|
|
155
160
|
if (!schema || typeof schema.variant !== "string") {
|
|
156
161
|
throw new Error(
|
|
157
|
-
`Expecting class to be decorated with a string variant. Example:\n
|
|
162
|
+
`Expecting class to be decorated with a string variant. Example:\n'import { variant } "@dao-xyz/borsh"\n@variant("example-db")\nclass ${this.constructor.name} { ...`,
|
|
158
163
|
);
|
|
159
164
|
}
|
|
160
165
|
|
|
161
166
|
await this.save(node.services.blocks);
|
|
162
167
|
if (getAllParentAddresses(this as Program).includes(this.address)) {
|
|
163
168
|
throw new Error(
|
|
164
|
-
"Subprogram has same address as some parent program. This is not currently supported"
|
|
169
|
+
"Subprogram has same address as some parent program. This is not currently supported",
|
|
165
170
|
);
|
|
166
171
|
}
|
|
167
172
|
|
|
@@ -182,14 +187,14 @@ export abstract class Program<
|
|
|
182
187
|
await this.node.services.pubsub.addEventListener(
|
|
183
188
|
"subscribe",
|
|
184
189
|
this._subscriptionEventListener ||
|
|
185
|
-
|
|
186
|
-
|
|
190
|
+
(this._subscriptionEventListener = (s) =>
|
|
191
|
+
!this.closed && this._emitJoinNetworkEvents(s.detail)),
|
|
187
192
|
);
|
|
188
193
|
await this.node.services.pubsub.addEventListener(
|
|
189
194
|
"unsubscribe",
|
|
190
195
|
this._unsubscriptionEventListener ||
|
|
191
|
-
|
|
192
|
-
|
|
196
|
+
(this._unsubscriptionEventListener = (s) =>
|
|
197
|
+
!this.closed && this._emitLeaveNetworkEvents(s.detail)),
|
|
193
198
|
);
|
|
194
199
|
|
|
195
200
|
await this._eventOptions?.onBeforeOpen?.(this);
|
|
@@ -221,7 +226,7 @@ export abstract class Program<
|
|
|
221
226
|
for (const topic of allTopics) {
|
|
222
227
|
if (
|
|
223
228
|
!(await this.node.services.pubsub.getSubscribers(topic))?.find((x) =>
|
|
224
|
-
s.from.equals(x)
|
|
229
|
+
s.from.equals(x),
|
|
225
230
|
)
|
|
226
231
|
) {
|
|
227
232
|
return;
|
|
@@ -240,7 +245,7 @@ export abstract class Program<
|
|
|
240
245
|
for (const topic of allTopics) {
|
|
241
246
|
if (
|
|
242
247
|
(await this.node.services.pubsub.getSubscribers(topic))?.find((x) =>
|
|
243
|
-
s.from.equals(x)
|
|
248
|
+
s.from.equals(x),
|
|
244
249
|
)
|
|
245
250
|
) {
|
|
246
251
|
return;
|
|
@@ -250,10 +255,10 @@ export abstract class Program<
|
|
|
250
255
|
}
|
|
251
256
|
|
|
252
257
|
private _subscriptionEventListener: (
|
|
253
|
-
e: CustomEvent<SubscriptionEvent
|
|
258
|
+
e: CustomEvent<SubscriptionEvent>,
|
|
254
259
|
) => void;
|
|
255
260
|
private _unsubscriptionEventListener: (
|
|
256
|
-
e: CustomEvent<UnsubcriptionEvent
|
|
261
|
+
e: CustomEvent<UnsubcriptionEvent>,
|
|
257
262
|
) => void;
|
|
258
263
|
|
|
259
264
|
private async processEnd(type: "drop" | "close") {
|
|
@@ -288,13 +293,16 @@ export abstract class Program<
|
|
|
288
293
|
|
|
289
294
|
private async end(type: "drop" | "close", from?: Program): Promise<boolean> {
|
|
290
295
|
if (this.closed) {
|
|
296
|
+
if (type === "drop") {
|
|
297
|
+
throw new Error("Program is closed, cannot drop");
|
|
298
|
+
}
|
|
291
299
|
return true;
|
|
292
300
|
}
|
|
293
301
|
|
|
294
302
|
let parentIdx = -1;
|
|
295
303
|
let close = true;
|
|
296
304
|
if (this.parents) {
|
|
297
|
-
parentIdx = this.parents.findIndex((x) => x
|
|
305
|
+
parentIdx = this.parents.findIndex((x) => x === from);
|
|
298
306
|
if (parentIdx !== -1) {
|
|
299
307
|
if (this.parents.length === 1) {
|
|
300
308
|
close = true;
|
|
@@ -311,11 +319,11 @@ export abstract class Program<
|
|
|
311
319
|
if (end) {
|
|
312
320
|
this.node?.services.pubsub.removeEventListener(
|
|
313
321
|
"subscribe",
|
|
314
|
-
this._subscriptionEventListener
|
|
322
|
+
this._subscriptionEventListener,
|
|
315
323
|
);
|
|
316
324
|
this.node?.services.pubsub.removeEventListener(
|
|
317
325
|
"unsubscribe",
|
|
318
|
-
this._unsubscriptionEventListener
|
|
326
|
+
this._unsubscriptionEventListener,
|
|
319
327
|
);
|
|
320
328
|
|
|
321
329
|
this._eventOptions = undefined;
|
|
@@ -355,22 +363,22 @@ export abstract class Program<
|
|
|
355
363
|
*/
|
|
356
364
|
async waitFor(
|
|
357
365
|
other: PublicSignKey | Libp2pPeerId | (PublicSignKey | Libp2pPeerId)[],
|
|
358
|
-
options?: { signal?: AbortSignal; timeout?: number }
|
|
366
|
+
options?: { signal?: AbortSignal; timeout?: number },
|
|
359
367
|
): Promise<void> {
|
|
360
368
|
const ids = Array.isArray(other) ? other : [other];
|
|
361
369
|
const expectedHashes = new Set(
|
|
362
370
|
ids.map((x) =>
|
|
363
371
|
x instanceof PublicSignKey
|
|
364
372
|
? x.hashcode()
|
|
365
|
-
: getPublicKeyFromPeerId(x).hashcode()
|
|
366
|
-
)
|
|
373
|
+
: getPublicKeyFromPeerId(x).hashcode(),
|
|
374
|
+
),
|
|
367
375
|
);
|
|
368
376
|
|
|
369
377
|
// make sure nodes are reachable
|
|
370
378
|
await Promise.all(
|
|
371
379
|
ids.map((x) =>
|
|
372
|
-
this.node.services.pubsub.waitFor(x, { signal: options?.signal })
|
|
373
|
-
)
|
|
380
|
+
this.node.services.pubsub.waitFor(x, { signal: options?.signal }),
|
|
381
|
+
),
|
|
374
382
|
);
|
|
375
383
|
|
|
376
384
|
// wait for subscribing to topics
|
|
@@ -381,7 +389,7 @@ export abstract class Program<
|
|
|
381
389
|
options?.signal?.removeEventListener("abort", abortListener);
|
|
382
390
|
reject(new Error("Timeout"));
|
|
383
391
|
},
|
|
384
|
-
options?.timeout || 10 * 1000
|
|
392
|
+
options?.timeout || 10 * 1000,
|
|
385
393
|
);
|
|
386
394
|
|
|
387
395
|
const abortListener = (e: Event) => {
|
|
@@ -463,16 +471,14 @@ export abstract class Program<
|
|
|
463
471
|
|
|
464
472
|
async save(store: Blocks = this.node.services.blocks): Promise<Address> {
|
|
465
473
|
const existingAddress = this._address;
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
this._address = hash;
|
|
474
|
+
this._address = await store.put(serialize(this));
|
|
469
475
|
if (!this.address) {
|
|
470
476
|
throw new Error("Unexpected");
|
|
471
477
|
}
|
|
472
478
|
|
|
473
479
|
if (existingAddress && existingAddress !== this.address) {
|
|
474
480
|
throw new Error(
|
|
475
|
-
"Program properties has been changed after constructor so that the hash has changed. Make sure that the 'setup(...)' function does not modify any properties that are to be serialized"
|
|
481
|
+
"Program properties has been changed after constructor so that the hash has changed. Make sure that the 'setup(...)' function does not modify any properties that are to be serialized",
|
|
476
482
|
);
|
|
477
483
|
}
|
|
478
484
|
|
|
@@ -491,7 +497,7 @@ export abstract class Program<
|
|
|
491
497
|
store: Blocks,
|
|
492
498
|
options?: {
|
|
493
499
|
timeout?: number;
|
|
494
|
-
}
|
|
500
|
+
},
|
|
495
501
|
): Promise<P | undefined> {
|
|
496
502
|
const bytes = await store.get(address, options);
|
|
497
503
|
if (!bytes) {
|
|
@@ -506,7 +512,7 @@ export abstract class Program<
|
|
|
506
512
|
this: Constructor<T>,
|
|
507
513
|
address: string,
|
|
508
514
|
node: ProgramClient,
|
|
509
|
-
options?: ProgramInitializationOptions<ExtractArgs<T>, T
|
|
515
|
+
options?: ProgramInitializationOptions<ExtractArgs<T>, T>,
|
|
510
516
|
): Promise<T> {
|
|
511
517
|
const p = await Program.load<T>(address, node.services.blocks);
|
|
512
518
|
|
|
@@ -519,16 +525,16 @@ export abstract class Program<
|
|
|
519
525
|
}
|
|
520
526
|
|
|
521
527
|
export const getProgramFromVariants = <
|
|
522
|
-
T extends Program
|
|
528
|
+
T extends Program,
|
|
523
529
|
>(): Constructor<T>[] => {
|
|
524
530
|
const deps = (Program.prototype as any)[1000]; /// TODO improve BORSH lib to provide all necessary utility methods
|
|
525
531
|
return (deps || []) as Constructor<T>[];
|
|
526
532
|
};
|
|
527
533
|
|
|
528
534
|
export const getProgramFromVariant = <T extends Program>(
|
|
529
|
-
variant: string
|
|
535
|
+
variant: string,
|
|
530
536
|
): Constructor<T> | undefined => {
|
|
531
537
|
return getProgramFromVariants().filter(
|
|
532
|
-
(x) => getSchema(x).variant === variant
|
|
538
|
+
(x) => getSchema(x).variant === variant,
|
|
533
539
|
)[0] as Constructor<T>;
|
|
534
540
|
};
|
package/src/utils.ts
CHANGED
|
@@ -1,43 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type AbstractType,
|
|
3
3
|
type Constructor,
|
|
4
|
-
|
|
5
|
-
StructKind
|
|
4
|
+
getSchemasBottomUp,
|
|
6
5
|
} from "@dao-xyz/borsh";
|
|
7
6
|
|
|
8
|
-
const MAX_PROTOTYPE_SEARCH = 500;
|
|
9
|
-
const PROTOTYPE_DESERIALIZATION_HANDLER_OFFSET = 500;
|
|
10
|
-
const PROTOTYPE_DEPENDENCY_HANDLER_OFFSET =
|
|
11
|
-
PROTOTYPE_DESERIALIZATION_HANDLER_OFFSET + MAX_PROTOTYPE_SEARCH;
|
|
12
|
-
const getDependencies = <T>(
|
|
13
|
-
ctor: Constructor<T> | AbstractType<T>,
|
|
14
|
-
offset: number
|
|
15
|
-
): Constructor<T> | AbstractType<T> | undefined =>
|
|
16
|
-
ctor.prototype[PROTOTYPE_DEPENDENCY_HANDLER_OFFSET + offset];
|
|
17
|
-
|
|
18
|
-
const getSchemasBottomUp = <T>(
|
|
19
|
-
ctor: Constructor<T> | AbstractType<T>
|
|
20
|
-
): StructKind[] => {
|
|
21
|
-
let last: StructKind | undefined = undefined;
|
|
22
|
-
const ret: StructKind[] = [];
|
|
23
|
-
for (let i = 0; i < 1000; i++) {
|
|
24
|
-
const curr = getSchema(ctor, i);
|
|
25
|
-
if (!curr) {
|
|
26
|
-
if (last && !getDependencies(ctor, i)?.length) {
|
|
27
|
-
return ret;
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
ret.push(curr);
|
|
31
|
-
last = curr;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return ret;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
7
|
export const getValuesWithType = <T>(
|
|
38
8
|
from: any,
|
|
39
9
|
type: Constructor<T> | AbstractType<T>,
|
|
40
|
-
stopAtType?: Constructor<any> | AbstractType<any
|
|
10
|
+
stopAtType?: Constructor<any> | AbstractType<any>,
|
|
41
11
|
): T[] => {
|
|
42
12
|
const schemas = getSchemasBottomUp(from.constructor);
|
|
43
13
|
const values: T[] = [];
|