@ddd-qc/lit-happ 0.33.9 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) 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.map +1 -1
  21. package/dist/NetworkCaller.js.map +1 -1
  22. package/dist/ViewModel.js.map +1 -1
  23. package/dist/ZomeElement.d.ts +1 -1
  24. package/dist/ZomeElement.d.ts.map +1 -1
  25. package/dist/ZomeElement.js.map +1 -1
  26. package/dist/ZomeMultiElement.d.ts +2 -2
  27. package/dist/ZomeMultiElement.d.ts.map +1 -1
  28. package/dist/ZomeMultiElement.js.map +1 -1
  29. package/dist/ZomeViewModel.d.ts +1 -1
  30. package/dist/ZomeViewModel.d.ts.map +1 -1
  31. package/dist/ZomeViewModel.js.map +1 -1
  32. package/dist/ZomeViewModelWithSignals.js.map +1 -1
  33. package/dist/elements/cell-context.js.map +1 -1
  34. package/dist/elements/cell-multi-context.js.map +1 -1
  35. package/dist/elements/dvm-inspect.js.map +1 -1
  36. package/dist/elements/entry-def-select.js.map +1 -1
  37. package/dist/globals.js.map +1 -1
  38. 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":"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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"]}
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":"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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: \" + 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":"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,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAI,IAAI,CAAC,WAAmC,CAAA;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,0BAA0B,CAAC,CAAC;QAClE,CAAC;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,CAAC;YAC7B,IAAI,GAAkB,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;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,CAAC;YACX,MAAM,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,CAAC;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,CAAC;YACX,MAAM,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,CAAC;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,CAAC;YACtD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;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,CAAC;YACpE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,CAAC;YACD,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;YACtE,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAM,CAAC,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IAOH,CAAC;IAIkB,aAAa,CAAC,QAAqB;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAEhE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;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,CAAC;YAChE,MAAM,CAAC,GAAG,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;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,CAAC;YAChE,MAAM,CAAC,GAAG,GAAG,CAAC,gCAAgC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;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,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7E,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAM,CAAM,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;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,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC/D,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;YAC3B,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,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;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QACvE,CAAC;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. 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 +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,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,EAAE,WAAW,YAAA;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 +1 @@
1
- {"version":3,"file":"NetworkCaller.js","sourceRoot":"","sources":["../src/NetworkCaller.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppProxy, CellAddress, prettyDate, RingBuffer} from \"@ddd-qc/cell-proxy\";\r\nimport {DhtArc, DumpNetworkMetricsRequest, FetchStateSummary, NetworkMetrics, Timestamp} from \"@holochain/client\";\r\nimport {TransportStats} from \"@holochain/client/lib/api/admin/types\";\r\n\r\ntype NetworkInfoCb = (info:NetworkMetrics, m: TransportStats) => void;\r\n\r\n\r\n/**\r\n * Class handling network info calling and result storing\r\n */\r\nexport class NetworkCaller {\r\n\r\n /** */\r\n constructor(private appProxy: AppProxy, private cellAddr?: CellAddress) {\r\n // N/A\r\n }\r\n\r\n\r\n private _lastTimeQueried: Timestamp = 0;\r\n private _networkMetricsLogs: RingBuffer<[Timestamp, NetworkMetrics]> = new RingBuffer(50);\r\n private _networkStatsLogs: RingBuffer<[Timestamp, TransportStats]> = new RingBuffer(50);\r\n\r\n\r\n private _intervalId: any | undefined = undefined;\r\n\r\n private _callbacks: NetworkInfoCb[] = [];\r\n\r\n /** -- Getters & Setters -- */\r\n\r\n setCellAddr(cellAddr: CellAddress) { this.cellAddr = cellAddr};\r\n\r\n setCapacity(n: number) {\r\n this._networkMetricsLogs.resize(n);\r\n this._networkStatsLogs.resize(n);\r\n }\r\n\r\n get networkMetricsLogs(): [Timestamp, NetworkMetrics][] {return this._networkMetricsLogs.toArray();}\r\n\r\n get networkStatsLogs(): [Timestamp, TransportStats][] {return this._networkStatsLogs.toArray();}\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n /** */\r\n isLooping(): boolean {\r\n const isUnd = this._intervalId === undefined;\r\n return !isUnd;\r\n }\r\n\r\n /** */\r\n startCallLoop(interval: number) {\r\n if (this.isLooping()) {\r\n this.stopCallLoop();\r\n }\r\n this._intervalId = setInterval(async () => {\r\n //console.log(\"Requesting network info...\");\r\n const res = await this.callNetworkMetrics();\r\n const res2 = await this.callNetworkStats();\r\n for (const callback of this._callbacks) {\r\n callback(res, res2);\r\n }\r\n }, interval);\r\n }\r\n\r\n\r\n /** */\r\n addCallback(callback: (n: NetworkMetrics, m: TransportStats) => void) {\r\n this._callbacks.push(callback);\r\n }\r\n\r\n /** */\r\n clearAllCallbacks() {\r\n this._callbacks = [];\r\n }\r\n\r\n /** */\r\n stopCallLoop() {\r\n clearInterval(this._intervalId);\r\n this._intervalId = undefined;\r\n }\r\n\r\n\r\n /** */\r\n clear() {\r\n this._networkMetricsLogs.clear();\r\n this._networkStatsLogs.clear();\r\n }\r\n\r\n\r\n /** */\r\n async callNetworkMetrics(): Promise<NetworkMetrics> {\r\n if (!this.cellAddr) {\r\n throw Promise.reject(\"callNetworkMetrics() aborted. cellAddr not specified.\");\r\n }\r\n /* Call networkInfo */\r\n const request: DumpNetworkMetricsRequest = {\r\n dna_hash: this.cellAddr.dnaId.hash,\r\n include_dht_summary: true, // ???\r\n };\r\n const response = await this.appProxy.dumpNetworkMetrics(request);\r\n if (!response || !response[this.cellAddr.dnaId.b64]) {\r\n throw Promise.reject(\"No network metrics response for dna\");\r\n }\r\n /* Store */\r\n const dnaResp = response[this.cellAddr.dnaId.b64]!;\r\n this._lastTimeQueried = Date.now();\r\n this._networkMetricsLogs.add([this._lastTimeQueried, dnaResp]);\r\n /** */\r\n return dnaResp;\r\n }\r\n\r\n\r\n /** */\r\n dumpNetworkMetricsLogs(n?: number) {\r\n console.log(`dumpNetworkMetricsLogs()`, this.cellAddr);\r\n if (!this.cellAddr) {\r\n throw Error(\"dumpNetworkMetricsLogs() aborted. cellAddr not specified.\");\r\n }\r\n const nn = n? n : this._networkMetricsLogs.getBufferLength();\r\n let logs = this._networkMetricsLogs.getLastN(nn).map(([ts, metrics]) => {\r\n if (metrics.local_agents.length == 0) {\r\n throw Error(\"No local agents found in NetworkMetrics\");\r\n }\r\n if (metrics.local_agents.length == 0) {\r\n console.warn(\"dumpNetworkMetricsLogs() More than one local_agent found\");\r\n }\r\n const local_agent = metrics.local_agents[0]!;\r\n return {\r\n //ts,\r\n ts: prettyDate(new Date(ts)),\r\n current_arc: arc_size(local_agent.storage_arc),\r\n target_arc: arc_size(local_agent.target_arc),\r\n peers: Object.keys(metrics.gossip_state_summary.peer_meta).length,\r\n //total_peers: Object.keys(metrics.gossip_state_summary.peer_meta).length,\r\n rounds: metrics.gossip_state_summary.accepted_rounds.length,\r\n pending_requests: count_pending_requests(metrics.fetch_state_summary),\r\n }\r\n })\r\n console.table(logs);\r\n }\r\n\r\n /** */\r\n async callNetworkStats(): Promise<TransportStats> {\r\n const response = await this.appProxy.dumpNetworkStats();\r\n if (!response) {\r\n throw Promise.reject(\"No network stats response for dna\");\r\n }\r\n /* Store */\r\n this._networkStatsLogs.add([this._lastTimeQueried, response]);\r\n /** */\r\n return response;\r\n }\r\n\r\n\r\n /** */\r\n dumpNetworkStatsLogs(n?: number) {\r\n console.log(`dumpNetworkStatsLogs()`);\r\n const nn = n ? n : this._networkStatsLogs.getBufferLength();\r\n this._networkStatsLogs.getLastN(nn).map(([ts, stats]) => {\r\n console.log(`[${prettyDate(new Date(ts))}] Backend: ${stats.backend} ; Peers: ${stats.peer_urls.length}`);\r\n const logs = stats.connections.map((connection) => {\r\n return connection;\r\n });\r\n console.table(logs);\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n/** */\r\nfunction count_pending_requests(fetchSummary: FetchStateSummary): number {\r\n let total = 0;\r\n for (const peerUrls of Object.values(fetchSummary.pending_requests)) {\r\n total += peerUrls.length;\r\n }\r\n return total;\r\n}\r\n\r\n\r\n/** */\r\nfunction arc_size(arc: DhtArc): number {\r\n if (arc == null) {\r\n return 0;\r\n }\r\n return arc[1] - arc[0];\r\n}\r\n"]}
1
+ {"version":3,"file":"NetworkCaller.js","sourceRoot":"","sources":["../src/NetworkCaller.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppProxy, CellAddress, prettyDate, RingBuffer} from \"@ddd-qc/cell-proxy\";\r\nimport {DhtArc, DumpNetworkMetricsRequest, FetchStateSummary, NetworkMetrics, Timestamp} from \"@holochain/client\";\r\nimport {TransportStats} from \"@holochain/client/lib/api/admin/types\";\r\n\r\ntype NetworkInfoCb = (info:NetworkMetrics, m: TransportStats) => void;\r\n\r\n\r\n/**\r\n * Class handling network info calling and result storing\r\n */\r\nexport class NetworkCaller {\r\n\r\n /** */\r\n constructor(private appProxy: AppProxy, private cellAddr?: CellAddress) {\r\n // N/A\r\n }\r\n\r\n\r\n private _lastTimeQueried: Timestamp = 0;\r\n private _networkMetricsLogs: RingBuffer<[Timestamp, NetworkMetrics]> = new RingBuffer(50);\r\n private _networkStatsLogs: RingBuffer<[Timestamp, TransportStats]> = new RingBuffer(50);\r\n\r\n\r\n private _intervalId: any | undefined = undefined;\r\n\r\n private _callbacks: NetworkInfoCb[] = [];\r\n\r\n /** -- Getters & Setters -- */\r\n\r\n setCellAddr(cellAddr: CellAddress) { this.cellAddr = cellAddr};\r\n\r\n setCapacity(n: number) {\r\n this._networkMetricsLogs.resize(n);\r\n this._networkStatsLogs.resize(n);\r\n }\r\n\r\n get networkMetricsLogs(): [Timestamp, NetworkMetrics][] {return this._networkMetricsLogs.toArray();}\r\n\r\n get networkStatsLogs(): [Timestamp, TransportStats][] {return this._networkStatsLogs.toArray();}\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n /** */\r\n isLooping(): boolean {\r\n const isUnd = this._intervalId === undefined;\r\n return !isUnd;\r\n }\r\n\r\n /** */\r\n startCallLoop(interval: number) {\r\n if (this.isLooping()) {\r\n this.stopCallLoop();\r\n }\r\n this._intervalId = setInterval(async () => {\r\n //console.log(\"Requesting network info...\");\r\n const res = await this.callNetworkMetrics();\r\n const res2 = await this.callNetworkStats();\r\n for (const callback of this._callbacks) {\r\n callback(res, res2);\r\n }\r\n }, interval);\r\n }\r\n\r\n\r\n /** */\r\n addCallback(callback: (n: NetworkMetrics, m: TransportStats) => void) {\r\n this._callbacks.push(callback);\r\n }\r\n\r\n /** */\r\n clearAllCallbacks() {\r\n this._callbacks = [];\r\n }\r\n\r\n /** */\r\n stopCallLoop() {\r\n clearInterval(this._intervalId);\r\n this._intervalId = undefined;\r\n }\r\n\r\n\r\n /** */\r\n clear() {\r\n this._networkMetricsLogs.clear();\r\n this._networkStatsLogs.clear();\r\n }\r\n\r\n\r\n /** */\r\n async callNetworkMetrics(): Promise<NetworkMetrics> {\r\n if (!this.cellAddr) {\r\n throw Promise.reject(\"callNetworkMetrics() aborted. cellAddr not specified.\");\r\n }\r\n /* Call networkInfo */\r\n const request: DumpNetworkMetricsRequest = {\r\n dna_hash: this.cellAddr.dnaId.hash,\r\n include_dht_summary: true, // ???\r\n };\r\n const response = await this.appProxy.dumpNetworkMetrics(request);\r\n if (!response || !response[this.cellAddr.dnaId.b64]) {\r\n throw Promise.reject(\"No network metrics response for dna\");\r\n }\r\n /* Store */\r\n const dnaResp = response[this.cellAddr.dnaId.b64]!;\r\n this._lastTimeQueried = Date.now();\r\n this._networkMetricsLogs.add([this._lastTimeQueried, dnaResp]);\r\n /** */\r\n return dnaResp;\r\n }\r\n\r\n\r\n /** */\r\n dumpNetworkMetricsLogs(n?: number) {\r\n console.log(`dumpNetworkMetricsLogs()`, this.cellAddr);\r\n if (!this.cellAddr) {\r\n throw Error(\"dumpNetworkMetricsLogs() aborted. cellAddr not specified.\");\r\n }\r\n const nn = n? n : this._networkMetricsLogs.getBufferLength();\r\n let logs = this._networkMetricsLogs.getLastN(nn).map(([ts, metrics]) => {\r\n if (metrics.local_agents.length == 0) {\r\n throw Error(\"No local agents found in NetworkMetrics\");\r\n }\r\n if (metrics.local_agents.length == 0) {\r\n console.warn(\"dumpNetworkMetricsLogs() More than one local_agent found\");\r\n }\r\n const local_agent = metrics.local_agents[0]!;\r\n return {\r\n //ts,\r\n ts: prettyDate(new Date(ts)),\r\n current_arc: arc_size(local_agent.storage_arc),\r\n target_arc: arc_size(local_agent.target_arc),\r\n peers: Object.keys(metrics.gossip_state_summary.peer_meta).length,\r\n //total_peers: Object.keys(metrics.gossip_state_summary.peer_meta).length,\r\n rounds: metrics.gossip_state_summary.accepted_rounds.length,\r\n pending_requests: count_pending_requests(metrics.fetch_state_summary),\r\n }\r\n })\r\n console.table(logs);\r\n }\r\n\r\n /** */\r\n async callNetworkStats(): Promise<TransportStats> {\r\n const response = await this.appProxy.dumpNetworkStats();\r\n if (!response) {\r\n throw Promise.reject(\"No network stats response for dna\");\r\n }\r\n /* Store */\r\n this._networkStatsLogs.add([this._lastTimeQueried, response]);\r\n /** */\r\n return response;\r\n }\r\n\r\n\r\n /** */\r\n dumpNetworkStatsLogs(n?: number) {\r\n console.log(`dumpNetworkStatsLogs()`);\r\n const nn = n ? n : this._networkStatsLogs.getBufferLength();\r\n this._networkStatsLogs.getLastN(nn).map(([ts, stats]) => {\r\n console.log(`[${prettyDate(new Date(ts))}] Backend: ${stats.backend} ; Peers: ${stats.peer_urls.length}`);\r\n const logs = stats.connections.map((connection) => {\r\n return connection;\r\n });\r\n console.table(logs);\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n/** */\r\nfunction count_pending_requests(fetchSummary: FetchStateSummary): number {\r\n let total = 0;\r\n for (const peerUrls of Object.values(fetchSummary.pending_requests)) {\r\n total += peerUrls.length;\r\n }\r\n return total;\r\n}\r\n\r\n\r\n/** */\r\nfunction arc_size(arc: DhtArc): number {\r\n if (arc == null) {\r\n return 0;\r\n }\r\n return arc[1] - arc[0];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewModel.js","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, ContextProvider} from \"@lit/context\";\nimport {ReactiveControllerHost, ReactiveElement} from \"lit\";\nimport {SignalCb} from \"@holochain/client\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\n\nimport { Mutex } from 'async-mutex';\n\n\n// enum InitializationState {\n// Uninitialized = \"Uninitialized\",\n// InitializingOffline = \"InitializingOffline\",\n// InitializingOnline = \"InitializingOnline\",\n// Initialized = \"Initialized\",\n// }\n\n\n/**\n * ABC of a ViewModel.\n * It mediates the interaction between a View (CustomElements) and a Model (Zome / DNA).\n * It is an Observable meant to be observed by (Lit) ReactiveElements.\n * It is meant to be a singleton passed around by a (Lit) Context.\n * The ViewModel contains a perspective: All the data that a view can observe.\n * To update subscribers, it makes use of Lit's reactive properties.\n * When subscribing, a host must provide a reactive property that has the ViewModel's perspestives's type.\n * Hosts can trigger probing to get an updated perspective.\n * The perspective can be automatically updated by internal events.\n */\n export abstract class ViewModel {\n\n constructor(public readonly isMainView: boolean) {\n // N/A\n }\n\n /** -- Fields -- */\n protected _previousPerspective?: unknown;\n protected _providedHosts: [ReactiveControllerHost, PropertyKey][] = [];\n protected _provider?: unknown; // FIXME type: ContextProvider<this.getContext()>;\n\n protected _canNotify = true; // Master switch for notifying subscribers\n\n //protected _initializationState: InitializationState = InitializationState.Uninitialized;\n\n\n /** -- Abstract fields -- */\n\n abstract signalHandler?: SignalCb;\n\n\n /** -- Abstract methods -- */\n\n abstract getContext(): Context<unknown, unknown>;\n /* Child class should implement with specific type */\n abstract get perspective(): Object;\n\n\n /* Children are expected to override and provide a lightweight and easy-to-compare version of the perspective */\n comparable(): Object { return {} }\n\n\n /* (optional) Set startup perspective with local data (source-chain and local DHT cache) */\n async initializePerspectiveFromLocal(): Promise<void> {}\n /* (optional) Set startup perspective with data from the DHT network */\n async initializePerspectiveFromNetwork(): Promise<void> {}\n /* (optional) Called by probeAll() which */\n protected probeAllInner(_strategy: GetStrategy): void {};\n\n /**\n * Trigger probing into the network to get the latest up-to-date perspective.\n * Mutex wrapping of probeAllInner as to not do multiple probing at the same time.\n * CAUTION: Don't call probeAll() during a probeAll() or it will deadlock.\n * Should not be async as we expect this to take a long time. Happs are expected to use signals instead to notify changes in data.\n * Probe calls with Network strategy are expected, so a fail-safe try-catch is needed to handle a get() failure.\n */\n protected _probeMutex = new Mutex();\n probeAll(strategy: GetStrategy): void {\n // if (this._initializationState !== InitializationState.Initialized) {\n // console.warn(\"probeAll() called on an uninitialized ViewModel\");\n // return;\n // }\n if (this._probeMutex.isLocked()) {\n console.log(\"probeAll() call skipped. Reason: Already running.\");\n return;\n }\n this._probeMutex\n .acquire()\n .then(async (release) => {\n try {\n this.probeAllInner(strategy);\n } catch (e) {\n console.error(\"probeAll() failed\", e);\n }\n release();\n });\n }\n\n /**\n * Return true if the perspective has changed (compared to _previousPerspective).\n * This will trigger an update on the observers.\n */\n protected hasChanged(): boolean {\n /** return true if previous is empty, meaning comparable() has not been implemented */\n if (!this._previousPerspective || Object.keys(this._previousPerspective).length == 0) {\n return true;\n }\n return Object.entries(this._previousPerspective).toString() != Object.entries(this.comparable()).toString();\n }\n\n\n /** -- Final methods -- */\n\n /** Set ContextProvider for host */\n provideContext(providerHost: ReactiveElement): void {\n console.log(`\\t\\tProviding context \"${this.getContext()}\" | in host `, providerHost);\n this._provider = new ContextProvider(providerHost, this.getContext(), this);\n }\n\n /** -- Observer pattern -- */\n\n /** */\n subscribe(providedHost: ReactiveControllerHost, propName: PropertyKey): void {\n (providedHost as any)[propName] = this.perspective;\n this._providedHosts.push([providedHost, propName])\n }\n\n /** */\n unsubscribe(candidate: ReactiveControllerHost): void {\n let index = 0;\n for (const [host, _propName] of this._providedHosts) {\n if (host === candidate) break;\n index += 1;\n }\n if (index > -1) {\n this._providedHosts.splice(index, 1);\n }\n }\n\n /** */\n protected notifySubscribers(): boolean {\n if (!this._canNotify || !this.hasChanged()) {\n return false;\n }\n //this._previousPerspective = structuredClone(this.perspective);\n this._previousPerspective = this.comparable();\n for (const [host, propName] of this._providedHosts) {\n if (propName == \"\") {\n (host as any).requestUpdate();\n } else {\n (host as any)[propName] = this.perspective;\n }\n }\n return true;\n }\n\n}\n"]}
1
+ {"version":3,"file":"ViewModel.js","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, ContextProvider} from \"@lit/context\";\nimport {ReactiveControllerHost, ReactiveElement} from \"lit\";\nimport {SignalCb} from \"@holochain/client\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\n\nimport { Mutex } from 'async-mutex';\n\n\n// enum InitializationState {\n// Uninitialized = \"Uninitialized\",\n// InitializingOffline = \"InitializingOffline\",\n// InitializingOnline = \"InitializingOnline\",\n// Initialized = \"Initialized\",\n// }\n\n\n/**\n * ABC of a ViewModel.\n * It mediates the interaction between a View (CustomElements) and a Model (Zome / DNA).\n * It is an Observable meant to be observed by (Lit) ReactiveElements.\n * It is meant to be a singleton passed around by a (Lit) Context.\n * The ViewModel contains a perspective: All the data that a view can observe.\n * To update subscribers, it makes use of Lit's reactive properties.\n * When subscribing, a host must provide a reactive property that has the ViewModel's perspestives's type.\n * Hosts can trigger probing to get an updated perspective.\n * The perspective can be automatically updated by internal events.\n */\n export abstract class ViewModel {\n\n constructor(public readonly isMainView: boolean) {\n // N/A\n }\n\n /** -- Fields -- */\n protected _previousPerspective?: unknown;\n protected _providedHosts: [ReactiveControllerHost, PropertyKey][] = [];\n protected _provider?: unknown; // FIXME type: ContextProvider<this.getContext()>;\n\n protected _canNotify = true; // Master switch for notifying subscribers\n\n //protected _initializationState: InitializationState = InitializationState.Uninitialized;\n\n\n /** -- Abstract fields -- */\n\n abstract signalHandler?: SignalCb;\n\n\n /** -- Abstract methods -- */\n\n abstract getContext(): Context<unknown, unknown>;\n /* Child class should implement with specific type */\n abstract get perspective(): Object;\n\n\n /* Children are expected to override and provide a lightweight and easy-to-compare version of the perspective */\n comparable(): Object { return {} }\n\n\n /* (optional) Set startup perspective with local data (source-chain and local DHT cache) */\n async initializePerspectiveFromLocal(): Promise<void> {}\n /* (optional) Set startup perspective with data from the DHT network */\n async initializePerspectiveFromNetwork(): Promise<void> {}\n /* (optional) Called by probeAll() which */\n protected probeAllInner(_strategy: GetStrategy): void {};\n\n /**\n * Trigger probing into the network to get the latest up-to-date perspective.\n * Mutex wrapping of probeAllInner as to not do multiple probing at the same time.\n * CAUTION: Don't call probeAll() during a probeAll() or it will deadlock.\n * Should not be async as we expect this to take a long time. Happs are expected to use signals instead to notify changes in data.\n * Probe calls with Network strategy are expected, so a fail-safe try-catch is needed to handle a get() failure.\n */\n protected _probeMutex = new Mutex();\n probeAll(strategy: GetStrategy): void {\n // if (this._initializationState !== InitializationState.Initialized) {\n // console.warn(\"probeAll() called on an uninitialized ViewModel\");\n // return;\n // }\n if (this._probeMutex.isLocked()) {\n console.log(\"probeAll() call skipped. Reason: Already running.\");\n return;\n }\n this._probeMutex\n .acquire()\n .then(async (release) => {\n try {\n this.probeAllInner(strategy);\n } catch (e) {\n console.error(\"probeAll() failed\", e);\n }\n release();\n });\n }\n\n /**\n * Return true if the perspective has changed (compared to _previousPerspective).\n * This will trigger an update on the observers.\n */\n protected hasChanged(): boolean {\n /** return true if previous is empty, meaning comparable() has not been implemented */\n if (!this._previousPerspective || Object.keys(this._previousPerspective).length == 0) {\n return true;\n }\n return Object.entries(this._previousPerspective).toString() != Object.entries(this.comparable()).toString();\n }\n\n\n /** -- Final methods -- */\n\n /** Set ContextProvider for host */\n provideContext(providerHost: ReactiveElement): void {\n console.log(`\\t\\tProviding context \"${this.getContext()}\" | in host `, providerHost);\n this._provider = new ContextProvider(providerHost, this.getContext(), this);\n }\n\n /** -- Observer pattern -- */\n\n /** */\n subscribe(providedHost: ReactiveControllerHost, propName: PropertyKey): void {\n (providedHost as any)[propName] = this.perspective;\n this._providedHosts.push([providedHost, propName])\n }\n\n /** */\n unsubscribe(candidate: ReactiveControllerHost): void {\n let index = 0;\n for (const [host, _propName] of this._providedHosts) {\n if (host === candidate) break;\n index += 1;\n }\n if (index > -1) {\n this._providedHosts.splice(index, 1);\n }\n }\n\n /** */\n protected notifySubscribers(): boolean {\n if (!this._canNotify || !this.hasChanged()) {\n return false;\n }\n //this._previousPerspective = structuredClone(this.perspective);\n this._previousPerspective = this.comparable();\n for (const [host, propName] of this._providedHosts) {\n if (propName == \"\") {\n (host as any).requestUpdate();\n } else {\n (host as any)[propName] = this.perspective;\n }\n }\n return true;\n }\n\n}\n"]}
@@ -4,7 +4,7 @@ import { ZomeViewModel } from "./ZomeViewModel";
4
4
  import { Cell } from "@ddd-qc/cell-proxy";
5
5
  declare const ZomeElement_base: (abstract new (...args: any[]) => {
6
6
  _cell?: Cell;
7
- readonly cell: Cell;
7
+ get cell(): Cell;
8
8
  }) & typeof LitElement;
9
9
  export declare class ZomeElement<P, ZVM extends ZomeViewModel> extends ZomeElement_base {
10
10
  readonly defaultZomeName: ZomeName;
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeElement.d.ts","sourceRoot":"","sources":["../src/ZomeElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,IAAI,EAAY,MAAM,oBAAoB,CAAC;;;;;AAMnD,qBAAa,WAAW,CAAC,CAAC,EAAE,GAAG,SAAS,aAAa,CAAE,SAAQ,gBAAqB;aAEtD,eAAe,EAAE,QAAQ;gBAAzB,eAAe,EAAE,QAAQ;IAUrD,iBAAiB,EAAG,IAAI,CAAC;IAEzB,SAAS,CAAC,SAAS,EAAG,QAAQ,CAAC;IAC/B,IAAI,QAAQ,IAAI,QAAQ,CAAwB;IAGvC,SAAS,CAAC,IAAI,EAAG,GAAG,CAAC;IAG9B,WAAW,EAAG,CAAC,CAAC;IAGhB,OAAO,CAAC,SAAS,CAAC,CAAC;IAMnB,OAAO,CAAC,UAAU;cA6BF,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAwB9D"}
1
+ {"version":3,"file":"ZomeElement.d.ts","sourceRoot":"","sources":["../src/ZomeElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,IAAI,EAAY,MAAM,oBAAoB,CAAC;;SAKjD,CAAC;;;AACH,qBAAa,WAAW,CAAC,CAAC,EAAE,GAAG,SAAS,aAAa,CAAE,SAAQ,gBAAqB;aAEtD,eAAe,EAAE,QAAQ;gBAAzB,eAAe,EAAE,QAAQ;IAUrD,iBAAiB,EAAG,IAAI,CAAC;IAEzB,SAAS,CAAC,SAAS,EAAG,QAAQ,CAAC;IAC/B,IAAI,QAAQ,IAAI,QAAQ,CAAwB;IAGvC,SAAS,CAAC,IAAI,EAAG,GAAG,CAAC;IAG9B,WAAW,EAAG,CAAC,CAAC;IAGhB,OAAO,CAAC,SAAS,CAAC,CAAC;IAMnB,OAAO,CAAC,UAAU;cA6BF,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAwB9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeElement.js","sourceRoot":"","sources":["../src/ZomeElement.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,OAAO,EAAE,eAAe,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAErE,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAO,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAMnD,MAAM,OAAO,WAA0C,SAAQ,SAAS,CAAC,UAAU,CAAC;IAElF,YAA4B,eAAyB;QACnD,KAAK,EAAE,CAAC;QADkB,oBAAe,GAAf,eAAe,CAAU;IAMrD,CAAC;IAOD,IAAI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAA,CAAA,CAAC;IAAA,CAAC;IAezC,UAAU,CAAC,eAAwB,KAAK;QAC9C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,MAAM,KAAK,CAAC,YAAY,WAAW,iCAAiC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;SAC9F;QAED,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YACnC,OAAO;SACR;QACD,MAAM,WAAW,GAAG,aAAa,CAAM,MAAM,GAAE,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACxG,OAAO,CAAC,GAAG,CAAC,4BAA4B,WAAW,GAAG,CAAC,CAAA;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAClC,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAU,EAAE,QAAqB,EAAiB,EAAE;YACzD,OAAO,CAAC,GAAG,CAAC,oCAAoC,WAAW,GAAG,CAAC,CAAA;YAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC7B;YACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3C,CAAC,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAIS,KAAK,CAAC,UAAU,CAAC,OAAY,EAAE,OAAa;IAEtD,CAAC;IAIQ,YAAY,CAAC,iBAAuC;QAE3D,IAAI,iBAAiB,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAE9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CAWF;AA7EC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;IACjD,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;sDAClB;AAMN;IAAlB,KAAK,EAAE;yCAAsB;AAG9B;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAC,CAAC;gDAC3D","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\r\nimport {property, state} from \"lit/decorators.js\";\r\nimport {consume, ContextConsumer, createContext} from \"@lit/context\";\r\nimport {ZomeName} from \"@holochain/client\";\r\nimport {cellContext} from \"./elements/cell-context\";\r\nimport { ZomeViewModel } from \"./ZomeViewModel\";\r\nimport {Cell, CellMixin} from \"@ddd-qc/cell-proxy\";\r\n\r\n\r\n/**\r\n * LitElement that is bound to a specific ZomeViewModel, e.g. a View for the ViewModel\r\n */\r\nexport class ZomeElement<P, ZVM extends ZomeViewModel> extends CellMixin(LitElement) {\r\n\r\n constructor(public readonly defaultZomeName: ZomeName) {\r\n super();\r\n // const nameAttr = this.getAttribute(\"zomeName\");\r\n // if (nameAttr) {\r\n // this.zomeName = nameAttr;\r\n // }\r\n }\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 protected _zomeName!: ZomeName;\r\n get zomeName(): ZomeName {return this._zomeName};\r\n\r\n /** Provided by Context depending on cellData.dnaHash */\r\n @state() protected _zvm!: ZVM;\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 /** Request zvm from Context based on current CellAddress */\r\n private requestZvm(canRerequest: boolean = false) {\r\n if (!this._cell_via_context) {\r\n throw Error(`Context \"${cellContext}\" not found from ZomeElement \"${this.constructor.name}\"`)\r\n }\r\n /* DVM already requested */\r\n if (!canRerequest && this._consumer) {\r\n return;\r\n }\r\n const contextType = createContext<ZVM>('zvm/'+ this.defaultZomeName + '/' + 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: ZVM, _dispose?: () => void): Promise<void> => {\r\n console.log(`\\t\\t Received value for context \"${contextType}\"`)\r\n await this.zvmUpdated(value, this._zvm);\r\n if (this._zvm) {\r\n this._zvm.unsubscribe(this);\r\n }\r\n this._zvm = value;\r\n this._zomeName = this._zvm.zomeName;\r\n this._zvm.subscribe(this, 'perspective');\r\n },\r\n false, // true will call twice at init\r\n );\r\n }\r\n\r\n\r\n /** Subclass can override this to get notified when a new ZVM has been received */\r\n protected async zvmUpdated(_newZvm: ZVM, _oldZvm?: ZVM): Promise<void> {\r\n //console.log(`\\t\\t Default zvmUpdated() called`)\r\n }\r\n\r\n\r\n /** */\r\n override shouldUpdate(changedProperties: PropertyValues<this>) {\r\n //console.log(\"ZomeElement.shouldUpdate() start\", !!this._zvm, this.installedCell);\r\n if (changedProperties.has(\"_cell_via_context\")) {\r\n //console.log(\"ZomeElement.shouldUpdate()\", this._cell_via_context)\r\n this._cell = this._cell_via_context;\r\n this.requestZvm(true);\r\n return false;\r\n }\r\n /** RequestZvm on first \"shouldUpdate\" */\r\n if (!this._zvm) {\r\n this.requestZvm();\r\n }\r\n return !!this._zvm;\r\n }\r\n\r\n\r\n // /** Request ZVM if cell changed */\r\n // protected willUpdate(changedProperties: PropertyValues<this>) {\r\n // //console.log(\"ZomeElement.willUpdate()\", changedProperties)\r\n // if (changedProperties.has(\"_cell_via_context\")) {\r\n // this.requestZvm();\r\n // }\r\n // }\r\n\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"ZomeElement.js","sourceRoot":"","sources":["../src/ZomeElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\r\nimport {property, state} from \"lit/decorators.js\";\r\nimport {consume, ContextConsumer, createContext} from \"@lit/context\";\r\nimport {ZomeName} from \"@holochain/client\";\r\nimport {cellContext} from \"./elements/cell-context\";\r\nimport { ZomeViewModel } from \"./ZomeViewModel\";\r\nimport {Cell, CellMixin} from \"@ddd-qc/cell-proxy\";\r\n\r\n\r\n/**\r\n * LitElement that is bound to a specific ZomeViewModel, e.g. a View for the ViewModel\r\n */\r\nexport class ZomeElement<P, ZVM extends ZomeViewModel> extends CellMixin(LitElement) {\r\n\r\n constructor(public readonly defaultZomeName: ZomeName) {\r\n super();\r\n // const nameAttr = this.getAttribute(\"zomeName\");\r\n // if (nameAttr) {\r\n // this.zomeName = nameAttr;\r\n // }\r\n }\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 protected _zomeName!: ZomeName;\r\n get zomeName(): ZomeName {return this._zomeName};\r\n\r\n /** Provided by Context depending on cellData.dnaHash */\r\n @state() protected _zvm!: ZVM;\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 /** Request zvm from Context based on current CellAddress */\r\n private requestZvm(canRerequest: boolean = false) {\r\n if (!this._cell_via_context) {\r\n throw Error(`Context \"${cellContext}\" not found from ZomeElement \"${this.constructor.name}\"`)\r\n }\r\n /* DVM already requested */\r\n if (!canRerequest && this._consumer) {\r\n return;\r\n }\r\n const contextType = createContext<ZVM>('zvm/'+ this.defaultZomeName + '/' + 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: ZVM, _dispose?: () => void): Promise<void> => {\r\n console.log(`\\t\\t Received value for context \"${contextType}\"`)\r\n await this.zvmUpdated(value, this._zvm);\r\n if (this._zvm) {\r\n this._zvm.unsubscribe(this);\r\n }\r\n this._zvm = value;\r\n this._zomeName = this._zvm.zomeName;\r\n this._zvm.subscribe(this, 'perspective');\r\n },\r\n false, // true will call twice at init\r\n );\r\n }\r\n\r\n\r\n /** Subclass can override this to get notified when a new ZVM has been received */\r\n protected async zvmUpdated(_newZvm: ZVM, _oldZvm?: ZVM): Promise<void> {\r\n //console.log(`\\t\\t Default zvmUpdated() called`)\r\n }\r\n\r\n\r\n /** */\r\n override shouldUpdate(changedProperties: PropertyValues<this>) {\r\n //console.log(\"ZomeElement.shouldUpdate() start\", !!this._zvm, this.installedCell);\r\n if (changedProperties.has(\"_cell_via_context\")) {\r\n //console.log(\"ZomeElement.shouldUpdate()\", this._cell_via_context)\r\n this._cell = this._cell_via_context;\r\n this.requestZvm(true);\r\n return false;\r\n }\r\n /** RequestZvm on first \"shouldUpdate\" */\r\n if (!this._zvm) {\r\n this.requestZvm();\r\n }\r\n return !!this._zvm;\r\n }\r\n\r\n\r\n // /** Request ZVM if cell changed */\r\n // protected willUpdate(changedProperties: PropertyValues<this>) {\r\n // //console.log(\"ZomeElement.willUpdate()\", changedProperties)\r\n // if (changedProperties.has(\"_cell_via_context\")) {\r\n // this.requestZvm();\r\n // }\r\n // }\r\n\r\n}\r\n\r\n"]}
@@ -4,8 +4,8 @@ import { ZomeViewModel } from "./ZomeViewModel";
4
4
  import { Cell, DnaId, DnaIdMap } from "@ddd-qc/cell-proxy";
5
5
  declare const ZomeMultiElement_base: (abstract new (...args: any[]) => {
6
6
  _cells?: Cell[];
7
- readonly cells: Cell[];
8
- readonly cell: Cell;
7
+ get cells(): Cell[];
8
+ get cell(): Cell;
9
9
  }) & typeof LitElement;
10
10
  export declare class ZomeMultiElement<ZVM extends ZomeViewModel> extends ZomeMultiElement_base {
11
11
  readonly defaultZomeName: ZomeName;
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeMultiElement.d.ts","sourceRoot":"","sources":["../src/ZomeMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,IAAI,EAAc,KAAK,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAC;;;;;;AAOrE,qBAAa,gBAAgB,CAAQ,GAAG,SAAS,aAAa,CAAE,SAAQ,qBAAsB;aAEhE,eAAe,EAAE,QAAQ;gBAAzB,eAAe,EAAE,QAAQ;IAMrD,kBAAkB,EAAG,IAAI,EAAE,CAAC;IAK5B,SAAS,CAAC,SAAS,EAAG,QAAQ,CAAC;IAC/B,IAAI,QAAQ,IAAI,QAAQ,CAAwB;IAGvC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAuB;IAG9D,OAAO,CAAC,UAAU,CAAiC;IAMnD,OAAO,CAAC,UAAU;cAmCF,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpF,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAwB9D"}
1
+ {"version":3,"file":"ZomeMultiElement.d.ts","sourceRoot":"","sources":["../src/ZomeMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,KAAK,CAAC;AAG/C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAC,IAAI,EAAc,KAAK,EAAE,QAAQ,EAAC,MAAM,oBAAoB,CAAC;;UASd,CAAC;;;;AAFxD,qBAAa,gBAAgB,CAAQ,GAAG,SAAS,aAAa,CAAE,SAAQ,qBAAsB;aAEhE,eAAe,EAAE,QAAQ;gBAAzB,eAAe,EAAE,QAAQ;IAMrD,kBAAkB,EAAG,IAAI,EAAE,CAAC;IAK5B,SAAS,CAAC,SAAS,EAAG,QAAQ,CAAC;IAC/B,IAAI,QAAQ,IAAI,QAAQ,CAAwB;IAGvC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAuB;IAG9D,OAAO,CAAC,UAAU,CAAiC;IAMnD,OAAO,CAAC,UAAU;cAmCF,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpF,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;CAwB9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeMultiElement.js","sourceRoot":"","sources":["../src/ZomeMultiElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\nimport {property, state} from \"lit/decorators.js\";\nimport {consume, ContextConsumer, createContext} from \"@lit/context\";\nimport {ZomeName} from \"@holochain/client\";\nimport { ZomeViewModel } from \"./ZomeViewModel\";\nimport {Cell, CellsMixin, DnaId, DnaIdMap} from \"@ddd-qc/cell-proxy\";\nimport {cellMultiContext} from \"./elements/cell-multi-context\";\n\n\n/**\n * LitElement that is bound to a specific ZomeViewModel, e.g. a View for the ViewModel\n */\nexport class ZomeMultiElement</*P,*/ ZVM extends ZomeViewModel> extends CellsMixin(LitElement) {\n\n constructor(public readonly defaultZomeName: ZomeName) {\n super();\n }\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 // perspective!: P;\n\n protected _zomeName!: ZomeName;\n get zomeName(): ZomeName {return this._zomeName};\n\n /** Provided by Context depending on cellData.dnaHash */\n @state() protected _zvms: DnaIdMap<ZVM> = new DnaIdMap<ZVM>();\n\n\n private _consumers: DnaIdMap<any> = new DnaIdMap();\n\n\n /** -- Methods -- */\n\n /** Request zvm from Context based on current cells */\n private requestZvm(canRerequest: boolean = false) {\n if (!this._cells_via_context) {\n throw Error(`Context \"${cellMultiContext}\" not found from ZomeElement \"${this.constructor.name}\"`)\n }\n //console.log(\"ZomeMultiElement.requestZvm()\", this._cells_via_context);\n /* DVM already requested */\n if (!canRerequest && this._consumers.size > 0) {\n return;\n }\n for (const cell of this._cells!.values()) {\n //console.log(\"ZomeMultiElement.requestZvm() cell\", cell);\n const contextType = createContext<ZVM>('zvm/' + this.defaultZomeName + '/' + cell.address.dnaId.b64)\n console.log(`\\t\\t Requesting context \"${contextType}\"`)\n const consumer = new ContextConsumer(\n this,\n contextType,\n async (newZvm: ZVM, _dispose?: () => void): Promise<void> => {\n console.log(`\\t\\t Received value for context \"${contextType}\"`);\n const oldZvm = this._zvms.get(cell.address.dnaId);\n await this.zvmUpdated(cell.address.dnaId, newZvm, oldZvm);\n if (oldZvm) {\n oldZvm.unsubscribe(this);\n }\n this._zvms.set(cell.address.dnaId, newZvm);\n this._zomeName = newZvm.zomeName;\n newZvm.subscribe(this, '');\n },\n false, // true will call twice at init\n );\n this._consumers.set(cell.address.dnaId, consumer);\n }\n }\n\n\n /** Subclass can override this to get notified when a new ZVM has been received */\n protected async zvmUpdated(_cellAddress: DnaId, _newZvms: ZVM, _oldZvms?: ZVM): Promise<void> {\n //console.log(`\\t\\t Default zvmUpdated() called`)\n }\n\n\n /** */\n override shouldUpdate(changedProperties: PropertyValues<this>) {\n //console.log(\"ZomeElement.shouldUpdate() start\", !!this._zvm, this.installedCell);\n if (changedProperties.has(\"_cells_via_context\")) {\n //console.log(\"ZomeElement.shouldUpdate()\", this._cell_via_context)\n this._cells = this._cells_via_context;\n this.requestZvm(true);\n return false;\n }\n /** RequestZvm on first \"shouldUpdate\" */\n if (this._zvms.size == 0) {\n this.requestZvm();\n }\n return this._zvms.size > 0;\n }\n\n\n // /** Request ZVM if cell changed */\n // protected willUpdate(changedProperties: PropertyValues<this>) {\n // //console.log(\"ZomeElement.willUpdate()\", changedProperties)\n // if (changedProperties.has(\"_cell_via_context\")) {\n // this.requestZvm();\n // }\n // }\n\n}\n\n"]}
1
+ {"version":3,"file":"ZomeMultiElement.js","sourceRoot":"","sources":["../src/ZomeMultiElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, PropertyValues} from \"lit\";\nimport {property, state} from \"lit/decorators.js\";\nimport {consume, ContextConsumer, createContext} from \"@lit/context\";\nimport {ZomeName} from \"@holochain/client\";\nimport { ZomeViewModel } from \"./ZomeViewModel\";\nimport {Cell, CellsMixin, DnaId, DnaIdMap} from \"@ddd-qc/cell-proxy\";\nimport {cellMultiContext} from \"./elements/cell-multi-context\";\n\n\n/**\n * LitElement that is bound to a specific ZomeViewModel, e.g. a View for the ViewModel\n */\nexport class ZomeMultiElement</*P,*/ ZVM extends ZomeViewModel> extends CellsMixin(LitElement) {\n\n constructor(public readonly defaultZomeName: ZomeName) {\n super();\n }\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 // perspective!: P;\n\n protected _zomeName!: ZomeName;\n get zomeName(): ZomeName {return this._zomeName};\n\n /** Provided by Context depending on cellData.dnaHash */\n @state() protected _zvms: DnaIdMap<ZVM> = new DnaIdMap<ZVM>();\n\n\n private _consumers: DnaIdMap<any> = new DnaIdMap();\n\n\n /** -- Methods -- */\n\n /** Request zvm from Context based on current cells */\n private requestZvm(canRerequest: boolean = false) {\n if (!this._cells_via_context) {\n throw Error(`Context \"${cellMultiContext}\" not found from ZomeElement \"${this.constructor.name}\"`)\n }\n //console.log(\"ZomeMultiElement.requestZvm()\", this._cells_via_context);\n /* DVM already requested */\n if (!canRerequest && this._consumers.size > 0) {\n return;\n }\n for (const cell of this._cells!.values()) {\n //console.log(\"ZomeMultiElement.requestZvm() cell\", cell);\n const contextType = createContext<ZVM>('zvm/' + this.defaultZomeName + '/' + cell.address.dnaId.b64)\n console.log(`\\t\\t Requesting context \"${contextType}\"`)\n const consumer = new ContextConsumer(\n this,\n contextType,\n async (newZvm: ZVM, _dispose?: () => void): Promise<void> => {\n console.log(`\\t\\t Received value for context \"${contextType}\"`);\n const oldZvm = this._zvms.get(cell.address.dnaId);\n await this.zvmUpdated(cell.address.dnaId, newZvm, oldZvm);\n if (oldZvm) {\n oldZvm.unsubscribe(this);\n }\n this._zvms.set(cell.address.dnaId, newZvm);\n this._zomeName = newZvm.zomeName;\n newZvm.subscribe(this, '');\n },\n false, // true will call twice at init\n );\n this._consumers.set(cell.address.dnaId, consumer);\n }\n }\n\n\n /** Subclass can override this to get notified when a new ZVM has been received */\n protected async zvmUpdated(_cellAddress: DnaId, _newZvms: ZVM, _oldZvms?: ZVM): Promise<void> {\n //console.log(`\\t\\t Default zvmUpdated() called`)\n }\n\n\n /** */\n override shouldUpdate(changedProperties: PropertyValues<this>) {\n //console.log(\"ZomeElement.shouldUpdate() start\", !!this._zvm, this.installedCell);\n if (changedProperties.has(\"_cells_via_context\")) {\n //console.log(\"ZomeElement.shouldUpdate()\", this._cell_via_context)\n this._cells = this._cells_via_context;\n this.requestZvm(true);\n return false;\n }\n /** RequestZvm on first \"shouldUpdate\" */\n if (this._zvms.size == 0) {\n this.requestZvm();\n }\n return this._zvms.size > 0;\n }\n\n\n // /** Request ZVM if cell changed */\n // protected willUpdate(changedProperties: PropertyValues<this>) {\n // //console.log(\"ZomeElement.willUpdate()\", changedProperties)\n // if (changedProperties.has(\"_cell_via_context\")) {\n // this.requestZvm();\n // }\n // }\n\n}\n\n"]}
@@ -9,7 +9,7 @@ export type ZvmConstructor = {
9
9
  export declare function zvm(zProxyCtor: typeof ZomeProxy): (ctor: Function) => void;
10
10
  declare const ZomeViewModel_base: (abstract new (...args: any[]) => {
11
11
  _cell?: import("@ddd-qc/cell-proxy").Cell;
12
- readonly cell: import("@ddd-qc/cell-proxy").Cell;
12
+ get cell(): import("@ddd-qc/cell-proxy").Cell;
13
13
  }) & typeof ViewModel;
14
14
  export declare abstract class ZomeViewModel extends ZomeViewModel_base {
15
15
  static ZOME_PROXY: ZomeProxyConstructor;
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeViewModel.d.ts","sourceRoot":"","sources":["../src/ZomeViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAgB,MAAM,cAAc,CAAC;AACpD,OAAO,EACH,SAAS,EACT,SAAS,EACT,oBAAoB,EAEpB,SAAS,EACS,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAC5E,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IAAC,KAAI,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAA;CAAC,CAAA;AAGtI,wBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,SAAS,UAC9B,QAAQ,UAOzB;;;;;AAUD,8BAAsB,aAAc,SAAQ,kBAAoB;IAG5D,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;IACxC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;IAEhC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC;IACpC,mBAAmB,IAAI,oBAAoB;IAK3C,aAAa,CAAC,EAAE,QAAQ,CAAC;IAGzB,MAAM,KAAK,iBAAiB,IAAI,MAAM,CAErC;IACD,QAAQ,EAAG,QAAQ,CAAC;IAEpB,MAAM,KAAK,WAAW,IAAI,MAAM,EAAE,CAEjC;IACD,MAAM,KAAK,UAAU,IAAI,MAAM,EAAE,CAEhC;IAED,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC;gBAIvB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ;cAoBhF,iBAAiB,IAAI,OAAO;IAS/C,OAAO,CAAC,gBAAgB;IAYxB,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IAQvC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE;IAQtC,IAAI,GAAG,IAAI,GAAG,CAA+B;IAE7C,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAwC;IAEhG,IAAI,WAAW,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAuC;IAEhF,IAAI,OAAO,IAAI,OAAO,CAAmC;IAEzD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAqC;IAE/D,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAmD;CACjF"}
1
+ {"version":3,"file":"ZomeViewModel.d.ts","sourceRoot":"","sources":["../src/ZomeViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAgB,MAAM,cAAc,CAAC;AACpD,OAAO,EACH,SAAS,EACT,SAAS,EACT,oBAAoB,EAEpB,SAAS,EACS,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAC5E,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,MAAM,MAAM,cAAc,GAAG;IAAC,KAAI,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAA;CAAC,CAAA;AAGtI,wBAAgB,GAAG,CAAC,UAAU,EAAE,OAAO,SAAS,IACpC,MAAM,QAAQ,UAOzB;;SAbwC,CAAC;;;AAuB1C,8BAAsB,aAAc,SAAQ,kBAAoB;IAG5D,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC;IACxC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;IAEhC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC;IACpC,mBAAmB,IAAI,oBAAoB;IAK3C,aAAa,CAAC,EAAE,QAAQ,CAAC;IAGzB,MAAM,KAAK,iBAAiB,IAAI,MAAM,CAErC;IACD,QAAQ,EAAG,QAAQ,CAAC;IAEpB,MAAM,KAAK,WAAW,IAAI,MAAM,EAAE,CAEjC;IACD,MAAM,KAAK,UAAU,IAAI,MAAM,EAAE,CAEhC;IAED,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC;gBAIvB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ;cAoBhF,iBAAiB,IAAI,OAAO;IAS/C,OAAO,CAAC,gBAAgB;IAYxB,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IAQvC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE;IAQtC,IAAI,GAAG,IAAI,GAAG,CAA+B;IAE7C,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAwC;IAEhG,IAAI,WAAW,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAuC;IAEhF,IAAI,OAAO,IAAI,OAAO,CAAmC;IAEzD,IAAI,SAAS,IAAI,OAAO,EAAE,CAAqC;IAE/D,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAmD;CACjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeViewModel.js","sourceRoot":"","sources":["../src/ZomeViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n ZomeProxy,\n ZomeProxyConstructor,\n CellMixin,\n SignalLog,\n prettySignalLogs, HCL, MyDictionary, EntryDef, DnaInfo, AgentId, ZomeInfo,\n} from \"@ddd-qc/cell-proxy\";\nimport {ViewModel} from \"./ViewModel\";\nimport {SignalCb, ZomeName, Signal, SignalType} from \"@holochain/client\";\nimport {AppSignal} from \"@holochain/client/lib/api/app/types\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n\nexport type ZvmConstructor = {new(proxy: CellProxy, dvmParent: DnaViewModel, isMainView: boolean, zomeName?: ZomeName): ZomeViewModel} /*& typeof ZomeSpecific;*/\n\n/** (EXPERIMENTAL) Class Decorator */\nexport function zvm(zProxyCtor: typeof ZomeProxy) {\n return (ctor: Function) => {\n //let zvmCtor = (ctor as typeof ZomeViewModel);\n (ctor as any).ZOME_PROXY = zProxyCtor;\n //get zomeProxy(): DummyZomeProxy {return this._zomeProxy as DummyZomeProxy;}\n //(ctor as any).zomeProxy = function() {return (ctor as any)._zomeProxy as typeof zProxyFactory;}\n //(ctor as any).zomeProxy = (ctor as any)._zomeProxy as typeof zProxyFactory;\n }\n}\n\n\n/**\n * Abstract ViewModel for a Zome.\n * It extends a ViewModel by adding a ZomeProxy.\n * Views are required to use this in order to interact with the ZomeProxy.\n * The perspective is the data from the Zome that is transformed and enhanced in order to be consumed by a View.\n * It can be automatically updated by Signals or the Zome Scheduler.\n */\nexport abstract class ZomeViewModel extends CellMixin(ViewModel) {\n\n /** Zome proxy constructor */\n static ZOME_PROXY: ZomeProxyConstructor;\n protected _zomeProxy: ZomeProxy;\n /* Child class should implement with child proxy class as return type */\n abstract get zomeProxy(): ZomeProxy;\n getProxyConstructor(): ZomeProxyConstructor {\n return (this.constructor as typeof ZomeViewModel).ZOME_PROXY;\n }\n\n\n signalHandler?: SignalCb;\n\n /** Zome name */\n static get DEFAULT_ZOME_NAME(): string {\n return this.ZOME_PROXY.DEFAULT_ZOME_NAME;\n }\n zomeName!: ZomeName;\n\n static get ENTRY_TYPES(): string[] {\n return this.ZOME_PROXY.ENTRY_TYPES;\n }\n static get LINK_TYPES(): string[] {\n return this.ZOME_PROXY.LINK_TYPES;\n }\n\n protected _dvmParent: DnaViewModel;\n\n\n /** Ctor */\n constructor(cellProxy: CellProxy, dvmParent: DnaViewModel, isMainView: boolean, zomeName?: ZomeName) {\n super(isMainView);\n this._dvmParent = dvmParent;\n const zProxyCtor = this.getProxyConstructor();\n if (!zProxyCtor) {\n throw Error(\"ZOME_PROXY static field undefined in ZVM subclass \" + this.constructor.name);\n }\n if (zomeName) {\n this.zomeName = zomeName;\n this._zomeProxy = new zProxyCtor(cellProxy, this.zomeName);\n } else {\n this._zomeProxy = new zProxyCtor(cellProxy);\n this.zomeName = this._zomeProxy.defaultZomeName;\n }\n this._cell = cellProxy.cell;\n cellProxy.addSignalHandler( (signal: Signal) => this.handleZomeSignal(signal));\n }\n\n\n /** Notify DVM parent */\n protected override notifySubscribers(): boolean {\n const hasChanged = super.notifySubscribers();\n if (hasChanged) {\n this._dvmParent.zvmChanged(this);\n }\n return hasChanged;\n }\n\n /** Filter signal by zome name */\n private handleZomeSignal(signal: Signal) {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n //console.log(\"handleZomeSignal()\", this.signalHandler, this.zomeName, signal.zome_name)\n if (this.signalHandler && appSignal.zome_name == this.zomeName) {\n this.signalHandler(signal);\n }\n }\n\n /** */\n getContext(): Context<unknown, unknown> {\n const context = createContext<typeof this>('zvm/'+ this._zomeProxy.defaultZomeName +'/' + this.cell.address.dnaId.b64)\n //console.log({contextType: typeof context})\n return context\n }\n\n\n /** */\n dumpSignalLogs(signalLogs: SignalLog[]) {\n console.warn(`All signals from zome \"${this.zomeName}\"`);\n console.table(prettySignalLogs(signalLogs));\n }\n\n\n /** Passthrough public info from DVM */\n\n get hcl(): HCL { return this._dvmParent.hcl }\n\n get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>> { return this._dvmParent.allEntryDefs }\n\n get allZomeInfo(): MyDictionary<ZomeInfo> { return this._dvmParent.allZomeInfo }\n\n get dnaInfo(): DnaInfo { return this._dvmParent.dnaInfo }\n\n get livePeers(): AgentId[] { return this._dvmParent.livePeers };\n\n get zomeNames(): ZomeName[] {return Object.values(this._dvmParent.zomeNames);}\n}\n"]}
1
+ {"version":3,"file":"ZomeViewModel.js","sourceRoot":"","sources":["../src/ZomeViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n ZomeProxy,\n ZomeProxyConstructor,\n CellMixin,\n SignalLog,\n prettySignalLogs, HCL, MyDictionary, EntryDef, DnaInfo, AgentId, ZomeInfo,\n} from \"@ddd-qc/cell-proxy\";\nimport {ViewModel} from \"./ViewModel\";\nimport {SignalCb, ZomeName, Signal, SignalType} from \"@holochain/client\";\nimport {AppSignal} from \"@holochain/client/lib/api/app/types\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n\nexport type ZvmConstructor = {new(proxy: CellProxy, dvmParent: DnaViewModel, isMainView: boolean, zomeName?: ZomeName): ZomeViewModel} /*& typeof ZomeSpecific;*/\n\n/** (EXPERIMENTAL) Class Decorator */\nexport function zvm(zProxyCtor: typeof ZomeProxy) {\n return (ctor: Function) => {\n //let zvmCtor = (ctor as typeof ZomeViewModel);\n (ctor as any).ZOME_PROXY = zProxyCtor;\n //get zomeProxy(): DummyZomeProxy {return this._zomeProxy as DummyZomeProxy;}\n //(ctor as any).zomeProxy = function() {return (ctor as any)._zomeProxy as typeof zProxyFactory;}\n //(ctor as any).zomeProxy = (ctor as any)._zomeProxy as typeof zProxyFactory;\n }\n}\n\n\n/**\n * Abstract ViewModel for a Zome.\n * It extends a ViewModel by adding a ZomeProxy.\n * Views are required to use this in order to interact with the ZomeProxy.\n * The perspective is the data from the Zome that is transformed and enhanced in order to be consumed by a View.\n * It can be automatically updated by Signals or the Zome Scheduler.\n */\nexport abstract class ZomeViewModel extends CellMixin(ViewModel) {\n\n /** Zome proxy constructor */\n static ZOME_PROXY: ZomeProxyConstructor;\n protected _zomeProxy: ZomeProxy;\n /* Child class should implement with child proxy class as return type */\n abstract get zomeProxy(): ZomeProxy;\n getProxyConstructor(): ZomeProxyConstructor {\n return (this.constructor as typeof ZomeViewModel).ZOME_PROXY;\n }\n\n\n signalHandler?: SignalCb;\n\n /** Zome name */\n static get DEFAULT_ZOME_NAME(): string {\n return this.ZOME_PROXY.DEFAULT_ZOME_NAME;\n }\n zomeName!: ZomeName;\n\n static get ENTRY_TYPES(): string[] {\n return this.ZOME_PROXY.ENTRY_TYPES;\n }\n static get LINK_TYPES(): string[] {\n return this.ZOME_PROXY.LINK_TYPES;\n }\n\n protected _dvmParent: DnaViewModel;\n\n\n /** Ctor */\n constructor(cellProxy: CellProxy, dvmParent: DnaViewModel, isMainView: boolean, zomeName?: ZomeName) {\n super(isMainView);\n this._dvmParent = dvmParent;\n const zProxyCtor = this.getProxyConstructor();\n if (!zProxyCtor) {\n throw Error(\"ZOME_PROXY static field undefined in ZVM subclass \" + this.constructor.name);\n }\n if (zomeName) {\n this.zomeName = zomeName;\n this._zomeProxy = new zProxyCtor(cellProxy, this.zomeName);\n } else {\n this._zomeProxy = new zProxyCtor(cellProxy);\n this.zomeName = this._zomeProxy.defaultZomeName;\n }\n this._cell = cellProxy.cell;\n cellProxy.addSignalHandler( (signal: Signal) => this.handleZomeSignal(signal));\n }\n\n\n /** Notify DVM parent */\n protected override notifySubscribers(): boolean {\n const hasChanged = super.notifySubscribers();\n if (hasChanged) {\n this._dvmParent.zvmChanged(this);\n }\n return hasChanged;\n }\n\n /** Filter signal by zome name */\n private handleZomeSignal(signal: Signal) {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n //console.log(\"handleZomeSignal()\", this.signalHandler, this.zomeName, signal.zome_name)\n if (this.signalHandler && appSignal.zome_name == this.zomeName) {\n this.signalHandler(signal);\n }\n }\n\n /** */\n getContext(): Context<unknown, unknown> {\n const context = createContext<typeof this>('zvm/'+ this._zomeProxy.defaultZomeName +'/' + this.cell.address.dnaId.b64)\n //console.log({contextType: typeof context})\n return context\n }\n\n\n /** */\n dumpSignalLogs(signalLogs: SignalLog[]) {\n console.warn(`All signals from zome \"${this.zomeName}\"`);\n console.table(prettySignalLogs(signalLogs));\n }\n\n\n /** Passthrough public info from DVM */\n\n get hcl(): HCL { return this._dvmParent.hcl }\n\n get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>> { return this._dvmParent.allEntryDefs }\n\n get allZomeInfo(): MyDictionary<ZomeInfo> { return this._dvmParent.allZomeInfo }\n\n get dnaInfo(): DnaInfo { return this._dvmParent.dnaInfo }\n\n get livePeers(): AgentId[] { return this._dvmParent.livePeers };\n\n get zomeNames(): ZomeName[] {return Object.values(this._dvmParent.zomeNames);}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {SignalCb, EntryVisibility, Timestamp, ZomeIndex, Signal, SignalType, AppSignal} from \"@holochain/client\";\nimport {\n ActionId,\n AgentId,\n LinkableId,\n anyToB64,\n enc64,\n EntryId,\n EntryPulse,\n getIndexByVariant,\n intoLinkableId,\n LinkPulse,\n prettyDate,\n prettyState,\n SignalLog,\n AppSignalType,\n StateChange,\n TipProtocol,\n TipProtocolVariantEntry,\n TipProtocolVariantLink,\n ZomeSignal,\n ZomeSignalProtocol,\n ZomeSignalProtocolType,\n ZomeSignalProtocolVariantEntry,\n ZomeSignalProtocolVariantLink,\n TipProtocolType,\n intoAnyId,\n ValidatedBy, SynchronizeTipInput, TipProtocolVariantAppValue, TipProtocolVariantAppCustom,\n} from \"@ddd-qc/cell-proxy\";\nimport {ZomeViewModel} from \"./ZomeViewModel\";\nimport {decode} from \"@msgpack/msgpack\";\n\n\n/** */\nexport interface CastLog {\n ts: Timestamp,\n tip: TipProtocol,\n peers: AgentId[],\n response: Timestamp | undefined,\n}\n\n\n/**\n * ZVM with support for ZomeSignals\n */\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\n\n private _castLogs: CastLog[] = [];\n\n /** Methods to override */\n protected handleCustomTip(_customTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected handleValueTip(_key: string, _value: string, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\n\n\n /** */\n override signalHandler?: SignalCb = this.mySignalHandler;\n\n\n /** */\n private mySignalHandler(signal: Signal): void {\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME;\n //console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n if (appSignal.zome_name !== defaultZomeName) {\n return;\n }\n const zomeSignal = appSignal.payload as ZomeSignal;\n if (!(\"pulses\" in zomeSignal)) {\n return;\n }\n /*await*/ this.handleSignal(zomeSignal);\n }\n\n\n /** */\n private async handleSignal(signal: ZomeSignal): Promise<void> {\n const from = new AgentId(signal.from);\n let all = [];\n for (let pulse of signal.pulses) {\n /** -- Handle Signal according to type -- */\n /** Change tip to Entry or Link signal */\n if (ZomeSignalProtocolType.Tip in pulse) {\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\n if (!pulse) {\n continue;\n }\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\n all.push(this.handleEntryPulse(entryPulseMat, from));\n /** If new entry from this agent, broadcast to peers as tip */\n if (entryPulseMat.isNew && this.cell.address.agentId.equals(from) && entryPulseMat.visibility == \"Public\") {\n all.push(this.broadcastTip({Entry: pulse.Entry as EntryPulse}));\n }\n continue;\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\n all.push(this.handleLinkPulse(linkPulseMat, from));\n /** If new Link from this agent, broadcast to peers as tip */\n if (linkPulseMat.isNew && this.cell.address.agentId.equals(from)) {\n all.push(this.broadcastTip({Link: pulse.Link as LinkPulse}));\n }\n continue;\n }\n }\n await Promise.all(all);\n this.notifySubscribers();\n }\n\n\n /** */\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\n const type = Object.keys(tip)[0];\n console.log(\"handleTip()\", type, from, tip);\n /* Handle tip according to its type */\n switch (type) {\n case \"Ping\":\n case \"Pong\":\n break;\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\n case \"AppValue\":\n const key = (tip as TipProtocolVariantAppValue).AppValue[0];\n const value = (tip as TipProtocolVariantAppValue).AppValue[1];\n return this.handleValueTip(key, value, from);\n break;\n case \"AppCustom\":\n return this.handleCustomTip((tip as TipProtocolVariantAppCustom).AppCustom, from);\n break;\n }\n return undefined;\n }\n\n\n /** */\n async synchronizeValueTip(key: string, value: string, recipient: AgentId, zomeName: string): Promise<void> {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeValueTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppValue: [key, value]};\n const response = await this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput);\n this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response});\n }\n\n\n /** */\n async synchronizeCustomTip(appTip: Uint8Array, recipient: AgentId, zomeName: string): Promise<void> {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeCustomTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppCustom: appTip};\n await this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput);\n this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response: undefined});\n }\n\n\n /** Cast Tip to all known livePeers */\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\n /** Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n agents = agents? agents : this._dvmParent.livePeers;\n /** Skip if no recipients or sending to self only */\n const filtered = agents.filter((key) => key.b64 != this.cell.address.agentId.b64);\n const tipType = Object.keys(tip)[0];\n console.debug(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.address.agentId.short);\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\n if (!filtered || filtered.length == 0) {\n console.debug(\"broadcastTip() aborted: No recipients\")\n return;\n }\n /** Broadcast */\n const peers = agents.map((key) => key.hash);\n await this.zomeProxy.call('cast_tip', {tip, peers});\n /** Log */\n this._castLogs.push({ts: Date.now(), tip, peers: agents, response: undefined});\n }\n\n\n /** */\n dumpCastLogs() {\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n this._castLogs.map((log) => {\n const type = Object.keys(log.tip)[0]!;\n const payload = (log.tip as any)[type];\n appSignals.push({\n timestamp: prettyDate(new Date(log.ts)),\n type,\n payload,\n count: log.peers.length,\n first: log.peers[0]? log.peers[0].short : undefined,\n response: log.response });\n });\n console.table(appSignals);\n }\n\n\n private tip2Log(tip: TipProtocol, type: TipProtocolType): [string, string] {\n switch (type) {\n case TipProtocolType.Ping:\n case TipProtocolType.Pong: return [\"\", \"\"]; break;\n case TipProtocolType.AppValue: {\n const [key, value] = (tip as TipProtocolVariantAppValue).AppValue;\n return [key, value];\n }\n break;\n case TipProtocolType.AppCustom: {\n const app = (tip as TipProtocolVariantAppCustom).AppCustom;\n return [\"\" + app.length, \"\"];\n }\n break;\n case TipProtocolType.Entry: {\n const entryPulse = (tip as TipProtocolVariantEntry).Entry;\n return [intoAnyId(entryPulse.ah).short, intoAnyId(entryPulse.eh).short];\n }\n break;\n case TipProtocolType.Link: {\n const linkPulse = (tip as TipProtocolVariantLink).Link;\n return [intoAnyId(linkPulse.link.base).short, intoAnyId(linkPulse.link.target).short];\n }\n break;\n }\n }\n\n\n /** */\n override dumpSignalLogs(signalLogs: SignalLog[]) {\n this.dumpCastLogs();\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n signalLogs\n .filter((log) => log.type == AppSignalType.Zome)\n .map((log) => {\n const signal = log.zomeSignal as ZomeSignal;\n const pulses = signal.pulses as ZomeSignalProtocol[];\n const timestamp = prettyDate(new Date(log.ts));\n const from: string = enc64(signal.from) == this.cell.address.agentId.b64? \"self\" : new AgentId(signal.from).short;\n for (const pulse of pulses) {\n if (ZomeSignalProtocolType.Tip in pulse) {\n const tip: TipProtocol = pulse.Tip;\n const type = Object.keys(tip)[0];\n const [ah_base, eh_target] = this.tip2Log(tip, type as TipProtocolType);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip), ah_base, eh_target});\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\n const typedEntry = decode(entryPulse.bytes);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Entry, state: prettyState(pulse.Entry.state), type: entryPulse.entryType, payload: anyToB64(typedEntry), ah_base: entryPulse.ah.short, eh_target: entryPulse.eh.short});\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Link, state: prettyState(pulse.Link.state), type: linkPulse.link_type, payload: linkPulse.tag, ah_base: linkPulse.base.print(), eh_target: linkPulse.target.print()});\n }\n }\n });\n console.table(appSignals);\n }\n}\n\n\n/** -- Materialze -- */\n\nexport interface EntryPulseMat {\n origAh: ActionId | null,\n ah: ActionId,\n state: string,\n validatedBy: ValidatedBy,\n isNew: boolean,\n ts: Timestamp,\n author: AgentId,\n eh: EntryId,\n entryType: string,\n visibility: EntryVisibility,\n bytes: Uint8Array,\n}\n\n\n/** */\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\n //console.log(\"materializeEntryPulse()\", entryTypes);\n const stateStr = Object.keys(entryPulse.state)[0]!;\n return {\n origAh: entryPulse.orig_ah? new ActionId(entryPulse.orig_ah) : null,\n ah: new ActionId(entryPulse.ah),\n state: stateStr,\n validatedBy: entryPulse.validation,\n isNew: (entryPulse.state as any)[stateStr],\n ts: entryPulse.ts,\n author: new AgentId(entryPulse.author),\n eh: new EntryId(entryPulse.eh),\n entryType: entryTypes[entryPulse.def.entry_index]!,\n visibility: entryPulse.def.visibility,\n bytes: entryPulse.bytes,\n }\n}\n\n\n/** */\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeEntryPulse()\", state, entryTypes);\n /** */\n let res: EntryPulse = {\n ah: pulse.ah.hash,\n state: state as StateChange,\n validation: pulse.validatedBy,\n ts: pulse.ts,\n author: pulse.author.hash,\n eh: pulse.eh.hash,\n def: {\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\n zome_index: 42, // Should not be used\n visibility: pulse.visibility,\n },\n bytes: pulse.bytes,\n }\n if (pulse.origAh) {\n res.orig_ah = pulse.origAh.hash\n }\n return res;\n}\n\n\n/** */\nexport interface LinkPulseMat {\n author: AgentId,\n base: LinkableId;\n target: LinkableId,\n timestamp: Timestamp,\n zome_index: ZomeIndex,\n link_type: string,\n tag: Uint8Array,\n create_link_hash: ActionId,\n /** */\n state: string,\n validatedBy: ValidatedBy,\n isNew: Boolean,\n}\n\n/** */\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\n //console.log(\"materializeLinkPulse()\", linkTypes);\n const stateStr = Object.keys(linkPulse.state)[0]!;\n return {\n author: new AgentId(linkPulse.link.author),\n base: intoLinkableId(linkPulse.link.base),\n target: intoLinkableId(linkPulse.link.target),\n timestamp: linkPulse.link.timestamp,\n zome_index: linkPulse.link.zome_index,\n link_type: linkTypes[linkPulse.link.link_type]!,\n tag: linkPulse.link.tag,\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\n state: Object.keys(linkPulse.state)[0]!,\n validatedBy: linkPulse.validation,\n isNew: (linkPulse.state as any)[stateStr],\n }\n}\n\n/** */\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeLinkPulse()\", state);\n /** */\n return {\n state: state as StateChange,\n validation: pulse.validatedBy,\n link: {\n author: pulse.author.hash,\n base: pulse.base.hash,\n target: pulse.target.hash,\n timestamp: pulse.timestamp,\n zome_index: pulse.zome_index,\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\n tag: pulse.tag,\n create_link_hash: pulse.create_link_hash.hash,\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {SignalCb, EntryVisibility, Timestamp, ZomeIndex, Signal, SignalType, AppSignal} from \"@holochain/client\";\nimport {\n ActionId,\n AgentId,\n LinkableId,\n anyToB64,\n enc64,\n EntryId,\n EntryPulse,\n getIndexByVariant,\n intoLinkableId,\n LinkPulse,\n prettyDate,\n prettyState,\n SignalLog,\n AppSignalType,\n StateChange,\n TipProtocol,\n TipProtocolVariantEntry,\n TipProtocolVariantLink,\n ZomeSignal,\n ZomeSignalProtocol,\n ZomeSignalProtocolType,\n ZomeSignalProtocolVariantEntry,\n ZomeSignalProtocolVariantLink,\n TipProtocolType,\n intoAnyId,\n ValidatedBy, SynchronizeTipInput, TipProtocolVariantAppValue, TipProtocolVariantAppCustom,\n} from \"@ddd-qc/cell-proxy\";\nimport {ZomeViewModel} from \"./ZomeViewModel\";\nimport {decode} from \"@msgpack/msgpack\";\n\n\n/** */\nexport interface CastLog {\n ts: Timestamp,\n tip: TipProtocol,\n peers: AgentId[],\n response: Timestamp | undefined,\n}\n\n\n/**\n * ZVM with support for ZomeSignals\n */\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\n\n private _castLogs: CastLog[] = [];\n\n /** Methods to override */\n protected handleCustomTip(_customTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected handleValueTip(_key: string, _value: string, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\n\n\n /** */\n override signalHandler?: SignalCb = this.mySignalHandler;\n\n\n /** */\n private mySignalHandler(signal: Signal): void {\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME;\n //console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n if (appSignal.zome_name !== defaultZomeName) {\n return;\n }\n const zomeSignal = appSignal.payload as ZomeSignal;\n if (!(\"pulses\" in zomeSignal)) {\n return;\n }\n /*await*/ this.handleSignal(zomeSignal);\n }\n\n\n /** */\n private async handleSignal(signal: ZomeSignal): Promise<void> {\n const from = new AgentId(signal.from);\n let all = [];\n for (let pulse of signal.pulses) {\n /** -- Handle Signal according to type -- */\n /** Change tip to Entry or Link signal */\n if (ZomeSignalProtocolType.Tip in pulse) {\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\n if (!pulse) {\n continue;\n }\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\n all.push(this.handleEntryPulse(entryPulseMat, from));\n /** If new entry from this agent, broadcast to peers as tip */\n if (entryPulseMat.isNew && this.cell.address.agentId.equals(from) && entryPulseMat.visibility == \"Public\") {\n all.push(this.broadcastTip({Entry: pulse.Entry as EntryPulse}));\n }\n continue;\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\n all.push(this.handleLinkPulse(linkPulseMat, from));\n /** If new Link from this agent, broadcast to peers as tip */\n if (linkPulseMat.isNew && this.cell.address.agentId.equals(from)) {\n all.push(this.broadcastTip({Link: pulse.Link as LinkPulse}));\n }\n continue;\n }\n }\n await Promise.all(all);\n this.notifySubscribers();\n }\n\n\n /** */\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\n const type = Object.keys(tip)[0];\n console.log(\"handleTip()\", type, from, tip);\n /* Handle tip according to its type */\n switch (type) {\n case \"Ping\":\n case \"Pong\":\n break;\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\n case \"AppValue\":\n const key = (tip as TipProtocolVariantAppValue).AppValue[0];\n const value = (tip as TipProtocolVariantAppValue).AppValue[1];\n return this.handleValueTip(key, value, from);\n break;\n case \"AppCustom\":\n return this.handleCustomTip((tip as TipProtocolVariantAppCustom).AppCustom, from);\n break;\n }\n return undefined;\n }\n\n\n /** */\n async synchronizeValueTip(key: string, value: string, recipient: AgentId, zomeName: string): Promise<void> {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeValueTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppValue: [key, value]};\n const response = await this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput);\n this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response});\n }\n\n\n /** */\n async synchronizeCustomTip(appTip: Uint8Array, recipient: AgentId, zomeName: string): Promise<void> {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeCustomTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppCustom: appTip};\n await this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput);\n this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response: undefined});\n }\n\n\n /** Cast Tip to all known livePeers */\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\n /** Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n agents = agents? agents : this._dvmParent.livePeers;\n /** Skip if no recipients or sending to self only */\n const filtered = agents.filter((key) => key.b64 != this.cell.address.agentId.b64);\n const tipType = Object.keys(tip)[0];\n console.debug(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.address.agentId.short);\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\n if (!filtered || filtered.length == 0) {\n console.debug(\"broadcastTip() aborted: No recipients\")\n return;\n }\n /** Broadcast */\n const peers = agents.map((key) => key.hash);\n await this.zomeProxy.call('cast_tip', {tip, peers});\n /** Log */\n this._castLogs.push({ts: Date.now(), tip, peers: agents, response: undefined});\n }\n\n\n /** */\n dumpCastLogs() {\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n this._castLogs.map((log) => {\n const type = Object.keys(log.tip)[0]!;\n const payload = (log.tip as any)[type];\n appSignals.push({\n timestamp: prettyDate(new Date(log.ts)),\n type,\n payload,\n count: log.peers.length,\n first: log.peers[0]? log.peers[0].short : undefined,\n response: log.response });\n });\n console.table(appSignals);\n }\n\n\n private tip2Log(tip: TipProtocol, type: TipProtocolType): [string, string] {\n switch (type) {\n case TipProtocolType.Ping:\n case TipProtocolType.Pong: return [\"\", \"\"]; break;\n case TipProtocolType.AppValue: {\n const [key, value] = (tip as TipProtocolVariantAppValue).AppValue;\n return [key, value];\n }\n break;\n case TipProtocolType.AppCustom: {\n const app = (tip as TipProtocolVariantAppCustom).AppCustom;\n return [\"\" + app.length, \"\"];\n }\n break;\n case TipProtocolType.Entry: {\n const entryPulse = (tip as TipProtocolVariantEntry).Entry;\n return [intoAnyId(entryPulse.ah).short, intoAnyId(entryPulse.eh).short];\n }\n break;\n case TipProtocolType.Link: {\n const linkPulse = (tip as TipProtocolVariantLink).Link;\n return [intoAnyId(linkPulse.link.base).short, intoAnyId(linkPulse.link.target).short];\n }\n break;\n }\n }\n\n\n /** */\n override dumpSignalLogs(signalLogs: SignalLog[]) {\n this.dumpCastLogs();\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n signalLogs\n .filter((log) => log.type == AppSignalType.Zome)\n .map((log) => {\n const signal = log.zomeSignal as ZomeSignal;\n const pulses = signal.pulses as ZomeSignalProtocol[];\n const timestamp = prettyDate(new Date(log.ts));\n const from: string = enc64(signal.from) == this.cell.address.agentId.b64? \"self\" : new AgentId(signal.from).short;\n for (const pulse of pulses) {\n if (ZomeSignalProtocolType.Tip in pulse) {\n const tip: TipProtocol = pulse.Tip;\n const type = Object.keys(tip)[0];\n const [ah_base, eh_target] = this.tip2Log(tip, type as TipProtocolType);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip), ah_base, eh_target});\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\n const typedEntry = decode(entryPulse.bytes);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Entry, state: prettyState(pulse.Entry.state), type: entryPulse.entryType, payload: anyToB64(typedEntry), ah_base: entryPulse.ah.short, eh_target: entryPulse.eh.short});\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Link, state: prettyState(pulse.Link.state), type: linkPulse.link_type, payload: linkPulse.tag, ah_base: linkPulse.base.print(), eh_target: linkPulse.target.print()});\n }\n }\n });\n console.table(appSignals);\n }\n}\n\n\n/** -- Materialze -- */\n\nexport interface EntryPulseMat {\n origAh: ActionId | null,\n ah: ActionId,\n state: string,\n validatedBy: ValidatedBy,\n isNew: boolean,\n ts: Timestamp,\n author: AgentId,\n eh: EntryId,\n entryType: string,\n visibility: EntryVisibility,\n bytes: Uint8Array,\n}\n\n\n/** */\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\n //console.log(\"materializeEntryPulse()\", entryTypes);\n const stateStr = Object.keys(entryPulse.state)[0]!;\n return {\n origAh: entryPulse.orig_ah? new ActionId(entryPulse.orig_ah) : null,\n ah: new ActionId(entryPulse.ah),\n state: stateStr,\n validatedBy: entryPulse.validation,\n isNew: (entryPulse.state as any)[stateStr],\n ts: entryPulse.ts,\n author: new AgentId(entryPulse.author),\n eh: new EntryId(entryPulse.eh),\n entryType: entryTypes[entryPulse.def.entry_index]!,\n visibility: entryPulse.def.visibility,\n bytes: entryPulse.bytes,\n }\n}\n\n\n/** */\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeEntryPulse()\", state, entryTypes);\n /** */\n let res: EntryPulse = {\n ah: pulse.ah.hash,\n state: state as StateChange,\n validation: pulse.validatedBy,\n ts: pulse.ts,\n author: pulse.author.hash,\n eh: pulse.eh.hash,\n def: {\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\n zome_index: 42, // Should not be used\n visibility: pulse.visibility,\n },\n bytes: pulse.bytes,\n }\n if (pulse.origAh) {\n res.orig_ah = pulse.origAh.hash\n }\n return res;\n}\n\n\n/** */\nexport interface LinkPulseMat {\n author: AgentId,\n base: LinkableId;\n target: LinkableId,\n timestamp: Timestamp,\n zome_index: ZomeIndex,\n link_type: string,\n tag: Uint8Array,\n create_link_hash: ActionId,\n /** */\n state: string,\n validatedBy: ValidatedBy,\n isNew: Boolean,\n}\n\n/** */\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\n //console.log(\"materializeLinkPulse()\", linkTypes);\n const stateStr = Object.keys(linkPulse.state)[0]!;\n return {\n author: new AgentId(linkPulse.link.author),\n base: intoLinkableId(linkPulse.link.base),\n target: intoLinkableId(linkPulse.link.target),\n timestamp: linkPulse.link.timestamp,\n zome_index: linkPulse.link.zome_index,\n link_type: linkTypes[linkPulse.link.link_type]!,\n tag: linkPulse.link.tag,\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\n state: Object.keys(linkPulse.state)[0]!,\n validatedBy: linkPulse.validation,\n isNew: (linkPulse.state as any)[stateStr],\n }\n}\n\n/** */\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeLinkPulse()\", state);\n /** */\n return {\n state: state as StateChange,\n validation: pulse.validatedBy,\n link: {\n author: pulse.author.hash,\n base: pulse.base.hash,\n target: pulse.target.hash,\n timestamp: pulse.timestamp,\n zome_index: pulse.zome_index,\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\n tag: pulse.tag,\n create_link_hash: pulse.create_link_hash.hash,\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cell-context.js","sourceRoot":"","sources":["../../src/elements/cell-context.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAC,UAAU,EAAE,IAAI,EAAiB,MAAM,KAAK,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAIjE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAO,eAAe,CAAC,CAAC;AAQzD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QASgB,kBAAa,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAMtE,iBAAY,GAAG,KAAK,CAAC;IA6CxC,CAAC;IAxCU,YAAY;QAEnB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE5E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAGzD,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SAChF;IACH,CAAC;IAIkB,UAAU,CAAC,iBAAuC;QAEnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEjC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;SAC9D;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aAChF;SACF;IACH,CAAC;IAIQ,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO,IAAI,CAAA,EAAE,CAAC;SACf;QACD,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;CACF,CAAA;AAzDC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yCACb;AAGZ;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;wCACN;AASF;IAAhB,KAAK,EAAE;iDAA8B;AAf3B,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CA4DvB","sourcesContent":["import {ContextProvider, createContext} from '@lit/context';\r\nimport {LitElement, html, PropertyValues} from \"lit\";\r\nimport {property, state, customElement} from \"lit/decorators.js\";\r\nimport {Cell} from \"@ddd-qc/cell-proxy\";\r\nimport {DnaViewModel} from \"../DnaViewModel\";\r\n\r\nexport const cellContext = createContext<Cell>('lit-happ/cell');\r\n//export const cellContext = createContext<Cell>('lit-happ/cell/default');\r\n\r\n\r\n/**\r\n *\r\n */\r\n@customElement(\"cell-context\")\r\nexport class CellContext extends LitElement {\r\n\r\n @property({type: Object})\r\n cell!: Cell;\r\n\r\n @property({type: Object})\r\n dvm!: DnaViewModel;\r\n\r\n /* create a provider controller */\r\n /*@state()*/ private _cellProvider = new ContextProvider(this, cellContext, this.cell);\r\n\r\n // @ts-ignore\r\n private _dnaProvider?;\r\n\r\n\r\n @state() private _initialized = false;\r\n\r\n\r\n\r\n /** */\r\n override firstUpdated() {\r\n /** Cell */\r\n if (!this.cell) throw Error('\"cell\" property not defined in <cell-context>')\r\n //this._provider = new ContextProvider(this, cellContext, this.cell);\r\n this._cellProvider.setValue(this.cell);\r\n this._initialized = true;\r\n console.log(`\\t Cell context set to \"${this.cell.name}\"`)\r\n\r\n /** DVM */\r\n if (this.dvm) {\r\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\r\n }\r\n }\r\n\r\n\r\n /** Set provider to cell */\r\n protected override willUpdate(changedProperties: PropertyValues<this>) {\r\n //console.log(\"<cell-context>.willUpdate()\", changedProperties)\r\n if (changedProperties.has(\"cell\")) {\r\n //console.log(\"<cell-context>.willUpdate() changed installed cell\", this.cell.name)\r\n this._cellProvider.setValue(this.cell);\r\n console.log(`\\t Cell context changed to \"${this.cell.name}\"`)\r\n }\r\n\r\n if (changedProperties.has(\"dvm\")) {\r\n this._dnaProvider = undefined;\r\n if (this.dvm) {\r\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n override render() {\r\n if (!this._initialized) {\r\n return html``;\r\n }\r\n return html`<slot></slot>`;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"cell-context.js","sourceRoot":"","sources":["../../src/elements/cell-context.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAC,UAAU,EAAE,IAAI,EAAiB,MAAM,KAAK,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAIjE,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAO,eAAe,CAAC,CAAC;AAQzD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QASgB,kBAAa,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAMtE,iBAAY,GAAG,KAAK,CAAC;IA6CxC,CAAC;IAxCU,YAAY;QAEnB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAE5E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAGzD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAIkB,UAAU,CAAC,iBAAuC;QAEnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAElC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAIQ,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;CACF,CAAA;AAzDC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;yCACb;AAGZ;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;wCACN;AASF;IAAhB,KAAK,EAAE;iDAA8B;AAf3B,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CA4DvB","sourcesContent":["import {ContextProvider, createContext} from '@lit/context';\r\nimport {LitElement, html, PropertyValues} from \"lit\";\r\nimport {property, state, customElement} from \"lit/decorators.js\";\r\nimport {Cell} from \"@ddd-qc/cell-proxy\";\r\nimport {DnaViewModel} from \"../DnaViewModel\";\r\n\r\nexport const cellContext = createContext<Cell>('lit-happ/cell');\r\n//export const cellContext = createContext<Cell>('lit-happ/cell/default');\r\n\r\n\r\n/**\r\n *\r\n */\r\n@customElement(\"cell-context\")\r\nexport class CellContext extends LitElement {\r\n\r\n @property({type: Object})\r\n cell!: Cell;\r\n\r\n @property({type: Object})\r\n dvm!: DnaViewModel;\r\n\r\n /* create a provider controller */\r\n /*@state()*/ private _cellProvider = new ContextProvider(this, cellContext, this.cell);\r\n\r\n // @ts-ignore\r\n private _dnaProvider?;\r\n\r\n\r\n @state() private _initialized = false;\r\n\r\n\r\n\r\n /** */\r\n override firstUpdated() {\r\n /** Cell */\r\n if (!this.cell) throw Error('\"cell\" property not defined in <cell-context>')\r\n //this._provider = new ContextProvider(this, cellContext, this.cell);\r\n this._cellProvider.setValue(this.cell);\r\n this._initialized = true;\r\n console.log(`\\t Cell context set to \"${this.cell.name}\"`)\r\n\r\n /** DVM */\r\n if (this.dvm) {\r\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\r\n }\r\n }\r\n\r\n\r\n /** Set provider to cell */\r\n protected override willUpdate(changedProperties: PropertyValues<this>) {\r\n //console.log(\"<cell-context>.willUpdate()\", changedProperties)\r\n if (changedProperties.has(\"cell\")) {\r\n //console.log(\"<cell-context>.willUpdate() changed installed cell\", this.cell.name)\r\n this._cellProvider.setValue(this.cell);\r\n console.log(`\\t Cell context changed to \"${this.cell.name}\"`)\r\n }\r\n\r\n if (changedProperties.has(\"dvm\")) {\r\n this._dnaProvider = undefined;\r\n if (this.dvm) {\r\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\r\n }\r\n }\r\n }\r\n\r\n\r\n /** */\r\n override render() {\r\n if (!this._initialized) {\r\n return html``;\r\n }\r\n return html`<slot></slot>`;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"cell-multi-context.js","sourceRoot":"","sources":["../../src/elements/cell-multi-context.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAC,UAAU,EAAE,IAAI,EAAiB,MAAM,KAAK,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAIjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAS,oBAAoB,CAAC,CAAC;AAQrE,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAGL,UAAK,GAAW,EAAE,CAAC;QAGnB,QAAG,GAA6B,SAAS,CAAC;QAGrB,kBAAa,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAK5E,iBAAY,GAAG,KAAK,CAAC;IAgDxC,CAAC;IA1CU,YAAY;QAMnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAGxE,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SAChF;IACH,CAAC;IAIkB,UAAU,CAAC,iBAAuC;QAEnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAElC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;SAC7E;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;aAChF;SACF;IACH,CAAC;IAIQ,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO,IAAI,CAAA,EAAE,CAAC;SACf;QACD,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;CACF,CAAA;AA3DC;IADC,QAAQ,EAAE;+CACQ;AAGnB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;6CACiB;AAQzB;IAAhB,KAAK,EAAE;sDAA8B;AAd3B,gBAAgB;IAD5B,aAAa,CAAC,oBAAoB,CAAC;GACvB,gBAAgB,CA8D5B","sourcesContent":["import {ContextProvider, createContext} from '@lit/context';\nimport {LitElement, html, PropertyValues} from \"lit\";\nimport {property, state, customElement} from \"lit/decorators.js\";\nimport {Cell} from \"@ddd-qc/cell-proxy\";\nimport {DnaViewModel} from \"../DnaViewModel\";\n\nexport const cellMultiContext = createContext<Cell[]>('lit-happ/cellMulti');\n//export const cellContext = createContext<Cell>('lit-happ/cell/default');\n\n\n/**\n *\n */\n@customElement(\"cell-multi-context\")\nexport class CellMultiContext extends LitElement {\n\n @property()\n cells: Cell[] = [];\n\n @property({type: Object})\n dvm: DnaViewModel | undefined = undefined;\n\n /* create a provider controller */\n /*@state()*/ private _cellProvider = new ContextProvider(this, cellMultiContext, this.cells);\n\n // @ts-ignore\n private _dnaProvider?;\n\n @state() private _initialized = false;\n\n\n /** -- Methods -- */\n\n /** */\n override firstUpdated() {\n // /** Cell */\n // if (this.cells.length == 0) {\n // throw Error('No cells set by <cell-context>')\n // }\n //this._provider = new ContextProvider(this, cellContext, this.cell);\n this._cellProvider.setValue(this.cells);\n this._initialized = true;\n console.log(`\\t Cell context set:`, this.cells.map((cell) => cell.name))\n\n /** DVM */\n if (this.dvm) {\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\n }\n }\n\n\n /** Set provider to cell */\n protected override willUpdate(changedProperties: PropertyValues<this>) {\n //console.log(\"<cell-context>.willUpdate()\", changedProperties)\n if (changedProperties.has(\"cells\")) {\n //console.log(\"<cell-context>.willUpdate() changed installed cell\", this.cell.name)\n this._cellProvider.setValue(this.cells);\n console.log(`\\t Cell context changed:`, this.cells.map((cell) => cell.name))\n }\n\n if (changedProperties.has(\"dvm\")) {\n this._dnaProvider = undefined;\n if (this.dvm) {\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\n }\n }\n }\n\n\n /** */\n override render() {\n if (!this._initialized) {\n return html``;\n }\n return html`<slot></slot>`;\n }\n}\n"]}
1
+ {"version":3,"file":"cell-multi-context.js","sourceRoot":"","sources":["../../src/elements/cell-multi-context.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAC,UAAU,EAAE,IAAI,EAAiB,MAAM,KAAK,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAIjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAS,oBAAoB,CAAC,CAAC;AAQrE,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAGL,UAAK,GAAW,EAAE,CAAC;QAGnB,QAAG,GAA6B,SAAS,CAAC;QAGrB,kBAAa,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAK5E,iBAAY,GAAG,KAAK,CAAC;IAgDxC,CAAC;IA1CU,YAAY;QAMnB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAGxE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAIkB,UAAU,CAAC,iBAAuC;QAEnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAEnC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9E,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAIQ,MAAM;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;CACF,CAAA;AA3DC;IADC,QAAQ,EAAE;+CACQ;AAGnB;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;6CACiB;AAQzB;IAAhB,KAAK,EAAE;sDAA8B;AAd3B,gBAAgB;IAD5B,aAAa,CAAC,oBAAoB,CAAC;GACvB,gBAAgB,CA8D5B","sourcesContent":["import {ContextProvider, createContext} from '@lit/context';\nimport {LitElement, html, PropertyValues} from \"lit\";\nimport {property, state, customElement} from \"lit/decorators.js\";\nimport {Cell} from \"@ddd-qc/cell-proxy\";\nimport {DnaViewModel} from \"../DnaViewModel\";\n\nexport const cellMultiContext = createContext<Cell[]>('lit-happ/cellMulti');\n//export const cellContext = createContext<Cell>('lit-happ/cell/default');\n\n\n/**\n *\n */\n@customElement(\"cell-multi-context\")\nexport class CellMultiContext extends LitElement {\n\n @property()\n cells: Cell[] = [];\n\n @property({type: Object})\n dvm: DnaViewModel | undefined = undefined;\n\n /* create a provider controller */\n /*@state()*/ private _cellProvider = new ContextProvider(this, cellMultiContext, this.cells);\n\n // @ts-ignore\n private _dnaProvider?;\n\n @state() private _initialized = false;\n\n\n /** -- Methods -- */\n\n /** */\n override firstUpdated() {\n // /** Cell */\n // if (this.cells.length == 0) {\n // throw Error('No cells set by <cell-context>')\n // }\n //this._provider = new ContextProvider(this, cellContext, this.cell);\n this._cellProvider.setValue(this.cells);\n this._initialized = true;\n console.log(`\\t Cell context set:`, this.cells.map((cell) => cell.name))\n\n /** DVM */\n if (this.dvm) {\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\n }\n }\n\n\n /** Set provider to cell */\n protected override willUpdate(changedProperties: PropertyValues<this>) {\n //console.log(\"<cell-context>.willUpdate()\", changedProperties)\n if (changedProperties.has(\"cells\")) {\n //console.log(\"<cell-context>.willUpdate() changed installed cell\", this.cell.name)\n this._cellProvider.setValue(this.cells);\n console.log(`\\t Cell context changed:`, this.cells.map((cell) => cell.name))\n }\n\n if (changedProperties.has(\"dvm\")) {\n this._dnaProvider = undefined;\n if (this.dvm) {\n this._dnaProvider = new ContextProvider(this, this.dvm.getContext(), this.dvm);\n }\n }\n }\n\n\n /** */\n override render() {\n if (!this._initialized) {\n return html``;\n }\n return html`<slot></slot>`;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dvm-inspect.js","sourceRoot":"","sources":["../../src/elements/dvm-inspect.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QAGY,sBAAiB,GAAG,EAAE,CAAA;IA8DzC,CAAC;IApDC,KAAK,CAAC,YAAY,CAAC,EAAO;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,cAAc,CAAsB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9C,CAAC;IAMQ,MAAM;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CACjD,CAAC,QAAQ,EAAE,EAAE;YACX,OAAO,IAAI,CAAA,WAAW,QAAQ,WAAW,CAAA;QAC3C,CAAC,CACF,CAAA;QAED,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAC;YACxE,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA,WAAW,KAAK,WAAW,CAAC,CAAC;YAC1F,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA,WAAW,KAAK,WAAW,CAAC,CAAC;YACxF,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,WAAW,GAAG,WAAW,CAAC,CAAC;SAE7F;QAID,OAAO,IAAI,CAAA;2CAC4B,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY;4BACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY;6DACF,IAAI,CAAC,YAAY;YAClE,WAAW;;;;;cAKT,gBAAgB;;;;cAIhB,eAAe;;;;gBAIb,UAAU;;;KAGrB,CAAA;IACH,CAAC;CACF,CAAA;AA9DkB;IAAhB,KAAK,EAAE;qDAA+B;AAGvC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gDACjB;AANjB,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAiEtB","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\n\n\n/**\n *\n */\n@customElement(\"dvm-inspect\")\nexport class DvmInspect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n\n /** */\n async onZomeSelect(_e: any) {\n //console.log(\"onZomeSelect() CALLED\", e)\n const zomeSelector = this.shadowRoot!.getElementById(\"selectedZome\") as HTMLSelectElement;\n this._selectedZomeName = zomeSelector.value;\n }\n\n\n\n\n /** */\n override render() {\n const zomeOptions = this.dnaViewModel.zomeNames.map(\n (zomeName) => {\n return html`<option>${zomeName}</option>`\n }\n )\n\n let entryTypeOptions = null;\n let linkTypeOptions = null;\n let zfnOptions = null;\n if (this._selectedZomeName) {\n const zvm = this.dnaViewModel.getZomeViewModel(this._selectedZomeName)!;\n entryTypeOptions = zvm.zomeProxy.entryTypes.map(types => html`<option>${types}</option>`);\n linkTypeOptions = zvm.zomeProxy.linkTypes.map(types => html`<option>${types}</option>`);\n zfnOptions = zvm.zomeProxy.fnNames.map(([_zomeName, zfn]) => html`<option>${zfn}</option>`);\n\n }\n //console.log({entryTypeOptions})\n\n /** render all */\n return html`\n <span>Inspecting DNA <abbr title=${this.dnaViewModel.hcl}>${this.dnaViewModel.baseRoleName}</abbr>: </span>\n <span><abbr title=${this.dnaViewModel.cell.dnaShareCode}>[dnaShareCode]</abbr></span>\n <select name=\"selectedZome\" id=\"selectedZome\" @click=${this.onZomeSelect}>\n ${zomeOptions}\n </select>\n <div style=\"display: flex; flex-direction: row; gap: 5px;\">\n <span>EntryTypes:</span>\n <select name=\"selectedEntryType\" id=\"selectedEntryType\">\n ${entryTypeOptions}\n </select>\n <span>LinkTypes:</span>\n <select name=\"selectedLinkType\" id=\"selectedLinkType\">\n ${linkTypeOptions}\n </select>\n <span>ZomeFunctions:</span>\n <select name=\"selectedZfn\" id=\"selectedZfn\">\n ${zfnOptions}\n </select>\n </div>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"dvm-inspect.js","sourceRoot":"","sources":["../../src/elements/dvm-inspect.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QAGY,sBAAiB,GAAG,EAAE,CAAA;IA8DzC,CAAC;IApDC,KAAK,CAAC,YAAY,CAAC,EAAO;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,cAAc,CAAsB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9C,CAAC;IAMQ,MAAM;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CACjD,CAAC,QAAQ,EAAE,EAAE;YACX,OAAO,IAAI,CAAA,WAAW,QAAQ,WAAW,CAAA;QAC3C,CAAC,CACF,CAAA;QAED,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAE,CAAC;YACxE,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA,WAAW,KAAK,WAAW,CAAC,CAAC;YAC1F,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA,WAAW,KAAK,WAAW,CAAC,CAAC;YACxF,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,WAAW,GAAG,WAAW,CAAC,CAAC;QAE9F,CAAC;QAID,OAAO,IAAI,CAAA;2CAC4B,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY;4BACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY;6DACF,IAAI,CAAC,YAAY;YAClE,WAAW;;;;;cAKT,gBAAgB;;;;cAIhB,eAAe;;;;gBAIb,UAAU;;;KAGrB,CAAA;IACH,CAAC;CACF,CAAA;AA9DkB;IAAhB,KAAK,EAAE;qDAA+B;AAGvC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gDACjB;AANjB,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAiEtB","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\n\n\n/**\n *\n */\n@customElement(\"dvm-inspect\")\nexport class DvmInspect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n\n /** */\n async onZomeSelect(_e: any) {\n //console.log(\"onZomeSelect() CALLED\", e)\n const zomeSelector = this.shadowRoot!.getElementById(\"selectedZome\") as HTMLSelectElement;\n this._selectedZomeName = zomeSelector.value;\n }\n\n\n\n\n /** */\n override render() {\n const zomeOptions = this.dnaViewModel.zomeNames.map(\n (zomeName) => {\n return html`<option>${zomeName}</option>`\n }\n )\n\n let entryTypeOptions = null;\n let linkTypeOptions = null;\n let zfnOptions = null;\n if (this._selectedZomeName) {\n const zvm = this.dnaViewModel.getZomeViewModel(this._selectedZomeName)!;\n entryTypeOptions = zvm.zomeProxy.entryTypes.map(types => html`<option>${types}</option>`);\n linkTypeOptions = zvm.zomeProxy.linkTypes.map(types => html`<option>${types}</option>`);\n zfnOptions = zvm.zomeProxy.fnNames.map(([_zomeName, zfn]) => html`<option>${zfn}</option>`);\n\n }\n //console.log({entryTypeOptions})\n\n /** render all */\n return html`\n <span>Inspecting DNA <abbr title=${this.dnaViewModel.hcl}>${this.dnaViewModel.baseRoleName}</abbr>: </span>\n <span><abbr title=${this.dnaViewModel.cell.dnaShareCode}>[dnaShareCode]</abbr></span>\n <select name=\"selectedZome\" id=\"selectedZome\" @click=${this.onZomeSelect}>\n ${zomeOptions}\n </select>\n <div style=\"display: flex; flex-direction: row; gap: 5px;\">\n <span>EntryTypes:</span>\n <select name=\"selectedEntryType\" id=\"selectedEntryType\">\n ${entryTypeOptions}\n </select>\n <span>LinkTypes:</span>\n <select name=\"selectedLinkType\" id=\"selectedLinkType\">\n ${linkTypeOptions}\n </select>\n <span>ZomeFunctions:</span>\n <select name=\"selectedZfn\" id=\"selectedZfn\">\n ${zfnOptions}\n </select>\n </div>\n `\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-def-select.js","sourceRoot":"","sources":["../../src/elements/entry-def-select.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAAvC;;QAGY,sBAAiB,GAAG,EAAE,CAAA;IAsEzC,CAAC;IA5DC,KAAK,CAAC,YAAY,CAAC,EAAO;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,cAAc,CAAsB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9C,CAAC;IAGD,KAAK,CAAC,aAAa,CAAC,EAAO;QAEzB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,mBAAmB,CAAsB,CAAC;QAChG,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;YACpE,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAIQ,MAAM;QAMb,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,GAAG,CACpE,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE;YACxB,OAAO,IAAI,CAAA,WAAW,QAAQ,WAAW,CAAA;QAC3C,CAAC,CACF,CAAA;QACD,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;aAC3D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aAC/D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;QAGrC,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACxB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,KAAK,IAAI,QAAQ,CAAC,EAAE,EAAE;oBACxB,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;iBACxB;gBACD,OAAO,IAAI,CAAA,WAAW,IAAI,WAAW,CAAC;YACxC,CAAC,CAAC,CAAC;SACN;QAID,OAAO,IAAI,CAAA;6DAC8C,IAAI,CAAC,YAAY;YAClE,WAAW;;;uEAGgD,IAAI,CAAC,aAAa;YAC7E,gBAAgB;;KAEvB,CAAA;IACH,CAAC;CACF,CAAA;AAtEkB;IAAhB,KAAK,EAAE;yDAA+B;AAGvC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;oDACjB;AANjB,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAyE1B","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\n\n\n/**\n *\n */\n@customElement(\"entry-def-select\")\nexport class EntryDefSelect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n\n /** */\n async onZomeSelect(_e: any) {\n //console.log(\"onZomeSelect() CALLED\", e)\n const zomeSelector = this.shadowRoot!.getElementById(\"selectedZome\") as HTMLSelectElement;\n this._selectedZomeName = zomeSelector.value;\n }\n\n /** */\n async onEntrySelect(_e: any) {\n // console.log(\"onEntrySelect() CALLED\", e)\n const entrySelector = this.shadowRoot!.getElementById(\"selectedEntryType\") as HTMLSelectElement;\n const options = {\n detail: { zome: this._selectedZomeName, entry: entrySelector.value },\n bubbles: true,\n composed: true\n };\n this.dispatchEvent(new CustomEvent('entrySelected', options));\n }\n\n\n /** */\n override render() {\n //console.log(\"<entry-def-select> render()\", this.dnaViewModel)\n // if (!this.dnaViewModel) {\n // return html`<span>Loading...</span>`;\n // }\n\n const zomeOptions = Object.entries(this.dnaViewModel.allEntryDefs).map(\n ([zomeName, _entryDef]) => {\n return html`<option>${zomeName}</option>`\n }\n )\n let zomeTypes = Object.entries(this.dnaViewModel.allEntryDefs)\n .filter((item) => { return item[0] == this._selectedZomeName; })\n .map((item) => { return item[1] });\n //console.log({zomeTypes})\n\n let entryTypeOptions = null;\n if (zomeTypes.length > 0) {\n entryTypeOptions = Object.entries(zomeTypes[0]!).map(\n ([_zomeName, entryDef]) => {\n let name = Object.keys(entryDef.id)[0];\n if (\"App\" in entryDef.id) {\n name = entryDef.id.App;\n }\n return html`<option>${name}</option>`;\n });\n }\n //console.log({entryTypeOptions})\n\n /** render all */\n return html`\n <select name=\"selectedZome\" id=\"selectedZome\" @click=${this.onZomeSelect}>\n ${zomeOptions}\n </select>\n <span>::</span>\n <select name=\"selectedEntryType\" id=\"selectedEntryType\" @click=${this.onEntrySelect}>\n ${entryTypeOptions}\n </select>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"entry-def-select.js","sourceRoot":"","sources":["../../src/elements/entry-def-select.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQ5D,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAAvC;;QAGY,sBAAiB,GAAG,EAAE,CAAA;IAsEzC,CAAC;IA5DC,KAAK,CAAC,YAAY,CAAC,EAAO;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,cAAc,CAAsB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9C,CAAC;IAGD,KAAK,CAAC,aAAa,CAAC,EAAO;QAEzB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,mBAAmB,CAAsB,CAAC;QAChG,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;YACpE,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAIQ,MAAM;QAMb,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,GAAG,CACpE,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE;YACxB,OAAO,IAAI,CAAA,WAAW,QAAQ,WAAW,CAAA;QAC3C,CAAC,CACF,CAAA;QACD,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;aAC3D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aAC/D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;QAGrC,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACxB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,KAAK,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACzB,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;gBACzB,CAAC;gBACD,OAAO,IAAI,CAAA,WAAW,IAAI,WAAW,CAAC;YACxC,CAAC,CAAC,CAAC;QACP,CAAC;QAID,OAAO,IAAI,CAAA;6DAC8C,IAAI,CAAC,YAAY;YAClE,WAAW;;;uEAGgD,IAAI,CAAC,aAAa;YAC7E,gBAAgB;;KAEvB,CAAA;IACH,CAAC;CACF,CAAA;AAtEkB;IAAhB,KAAK,EAAE;yDAA+B;AAGvC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;oDACjB;AANjB,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAyE1B","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\n\n\n/**\n *\n */\n@customElement(\"entry-def-select\")\nexport class EntryDefSelect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n\n /** */\n async onZomeSelect(_e: any) {\n //console.log(\"onZomeSelect() CALLED\", e)\n const zomeSelector = this.shadowRoot!.getElementById(\"selectedZome\") as HTMLSelectElement;\n this._selectedZomeName = zomeSelector.value;\n }\n\n /** */\n async onEntrySelect(_e: any) {\n // console.log(\"onEntrySelect() CALLED\", e)\n const entrySelector = this.shadowRoot!.getElementById(\"selectedEntryType\") as HTMLSelectElement;\n const options = {\n detail: { zome: this._selectedZomeName, entry: entrySelector.value },\n bubbles: true,\n composed: true\n };\n this.dispatchEvent(new CustomEvent('entrySelected', options));\n }\n\n\n /** */\n override render() {\n //console.log(\"<entry-def-select> render()\", this.dnaViewModel)\n // if (!this.dnaViewModel) {\n // return html`<span>Loading...</span>`;\n // }\n\n const zomeOptions = Object.entries(this.dnaViewModel.allEntryDefs).map(\n ([zomeName, _entryDef]) => {\n return html`<option>${zomeName}</option>`\n }\n )\n let zomeTypes = Object.entries(this.dnaViewModel.allEntryDefs)\n .filter((item) => { return item[0] == this._selectedZomeName; })\n .map((item) => { return item[1] });\n //console.log({zomeTypes})\n\n let entryTypeOptions = null;\n if (zomeTypes.length > 0) {\n entryTypeOptions = Object.entries(zomeTypes[0]!).map(\n ([_zomeName, entryDef]) => {\n let name = Object.keys(entryDef.id)[0];\n if (\"App\" in entryDef.id) {\n name = entryDef.id.App;\n }\n return html`<option>${name}</option>`;\n });\n }\n //console.log({entryTypeOptions})\n\n /** render all */\n return html`\n <select name=\"selectedZome\" id=\"selectedZome\" @click=${this.onZomeSelect}>\n ${zomeOptions}\n </select>\n <span>::</span>\n <select name=\"selectedEntryType\" id=\"selectedEntryType\" @click=${this.onEntrySelect}>\n ${entryTypeOptions}\n </select>\n `\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"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","sourcesContent":["\n/** */\nexport enum HappEnvType {\n Browser = \"Browser\", // default value\n We = \"We\", // if window.IN_WE defined\n BrowserWe = \"BrowserWe\", // Testing we-applet in browser\n Electron = \"Electron\", // if window.electronBridge is defined\n Holo = \"Holo\", // ???\n}\n\nexport function isHappEnv(value: any): value is HappEnvType {\n return Object.values(HappEnvType).includes(value);\n}\n\n/** */\nexport enum HappBuildModeType {\n Debug = \"Debug\", // logs\n Release = \"Release\", // logs & optimization\n Retail = \"Retail\", // optimization (default)\n}\n\nexport function isHappBuildMode(value: any): value is HappBuildModeType {\n return Object.values(HappBuildModeType).includes(value);\n}\n\n\n/** INIT GLOBAL CONSTS */\n\nconsole.log(\"[lit-happ] Initializing LIT-HAPP global consts\", window);\n\nconst maybeElectronApi = 'electronBridge' in window? window.electronBridge as any : undefined;\n\n/** Determine HappEnv */\nlet happEnv: HappEnvType;\ntry {\n happEnv = process.env.HAPP_ENV as HappEnvType;\n console.log(`[lit-happ] HAPP_ENV defined by process.ENV: \"${happEnv}\"`);\n} catch (e) {\n /** Looking for Electron */\n if (maybeElectronApi) {\n happEnv = HappEnvType.Electron;\n console.log(`[lit-happ] HAPP_ENV is \"${HappEnvType.Electron}\"`);\n } else {\n /** Looking for We */\n const isInWe = 'IN_WE' in window? window.IN_WE as boolean : false;\n if (isInWe) {\n happEnv = HappEnvType.We;\n } else {\n /** Looking for Holo */\n // FIXME\n const isInHolo = false;\n if (isInHolo) {\n happEnv = HappEnvType.Holo;\n } else {\n /** Default to prod */\n happEnv = HappEnvType.Browser;\n }\n }\n }\n}\n\n/** Determine BuildMode */\nlet buildMode: HappBuildModeType = HappBuildModeType.Retail;\nif (maybeElectronApi) {\n buildMode = maybeElectronApi.BUILD_MODE;\n} else {\n try {\n if (process.env.HAPP_BUILD_MODE) {\n buildMode = process.env.HAPP_BUILD_MODE as HappBuildModeType;\n }\n } catch (e) {\n console.log(`[lit-happ] HAPP_BUILD_MODE not defined. Defaulting to \"${HappBuildModeType.Retail}\"`);\n }\n}\n\nif (!isHappBuildMode(buildMode)) {\n console.error(\"[lit-happ] buildMode not valid\", buildMode);\n}\n\nif (!isHappEnv(happEnv)) {\n console.error(\"[lit-happ] happEnv not valid\", happEnv);\n}\n\n/** export result */\nexport let HAPP_BUILD_MODE = buildMode;\nexport let HAPP_ENV = happEnv;\nexport let HAPP_ELECTRON_API = maybeElectronApi;\n\nconsole.log(\"[lit-happ] HAPP_BUILD_MODE =\", HAPP_BUILD_MODE)\nconsole.log(\"[lit-happ] HAPP_ENV =\", HAPP_ENV);\nif (HAPP_ELECTRON_API) {\n console.log(\"[lit-happ] HAPP_ELECTRON_API =\", HAPP_ENV);\n}\n\nconsole.log(\"[lit-happ] Initializing LIT-HAPP global consts - DONE\")\n\n\n/** Remove console.log() in PROD */\n// FIXME\n// if (HAPP_BUILD_MODE === 'prod') {\n// console.log(\"console.log() disabled\");\n// console.log = () => {};\n// }\n"]}
1
+ {"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"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","sourcesContent":["\n/** */\nexport enum HappEnvType {\n Browser = \"Browser\", // default value\n We = \"We\", // if window.IN_WE defined\n BrowserWe = \"BrowserWe\", // Testing we-applet in browser\n Electron = \"Electron\", // if window.electronBridge is defined\n Holo = \"Holo\", // ???\n}\n\nexport function isHappEnv(value: any): value is HappEnvType {\n return Object.values(HappEnvType).includes(value);\n}\n\n/** */\nexport enum HappBuildModeType {\n Debug = \"Debug\", // logs\n Release = \"Release\", // logs & optimization\n Retail = \"Retail\", // optimization (default)\n}\n\nexport function isHappBuildMode(value: any): value is HappBuildModeType {\n return Object.values(HappBuildModeType).includes(value);\n}\n\n\n/** INIT GLOBAL CONSTS */\n\nconsole.log(\"[lit-happ] Initializing LIT-HAPP global consts\", window);\n\nconst maybeElectronApi = 'electronBridge' in window? window.electronBridge as any : undefined;\n\n/** Determine HappEnv */\nlet happEnv: HappEnvType;\ntry {\n happEnv = process.env.HAPP_ENV as HappEnvType;\n console.log(`[lit-happ] HAPP_ENV defined by process.ENV: \"${happEnv}\"`);\n} catch (e) {\n /** Looking for Electron */\n if (maybeElectronApi) {\n happEnv = HappEnvType.Electron;\n console.log(`[lit-happ] HAPP_ENV is \"${HappEnvType.Electron}\"`);\n } else {\n /** Looking for We */\n const isInWe = 'IN_WE' in window? window.IN_WE as boolean : false;\n if (isInWe) {\n happEnv = HappEnvType.We;\n } else {\n /** Looking for Holo */\n // FIXME\n const isInHolo = false;\n if (isInHolo) {\n happEnv = HappEnvType.Holo;\n } else {\n /** Default to prod */\n happEnv = HappEnvType.Browser;\n }\n }\n }\n}\n\n/** Determine BuildMode */\nlet buildMode: HappBuildModeType = HappBuildModeType.Retail;\nif (maybeElectronApi) {\n buildMode = maybeElectronApi.BUILD_MODE;\n} else {\n try {\n if (process.env.HAPP_BUILD_MODE) {\n buildMode = process.env.HAPP_BUILD_MODE as HappBuildModeType;\n }\n } catch (e) {\n console.log(`[lit-happ] HAPP_BUILD_MODE not defined. Defaulting to \"${HappBuildModeType.Retail}\"`);\n }\n}\n\nif (!isHappBuildMode(buildMode)) {\n console.error(\"[lit-happ] buildMode not valid\", buildMode);\n}\n\nif (!isHappEnv(happEnv)) {\n console.error(\"[lit-happ] happEnv not valid\", happEnv);\n}\n\n/** export result */\nexport let HAPP_BUILD_MODE = buildMode;\nexport let HAPP_ENV = happEnv;\nexport let HAPP_ELECTRON_API = maybeElectronApi;\n\nconsole.log(\"[lit-happ] HAPP_BUILD_MODE =\", HAPP_BUILD_MODE)\nconsole.log(\"[lit-happ] HAPP_ENV =\", HAPP_ENV);\nif (HAPP_ELECTRON_API) {\n console.log(\"[lit-happ] HAPP_ELECTRON_API =\", HAPP_ENV);\n}\n\nconsole.log(\"[lit-happ] Initializing LIT-HAPP global consts - DONE\")\n\n\n/** Remove console.log() in PROD */\n// FIXME\n// if (HAPP_BUILD_MODE === 'prod') {\n// console.log(\"console.log() disabled\");\n// console.log = () => {};\n// }\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/lit-happ",
3
- "version": "0.33.9",
3
+ "version": "0.34.0",
4
4
  "description": "MVVM Framework for holochain apps using Lit",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -25,11 +25,11 @@
25
25
  "homepage": "https://github.com/ddd-mtl/lit-happ#readme",
26
26
  "devDependencies": {
27
27
  "@types/node": "^20.8.9",
28
- "tslib": "^2.4.0",
29
- "typescript": "~5.2.0"
28
+ "tslib": "^2.8",
29
+ "typescript": "~5.9"
30
30
  },
31
31
  "dependencies": {
32
- "@holochain/client": "=0.20.0",
32
+ "@holochain/client": "=0.20.2",
33
33
  "@ddd-qc/cell-proxy": "file:../cell-proxy",
34
34
  "@lit/context": "1.0.1",
35
35
  "lit": "3.0.2",