@holochain/client 0.3.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.
Files changed (53) hide show
  1. package/README.md +92 -0
  2. package/lib/api/admin.d.ts +224 -0
  3. package/lib/api/admin.js +12 -0
  4. package/lib/api/admin.js.map +1 -0
  5. package/lib/api/app.d.ts +32 -0
  6. package/lib/api/app.js +3 -0
  7. package/lib/api/app.js.map +1 -0
  8. package/lib/api/common.d.ts +16 -0
  9. package/lib/api/common.js +21 -0
  10. package/lib/api/common.js.map +1 -0
  11. package/lib/api/state-dump.d.ts +36 -0
  12. package/lib/api/state-dump.js +3 -0
  13. package/lib/api/state-dump.js.map +1 -0
  14. package/lib/api/types.d.ts +39 -0
  15. package/lib/api/types.js +8 -0
  16. package/lib/api/types.js.map +1 -0
  17. package/lib/environments/launcher.d.ts +8 -0
  18. package/lib/environments/launcher.js +42 -0
  19. package/lib/environments/launcher.js.map +1 -0
  20. package/lib/index.d.ts +5 -0
  21. package/lib/index.js +18 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/types/capabilities.d.ts +30 -0
  24. package/lib/types/capabilities.js +3 -0
  25. package/lib/types/capabilities.js.map +1 -0
  26. package/lib/types/common.d.ts +22 -0
  27. package/lib/types/common.js +3 -0
  28. package/lib/types/common.js.map +1 -0
  29. package/lib/types/dht-ops.d.ts +45 -0
  30. package/lib/types/dht-ops.js +42 -0
  31. package/lib/types/dht-ops.js.map +1 -0
  32. package/lib/types/entry.d.ts +16 -0
  33. package/lib/types/entry.js +3 -0
  34. package/lib/types/entry.js.map +1 -0
  35. package/lib/types/header.d.ts +108 -0
  36. package/lib/types/header.js +17 -0
  37. package/lib/types/header.js.map +1 -0
  38. package/lib/types/index.d.ts +5 -0
  39. package/lib/types/index.js +18 -0
  40. package/lib/types/index.js.map +1 -0
  41. package/lib/websocket/admin.d.ts +47 -0
  42. package/lib/websocket/admin.js +127 -0
  43. package/lib/websocket/admin.js.map +1 -0
  44. package/lib/websocket/app.d.ts +13 -0
  45. package/lib/websocket/app.js +70 -0
  46. package/lib/websocket/app.js.map +1 -0
  47. package/lib/websocket/client.d.ts +25 -0
  48. package/lib/websocket/client.js +129 -0
  49. package/lib/websocket/client.js.map +1 -0
  50. package/lib/websocket/common.d.ts +3 -0
  51. package/lib/websocket/common.js +34 -0
  52. package/lib/websocket/common.js.map +1 -0
  53. package/package.json +49 -0
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { CreateLink, Delete, DeleteLink, Header, NewEntryHeader, Update } from "./header";
2
+ import { Entry } from "./entry";
3
+ import { Signature } from "./common";
4
+ export declare enum DhtOpType {
5
+ StoreElement = "StoreElement",
6
+ StoreEntry = "StoreEntry",
7
+ RegisterAgentActivity = "RegisterAgentActivity",
8
+ RegisterUpdatedContent = "RegisterUpdatedContent",
9
+ RegisterUpdatedElement = "RegisterUpdatedElement",
10
+ RegisterDeletedBy = "RegisterDeletedBy",
11
+ RegisterDeletedEntryHeader = "RegisterDeletedEntryHeader",
12
+ RegisterAddLink = "RegisterAddLink",
13
+ RegisterRemoveLink = "RegisterRemoveLink"
14
+ }
15
+ export declare type DhtOp = {
16
+ [DhtOpType.StoreElement]: [Signature, Header, Entry | undefined];
17
+ } | {
18
+ [DhtOpType.StoreEntry]: [Signature, NewEntryHeader, Entry];
19
+ } | {
20
+ [DhtOpType.RegisterAgentActivity]: [Signature, Header];
21
+ } | {
22
+ [DhtOpType.RegisterUpdatedContent]: [
23
+ Signature,
24
+ Update,
25
+ Entry | undefined
26
+ ];
27
+ } | {
28
+ [DhtOpType.RegisterUpdatedElement]: [
29
+ Signature,
30
+ Update,
31
+ Entry | undefined
32
+ ];
33
+ } | {
34
+ [DhtOpType.RegisterDeletedBy]: [Signature, Delete];
35
+ } | {
36
+ [DhtOpType.RegisterDeletedEntryHeader]: [Signature, Delete];
37
+ } | {
38
+ [DhtOpType.RegisterAddLink]: [Signature, CreateLink];
39
+ } | {
40
+ [DhtOpType.RegisterRemoveLink]: [Signature, DeleteLink];
41
+ };
42
+ export declare function getDhtOpType(op: DhtOp): DhtOpType;
43
+ export declare function getDhtOpHeader(op: DhtOp): Header;
44
+ export declare function getDhtOpEntry(op: DhtOp): Entry | undefined;
45
+ export declare function getDhtOpSignature(op: DhtOp): Signature;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDhtOpSignature = exports.getDhtOpEntry = exports.getDhtOpHeader = exports.getDhtOpType = exports.DhtOpType = void 0;
4
+ // https://github.com/holochain/holochain/blob/develop/crates/types/src/dht_op.rs
5
+ var DhtOpType;
6
+ (function (DhtOpType) {
7
+ DhtOpType["StoreElement"] = "StoreElement";
8
+ DhtOpType["StoreEntry"] = "StoreEntry";
9
+ DhtOpType["RegisterAgentActivity"] = "RegisterAgentActivity";
10
+ DhtOpType["RegisterUpdatedContent"] = "RegisterUpdatedContent";
11
+ DhtOpType["RegisterUpdatedElement"] = "RegisterUpdatedElement";
12
+ DhtOpType["RegisterDeletedBy"] = "RegisterDeletedBy";
13
+ DhtOpType["RegisterDeletedEntryHeader"] = "RegisterDeletedEntryHeader";
14
+ DhtOpType["RegisterAddLink"] = "RegisterAddLink";
15
+ DhtOpType["RegisterRemoveLink"] = "RegisterRemoveLink";
16
+ })(DhtOpType = exports.DhtOpType || (exports.DhtOpType = {}));
17
+ function getDhtOpType(op) {
18
+ return Object.keys(op)[0];
19
+ }
20
+ exports.getDhtOpType = getDhtOpType;
21
+ function getDhtOpHeader(op) {
22
+ const header = Object.values(op)[0][1];
23
+ if (header.author)
24
+ return header;
25
+ else {
26
+ const headerType = Object.keys(header)[0];
27
+ return {
28
+ type: headerType,
29
+ ...header[headerType],
30
+ };
31
+ }
32
+ }
33
+ exports.getDhtOpHeader = getDhtOpHeader;
34
+ function getDhtOpEntry(op) {
35
+ return Object.values(op)[0][2];
36
+ }
37
+ exports.getDhtOpEntry = getDhtOpEntry;
38
+ function getDhtOpSignature(op) {
39
+ return Object.values(op)[0][1];
40
+ }
41
+ exports.getDhtOpSignature = getDhtOpSignature;
42
+ //# sourceMappingURL=dht-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dht-ops.js","sourceRoot":"","sources":["../../src/types/dht-ops.ts"],"names":[],"mappings":";;;AAcA,iFAAiF;AAEjF,IAAY,SAUX;AAVD,WAAY,SAAS;IACnB,0CAA6B,CAAA;IAC7B,sCAAyB,CAAA;IACzB,4DAA+C,CAAA;IAC/C,8DAAiD,CAAA;IACjD,8DAAiD,CAAA;IACjD,oDAAuC,CAAA;IACvC,sEAAyD,CAAA;IACzD,gDAAmC,CAAA;IACnC,sDAAyC,CAAA;AAC3C,CAAC,EAVW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAUpB;AAyBD,SAAgB,YAAY,CAAC,EAAS;IACpC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAc,CAAA;AACxC,CAAC;AAFD,oCAEC;AAED,SAAgB,cAAc,CAAC,EAAS;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtC,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAA;SAC3B;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,GAAG,MAAM,CAAC,UAAU,CAAC;SACtB,CAAA;KACF;AACH,CAAC;AAXD,wCAWC;AAED,SAAgB,aAAa,CAAC,EAAS;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC;AAFD,sCAEC;AAED,SAAgB,iBAAiB,CAAC,EAAS;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC;AAFD,8CAEC"}
@@ -0,0 +1,16 @@
1
+ import { CapClaim, ZomeCallCapGrant } from "./capabilities";
2
+ import { AgentPubKey } from "./common";
3
+ export declare type EntryVisibility = "Public" | "Private";
4
+ export declare type AppEntryType = {
5
+ id: number;
6
+ zome_id: number;
7
+ visibility: EntryVisibility;
8
+ };
9
+ export declare type EntryType = "Agent" | {
10
+ App: AppEntryType;
11
+ } | "CapClaim" | "CapGrant";
12
+ export interface EntryContent<E extends string, C> {
13
+ entry_type: E;
14
+ entry: C;
15
+ }
16
+ export declare type Entry = EntryContent<"Agent", AgentPubKey> | EntryContent<"App", any> | EntryContent<"CapGrant", ZomeCallCapGrant> | EntryContent<"CapClaim", CapClaim>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/types/entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
1
+ import { AgentPubKey, DnaHash, EntryHash, HeaderHash, Signature } from "./common";
2
+ import { EntryType } from "./entry";
3
+ import { HoloHashed, Timestamp } from "./common";
4
+ export interface SignedHeaderHashed<H extends Header = Header> {
5
+ header: HoloHashed<H>;
6
+ signature: Signature;
7
+ }
8
+ export declare type HeaderHashed = HoloHashed<Header>;
9
+ export declare enum HeaderType {
10
+ Dna = "Dna",
11
+ AgentValidationPkg = "AgentValidationPkg",
12
+ InitZomesComplete = "InitZomesComplete",
13
+ CreateLink = "CreateLink",
14
+ DeleteLink = "DeleteLink",
15
+ OpenChain = "OpenChain",
16
+ CloseChain = "CloseChain",
17
+ Create = "Create",
18
+ Update = "Update",
19
+ Delete = "Delete"
20
+ }
21
+ export declare type Header = Dna | AgentValidationPkg | InitZomesComplete | CreateLink | DeleteLink | OpenChain | CloseChain | Delete | NewEntryHeader;
22
+ export declare type NewEntryHeader = Create | Update;
23
+ export interface Dna {
24
+ type: HeaderType.Dna;
25
+ author: AgentPubKey;
26
+ timestamp: Timestamp;
27
+ hash: DnaHash;
28
+ }
29
+ export interface AgentValidationPkg {
30
+ type: HeaderType.AgentValidationPkg;
31
+ author: AgentPubKey;
32
+ timestamp: Timestamp;
33
+ header_seq: number;
34
+ prev_header: HeaderHash;
35
+ membrane_proof: any;
36
+ }
37
+ export interface InitZomesComplete {
38
+ type: HeaderType.InitZomesComplete;
39
+ author: AgentPubKey;
40
+ timestamp: Timestamp;
41
+ header_seq: number;
42
+ prev_header: HeaderHash;
43
+ }
44
+ export interface CreateLink {
45
+ type: HeaderType.CreateLink;
46
+ author: AgentPubKey;
47
+ timestamp: Timestamp;
48
+ header_seq: number;
49
+ prev_header: HeaderHash;
50
+ base_address: EntryHash;
51
+ target_address: EntryHash;
52
+ zome_id: number;
53
+ tag: any;
54
+ }
55
+ export interface DeleteLink {
56
+ type: HeaderType.DeleteLink;
57
+ author: AgentPubKey;
58
+ timestamp: Timestamp;
59
+ header_seq: number;
60
+ prev_header: HeaderHash;
61
+ base_address: EntryHash;
62
+ link_add_address: HeaderHash;
63
+ }
64
+ export interface OpenChain {
65
+ type: HeaderType.OpenChain;
66
+ author: AgentPubKey;
67
+ timestamp: Timestamp;
68
+ header_seq: number;
69
+ prev_header: HeaderHash;
70
+ prev_dna_hash: DnaHash;
71
+ }
72
+ export interface CloseChain {
73
+ type: HeaderType.CloseChain;
74
+ author: AgentPubKey;
75
+ timestamp: Timestamp;
76
+ header_seq: number;
77
+ prev_header: HeaderHash;
78
+ new_dna_hash: DnaHash;
79
+ }
80
+ export interface Update {
81
+ type: HeaderType.Update;
82
+ author: AgentPubKey;
83
+ timestamp: Timestamp;
84
+ header_seq: number;
85
+ prev_header: HeaderHash;
86
+ original_header_address: HeaderHash;
87
+ original_entry_address: EntryHash;
88
+ entry_type: EntryType;
89
+ entry_hash: EntryHash;
90
+ }
91
+ export interface Delete {
92
+ type: HeaderType.Delete;
93
+ author: AgentPubKey;
94
+ timestamp: Timestamp;
95
+ header_seq: number;
96
+ prev_header: HeaderHash;
97
+ deletes_address: HeaderHash;
98
+ deletes_entry_address: EntryHash;
99
+ }
100
+ export interface Create {
101
+ type: HeaderType.Create;
102
+ author: AgentPubKey;
103
+ timestamp: Timestamp;
104
+ header_seq: number;
105
+ prev_header: HeaderHash;
106
+ entry_type: EntryType;
107
+ entry_hash: EntryHash;
108
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeaderType = void 0;
4
+ var HeaderType;
5
+ (function (HeaderType) {
6
+ HeaderType["Dna"] = "Dna";
7
+ HeaderType["AgentValidationPkg"] = "AgentValidationPkg";
8
+ HeaderType["InitZomesComplete"] = "InitZomesComplete";
9
+ HeaderType["CreateLink"] = "CreateLink";
10
+ HeaderType["DeleteLink"] = "DeleteLink";
11
+ HeaderType["OpenChain"] = "OpenChain";
12
+ HeaderType["CloseChain"] = "CloseChain";
13
+ HeaderType["Create"] = "Create";
14
+ HeaderType["Update"] = "Update";
15
+ HeaderType["Delete"] = "Delete";
16
+ })(HeaderType = exports.HeaderType || (exports.HeaderType = {}));
17
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/types/header.ts"],"names":[],"mappings":";;;AAiBA,IAAY,UAWX;AAXD,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,uDAAyC,CAAA;IACzC,qDAAuC,CAAA;IACvC,uCAAyB,CAAA;IACzB,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,uCAAyB,CAAA;IACzB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;AACnB,CAAC,EAXW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAWrB"}
@@ -0,0 +1,5 @@
1
+ export * from "./capabilities";
2
+ export * from "./common";
3
+ export * from "./dht-ops";
4
+ export * from "./entry";
5
+ export * from "./header";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./capabilities"), exports);
14
+ __exportStar(require("./common"), exports);
15
+ __exportStar(require("./dht-ops"), exports);
16
+ __exportStar(require("./entry"), exports);
17
+ __exportStar(require("./header"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,2CAAwB;AACxB,4CAAyB;AACzB,0CAAuB;AACvB,2CAAwB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Defines AdminWebsocket, an easy-to-use websocket implementation of the
3
+ * Conductor Admin API
4
+ *
5
+ * const client = AdminWebsocket.connect(
6
+ * 'ws://localhost:9000'
7
+ * )
8
+ *
9
+ * client.generateAgentPubKey()
10
+ * .then(agentPubKey => {
11
+ * console.log('Agent successfully generated:', agentPubKey)
12
+ * })
13
+ * .catch(err => {
14
+ * console.error('problem generating agent:', err)
15
+ * })
16
+ */
17
+ import * as Api from '../api/admin';
18
+ import { WsClient } from './client';
19
+ import { Transformer, Requester } from '../api/common';
20
+ export declare class AdminWebsocket implements Api.AdminApi {
21
+ client: WsClient;
22
+ defaultTimeout: number;
23
+ constructor(client: WsClient, defaultTimeout?: number);
24
+ static connect(url: string, defaultTimeout?: number): Promise<AdminWebsocket>;
25
+ _requester: <ReqO, ReqI, ResI, ResO>(tag: string, transformer?: Transformer<ReqO, ReqI, ResI, ResO> | undefined) => (req: ReqO, timeout?: number | undefined) => Promise<ResO>;
26
+ attachAppInterface: Requester<Api.AttachAppInterfaceRequest, Api.AttachAppInterfaceResponse>;
27
+ activateApp: Requester<Api.ActivateAppRequest, Api.ActivateAppResponse>;
28
+ deactivateApp: Requester<Api.DeactivateAppRequest, Api.DeactivateAppResponse>;
29
+ enableApp: Requester<Api.EnableAppRequest, Api.EnableAppResponse>;
30
+ disableApp: Requester<Api.DisableAppRequest, Api.DisableAppResponse>;
31
+ startApp: Requester<Api.StartAppRequest, Api.StartAppResponse>;
32
+ dumpState: Requester<Api.DumpStateRequest, Api.DumpStateResponse>;
33
+ dumpFullState: Requester<Api.DumpFullStateRequest, Api.DumpFullStateResponse>;
34
+ generateAgentPubKey: Requester<Api.GenerateAgentPubKeyRequest, Api.GenerateAgentPubKeyResponse>;
35
+ registerDna: Requester<Api.RegisterDnaRequest, Api.RegisterDnaResponse>;
36
+ installApp: Requester<Api.InstallAppRequest, Api.InstallAppResponse>;
37
+ uninstallApp: Requester<Api.UninstallAppRequest, Api.UninstallAppResponse>;
38
+ installAppBundle: Requester<Api.InstallAppBundleRequest, Api.InstallAppBundleResponse>;
39
+ createCloneCell: Requester<Api.CreateCloneCellRequest, Api.CreateCloneCellResponse>;
40
+ listDnas: Requester<Api.ListDnasRequest, Api.ListDnasResponse>;
41
+ listCellIds: Requester<Api.ListCellIdsRequest, Api.ListCellIdsResponse>;
42
+ listActiveApps: Requester<Api.ListActiveAppsRequest, Api.ListActiveAppsResponse>;
43
+ listApps: Requester<Api.ListAppsRequest, Api.ListAppsResponse>;
44
+ listAppInterfaces: Requester<Api.ListAppInterfacesRequest, Api.ListAppInterfacesResponse>;
45
+ requestAgentInfo: Requester<Api.RequestAgentInfoRequest, Api.RequestAgentInfoResponse>;
46
+ addAgentInfo: Requester<Api.AddAgentInfoRequest, Api.AddAgentInfoResponse>;
47
+ }
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * Defines AdminWebsocket, an easy-to-use websocket implementation of the
4
+ * Conductor Admin API
5
+ *
6
+ * const client = AdminWebsocket.connect(
7
+ * 'ws://localhost:9000'
8
+ * )
9
+ *
10
+ * client.generateAgentPubKey()
11
+ * .then(agentPubKey => {
12
+ * console.log('Agent successfully generated:', agentPubKey)
13
+ * })
14
+ * .catch(err => {
15
+ * console.error('problem generating agent:', err)
16
+ * })
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.AdminWebsocket = void 0;
39
+ const Api = __importStar(require("../api/admin"));
40
+ const client_1 = require("./client");
41
+ const common_1 = require("./common");
42
+ const common_2 = require("../api/common");
43
+ const launcher_1 = require("../environments/launcher");
44
+ class AdminWebsocket {
45
+ constructor(client, defaultTimeout) {
46
+ this._requester = (tag, transformer) => (0, common_2.requesterTransformer)((req, timeout) => (0, common_1.promiseTimeout)(this.client.request(req), tag, timeout || this.defaultTimeout).then(common_1.catchError), tag, transformer);
47
+ // the specific request/response types come from the Interface
48
+ // which this class implements
49
+ this.attachAppInterface = this._requester('attach_app_interface');
50
+ // Deprecated
51
+ this.activateApp = this._requester('activate_app');
52
+ // Deprecated
53
+ this.deactivateApp = this._requester('deactivate_app');
54
+ this.enableApp = this._requester('enable_app');
55
+ this.disableApp = this._requester('disable_app');
56
+ this.startApp = this._requester('start_app');
57
+ this.dumpState = this._requester('dump_state', dumpStateTransform);
58
+ this.dumpFullState = this._requester('dump_full_state');
59
+ this.generateAgentPubKey = this._requester('generate_agent_pub_key');
60
+ this.registerDna = this._requester('register_dna');
61
+ this.installApp = this._requester('install_app');
62
+ this.uninstallApp = this._requester('uninstall_app');
63
+ this.installAppBundle = this._requester('install_app_bundle');
64
+ this.createCloneCell = this._requester('create_clone_cell');
65
+ this.listDnas = this._requester('list_dnas');
66
+ this.listCellIds = this._requester('list_cell_ids');
67
+ // Deprecated
68
+ this.listActiveApps = this._requester('list_active_apps');
69
+ this.listApps = this._requester('list_apps', listAppsTransform);
70
+ this.listAppInterfaces = this._requester('list_app_interfaces');
71
+ this.requestAgentInfo = this._requester('request_agent_info');
72
+ this.addAgentInfo = this._requester('add_agent_info');
73
+ this.client = client;
74
+ this.defaultTimeout = defaultTimeout === undefined ? common_1.DEFAULT_TIMEOUT : defaultTimeout;
75
+ }
76
+ static async connect(url, defaultTimeout) {
77
+ // Check if we are in the launcher's environment, and if so, redirect the url to connect to
78
+ const env = await (0, launcher_1.getLauncherEnvironment)();
79
+ if (env) {
80
+ url = `ws://localhost:${env.ADMIN_INTERFACE_PORT}`;
81
+ }
82
+ const wsClient = await client_1.WsClient.connect(url);
83
+ return new AdminWebsocket(wsClient, defaultTimeout);
84
+ }
85
+ }
86
+ exports.AdminWebsocket = AdminWebsocket;
87
+ const listAppsTransform = {
88
+ input: (req) => {
89
+ const args = {};
90
+ if (req.status_filter) {
91
+ args.status_filter = getAppStatusInApiForm(req.status_filter);
92
+ }
93
+ return args;
94
+ },
95
+ output: (res) => res,
96
+ };
97
+ const dumpStateTransform = {
98
+ input: (req) => req,
99
+ output: (res) => {
100
+ return JSON.parse(res);
101
+ },
102
+ };
103
+ function getAppStatusInApiForm(status_filter) {
104
+ switch (status_filter) {
105
+ case Api.AppStatusFilter.Running:
106
+ return {
107
+ Running: null,
108
+ };
109
+ case Api.AppStatusFilter.Enabled:
110
+ return {
111
+ Enabled: null,
112
+ };
113
+ case Api.AppStatusFilter.Paused:
114
+ return {
115
+ Paused: null,
116
+ };
117
+ case Api.AppStatusFilter.Disabled:
118
+ return {
119
+ Disabled: null,
120
+ };
121
+ case Api.AppStatusFilter.Stopped:
122
+ return {
123
+ Stopped: null,
124
+ };
125
+ }
126
+ }
127
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/websocket/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { AppApi, AppInfoRequest, AppInfoResponse, CallZomeRequestGeneric, CallZomeResponseGeneric, AppSignalCb } from '../api/app';
2
+ import { WsClient } from './client';
3
+ import { Transformer, Requester } from '../api/common';
4
+ export declare class AppWebsocket implements AppApi {
5
+ protected overrideInstalledAppId?: string | undefined;
6
+ client: WsClient;
7
+ defaultTimeout: number;
8
+ constructor(client: WsClient, defaultTimeout?: number, overrideInstalledAppId?: string | undefined);
9
+ static connect(url: string, defaultTimeout?: number, signalCb?: AppSignalCb): Promise<AppWebsocket>;
10
+ _requester: <ReqO, ReqI, ResI, ResO>(tag: string, transformer?: Transformer<ReqO, ReqI, ResI, ResO> | undefined) => (req: ReqO, timeout?: number | undefined) => Promise<ResO>;
11
+ appInfo: Requester<AppInfoRequest, AppInfoResponse>;
12
+ callZome: Requester<CallZomeRequestGeneric<any>, CallZomeResponseGeneric<any>>;
13
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppWebsocket = void 0;
4
+ /**
5
+ * Defines AppWebsocket, an easy-to-use websocket implementation of the
6
+ * Conductor API for apps
7
+ *
8
+ * const client = AppWebsocket.connect(
9
+ * 'ws://localhost:9000',
10
+ * signal => console.log('got a signal:', signal)
11
+ * )
12
+ *
13
+ * client.callZome({...}) // TODO: show what's in here
14
+ * .then(() => {
15
+ * console.log('DNA successfully installed')
16
+ * })
17
+ * .catch(err => {
18
+ * console.error('problem installing DNA:', err)
19
+ * })
20
+ */
21
+ const msgpack_1 = require("@msgpack/msgpack");
22
+ const client_1 = require("./client");
23
+ const common_1 = require("./common");
24
+ const common_2 = require("../api/common");
25
+ const launcher_1 = require("../environments/launcher");
26
+ class AppWebsocket {
27
+ constructor(client, defaultTimeout, overrideInstalledAppId) {
28
+ this.overrideInstalledAppId = overrideInstalledAppId;
29
+ this._requester = (tag, transformer) => (0, common_2.requesterTransformer)((req, timeout) => (0, common_1.promiseTimeout)(this.client.request(req), tag, timeout || this.defaultTimeout).then(common_1.catchError), tag, transformer);
30
+ this.appInfo = this._requester('app_info', appInfoTransform(this.overrideInstalledAppId));
31
+ this.callZome = this._requester('zome_call', callZomeTransform);
32
+ this.client = client;
33
+ this.defaultTimeout = defaultTimeout === undefined ? common_1.DEFAULT_TIMEOUT : defaultTimeout;
34
+ }
35
+ static async connect(url, defaultTimeout, signalCb) {
36
+ // Check if we are in the launcher's environment, and if so, redirect the url to connect to
37
+ const env = await (0, launcher_1.getLauncherEnvironment)();
38
+ if (env) {
39
+ url = `ws://localhost:${env.APP_INTERFACE_PORT}`;
40
+ }
41
+ const wsClient = await client_1.WsClient.connect(url, signalCb);
42
+ return new AppWebsocket(wsClient, defaultTimeout, env ? env.INSTALLED_APP_ID : undefined);
43
+ }
44
+ }
45
+ exports.AppWebsocket = AppWebsocket;
46
+ const callZomeTransform = {
47
+ input: (req) => {
48
+ return {
49
+ ...req,
50
+ payload: (0, msgpack_1.encode)(req.payload),
51
+ };
52
+ },
53
+ output: (res) => {
54
+ return (0, msgpack_1.decode)(res);
55
+ },
56
+ };
57
+ const appInfoTransform = (overrideInstalledAppId) => ({
58
+ input: (req) => {
59
+ if (overrideInstalledAppId) {
60
+ return {
61
+ installed_app_id: overrideInstalledAppId,
62
+ };
63
+ }
64
+ return req;
65
+ },
66
+ output: (res) => {
67
+ return res;
68
+ },
69
+ });
70
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/websocket/app.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,8CAAiD;AAGjD,qCAAmC;AACnC,qCAAsE;AACtE,0CAA4E;AAC5E,uDAAiE;AAGjE,MAAa,YAAY;IAIvB,YAAY,MAAgB,EAAE,cAAuB,EAAY,sBAAuC;QAAvC,2BAAsB,GAAtB,sBAAsB,CAAiB;QAiBxG,eAAU,GAAG,CAAyB,GAAW,EAAE,WAAiD,EAAE,EAAE,CACtG,IAAA,6BAAoB,EAClB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAA,uBAAc,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,mBAAU,CAAC,EAChH,GAAG,EACH,WAAW,CACZ,CAAA;QAEH,YAAO,GACH,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAC9E,aAAQ,GACJ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAA;QA1BjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,cAAc,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAe,CAAC,CAAC,CAAC,cAAc,CAAA;IACvF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,cAAuB,EAAE,QAAsB;QAC/E,2FAA2F;QAC3F,MAAM,GAAG,GAAG,MAAM,IAAA,iCAAsB,GAAE,CAAA;QAE1C,IAAI,GAAG,EAAE;YACP,GAAG,GAAG,kBAAkB,GAAG,CAAC,kBAAkB,EAAE,CAAA;SACjD;QAED,MAAM,QAAQ,GAAG,MAAM,iBAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACtD,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC3F,CAAC;CAaF;AAhCD,oCAgCC;AAED,MAAM,iBAAiB,GAAoJ;IACzK,KAAK,EAAE,CAAC,GAAgC,EAAsC,EAAE;QAC9E,OAAO;YACL,GAAG,GAAG;YACN,OAAO,EAAE,IAAA,gBAAM,EAAC,GAAG,CAAC,OAAO,CAAC;SAC7B,CAAA;IACH,CAAC;IACD,MAAM,EAAE,CAAC,GAAwC,EAAgC,EAAE;QACjF,OAAO,IAAA,gBAAM,EAAC,GAAG,CAAC,CAAA;IACpB,CAAC;CACF,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,sBAAuC,EAAiF,EAAE,CAAC,CAAC;IACpJ,KAAK,EAAE,CAAC,GAAmB,EAAkB,EAAE;QAC7C,IAAI,sBAAsB,EAAE;YAC1B,OAAO;gBACL,gBAAgB,EAAE,sBAAsB;aACzC,CAAA;SACF;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,EAAE,CAAC,GAAoB,EAAmB,EAAE;QAChD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import Websocket from "isomorphic-ws";
2
+ import { decode } from "@msgpack/msgpack";
3
+ import { AppSignalCb } from "../api/app";
4
+ /**
5
+ * A Websocket client which can make requests and receive responses,
6
+ * as well as send and receive signals
7
+ *
8
+ * Uses Holochain's websocket WireMessage for communication.
9
+ */
10
+ export declare class WsClient {
11
+ socket: Websocket;
12
+ pendingRequests: Record<number, {
13
+ fulfill: (msg: unknown) => ReturnType<typeof decode>;
14
+ reject: (error: Error) => void;
15
+ }>;
16
+ index: number;
17
+ alreadyWarnedNoSignalCb: boolean;
18
+ constructor(socket: any, signalCb?: AppSignalCb);
19
+ emitSignal(data: any): void;
20
+ request<Req, Res>(data: Req): Promise<Res>;
21
+ handleResponse(msg: any): void;
22
+ close(): Promise<void>;
23
+ awaitClose(): Promise<void>;
24
+ static connect(url: string, signalCb?: AppSignalCb): Promise<WsClient>;
25
+ }