@ddd-qc/lit-happ 0.24.7 → 0.25.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.
@@ -140,13 +140,13 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
140
140
  console.warn("Dumping signals in DVM", this.baseRoleName);
141
141
  if (zomeName == undefined) {
142
142
  for (const [name, zvm] of Object.entries(this._zomeViewModels)) {
143
- const logs = this._cellProxy.signalLogs.filter((log) => log.zome_name == name);
143
+ const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == name);
144
144
  zvm.dumpSignalLogs(logs);
145
145
  }
146
146
  return;
147
147
  }
148
148
  if (this._zomeViewModels[zomeName]) {
149
- const logs = this._cellProxy.signalLogs.filter((log) => log.zome_name == zomeName);
149
+ const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == zomeName);
150
150
  this._zomeViewModels[zomeName].dumpSignalLogs(logs);
151
151
  }
152
152
  else {
@@ -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, AgentPubKeyB64,\n GrantedFunctionsType,\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 Dictionary, CellMixin\n} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin, RoleSpecific} from \"./roleMixin\";\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<Dictionary<[string, boolean][]>>;\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): 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\n /* private */ static ZVM_DEFS: ZvmDef[];\n static DNA_MODIFIERS: DnaModifiersOptions;\n\n\n /** Ctor */\n constructor(public readonly host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId) {\n super();\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 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;\n if (Array.isArray(zvmDef)) {\n zvm = new zvmDef[0](this._cellProxy, this, zvmDef[1]);\n } else {\n zvm = new zvmDef(this._cellProxy, this);\n }\n // TODO check zvm.zomeName exists in _cellProxy\n this._zomeViewModels[zvm.zomeName] = zvm;\n this._zomeNames[zvmDef.constructor.name] = zvm.zomeName;\n }\n this.provideContext(host); // TODO move this to host.connectedCallback? e.g. change ViewModel to a ReactiveController\n }\n\n\n /** -- Fields -- */\n\n protected _cellProxy: CellProxy;\n /* ZomeName -> Zvm */\n protected _zomeViewModels: Dictionary<ZomeViewModel> = {};\n /* ZvmCtorName -> ZomeName */\n protected _zomeNames: Dictionary<ZomeName> = {};\n /* ZomeName -> [EntryName, EntryVisibility] */\n private _allEntryDefs: Dictionary<[string, boolean][]> = {};\n\n /** list of \"known\" peers in this DNA */\n protected _livePeers: AgentPubKeyB64[] = [];\n\n public readonly hcl: HCL;\n\n\n\n /** -- Getters -- */\n\n get livePeers(): AgentPubKeyB64[] { return this._livePeers };\n\n getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined {return this._allEntryDefs[zomeName]}\n getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined {return this._zomeViewModels[zomeName]}\n getZomeName(zvm: typeof ZomeViewModel): ZomeName | undefined { return this._zomeNames[zvm.constructor.name]}\n\n /** -- Methods -- */\n\n /** Override so we can provide context of all zvms */\n /*private*/ 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)};\n\n\n /** */\n async authorizeZomeCalls(adminWs: AdminWebsocket): Promise<void> {\n let allFnNames = [];\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.dnaHash + \" ; \" + this.cell.agentPubKey + \"]\");\n //await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);\n await adminWs.authorizeSigningCredentials(this.cell.id);\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 Observer pattern */\n protected probeAllInner(): void {\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n //console.log(\"Dvm.probeAll()\", name)\n zvm.probeAll();\n }\n }\n\n\n /** */\n zvmChanged(zvm: ZomeViewModel): void {}\n\n\n /** */\n async initializePerspectiveOffline(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveOffline();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveOnline();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** Maybe useless since the entry defs are in the integrity zome which is not represented here */\n async fetchAllEntryDefs(): Promise<Dictionary<[string, boolean][]>> {\n for (const zvm of Object.values(this._zomeViewModels)) {\n const zomeName = zvm.zomeName;\n try {\n const defs = await this._cellProxy.callEntryDefs(zomeName); // TODO optimize\n this._allEntryDefs[zomeName] = defs\n } catch (e) {\n console.warn(`Calling \"entry_defs()\" failed on zome \"${zomeName}\". Possibly because zome does not have any entry types defined.`)\n this._allEntryDefs[zomeName] = [];\n }\n }\n return this._allEntryDefs;\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.zome_name == name)\n zvm.dumpSignalLogs(logs);\n }\n return;\n }\n if (this._zomeViewModels[zomeName]) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zome_name == zomeName)\n this._zomeViewModels[zomeName].dumpSignalLogs(logs);\n } else {\n console.error(`Unknown zome ${zomeName} in DVM ${this.baseRoleName}`)\n }\n }\n}\n"]}
1
+ {"version":3,"file":"DnaViewModel.js","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {ZomeViewModel} from \"./ZomeViewModel\";\nimport {ReactiveElement} from \"lit\";\nimport {ViewModel} from \"./ViewModel\";\nimport {\n AdminWebsocket, AgentPubKeyB64,\n GrantedFunctionsType,\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 Dictionary, CellMixin\n} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin, RoleSpecific} from \"./roleMixin\";\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<Dictionary<[string, boolean][]>>;\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): 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\n /* private */ static ZVM_DEFS: ZvmDef[];\n static DNA_MODIFIERS: DnaModifiersOptions;\n\n\n /** Ctor */\n constructor(public readonly host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId) {\n super();\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 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;\n if (Array.isArray(zvmDef)) {\n zvm = new zvmDef[0](this._cellProxy, this, zvmDef[1]);\n } else {\n zvm = new zvmDef(this._cellProxy, this);\n }\n // TODO check zvm.zomeName exists in _cellProxy\n this._zomeViewModels[zvm.zomeName] = zvm;\n this._zomeNames[zvmDef.constructor.name] = zvm.zomeName;\n }\n this.provideContext(host); // TODO move this to host.connectedCallback? e.g. change ViewModel to a ReactiveController\n }\n\n\n /** -- Fields -- */\n\n protected _cellProxy: CellProxy;\n /* ZomeName -> Zvm */\n protected _zomeViewModels: Dictionary<ZomeViewModel> = {};\n /* ZvmCtorName -> ZomeName */\n protected _zomeNames: Dictionary<ZomeName> = {};\n /* ZomeName -> [EntryName, EntryVisibility] */\n private _allEntryDefs: Dictionary<[string, boolean][]> = {};\n\n /** list of \"known\" peers in this DNA */\n protected _livePeers: AgentPubKeyB64[] = [];\n\n public readonly hcl: HCL;\n\n\n\n /** -- Getters -- */\n\n get livePeers(): AgentPubKeyB64[] { return this._livePeers };\n\n getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined {return this._allEntryDefs[zomeName]}\n getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined {return this._zomeViewModels[zomeName]}\n getZomeName(zvm: typeof ZomeViewModel): ZomeName | undefined { return this._zomeNames[zvm.constructor.name]}\n\n /** -- Methods -- */\n\n /** Override so we can provide context of all zvms */\n /*private*/ 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)};\n\n\n /** */\n async authorizeZomeCalls(adminWs: AdminWebsocket): Promise<void> {\n let allFnNames = [];\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.dnaHash + \" ; \" + this.cell.agentPubKey + \"]\");\n //await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);\n await adminWs.authorizeSigningCredentials(this.cell.id);\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 Observer pattern */\n protected probeAllInner(): void {\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n //console.log(\"Dvm.probeAll()\", name)\n zvm.probeAll();\n }\n }\n\n\n /** */\n zvmChanged(zvm: ZomeViewModel): void {}\n\n\n /** */\n async initializePerspectiveOffline(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveOffline();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveOnline();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** Maybe useless since the entry defs are in the integrity zome which is not represented here */\n async fetchAllEntryDefs(): Promise<Dictionary<[string, boolean][]>> {\n for (const zvm of Object.values(this._zomeViewModels)) {\n const zomeName = zvm.zomeName;\n try {\n const defs = await this._cellProxy.callEntryDefs(zomeName); // TODO optimize\n this._allEntryDefs[zomeName] = defs\n } catch (e) {\n console.warn(`Calling \"entry_defs()\" failed on zome \"${zomeName}\". Possibly because zome does not have any entry types defined.`)\n this._allEntryDefs[zomeName] = [];\n }\n }\n return this._allEntryDefs;\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"]}
@@ -14,7 +14,7 @@ export declare class HappElement extends LitElement {
14
14
  appProxy: AppProxy;
15
15
  hvm: HappViewModel;
16
16
  /** Ctor */
17
- protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL);
17
+ protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number);
18
18
  /** */
19
19
  hvmConstructed(): Promise<void>;
20
20
  /** */
@@ -22,7 +22,7 @@ export declare class HappElement extends LitElement {
22
22
  /** */
23
23
  perspectiveInitializedOnline(): Promise<void>;
24
24
  /** */
25
- protected constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL): Promise<void>;
25
+ protected constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number): Promise<void>;
26
26
  /** */
27
27
  initializePerspective(): Promise<void>;
28
28
  /** */
@@ -9,9 +9,9 @@ import { decodeHashFromBase64, encodeHashToBase64 } from "@holochain/client";
9
9
  */
10
10
  export class HappElement extends LitElement {
11
11
  /** Ctor */
12
- constructor(port_or_socket, appId, adminUrl) {
12
+ constructor(port_or_socket, appId, adminUrl, defaultTimeout) {
13
13
  super();
14
- /* await */ this.constructHvm(port_or_socket, appId, adminUrl);
14
+ /* await */ this.constructHvm(port_or_socket, appId, adminUrl, defaultTimeout);
15
15
  }
16
16
  /** */
17
17
  async hvmConstructed() { }
@@ -20,7 +20,7 @@ export class HappElement extends LitElement {
20
20
  /** */
21
21
  async perspectiveInitializedOnline() { }
22
22
  /** */
23
- async constructHvm(port_or_socket, appId, adminUrl) {
23
+ async constructHvm(port_or_socket, appId, adminUrl, defaultTimeout) {
24
24
  const hvmDef = this.constructor.HVM_DEF;
25
25
  if (!hvmDef) {
26
26
  throw Error("HVM_DEF static field undefined in HappElement subclass " + this.constructor.name);
@@ -29,7 +29,7 @@ export class HappElement extends LitElement {
29
29
  if (appId) {
30
30
  hvmDef.id = appId;
31
31
  }
32
- this.appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl);
32
+ this.appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);
33
33
  this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef);
34
34
  await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);
35
35
  await this.hvmConstructed();
@@ -1 +1 @@
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,\n HCL,\n flattenCells,\n CellIdStr, str2CellId\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n AgentPubKeyB64,\n AppWebsocket,\n ClonedCell, decodeHashFromBase64,\n DnaHashB64,\n encodeHashToBase64,\n InstalledAppId,\n NetworkInfo, Timestamp\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\nimport {CellId} from \"@holochain/client/lib/types\";\nimport * as net from \"net\";\n\n\n/**\n *\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 appProxy!: AppProxy;\n @state() hvm!: HappViewModel;\n\n\n /** Ctor */\n protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL) {\n super();\n /* await */ this.constructHvm(port_or_socket, appId, adminUrl);\n }\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedOffline(): Promise<void> {}\n /** */\n async perspectiveInitializedOnline(): Promise<void> {}\n\n\n /** */\n protected async constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL): 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(port_or_socket, hvmDef.id, adminUrl);\n this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef);\n await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);\n await this.hvmConstructed();\n await this.initializePerspective();\n }\n\n\n /** */\n async initializePerspective(): Promise<void> {\n await this.hvm.initializePerspectiveOffline();\n await this.perspectiveInitializedOffline();\n // TODO move this to a later stage\n await this.hvm.initializePerspectiveOnline();\n await this.perspectiveInitializedOnline();\n }\n\n\n /** */\n async networkInfoCell(hcl: HCL): Promise<NetworkInfo> {\n const dvm = this.hvm.getDvm(hcl);\n if (!dvm) {\n return Promise.reject(\"No DNA found at given HCL: \" + hcl.toString());\n }\n const netInfoMap = this.appProxy.networkInfo({dnas: [decodeHashFromBase64(dvm.cell.dnaHash)]});\n return netInfoMap[dvm.cell.dnaHash][1];\n }\n\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\n console.log(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.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 cellIds: CellId[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellIds = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellIds = cellIds.concat(flattenCells(cells))\n }\n }\n console.log(`networkInfoAll() cellIds`, cellIds);\n /* Sort by agent key */\n let dnaMap: Record<AgentPubKeyB64, DnaHashB64[]> = {}\n for (const cellId of cellIds) {\n const key = encodeHashToBase64(cellId[1]);\n if (!dnaMap[key]) {\n dnaMap[key] = [];\n }\n dnaMap[key].push(encodeHashToBase64(cellId[0]))\n }\n console.log(`networkInfoAll() dnaMap`, dnaMap);\n /** Call NetworkInfo per AgentPubKey */\n const allNetInfos = {};\n for (const [agent, dnaHashes] of Object.entries(dnaMap)) {\n const netInfos = await this.appProxy.networkInfo({dnas: dnaHashes.map((dna) => decodeHashFromBase64(dna))});\n for (const [dnaHash, infoPair] of Object.entries(netInfos)) {\n const idStr = CellIdStr(decodeHashFromBase64(dnaHash), decodeHashFromBase64(agent));\n allNetInfos[idStr] = infoPair;\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n\n /** */\n dumpLastestNetworkInfo(baseRoleName?: string) {\n console.log(`dumpLastestNetworkInfo() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n throw Error(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellIds: CellId[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellIds = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellIds = cellIds.concat(flattenCells(cells))\n }\n }\n let logs = cellIds.map((cellId) => {\n const str = CellIdStr(cellId);\n const logs = this.appProxy.networkInfoLogs[str];\n if (logs.length === 0) {\n return;\n }\n const [ts, info] = logs[logs.length - 1];\n const dnaHash = encodeHashToBase64(cellId[0]);\n const hcl = this.appProxy.getLocations(cellId);\n const cellName = this.appProxy.getCellName(hcl[0]);\n const dnaName = dnaHash.slice(-6);\n const agentName = encodeHashToBase64(cellId[1]).slice(-6);\n return {\n ts,\n name: cellName,\n dna: dnaName,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n agent: agentName,\n }\n })\n console.table(logs);\n }\n\n\n /* */\n dumpNetworkInfoLogs(cellIdStr?: string) {\n console.log(`dumpNetworkInfoLogs() \"${cellIdStr}\"`);\n let logMap = this.appProxy.networkInfoLogs;\n if (cellIdStr) {\n logMap = {};\n logMap[cellIdStr] = this.appProxy.networkInfoLogs[cellIdStr];\n }\n for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {\n const cellId = str2CellId(cellIdStr);\n const dnaHash = encodeHashToBase64(cellId[0]);\n const hcl = this.appProxy.getLocations(cellId);\n const cellName = this.appProxy.getCellName(hcl[0]);\n const dnaName = dnaHash.slice(-6);\n const agentName = encodeHashToBase64(cellId[1]).slice(-6);\n console.log(`NetworfInfo logs of cell \"${cellName}\" | [${agentName}, ${dnaName}]`);\n const logs = infoPairs\n .map(([ts, info]) => {\n return {\n ts,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n }\n });\n console.table(logs);\n }\n }\n\n\n /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n\n\n /** */\n shouldUpdate() {\n return !!this.hvm;\n }\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,\n HCL,\n flattenCells,\n CellIdStr, str2CellId\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n AgentPubKeyB64,\n AppWebsocket,\n ClonedCell, decodeHashFromBase64,\n DnaHashB64,\n encodeHashToBase64,\n InstalledAppId,\n NetworkInfo, Timestamp\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\nimport {CellId} from \"@holochain/client/lib/types\";\nimport * as net from \"net\";\n\n\n/**\n *\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 appProxy!: AppProxy;\n @state() hvm!: HappViewModel;\n\n\n /** Ctor */\n protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number) {\n super();\n /* await */ this.constructHvm(port_or_socket, appId, adminUrl, defaultTimeout);\n }\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedOffline(): Promise<void> {}\n /** */\n async perspectiveInitializedOnline(): Promise<void> {}\n\n\n /** */\n protected async constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number): 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(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);\n this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef);\n await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);\n await this.hvmConstructed();\n await this.initializePerspective();\n }\n\n\n /** */\n async initializePerspective(): Promise<void> {\n await this.hvm.initializePerspectiveOffline();\n await this.perspectiveInitializedOffline();\n // TODO move this to a later stage\n await this.hvm.initializePerspectiveOnline();\n await this.perspectiveInitializedOnline();\n }\n\n\n /** */\n async networkInfoCell(hcl: HCL): Promise<NetworkInfo> {\n const dvm = this.hvm.getDvm(hcl);\n if (!dvm) {\n return Promise.reject(\"No DNA found at given HCL: \" + hcl.toString());\n }\n const netInfoMap = this.appProxy.networkInfo({dnas: [decodeHashFromBase64(dvm.cell.dnaHash)]});\n return netInfoMap[dvm.cell.dnaHash][1];\n }\n\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\n console.log(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.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 cellIds: CellId[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellIds = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellIds = cellIds.concat(flattenCells(cells))\n }\n }\n console.log(`networkInfoAll() cellIds`, cellIds);\n /* Sort by agent key */\n let dnaMap: Record<AgentPubKeyB64, DnaHashB64[]> = {}\n for (const cellId of cellIds) {\n const key = encodeHashToBase64(cellId[1]);\n if (!dnaMap[key]) {\n dnaMap[key] = [];\n }\n dnaMap[key].push(encodeHashToBase64(cellId[0]))\n }\n console.log(`networkInfoAll() dnaMap`, dnaMap);\n /** Call NetworkInfo per AgentPubKey */\n const allNetInfos = {};\n for (const [agent, dnaHashes] of Object.entries(dnaMap)) {\n const netInfos = await this.appProxy.networkInfo({dnas: dnaHashes.map((dna) => decodeHashFromBase64(dna))});\n for (const [dnaHash, infoPair] of Object.entries(netInfos)) {\n const idStr = CellIdStr(decodeHashFromBase64(dnaHash), decodeHashFromBase64(agent));\n allNetInfos[idStr] = infoPair;\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n\n /** */\n dumpLastestNetworkInfo(baseRoleName?: string) {\n console.log(`dumpLastestNetworkInfo() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n throw Error(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellIds: CellId[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellIds = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellIds = cellIds.concat(flattenCells(cells))\n }\n }\n let logs = cellIds.map((cellId) => {\n const str = CellIdStr(cellId);\n const logs = this.appProxy.networkInfoLogs[str];\n if (logs.length === 0) {\n return;\n }\n const [ts, info] = logs[logs.length - 1];\n const dnaHash = encodeHashToBase64(cellId[0]);\n const hcl = this.appProxy.getLocations(cellId);\n const cellName = this.appProxy.getCellName(hcl[0]);\n const dnaName = dnaHash.slice(-6);\n const agentName = encodeHashToBase64(cellId[1]).slice(-6);\n return {\n ts,\n name: cellName,\n dna: dnaName,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n agent: agentName,\n }\n })\n console.table(logs);\n }\n\n\n /* */\n dumpNetworkInfoLogs(cellIdStr?: string) {\n console.log(`dumpNetworkInfoLogs() \"${cellIdStr}\"`);\n let logMap = this.appProxy.networkInfoLogs;\n if (cellIdStr) {\n logMap = {};\n logMap[cellIdStr] = this.appProxy.networkInfoLogs[cellIdStr];\n }\n for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {\n const cellId = str2CellId(cellIdStr);\n const dnaHash = encodeHashToBase64(cellId[0]);\n const hcl = this.appProxy.getLocations(cellId);\n const cellName = this.appProxy.getCellName(hcl[0]);\n const dnaName = dnaHash.slice(-6);\n const agentName = encodeHashToBase64(cellId[1]).slice(-6);\n console.log(`NetworfInfo logs of cell \"${cellName}\" | [${agentName}, ${dnaName}]`);\n const logs = infoPairs\n .map(([ts, info]) => {\n return {\n ts,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n }\n });\n console.table(logs);\n }\n }\n\n\n /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n\n\n /** */\n shouldUpdate() {\n return !!this.hvm;\n }\n\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/lit-happ",
3
- "version": "0.24.7",
3
+ "version": "0.25.0",
4
4
  "description": "MVVM Framework for holochain apps using Lit",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",