@ddd-qc/cell-proxy 0.19.13 → 0.19.16
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/CellProxy.d.ts +1 -1
- package/dist/CellProxy.js +1 -1
- package/dist/CellProxy.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
package/dist/CellProxy.d.ts
CHANGED
|
@@ -55,7 +55,7 @@ export declare class CellProxy extends CellProxy_base {
|
|
|
55
55
|
callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown>;
|
|
56
56
|
/**
|
|
57
57
|
* Calls the `entry_defs()` zome function and
|
|
58
|
-
*
|
|
58
|
+
* Returns an array of all the zome's AppEntryNames and Visibility, i.e. (AppEntryName, isPublic)[]
|
|
59
59
|
*/
|
|
60
60
|
callEntryDefs(zomeName: ZomeName): Promise<[string, boolean][]>;
|
|
61
61
|
/**
|
package/dist/CellProxy.js
CHANGED
|
@@ -118,7 +118,7 @@ export class CellProxy extends CellMixin(Empty) {
|
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
120
|
* Calls the `entry_defs()` zome function and
|
|
121
|
-
*
|
|
121
|
+
* Returns an array of all the zome's AppEntryNames and Visibility, i.e. (AppEntryName, isPublic)[]
|
|
122
122
|
*/
|
|
123
123
|
async callEntryDefs(zomeName) {
|
|
124
124
|
//console.log("callEntryDefs()", zomeName)
|
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 {anyToB64, prettyDate, prettyDuration} from \"./utils\";\nimport {CellMixin, Empty} from \"./mixins\";\nimport {Cell} from \"./cell\";\nimport {DnaInfo, EntryDefsCallbackResult, ZomeInfo} from \"./types\";\nimport {Mutex, withTimeout} from \"async-mutex\";\nimport MutexInterface from \"async-mutex/lib/MutexInterface\";\nimport {AppProxy, SignalUnsubscriber} from \"./AppProxy\";\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 AppProxy 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 _appProxy: AppProxy,\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 this._callMutex = withTimeout(new Mutex(), this.defaultTimeout);\n }\n\n\n /** -- Fields -- */\n\n defaultTimeout: number;\n protected _callMutex: MutexInterface;\n\n\n\n /** append only logs */\n private _requestLog: RequestLog[] = []\n private _responseLog: ResponseLog[] = []\n\n\n /** -- Methods -- */\n\n /** */\n addSignalHandler(handler: AppSignalCb): SignalUnsubscriber {\n return this._appProxy.addSignalHandler(handler, this.cell.hcl().toString());\n }\n\n\n /** */\n dumpSignals() {\n this._appProxy.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._appProxy.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 /** Pass call request to conductor proxy and log it */\n logCallTimedout(reqLog: RequestLog): ResponseLog {\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n this._requestLog.push(reqLog);\n const respLog = { requestIndex, failure: \"Waiting for Mutex timed-out\", timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\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 /** Acquire lock */\n let release;\n try {\n release = await this._callMutex.acquire();\n } catch(e) {\n console.warn(\"Waiting for callZomeBlocking mutex timed-out\", e);\n this.logCallTimedout(log)\n return Promise.reject(\"Waiting for callZomeBlocking mutex timed-out\");\n }\n /** Execute */\n const respLog = await this.executeZomeCall(log);\n /** Release */\n release();\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 try {\n await this._callMutex.waitForUnlock();\n } catch(e) {\n console.warn(\"Waiting for callZome mutex timed-out\", e);\n this.logCallTimedout(log);\n return Promise.reject(\"Waiting for callZome mutex 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 * 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\n\n /**\n * Calls the `zome_info()` zome function\n */\n async callZomeInfo(zomeName: ZomeName): Promise<ZomeInfo> {\n console.log(\"callZomeInfo()\", zomeName)\n try {\n const zome_info = await this.callZome(zomeName, \"get_zome_info\", null, null, 10 * 100) as ZomeInfo;\n //console.debug(\"callZomeInfo() for \" + zomeName + \" result:\")\n //console.log({zome_info})\n return zome_info;\n } catch (e) {\n console.error(\"Calling callZomeInfo() on \" + zomeName + \" failed. Make sure `get_zome_info()` is implemented in your zome code. Error: \")\n console.error({ e })\n return Promise.reject(e)\n }\n }\n\n\n /**\n * Calls the `dna_info()` zome function\n */\n async callDnaInfo(zomeName: ZomeName): Promise<DnaInfo> {\n console.log(\"callDnaInfo()\", zomeName)\n try {\n const dna_info = await this.callZome(zomeName, \"get_dna_info\", null, null, 10 * 100) as DnaInfo;\n //console.debug(\"callDnaInfo() for \" + zomeName + \" result:\")\n //console.log({dna_info})\n return dna_info;\n } catch (e) {\n console.error(\"Calling callDnaInfo() on \" + zomeName + \" failed. Make sure `get_dna_info()` is implemented in your zome code. Error: \")\n console.error({ e })\n return Promise.reject(e)\n }\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._appProxy.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":"AAAA,OAAO,EAA0C,kBAAkB,EAAW,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAC,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAC,SAAS,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,aAAa,CAAC;AAsB/C;;;;;GAKG;AACH,MAAM,OAAO,SAAU,SAAQ,SAAS,CAAC,KAAK,CAAC;IAE7C,WAAW;IACX,YACU,SAAmB,EAC3B,IAAU;IACV,mCAAmC;IACnC,cAAuB;QACvB,KAAK,EAAE,CAAC;QAJA,cAAS,GAAT,SAAS,CAAU;QAmB7B,uBAAuB;QACf,gBAAW,GAAiB,EAAE,CAAA;QAC9B,iBAAY,GAAkB,EAAE,CAAA;QAhBtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAClE,CAAC;IAeD,oBAAoB;IAEpB,MAAM;IACN,gBAAgB,CAAC,OAAoB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAGD,MAAM;IACN,WAAW;QACT,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,eAAe,CAAC,MAAkB;QACtC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/E,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC;SAChB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;YACnE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC;SAChB;IACH,CAAC;IAGD,sDAAsD;IACtD,eAAe,CAAC,MAAkB;QAChC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAC/F,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAmB,EAAE,OAAe,EAAE,OAAY,EAAE,UAA4B,EAAE,OAAgB;QACvH,OAAO,GAAG,OAAO,CAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,MAAM,GAAG,GAAG;YACV,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;YACvC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACT,CAAC;QACrB,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,EAAgB,CAAC;QAElF,mBAAmB;QACnB,IAAI,OAAO,CAAC;QACZ,IAAI;YACF,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3C;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;YACzB,OAAO,OAAO,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;SACvE;QACD,cAAc;QACd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAChD,cAAc;QACd,OAAO,EAAE,CAAC;QACV,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACzB,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;SACvC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAGD,MAAM;IACN,KAAK,CAAC,QAAQ,CAAC,SAAmB,EAAE,OAAe,EAAE,OAAY,EAAE,UAA4B,EAAE,OAAgB;QAC/G,OAAO,GAAG,OAAO,CAAA,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,MAAM,GAAG,GAAG;YACV,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;YACvC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACT,CAAC;QACrB,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,EAAgB,CAAC;QAClF,IAAI;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;SACvC;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;SAC/D;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACzB,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;SACvC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAGD;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,QAAkB;QACpC,0CAA0C;QAC1C,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAA4B,CAAC;YAC/G,mEAAmE;YACnE,0BAA0B;YAC1B,IAAI,MAAM,GAAwB,EAAE,CAAA;YACpC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE;gBAChC,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;aAC7D;YACD,uBAAuB;YACvB,OAAO,MAAM,CAAC;SACf;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAA;YACpE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACzB;IACH,CAAC;IAID;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAkB;QACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QACvC,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,CAAa,CAAC;YACnG,8DAA8D;YAC9D,0BAA0B;YAC1B,OAAO,SAAS,CAAC;SAClB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,QAAQ,GAAG,gFAAgF,CAAC,CAAA;YACzI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACzB;IACH,CAAC;IAGD;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAkB;QAClC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;QACtC,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,CAAY,CAAC;YAChG,6DAA6D;YAC7D,yBAAyB;YACzB,OAAO,QAAQ,CAAC;SACjB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,QAAQ,GAAG,+EAA+E,CAAC,CAAA;YACvI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACzB;IACH,CAAC;IAGD,kDAAkD;IAClD,mBAAmB;IACnB,yBAAyB;IACzB,qCAAqC;IACrC,8BAA8B;IAC9B,MAAM;IACN,IAAI;IAEJ,OAAO;IACP,QAAQ,CAAC,QAAmB;QAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC3D,IAAI,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,EAAE;gBACxD,SAAS;aACV;YACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACvG,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC5F,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7I,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChF,MAAM,GAAG,GAAG,QAAQ;gBAClB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBACtF,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;YAChI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QACD,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;QACpF,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,gBAAgB,QAAQ,GAAG,CAAC,CAAC;SAC3C;QACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;CAEF","sourcesContent":["import {AppSignalCb, CallZomeRequest, CapSecret, encodeHashToBase64, ZomeName} from \"@holochain/client\";\nimport {anyToB64, prettyDate, prettyDuration} from \"./utils\";\nimport {CellMixin, Empty} from \"./mixins\";\nimport {Cell} from \"./cell\";\nimport {DnaInfo, EntryDefsCallbackResult, ZomeInfo} from \"./types\";\nimport {Mutex, withTimeout} from \"async-mutex\";\nimport MutexInterface from \"async-mutex/lib/MutexInterface\";\nimport {AppProxy, SignalUnsubscriber} from \"./AppProxy\";\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 AppProxy 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 _appProxy: AppProxy,\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 this._callMutex = withTimeout(new Mutex(), this.defaultTimeout);\n }\n\n\n /** -- Fields -- */\n\n defaultTimeout: number;\n protected _callMutex: MutexInterface;\n\n\n\n /** append only logs */\n private _requestLog: RequestLog[] = []\n private _responseLog: ResponseLog[] = []\n\n\n /** -- Methods -- */\n\n /** */\n addSignalHandler(handler: AppSignalCb): SignalUnsubscriber {\n return this._appProxy.addSignalHandler(handler, this.cell.hcl().toString());\n }\n\n\n /** */\n dumpSignals() {\n this._appProxy.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._appProxy.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 /** Pass call request to conductor proxy and log it */\n logCallTimedout(reqLog: RequestLog): ResponseLog {\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n this._requestLog.push(reqLog);\n const respLog = { requestIndex, failure: \"Waiting for Mutex timed-out\", timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\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 /** Acquire lock */\n let release;\n try {\n release = await this._callMutex.acquire();\n } catch(e) {\n console.warn(\"Waiting for callZomeBlocking mutex timed-out\", e);\n this.logCallTimedout(log)\n return Promise.reject(\"Waiting for callZomeBlocking mutex timed-out\");\n }\n /** Execute */\n const respLog = await this.executeZomeCall(log);\n /** Release */\n release();\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 try {\n await this._callMutex.waitForUnlock();\n } catch(e) {\n console.warn(\"Waiting for callZome mutex timed-out\", e);\n this.logCallTimedout(log);\n return Promise.reject(\"Waiting for callZome mutex 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 * Calls the `entry_defs()` zome function and\n * Returns an array of all the zome's AppEntryNames and Visibility, i.e. (AppEntryName, isPublic)[]\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\n\n /**\n * Calls the `zome_info()` zome function\n */\n async callZomeInfo(zomeName: ZomeName): Promise<ZomeInfo> {\n console.log(\"callZomeInfo()\", zomeName)\n try {\n const zome_info = await this.callZome(zomeName, \"get_zome_info\", null, null, 10 * 100) as ZomeInfo;\n //console.debug(\"callZomeInfo() for \" + zomeName + \" result:\")\n //console.log({zome_info})\n return zome_info;\n } catch (e) {\n console.error(\"Calling callZomeInfo() on \" + zomeName + \" failed. Make sure `get_zome_info()` is implemented in your zome code. Error: \")\n console.error({ e })\n return Promise.reject(e)\n }\n }\n\n\n /**\n * Calls the `dna_info()` zome function\n */\n async callDnaInfo(zomeName: ZomeName): Promise<DnaInfo> {\n console.log(\"callDnaInfo()\", zomeName)\n try {\n const dna_info = await this.callZome(zomeName, \"get_dna_info\", null, null, 10 * 100) as DnaInfo;\n //console.debug(\"callDnaInfo() for \" + zomeName + \" result:\")\n //console.log({dna_info})\n return dna_info;\n } catch (e) {\n console.error(\"Calling callDnaInfo() on \" + zomeName + \" failed. Make sure `get_dna_info()` is implemented in your zome code. Error: \")\n console.error({ e })\n return Promise.reject(e)\n }\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._appProxy.getLocations(this.cell.id)}\"`)\n if (zomeName) {\n console.warn(` - For zome \"${zomeName}\"`);\n }\n console.table(result)\n }\n\n}\n\n"]}
|
package/dist/utils.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export declare function areArraysEqual(first: Uint8Array, second: Uint8Array): b
|
|
|
9
9
|
export declare function areCellsEqual(cellA: CellId, cellB: CellId): boolean;
|
|
10
10
|
/** */
|
|
11
11
|
export declare const delay: (ms: number) => Promise<unknown>;
|
|
12
|
+
/** convert Pascal case to snake case */
|
|
13
|
+
export declare const snake: (str: any) => any;
|
|
12
14
|
/**
|
|
13
15
|
* Checks if obj is a Hash or list of hashes and tries to convert it a B64 or list of B64
|
|
14
16
|
*/
|
package/dist/utils.js
CHANGED
|
@@ -11,6 +11,8 @@ export function areCellsEqual(cellA, cellB) {
|
|
|
11
11
|
}
|
|
12
12
|
/** */
|
|
13
13
|
export const delay = (ms) => new Promise(r => setTimeout(r, ms));
|
|
14
|
+
/** convert Pascal case to snake case */
|
|
15
|
+
export const snake = str => str[0].toLowerCase() + str.slice(1, str.length).replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
|
|
14
16
|
/**
|
|
15
17
|
* Checks if obj is a Hash or list of hashes and tries to convert it a B64 or list of B64
|
|
16
18
|
*/
|
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,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAQhC,MAAM;AACN,MAAM,UAAU,cAAc,CAAC,KAAiB,EAAE,MAAkB;IAClE,OAAO,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AACjG,CAAC;AAED,MAAM;AACN,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,KAAa;IACxD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACjF,CAAC;AAED,OAAO;AACP,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;
|
|
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/** convert Pascal case to snake case */\nexport const snake = str => str[0].toLowerCase() + str.slice(1, str.length).replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-qc/cell-proxy",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.16",
|
|
4
4
|
"description": "Proxy classes and helpers for managing a Holochain AppWebsocket",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
12
|
"lint": "eslint --ext .ts .",
|
|
13
|
-
"build": "tsc"
|
|
13
|
+
"build": "rm -rf dist && tsc"
|
|
14
14
|
},
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|