@ddd-qc/cell-proxy 0.12.4 → 0.13.1

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.
@@ -30,6 +30,8 @@ export declare class ConductorAppProxy implements AppApi {
30
30
  /** Store cell proxies per cell: CellIdStr -> CellProxy */
31
31
  private _cellProxies;
32
32
  /** -- Getters -- */
33
+ /** Check this after connecting since AppWebsocket can shamelessly override the provided args. */
34
+ get appIdOfShame(): InstalledAppId | undefined;
33
35
  /** */
34
36
  getAppCells(appId: InstalledAppId): RoleCellsMap | undefined;
35
37
  /** */
@@ -14,6 +14,8 @@ import { Cell } from "./cell";
14
14
  */
15
15
  export class ConductorAppProxy {
16
16
  /** -- Getters -- */
17
+ /** Check this after connecting since AppWebsocket can shamelessly override the provided args. */
18
+ get appIdOfShame() { return this._appWs.overrideInstalledAppId; }
17
19
  /** */
18
20
  getAppCells(appId) {
19
21
  return this._cellsByApp[appId];
@@ -1 +1 @@
1
- {"version":3,"file":"ConductorAppProxy.js","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAC4D,YAAY,EAEQ,QAAQ,GAC9F,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAC,SAAS,EAA2C,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAC,aAAa,EAAc,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAC,GAAG,EAAY,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAS5B;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IAkB5B,oBAAoB;IAEpB,MAAM;IACN,WAAW,CAAC,KAAqB;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;IACN,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM;IACN,OAAO,CAAC,GAAQ;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY;YAAE,MAAM,KAAK,CAAC,sCAAsC,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS;YAAE,MAAM,KAAK,CAAC,mCAAmC,GAAG,CAAC,YAAY,wBAAwB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACrH,IAAI,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC;QACjC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;YAC7B,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,yBAAyB,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;aAChG;SACF;QACD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IAGD,mDAAmD;IACnD,YAAY,CAAC,WAAyB;QACpC,IAAI,WAAW,YAAY,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU;gBAAE,MAAM,KAAK,CAAC,kDAAkD,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtG,OAAO,UAAU,CAAC;SACnB;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,UAAU,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC,kDAAkD,GAAG,GAAG,CAAC,CAAC;QACpG,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,MAAM;IACN,WAAW,CAAC,cAA8B;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;YAAE,OAAO,SAAS,CAAC;QACxD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACvE,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,MAAM;IACN,SAAS,CAAC,KAAqB,EAAE,YAA0B;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,kBAAkB;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAID,KAAK,CAAC,eAAe,CAAC,OAA+B;QACnD,mDAAmD;QACnD,OAAO,IAAI,CAAC,MAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,iDAAiD;IAEjD,KAAK,CAAC,eAAe,CAAC,OAA+B;QACnD,mDAAmD;QACnD,OAAO,IAAI,CAAC,MAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAgC;QACrD,oDAAoD;QACpD,IAAI,CAAC,MAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAoB;QAChC,OAAO,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAoB,EAAE,OAAgB;QACnD,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAGD,qBAAqB;IAErB,oBAAoB;IACpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,cAAqC,EAAE,cAAuB;QAC7E,IAAI,OAAO,cAAc,IAAI,QAAQ,EAAE;YACrC,OAAQ,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;SACtD;aAAM;YACL,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;YAC5D,IAAI,KAAK,GAAG,kBAAkB,cAAc,EAAE,CAAA;YAC9C,IAAI;gBACF,IAAI,SAAS,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC/C,SAAS,CAAC,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9D,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,GAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;gBACjE,OAAO,SAAS,CAAC;aAClB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAA;gBAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;aAClE;SACF;IACH,CAAC;IAGD,MAAM;IACE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA0B;QACxD,IAAI;YACF,IAAI,SAAS,GAAG,IAAI,iBAAiB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACnE,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC;YAChC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,GAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;YACjE,OAAO,SAAS,CAAC;SAClB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAA;YAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;SAClE;IACH,CAAC;IAGD,WAAW;IACX,YAA2B,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;QA5IjD,iDAAiD;QACzC,gBAAW,GAAqC,EAAE,CAAC;QAC3D,0EAA0E;QAClE,gBAAW,GAA6B,EAAE,CAAC;QACnD,6CAA6C;QACrC,YAAO,GAAsB,EAAE,CAAC;QACxC,mEAAmE;QAC3D,oBAAe,GAA8B,EAAE,CAAC;QACxD,0DAA0D;QAClD,iBAAY,GAA0B,EAAE,CAAC;QAoI/C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IAGD,oBAAoB;IAEpB,MAAM;IACN,KAAK,CAAC,SAAS,CAAC,KAAqB,EAAE,MAAc;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAC,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC;QAC9D,oCAAoC;QACpC,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,0BAA0B,KAAK,gCAAgC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;SAChH;QACD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACxD,KAAK,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAChE,IAAI,IAAU,CAAC;gBACf,IAAI;oBACF,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;iBACjD;gBAAC,OAAM,CAAK,EAAE;oBACb,iBAAiB;oBACjB,SAAS;iBACV;gBACD,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;oBAClC,OAAO,IAAI,CAAC;iBACb;aACF;SACF;QACD,OAAO,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAA;IAC7D,CAAC;IAGD,6CAA6C;IAC7C,KAAK,CAAC,UAAU,CAAC,KAAqB,EAAE,YAA0B;QAChE,4BAA4B;QAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAC,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,OAAO,CAAC,MAAM,CAAC,6BAA6B,KAAK,gCAAgC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;SACnH;QACD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAEvE,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SAC9B;QACD,2CAA2C;QAC3C,IAAI,WAAwC,CAAC;QAC7C,IAAI,MAAM,GAA2B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC5E,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,YAAY,KAAK,eAAe,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,EAAE;oBACjE,SAAS;iBACV;gBACD,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE;oBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;wBACpC,OAAO,CAAC,KAAK,CAAC,gDAAgD,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;qBAC3F;oBACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;iBACpD;qBAAM;oBACL,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;iBACpC;aACF;SACF;QACD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;YACtC,OAAO,CAAC,MAAM,CAAC,sCAAsC,GAAG,YAAY,CAAC,CAAC;SACvE;QACD,IAAI,kBAAkB,GAAiB,EAAC,WAAW,EAAE,WAAY,EAAE,MAAM,EAAC,CAAA;QAC1E,cAAc;QACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC;QAC3D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAGD,MAAM;IACN,QAAQ,CAAC,GAAQ,EAAE,SAAqB;QACtC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC,+BAA+B,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;YAAE,MAAM,KAAK,CAAC,sCAAsC,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzH,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC,8CAA8C,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE5G,+BAA+B;QAC/B,mCAAmC;QACnC,yGAAyG;QACzG,+DAA+D;QAC/D,IAAI;QACJ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAS,CAAC,GAAG,SAAS,CAAC;QACtF,gDAAgD;QAChD,8EAA8E;QAC9E,+BAA+B;QAC/B,iDAAiD;QACjD,WAAW;QACX,+CAA+C;QAC/C,IAAI;IACN,CAAC;IAGD,MAAM;IACN,eAAe,CAAC,GAAQ;QACtB,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,4BAA4B;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,oEAAoE;QACpE,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE;YACd,6BAA6B;YAC7B,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;SACxC;QACD,mCAAmC;QACnC,4EAA4E;QAC5E,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC/B;QACD,0EAA0E;QAC1E,WAAW;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,MAAM;IACN,QAAQ,CAAC,MAAiB;QACxB,mCAAmC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAqB,IAAI,CAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;QACtD,2BAA2B;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,WAAW;YAAE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,2BAA2B;QAC3B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,OAAO,CAAC,MAAM,CAAC,CAAC;aACjB;SACF;IACH,CAAC;IAGD,oDAAoD;IACpD,gBAAgB,CAAC,OAAoB,EAAE,GAAe;QACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAEvC,GAAG,GAAG,GAAG,CAAA,CAAC,CAAC,GAAG,CAAA,CAAC,CAAC,OAAO,CAAC;QACxB,4EAA4E;QAC5E,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;QACD,wDAAwD;QACxD,OAAO;YACL,WAAW,EAAE,GAAG,EAAE;gBAClB,QAAQ;gBACR,oDAAoD;gBACpD,yBAAyB;gBACzB,+EAA+E;gBAC/E,cAAc;gBACd,MAAM;gBACN,uCAAuC;YACvC,CAAC;SACF,CAAC;IACJ,CAAC;IAED,+BAA+B;IACvB,SAAS,CAAC,MAAiB;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QACtE,gDAAgD;IAClD,CAAC;IAGD,MAAM;IACN,WAAW,CAAC,MAAe;QACzB,IAAI,MAAM,EAAE;YACV,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;iBAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;iBAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAA;YACpG,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACrB;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAG,CAAA;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;iBAC1B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBACzC,MAAM,IAAI,GAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACtD,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAC,CAAA;YAC/G,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACrB;IACH,CAAC;CACF","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 /** */\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, 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/cell-proxy",
3
- "version": "0.12.4",
3
+ "version": "0.13.1",
4
4
  "description": "Proxy classes and helpers for managing a Holochain AppWebsocket",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",