@ddd-qc/lit-happ 0.33.9 → 0.34.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.
Files changed (40) hide show
  1. package/dist/DnaElement.d.ts +3 -3
  2. package/dist/DnaElement.d.ts.map +1 -1
  3. package/dist/DnaElement.js.map +1 -1
  4. package/dist/DnaMultiElement.d.ts +4 -4
  5. package/dist/DnaMultiElement.d.ts.map +1 -1
  6. package/dist/DnaMultiElement.js.map +1 -1
  7. package/dist/DnaViewModel.d.ts +3 -3
  8. package/dist/DnaViewModel.d.ts.map +1 -1
  9. package/dist/DnaViewModel.js +1 -1
  10. package/dist/DnaViewModel.js.map +1 -1
  11. package/dist/HappElement.d.ts +1 -1
  12. package/dist/HappElement.d.ts.map +1 -1
  13. package/dist/HappElement.js +14 -8
  14. package/dist/HappElement.js.map +1 -1
  15. package/dist/HappMultiElement.d.ts +2 -2
  16. package/dist/HappMultiElement.d.ts.map +1 -1
  17. package/dist/HappMultiElement.js +13 -6
  18. package/dist/HappMultiElement.js.map +1 -1
  19. package/dist/HappViewModel.js.map +1 -1
  20. package/dist/NetworkCaller.d.ts +5 -1
  21. package/dist/NetworkCaller.d.ts.map +1 -1
  22. package/dist/NetworkCaller.js +72 -1
  23. package/dist/NetworkCaller.js.map +1 -1
  24. package/dist/ViewModel.js.map +1 -1
  25. package/dist/ZomeElement.d.ts +1 -1
  26. package/dist/ZomeElement.d.ts.map +1 -1
  27. package/dist/ZomeElement.js.map +1 -1
  28. package/dist/ZomeMultiElement.d.ts +2 -2
  29. package/dist/ZomeMultiElement.d.ts.map +1 -1
  30. package/dist/ZomeMultiElement.js.map +1 -1
  31. package/dist/ZomeViewModel.d.ts +1 -1
  32. package/dist/ZomeViewModel.d.ts.map +1 -1
  33. package/dist/ZomeViewModel.js.map +1 -1
  34. package/dist/ZomeViewModelWithSignals.js.map +1 -1
  35. package/dist/elements/cell-context.js.map +1 -1
  36. package/dist/elements/cell-multi-context.js.map +1 -1
  37. package/dist/elements/dvm-inspect.js.map +1 -1
  38. package/dist/elements/entry-def-select.js.map +1 -1
  39. package/dist/globals.js.map +1 -1
  40. package/package.json +4 -4
@@ -3,11 +3,11 @@ import { DnaViewModel } from "./DnaViewModel";
3
3
  import { BaseRoleName, Cell } from "@ddd-qc/cell-proxy";
4
4
  declare const DnaElement_base: (abstract new (...args: any[]) => {
5
5
  _cell?: Cell;
6
- readonly cell: Cell;
6
+ get cell(): Cell;
7
7
  }) & ((abstract new (...args: any[]) => {
8
- baseRoleName: string;
8
+ baseRoleName: BaseRoleName;
9
9
  }) & {
10
- readonly DEFAULT_BASE_ROLE_NAME: string;
10
+ readonly DEFAULT_BASE_ROLE_NAME: BaseRoleName;
11
11
  }) & typeof LitElement;
12
12
  export declare class DnaElement<P, DVM extends DnaViewModel> extends DnaElement_base {
13
13
  constructor(baseRoleName?: BaseRoleName);
@@ -1 +1 @@
1
- {"version":3,"file":"DnaElement.d.ts","sourceRoot":"","sources":["../src/DnaElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAE,IAAI,EAAY,MAAM,oBAAoB,CAAC;;;;;;;;;AAOjE,qBAAa,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,YAAY,CAAE,SAAQ,eAAgC;gBAG/E,YAAY,CAAC,EAAE,YAAY;IAQ9B,SAAS,CAAC,IAAI,EAAG,GAAG,CAAC;IAI9B,iBAAiB,EAAG,IAAI,CAAC;IAGzB,WAAW,EAAG,CAAC,CAAC;IAGhB,OAAO,CAAC,SAAS,CAAC,CAAC;IAMnB,SAAS,CAAC,UAAU,CAAC,YAAY,GAAE,OAAe;cAkClC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;cAY1C,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAKtE"}
1
+ {"version":3,"file":"DnaElement.d.ts","sourceRoot":"","sources":["../src/DnaElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAE,IAAI,EAAY,MAAM,oBAAoB,CAAC;;SAMhE,CADuF;;;;;;;AAExF,qBAAa,UAAU,CAAC,CAAC,EAAE,GAAG,SAAS,YAAY,CAAE,SAAQ,eAAgC;gBAG/E,YAAY,CAAC,EAAE,YAAY;IAQ9B,SAAS,CAAC,IAAI,EAAG,GAAG,CAAC;IAI9B,iBAAiB,EAAG,IAAI,CAAC;IAGzB,WAAW,EAAG,CAAC,CAAC;IAGhB,OAAO,CAAC,SAAS,CAAC,CAAC;IAMnB,SAAS,CAAC,UAAU,CAAC,YAAY,GAAE,OAAe;cAkClC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;cAY1C,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAKtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"DnaElement.js","sourceRoot":"","sources":["../src/DnaElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\r\nimport {property, state} from \"lit/decorators.js\";\r\nimport {ContextConsumer, consume, createContext} from \"@lit/context\";\r\nimport {DnaViewModel} from \"./DnaViewModel\";\r\nimport {BaseRoleName, Cell, CellMixin} from \"@ddd-qc/cell-proxy\";\r\nimport {cellContext} from \"./elements/cell-context\";\r\nimport {RoleMixin} from \"./roleMixin\";\r\n\r\n/**\r\n * A LitElement that is bound to a specific DnaViewModel, e.g. a View for the ViewModel\r\n */\r\nexport class DnaElement<P, DVM extends DnaViewModel> extends CellMixin(RoleMixin(LitElement)) {\r\n\r\n /** if BaseRoleName is not provided, subclass must call requestDvm() in its Ctor */\r\n constructor(baseRoleName?: BaseRoleName) {\r\n super();\r\n if (baseRoleName) {\r\n this.baseRoleName = baseRoleName;\r\n }\r\n }\r\n\r\n /** Provided by Context depending on BaseRoleName */\r\n @state() protected _dvm!: DVM;\r\n\r\n @consume({ context: cellContext, subscribe: true})\r\n @property({type: Object, attribute: false})\r\n _cell_via_context!: Cell;\r\n\r\n @property({type: Object, attribute: false, hasChanged: (_v, _old) => true})\r\n perspective!: P;\r\n\r\n // @ts-ignore\r\n private _consumer?;\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n /** */\r\n protected requestDvm(canRerequest: boolean = false) {\r\n /** Consume Context based on given dnaHash */\r\n if (!this._cell_via_context) {\r\n console.error(\"No Cell info found via context in a DnaElement for role:\", this.baseRoleName)\r\n return;\r\n }\r\n /* DVM already requested */\r\n if (!canRerequest && this._consumer) {\r\n return;\r\n }\r\n const contextType = createContext<DVM>('dvm/' + this.cell.name + \"/\" + this.cell.address.dnaId.b64);\r\n console.log(`\\t\\t Requesting context \"${contextType}\"`)\r\n this._consumer = new ContextConsumer(\r\n this,\r\n contextType,\r\n async (value: DVM, _dispose?: () => void): Promise<void> => {\r\n console.log(`\\t\\t Received value for context \"${contextType}\"`)\r\n await this.dvmUpdated(value, this._dvm);\r\n if (this._dvm) {\r\n this._dvm.unsubscribe(this);\r\n }\r\n this._dvm = value;\r\n this._dvm.subscribe(this, 'perspective');\r\n },\r\n false, // true will call twice at init\r\n );\r\n //console.log({consumer})\r\n }\r\n\r\n\r\n /**\r\n * To be overridden by subclasses\r\n * Example: Have a subclass unsubscribe to oldDvm's zvms and subscribe to the new ones\r\n */\r\n protected async dvmUpdated(_newDvm: DVM, _oldDvm?: DVM): Promise<void> {\r\n //console.log(`\\t\\t Default dvmUpdated() called`)\r\n }\r\n\r\n\r\n /** */\r\n override shouldUpdate(changedProperties: PropertyValues<this>) {\r\n if (changedProperties.has(\"_cell_via_context\")) {\r\n this._cell = this._cell_via_context;\r\n }\r\n if (!this._dvm) {\r\n this.requestDvm();\r\n }\r\n return !!this._dvm;\r\n }\r\n\r\n\r\n /** */\r\n protected override willUpdate(changedProperties: PropertyValues<this>) {\r\n if (changedProperties.has(\"_cell_via_context\")) {\r\n this.requestDvm(true);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DnaElement.js","sourceRoot":"","sources":["../src/DnaElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\r\nimport {property, state} from \"lit/decorators.js\";\r\nimport {ContextConsumer, consume, createContext} from \"@lit/context\";\r\nimport {DnaViewModel} from \"./DnaViewModel\";\r\nimport {BaseRoleName, Cell, CellMixin} from \"@ddd-qc/cell-proxy\";\r\nimport {cellContext} from \"./elements/cell-context\";\r\nimport {RoleMixin} from \"./roleMixin\";\r\n\r\n/**\r\n * A LitElement that is bound to a specific DnaViewModel, e.g. a View for the ViewModel\r\n */\r\nexport class DnaElement<P, DVM extends DnaViewModel> extends CellMixin(RoleMixin(LitElement)) {\r\n\r\n /** if BaseRoleName is not provided, subclass must call requestDvm() in its Ctor */\r\n constructor(baseRoleName?: BaseRoleName) {\r\n super();\r\n if (baseRoleName) {\r\n this.baseRoleName = baseRoleName;\r\n }\r\n }\r\n\r\n /** Provided by Context depending on BaseRoleName */\r\n @state() protected _dvm!: DVM;\r\n\r\n @consume({ context: cellContext, subscribe: true})\r\n @property({type: Object, attribute: false})\r\n _cell_via_context!: Cell;\r\n\r\n @property({type: Object, attribute: false, hasChanged: (_v, _old) => true})\r\n perspective!: P;\r\n\r\n // @ts-ignore\r\n private _consumer?;\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n /** */\r\n protected requestDvm(canRerequest: boolean = false) {\r\n /** Consume Context based on given dnaHash */\r\n if (!this._cell_via_context) {\r\n console.error(\"No Cell info found via context in a DnaElement for role:\", this.baseRoleName)\r\n return;\r\n }\r\n /* DVM already requested */\r\n if (!canRerequest && this._consumer) {\r\n return;\r\n }\r\n const contextType = createContext<DVM>('dvm/' + this.cell.name + \"/\" + this.cell.address.dnaId.b64);\r\n console.log(`\\t\\t Requesting context \"${contextType}\"`)\r\n this._consumer = new ContextConsumer(\r\n this,\r\n contextType,\r\n async (value: DVM, _dispose?: () => void): Promise<void> => {\r\n console.log(`\\t\\t Received value for context \"${contextType}\"`)\r\n await this.dvmUpdated(value, this._dvm);\r\n if (this._dvm) {\r\n this._dvm.unsubscribe(this);\r\n }\r\n this._dvm = value;\r\n this._dvm.subscribe(this, 'perspective');\r\n },\r\n false, // true will call twice at init\r\n );\r\n //console.log({consumer})\r\n }\r\n\r\n\r\n /**\r\n * To be overridden by subclasses\r\n * Example: Have a subclass unsubscribe to oldDvm's zvms and subscribe to the new ones\r\n */\r\n protected async dvmUpdated(_newDvm: DVM, _oldDvm?: DVM): Promise<void> {\r\n //console.log(`\\t\\t Default dvmUpdated() called`)\r\n }\r\n\r\n\r\n /** */\r\n override shouldUpdate(changedProperties: PropertyValues<this>) {\r\n if (changedProperties.has(\"_cell_via_context\")) {\r\n this._cell = this._cell_via_context;\r\n }\r\n if (!this._dvm) {\r\n this.requestDvm();\r\n }\r\n return !!this._dvm;\r\n }\r\n\r\n\r\n /** */\r\n protected override willUpdate(changedProperties: PropertyValues<this>) {\r\n if (changedProperties.has(\"_cell_via_context\")) {\r\n this.requestDvm(true);\r\n }\r\n }\r\n}\r\n"]}
@@ -3,12 +3,12 @@ import { DnaViewModel } from "./DnaViewModel";
3
3
  import { BaseRoleName, Cell, DnaId, DnaIdMap } from "@ddd-qc/cell-proxy";
4
4
  declare const DnaMultiElement_base: (abstract new (...args: any[]) => {
5
5
  _cells?: Cell[];
6
- readonly cells: Cell[];
7
- readonly cell: Cell;
6
+ get cells(): Cell[];
7
+ get cell(): Cell;
8
8
  }) & ((abstract new (...args: any[]) => {
9
- baseRoleName: string;
9
+ baseRoleName: BaseRoleName;
10
10
  }) & {
11
- readonly DEFAULT_BASE_ROLE_NAME: string;
11
+ readonly DEFAULT_BASE_ROLE_NAME: BaseRoleName;
12
12
  }) & typeof LitElement;
13
13
  export declare class DnaMultiElement<DVM extends DnaViewModel> extends DnaMultiElement_base {
14
14
  constructor(baseRoleName?: BaseRoleName);
@@ -1 +1 @@
1
- {"version":3,"file":"DnaMultiElement.d.ts","sourceRoot":"","sources":["../src/DnaMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAE,IAAI,EAAc,KAAK,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAC;;;;;;;;;;AAOnF,qBAAa,eAAe,CAAQ,GAAG,SAAS,YAAY,CAAE,SAAQ,oBAAiC;gBAGzF,YAAY,CAAC,EAAE,YAAY;IAQ9B,SAAS,CAAC,KAAK,EAAG,QAAQ,CAAC,GAAG,CAAC,CAAuB;IAI/D,kBAAkB,EAAG,IAAI,EAAE,CAAC;IAK5B,OAAO,CAAC,UAAU,CAAiC;IAMnD,SAAS,CAAC,UAAU,CAAC,YAAY,GAAE,OAAe;cAsClC,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlF,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;cAY1C,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAKtE"}
1
+ {"version":3,"file":"DnaMultiElement.d.ts","sourceRoot":"","sources":["../src/DnaMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAE,IAAI,EAAc,KAAK,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAC;;UAS1C,CAAC;;;;;;;;AAF1C,qBAAa,eAAe,CAAQ,GAAG,SAAS,YAAY,CAAE,SAAQ,oBAAiC;gBAGzF,YAAY,CAAC,EAAE,YAAY;IAQ9B,SAAS,CAAC,KAAK,EAAG,QAAQ,CAAC,GAAG,CAAC,CAAuB;IAI/D,kBAAkB,EAAG,IAAI,EAAE,CAAC;IAK5B,OAAO,CAAC,UAAU,CAAiC;IAMnD,SAAS,CAAC,UAAU,CAAC,YAAY,GAAE,OAAe;cAsClC,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlF,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;cAY1C,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAKtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"DnaMultiElement.js","sourceRoot":"","sources":["../src/DnaMultiElement.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAiB,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAE,OAAO,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAErE,OAAO,EAAqB,UAAU,EAAS,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAK/D,MAAM,OAAO,eAAiD,SAAQ,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAGrG,YAAY,YAA2B;QACrC,KAAK,EAAE,CAAC;QAOS,UAAK,GAAmB,IAAI,QAAQ,EAAO,CAAC;QASvD,eAAU,GAAkB,IAAI,QAAQ,EAAE,CAAC;QAfjD,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;SAClC;IACH,CAAC;IAkBS,UAAU,CAAC,eAAwB,KAAK;QAEhD,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,EAAE;YACnE,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;YACxF,OAAO;SACR;QAED,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE;YAC7C,OAAO;SACR;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAO,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,WAAW,GAAG,aAAa,CAAM,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1F,OAAO,CAAC,GAAG,CAAC,gCAAgC,WAAW,GAAG,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,IAAI,eAAe,CAClC,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,MAAW,EAAE,QAAqB,EAAiB,EAAE;gBAC1D,OAAO,CAAC,GAAG,CAAC,wCAAwC,WAAW,GAAG,CAAC,CAAA;gBACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC1D,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;iBAC1B;gBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC3C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC,EACD,KAAK,CACN,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAEnD;IACH,CAAC;IAOS,KAAK,CAAC,UAAU,CAAC,YAAmB,EAAE,OAAY,EAAE,OAAa;IAE3E,CAAC;IAIQ,YAAY,CAAC,iBAAuC;QAC3D,IAAI,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;SACvC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QACD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAIkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACvB;IACH,CAAC;CACF;AA5EoB;IAAlB,KAAK,EAAE;8CAAuD;AAI/D;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;IACtD,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;2DACD","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\nimport {property, state} from \"lit/decorators.js\";\nimport {ContextConsumer, consume, createContext} from \"@lit/context\";\nimport {DnaViewModel} from \"./DnaViewModel\";\nimport {BaseRoleName, Cell, CellsMixin, DnaId, DnaIdMap} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin} from \"./roleMixin\";\nimport {cellMultiContext} from \"./elements/cell-multi-context\";\n\n/**\n * A LitElement that is bound to a specific DnaViewModel, e.g. a View for the ViewModel\n */\nexport class DnaMultiElement</*P,*/ DVM extends DnaViewModel> extends CellsMixin(RoleMixin(LitElement)) {\n\n /** if BaseRoleName is not provided, subclass must call requestDvm() in its Ctor */\n constructor(baseRoleName?: BaseRoleName) {\n super();\n if (baseRoleName) {\n this.baseRoleName = baseRoleName;\n }\n }\n\n /** Provided by Context depending on BaseRoleName */\n @state() protected _dvms: DnaIdMap<DVM> = new DnaIdMap<DVM>();\n\n @consume({ context: cellMultiContext, subscribe: true})\n @property({attribute: false})\n _cells_via_context!: Cell[];\n\n // @property({type: Object, attribute: false, hasChanged: (_v, _old) => true})\n // perspectives!: P[];\n\n private _consumers: DnaIdMap<any> = new DnaIdMap();\n\n\n /** -- Methods -- */\n\n /** */\n protected requestDvm(canRerequest: boolean = false) {\n /** Consume Context based on given dnaHash */\n if (!this._cells_via_context || this._cells_via_context.length == 0) {\n console.error(\"No Cells found via context in a DnaElement for role:\", this.baseRoleName)\n return;\n }\n /* DVM already requested */\n if (!canRerequest && this._consumers.size > 0) {\n return;\n }\n for (const cell of this._cells!.values()) {\n const contextType = createContext<DVM>('dvm/' + cell.name + \"/\" + cell.address.dnaId.b64);\n console.log(`\\t\\t Requesting DVM context \"${contextType}\"`);\n const consumer = new ContextConsumer(\n this,\n contextType,\n async (newDvm: DVM, _dispose?: () => void): Promise<void> => {\n console.log(`\\t\\t Received value for DVM context \"${contextType}\"`)\n const oldDvm = this._dvms.get(cell.address.dnaId);\n await this.dvmUpdated(cell.address.dnaId, newDvm, oldDvm);\n if (oldDvm) {\n oldDvm.unsubscribe(this);\n }\n this._dvms.set(cell.address.dnaId, newDvm);\n newDvm.subscribe(this, '');\n },\n false, // true will call twice at init\n );\n this._consumers.set(cell.address.dnaId, consumer);\n //console.log({consumer})\n }\n }\n\n\n /**\n * To be overriden by subclasses\n * Example: Have a subclass unsubscribe to oldDvm's zvms and subscribe to the new ones\n */\n protected async dvmUpdated(_cellAddress: DnaId, _newDvm: DVM, _oldDvm?: DVM): Promise<void> {\n //console.log(`\\t\\t Default dvmUpdated() called`)\n }\n\n\n /** */\n override shouldUpdate(changedProperties: PropertyValues<this>) {\n if (changedProperties.has(\"_cells_via_context\")) {\n this._cells = this._cells_via_context;\n }\n if (!this._dvms || this._dvms.size == 0) {\n this.requestDvm();\n }\n return (!!this._dvms && this._dvms.size > 0);\n }\n\n\n /** */\n protected override willUpdate(changedProperties: PropertyValues<this>) {\n if (changedProperties.has(\"_cells_via_context\")) {\n this.requestDvm(true);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"DnaMultiElement.js","sourceRoot":"","sources":["../src/DnaMultiElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\nimport {property, state} from \"lit/decorators.js\";\nimport {ContextConsumer, consume, createContext} from \"@lit/context\";\nimport {DnaViewModel} from \"./DnaViewModel\";\nimport {BaseRoleName, Cell, CellsMixin, DnaId, DnaIdMap} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin} from \"./roleMixin\";\nimport {cellMultiContext} from \"./elements/cell-multi-context\";\n\n/**\n * A LitElement that is bound to a specific DnaViewModel, e.g. a View for the ViewModel\n */\nexport class DnaMultiElement</*P,*/ DVM extends DnaViewModel> extends CellsMixin(RoleMixin(LitElement)) {\n\n /** if BaseRoleName is not provided, subclass must call requestDvm() in its Ctor */\n constructor(baseRoleName?: BaseRoleName) {\n super();\n if (baseRoleName) {\n this.baseRoleName = baseRoleName;\n }\n }\n\n /** Provided by Context depending on BaseRoleName */\n @state() protected _dvms: DnaIdMap<DVM> = new DnaIdMap<DVM>();\n\n @consume({ context: cellMultiContext, subscribe: true})\n @property({attribute: false})\n _cells_via_context!: Cell[];\n\n // @property({type: Object, attribute: false, hasChanged: (_v, _old) => true})\n // perspectives!: P[];\n\n private _consumers: DnaIdMap<any> = new DnaIdMap();\n\n\n /** -- Methods -- */\n\n /** */\n protected requestDvm(canRerequest: boolean = false) {\n /** Consume Context based on given dnaHash */\n if (!this._cells_via_context || this._cells_via_context.length == 0) {\n console.error(\"No Cells found via context in a DnaElement for role:\", this.baseRoleName)\n return;\n }\n /* DVM already requested */\n if (!canRerequest && this._consumers.size > 0) {\n return;\n }\n for (const cell of this._cells!.values()) {\n const contextType = createContext<DVM>('dvm/' + cell.name + \"/\" + cell.address.dnaId.b64);\n console.log(`\\t\\t Requesting DVM context \"${contextType}\"`);\n const consumer = new ContextConsumer(\n this,\n contextType,\n async (newDvm: DVM, _dispose?: () => void): Promise<void> => {\n console.log(`\\t\\t Received value for DVM context \"${contextType}\"`)\n const oldDvm = this._dvms.get(cell.address.dnaId);\n await this.dvmUpdated(cell.address.dnaId, newDvm, oldDvm);\n if (oldDvm) {\n oldDvm.unsubscribe(this);\n }\n this._dvms.set(cell.address.dnaId, newDvm);\n newDvm.subscribe(this, '');\n },\n false, // true will call twice at init\n );\n this._consumers.set(cell.address.dnaId, consumer);\n //console.log({consumer})\n }\n }\n\n\n /**\n * To be overriden by subclasses\n * Example: Have a subclass unsubscribe to oldDvm's zvms and subscribe to the new ones\n */\n protected async dvmUpdated(_cellAddress: DnaId, _newDvm: DVM, _oldDvm?: DVM): Promise<void> {\n //console.log(`\\t\\t Default dvmUpdated() called`)\n }\n\n\n /** */\n override shouldUpdate(changedProperties: PropertyValues<this>) {\n if (changedProperties.has(\"_cells_via_context\")) {\n this._cells = this._cells_via_context;\n }\n if (!this._dvms || this._dvms.size == 0) {\n this.requestDvm();\n }\n return (!!this._dvms && this._dvms.size > 0);\n }\n\n\n /** */\n protected override willUpdate(changedProperties: PropertyValues<this>) {\n if (changedProperties.has(\"_cells_via_context\")) {\n this.requestDvm(true);\n }\n }\n}\n"]}
@@ -18,11 +18,11 @@ export type DvmConstructor = typeof RoleSpecific & {
18
18
  };
19
19
  declare const DnaViewModel_base: (abstract new (...args: any[]) => {
20
20
  _cell?: import("@ddd-qc/cell-proxy").Cell;
21
- readonly cell: import("@ddd-qc/cell-proxy").Cell;
21
+ get cell(): import("@ddd-qc/cell-proxy").Cell;
22
22
  }) & ((abstract new (...args: any[]) => {
23
- baseRoleName: string;
23
+ baseRoleName: import("@ddd-qc/cell-proxy").BaseRoleName;
24
24
  }) & {
25
- readonly DEFAULT_BASE_ROLE_NAME: string;
25
+ readonly DEFAULT_BASE_ROLE_NAME: import("@ddd-qc/cell-proxy").BaseRoleName;
26
26
  }) & typeof ViewModel;
27
27
  export declare abstract class DnaViewModel extends DnaViewModel_base implements IDnaViewModel {
28
28
  readonly host: ReactiveElement;
@@ -1 +1 @@
1
- {"version":3,"file":"DnaViewModel.d.ts","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DnaViewModel.d.ts","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"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"}
@@ -74,9 +74,9 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
74
74
  allFnNames = allFnNames.concat(zvm.zomeProxy.fnNames);
75
75
  }
76
76
  try {
77
- console.log("authorizeSigningCredentials: " + this.cell.hcl().toString(), allFnNames);
78
77
  console.log("authorizeSigningCredentials. cell_id = " + this.cell.address.str);
79
78
  await adminWs.authorizeSigningCredentials(this.cell.address.intoId());
79
+ console.log("authorizeSigningCredentials: " + this.cell.hcl().toString(), allFnNames);
80
80
  }
81
81
  catch (e) {
82
82
  console.warn("authorizeSigningCredentials FAILED.", e);
@@ -1 +1 @@
1
- {"version":3,"file":"DnaViewModel.js","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAOtC,OAAO,EAAU,aAAa,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAGL,GAAG,EACW,SAAS,EACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAe,MAAM,aAAa,CAAC;AA4BpD,MAAM,OAAgB,YAAa,SAAQ,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAwBxE,YAA4B,IAAqB,EAAE,QAAkB,EAAE,OAA6B,EAAE,UAAmB;QACvH,KAAK,CAAC,UAAU,CAAC,CAAC;QADQ,SAAI,GAAJ,IAAI,CAAiB;QAhBvC,oBAAe,GAAgC,EAAE,CAAC;QAElD,eAAU,GAAe,EAAE,CAAC;QAE9B,kBAAa,GAAyC,EAAE,CAAC;QAEzD,iBAAY,GAA2B,EAAE,CAAC;QAC1C,aAAQ,GAAwB,SAAS,CAAC;QAGxC,eAAU,GAAc,EAAE,CAAC;QAQnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAChD;QACD,MAAM,OAAO,GAAI,IAAI,CAAC,WAAmC,CAAA;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvB,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,0BAA0B,CAAC,CAAC;SACjE;QACD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,GAAkB,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE;iBAAM;gBACL,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;aACrD;YAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAKD,IAAI,YAAY,KAA2C,OAAO,IAAI,CAAC,aAAa,CAAA,CAAC,CAAC;IAEtF,IAAI,WAAW,KAA6B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;IAEtE,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAS,CAAA,CAAC,CAAC;IAEhD,IAAI,SAAS,KAAgB,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;IAAA,CAAC;IAEtD,IAAI,SAAS,KAAgB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,CAAC;IAEpE,gBAAgB,CAAC,QAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACrG;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,QAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACrG;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAcoB,cAAc,CAAC,IAAqB;QAEvD,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACrD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;SACzB;IACH,CAAC;IAGD,UAAU,KAA+B,OAAO,aAAa,CAAc,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC;IAAA,CAAC;IAIzI,KAAK,CAAC,kBAAkB,CAAC,OAAuB;QAC9C,IAAI,UAAU,GAA+B,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACnE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;SACtD;QAED,IAAI;YACA,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE/E,MAAM,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;SACzE;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;SACxD;IAOH,CAAC;IAIkB,aAAa,CAAC,QAAqB;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAE/D,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACxB;IACH,CAAC;IAID,UAAU,CAAC,IAAmB,IAAS,CAAC;IAI/B,KAAK,CAAC,8BAA8B;QAC3C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACb;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAIQ,KAAK,CAAC,gCAAgC;QAC7C,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,gCAAgC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACb;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAIO,KAAK,CAAC,eAAe;QAE3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAMxB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC5E;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACnD,IAAI;gBACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC9E;YAAC,OAAM,CAAM,EAAE;gBACd,IAAI,CAAC,CAAC,SAAS,EAAE;oBACf,SAAS;iBACV;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC1B;SACJ;IACH,CAAC;IAID,YAAY,CAAC,QAAmB;QAC9B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAID,cAAc,CAAC,QAAmB;QAChC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;gBAC7E,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1B;YACD,OAAO;SACR;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;YACjF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACtD;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;SACtE;IACH,CAAC;IAGD,SAAS;QACP,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;CACF","sourcesContent":["import {ZomeViewModel} from \"./ZomeViewModel\";\nimport {ReactiveElement} from \"lit\";\nimport {ViewModel} from \"./ViewModel\";\nimport {\n AdminWebsocket, FunctionName,\n InstalledAppId,\n ZomeName,\n} from \"@holochain/client\";\nimport {DnaModifiersOptions, ZvmDef} from \"./definitions\";\nimport {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n AppProxy,\n HCL,\n MyDictionary, CellMixin, AgentId, EntryDef, ZomeInfo, DnaInfo\n} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin, RoleSpecific} from \"./roleMixin\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\n\n\n//export type IDnaViewModel = _DnaViewModel & ICellDef & typeof RoleSpecific;\n\n/** Interface specific to DnaViewModel class */\ninterface IDnaViewModel {\n dumpCallLogs(zomeName?: ZomeName): void;\n dumpSignalLogs(zomeName?: ZomeName): void;\n /** zomeName -> (AppEntryName, isPublic)[] */\n //fetchAllEntryDefs(): Promise<void>;\n //get entryTypes(): Dictionary<[string, boolean][]>;\n //getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined;\n //getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined\n}\n\nexport type DvmConstructor = typeof RoleSpecific & {DNA_MODIFIERS: DnaModifiersOptions} & {\n new(host: ReactiveElement, proxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean): DnaViewModel;\n};\n\n\n/**\n * Abstract ViewModel for a DNA.\n * It holds the CellProxy and all the ZomeViewModels of the DNA.\n * It is expected to derive this class for each DNA and add extra logic at the DNA level.\n * TODO: Split into RoleViewModel and CellViewModel (e.g. have call logs separated by role)\n */\nexport abstract class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) implements IDnaViewModel {\n /** -- Static -- */\n /* private */ static ZVM_DEFS: ZvmDef[];\n static DNA_MODIFIERS: DnaModifiersOptions;\n\n /** -- Fields -- */\n protected _cellProxy: CellProxy;\n /* ZomeName -> Zvm */\n protected _zomeViewModels: MyDictionary<ZomeViewModel> = {};\n /* ZvmCtorName -> ZomeName */\n protected _zomeNames: ZomeName[] = [];\n /* ZomeName -> (EntryName -> EntryDef) */\n private _allEntryDefs: MyDictionary<MyDictionary<EntryDef>> = {};\n /* ZomeName -> ZomeInfo */\n private _allZomeInfo: MyDictionary<ZomeInfo> = {};\n private _dnaInfo: DnaInfo | undefined = undefined;\n\n /** list of \"known\" peers in this DNA */\n protected _livePeers: AgentId[] = [];\n\n public readonly hcl: HCL;\n\n\n /** Ctor */\n constructor(public readonly host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean) {\n super(isMainView);\n if (typeof idOrHcl === 'object') {\n this.baseRoleName = idOrHcl.baseRoleName;\n this.hcl = idOrHcl;\n } else {\n this.hcl = new HCL(idOrHcl, this.baseRoleName);\n }\n const dvmCtor = (this.constructor as typeof DnaViewModel)\n const zvmDefs = dvmCtor.ZVM_DEFS;\n if (zvmDefs.length == 0) {\n throw Error(`DNA ${this.baseRoleName} does not have any zomes`);\n }\n this._cellProxy = appProxy.getCellProxy(this.hcl); // WARN can throw error\n this._cell = this._cellProxy.cell;\n console.log(`DVM.ctor of ${this.baseRoleName}`, this._cellProxy.cell);\n /** Create all ZVMs for this DNA */\n for (const zvmDef of zvmDefs) {\n let zvm: ZomeViewModel;\n if (Array.isArray(zvmDef)) {\n zvm = new zvmDef[0](this._cellProxy, this, isMainView, zvmDef[1]);\n } else {\n zvm = new zvmDef(this._cellProxy, this, isMainView);\n }\n // TODO check zvm.zomeName exists in _cellProxy\n this._zomeViewModels[zvm.zomeName] = zvm;\n this._zomeNames.push(zvm.zomeName);\n }\n this.provideContext(host); // TODO move this to host.connectedCallback? e.g. change ViewModel to a ReactiveController\n }\n\n\n /** -- Getters -- */\n\n get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>> { return this._allEntryDefs }\n\n get allZomeInfo(): MyDictionary<ZomeInfo> { return this._allZomeInfo }\n\n get dnaInfo(): DnaInfo { return this._dnaInfo! }\n\n get livePeers(): AgentId[] { return this._livePeers };\n\n get zomeNames(): ZomeName[] {return Object.values(this._zomeNames);}\n\n getZomeEntryDefs(zomeName: ZomeName): MyDictionary<EntryDef> {\n const maybe = this._allEntryDefs[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n getZomeViewModel(zomeName: ZomeName): ZomeViewModel {\n const maybe = this._zomeViewModels[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n // getZomeName(zvm: typeof ZomeViewModel): ZomeName {\n // console.log(\"getZomeName()\", zvm.constructor.name);\n // const maybe = this._zomeViewModels[zvm.constructor.name];\n // if (!maybe) {\n // throw Error(\"Unknown zome in DVM: \" + zvm.DEFAULT_ZOME_NAME + \". Available zomes: \" + this.zomeNames.join(', '));\n // }\n // return maybe;\n // }\n\n /** -- Methods -- */\n\n /** Override so we can provide context of all zvms */\n /*private*/ override provideContext(host: ReactiveElement): void {\n //console.log(\"DVM.provideContext()\", host, this)\n super.provideContext(host);\n for (const zvm of Object.values(this._zomeViewModels)) {\n zvm.provideContext(host)\n }\n }\n\n\n getContext(): Context<unknown, unknown> {return createContext<typeof this>('dvm/' + this.cell.name + \"/\" + this.cell.address.dnaId.b64)};\n\n\n /** */\n async authorizeZomeCalls(adminWs: AdminWebsocket): Promise<void> {\n let allFnNames: [ZomeName, FunctionName][] = [];\n for (const [_zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n allFnNames = allFnNames.concat(zvm.zomeProxy.fnNames)\n }\n //const grantedFns = { [GrantedFunctionsType.Listed]: allFnNames }\n try {\n console.log(\"authorizeSigningCredentials: \" + this.cell.hcl().toString(), allFnNames);\n console.log(\"authorizeSigningCredentials. cell_id = \" + this.cell.address.str);\n //await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);\n await adminWs.authorizeSigningCredentials(this.cell.address.intoId());\n } catch(e) {\n console.warn(\"authorizeSigningCredentials FAILED.\", e);\n }\n // this._signingProps = getSigningCredentials(this.cellId);\n // console.log({signProps: this._signingProps})\n //\n // for (const [zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n // zvm.zomeProxy.setSigningProps(this._signingProps);\n // }\n }\n\n\n /** Not async on purpose as we except this to be long. Post-processing should be done via an observer pattern. */\n protected override probeAllInner(strategy: GetStrategy): void {\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n //console.log(\"Dvm.probeAll()\", name)\n zvm.probeAll(strategy);\n }\n }\n\n\n /** */\n zvmChanged(_zvm: ZomeViewModel): void {}\n\n\n /** */\n override async initializePerspectiveFromLocal(): Promise<void> {\n await this.queryAllDnaData();\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromLocal();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n override async initializePerspectiveFromNetwork(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromNetwork();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n private async queryAllDnaData(): Promise<void> {\n /** DnaInfo */\n const dnaInfo = await this._cellProxy.callDnaInfo(this.zomeNames[0]!);\n this._dnaInfo = dnaInfo;\n // /** ZomeInfo from dnaInfo */\n // for (const zomeName of dnaInfo.zome_names) {\n // this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n // }\n /** ZomeInfo from known Zomes */\n for (const zomeName of this.zomeNames) {\n this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n }\n /** EntryDefs */\n for (const zomeName of Object.keys(this._allZomeInfo)) {\n try {\n this._allEntryDefs[zomeName] = await this._cellProxy.callEntryDefs(zomeName);\n } catch(e: any) {\n if (e.throttled) {\n continue;\n }\n return Promise.reject(e);\n }\n }\n }\n\n\n /** */\n dumpCallLogs(zomeName?: ZomeName): void {\n this._cellProxy.dumpCallLogs(zomeName);\n }\n\n\n /** */\n dumpSignalLogs(zomeName?: ZomeName): void {\n console.warn(\"Dumping signals in DVM\", this.baseRoleName);\n if (zomeName == undefined) {\n for (const [name, zvm] of Object.entries(this._zomeViewModels)) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == name)\n zvm.dumpSignalLogs(logs);\n }\n return;\n }\n if (this._zomeViewModels[zomeName]) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == zomeName)\n this._zomeViewModels[zomeName]!.dumpSignalLogs(logs);\n } else {\n console.error(`Unknown zome ${zomeName} in DVM ${this.baseRoleName}`)\n }\n }\n\n /** */\n purgeLogs() {\n this._cellProxy.purgeLogs();\n }\n}\n"]}
1
+ {"version":3,"file":"DnaViewModel.js","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {ZomeViewModel} from \"./ZomeViewModel\";\nimport {ReactiveElement} from \"lit\";\nimport {ViewModel} from \"./ViewModel\";\nimport {\n AdminWebsocket, FunctionName,\n InstalledAppId,\n ZomeName,\n} from \"@holochain/client\";\nimport {DnaModifiersOptions, ZvmDef} from \"./definitions\";\nimport {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n AppProxy,\n HCL,\n MyDictionary, CellMixin, AgentId, EntryDef, ZomeInfo, DnaInfo\n} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin, RoleSpecific} from \"./roleMixin\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\n\n\n//export type IDnaViewModel = _DnaViewModel & ICellDef & typeof RoleSpecific;\n\n/** Interface specific to DnaViewModel class */\ninterface IDnaViewModel {\n dumpCallLogs(zomeName?: ZomeName): void;\n dumpSignalLogs(zomeName?: ZomeName): void;\n /** zomeName -> (AppEntryName, isPublic)[] */\n //fetchAllEntryDefs(): Promise<void>;\n //get entryTypes(): Dictionary<[string, boolean][]>;\n //getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined;\n //getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined\n}\n\nexport type DvmConstructor = typeof RoleSpecific & {DNA_MODIFIERS: DnaModifiersOptions} & {\n new(host: ReactiveElement, proxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean): DnaViewModel;\n};\n\n\n/**\n * Abstract ViewModel for a DNA.\n * It holds the CellProxy and all the ZomeViewModels of the DNA.\n * It is expected to derive this class for each DNA and add extra logic at the DNA level.\n * TODO: Split into RoleViewModel and CellViewModel (e.g. have call logs separated by role)\n */\nexport abstract class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) implements IDnaViewModel {\n /** -- Static -- */\n /* private */ static ZVM_DEFS: ZvmDef[];\n static DNA_MODIFIERS: DnaModifiersOptions;\n\n /** -- Fields -- */\n protected _cellProxy: CellProxy;\n /* ZomeName -> Zvm */\n protected _zomeViewModels: MyDictionary<ZomeViewModel> = {};\n /* ZvmCtorName -> ZomeName */\n protected _zomeNames: ZomeName[] = [];\n /* ZomeName -> (EntryName -> EntryDef) */\n private _allEntryDefs: MyDictionary<MyDictionary<EntryDef>> = {};\n /* ZomeName -> ZomeInfo */\n private _allZomeInfo: MyDictionary<ZomeInfo> = {};\n private _dnaInfo: DnaInfo | undefined = undefined;\n\n /** list of \"known\" peers in this DNA */\n protected _livePeers: AgentId[] = [];\n\n public readonly hcl: HCL;\n\n\n /** Ctor */\n constructor(public readonly host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean) {\n super(isMainView);\n if (typeof idOrHcl === 'object') {\n this.baseRoleName = idOrHcl.baseRoleName;\n this.hcl = idOrHcl;\n } else {\n this.hcl = new HCL(idOrHcl, this.baseRoleName);\n }\n const dvmCtor = (this.constructor as typeof DnaViewModel)\n const zvmDefs = dvmCtor.ZVM_DEFS;\n if (zvmDefs.length == 0) {\n throw Error(`DNA ${this.baseRoleName} does not have any zomes`);\n }\n this._cellProxy = appProxy.getCellProxy(this.hcl); // WARN can throw error\n this._cell = this._cellProxy.cell;\n console.log(`DVM.ctor of ${this.baseRoleName}`, this._cellProxy.cell);\n /** Create all ZVMs for this DNA */\n for (const zvmDef of zvmDefs) {\n let zvm: ZomeViewModel;\n if (Array.isArray(zvmDef)) {\n zvm = new zvmDef[0](this._cellProxy, this, isMainView, zvmDef[1]);\n } else {\n zvm = new zvmDef(this._cellProxy, this, isMainView);\n }\n // TODO check zvm.zomeName exists in _cellProxy\n this._zomeViewModels[zvm.zomeName] = zvm;\n this._zomeNames.push(zvm.zomeName);\n }\n this.provideContext(host); // TODO move this to host.connectedCallback? e.g. change ViewModel to a ReactiveController\n }\n\n\n /** -- Getters -- */\n\n get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>> { return this._allEntryDefs }\n\n get allZomeInfo(): MyDictionary<ZomeInfo> { return this._allZomeInfo }\n\n get dnaInfo(): DnaInfo { return this._dnaInfo! }\n\n get livePeers(): AgentId[] { return this._livePeers };\n\n get zomeNames(): ZomeName[] {return Object.values(this._zomeNames);}\n\n getZomeEntryDefs(zomeName: ZomeName): MyDictionary<EntryDef> {\n const maybe = this._allEntryDefs[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n getZomeViewModel(zomeName: ZomeName): ZomeViewModel {\n const maybe = this._zomeViewModels[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n // getZomeName(zvm: typeof ZomeViewModel): ZomeName {\n // console.log(\"getZomeName()\", zvm.constructor.name);\n // const maybe = this._zomeViewModels[zvm.constructor.name];\n // if (!maybe) {\n // throw Error(\"Unknown zome in DVM: \" + zvm.DEFAULT_ZOME_NAME + \". Available zomes: \" + this.zomeNames.join(', '));\n // }\n // return maybe;\n // }\n\n /** -- Methods -- */\n\n /** Override so we can provide context of all zvms */\n /*private*/ override provideContext(host: ReactiveElement): void {\n //console.log(\"DVM.provideContext()\", host, this)\n super.provideContext(host);\n for (const zvm of Object.values(this._zomeViewModels)) {\n zvm.provideContext(host)\n }\n }\n\n\n getContext(): Context<unknown, unknown> {return createContext<typeof this>('dvm/' + this.cell.name + \"/\" + this.cell.address.dnaId.b64)};\n\n\n /** */\n async authorizeZomeCalls(adminWs: AdminWebsocket): Promise<void> {\n let allFnNames: [ZomeName, FunctionName][] = [];\n for (const [_zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n allFnNames = allFnNames.concat(zvm.zomeProxy.fnNames)\n }\n //const grantedFns = { [GrantedFunctionsType.Listed]: allFnNames }\n try {\n console.log(\"authorizeSigningCredentials. cell_id = \" + this.cell.address.str);\n //await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);\n await adminWs.authorizeSigningCredentials(this.cell.address.intoId());\n console.log(\"authorizeSigningCredentials: \" + this.cell.hcl().toString(), allFnNames);\n } catch(e) {\n console.warn(\"authorizeSigningCredentials FAILED.\", e);\n }\n // this._signingProps = getSigningCredentials(this.cellId);\n // console.log({signProps: this._signingProps})\n //\n // for (const [zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n // zvm.zomeProxy.setSigningProps(this._signingProps);\n // }\n }\n\n\n /** Not async on purpose as we except this to be long. Post-processing should be done via an observer pattern. */\n protected override probeAllInner(strategy: GetStrategy): void {\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n //console.log(\"Dvm.probeAll()\", name)\n zvm.probeAll(strategy);\n }\n }\n\n\n /** */\n zvmChanged(_zvm: ZomeViewModel): void {}\n\n\n /** */\n override async initializePerspectiveFromLocal(): Promise<void> {\n await this.queryAllDnaData();\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromLocal();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n override async initializePerspectiveFromNetwork(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromNetwork();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n private async queryAllDnaData(): Promise<void> {\n /** DnaInfo */\n const dnaInfo = await this._cellProxy.callDnaInfo(this.zomeNames[0]!);\n this._dnaInfo = dnaInfo;\n // /** ZomeInfo from dnaInfo */\n // for (const zomeName of dnaInfo.zome_names) {\n // this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n // }\n /** ZomeInfo from known Zomes */\n for (const zomeName of this.zomeNames) {\n this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n }\n /** EntryDefs */\n for (const zomeName of Object.keys(this._allZomeInfo)) {\n try {\n this._allEntryDefs[zomeName] = await this._cellProxy.callEntryDefs(zomeName);\n } catch(e: any) {\n if (e.throttled) {\n continue;\n }\n return Promise.reject(e);\n }\n }\n }\n\n\n /** */\n dumpCallLogs(zomeName?: ZomeName): void {\n this._cellProxy.dumpCallLogs(zomeName);\n }\n\n\n /** */\n dumpSignalLogs(zomeName?: ZomeName): void {\n console.warn(\"Dumping signals in DVM\", this.baseRoleName);\n if (zomeName == undefined) {\n for (const [name, zvm] of Object.entries(this._zomeViewModels)) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == name)\n zvm.dumpSignalLogs(logs);\n }\n return;\n }\n if (this._zomeViewModels[zomeName]) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == zomeName)\n this._zomeViewModels[zomeName]!.dumpSignalLogs(logs);\n } else {\n console.error(`Unknown zome ${zomeName} in DVM ${this.baseRoleName}`)\n }\n }\n\n /** */\n purgeLogs() {\n this._cellProxy.purgeLogs();\n }\n}\n"]}
@@ -10,12 +10,12 @@ export declare class HappElement extends LitElement {
10
10
  protected appProxy: AppProxy;
11
11
  hvm: HappViewModel;
12
12
  networkCaller?: NetworkCaller;
13
+ _constructed: boolean;
13
14
  protected constructor(options: HcConnectionOptions, happSha256?: string, appId?: InstalledAppId);
14
15
  protected constructHvm(options: HcConnectionOptions, happSha256?: string, appId?: InstalledAppId): Promise<void>;
15
16
  initializePerspectiveFromLocal(): Promise<void>;
16
17
  initializePerspectiveFromNetwork(): Promise<void>;
17
18
  shouldUpdate(): boolean;
18
- firstUpdated(): void;
19
19
  hvmConstructed(): Promise<void>;
20
20
  perspectiveInitializedFromLocal(): Promise<void>;
21
21
  perspectiveInitializedFromNetwork(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"HappElement.d.ts","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACH,YAAY,EACZ,QAAQ,EACW,mBAAmB,EACzC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAO9C,qBAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGvB,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC;IACrB,GAAG,EAAG,aAAa,CAAC;IAG7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAG9B,SAAS,aAAa,OAAO,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc;cAO/E,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhH,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY;IAIZ,YAAY;IAQf,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlD,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;CAGxG"}
1
+ {"version":3,"file":"HappElement.d.ts","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACH,YAAY,EACZ,QAAQ,EACW,mBAAmB,EACzC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAO9C,qBAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGvB,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC;IACrB,GAAG,EAAG,aAAa,CAAC;IAG7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAErB,YAAY,UAAS;IAG9B,SAAS,aAAa,OAAO,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc;cAa/E,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhH,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY;IAQf,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlD,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;CAGxG"}
@@ -7,8 +7,15 @@ import { NetworkCaller } from "./NetworkCaller";
7
7
  export class HappElement extends LitElement {
8
8
  constructor(options, happSha256, appId) {
9
9
  super();
10
+ this._constructed = false;
10
11
  this.constructHvm(options, happSha256, appId)
11
- .then(() => console.debug("HappElement constructed:", this.hvm.appId));
12
+ .then(() => {
13
+ console.debug("[lit-happ] HappElement constructed. App: " + this.hvm.appId);
14
+ this._constructed = true;
15
+ console.debug("[lit-happ] HappElement: Initializing Perspective from Network. App: " + this.hvm.appId);
16
+ this.initializePerspectiveFromNetwork()
17
+ .then(() => console.debug("[lit-happ] HappElement: Finished initializing HappElement Network Perspective. App: " + this.hvm.appId));
18
+ });
12
19
  }
13
20
  async constructHvm(options, happSha256, appId) {
14
21
  const hvmDef = this.constructor.HVM_DEF;
@@ -28,18 +35,14 @@ export class HappElement extends LitElement {
28
35
  async initializePerspectiveFromLocal() {
29
36
  await this.hvm.initializePerspectiveFromLocal();
30
37
  await this.perspectiveInitializedFromLocal();
31
- console.debug("Finished initializing Happ perspective with Local data. App: " + this.hvm.appId);
38
+ console.debug("[lit-happ] HappElement: Finished initializing Happ perspective with Local data. App: " + this.hvm.appId);
32
39
  }
33
40
  async initializePerspectiveFromNetwork() {
34
- await this.hvm.initializePerspectiveFromNetwork();
41
+ await this.hvm.initializePerspectiveFromLocal();
35
42
  await this.perspectiveInitializedFromNetwork();
36
43
  }
37
44
  shouldUpdate() {
38
- return !!this.hvm;
39
- }
40
- firstUpdated() {
41
- this.perspectiveInitializedFromNetwork()
42
- .then(() => console.debug("Finished initializing Happ perspective with Network data. App " + this.hvm.appId));
45
+ return this._constructed && !!this.hvm;
43
46
  }
44
47
  async hvmConstructed() { }
45
48
  async perspectiveInitializedFromLocal() { }
@@ -51,4 +54,7 @@ export class HappElement extends LitElement {
51
54
  __decorate([
52
55
  state()
53
56
  ], HappElement.prototype, "hvm", void 0);
57
+ __decorate([
58
+ state()
59
+ ], HappElement.prototype, "_constructed", void 0);
54
60
  //# sourceMappingURL=HappElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HappElement.js","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAGH,iBAAiB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAS9C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAO9C,MAAM,OAAO,WAAY,SAAQ,UAAU;IAazC,YAAsB,OAA4B,EAAE,UAAmB,EAAE,KAAsB;QAC7F,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;aACxC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5E,CAAC;IAGS,KAAK,CAAC,YAAY,CAAC,OAA4B,EAAE,UAAmB,EAAE,KAAsB;QACpG,MAAM,MAAM,GAAI,IAAI,CAAC,WAAkC,CAAC,OAAO,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,yDAAyD,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAChG;QAED,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC9C,CAAC;IAGD,KAAK,CAAC,8BAA8B;QAChC,MAAM,IAAI,CAAC,GAAG,CAAC,8BAA8B,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,+DAA+D,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpG,CAAC;IAGD,KAAK,CAAC,gCAAgC;QACpC,MAAM,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,CAAC;QAClD,MAAM,IAAI,CAAC,iCAAiC,EAAE,CAAC;IACjD,CAAC;IAKU,YAAY;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB,CAAC;IAEQ,YAAY;QACjB,IAAI,CAAC,iCAAiC,EAAE;aACnC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gEAAgE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACrH,CAAC;IAKD,KAAK,CAAC,cAAc,KAAmB,CAAC;IAExC,KAAK,CAAC,+BAA+B,KAAmB,CAAC;IAEzD,KAAK,CAAC,iCAAiC,KAAmB,CAAC;IAM3D,KAAK,CAAC,WAAW,CAAC,YAA0B,EAAE,OAAiB;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACJ;AAxEU;IAAR,KAAK,EAAE;wCAAqB","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n BaseRoleName,\n AppProxy,\n ConductorAppProxy, HcConnectionOptions,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n ClonedCell,\n InstalledAppId,\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n// @ts-ignore\nimport * as net from \"net\";\nimport {NetworkCaller} from \"./NetworkCaller\";\n\n\n/**\n * Base class for HappElements, which are LitElements that wrap a HappViewModel,\n * i.e. the main WebComponent of a single Holochain app.\n */\nexport class HappElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n protected appProxy!: AppProxy;\n @state() hvm!: HappViewModel;\n\n /** Continually calls networkInfo for a specific cell with appProxy */\n networkCaller?: NetworkCaller;\n\n /** Ctor */\n protected constructor(options: HcConnectionOptions, happSha256?: string, appId?: InstalledAppId) {\n super();\n this.constructHvm(options, happSha256, appId)\n .then(() => console.debug(\"HappElement constructed:\", this.hvm.appId))\n }\n\n /** */\n protected async constructHvm(options: HcConnectionOptions, happSha256?: string, appId?: InstalledAppId): Promise<void> {\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappElement subclass \" + this.constructor.name);\n }\n /** Override appId */\n if (appId) {\n hvmDef.id = appId;\n }\n this.appProxy = await ConductorAppProxy.new(hvmDef.id, options, happSha256);\n this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef, true);\n this.networkCaller = new NetworkCaller(this.appProxy);\n /** FIXME: wait for genesis to finish first? */\n await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);\n await this.hvmConstructed();\n await this.initializePerspectiveFromLocal();\n }\n\n /** */\n async initializePerspectiveFromLocal(): Promise<void> {\n await this.hvm.initializePerspectiveFromLocal();\n await this.perspectiveInitializedFromLocal();\n console.debug(\"Finished initializing Happ perspective with Local data. App: \" + this.hvm.appId);\n }\n\n /** */\n async initializePerspectiveFromNetwork(): Promise<void> {\n await this.hvm.initializePerspectiveFromNetwork();\n await this.perspectiveInitializedFromNetwork();\n }\n\n /** -- Lit lifecycle hooks -- */\n\n /** */\n override shouldUpdate() {\n return !!this.hvm;\n }\n\n override firstUpdated() {\n this.perspectiveInitializedFromNetwork()\n .then(() => console.debug(\"Finished initializing Happ perspective with Network data. App \" + this.hvm.appId))\n }\n\n /** -- Hooks for subclasses to override -- */\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedFromLocal(): Promise<void> {}\n /** */\n async perspectiveInitializedFromNetwork(): Promise<void> {}\n\n\n /** -- Methods -- */\n\n /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n}\n"]}
1
+ {"version":3,"file":"HappElement.js","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n BaseRoleName,\n AppProxy,\n ConductorAppProxy, HcConnectionOptions,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n ClonedCell,\n InstalledAppId,\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n// @ts-ignore\nimport * as net from \"net\";\nimport {NetworkCaller} from \"./NetworkCaller\";\n\n\n/**\n * Base class for HappElements, which are LitElements that wrap a HappViewModel,\n * i.e. the main WebComponent of a single Holochain app.\n */\nexport class HappElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n protected appProxy!: AppProxy;\n @state() hvm!: HappViewModel;\n\n /** Continually calls networkInfo for a specific cell with appProxy */\n networkCaller?: NetworkCaller;\n\n @state() _constructed = false;\n\n /** Ctor */\n protected constructor(options: HcConnectionOptions, happSha256?: string, appId?: InstalledAppId) {\n super();\n this.constructHvm(options, happSha256, appId)\n .then(() => {\n console.debug(\"[lit-happ] HappElement constructed. App: \" + this.hvm.appId);\n this._constructed = true;\n console.debug(\"[lit-happ] HappElement: Initializing Perspective from Network. App: \" + this.hvm.appId)\n this.initializePerspectiveFromNetwork()\n .then(() => console.debug(\"[lit-happ] HappElement: Finished initializing HappElement Network Perspective. App: \" + this.hvm.appId))\n })\n }\n\n /** */\n protected async constructHvm(options: HcConnectionOptions, happSha256?: string, appId?: InstalledAppId): Promise<void> {\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappElement subclass \" + this.constructor.name);\n }\n /** Override appId */\n if (appId) {\n hvmDef.id = appId;\n }\n this.appProxy = await ConductorAppProxy.new(hvmDef.id, options, happSha256);\n this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef, true);\n this.networkCaller = new NetworkCaller(this.appProxy);\n /** FIXME: wait for genesis to finish first? */\n await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);\n await this.hvmConstructed();\n await this.initializePerspectiveFromLocal();\n }\n\n /** */\n async initializePerspectiveFromLocal(): Promise<void> {\n await this.hvm.initializePerspectiveFromLocal();\n await this.perspectiveInitializedFromLocal();\n console.debug(\"[lit-happ] HappElement: Finished initializing Happ perspective with Local data. App: \" + this.hvm.appId);\n }\n\n /** */\n async initializePerspectiveFromNetwork(): Promise<void> {\n await this.hvm.initializePerspectiveFromLocal(); // // FIXME: Call Network once Holochain GetStrategy:Network issue is fixed.\n await this.perspectiveInitializedFromNetwork();\n }\n\n /** -- Lit lifecycle hooks -- */\n\n /** */\n override shouldUpdate() {\n return this._constructed && !!this.hvm;\n }\n\n\n /** -- Hooks for subclasses to override -- */\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedFromLocal(): Promise<void> {}\n /** */\n async perspectiveInitializedFromNetwork(): Promise<void> {}\n\n\n /** -- Methods -- */\n\n /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n}\n"]}
@@ -8,14 +8,14 @@ export declare class HappMultiElement extends LitElement {
8
8
  readonly isMainView: boolean;
9
9
  static HVM_DEF: HvmDef;
10
10
  hvms: [AppProxy, HappViewModel][];
11
- networkCaller?: NetworkCaller;
12
11
  get count(): number;
12
+ networkCaller?: NetworkCaller;
13
+ _constructed: boolean;
13
14
  protected constructor(appConnections: [HcConnectionOptions, string | undefined, InstalledAppId | undefined][], isMainView: boolean);
14
15
  protected constructHvms(appConnections: [HcConnectionOptions, happSha256: string | undefined, InstalledAppId | undefined][]): Promise<void>;
15
16
  initializePerspectiveFromLocal(): Promise<void>;
16
17
  initializePerspectiveFromNetwork(): Promise<void>;
17
18
  shouldUpdate(): boolean;
18
- firstUpdated(): void;
19
19
  hvmsConstructed(): Promise<void>;
20
20
  perspectiveInitializedFromLocal(): Promise<void>;
21
21
  perspectiveInitializedFromNetwork(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"HappMultiElement.d.ts","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACH,QAAQ,EAGR,SAAS,EAAkC,mBAAmB,EACjE,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EACL,cAAc,EAAE,cAAc,EAC9B,SAAS,EACV,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAO9C,qBAAa,gBAAiB,SAAQ,UAAU;aAgB5B,UAAU,EAAE,OAAO;IAbrC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAK;IAG/C,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,IAAI,KAAK,IAAI,MAAM,CAA0B;IAG7C,SAAS,aACP,cAAc,EAAE,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,EACvE,UAAU,EAAE,OAAO;cAQrB,aAAa,CAAC,cAAc,EAAE,CAAC,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3I,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5C,YAAY;IAIZ,YAAY;IAQf,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpD,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;CAgDrG"}
1
+ {"version":3,"file":"HappMultiElement.d.ts","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACH,QAAQ,EAGR,SAAS,EAAkC,mBAAmB,EACjE,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EACL,cAAc,EAAE,cAAc,EAC9B,SAAS,EACV,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAO9C,qBAAa,gBAAiB,SAAQ,UAAU;aAkB5B,UAAU,EAAE,OAAO;IAfrC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAK;IAC/C,IAAI,KAAK,IAAI,MAAM,CAA0B;IAG7C,aAAa,CAAC,EAAE,aAAa,CAAC;IAGrB,YAAY,UAAS;IAG9B,SAAS,aACP,cAAc,EAAE,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,EACvE,UAAU,EAAE,OAAO;cAcrB,aAAa,CAAC,cAAc,EAAE,CAAC,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB3I,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5C,YAAY;IAQf,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhC,+BAA+B,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhD,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpD,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;CAgDrG"}
@@ -10,8 +10,15 @@ export class HappMultiElement extends LitElement {
10
10
  super();
11
11
  this.isMainView = isMainView;
12
12
  this.hvms = [];
13
+ this._constructed = false;
13
14
  this.constructHvms(appConnections)
14
- .then(() => console.debug("HappMultiElement constructed"));
15
+ .then(() => {
16
+ console.debug("[lit-happ] HappMultiElement: Local Perspective initialized.");
17
+ this._constructed = true;
18
+ console.debug("[lit-happ] HappMultiElement: Initializing Perspective from Network");
19
+ this.initializePerspectiveFromNetwork()
20
+ .then(() => console.debug("[lit-happ] HappMultiElement: Network Perspective initialized."));
21
+ });
15
22
  }
16
23
  async constructHvms(appConnections) {
17
24
  const hvmDef = this.constructor.HVM_DEF;
@@ -29,6 +36,7 @@ export class HappMultiElement extends LitElement {
29
36
  }
30
37
  this.networkCaller = new NetworkCaller(this.hvms[0][0]);
31
38
  await this.hvmsConstructed();
39
+ console.debug("[lit-happ] HappMultiElement constructed. Initializing Local Perspective...");
32
40
  await this.initializePerspectiveFromLocal();
33
41
  }
34
42
  async initializePerspectiveFromLocal() {
@@ -44,11 +52,7 @@ export class HappMultiElement extends LitElement {
44
52
  await this.perspectiveInitializedFromNetwork();
45
53
  }
46
54
  shouldUpdate() {
47
- return this.hvms.length > 0;
48
- }
49
- firstUpdated() {
50
- this.perspectiveInitializedFromNetwork()
51
- .then(() => console.debug("Finished initializing Happ perspective from Network"));
55
+ return this._constructed && this.hvms.length > 0;
52
56
  }
53
57
  async hvmsConstructed() { }
54
58
  async perspectiveInitializedFromLocal() { }
@@ -97,4 +101,7 @@ export class HappMultiElement extends LitElement {
97
101
  __decorate([
98
102
  state()
99
103
  ], HappMultiElement.prototype, "hvms", void 0);
104
+ __decorate([
105
+ state()
106
+ ], HappMultiElement.prototype, "_constructed", void 0);
100
107
  //# sourceMappingURL=HappMultiElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HappMultiElement.js","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAEH,iBAAiB,EACjB,YAAY,EACD,UAAU,EAAS,WAAW,GAC5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAQ9C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAO9C,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAW9C,IAAI,KAAK,KAAY,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA,CAAA,CAAC;IAG7C,YACE,cAAuF,EACvE,UAAmB;QAEnC,KAAK,EAAE,CAAC;QAFQ,eAAU,GAAV,UAAU,CAAS;QAV5B,SAAI,GAAgC,EAAE,CAAA;QAa7C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;aAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;IAC9D,CAAC;IAGS,KAAK,CAAC,aAAa,CAAC,cAAmG;QAC/H,MAAM,MAAM,GAAI,IAAI,CAAC,WAAuC,CAAC,OAAO,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,8DAA8D,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACrG;QACD,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE;YACzD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC7E,IAAI,KAAK,EAAE;gBAET,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;aACnB;YACD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7E,MAAM,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;SACjC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC9C,CAAC;IAGD,KAAK,CAAC,8BAA8B;QAChC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YACnC,MAAM,GAAG,CAAC,8BAA8B,EAAE,CAAC;SAC9C;QACD,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,gCAAgC;QACpC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YACrC,MAAM,GAAG,CAAC,8BAA8B,EAAE,CAAC;SAC5C;QACD,MAAM,IAAI,CAAC,iCAAiC,EAAE,CAAC;IACjD,CAAC;IAKU,YAAY;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAEQ,YAAY;QACjB,IAAI,CAAC,iCAAiC,EAAE;aACnC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAA;IACzF,CAAC;IAKD,KAAK,CAAC,eAAe,KAAmB,CAAC;IAEzC,KAAK,CAAC,+BAA+B,KAAmB,CAAC;IAEzD,KAAK,CAAC,iCAAiC,KAAmB,CAAC;IAM7D,KAAK,CAAC,cAAc,CAAC,YAAqB;QAGxC,MAAM,MAAM,GAAI,IAAI,CAAC,WAAuC,CAAC,OAAO,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;SACtE;QAED,IAAI,SAAS,GAAkB,EAAE,CAAC;QAClC,IAAI,YAAY,EAAE;YAChB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,wCAAwC,GAAG,YAAY,CAAC,CAAC;aAChF;YACD,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACL,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1C,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;aAClD;SACF;QAGD,IAAI,cAAc,GAAwB,IAAI,UAAU,EAAE,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACzC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC1C;YACD,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC5D;QAGD,MAAM,WAAW,GAAmD,EAAE,CAAC;QACvE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE;YACtD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,EAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAC,CAAC,CAAC;gBACpG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACnC,MAAM,OAAO,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;iBAC7D;gBACD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;gBAC9C,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;aACvD;SACF;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CAEF;AA9HU;IAAR,KAAK,EAAE;8CAAuC","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n AppProxy,\n ConductorAppProxy,\n flattenCells,\n CellIdStr, AgentIdMap, DnaId, CellAddress, HcConnectionOptions,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {HvmDef} from \"./definitions\";\nimport {\n InstalledAppId, NetworkMetrics,\n Timestamp\n} from \"@holochain/client\";\n// @ts-ignore\nimport * as net from \"net\";\nimport {NetworkCaller} from \"./NetworkCaller\";\n\n\n/**\n * Base class for HappMultiElements, which are LitElements that wrap multiple HappViewModel,\n * i.e. the main WebComponent of a web-app using multiple Holochain apps.\n */\nexport class HappMultiElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n @state() hvms: [AppProxy, HappViewModel][] = []\n\n /** Continually calls networkInfo for a specific cell with appProxy */\n networkCaller?: NetworkCaller;\n\n get count(): number {return this.hvms.length}\n\n /** Ctor */\n protected constructor(\n appConnections: [HcConnectionOptions, string | undefined, InstalledAppId | undefined][],\n public readonly isMainView: boolean,\n ) {\n super();\n this.constructHvms(appConnections)\n .then(() => console.debug(\"HappMultiElement constructed\"))\n }\n\n /** */\n protected async constructHvms(appConnections: [HcConnectionOptions, happSha256: string | undefined, InstalledAppId | undefined][]): Promise<void> {\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappMultiElement subclass \" + this.constructor.name);\n }\n for (const [options, happSha256, appId] of appConnections) {\n const appProxy = await ConductorAppProxy.new(hvmDef.id, options, happSha256);\n if (appId) {\n /** Override appId */\n hvmDef.id = appId;\n }\n const hvm = await HappViewModel.new(this, appProxy, hvmDef, this.isMainView);\n await hvm.authorizeAllZomeCalls(appProxy.adminWs);\n this.hvms.push([appProxy, hvm]);\n }\n this.networkCaller = new NetworkCaller(this.hvms[0]![0]); // use first appProxy\n await this.hvmsConstructed();\n await this.initializePerspectiveFromLocal();\n }\n\n /** */\n async initializePerspectiveFromLocal(): Promise<void> {\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveFromLocal();\n }\n await this.perspectiveInitializedFromLocal();\n }\n\n async initializePerspectiveFromNetwork(): Promise<void> {\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveFromLocal();\n }\n await this.perspectiveInitializedFromNetwork();\n }\n\n /** -- Lit lifecycle hooks -- */\n\n /** */\n override shouldUpdate() {\n return this.hvms.length > 0;\n }\n\n override firstUpdated() {\n this.perspectiveInitializedFromNetwork()\n .then(() => console.debug(\"Finished initializing Happ perspective from Network\"))\n }\n\n /** -- Hooks for subclasses to override -- */\n\n /** */\n async hvmsConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedFromLocal(): Promise<void> {}\n /** */\n async perspectiveInitializedFromNetwork(): Promise<void> {}\n\n\n /** -- Methods -- */\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkMetrics]>> {\n //console.debug(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n const appProxy = this.hvms[0]![0];\n const cellMap = appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n //console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\n /* Sort by agent key */\n let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\n for (const cellAddr of cellAddrs) {\n if (!dnaPerAgentMap.get(cellAddr.agentId)) {\n dnaPerAgentMap.set(cellAddr.agentId, []);\n }\n dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\n }\n //console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);\n /** Call NetworkInfo per AgentId */\n const allNetInfos: Record<CellIdStr, [Timestamp, NetworkMetrics]> = {};\n for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\n for (const dna of dnaIds) {\n const response = await appProxy.dumpNetworkMetrics({dna_hash: dna.hash, include_dht_summary: true});\n if (!response || !response[dna.b64]) {\n throw Promise.reject(\"No network metrics response for dna\");\n }\n const idStr = new CellAddress(dna, agent).str;\n allNetInfos[idStr] = [Date.now(), response[dna.b64]!];\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n}\n"]}
1
+ {"version":3,"file":"HappMultiElement.js","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n AppProxy,\n ConductorAppProxy,\n flattenCells,\n CellIdStr, AgentIdMap, DnaId, CellAddress, HcConnectionOptions,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {HvmDef} from \"./definitions\";\nimport {\n InstalledAppId, NetworkMetrics,\n Timestamp\n} from \"@holochain/client\";\n// @ts-ignore\nimport * as net from \"net\";\nimport {NetworkCaller} from \"./NetworkCaller\";\n\n\n/**\n * Base class for HappMultiElements, which are LitElements that wrap multiple HappViewModel,\n * i.e. the main WebComponent of a web-app using multiple Holochain apps.\n */\nexport class HappMultiElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n @state() hvms: [AppProxy, HappViewModel][] = []\n get count(): number {return this.hvms.length}\n\n /** Continually calls networkInfo for a specific cell with appProxy */\n networkCaller?: NetworkCaller;\n\n\n @state() _constructed = false;\n\n /** Ctor */\n protected constructor(\n appConnections: [HcConnectionOptions, string | undefined, InstalledAppId | undefined][],\n public readonly isMainView: boolean,\n ) {\n super();\n this.constructHvms(appConnections)\n .then(() => {\n console.debug(\"[lit-happ] HappMultiElement: Local Perspective initialized.\");\n this._constructed = true;\n console.debug(\"[lit-happ] HappMultiElement: Initializing Perspective from Network\")\n this.initializePerspectiveFromNetwork()\n .then(() => console.debug(\"[lit-happ] HappMultiElement: Network Perspective initialized.\"))\n })\n }\n\n /** */\n protected async constructHvms(appConnections: [HcConnectionOptions, happSha256: string | undefined, InstalledAppId | undefined][]): Promise<void> {\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappMultiElement subclass \" + this.constructor.name);\n }\n for (const [options, happSha256, appId] of appConnections) {\n const appProxy = await ConductorAppProxy.new(hvmDef.id, options, happSha256);\n if (appId) {\n /** Override appId */\n hvmDef.id = appId;\n }\n const hvm = await HappViewModel.new(this, appProxy, hvmDef, this.isMainView);\n await hvm.authorizeAllZomeCalls(appProxy.adminWs);\n this.hvms.push([appProxy, hvm]);\n }\n this.networkCaller = new NetworkCaller(this.hvms[0]![0]); // use first appProxy\n await this.hvmsConstructed();\n console.debug(\"[lit-happ] HappMultiElement constructed. Initializing Local Perspective...\")\n await this.initializePerspectiveFromLocal();\n }\n\n /** */\n async initializePerspectiveFromLocal(): Promise<void> {\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveFromLocal();\n }\n await this.perspectiveInitializedFromLocal();\n }\n\n async initializePerspectiveFromNetwork(): Promise<void> {\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveFromLocal(); // FIXME: Call Network once Holochain GetStrategy:Network issue is fixed.\n }\n await this.perspectiveInitializedFromNetwork();\n }\n\n /** -- Lit lifecycle hooks -- */\n\n /** */\n override shouldUpdate() {\n return this._constructed && this.hvms.length > 0;\n }\n\n\n /** -- Hooks for subclasses to override -- */\n\n /** */\n async hvmsConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedFromLocal(): Promise<void> {}\n /** */\n async perspectiveInitializedFromNetwork(): Promise<void> {}\n\n\n /** -- Methods -- */\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkMetrics]>> {\n //console.debug(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n const appProxy = this.hvms[0]![0];\n const cellMap = appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n //console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\n /* Sort by agent key */\n let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\n for (const cellAddr of cellAddrs) {\n if (!dnaPerAgentMap.get(cellAddr.agentId)) {\n dnaPerAgentMap.set(cellAddr.agentId, []);\n }\n dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\n }\n //console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);\n /** Call NetworkInfo per AgentId */\n const allNetInfos: Record<CellIdStr, [Timestamp, NetworkMetrics]> = {};\n for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\n for (const dna of dnaIds) {\n const response = await appProxy.dumpNetworkMetrics({dna_hash: dna.hash, include_dht_summary: true});\n if (!response || !response[dna.b64]) {\n throw Promise.reject(\"No network metrics response for dna\");\n }\n const idStr = new CellAddress(dna, agent).str;\n allNetInfos[idStr] = [Date.now(), response[dna.b64]!];\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HappViewModel.js","sourceRoot":"","sources":["../src/HappViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {AdminWebsocket, ClonedCell, CreateCloneCellRequest, InstalledAppId, Signal} from \"@holochain/client\";\nimport { ReactiveElement } from \"lit\";\nimport {\n AppProxy,\n BaseRoleName, CellAddress, CellCloner,\n CloneIndex,\n createCloneName,\n MyDictionary,\n HCL,\n} from \"@ddd-qc/cell-proxy\";\nimport { CellDef, DvmDef, HvmDef } from \"./definitions\";\nimport { DnaViewModel } from \"./DnaViewModel\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\nimport {RoleName} from \"@holochain/client/lib/types\";\n\n\n//export type HvmConstructor = {new(installedAppId: InstalledAppId): HappViewModel};\n\n\n/**\n * \"ViewModel\" of a hApp\n * Creates and stores all the DnaViewModels from the happDef.\n */\nexport class HappViewModel {\n\n /** -- Fields -- */\n readonly appId: InstalledAppId;\n /** HCLString -> DnaViewModel */\n protected _dvmMap: MyDictionary<DnaViewModel> = {};\n /** BaseRoleName -> DvmDef */\n protected _defMap: MyDictionary<DvmDef> = {};\n\n\n /** -- Getters -- */\n\n /** */\n getDef(name: BaseRoleName): DvmDef | undefined {\n return this._defMap[name];\n }\n\n /** */\n getCellDvms(cellId: CellAddress): MyDictionary<DnaViewModel> | undefined {\n const hcls = this._appProxy.getLocations(cellId);\n if (hcls === undefined) return undefined;\n let dict: MyDictionary<DnaViewModel> = {};\n for (const hcl of hcls) {\n const maybe = this.getDvm(hcl);\n if (maybe) {\n dict[hcl.toString()] = maybe;\n }\n }\n return dict;\n }\n\n /** */\n getDvm(hclOrId: HCL | BaseRoleName ): DnaViewModel | undefined {\n if (typeof hclOrId === 'string') {\n hclOrId = new HCL(this.appId, hclOrId);\n }\n return this._dvmMap[hclOrId.toString()];\n }\n\n\n /** */\n getClones(baseRoleName: BaseRoleName): DnaViewModel[] {\n const searchHcl = new HCL(this.appId, baseRoleName);\n let cloneDvms = [];\n for (const [sHcl, dvm] of Object.entries(this._dvmMap)) {\n const hcl = HCL.parse(sHcl);\n if (hcl.isClone() && hcl.match(searchHcl)) {\n cloneDvms.push(dvm);\n }\n }\n return cloneDvms;\n }\n\n\n /** -- Create -- */\n\n /** Spawn a HappViewModel for an AppId running on the AppProxy */\n static async new(host: ReactiveElement, appProxy: AppProxy, hvmDef: HvmDef, isMainView: boolean): Promise<HappViewModel> {\n const appId = appProxy.appIdOfShame? appProxy.appIdOfShame : hvmDef.id;\n //console.log(\"HappViewModel.new()\", hvmDef.id, appId)\n /** Create all Cell Proxies in the definition */\n for (const dvmDef of hvmDef.dvmDefs) {\n if (dvmDef.ctor.DEFAULT_BASE_ROLE_NAME === undefined) {\n return Promise.reject(\"static field DEFAULT_BASE_ROLE_NAME not defined for class \" + dvmDef.ctor.name);\n }\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n await appProxy.fetchCells(appId, baseRoleName);\n const hcl = new HCL(appId, baseRoleName);\n appProxy.createCellProxy(hcl);\n }\n const hvm = new HappViewModel(host, appProxy, hvmDef, isMainView);\n return hvm;\n }\n\n\n /** Ctor */\n private constructor(\n protected _host: ReactiveElement, /* VIEW */\n protected _appProxy: AppProxy, /* MODEL */\n hvmDef: HvmDef, /* VIEW-MODEL definition */\n public readonly isMainView: boolean,\n ) {\n this.appId = this._appProxy.appIdOfShame? this._appProxy.appIdOfShame : hvmDef.id;\n /** Create all non-deferred DVMs for this Happ */\n for (const dvmDef of hvmDef.dvmDefs) {\n this.createOriginalDvm(dvmDef);\n }\n this.createStartingClonesDvm();\n //console.log(\"HappViewModel created\", this._dvmMap)\n }\n\n\n /** -- Methods -- */\n\n get happSha256(): string | null {return this._appProxy.happSha256}\n\n getHappShareCode(role?: RoleName): string | null {return this._appProxy.getHappShareCode(role)}\n\n\n async authorizeAllZomeCalls(adminWs?: AdminWebsocket): Promise<void> {\n if (!adminWs) {\n return;\n }\n for (const [_sHcl, dvm] of Object.entries(this._dvmMap)) {\n //console.log(\"Authorizing\", sHcl);\n await dvm.authorizeZomeCalls(adminWs);\n }\n }\n\n /** */\n private createStartingClonesDvm(): void {\n const appInstalledCells = this._appProxy.getAppCells(this.appId)!;\n for (const [baseRoleName, roleCells] of Object.entries(appInstalledCells)) {\n const def = this._defMap[baseRoleName];\n if (!def) {\n throw Error(\"No definition found for given baseRoleName\");\n }\n for (const [cloneId, clone] of Object.entries(roleCells.clones)) {\n const hcl = new HCL(this.appId, baseRoleName, cloneId);\n this._appProxy.createCellProxy(hcl, clone.name);\n this.createDvm(def, hcl);\n }\n }\n }\n\n\n /** */\n private createDvm(dvmDef: DvmDef, hcl: HCL): DnaViewModel {\n const dvm: DnaViewModel = new dvmDef.ctor(this._host, this._appProxy, hcl, this.isMainView); // WARN this can throw an error\n //console.log(` createDvm() for \"${hcl.toString()}\" ; cellId: ${CellIdStr(dvm.cellId)}`);\n /** Setup signalHandler */\n if (dvm.signalHandler) {\n //console.log(`\"${dvm.baseRoleName}\" signalHandler added`, dvm.signalHandler);\n try {\n this._appProxy.addSignalHandler((sig: Signal) => {\n dvm.signalHandler!(sig)\n }, hcl.toString());\n } catch (e) {\n console.error(e)\n }\n }\n /** Store it */\n if (this._dvmMap[hcl.toString()]) {\n throw Error(\"DVM already exists for \" + hcl.toString());\n }\n this._dvmMap[hcl.toString()] = dvm;\n /** Done */\n return dvm;\n }\n\n\n /** */\n private createOriginalDvm(dvmDef: DvmDef): void {\n /** Determine baseRoleName */\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n //console.log(\"createOriginalDvm() for \", baseRoleName);\n if (this._defMap[baseRoleName]) {\n throw Error(`createOriginalDvm() failed. DVM for original cell of ${baseRoleName} already exists.`);\n }\n const hcl = new HCL(this.appId, baseRoleName);\n this.createDvm(dvmDef, hcl);\n this._defMap[baseRoleName] = dvmDef;\n }\n\n\n /** */\n async cloneDvm(baseRoleName: BaseRoleName, cellDef?: CellDef, cellCloner?: CellCloner): Promise<[ClonedCell, DnaViewModel]> {\n console.log(\"cloneDvm()\", baseRoleName);\n /** Check preconditions */\n const def = this._defMap[baseRoleName];\n if (!def) {\n return Promise.reject(`createCloneDvm() failed for ${baseRoleName}. No original DVM created.`)\n }\n if (!def.isClonable) {\n return Promise.reject(`createCloneDvm() failed. Role \"${baseRoleName}\" is not clonable.`)\n }\n /** Get cloneIndex */\n const clones = this.getClones(baseRoleName);\n const cloneIndex: CloneIndex = clones.length;\n const cloneName = cellDef && cellDef.cloneName\n ? cellDef.cloneName\n : createCloneName(baseRoleName, cloneIndex);\n /** Build default request */\n let request: CreateCloneCellRequest = {\n //app_id: this.appId,\n role_name: baseRoleName,\n modifiers: {\n network_seed: String(cloneIndex),\n },\n name: cloneName,\n }\n /** Modify request according to CellDef */\n if (cellDef) {\n request.modifiers = cellDef.modifiers;\n if (cellDef.membraneProof) request.membrane_proof = cellDef.membraneProof;\n if (cellDef.cloneName) request.name = cellDef.cloneName;\n }\n /** Create Cell */\n const clonedCell = cellCloner? await cellCloner.createCloneCell(request, false) : await this._appProxy.createCloneCell(request);\n //console.log(\"clone created:\", CellIdStr(cloneInstalledCell.cell_id));\n const cell = await this._appProxy.fetchCell(this.appId, CellAddress.from(clonedCell.cell_id));\n console.log(\"clone created:\", cell);\n const hcl = new HCL(this.appId, baseRoleName, cell.cloneId);\n /** Get created cell */\n const clone = cell.asCloned()!;\n this._appProxy.addClone(hcl, clone);\n /** Create CellProxy */\n this._appProxy.createCellProxy(hcl, clone.name);\n /** Create DVM and authorize */\n const dvm = this.createDvm(def, hcl);\n if (this._appProxy.adminWs) {\n await dvm.authorizeZomeCalls(this._appProxy.adminWs);\n }\n /** Done */\n return [clonedCell, dvm];\n }\n\n\n /** */\n probeAll(strategy: GetStrategy): void {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.probeAll(strategy);\n }\n }\n\n\n /** Can't parallelize calls since happ can have multiple roles with same dnas which can throttle entry_def calls */\n async initializePerspectiveFromLocal(): Promise<void> {\n for (const dvm of Object.values(this._dvmMap)) {\n await dvm.initializePerspectiveFromLocal();\n }\n }\n\n /** */\n async initializePerspectiveFromNetwork(): Promise<void> {\n const all = [];\n for (const dvm of Object.values(this._dvmMap)) {\n const p = dvm.initializePerspectiveFromNetwork();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n dumpCallLogs(baseRoleName?: BaseRoleName): void {\n if (baseRoleName) {\n const dvm = this.getDvm(baseRoleName);\n if (dvm) {\n dvm.dumpCallLogs();\n } else {\n console.error(`dumpCallLogs() failed. Role \"${baseRoleName}\" not found in happ \"${this.appId}\"`)\n }\n } else {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.dumpCallLogs();\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"HappViewModel.js","sourceRoot":"","sources":["../src/HappViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {AdminWebsocket, ClonedCell, CreateCloneCellRequest, InstalledAppId, Signal} from \"@holochain/client\";\nimport { ReactiveElement } from \"lit\";\nimport {\n AppProxy,\n BaseRoleName, CellAddress, CellCloner,\n CloneIndex,\n createCloneName,\n MyDictionary,\n HCL,\n} from \"@ddd-qc/cell-proxy\";\nimport { CellDef, DvmDef, HvmDef } from \"./definitions\";\nimport { DnaViewModel } from \"./DnaViewModel\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\nimport {RoleName} from \"@holochain/client/lib/types\";\n\n\n//export type HvmConstructor = {new(installedAppId: InstalledAppId): HappViewModel};\n\n\n/**\n * \"ViewModel\" of a hApp\n * Creates and stores all the DnaViewModels from the happDef.\n */\nexport class HappViewModel {\n\n /** -- Fields -- */\n readonly appId: InstalledAppId;\n /** HCLString -> DnaViewModel */\n protected _dvmMap: MyDictionary<DnaViewModel> = {};\n /** BaseRoleName -> DvmDef */\n protected _defMap: MyDictionary<DvmDef> = {};\n\n\n /** -- Getters -- */\n\n /** */\n getDef(name: BaseRoleName): DvmDef | undefined {\n return this._defMap[name];\n }\n\n /** */\n getCellDvms(cellId: CellAddress): MyDictionary<DnaViewModel> | undefined {\n const hcls = this._appProxy.getLocations(cellId);\n if (hcls === undefined) return undefined;\n let dict: MyDictionary<DnaViewModel> = {};\n for (const hcl of hcls) {\n const maybe = this.getDvm(hcl);\n if (maybe) {\n dict[hcl.toString()] = maybe;\n }\n }\n return dict;\n }\n\n /** */\n getDvm(hclOrId: HCL | BaseRoleName ): DnaViewModel | undefined {\n if (typeof hclOrId === 'string') {\n hclOrId = new HCL(this.appId, hclOrId);\n }\n return this._dvmMap[hclOrId.toString()];\n }\n\n\n /** */\n getClones(baseRoleName: BaseRoleName): DnaViewModel[] {\n const searchHcl = new HCL(this.appId, baseRoleName);\n let cloneDvms = [];\n for (const [sHcl, dvm] of Object.entries(this._dvmMap)) {\n const hcl = HCL.parse(sHcl);\n if (hcl.isClone() && hcl.match(searchHcl)) {\n cloneDvms.push(dvm);\n }\n }\n return cloneDvms;\n }\n\n\n /** -- Create -- */\n\n /** Spawn a HappViewModel for an AppId running on the AppProxy */\n static async new(host: ReactiveElement, appProxy: AppProxy, hvmDef: HvmDef, isMainView: boolean): Promise<HappViewModel> {\n const appId = appProxy.appIdOfShame? appProxy.appIdOfShame : hvmDef.id;\n //console.log(\"HappViewModel.new()\", hvmDef.id, appId)\n /** Create all Cell Proxies in the definition */\n for (const dvmDef of hvmDef.dvmDefs) {\n if (dvmDef.ctor.DEFAULT_BASE_ROLE_NAME === undefined) {\n return Promise.reject(\"static field DEFAULT_BASE_ROLE_NAME not defined for class \" + dvmDef.ctor.name);\n }\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n await appProxy.fetchCells(appId, baseRoleName);\n const hcl = new HCL(appId, baseRoleName);\n appProxy.createCellProxy(hcl);\n }\n const hvm = new HappViewModel(host, appProxy, hvmDef, isMainView);\n return hvm;\n }\n\n\n /** Ctor */\n private constructor(\n protected _host: ReactiveElement, /* VIEW */\n protected _appProxy: AppProxy, /* MODEL */\n hvmDef: HvmDef, /* VIEW-MODEL definition */\n public readonly isMainView: boolean,\n ) {\n this.appId = this._appProxy.appIdOfShame? this._appProxy.appIdOfShame : hvmDef.id;\n /** Create all non-deferred DVMs for this Happ */\n for (const dvmDef of hvmDef.dvmDefs) {\n this.createOriginalDvm(dvmDef);\n }\n this.createStartingClonesDvm();\n //console.log(\"HappViewModel created\", this._dvmMap)\n }\n\n\n /** -- Methods -- */\n\n get happSha256(): string | null {return this._appProxy.happSha256}\n\n getHappShareCode(role?: RoleName): string | null {return this._appProxy.getHappShareCode(role)}\n\n\n async authorizeAllZomeCalls(adminWs?: AdminWebsocket): Promise<void> {\n if (!adminWs) {\n return;\n }\n for (const [_sHcl, dvm] of Object.entries(this._dvmMap)) {\n //console.log(\"Authorizing\", sHcl);\n await dvm.authorizeZomeCalls(adminWs);\n }\n }\n\n /** */\n private createStartingClonesDvm(): void {\n const appInstalledCells = this._appProxy.getAppCells(this.appId)!;\n for (const [baseRoleName, roleCells] of Object.entries(appInstalledCells)) {\n const def = this._defMap[baseRoleName];\n if (!def) {\n throw Error(\"No definition found for given baseRoleName\");\n }\n for (const [cloneId, clone] of Object.entries(roleCells.clones)) {\n const hcl = new HCL(this.appId, baseRoleName, cloneId);\n this._appProxy.createCellProxy(hcl, clone.name);\n this.createDvm(def, hcl);\n }\n }\n }\n\n\n /** */\n private createDvm(dvmDef: DvmDef, hcl: HCL): DnaViewModel {\n const dvm: DnaViewModel = new dvmDef.ctor(this._host, this._appProxy, hcl, this.isMainView); // WARN this can throw an error\n //console.log(` createDvm() for \"${hcl.toString()}\" ; cellId: ${CellIdStr(dvm.cellId)}`);\n /** Setup signalHandler */\n if (dvm.signalHandler) {\n //console.log(`\"${dvm.baseRoleName}\" signalHandler added`, dvm.signalHandler);\n try {\n this._appProxy.addSignalHandler((sig: Signal) => {\n dvm.signalHandler!(sig)\n }, hcl.toString());\n } catch (e) {\n console.error(e)\n }\n }\n /** Store it */\n if (this._dvmMap[hcl.toString()]) {\n throw Error(\"DVM already exists for \" + hcl.toString());\n }\n this._dvmMap[hcl.toString()] = dvm;\n /** Done */\n return dvm;\n }\n\n\n /** */\n private createOriginalDvm(dvmDef: DvmDef): void {\n /** Determine baseRoleName */\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n //console.log(\"createOriginalDvm() for \", baseRoleName);\n if (this._defMap[baseRoleName]) {\n throw Error(`createOriginalDvm() failed. DVM for original cell of ${baseRoleName} already exists.`);\n }\n const hcl = new HCL(this.appId, baseRoleName);\n this.createDvm(dvmDef, hcl);\n this._defMap[baseRoleName] = dvmDef;\n }\n\n\n /** */\n async cloneDvm(baseRoleName: BaseRoleName, cellDef?: CellDef, cellCloner?: CellCloner): Promise<[ClonedCell, DnaViewModel]> {\n console.log(\"cloneDvm()\", baseRoleName);\n /** Check preconditions */\n const def = this._defMap[baseRoleName];\n if (!def) {\n return Promise.reject(`createCloneDvm() failed for ${baseRoleName}. No original DVM created.`)\n }\n if (!def.isClonable) {\n return Promise.reject(`createCloneDvm() failed. Role \"${baseRoleName}\" is not clonable.`)\n }\n /** Get cloneIndex */\n const clones = this.getClones(baseRoleName);\n const cloneIndex: CloneIndex = clones.length;\n const cloneName = cellDef && cellDef.cloneName\n ? cellDef.cloneName\n : createCloneName(baseRoleName, cloneIndex);\n /** Build default request */\n let request: CreateCloneCellRequest = {\n //app_id: this.appId,\n role_name: baseRoleName,\n modifiers: {\n network_seed: String(cloneIndex),\n },\n name: cloneName,\n }\n /** Modify request according to CellDef */\n if (cellDef) {\n request.modifiers = cellDef.modifiers;\n if (cellDef.membraneProof) request.membrane_proof = cellDef.membraneProof;\n if (cellDef.cloneName) request.name = cellDef.cloneName;\n }\n /** Create Cell */\n const clonedCell = cellCloner? await cellCloner.createCloneCell(request, false) : await this._appProxy.createCloneCell(request);\n //console.log(\"clone created:\", CellIdStr(cloneInstalledCell.cell_id));\n const cell = await this._appProxy.fetchCell(this.appId, CellAddress.from(clonedCell.cell_id));\n console.log(\"clone created:\", cell);\n const hcl = new HCL(this.appId, baseRoleName, cell.cloneId);\n /** Get created cell */\n const clone = cell.asCloned()!;\n this._appProxy.addClone(hcl, clone);\n /** Create CellProxy */\n this._appProxy.createCellProxy(hcl, clone.name);\n /** Create DVM and authorize */\n const dvm = this.createDvm(def, hcl);\n if (this._appProxy.adminWs) {\n await dvm.authorizeZomeCalls(this._appProxy.adminWs);\n }\n /** Done */\n return [clonedCell, dvm];\n }\n\n\n /** */\n probeAll(strategy: GetStrategy): void {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.probeAll(strategy);\n }\n }\n\n\n /** Can't parallelize calls since happ can have multiple roles with same dnas which can throttle entry_def calls */\n async initializePerspectiveFromLocal(): Promise<void> {\n for (const dvm of Object.values(this._dvmMap)) {\n await dvm.initializePerspectiveFromLocal();\n }\n }\n\n /** */\n async initializePerspectiveFromNetwork(): Promise<void> {\n const all = [];\n for (const dvm of Object.values(this._dvmMap)) {\n const p = dvm.initializePerspectiveFromNetwork();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n dumpCallLogs(baseRoleName?: BaseRoleName): void {\n if (baseRoleName) {\n const dvm = this.getDvm(baseRoleName);\n if (dvm) {\n dvm.dumpCallLogs();\n } else {\n console.error(`dumpCallLogs() failed. Role \"${baseRoleName}\" not found in happ \"${this.appId}\"`)\n }\n } else {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.dumpCallLogs();\n }\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AppProxy, CellAddress } from "@ddd-qc/cell-proxy";
1
+ import { AgentId, AppProxy, CellAddress } from "@ddd-qc/cell-proxy";
2
2
  import { NetworkMetrics, Timestamp } from "@holochain/client";
3
3
  import { TransportStats } from "@holochain/client/lib/api/admin/types";
4
4
  export declare class NetworkCaller {
@@ -10,6 +10,7 @@ export declare class NetworkCaller {
10
10
  private _networkStatsLogs;
11
11
  private _intervalId;
12
12
  private _callbacks;
13
+ private _transportToAgentMap;
13
14
  setCellAddr(cellAddr: CellAddress): void;
14
15
  setCapacity(n: number): void;
15
16
  get networkMetricsLogs(): [Timestamp, NetworkMetrics][];
@@ -20,6 +21,9 @@ export declare class NetworkCaller {
20
21
  clearAllCallbacks(): void;
21
22
  stopCallLoop(): void;
22
23
  clear(): void;
24
+ peerKeyToAgentId(transportKey: string): Promise<AgentId | undefined>;
25
+ dumpTransportToAgentMap(): void;
26
+ updateTransportToAgentMap(): Promise<void>;
23
27
  callNetworkMetrics(): Promise<NetworkMetrics>;
24
28
  dumpNetworkMetricsLogs(n?: number): void;
25
29
  callNetworkStats(): Promise<TransportStats>;
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkCaller.d.ts","sourceRoot":"","sources":["../src/NetworkCaller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAuD,cAAc,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAC;AAQrE,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,QAAQ,CAAC;gBAArC,QAAQ,EAAE,QAAQ,EAAU,QAAQ,CAAC,yBAAa;IAKtE,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,mBAAmB,CAA+D;IAC1F,OAAO,CAAC,iBAAiB,CAA+D;IAGxF,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,UAAU,CAAuB;IAIzC,WAAW,CAAC,QAAQ,EAAE,WAAW;IAEjC,WAAW,CAAC,CAAC,EAAE,MAAM;IAKrB,IAAI,kBAAkB,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAA6C;IAEpG,IAAI,gBAAgB,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAA2C;IAMhG,SAAS,IAAI,OAAO;IAMpB,aAAa,CAAC,QAAQ,EAAE,MAAM;IAgB9B,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,KAAK,IAAI;IAKpE,iBAAiB;IAKjB,YAAY;IAOZ,KAAK;IAOC,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAuBnD,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM;IA6BzB,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;IAajD,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM;CAYlC"}
1
+ {"version":3,"file":"NetworkCaller.d.ts","sourceRoot":"","sources":["../src/NetworkCaller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAKH,cAAc,EACd,SAAS,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,cAAc,EAAC,MAAM,uCAAuC,CAAC;AAQrE,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,QAAQ,CAAC;gBAArC,QAAQ,EAAE,QAAQ,EAAU,QAAQ,CAAC,EAAE,WAAW,YAAA;IAKtE,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,mBAAmB,CAA+D;IAC1F,OAAO,CAAC,iBAAiB,CAA+D;IAExF,OAAO,CAAC,WAAW,CAA8B;IAEjD,OAAO,CAAC,UAAU,CAAuB;IAGzC,OAAO,CAAC,oBAAoB,CAAmC;IAK/D,WAAW,CAAC,QAAQ,EAAE,WAAW;IAEjC,WAAW,CAAC,CAAC,EAAE,MAAM;IAKrB,IAAI,kBAAkB,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAA6C;IAEpG,IAAI,gBAAgB,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAA2C;IAMhG,SAAS,IAAI,OAAO;IAMpB,aAAa,CAAC,QAAQ,EAAE,MAAM;IAgB9B,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,KAAK,IAAI;IAKpE,iBAAiB;IAKjB,YAAY;IAOZ,KAAK;IAMG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAW1E,uBAAuB;IASjB,yBAAyB;IAwC3B,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAuBnD,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM;IA6BzB,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;IAajD,oBAAoB,CAAC,CAAC,CAAC,EAAE,MAAM;CAYlC"}