@ddd-qc/cell-proxy 0.13.1 → 0.13.2
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/CallQueue.d.ts +14 -0
- package/dist/CallQueue.js +20 -0
- package/dist/CallQueue.js.map +1 -0
- package/dist/CellProxy.d.ts +5 -4
- package/dist/CellProxy.js +30 -1
- package/dist/CellProxy.js.map +1 -1
- package/dist/ConductorAppProxy.d.ts +1 -1
- package/dist/ConductorAppProxy.js +10 -10
- package/dist/ConductorAppProxy.js.map +1 -1
- package/dist/ZomeProxy.js +2 -2
- package/dist/ZomeProxy.js.map +1 -1
- package/dist/cell.js.map +1 -1
- package/dist/hcl.js +1 -1
- package/dist/hcl.js.map +1 -1
- package/dist/mixins.js +0 -2
- package/dist/mixins.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.js +3 -3
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** From https://dev.to/glebirovich/typescript-data-structures-stack-and-queue-hld#queue */
|
|
2
|
+
interface IQueue<T> {
|
|
3
|
+
enqueue(item: T): void;
|
|
4
|
+
dequeue(): T | undefined;
|
|
5
|
+
size(): number;
|
|
6
|
+
}
|
|
7
|
+
declare class Queue<T> implements IQueue<T> {
|
|
8
|
+
private capacity;
|
|
9
|
+
private storage;
|
|
10
|
+
constructor(capacity?: number);
|
|
11
|
+
enqueue(item: T): void;
|
|
12
|
+
dequeue(): T | undefined;
|
|
13
|
+
size(): number;
|
|
14
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** From https://dev.to/glebirovich/typescript-data-structures-stack-and-queue-hld#queue */
|
|
2
|
+
class Queue {
|
|
3
|
+
constructor(capacity = Infinity) {
|
|
4
|
+
this.capacity = capacity;
|
|
5
|
+
this.storage = [];
|
|
6
|
+
}
|
|
7
|
+
enqueue(item) {
|
|
8
|
+
if (this.size() === this.capacity) {
|
|
9
|
+
throw Error("Queue has reached max capacity, you cannot add more items");
|
|
10
|
+
}
|
|
11
|
+
this.storage.push(item);
|
|
12
|
+
}
|
|
13
|
+
dequeue() {
|
|
14
|
+
return this.storage.shift();
|
|
15
|
+
}
|
|
16
|
+
size() {
|
|
17
|
+
return this.storage.length;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=CallQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallQueue.js","sourceRoot":"","sources":["../src/CallQueue.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAS3F,MAAM,KAAK;IAGT,YAAoB,WAAmB,QAAQ;QAA3B,aAAQ,GAAR,QAAQ,CAAmB;QAFvC,YAAO,GAAQ,EAAE,CAAC;IAEwB,CAAC;IAEnD,OAAO,CAAC,IAAO;QACb,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;YACjC,MAAM,KAAK,CAAC,2DAA2D,CAAC,CAAC;SAC1E;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF","sourcesContent":["/** From https://dev.to/glebirovich/typescript-data-structures-stack-and-queue-hld#queue */\r\n\r\n\r\ninterface IQueue<T> {\r\n enqueue(item: T): void;\r\n dequeue(): T | undefined;\r\n size(): number;\r\n}\r\n\r\nclass Queue<T> implements IQueue<T> {\r\n private storage: T[] = [];\r\n\r\n constructor(private capacity: number = Infinity) {}\r\n\r\n enqueue(item: T): void {\r\n if (this.size() === this.capacity) {\r\n throw Error(\"Queue has reached max capacity, you cannot add more items\");\r\n }\r\n this.storage.push(item);\r\n }\r\n dequeue(): T | undefined {\r\n return this.storage.shift();\r\n }\r\n size(): number {\r\n return this.storage.length;\r\n }\r\n}\r\n"]}
|
package/dist/CellProxy.d.ts
CHANGED
|
@@ -9,11 +9,12 @@ export interface RequestLog {
|
|
|
9
9
|
executionTimestamp: number;
|
|
10
10
|
}
|
|
11
11
|
export interface ResponseLog {
|
|
12
|
-
success?:
|
|
13
|
-
failure?:
|
|
12
|
+
success?: unknown;
|
|
13
|
+
failure?: unknown;
|
|
14
14
|
timestamp: number;
|
|
15
15
|
requestIndex: number;
|
|
16
16
|
}
|
|
17
|
+
export type Cb = () => Promise<unknown>;
|
|
17
18
|
declare const CellProxy_base: (abstract new (...args: any[]) => {
|
|
18
19
|
_cell?: Cell;
|
|
19
20
|
readonly cell: Cell;
|
|
@@ -45,9 +46,9 @@ export declare class CellProxy extends CellProxy_base {
|
|
|
45
46
|
* callZome() with "Mutex" (for calls that writes to source-chain)
|
|
46
47
|
* TODO: Implement call queue instead of mutex
|
|
47
48
|
*/
|
|
48
|
-
callZomeBlocking(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<
|
|
49
|
+
callZomeBlocking(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown>;
|
|
49
50
|
/** */
|
|
50
|
-
callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<
|
|
51
|
+
callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown>;
|
|
51
52
|
/**
|
|
52
53
|
* Calls the `entry_defs()` zome function and
|
|
53
54
|
* returns an array of all the zome's AppEntryDefNames and visibility
|
package/dist/CellProxy.js
CHANGED
|
@@ -14,7 +14,6 @@ export class CellProxy extends CellMixin(Empty) {
|
|
|
14
14
|
defaultTimeout) {
|
|
15
15
|
super();
|
|
16
16
|
this._conductor = _conductor;
|
|
17
|
-
//private _blockingRequestQueue: Queue<RequestLog> = new Queue();
|
|
18
17
|
/** append only logs */
|
|
19
18
|
this._requestLog = [];
|
|
20
19
|
this._responseLog = [];
|
|
@@ -23,6 +22,8 @@ export class CellProxy extends CellMixin(Empty) {
|
|
|
23
22
|
console.log(`CellProxy.ctor`, cell);
|
|
24
23
|
this.defaultTimeout = defaultTimeout ? defaultTimeout : 10 * 1000;
|
|
25
24
|
}
|
|
25
|
+
//private _requestQueue = new Queue<[RequestLog, Cb]>();
|
|
26
|
+
//private _blockingRequestQueue: Queue<RequestLog> = new Queue();
|
|
26
27
|
/** -- Methods -- */
|
|
27
28
|
/** */
|
|
28
29
|
addSignalHandler(handler) {
|
|
@@ -49,6 +50,34 @@ export class CellProxy extends CellMixin(Empty) {
|
|
|
49
50
|
return respLog;
|
|
50
51
|
}
|
|
51
52
|
}
|
|
53
|
+
// /**
|
|
54
|
+
// * Call queue instead of mutex
|
|
55
|
+
// */
|
|
56
|
+
// async queueCall(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {
|
|
57
|
+
// timeout = timeout ? timeout : this.defaultTimeout;
|
|
58
|
+
// const req = {
|
|
59
|
+
// cap_secret, zome_name, fn_name, payload,
|
|
60
|
+
// cell_id: this.cell.id,
|
|
61
|
+
// provenance: this.cell.id[1],
|
|
62
|
+
// } as CallZomeRequest;
|
|
63
|
+
// const log = {request: req, timeout, requestTimestamp: Date.now()} as RequestLog;
|
|
64
|
+
// this._requestQueue.enqueue([log, (response) => ]);
|
|
65
|
+
// this.executeQueuedCall();
|
|
66
|
+
// }
|
|
67
|
+
//
|
|
68
|
+
// async executeQueuedCall(): Promise<unknown> {
|
|
69
|
+
// if (Date.now() - log.requestTimestamp >= timeout) {
|
|
70
|
+
// console.warn({requestLogs: this._requestLog})
|
|
71
|
+
// return Promise.reject("Waiting for zomeCall execution timed-out");
|
|
72
|
+
// }
|
|
73
|
+
// const respLog = await this.executeZomeCall(log);
|
|
74
|
+
// if (respLog.failure) {
|
|
75
|
+
// this.dumpSignals();
|
|
76
|
+
// this.dumpLogs(zome_name);
|
|
77
|
+
// return Promise.reject(respLog.failure)
|
|
78
|
+
// }
|
|
79
|
+
// return respLog.success;
|
|
80
|
+
// }
|
|
52
81
|
/**
|
|
53
82
|
* callZome() with "Mutex" (for calls that writes to source-chain)
|
|
54
83
|
* TODO: Implement call queue instead of mutex
|
package/dist/CellProxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CellProxy.js","sourceRoot":"","sources":["../src/CellProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, CallZomeRequest, CapSecret, encodeHashToBase64, ZomeName} from \"@holochain/client\";\nimport {ConductorAppProxy, SignalUnsubscriber} from \"./ConductorAppProxy\";\nimport {anyToB64, delay, prettyDate, prettyDuration} from \"./utils\";\nimport {CellMixin, Empty} from \"./mixins\";\nimport {Cell} from \"./cell\";\n\n\nexport interface RequestLog {\n request: CallZomeRequest,\n timeout: number,\n requestTimestamp: number,\n executionTimestamp: number,\n}\n\nexport interface ResponseLog {\n success?: any,\n failure?: any,\n timestamp: number,\n requestIndex: number;\n}\n\n\n/**\n * Proxy for a running DNA.\n * It logs and queues ZomeCalls.\n * It holds a reference to its ConductorAppProxy and its Cell.\n * This class is expected to be used by ZomeProxies.\n */\nexport class CellProxy extends CellMixin(Empty) {\n\n /** Ctor */\n constructor(\n private _conductor: ConductorAppProxy,\n cell: Cell,\n //public readonly dnaDef: MyDnaDef,\n defaultTimeout?: number) {\n super();\n this._cell = cell;\n console.log(`CellProxy.ctor`, cell);\n this.defaultTimeout = defaultTimeout ? defaultTimeout : 10 * 1000;\n }\n\n\n /** -- Fields -- */\n\n defaultTimeout: number;\n\n //private _blockingRequestQueue: Queue<RequestLog> = new Queue();\n /** append only logs */\n private _requestLog: RequestLog[] = []\n private _responseLog: ResponseLog[] = []\n\n private _canCallBlocking: boolean = true;\n\n\n /** -- Methods -- */\n\n /** */\n addSignalHandler(handler: AppSignalCb): SignalUnsubscriber {\n return this._conductor.addSignalHandler(handler, this.cell.hcl().toString());\n }\n\n\n /** */\n dumpSignals() {\n this._conductor.dumpSignals(this.cell.id);\n }\n\n /** Pass call request to conductor proxy and log it */\n async executeZomeCall(reqLog: RequestLog): Promise<ResponseLog> {\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n this._requestLog.push(reqLog);\n try {\n const response = await this._conductor.callZome(reqLog.request, reqLog.timeout);\n const respLog = { requestIndex, success: response, timestamp: Date.now() };\n this._responseLog.push(respLog);\n return respLog;\n } catch (e) {\n const respLog = { requestIndex, failure: e, timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\n }\n }\n\n\n /**\n * callZome() with \"Mutex\" (for calls that writes to source-chain)\n * TODO: Implement call queue instead of mutex\n */\n async callZomeBlocking(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<any> {\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.id,\n provenance: this.cell.id[1],\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n\n while(!this._canCallBlocking && Date.now() - log.requestTimestamp < timeout) {\n await delay(1);\n }\n if (Date.now() - log.requestTimestamp >= timeout) {\n console.warn({requestLogs: this._requestLog})\n return Promise.reject(\"Waiting for zomeCall execution timed-out\");\n }\n this._canCallBlocking = false;\n const respLog = await this.executeZomeCall(log);\n this._canCallBlocking = true;\n if (respLog.failure) {\n this.dumpSignals();\n this.dumpLogs(zome_name);\n return Promise.reject(respLog.failure)\n }\n return respLog.success;\n }\n\n\n /** */\n async callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<any> {\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.id,\n provenance: this.cell.id[1],\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n const respLog = await this.executeZomeCall(log);\n if (respLog.failure) {\n this.dumpSignals();\n this.dumpLogs(zome_name);\n return Promise.reject(respLog.failure)\n }\n return respLog.success;\n }\n\n\n /**\n * Calls the `entry_defs()` zome function and\n * returns an array of all the zome's AppEntryDefNames and visibility\n */\n async callEntryDefs(zomeName: ZomeName): Promise<[string, boolean][]> {\n //console.log(\"callEntryDefs()\", zomeName)\n try {\n const entryDefs = await this.callZome(zomeName, \"entry_defs\", null, null, 2 * 1000);\n //console.debug(\"getEntryDefs() for \" + this.zomeName + \" result:\")\n //console.log({entryDefs})\n let result: [string, boolean][] = []\n for (const def of entryDefs.Defs) {\n const name = def.id.App;\n result.push([name, def.visibility.hasOwnProperty('Public')])\n }\n //console.log({result})\n return result;\n } catch (e) {\n console.error(\"Calling getEntryDefs() on \" + zomeName + \" failed: \")\n console.error({ e })\n return Promise.reject(e)\n }\n }\n\n // /** TODO once we have getDnaDefinition() api */\n // dumpAllZomes() {\n // // FIXME get DNA DEF\n // for (const zomeName of dnaDef) {\n // this.dumpLogs(zomeName)\n // }\n // }\n\n /** */\n dumpLogs(zomeName?: ZomeName) {\n let result = [];\n for (const response of this._responseLog) {\n const requestLog = this._requestLog[response.requestIndex];\n if (zomeName && requestLog.request.zome_name != zomeName) {\n continue;\n }\n const startTime = prettyDate(new Date(requestLog.requestTimestamp));\n const waitTime = prettyDuration(new Date(requestLog.executionTimestamp - requestLog.requestTimestamp));\n const duration = prettyDuration(new Date(response.timestamp - requestLog.requestTimestamp));\n const input = requestLog.request.payload instanceof Uint8Array ? encodeHashToBase64(requestLog.request.payload) : requestLog.request.payload;\n const output = anyToB64(response.failure ? response.failure : response.success);\n const log = zomeName\n ? { startTime, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n : { startTime, zomeName: requestLog.request.zome_name, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n result.push(log);\n }\n console.warn(`Dumping logs for cell \"${this._conductor.getLocations(this.cell.id)}\"`)\n if (zomeName) {\n console.warn(` - For zome \"${zomeName}\"`);\n }\n console.table(result)\n }\n\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"CellProxy.js","sourceRoot":"","sources":["../src/CellProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, CallZomeRequest, CapSecret, encodeHashToBase64, ZomeName} from \"@holochain/client\";\nimport {ConductorAppProxy, SignalUnsubscriber} from \"./ConductorAppProxy\";\nimport {anyToB64, delay, prettyDate, prettyDuration} from \"./utils\";\nimport {CellMixin, Empty} from \"./mixins\";\nimport {Cell} from \"./cell\";\nimport {EntryDefsCallbackResult} from \"./types\";\n\n\nexport interface RequestLog {\n request: CallZomeRequest,\n timeout: number,\n requestTimestamp: number,\n executionTimestamp: number,\n}\n\nexport interface ResponseLog {\n success?: unknown,\n failure?: unknown,\n timestamp: number,\n requestIndex: number;\n}\n\n\nexport type Cb = () => Promise<unknown>\n\n/**\n * Proxy for a running DNA.\n * It logs and queues ZomeCalls.\n * It holds a reference to its ConductorAppProxy and its Cell.\n * This class is expected to be used by ZomeProxies.\n */\nexport class CellProxy extends CellMixin(Empty) {\n\n /** Ctor */\n constructor(\n private _conductor: ConductorAppProxy,\n cell: Cell,\n //public readonly dnaDef: MyDnaDef,\n defaultTimeout?: number) {\n super();\n this._cell = cell;\n console.log(`CellProxy.ctor`, cell);\n this.defaultTimeout = defaultTimeout ? defaultTimeout : 10 * 1000;\n }\n\n\n /** -- Fields -- */\n\n defaultTimeout: number;\n\n\n /** append only logs */\n private _requestLog: RequestLog[] = []\n private _responseLog: ResponseLog[] = []\n\n private _canCallBlocking: boolean = true;\n\n //private _requestQueue = new Queue<[RequestLog, Cb]>();\n //private _blockingRequestQueue: Queue<RequestLog> = new Queue();\n\n /** -- Methods -- */\n\n /** */\n addSignalHandler(handler: AppSignalCb): SignalUnsubscriber {\n return this._conductor.addSignalHandler(handler, this.cell.hcl().toString());\n }\n\n\n /** */\n dumpSignals() {\n this._conductor.dumpSignals(this.cell.id);\n }\n\n /** Pass call request to conductor proxy and log it */\n async executeZomeCall(reqLog: RequestLog): Promise<ResponseLog> {\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n this._requestLog.push(reqLog);\n try {\n const response = await this._conductor.callZome(reqLog.request, reqLog.timeout);\n const respLog = { requestIndex, success: response, timestamp: Date.now() };\n this._responseLog.push(respLog);\n return respLog;\n } catch (e) {\n const respLog = { requestIndex, failure: e, timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\n }\n }\n\n\n // /**\n // * Call queue instead of mutex\n // */\n // async queueCall(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n // timeout = timeout ? timeout : this.defaultTimeout;\n // const req = {\n // cap_secret, zome_name, fn_name, payload,\n // cell_id: this.cell.id,\n // provenance: this.cell.id[1],\n // } as CallZomeRequest;\n // const log = {request: req, timeout, requestTimestamp: Date.now()} as RequestLog;\n // this._requestQueue.enqueue([log, (response) => ]);\n // this.executeQueuedCall();\n // }\n //\n // async executeQueuedCall(): Promise<unknown> {\n // if (Date.now() - log.requestTimestamp >= timeout) {\n // console.warn({requestLogs: this._requestLog})\n // return Promise.reject(\"Waiting for zomeCall execution timed-out\");\n // }\n // const respLog = await this.executeZomeCall(log);\n // if (respLog.failure) {\n // this.dumpSignals();\n // this.dumpLogs(zome_name);\n // return Promise.reject(respLog.failure)\n // }\n // return respLog.success;\n // }\n\n\n /**\n * callZome() with \"Mutex\" (for calls that writes to source-chain)\n * TODO: Implement call queue instead of mutex\n */\n async callZomeBlocking(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.id,\n provenance: this.cell.id[1],\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n\n while(!this._canCallBlocking && Date.now() - log.requestTimestamp < timeout) {\n await delay(1);\n }\n if (Date.now() - log.requestTimestamp >= timeout) {\n console.warn({requestLogs: this._requestLog})\n return Promise.reject(\"Waiting for zomeCall execution timed-out\");\n }\n this._canCallBlocking = false;\n const respLog = await this.executeZomeCall(log);\n this._canCallBlocking = true;\n if (respLog.failure) {\n this.dumpSignals();\n this.dumpLogs(zome_name);\n return Promise.reject(respLog.failure)\n }\n return respLog.success;\n }\n\n\n /** */\n async callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.id,\n provenance: this.cell.id[1],\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n const respLog = await this.executeZomeCall(log);\n if (respLog.failure) {\n this.dumpSignals();\n this.dumpLogs(zome_name);\n return Promise.reject(respLog.failure)\n }\n return respLog.success;\n }\n\n\n /**\n * Calls the `entry_defs()` zome function and\n * returns an array of all the zome's AppEntryDefNames and visibility\n */\n async callEntryDefs(zomeName: ZomeName): Promise<[string, boolean][]> {\n //console.log(\"callEntryDefs()\", zomeName)\n try {\n const entryDefs = await this.callZome(zomeName, \"entry_defs\", null, null, 2 * 1000) as EntryDefsCallbackResult;\n //console.debug(\"getEntryDefs() for \" + this.zomeName + \" result:\")\n //console.log({entryDefs})\n let result: [string, boolean][] = []\n for (const def of entryDefs.Defs) {\n const name = def.id.App;\n result.push([name, def.visibility.hasOwnProperty('Public')])\n }\n //console.log({result})\n return result;\n } catch (e) {\n console.error(\"Calling getEntryDefs() on \" + zomeName + \" failed: \")\n console.error({ e })\n return Promise.reject(e)\n }\n }\n\n // /** TODO once we have getDnaDefinition() api */\n // dumpAllZomes() {\n // // FIXME get DNA DEF\n // for (const zomeName of dnaDef) {\n // this.dumpLogs(zomeName)\n // }\n // }\n\n /** */\n dumpLogs(zomeName?: ZomeName) {\n let result = [];\n for (const response of this._responseLog) {\n const requestLog = this._requestLog[response.requestIndex];\n if (zomeName && requestLog.request.zome_name != zomeName) {\n continue;\n }\n const startTime = prettyDate(new Date(requestLog.requestTimestamp));\n const waitTime = prettyDuration(new Date(requestLog.executionTimestamp - requestLog.requestTimestamp));\n const duration = prettyDuration(new Date(response.timestamp - requestLog.requestTimestamp));\n const input = requestLog.request.payload instanceof Uint8Array ? encodeHashToBase64(requestLog.request.payload) : requestLog.request.payload;\n const output = anyToB64(response.failure ? response.failure : response.success);\n const log = zomeName\n ? { startTime, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n : { startTime, zomeName: requestLog.request.zome_name, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n result.push(log);\n }\n console.warn(`Dumping logs for cell \"${this._conductor.getLocations(this.cell.id)}\"`)\n if (zomeName) {\n console.warn(` - For zome \"${zomeName}\"`);\n }\n console.table(result)\n }\n\n}\n\n"]}
|
|
@@ -25,7 +25,7 @@ export declare class ConductorAppProxy implements AppApi {
|
|
|
25
25
|
private _cellsByApp;
|
|
26
26
|
/** Map cell locations: CellIdStr -> HCL[] */
|
|
27
27
|
private _hclMap;
|
|
28
|
-
/** Store handlers per cell
|
|
28
|
+
/** Store handlers per cell location: HCLString -> AppSignalCb[] */
|
|
29
29
|
private _signalHandlers;
|
|
30
30
|
/** Store cell proxies per cell: CellIdStr -> CellProxy */
|
|
31
31
|
private _cellProxies;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppWebsocket, CellType, } from "@holochain/client";
|
|
1
|
+
import { AppWebsocket, CellType, encodeHashToBase64, } from "@holochain/client";
|
|
2
2
|
import { CellProxy } from "./CellProxy";
|
|
3
3
|
import { CellIdStr } from "./types";
|
|
4
4
|
import { areCellsEqual, prettyDate, printAppInfo } from "./utils";
|
|
@@ -85,7 +85,7 @@ export class ConductorAppProxy {
|
|
|
85
85
|
}
|
|
86
86
|
async disableCloneCell(request) {
|
|
87
87
|
//console.log("disableCloneCell() called:", request)
|
|
88
|
-
this._appWs.disableCloneCell(request);
|
|
88
|
+
return this._appWs.disableCloneCell(request);
|
|
89
89
|
}
|
|
90
90
|
async appInfo(args) {
|
|
91
91
|
return this._appWs.appInfo(args);
|
|
@@ -137,11 +137,11 @@ export class ConductorAppProxy {
|
|
|
137
137
|
this._cellsByApp = {};
|
|
138
138
|
/** Map cell locations: CellIdStr -> HCL[] */
|
|
139
139
|
this._hclMap = {};
|
|
140
|
-
/** Store handlers per cell
|
|
140
|
+
/** Store handlers per cell location: HCLString -> AppSignalCb[] */
|
|
141
141
|
this._signalHandlers = {};
|
|
142
142
|
/** Store cell proxies per cell: CellIdStr -> CellProxy */
|
|
143
143
|
this._cellProxies = {};
|
|
144
|
-
const _unsub
|
|
144
|
+
/*const _unsub =*/ this.addSignalHandler((sig) => this.logSignal(sig));
|
|
145
145
|
}
|
|
146
146
|
/** -- Methods -- */
|
|
147
147
|
/** */
|
|
@@ -149,7 +149,7 @@ export class ConductorAppProxy {
|
|
|
149
149
|
const appInfo = await this.appInfo({ installed_app_id: appId });
|
|
150
150
|
//console.log("fetchCell", appInfo);
|
|
151
151
|
if (appInfo == null) {
|
|
152
|
-
Promise.reject(`getCell() failed. App "${appId}" not found on AppWebsocket "${this._appWs.client.socket.url}"`);
|
|
152
|
+
return Promise.reject(`getCell() failed. App "${appId}" not found on AppWebsocket "${this._appWs.client.socket.url}"`);
|
|
153
153
|
}
|
|
154
154
|
for (const cellInfos of Object.values(appInfo.cell_info)) {
|
|
155
155
|
for (const [baseRoleName, cellInfo] of Object.entries(cellInfos)) {
|
|
@@ -166,14 +166,14 @@ export class ConductorAppProxy {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
-
Promise.reject("getCell() failed. Cell not found for app.");
|
|
169
|
+
return Promise.reject("getCell() failed. Cell not found for app.");
|
|
170
170
|
}
|
|
171
171
|
/** Get all cells for a BaseRole in an app */
|
|
172
172
|
async fetchCells(appId, baseRoleName) {
|
|
173
173
|
/** Make sure hApp exists */
|
|
174
174
|
const appInfo = await this.appInfo({ installed_app_id: appId });
|
|
175
175
|
if (appInfo == null) {
|
|
176
|
-
Promise.reject(`fetchCells() failed. App "${appId}" not found on AppWebsocket "${this._appWs.client.socket.url}"`);
|
|
176
|
+
return Promise.reject(`fetchCells() failed. App "${appId}" not found on AppWebsocket "${this._appWs.client.socket.url}"`);
|
|
177
177
|
}
|
|
178
178
|
console.log("fetchCells() installedAppInfo:\n", printAppInfo(appInfo));
|
|
179
179
|
/** Make sure app Object exists */
|
|
@@ -200,7 +200,7 @@ export class ConductorAppProxy {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
if (typeof provisioned === 'undefined') {
|
|
203
|
-
Promise.reject("Provisioned cell not found for role " + baseRoleName);
|
|
203
|
+
return Promise.reject("Provisioned cell not found for role " + baseRoleName);
|
|
204
204
|
}
|
|
205
205
|
let roleInstalledCells = { provisioned: provisioned, clones };
|
|
206
206
|
/** Store it*/
|
|
@@ -256,10 +256,10 @@ export class ConductorAppProxy {
|
|
|
256
256
|
}
|
|
257
257
|
/** */
|
|
258
258
|
onSignal(signal) {
|
|
259
|
-
/**
|
|
259
|
+
/** Grab cell specific handlers */
|
|
260
260
|
const hcls = this.getLocations(signal.cell_id);
|
|
261
261
|
const handlerss = hcls ? hcls.map((hcl) => this._signalHandlers[hcl.toString()]) : [];
|
|
262
|
-
console.log("onSignal()", hcls.toString(), handlerss);
|
|
262
|
+
console.log("onSignal()", hcls ? hcls.toString() : "unknown cell:" + encodeHashToBase64(signal.cell_id[0]), handlerss);
|
|
263
263
|
/** Grab common handler */
|
|
264
264
|
const allHandlers = this._signalHandlers["__all"];
|
|
265
265
|
if (allHandlers)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConductorAppProxy.js","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppApi, AppInfoRequest, AppInfoResponse, AppSignal, AppSignalCb, AppWebsocket, CallZomeRequest, CellId,\n InstalledAppId,\n CreateCloneCellRequest, DisableCloneCellRequest, EnableCloneCellRequest, ClonedCell, CellType, ProvisionedCell,\n} from \"@holochain/client\";\nimport { CellProxy } from \"./CellProxy\";\nimport {CellIdStr, RoleCellsMap, BaseRoleName, CellsForRole} from \"./types\";\nimport {areCellsEqual, Dictionary, prettyDate, printAppInfo} from \"./utils\";\nimport {HCL, HCLString} from \"./hcl\";\nimport {Cell} from \"./cell\";\n\n\n/** */\nexport interface SignalUnsubscriber {\n unsubscribe: () => void;\n}\n\n\n/**\n * Creates, connects and holds a appWebsocket.\n * Creates and holds Cell proxies for this appWebsocket.\n * Maintains a mapping between CellIds and HCLs\n * Handles SignalHandlers per HCL\n * Stores appSignal logs\n * TODO Implement Singleton per App port?\n */\nexport class ConductorAppProxy implements AppApi {\n\n /** -- Fields -- */\n\n private _appWs!: AppWebsocket;\n\n /** Signal log: [Timestamp, CellIdStr, Signal] */\n private _signalLogs: [number, CellIdStr, AppSignal][] = [];\n /** Map cells per App: InstalledAppId -> (BaseRoleName -> CellsForRole) */\n private _cellsByApp: Dictionary<RoleCellsMap> = {};\n /** Map cell locations: CellIdStr -> HCL[] */\n private _hclMap: Dictionary<HCL[]> = {};\n /** Store handlers per cell locaiton: HCLString -> AppSignalCb[] */\n private _signalHandlers: Dictionary<AppSignalCb[]> = {};\n /** Store cell proxies per cell: CellIdStr -> CellProxy */\n private _cellProxies: Dictionary<CellProxy> = {};\n\n\n /** -- Getters -- */\n\n /** Check this after connecting since AppWebsocket can shamelessly override the provided args. */\n get appIdOfShame(): InstalledAppId | undefined { return this._appWs.overrideInstalledAppId;}\n\n /** */\n getAppCells(appId: InstalledAppId): RoleCellsMap | undefined {\n return this._cellsByApp[appId];\n }\n\n /** */\n getLocations(cellId: CellId): HCL[] | undefined {\n return this._hclMap[CellIdStr(cellId)];\n }\n\n /** */\n getCell(hcl: HCL): Cell {\n const roleCellsMap = this._cellsByApp[hcl.appId];\n if (!roleCellsMap) throw Error(`getCell() failed. No hApp with ID \"${hcl.appId}\" found.`);\n const roleCells = roleCellsMap[hcl.baseRoleName];\n if (!roleCells) throw Error(`getCell() failed: BaseRoleName \"${hcl.baseRoleName}\" not found in happ \"${hcl.appId}\"`);\n let cell = roleCells.provisioned;\n if (hcl.cloneId !== undefined) {\n cell = roleCells.clones[hcl.cloneId];\n if (!cell) {\n throw Error(`getCell() failed: clone \"${hcl.cloneId}\" not found for role \"${hcl.toString()}\"`);\n }\n }\n return new Cell(cell, hcl.appId, hcl.baseRoleName);\n }\n\n\n /** Get stored CellProxy or attempt to create it */\n getCellProxy(cellIdOrLoc: HCL | CellId): CellProxy {\n if (cellIdOrLoc instanceof HCL) {\n const cell = this.getCell(cellIdOrLoc);\n const maybeProxy = this.getCellProxy(cell.id);\n if (!maybeProxy) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + CellIdStr(cell.id));\n return maybeProxy;\n }\n const sId = CellIdStr(cellIdOrLoc);\n const maybeProxy = this._cellProxies[sId];\n if (maybeProxy === undefined) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + sId);\n return maybeProxy;\n }\n\n\n /** */\n getAppRoles(installedAppId: InstalledAppId): BaseRoleName[] | undefined {\n if (!this._cellsByApp[installedAppId]) return undefined;\n return Object.values(this._cellsByApp[installedAppId]).map((roleCells) => {\n return roleCells.provisioned.name;\n });\n }\n\n\n /** */\n getClones(appId: InstalledAppId, baseRoleName: BaseRoleName): ClonedCell[] {\n const maybeApp = this._cellsByApp[appId]\n if (!maybeApp) return [];\n const roleInstalledCells = maybeApp[baseRoleName];\n if (!roleInstalledCells) return [];\n return Object.values(roleInstalledCells.clones);\n }\n\n\n\n async createCloneCell(request: CreateCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"createCloneCell() called:\", request)\n return this._appWs!.createCloneCell(request);\n }\n\n /** -- AppApi (Passthrough to appWebsocket) -- */\n\n async enableCloneCell(request: EnableCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"enableCloneCell() called:\", request)\n return this._appWs!.enableCloneCell(request);\n }\n\n async disableCloneCell(request: DisableCloneCellRequest): Promise<void> {\n //console.log(\"disableCloneCell() called:\", request)\n this._appWs!.disableCloneCell(request);\n }\n\n async appInfo(args: AppInfoRequest): Promise<AppInfoResponse> {\n return this._appWs!.appInfo(args);\n }\n\n async callZome(req: CallZomeRequest, timeout?: number): Promise<any> {\n timeout = timeout ? timeout : this.defaultTimeout\n return this._appWs.callZome(req, timeout)\n }\n\n\n /** -- Creation -- */\n\n /** async Factory */\n static async new(port_or_socket: number | AppWebsocket, defaultTimeout?: number): Promise<ConductorAppProxy> {\n if (typeof port_or_socket == 'object') {\n return ConductorAppProxy.fromSocket(port_or_socket);\n } else {\n const timeout = defaultTimeout ? defaultTimeout : 10 * 1000;\n let wsUrl = `ws://localhost:${port_or_socket}`\n try {\n let conductor = new ConductorAppProxy(timeout);\n conductor._appWs = await AppWebsocket.connect(wsUrl, timeout);\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)})\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n }\n\n\n /** */\n private static async fromSocket(appWebsocket: AppWebsocket): Promise<ConductorAppProxy> {\n try {\n let conductor = new ConductorAppProxy(appWebsocket.defaultTimeout);\n conductor._appWs = appWebsocket;\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)})\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n\n\n /** Ctor */\n private constructor(public defaultTimeout: number) {\n const _unsub = this.addSignalHandler((sig) => this.logSignal(sig));\n }\n\n\n /** -- Methods -- */\n\n /** */\n async fetchCell(appId: InstalledAppId, cellId: CellId): Promise<Cell> {\n const appInfo = await this.appInfo({installed_app_id: appId});\n //console.log(\"fetchCell\", appInfo);\n if (appInfo == null) {\n Promise.reject(`getCell() failed. App \"${appId}\" not found on AppWebsocket \"${this._appWs.client.socket.url}\"`)\n }\n for (const cellInfos of Object.values(appInfo.cell_info)) {\n for (const [baseRoleName, cellInfo] of Object.entries(cellInfos)) {\n let cell: Cell;\n try {\n cell = Cell.from(cellInfo, appId, baseRoleName);\n } catch(e:any) {\n // skip stem cell\n continue;\n }\n if (areCellsEqual(cell.id, cellId)) {\n return cell;\n }\n }\n }\n Promise.reject(\"getCell() failed. Cell not found for app.\")\n }\n\n\n /** Get all cells for a BaseRole in an app */\n async fetchCells(appId: InstalledAppId, baseRoleName: BaseRoleName): Promise<CellsForRole> {\n /** Make sure hApp exists */\n const appInfo = await this.appInfo({installed_app_id: appId});\n if (appInfo == null) {\n Promise.reject(`fetchCells() failed. App \"${appId}\" not found on AppWebsocket \"${this._appWs.client.socket.url}\"`)\n }\n console.log(\"fetchCells() installedAppInfo:\\n\", printAppInfo(appInfo));\n\n /** Make sure app Object exists */\n if (!this._cellsByApp[appId]) {\n this._cellsByApp[appId] = {};\n }\n /** Get all cells with that baseRoleName */\n let provisioned: ProvisionedCell | undefined;\n let clones: Dictionary<ClonedCell> = {};\n for (const [curBaseRoleName, cellInfos] of Object.entries(appInfo.cell_info)) {\n for (const cellInfo of Object.values(cellInfos)) {\n if (baseRoleName !== curBaseRoleName || CellType.Stem in cellInfo) {\n continue;\n }\n if (CellType.Cloned in cellInfo) {\n if (clones[cellInfo.cloned.clone_id]) {\n console.error(`fetchCells() Entry already exist for clone: \"${cellInfo.cloned.clone_id}\"`)\n }\n clones[cellInfo.cloned.clone_id] = cellInfo.cloned;\n } else {\n provisioned = cellInfo.provisioned;\n }\n }\n }\n if (typeof provisioned === 'undefined') {\n Promise.reject(\"Provisioned cell not found for role \" + baseRoleName);\n }\n let roleInstalledCells: CellsForRole = {provisioned: provisioned!, clones}\n /** Store it*/\n this._cellsByApp[appId][baseRoleName] = roleInstalledCells;\n return roleInstalledCells;\n }\n\n\n /** */\n addClone(hcl: HCL, cloneCell: ClonedCell): void {\n if (!this._cellsByApp[hcl.appId]) throw Error(\"addClone() failed. no appId. \" + hcl.toString());\n if (!this._cellsByApp[hcl.appId][hcl.baseRoleName]) throw Error(\"addClone() failed. no baseRoleName. \" + hcl.toString());\n if (hcl.cloneId === undefined) throw Error(\"addClone() failed. Cell is not a CloneCell: \" + hcl.toString());\n\n // let cloneName = hcl.cloneId;\n // if (hcl.cloneId === undefined) {\n // const cloneIndex: number = Object.keys(this._cellsByApp[hcl.appId][hcl.baseRoleName].clones).length;\n // cloneName = createCloneName(hcl.baseRoleName, cloneIndex);\n // }\n this._cellsByApp[hcl.appId][hcl.baseRoleName].clones[cloneCell.clone_id!] = cloneCell;\n // const sCellId = CellIdStr(cloneCell.cell_id);\n // console.log(\"CreateCellProxy() adding to hclMap\", sCellId, cellLoc.asHcl())\n // if (this._hclMap[sCellId]) {\n // this._hclMap[sCellId].push(cellLoc.asHcl());\n // } else {\n // this._hclMap[sCellId] = [cellLoc.asHcl()];\n // }\n }\n\n\n /** */\n createCellProxy(hcl: HCL): CellProxy {\n console.log(\"createCellProxy() for\", hcl.toString());\n /** Make sure cell exists */\n const cell = this.getCell(hcl);\n const sCellId = CellIdStr(cell.id);\n /** Create proxy for this cell if none exist yet, otherwise reuse */\n let cellProxy = this._cellProxies[sCellId];\n if (!cellProxy) {\n /** Create and store Proxy */\n cellProxy = new CellProxy(this, cell, this.defaultTimeout);\n this._cellProxies[sCellId] = cellProxy;\n }\n /** Create CellId -> HCL mapping */\n //console.log(\"CreateCellProxy() adding to hclMap\", sCellId, hcl.toString())\n if (this._hclMap[sCellId]) {\n this._hclMap[sCellId].push(hcl);\n } else {\n this._hclMap[sCellId] = [hcl];\n }\n //console.log(\"createCellProxy() Currently stored hclMap:\", this._hclMap);\n /** Done */\n return cellProxy;\n }\n\n\n /** */\n onSignal(signal: AppSignal): void {\n /** Grabe cell specific handlers */\n const hcls = this.getLocations(signal.cell_id);\n const handlerss: AppSignalCb[][] = hcls? hcls.map((hcl) => this._signalHandlers[hcl.toString()]) : [];\n console.log(\"onSignal()\", hcls.toString(), handlerss);\n /** Grab common handler */\n const allHandlers = this._signalHandlers[\"__all\"];\n if (allHandlers) handlerss.push(allHandlers);\n /** Send to all handlers */\n for (const handlers of handlerss) {\n for (const handler of handlers) {\n handler(signal);\n }\n }\n }\n\n\n /** Store signalHandler to internal handler array */\n addSignalHandler(handler: AppSignalCb, hcl?: HCLString): SignalUnsubscriber {\n console.log(\"addSignalHandler()\", hcl);\n\n hcl = hcl? hcl: \"__all\";\n //console.log(\"addSignalHandler()\", hcl, Object.keys(this._signalHandlers));\n if (!this._signalHandlers[hcl]) {\n this._signalHandlers[hcl] = [handler];\n } else {\n this._signalHandlers[hcl].push(handler);\n }\n /* return tailored unsubscribe function to the caller */\n return {\n unsubscribe: () => {\n // FIXME\n // const maybeHandler = this._signalHandlers[hcl!]\n // if (!maybeHandler) {\n // console.warn(\"unsubscribe failed: Couldn't find signalHandler for\", hcl)\n // return;\n // }\n // delete this._signalHandlers[hcl!];\n }\n };\n }\n\n /** Log all signals received */\n private logSignal(signal: AppSignal): void {\n this._signalLogs.push([Date.now(), CellIdStr(signal.cell_id), signal])\n //console.log(\"signal logged\", this._signalLogs)\n }\n\n\n /** */\n dumpSignals(cellId?: CellId) {\n if (cellId) {\n const cellStr = CellIdStr(cellId);\n console.warn(`Dumping signal logs for cell \"${this._hclMap[cellStr]}\"`)\n const logs = this._signalLogs\n .filter((log) => log[1] == cellStr)\n .map((log) => {\n return { timestamp: prettyDate(new Date(log[0])), zome: log[2].zome_name, payload: log[2].payload}\n });\n console.table(logs);\n } else {\n console.warn(\"Dumping all signal logs\", )\n const logs = this._signalLogs\n .map((log) => {\n const app = this._hclMap[log[1]][0].appId\n const cell: string = this._hclMap[log[1]][0].roleName;\n return { timestamp: prettyDate(new Date(log[0])), app, cell, zome: log[2].zome_name, payload: log[2].payload}\n });\n console.table(logs);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ConductorAppProxy.js","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppApi,\n AppInfoRequest,\n AppInfoResponse,\n AppSignal,\n AppSignalCb,\n AppWebsocket,\n CallZomeRequest,\n CellId,\n InstalledAppId,\n CreateCloneCellRequest,\n DisableCloneCellRequest,\n EnableCloneCellRequest,\n ClonedCell,\n CellType,\n ProvisionedCell,\n encodeHashToBase64,\n} from \"@holochain/client\";\nimport { CellProxy } from \"./CellProxy\";\nimport {CellIdStr, RoleCellsMap, BaseRoleName, CellsForRole} from \"./types\";\nimport {areCellsEqual, Dictionary, prettyDate, printAppInfo} from \"./utils\";\nimport {HCL, HCLString} from \"./hcl\";\nimport {Cell} from \"./cell\";\n\n\n/** */\nexport interface SignalUnsubscriber {\n unsubscribe: () => void;\n}\n\n\n/**\n * Creates, connects and holds a appWebsocket.\n * Creates and holds Cell proxies for this appWebsocket.\n * Maintains a mapping between CellIds and HCLs\n * Handles SignalHandlers per HCL\n * Stores appSignal logs\n * TODO Implement Singleton per App port?\n */\nexport class ConductorAppProxy implements AppApi {\n\n /** -- Fields -- */\n\n private _appWs!: AppWebsocket;\n\n /** Signal log: [Timestamp, CellIdStr, Signal] */\n private _signalLogs: [number, CellIdStr, AppSignal][] = [];\n /** Map cells per App: InstalledAppId -> (BaseRoleName -> CellsForRole) */\n private _cellsByApp: Dictionary<RoleCellsMap> = {};\n /** Map cell locations: CellIdStr -> HCL[] */\n private _hclMap: Dictionary<HCL[]> = {};\n /** Store handlers per cell location: HCLString -> AppSignalCb[] */\n private _signalHandlers: Dictionary<AppSignalCb[]> = {};\n /** Store cell proxies per cell: CellIdStr -> CellProxy */\n private _cellProxies: Dictionary<CellProxy> = {};\n\n\n /** -- Getters -- */\n\n /** Check this after connecting since AppWebsocket can shamelessly override the provided args. */\n get appIdOfShame(): InstalledAppId | undefined { return this._appWs.overrideInstalledAppId;}\n\n /** */\n getAppCells(appId: InstalledAppId): RoleCellsMap | undefined {\n return this._cellsByApp[appId];\n }\n\n /** */\n getLocations(cellId: CellId): HCL[] | undefined {\n return this._hclMap[CellIdStr(cellId)];\n }\n\n /** */\n getCell(hcl: HCL): Cell {\n const roleCellsMap = this._cellsByApp[hcl.appId];\n if (!roleCellsMap) throw Error(`getCell() failed. No hApp with ID \"${hcl.appId}\" found.`);\n const roleCells = roleCellsMap[hcl.baseRoleName];\n if (!roleCells) throw Error(`getCell() failed: BaseRoleName \"${hcl.baseRoleName}\" not found in happ \"${hcl.appId}\"`);\n let cell = roleCells.provisioned;\n if (hcl.cloneId !== undefined) {\n cell = roleCells.clones[hcl.cloneId];\n if (!cell) {\n throw Error(`getCell() failed: clone \"${hcl.cloneId}\" not found for role \"${hcl.toString()}\"`);\n }\n }\n return new Cell(cell, hcl.appId, hcl.baseRoleName);\n }\n\n\n /** Get stored CellProxy or attempt to create it */\n getCellProxy(cellIdOrLoc: HCL | CellId): CellProxy {\n if (cellIdOrLoc instanceof HCL) {\n const cell = this.getCell(cellIdOrLoc);\n const maybeProxy = this.getCellProxy(cell.id);\n if (!maybeProxy) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + CellIdStr(cell.id));\n return maybeProxy;\n }\n const sId = CellIdStr(cellIdOrLoc);\n const maybeProxy = this._cellProxies[sId];\n if (maybeProxy === undefined) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + sId);\n return maybeProxy;\n }\n\n\n /** */\n getAppRoles(installedAppId: InstalledAppId): BaseRoleName[] | undefined {\n if (!this._cellsByApp[installedAppId]) return undefined;\n return Object.values(this._cellsByApp[installedAppId]).map((roleCells) => {\n return roleCells.provisioned.name;\n });\n }\n\n\n /** */\n getClones(appId: InstalledAppId, baseRoleName: BaseRoleName): ClonedCell[] {\n const maybeApp = this._cellsByApp[appId]\n if (!maybeApp) return [];\n const roleInstalledCells = maybeApp[baseRoleName];\n if (!roleInstalledCells) return [];\n return Object.values(roleInstalledCells.clones);\n }\n\n\n\n async createCloneCell(request: CreateCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"createCloneCell() called:\", request)\n return this._appWs!.createCloneCell(request);\n }\n\n /** -- AppApi (Passthrough to appWebsocket) -- */\n\n async enableCloneCell(request: EnableCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"enableCloneCell() called:\", request)\n return this._appWs!.enableCloneCell(request);\n }\n\n async disableCloneCell(request: DisableCloneCellRequest): Promise<void> {\n //console.log(\"disableCloneCell() called:\", request)\n return this._appWs!.disableCloneCell(request);\n }\n\n async appInfo(args: AppInfoRequest): Promise<AppInfoResponse> {\n return this._appWs!.appInfo(args);\n }\n\n async callZome(req: CallZomeRequest, timeout?: number): Promise<any> {\n timeout = timeout ? timeout : this.defaultTimeout\n return this._appWs.callZome(req, timeout)\n }\n\n\n /** -- Creation -- */\n\n /** async Factory */\n static async new(port_or_socket: number | AppWebsocket, defaultTimeout?: number): Promise<ConductorAppProxy> {\n if (typeof port_or_socket == 'object') {\n return ConductorAppProxy.fromSocket(port_or_socket);\n } else {\n const timeout = defaultTimeout ? defaultTimeout : 10 * 1000;\n let wsUrl = `ws://localhost:${port_or_socket}`\n try {\n let conductor = new ConductorAppProxy(timeout);\n conductor._appWs = await AppWebsocket.connect(wsUrl, timeout);\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)})\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n }\n\n\n /** */\n private static async fromSocket(appWebsocket: AppWebsocket): Promise<ConductorAppProxy> {\n try {\n let conductor = new ConductorAppProxy(appWebsocket.defaultTimeout);\n conductor._appWs = appWebsocket;\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)})\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n\n\n /** Ctor */\n private constructor(public defaultTimeout: number) {\n /*const _unsub =*/ this.addSignalHandler((sig) => this.logSignal(sig));\n }\n\n\n /** -- Methods -- */\n\n /** */\n async fetchCell(appId: InstalledAppId, cellId: CellId): Promise<Cell> {\n const appInfo = await this.appInfo({installed_app_id: appId});\n //console.log(\"fetchCell\", appInfo);\n if (appInfo == null) {\n return Promise.reject(`getCell() failed. App \"${appId}\" not found on AppWebsocket \"${this._appWs.client.socket.url}\"`);\n }\n for (const cellInfos of Object.values(appInfo.cell_info)) {\n for (const [baseRoleName, cellInfo] of Object.entries(cellInfos)) {\n let cell: Cell;\n try {\n cell = Cell.from(cellInfo, appId, baseRoleName);\n } catch(e:any) {\n // skip stem cell\n continue;\n }\n if (areCellsEqual(cell.id, cellId)) {\n return cell;\n }\n }\n }\n return Promise.reject(\"getCell() failed. Cell not found for app.\");\n }\n\n\n /** Get all cells for a BaseRole in an app */\n async fetchCells(appId: InstalledAppId, baseRoleName: BaseRoleName): Promise<CellsForRole> {\n /** Make sure hApp exists */\n const appInfo = await this.appInfo({installed_app_id: appId});\n if (appInfo == null) {\n return Promise.reject(`fetchCells() failed. App \"${appId}\" not found on AppWebsocket \"${this._appWs.client.socket.url}\"`);\n }\n console.log(\"fetchCells() installedAppInfo:\\n\", printAppInfo(appInfo));\n\n /** Make sure app Object exists */\n if (!this._cellsByApp[appId]) {\n this._cellsByApp[appId] = {};\n }\n /** Get all cells with that baseRoleName */\n let provisioned: ProvisionedCell | undefined;\n let clones: Dictionary<ClonedCell> = {};\n for (const [curBaseRoleName, cellInfos] of Object.entries(appInfo.cell_info)) {\n for (const cellInfo of Object.values(cellInfos)) {\n if (baseRoleName !== curBaseRoleName || CellType.Stem in cellInfo) {\n continue;\n }\n if (CellType.Cloned in cellInfo) {\n if (clones[cellInfo.cloned.clone_id]) {\n console.error(`fetchCells() Entry already exist for clone: \"${cellInfo.cloned.clone_id}\"`)\n }\n clones[cellInfo.cloned.clone_id] = cellInfo.cloned;\n } else {\n provisioned = cellInfo.provisioned;\n }\n }\n }\n if (typeof provisioned === 'undefined') {\n return Promise.reject(\"Provisioned cell not found for role \" + baseRoleName);\n }\n let roleInstalledCells: CellsForRole = {provisioned: provisioned!, clones}\n /** Store it*/\n this._cellsByApp[appId][baseRoleName] = roleInstalledCells;\n return roleInstalledCells;\n }\n\n\n /** */\n addClone(hcl: HCL, cloneCell: ClonedCell): void {\n if (!this._cellsByApp[hcl.appId]) throw Error(\"addClone() failed. no appId. \" + hcl.toString());\n if (!this._cellsByApp[hcl.appId][hcl.baseRoleName]) throw Error(\"addClone() failed. no baseRoleName. \" + hcl.toString());\n if (hcl.cloneId === undefined) throw Error(\"addClone() failed. Cell is not a CloneCell: \" + hcl.toString());\n\n // let cloneName = hcl.cloneId;\n // if (hcl.cloneId === undefined) {\n // const cloneIndex: number = Object.keys(this._cellsByApp[hcl.appId][hcl.baseRoleName].clones).length;\n // cloneName = createCloneName(hcl.baseRoleName, cloneIndex);\n // }\n this._cellsByApp[hcl.appId][hcl.baseRoleName].clones[cloneCell.clone_id!] = cloneCell;\n // const sCellId = CellIdStr(cloneCell.cell_id);\n // console.log(\"CreateCellProxy() adding to hclMap\", sCellId, cellLoc.asHcl())\n // if (this._hclMap[sCellId]) {\n // this._hclMap[sCellId].push(cellLoc.asHcl());\n // } else {\n // this._hclMap[sCellId] = [cellLoc.asHcl()];\n // }\n }\n\n\n /** */\n createCellProxy(hcl: HCL): CellProxy {\n console.log(\"createCellProxy() for\", hcl.toString());\n /** Make sure cell exists */\n const cell = this.getCell(hcl);\n const sCellId = CellIdStr(cell.id);\n /** Create proxy for this cell if none exist yet, otherwise reuse */\n let cellProxy = this._cellProxies[sCellId];\n if (!cellProxy) {\n /** Create and store Proxy */\n cellProxy = new CellProxy(this, cell, this.defaultTimeout);\n this._cellProxies[sCellId] = cellProxy;\n }\n /** Create CellId -> HCL mapping */\n //console.log(\"CreateCellProxy() adding to hclMap\", sCellId, hcl.toString())\n if (this._hclMap[sCellId]) {\n this._hclMap[sCellId].push(hcl);\n } else {\n this._hclMap[sCellId] = [hcl];\n }\n //console.log(\"createCellProxy() Currently stored hclMap:\", this._hclMap);\n /** Done */\n return cellProxy;\n }\n\n\n /** */\n onSignal(signal: AppSignal): void {\n /** Grab cell specific handlers */\n const hcls = this.getLocations(signal.cell_id);\n const handlerss: AppSignalCb[][] = hcls? hcls.map((hcl) => this._signalHandlers[hcl.toString()]) : [];\n console.log(\"onSignal()\", hcls? hcls.toString() : \"unknown cell:\" + encodeHashToBase64(signal.cell_id[0]), handlerss);\n /** Grab common handler */\n const allHandlers = this._signalHandlers[\"__all\"];\n if (allHandlers) handlerss.push(allHandlers);\n /** Send to all handlers */\n for (const handlers of handlerss) {\n for (const handler of handlers) {\n handler(signal);\n }\n }\n }\n\n\n /** Store signalHandler to internal handler array */\n addSignalHandler(handler: AppSignalCb, hcl?: HCLString): SignalUnsubscriber {\n console.log(\"addSignalHandler()\", hcl);\n\n hcl = hcl? hcl: \"__all\";\n //console.log(\"addSignalHandler()\", hcl, Object.keys(this._signalHandlers));\n if (!this._signalHandlers[hcl]) {\n this._signalHandlers[hcl] = [handler];\n } else {\n this._signalHandlers[hcl].push(handler);\n }\n /* return tailored unsubscribe function to the caller */\n return {\n unsubscribe: () => {\n // FIXME\n // const maybeHandler = this._signalHandlers[hcl!]\n // if (!maybeHandler) {\n // console.warn(\"unsubscribe failed: Couldn't find signalHandler for\", hcl)\n // return;\n // }\n // delete this._signalHandlers[hcl!];\n }\n };\n }\n\n /** Log all signals received */\n private logSignal(signal: AppSignal): void {\n this._signalLogs.push([Date.now(), CellIdStr(signal.cell_id), signal])\n //console.log(\"signal logged\", this._signalLogs)\n }\n\n\n /** */\n dumpSignals(cellId?: CellId) {\n if (cellId) {\n const cellStr = CellIdStr(cellId);\n console.warn(`Dumping signal logs for cell \"${this._hclMap[cellStr]}\"`)\n const logs = this._signalLogs\n .filter((log) => log[1] == cellStr)\n .map((log) => {\n return { timestamp: prettyDate(new Date(log[0])), zome: log[2].zome_name, payload: log[2].payload}\n });\n console.table(logs);\n } else {\n console.warn(\"Dumping all signal logs\", )\n const logs = this._signalLogs\n .map((log) => {\n const app = this._hclMap[log[1]][0].appId\n const cell: string = this._hclMap[log[1]][0].roleName;\n return { timestamp: prettyDate(new Date(log[0])), app, cell, zome: log[2].zome_name, payload: log[2].payload}\n });\n console.table(logs);\n }\n }\n}\n"]}
|
package/dist/ZomeProxy.js
CHANGED
|
@@ -30,7 +30,7 @@ export class ZomeProxy extends CellMixin(ZomeSpecific) {
|
|
|
30
30
|
async call(fnName, payload, maybeSecret, timeout) {
|
|
31
31
|
//console.log("ZomeProxy.call", this.zomeName)
|
|
32
32
|
if (!this.constructor.FN_NAMES.includes(fnName)) {
|
|
33
|
-
Promise.reject(`Function "${fnName}()" not part of zome "${this.zomeName}"`);
|
|
33
|
+
return Promise.reject(`Function "${fnName}()" not part of zome "${this.zomeName}"`);
|
|
34
34
|
}
|
|
35
35
|
const cap_secret = maybeSecret
|
|
36
36
|
? maybeSecret
|
|
@@ -43,7 +43,7 @@ export class ZomeProxy extends CellMixin(ZomeSpecific) {
|
|
|
43
43
|
async callBlocking(fnName, payload, maybeSecret, timeout) {
|
|
44
44
|
//console.log("ZomeProxy.call", this.zomeName)
|
|
45
45
|
if (!this.constructor.FN_NAMES.includes(fnName)) {
|
|
46
|
-
Promise.reject(`Function "${fnName}()" not part of zome "${this.zomeName}"`);
|
|
46
|
+
return Promise.reject(`Function "${fnName}()" not part of zome "${this.zomeName}"`);
|
|
47
47
|
}
|
|
48
48
|
const cap_secret = maybeSecret ? maybeSecret : null;
|
|
49
49
|
return this._cellProxy.callZomeBlocking(this.zomeName, fnName, payload, cap_secret, timeout);
|
package/dist/ZomeProxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZomeProxy.js","sourceRoot":"","sources":["../src/ZomeProxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAMjD;;;GAGG;AACH,MAAM,OAAgB,SAAU,SAAQ,SAAS,CAAC,YAAY,CAAC;IAE7D,WAAW;IACX,YAAsB,UAAqB,EAAE,QAAmB;QAC9D,KAAK,EAAE,CAAC;QADY,eAAU,GAAV,UAAU,CAAW;QAEzC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,MAAM,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACpF;SACF;QACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;IAC/B,CAAC;IAGD,4BAA4B;IAC5B,0BAA0B;IAC1B,+BAA+B;IAC/B,6BAA6B;IAC7B,KAAK;IACL,qHAAqH;IACrH,uCAAuC;IACvC,IAAI;IAEJ,qDAAqD;IAC3C,KAAK,CAAC,IAAI,CAAC,MAAoB,EAAE,OAAY,EAAE,WAAuB,EAAE,OAAgB;QAChG,8CAA8C;QAC9C,IAAI,CAAE,IAAI,CAAC,WAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxD,OAAO,CAAC,MAAM,CAAC,aAAa,MAAM,yBAAyB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ZomeProxy.js","sourceRoot":"","sources":["../src/ZomeProxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAMjD;;;GAGG;AACH,MAAM,OAAgB,SAAU,SAAQ,SAAS,CAAC,YAAY,CAAC;IAE7D,WAAW;IACX,YAAsB,UAAqB,EAAE,QAAmB;QAC9D,KAAK,EAAE,CAAC;QADY,eAAU,GAAV,UAAU,CAAW;QAEzC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,MAAM,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACpF;SACF;QACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;IAC/B,CAAC;IAGD,4BAA4B;IAC5B,0BAA0B;IAC1B,+BAA+B;IAC/B,6BAA6B;IAC7B,KAAK;IACL,qHAAqH;IACrH,uCAAuC;IACvC,IAAI;IAEJ,qDAAqD;IAC3C,KAAK,CAAC,IAAI,CAAC,MAAoB,EAAE,OAAY,EAAE,WAAuB,EAAE,OAAgB;QAChG,8CAA8C;QAC9C,IAAI,CAAE,IAAI,CAAC,WAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxD,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,MAAM,yBAAyB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACrF;QACD,MAAM,UAAU,GAAG,WAAW;YAC5B,CAAC,CAAC,WAAW;YACb,uBAAuB;YACvB,mCAAmC;YACjC,CAAC,CAAC,IAAI,CAAC;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACvF,CAAC;IAED,qDAAqD;IAC3C,KAAK,CAAC,YAAY,CAAC,MAAoB,EAAE,OAAY,EAAE,WAAuB,EAAE,OAAgB;QACxG,8CAA8C;QAC9C,IAAI,CAAE,IAAI,CAAC,WAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACxD,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,MAAM,yBAAyB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACrF;QACD,MAAM,UAAU,GAAG,WAAW,CAAA,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;CAEF","sourcesContent":["import {CapSecret, FunctionName, ZomeName} from \"@holochain/client\";\nimport {CellMixin, ZomeSpecific} from \"./mixins\";\nimport {CellProxy} from \"./CellProxy\";\n\nexport type ZomeProxyConstructor = {new(cellProxy: CellProxy, zomeName?: ZomeName): ZomeProxy} & typeof ZomeSpecific;\n\n\n/**\n * ABC for representing the zome function bindings of a Zome.\n * It holds the zomeName and reference to a CellProxy.\n */\nexport abstract class ZomeProxy extends CellMixin(ZomeSpecific) {\n\n /** Ctor */\n constructor(protected _cellProxy: CellProxy, zomeName?: ZomeName) {\n super();\n if (zomeName) {\n this.zomeName = zomeName;\n } else {\n if (!this.defaultZomeName) {\n throw Error(\"zomeName not defined in ZomeProxy subclass \" + this.constructor.name);\n }\n }\n this._cell = _cellProxy.cell;\n }\n\n\n // private _signingProps?: {\n // capSecret: CapSecret;\n // keyPair: nacl.SignKeyPair;\n // signingKey: AgentPubKey;\n // };\n // setSigningProps(signingProps: { capSecret: CapSecret; keyPair: nacl.SignKeyPair; signingKey: AgentPubKey}): void {\n // this._signingProps = signingProps;\n // }\n\n /** Helper for calling a zome function on its zome */\n protected async call(fnName: FunctionName, payload: any, maybeSecret?: CapSecret, timeout?: number): Promise<any> {\n //console.log(\"ZomeProxy.call\", this.zomeName)\n if (!(this.constructor as any).FN_NAMES.includes(fnName)) {\n return Promise.reject(`Function \"${fnName}()\" not part of zome \"${this.zomeName}\"`);\n }\n const cap_secret = maybeSecret\n ? maybeSecret\n // : this._signingProps\n // ? this._signingProps.capSecret\n : null;\n return this._cellProxy.callZome(this.zomeName, fnName, payload, cap_secret, timeout);\n }\n\n /** Helper for calling a zome function on its zome */\n protected async callBlocking(fnName: FunctionName, payload: any, maybeSecret?: CapSecret, timeout?: number): Promise<any> {\n //console.log(\"ZomeProxy.call\", this.zomeName)\n if (!(this.constructor as any).FN_NAMES.includes(fnName)) {\n return Promise.reject(`Function \"${fnName}()\" not part of zome \"${this.zomeName}\"`);\n }\n const cap_secret = maybeSecret? maybeSecret : null;\n return this._cellProxy.callZomeBlocking(this.zomeName, fnName, payload, cap_secret, timeout);\n }\n\n}\n"]}
|
package/dist/cell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell.js","sourceRoot":"","sources":["../src/cell.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AgentPubKeyB64,\r\n CellId,\r\n CellInfo,\r\n CellType,\r\n DnaHashB64,\r\n DnaModifiers,\r\n encodeHashToBase64,\r\n ProvisionedCell, StemCell, ClonedCell, InstalledAppId\r\n} from \"@holochain/client\";\r\nimport {RoleName} from \"@holochain/client/lib/types\";\r\nimport {HCL} from \"./hcl\";\r\nimport {BaseRoleName
|
|
1
|
+
{"version":3,"file":"cell.js","sourceRoot":"","sources":["../src/cell.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AgentPubKeyB64,\r\n CellId,\r\n CellInfo,\r\n CellType,\r\n DnaHashB64,\r\n DnaModifiers,\r\n encodeHashToBase64,\r\n ProvisionedCell, StemCell, ClonedCell, InstalledAppId\r\n} from \"@holochain/client\";\r\nimport {RoleName} from \"@holochain/client/lib/types\";\r\nimport {HCL} from \"./hcl\";\r\nimport {BaseRoleName} from \"./types\";\r\n\r\n\r\nexport type AnyCell = ProvisionedCell | ClonedCell;\r\n\r\n\r\n/**\r\n * Common interface between Provisioned and Cloned cells\r\n */\r\nexport class Cell {\r\n\r\n /** */\r\n static from(cellInfo: CellInfo, appId: InstalledAppId, baseRoleName: BaseRoleName): Cell {\r\n if (CellType.Stem in cellInfo) {\r\n const id = cellInfo.stem.name? cellInfo.stem.name : encodeHashToBase64(cellInfo.stem.dna);\r\n throw Error(\"StemCell cannot be converted to Cell: \" + id);\r\n }\r\n if (CellType.Cloned in cellInfo) {\r\n return new Cell(cellInfo.cloned, appId, baseRoleName);\r\n }\r\n return new Cell(cellInfo.provisioned, appId, baseRoleName);\r\n }\r\n\r\n\r\n /** Ctor */\r\n constructor(private readonly _cell: AnyCell, public readonly appId: InstalledAppId, public readonly baseRoleName: BaseRoleName) {}\r\n\r\n\r\n /** -- Getters -- */\r\n\r\n get id(): CellId { return (this._cell as any).cell_id }\r\n get dnaHash(): DnaHashB64 { return encodeHashToBase64(this.id[0]) }\r\n get agentPubKey(): AgentPubKeyB64 { return encodeHashToBase64(this.id[1]) }\r\n get name(): string {return (this._cell as any).name}\r\n get dnaModifiers(): DnaModifiers {return (this._cell as any).dna_modifiers}\r\n\r\n /** ex: rNamedInteger.0 */\r\n get cloneId(): RoleName | undefined { return (this._cell as any).clone_id }\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n hcl(): HCL {return new HCL(this.appId, this.baseRoleName, this.cloneId)}\r\n\r\n asCloned(): ClonedCell | null {\r\n if (!this.cloneId) { return null}\r\n return this._cell as ClonedCell;\r\n }\r\n\r\n asProvisioned(): ProvisionedCell | null {\r\n if (this.cloneId) { return null}\r\n return this._cell as ProvisionedCell;\r\n }\r\n\r\n /** */\r\n print(): string {\r\n return `Cell \"${this.name}${this.cloneId? \".\" + this.cloneId: \"\"}\": ${this.dnaHash}`;\r\n }\r\n}\r\n\r\n\r\n\r\n/** ... */\r\nexport function intoStem(cellInfo: CellInfo): StemCell | undefined {\r\n if (CellType.Stem in cellInfo) {\r\n return cellInfo.stem;\r\n }\r\n return undefined\r\n}\r\n\r\n/** ... */\r\nexport function asCell(cellInfo: CellInfo): AnyCell | undefined {\r\n if (CellType.Stem in cellInfo) {\r\n return undefined;\r\n }\r\n if (CellType.Cloned in cellInfo) {\r\n return cellInfo.cloned;\r\n }\r\n if (CellType.Provisioned in cellInfo) {\r\n return cellInfo.provisioned;\r\n }\r\n return undefined;\r\n}\r\n"]}
|
package/dist/hcl.js
CHANGED
package/dist/hcl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hcl.js","sourceRoot":"","sources":["../src/hcl.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IAOd,WAAW;IACX,YAAY,KAAqB,EAAE,IAAkB,EAAE,OAAiB;QACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM;IACN,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;IAAA,CAAC;IAGnF,MAAM;IACN,MAAM,CAAC,KAAK,CAAC,IAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,sBAAsB;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,qDAAqD,GAAG,IAAI,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,sDAAsD,GAAG,IAAI,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAGD,MAAM;IACN,QAAQ;QACN,IAAI,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;QACzD,
|
|
1
|
+
{"version":3,"file":"hcl.js","sourceRoot":"","sources":["../src/hcl.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IAOd,WAAW;IACX,YAAY,KAAqB,EAAE,IAAkB,EAAE,OAAiB;QACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM;IACN,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;IAAA,CAAC;IAGnF,MAAM;IACN,MAAM,CAAC,KAAK,CAAC,IAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,sBAAsB;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,qDAAqD,GAAG,IAAI,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,sDAAsD,GAAG,IAAI,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAGD,MAAM;IACN,QAAQ;QACN,IAAI,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;QACzD,sCAAsC;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA;SAC1B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,MAAM;IACN,OAAO,KAAa,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAA,CAAC;IAGvD,MAAM;IACN,KAAK,CAAC,GAAQ;QACZ,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAE,OAAO,KAAK,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAEF","sourcesContent":["import {InstalledAppId} from \"@holochain/client\";\nimport {BaseRoleName, CloneId} from \"./types\";\n\n\n/** -- HCL: Holochain Cell Locator -- */\n\nexport type HCLString = string;\n\n/**\n * `cell:/<appId>/<BaseRoleName>/<cloneId>`\n * Examples\n * `cell:/where/profiles`\n * `cell:/chatApp/channel/channel.2`\n */\nexport class HCL {\n\n public readonly appId: InstalledAppId;\n public readonly baseRoleName: BaseRoleName;\n /** A Cell can have a cloneId if it's a cloneCell */\n public readonly cloneId?: CloneId;\n\n /** Ctor */\n constructor(appId: InstalledAppId, role: BaseRoleName, cloneId?: CloneId) {\n this.appId = appId;\n this.baseRoleName = role;\n this.cloneId = cloneId;\n }\n\n /** */\n get roleName(): string { return this.isClone()? this.cloneId : this.baseRoleName };\n\n\n /** */\n static parse(sHcl: HCLString): HCL {\n const subs = sHcl.split('/');\n //console.log({subs});\n if (subs[0] !== \"cell:\") throw Error(\"HCL.parse() Bad string format: \" + sHcl);\n if (subs.length < 2) throw Error(\"HCL.parse() Bad string format. Too few components: \" + sHcl);\n if (subs.length > 4) throw Error(\"HCL.parse() Bad string format. Too many components: \" + sHcl);\n if (subs.length == 4) {\n return new HCL(subs[1], subs[2], subs[3]);\n }\n return new HCL(subs[1], subs[2]);\n }\n\n\n /** */\n toString(): HCLString {\n let hcl = \"cell:/\" + this.appId + \"/\" + this.baseRoleName\n //const maybeCloneName = this.cloneId;\n if (this.isClone()) {\n hcl += \"/\" + this.cloneId\n }\n return hcl;\n }\n\n\n /** */\n isClone(): boolean {return this.cloneId !== undefined;}\n\n\n /** */\n match(hcl: HCL): boolean {\n if (this.appId != hcl.appId) return false;\n if (this.baseRoleName != hcl.baseRoleName) return false;\n if (hcl.isClone()) {\n if (!this.isClone()) return false;\n if (hcl.cloneId != this.cloneId) return false;\n }\n return true;\n }\n\n}\n"]}
|
package/dist/mixins.js
CHANGED
|
@@ -11,7 +11,6 @@ export function CellMixin(Base) {
|
|
|
11
11
|
get cell() { if (!this._cell)
|
|
12
12
|
throw Error("Cell field not set for object"); return this._cell; }
|
|
13
13
|
}
|
|
14
|
-
;
|
|
15
14
|
return ACell;
|
|
16
15
|
}
|
|
17
16
|
//export const CellSpecific = CellMixin(Empty);
|
|
@@ -40,7 +39,6 @@ export function ZomeMixin(Base) {
|
|
|
40
39
|
});
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
;
|
|
44
42
|
return AZomeSpecific;
|
|
45
43
|
}
|
|
46
44
|
export const ZomeSpecific = ZomeMixin(Empty);
|
package/dist/mixins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,KAAK;IAChB,YAAY,GAAG,IAAW,IAAG,CAAC;CAC/B;AAGD,mGAAmG;AAEnG;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,KAAM,SAAQ,IAAI;QAM/B,IAAI,IAAI,KAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAE,CAAC,OAAO,IAAI,CAAC,KAAM,CAAA,CAAC,CAAC;KAExG;
|
|
1
|
+
{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,KAAK;IAChB,YAAY,GAAG,IAAW,IAAG,CAAC;CAC/B;AAGD,mGAAmG;AAEnG;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,KAAM,SAAQ,IAAI;QAM/B,IAAI,IAAI,KAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAE,CAAC,OAAO,IAAI,CAAC,KAAM,CAAA,CAAC,CAAC;KAExG;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+CAA+C;AAI/C,mGAAmG;AAEnG;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,aAAc,SAAQ,IAAI;QAOvC,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,WAAoC,CAAC,iBAAiB,CAAA;QAC9E,CAAC;QAED,IAAI,eAAe;YACjB,OAAQ,IAAI,CAAC,WAAoC,CAAC,iBAAiB,CAAC;QACtE,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO;YACT,MAAM,OAAO,GAAI,IAAI,CAAC,WAAoC,CAAC,QAAQ,CAAC;YACpE,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACpF;YACD,OAAQ,OAA0B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import {\n FunctionName,\n ZomeName\n} from \"@holochain/client\";\nimport {Cell} from \"./cell\";\n\ntype Constructor<T> = {new (): T};\ntype GConstructor<T = {}> = new (...args: any[]) => T;\nexport type AbstractConstructor<T = {}> = abstract new (...args: any[]) => T\n\n\nexport class Empty {\n constructor(...args: any[]) {}\n}\n\n\n/** ------------------------------------------------------------------------------------------- **/\n\n/**\n * Mixin for Cell bound classes.\n * A Cell bound class must have a \"Provisioned\" or \"Cloned\" cell from @holochain/client\n */\nexport function CellMixin<TBase extends AbstractConstructor>(Base: TBase) {\n abstract class ACell extends Base {\n // constructor(...args: any[]){\n // super(args);\n // }\n _cell?: Cell;\n\n get cell(): Cell { if (!this._cell) throw Error(\"Cell field not set for object\") ; return this._cell! }\n\n }\n\n return ACell;\n}\n\n//export const CellSpecific = CellMixin(Empty);\n\n\n\n/** ------------------------------------------------------------------------------------------- **/\n\n/**\n * Mixin for Zome bound classes.\n * A Zome bound class must have a zome name and a list of zome functions\n */\nexport function ZomeMixin<TBase extends AbstractConstructor>(Base: TBase) {\n abstract class AZomeSpecific extends Base {\n\n static readonly DEFAULT_ZOME_NAME: ZomeName;\n zomeName: ZomeName;\n\n static readonly FN_NAMES: FunctionName[];\n\n constructor(...args: any[]){\n super(args);\n this.zomeName = (this.constructor as typeof AZomeSpecific).DEFAULT_ZOME_NAME\n }\n\n get defaultZomeName(): ZomeName {\n return (this.constructor as typeof AZomeSpecific).DEFAULT_ZOME_NAME;\n }\n\n /** Tuple array with zome name */\n get fnNames(): [ZomeName, FunctionName][] {\n const fnNames = (this.constructor as typeof AZomeSpecific).FN_NAMES;\n if (!fnNames) {\n throw Error(\"FN_NAMES not defined in ZomeProxy subclass \" + this.constructor.name);\n }\n return (fnNames as FunctionName[]).map((fnName) => {\n return [this.zomeName, fnName]\n })\n }\n }\n\n return AZomeSpecific;\n}\n\nexport const ZomeSpecific = ZomeMixin(Empty);\n\n"]}
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,10 @@ import { AgentPubKey, DnaHash } from "@holochain/client/lib/types";
|
|
|
3
3
|
import { Dictionary } from "./utils";
|
|
4
4
|
export type BaseRoleName = string;
|
|
5
5
|
export type CloneIndex = number;
|
|
6
|
+
export type EntryDef = any;
|
|
7
|
+
export type EntryDefsCallbackResult = {
|
|
8
|
+
Defs: EntryDef[];
|
|
9
|
+
};
|
|
6
10
|
/** */
|
|
7
11
|
export type CellsForRole = {
|
|
8
12
|
provisioned: ProvisionedCell;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,GAEnB,MAAM,mBAAmB,CAAC;AA2B3B,oDAAoD;AACpD,MAAM,UAAU,eAAe,CAAC,YAA0B,EAAE,UAAsB;IAChF,oDAAoD;IACpD,OAAO,EAAE,GAAG,YAAY,GAAG,GAAG,GAAG,UAAU,CAAC;AAC9C,CAAC;AAED,MAAM;AACN,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,qDAAqD;QACrD,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAe,CAAC,CAAC;AAClE,CAAC;AAOD,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAE9B,MAAM,UAAU,SAAS,CAAC,UAA4B,EAAE,GAAiB;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC7B,OAAO,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACvG;IACD,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;KAC7D;IACD,OAAO,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM;AACN,MAAM,UAAU,UAAU,CAAC,GAAc;IACvC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,MAAM,KAAK,CAAC,8CAA8C,CAAC,CAAC;KAC7D;IACD,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACvE,CAAC","sourcesContent":["import {\n CellId,\n decodeHashFromBase64,\n encodeHashToBase64,\n RoleName, ClonedCell, ProvisionedCell,\n} from \"@holochain/client\";\nimport {AgentPubKey, DnaHash} from \"@holochain/client/lib/types\";\nimport {Dictionary} from \"./utils\";\n\n\nexport type BaseRoleName = string;\nexport type CloneIndex = number;\n\n\nexport type EntryDef = any; // FIXME\nexport type EntryDefsCallbackResult = {Defs: EntryDef[]}\n\n\n/** */\nexport type CellsForRole = {\n //baseRoleName: BaseRoleName,\n provisioned: ProvisionedCell,\n /** CloneId -> Cell */\n clones: Dictionary<ClonedCell>,\n}\n\n/** BaseRoleName -> RoleCells */\nexport type RoleCellsMap = Dictionary<CellsForRole>;\n\n\n/** -- CloneId -- */\nexport type CloneId = RoleName;\n/** type for string \"<baseRoleName>.<cloneIndex>\" */\nexport function createCloneName(baseRoleName: BaseRoleName, cloneIndex: CloneIndex): string {\n //if (!cloneIndex) return baseRoleName as CloneName;\n return \"\" + baseRoleName + \".\" + cloneIndex;\n}\n\n/** */\nexport function destructureCloneId(cloneId: CloneId): [BaseRoleName, CloneIndex] | undefined {\n const subs = cloneId.split(\".\");\n if (subs.length != 2) {\n //throw Error(`Bad RoleInstance id format: \"${id}\"`);\n return undefined;\n }\n return [subs[0] as BaseRoleName, Number(subs[1]) as CloneIndex];\n}\n\n\n/** -- CellIdStr -- */\n\nexport type CellIdStr = string;\n\nconst CELL_ID_SEPARATOR = \"||\"\n\nexport function CellIdStr(hash_or_id: DnaHash | CellId, key?: AgentPubKey): CellIdStr {\n if (Array.isArray(hash_or_id)) {\n return \"\" + encodeHashToBase64(hash_or_id[0]) + CELL_ID_SEPARATOR + encodeHashToBase64(hash_or_id[1]);\n }\n if (!key) {\n throw Error(\"CellIdStr() failed. AgentPubKey not provided\");\n }\n return \"\" + encodeHashToBase64(hash_or_id) + CELL_ID_SEPARATOR + encodeHashToBase64(key);\n}\n\n/** */\nexport function str2CellId(str: CellIdStr): CellId {\n const subs = str.split(CELL_ID_SEPARATOR);\n if (subs.length != 2) {\n throw Error(\"str2CellId() failed. Bad input string format\");\n }\n return [decodeHashFromBase64(subs[0]), decodeHashFromBase64(subs[1])]\n}\n"]}
|
package/dist/utils.js
CHANGED
|
@@ -62,12 +62,12 @@ export function printAppInfo(appInfo) {
|
|
|
62
62
|
}
|
|
63
63
|
if (CellType.Provisioned in cellInfo) {
|
|
64
64
|
const cell = cellInfo.provisioned;
|
|
65
|
-
print += `\n - ${roleName}
|
|
65
|
+
print += `\n - ${roleName}: ${cell.name} | ${encodeHashToBase64(cell.cell_id[0])}`;
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
68
68
|
if (CellType.Cloned in cellInfo) {
|
|
69
69
|
const cell = cellInfo.cloned;
|
|
70
|
-
print += `\n - ${roleName}.${cell.
|
|
70
|
+
print += `\n - ${roleName}.${cell.clone_id}: ${cell.name} | ${encodeHashToBase64(cell.cell_id[0])}`;
|
|
71
71
|
continue;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -77,7 +77,7 @@ export function printAppInfo(appInfo) {
|
|
|
77
77
|
/** */
|
|
78
78
|
export function printCellsForRole(baseRoleName, cells) {
|
|
79
79
|
let print = `CellsForRole "${baseRoleName}": (${encodeHashToBase64(cells.provisioned.cell_id[1])})\n`;
|
|
80
|
-
print += ` -
|
|
80
|
+
print += ` - Provisioned: ${cells.provisioned.name} | ${encodeHashToBase64(cells.provisioned.cell_id[0])}\n`;
|
|
81
81
|
print += ` - Clones : ${Object.values(cells.clones).length}\n`;
|
|
82
82
|
for (const [cloneId, clone] of Object.entries(cells.clones)) {
|
|
83
83
|
print += ` - (${clone.enabled ? "enabled" : "disabled"})${cloneId}: ${clone.name} | ${encodeHashToBase64(clone.cell_id[0])}\n`;
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {CellId, AppInfo, encodeHashToBase64} from \"@holochain/client\";\nimport {CellType} from \"@holochain/client\";\nimport {intoStem} from \"./cell\";\nimport {BaseRoleName, CellsForRole} from \"./types\";\n\n\nexport declare type Dictionary<T> = {\n [key: string]: T;\n};\n\n/** */\nexport function areArraysEqual(first: Uint8Array, second: Uint8Array) {\n return first.length === second.length && first.every((value, index) => value === second[index])\n}\n\n/** */\nexport function areCellsEqual(cellA: CellId, cellB: CellId) {\n return areArraysEqual(cellA[0], cellB[0]) && areArraysEqual(cellA[1], cellB[1])\n}\n\n/** */\nexport const delay = (ms: number) => new Promise(r => setTimeout(r, ms))\n\n\n/**\n * Checks if obj is a Hash or list of hashes and tries to convert it a B64 or list of B64\n */\nexport function anyToB64(obj: any): any {\n /** Check if it's a hash */\n if (obj instanceof Uint8Array) {\n return encodeHashToBase64(obj);\n } else {\n /** Check if it's an array of hashes */\n if (Array.isArray(obj)) {\n const isUint8Array =\n obj.length > 0 &&\n obj.every((value) => {\n return value instanceof Uint8Array;\n });\n if (isUint8Array) {\n let result = [];\n for (const cur of obj) {\n result.push(encodeHashToBase64(cur));\n }\n return result;\n }\n }\n }\n return obj;\n}\n\n/** -- Pretty print -- */\n\nconst zeroPad = (num: number, places: number) => String(num).padStart(places, '0')\n\nexport function prettyDuration(date: Date): string {\n return date.getSeconds() + \".\" + zeroPad(date.getMilliseconds(), 3)\n}\n\n/** */\nexport function prettyDate(date: Date): string {\n return \"\"\n + zeroPad(date.getHours(), 2)\n + \":\" + zeroPad(date.getMinutes(), 2)\n + \":\" + zeroPad(date.getSeconds(), 2)\n + \".\" + zeroPad(date.getMilliseconds(), 3);\n}\n\n\n\n/** */\nexport function printAppInfo(appInfo: AppInfo): string {\n let print = `Happ \"${appInfo.installed_app_id}\" info: (status: ${JSON.stringify(appInfo.status)})`;\n for (const [roleName, cellInfos] of Object.entries(appInfo.cell_info)) {\n for (const cellInfo of Object.values(cellInfos)) {\n if (CellType.Stem in cellInfo) {\n const stem = intoStem(cellInfo)!;\n print += `\\n - ${roleName}.${stem.name? stem.name : \"unnamed\"}: ${encodeHashToBase64(stem.dna)} (stem)`;\n continue;\n }\n if (CellType.Provisioned in cellInfo) {\n const cell = cellInfo.provisioned;\n print += `\\n - ${roleName}: ${cell.name} | ${encodeHashToBase64(cell.cell_id[0])}`;\n continue;\n }\n if (CellType.Cloned in cellInfo) {\n const cell = cellInfo.cloned;\n print += `\\n - ${roleName}.${cell.clone_id}: ${cell.name} | ${encodeHashToBase64(cell.cell_id[0])}`;\n continue;\n }\n }\n }\n return print;\n}\n\n\n/** */\nexport function printCellsForRole(baseRoleName: BaseRoleName, cells: CellsForRole): string {\n let print = `CellsForRole \"${baseRoleName}\": (${encodeHashToBase64(cells.provisioned.cell_id[1])})\\n`;\n print += ` - Provisioned: ${cells.provisioned.name} | ${encodeHashToBase64(cells.provisioned.cell_id[0])}\\n`;\n print += ` - Clones : ${Object.values(cells.clones).length}\\n`;\n for (const [cloneId, clone] of Object.entries(cells.clones)) {\n print += ` - (${clone.enabled? \"enabled\" : \"disabled\"})${cloneId}: ${clone.name} | ${encodeHashToBase64(clone.cell_id[0])}\\n`;\n }\n return print;\n}\n"]}
|