@ddd-qc/lit-happ 0.25.1 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,14 +4,14 @@ import { ViewModel } from "./ViewModel";
4
4
  import { AdminWebsocket, InstalledAppId, ZomeName } from "@holochain/client";
5
5
  import { DnaModifiersOptions, ZvmDef } from "./definitions";
6
6
  import { Context } from "@lit/context";
7
- import { CellProxy, AppProxy, HCL, Dictionary, AgentId } from "@ddd-qc/cell-proxy";
7
+ import { CellProxy, AppProxy, HCL, Dictionary, AgentId, EntryDef } from "@ddd-qc/cell-proxy";
8
8
  import { RoleSpecific } from "./roleMixin";
9
9
  /** Interface specific to DnaViewModel class */
10
10
  interface IDnaViewModel {
11
11
  dumpCallLogs(zomeName?: ZomeName): void;
12
12
  dumpSignalLogs(zomeName?: ZomeName): void;
13
13
  /** zomeName -> (AppEntryName, isPublic)[] */
14
- fetchAllEntryDefs(): Promise<Dictionary<[string, boolean][]>>;
14
+ fetchAllEntryDefs(): Promise<Dictionary<Dictionary<EntryDef>>>;
15
15
  }
16
16
  export type DvmConstructor = typeof RoleSpecific & {
17
17
  DNA_MODIFIERS: DnaModifiersOptions;
@@ -24,6 +24,7 @@ declare const DnaViewModel_base: (abstract new (...args: any[]) => {
24
24
  }) & ((abstract new (...args: any[]) => {
25
25
  baseRoleName: string;
26
26
  }) & {
27
+ /** Interface specific to DnaViewModel class */
27
28
  readonly DEFAULT_BASE_ROLE_NAME: string;
28
29
  }) & typeof ViewModel;
29
30
  /**
@@ -48,7 +49,8 @@ export declare abstract class DnaViewModel extends DnaViewModel_base implements
48
49
  readonly hcl: HCL;
49
50
  /** -- Getters -- */
50
51
  get livePeers(): AgentId[];
51
- getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined;
52
+ get zomeNames(): ZomeName[];
53
+ getZomeEntryDefs(zomeName: ZomeName): Dictionary<EntryDef> | undefined;
52
54
  getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined;
53
55
  getZomeName(zvm: typeof ZomeViewModel): ZomeName | undefined;
54
56
  /** -- Methods -- */
@@ -66,7 +68,7 @@ export declare abstract class DnaViewModel extends DnaViewModel_base implements
66
68
  /** */
67
69
  initializePerspectiveOnline(): Promise<void>;
68
70
  /** Maybe useless since the entry defs are in the integrity zome which is not represented here */
69
- fetchAllEntryDefs(): Promise<Dictionary<[string, boolean][]>>;
71
+ fetchAllEntryDefs(): Promise<Dictionary<Dictionary<EntryDef>>>;
70
72
  /** */
71
73
  dumpCallLogs(zomeName?: ZomeName): void;
72
74
  /** */
@@ -18,7 +18,7 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
18
18
  this._zomeViewModels = {};
19
19
  /* ZvmCtorName -> ZomeName */
20
20
  this._zomeNames = {};
21
- /* ZomeName -> [EntryName, EntryVisibility] */
21
+ /* ZomeName -> (EntryName -> EntryDef) */
22
22
  this._allEntryDefs = {};
23
23
  /** list of "known" peers in this DNA */
24
24
  this._livePeers = [];
@@ -52,6 +52,7 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
52
52
  /** -- Getters -- */
53
53
  get livePeers() { return this._livePeers; }
54
54
  ;
55
+ get zomeNames() { return Object.values(this._zomeNames); }
55
56
  getZomeEntryDefs(zomeName) { return this._allEntryDefs[zomeName]; }
56
57
  getZomeViewModel(zomeName) { return this._zomeViewModels[zomeName]; }
57
58
  getZomeName(zvm) { return this._zomeNames[zvm.constructor.name]; }
@@ -126,7 +127,7 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
126
127
  }
127
128
  catch (e) {
128
129
  console.warn(`Calling "entry_defs()" failed on zome "${zomeName}". Possibly because zome does not have any entry types defined.`);
129
- this._allEntryDefs[zomeName] = [];
130
+ this._allEntryDefs[zomeName] = {};
130
131
  }
131
132
  }
132
133
  return this._allEntryDefs;
@@ -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,\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, AgentId\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: AgentId[] = [];\n\n public readonly hcl: HCL;\n\n\n\n /** -- Getters -- */\n\n get livePeers(): AgentId[] { 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.dnaId + \" ; \" + this.cell.agentId + \"]\");\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"]}
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,\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, AgentId, EntryDef\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<Dictionary<EntryDef>>>;\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 -> EntryDef) */\n private _allEntryDefs: Dictionary<Dictionary<EntryDef>> = {};\n\n /** list of \"known\" peers in this DNA */\n protected _livePeers: AgentId[] = [];\n\n public readonly hcl: HCL;\n\n\n\n /** -- Getters -- */\n\n get livePeers(): AgentId[] { return this._livePeers };\n\n get zomeNames(): ZomeName[] {return Object.values(this._zomeNames);}\n\n getZomeEntryDefs(zomeName: ZomeName): Dictionary<EntryDef> | 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.dnaId + \" ; \" + this.cell.agentId + \"]\");\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<Dictionary<EntryDef>>> {\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"]}
@@ -29,6 +29,8 @@ export declare abstract class ZomeViewModel extends ZomeViewModel_base {
29
29
  /** Zome name */
30
30
  static get DEFAULT_ZOME_NAME(): string;
31
31
  zomeName: ZomeName;
32
+ static get ENTRY_TYPES(): string[];
33
+ static get LINK_TYPES(): string[];
32
34
  protected _dvmParent: DnaViewModel;
33
35
  /** Ctor */
34
36
  constructor(cellProxy: CellProxy, dvmParent: DnaViewModel, zomeName?: ZomeName);
@@ -26,6 +26,12 @@ export class ZomeViewModel extends CellMixin(ViewModel) {
26
26
  static get DEFAULT_ZOME_NAME() {
27
27
  return this.ZOME_PROXY.DEFAULT_ZOME_NAME;
28
28
  }
29
+ static get ENTRY_TYPES() {
30
+ return this.ZOME_PROXY.ENTRY_TYPES;
31
+ }
32
+ static get LINK_TYPES() {
33
+ return this.ZOME_PROXY.LINK_TYPES;
34
+ }
29
35
  /** Ctor */
30
36
  constructor(cellProxy, dvmParent, zomeName) {
31
37
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeViewModel.js","sourceRoot":"","sources":["../src/ZomeViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAIH,SAAS,EAET,gBAAgB,EAYnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAOtC,qCAAqC;AACrC,MAAM,UAAU,GAAG,CAAC,UAA4B;IAC5C,OAAO,CAAC,IAAc,EAAE,EAAE;QACtB,+CAA+C;QAC9C,IAAY,CAAC,UAAU,GAAG,UAAU,CAAC;QACtC,6EAA6E;QAC7E,iGAAiG;QACjG,6EAA6E;IACjF,CAAC,CAAA;AACL,CAAC;AAGD;;;;;;GAMG;AACH,MAAM,OAAgB,aAAc,SAAQ,SAAS,CAAC,SAAS,CAAC;IAO5D,mBAAmB;QACf,OAAQ,IAAI,CAAC,WAAoC,CAAC,UAAU,CAAC;IACjE,CAAC;IAID,gBAAgB;IAChB,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC7C,CAAC;IAMD,WAAW;IACX,YAAY,SAAoB,EAAE,SAAuB,EAAE,QAAmB;QAC1E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,KAAK,CAAC,oDAAoD,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC7F;QACD,IAAI,QAAQ,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9D;aAAM;YACH,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;SACnD;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;QAC5B,SAAS,CAAC,gBAAgB,CAAE,CAAC,MAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAGD,wBAAwB;IACd,iBAAiB;QACvB,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC7C,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACpC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,iCAAiC;IACzB,gBAAgB,CAAC,MAAiB;QACtC,wFAAwF;QACxF,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC9B;IACL,CAAC;IAED,MAAM;IACN,UAAU;QACN,MAAM,OAAO,GAAG,aAAa,CAAc,MAAM,GAAE,IAAI,CAAC,UAAU,CAAC,eAAe,GAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1G,4CAA4C;QAC5C,OAAO,OAAO,CAAA;IAClB,CAAC;IAGD,MAAM;IACN,cAAc,CAAC,UAAuB;QAClC,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC;CACJ","sourcesContent":["import {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n ZomeProxy,\n ZomeProxyConstructor,\n CellMixin,\n SignalLog,\n prettySignalLogs,\n Cell,\n AbstractConstructor,\n AgentId,\n dec64,\n TipProtocol,\n ZomeSignalProtocol,\n TipProtocolVariantEntry,\n ZomeSignalProtocolVariantEntry,\n TipProtocolVariantLink,\n ZomeSignalProtocolVariantLink,\n TipProtocolVariantApp, prettyDate, ZomeSignal, ZomeSignalProtocolType, EntryPulse, LinkPulse, ActionId, EntryId\n} from \"@ddd-qc/cell-proxy\";\nimport {ViewModel} from \"./ViewModel\";\nimport {AgentPubKeyB64, AppSignalCb, Timestamp, ZomeName} 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, 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 signalHandler?: AppSignalCb;\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 protected _dvmParent: DnaViewModel;\n\n\n /** Ctor */\n constructor(cellProxy: CellProxy, dvmParent: DnaViewModel, zomeName?: ZomeName) {\n super();\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: AppSignal) => this.handleZomeSignal(signal));\n }\n\n\n /** Notify DVM parent */\n protected 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: AppSignal) {\n //console.log(\"handleZomeSignal()\", this.signalHandler, this.zomeName, signal.zome_name)\n if (this.signalHandler && signal.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.dnaId)\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"]}
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,\n Cell,\n AbstractConstructor,\n AgentId,\n dec64,\n TipProtocol,\n ZomeSignalProtocol,\n TipProtocolVariantEntry,\n ZomeSignalProtocolVariantEntry,\n TipProtocolVariantLink,\n ZomeSignalProtocolVariantLink,\n TipProtocolVariantApp, prettyDate, ZomeSignal, ZomeSignalProtocolType, EntryPulse, LinkPulse, ActionId, EntryId\n} from \"@ddd-qc/cell-proxy\";\nimport {ViewModel} from \"./ViewModel\";\nimport {AgentPubKeyB64, AppSignalCb, Timestamp, ZomeName} 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, 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\n signalHandler?: AppSignalCb;\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, zomeName?: ZomeName) {\n super();\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: AppSignal) => this.handleZomeSignal(signal));\n }\n\n\n /** Notify DVM parent */\n protected 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: AppSignal) {\n //console.log(\"handleZomeSignal()\", this.signalHandler, this.zomeName, signal.zome_name)\n if (this.signalHandler && signal.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.dnaId)\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"]}
@@ -1,6 +1,7 @@
1
1
  import { AppSignalCb, Timestamp } from "@holochain/client";
2
- import { AgentId, EntryPulse, LinkPulse, TipProtocol, ZomeSignalProtocol } from "@ddd-qc/cell-proxy";
2
+ import { ActionId, AgentId, AnyLinkableId, EntryId, EntryPulse, LinkPulse, TipProtocol, ZomeSignalProtocol } from "@ddd-qc/cell-proxy";
3
3
  import { ZomeViewModel } from "./ZomeViewModel";
4
+ import { ZomeIndex } from "@holochain/client/lib/hdk/link";
4
5
  /** */
5
6
  export interface CastLog {
6
7
  ts: Timestamp;
@@ -14,8 +15,8 @@ export declare abstract class ZomeViewModelWithSignals extends ZomeViewModel {
14
15
  private _castLogs;
15
16
  /** Methods to override */
16
17
  protected handleAppTip(_appTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined;
17
- protected handleEntryPulse(_pulse: EntryPulse, _from: AgentId): Promise<void>;
18
- protected handleLinkPulse(_pulse: LinkPulse, _from: AgentId): Promise<void>;
18
+ protected handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void>;
19
+ protected handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void>;
19
20
  /** */
20
21
  signalHandler?: AppSignalCb;
21
22
  /** */
@@ -29,3 +30,35 @@ export declare abstract class ZomeViewModelWithSignals extends ZomeViewModel {
29
30
  /** */
30
31
  dumpCastLogs(): void;
31
32
  }
33
+ export interface EntryPulseMat {
34
+ ah: ActionId;
35
+ state: string;
36
+ isNew: Boolean;
37
+ ts: Timestamp;
38
+ author: AgentId;
39
+ eh: EntryId;
40
+ entryType: string;
41
+ bytes: Uint8Array;
42
+ }
43
+ /** */
44
+ export declare function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat;
45
+ /** */
46
+ export declare function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse;
47
+ /** */
48
+ export interface LinkPulseMat {
49
+ author: AgentId;
50
+ base: AnyLinkableId;
51
+ target: AnyLinkableId;
52
+ timestamp: Timestamp;
53
+ zome_index: ZomeIndex;
54
+ link_type: string;
55
+ tag: Uint8Array;
56
+ create_link_hash: ActionId;
57
+ /** */
58
+ state: string;
59
+ isNew: Boolean;
60
+ }
61
+ /** */
62
+ export declare function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat;
63
+ /** */
64
+ export declare function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse;
@@ -1,4 +1,4 @@
1
- import { AgentId, prettyDate, ZomeSignalProtocolType } from "@ddd-qc/cell-proxy";
1
+ import { ActionId, AgentId, EntryId, getIndexByVariant, intoLinkableId, prettyDate, ZomeSignalProtocolType } from "@ddd-qc/cell-proxy";
2
2
  import { ZomeViewModel } from "./ZomeViewModel";
3
3
  /**
4
4
  * ZVM with support for ZomeSignals
@@ -41,11 +41,21 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
41
41
  }
42
42
  }
43
43
  if (ZomeSignalProtocolType.Entry in pulse) {
44
- all.push(this.handleEntryPulse(pulse.Entry, from));
44
+ const entryPulseMat = materializeEntryPulse(pulse.Entry, this.constructor.ENTRY_TYPES);
45
+ all.push(this.handleEntryPulse(entryPulseMat, from));
46
+ /** If new entry from this agent, broadcast to peers as tip */
47
+ if (entryPulseMat.isNew && from.b64 == this.cell.agentId.b64) {
48
+ all.push(this.broadcastTip({ Entry: pulse.Entry }));
49
+ }
45
50
  continue;
46
51
  }
47
52
  if (ZomeSignalProtocolType.Link in pulse) {
48
- all.push(this.handleLinkPulse(pulse.Link, from));
53
+ const linkPulseMat = materializeLinkPulse(pulse.Link, this.constructor.LINK_TYPES);
54
+ all.push(this.handleLinkPulse(linkPulseMat, from));
55
+ /** If new Link from this agent, broadcast to peers as tip */
56
+ if (linkPulseMat.isNew && from.b64 == this.cell.agentId.b64) {
57
+ all.push(this.broadcastTip({ Link: pulse.Link }));
58
+ }
49
59
  continue;
50
60
  }
51
61
  }
@@ -102,4 +112,76 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
102
112
  console.table(appSignals);
103
113
  }
104
114
  }
115
+ /** */
116
+ export function materializeEntryPulse(entryPulse, entryTypes) {
117
+ console.log("materializeEntryPulse()", entryTypes);
118
+ const stateStr = Object.keys(entryPulse.state)[0];
119
+ return {
120
+ ah: new ActionId(entryPulse.ah),
121
+ state: stateStr,
122
+ isNew: entryPulse.state[stateStr],
123
+ ts: entryPulse.ts,
124
+ author: new AgentId(entryPulse.author),
125
+ eh: new EntryId(entryPulse.eh),
126
+ entryType: entryTypes[entryPulse.def.entry_index],
127
+ bytes: entryPulse.bytes,
128
+ };
129
+ }
130
+ /** */
131
+ export function dematerializeEntryPulse(pulse, entryTypes) {
132
+ let state = {};
133
+ state[pulse.state] = pulse.isNew;
134
+ console.log("dematerializeEntryPulse()", state, entryTypes);
135
+ /** */
136
+ return {
137
+ ah: pulse.ah.hash,
138
+ state: state,
139
+ ts: pulse.ts,
140
+ author: pulse.author.hash,
141
+ eh: pulse.eh.hash,
142
+ def: {
143
+ entry_index: getIndexByVariant(entryTypes, pulse.entryType),
144
+ zome_index: 0,
145
+ visibility: "Public", // Should not be used, or grab actual value in EntryDefs
146
+ },
147
+ bytes: pulse.bytes,
148
+ };
149
+ }
150
+ /** */
151
+ export function materializeLinkPulse(linkPulse, linkTypes) {
152
+ console.log("materializeLinkPulse()", linkTypes);
153
+ const stateStr = Object.keys(linkPulse.state)[0];
154
+ return {
155
+ author: new AgentId(linkPulse.link.author),
156
+ base: intoLinkableId(linkPulse.link.base),
157
+ target: intoLinkableId(linkPulse.link.target),
158
+ timestamp: linkPulse.link.timestamp,
159
+ zome_index: linkPulse.link.zome_index,
160
+ link_type: linkTypes[linkPulse.link.link_type],
161
+ tag: linkPulse.link.tag,
162
+ create_link_hash: new ActionId(linkPulse.link.create_link_hash),
163
+ state: Object.keys(linkPulse.state)[0],
164
+ isNew: linkPulse.state[stateStr],
165
+ };
166
+ }
167
+ /** */
168
+ export function dematerializeLinkPulse(pulse, linkTypes) {
169
+ let state = {};
170
+ state[pulse.state] = pulse.isNew;
171
+ console.log("dematerializeLinkPulse()", state);
172
+ /** */
173
+ return {
174
+ state: state,
175
+ link: {
176
+ author: pulse.author.hash,
177
+ base: pulse.base.hash,
178
+ target: pulse.target.hash,
179
+ timestamp: pulse.timestamp,
180
+ zome_index: pulse.zome_index,
181
+ link_type: getIndexByVariant(linkTypes, pulse.link_type),
182
+ tag: pulse.tag,
183
+ create_link_hash: pulse.create_link_hash.hash,
184
+ }
185
+ };
186
+ }
105
187
  //# sourceMappingURL=ZomeViewModelWithSignals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, Timestamp, ZomeName} from \"@holochain/client\";\r\nimport {\r\n AgentId, CellProxy,\r\n EntryPulse, LinkPulse, prettyDate,\r\n TipProtocol, TipProtocolVariantApp, TipProtocolVariantEntry, TipProtocolVariantLink,\r\n ZomeSignal, ZomeSignalProtocol,\r\n ZomeSignalProtocolType, ZomeSignalProtocolVariantEntry, ZomeSignalProtocolVariantLink\r\n} from \"@ddd-qc/cell-proxy\";\r\nimport {AppSignal} from \"@holochain/client/lib/api/app/types\";\r\nimport {ZomeViewModel} from \"./ZomeViewModel\";\r\nimport {DnaViewModel} from \"./DnaViewModel\";\r\n\r\n/** */\r\nexport interface CastLog {\r\n ts: Timestamp,\r\n tip: TipProtocol,\r\n peers: AgentId[],\r\n}\r\n\r\n\r\n/**\r\n * ZVM with support for ZomeSignals\r\n */\r\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\r\n\r\n private _castLogs: CastLog[] = [];\r\n\r\n /** Methods to override */\r\n protected handleAppTip(_appTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\r\n protected async handleEntryPulse(_pulse: EntryPulse, _from: AgentId): Promise<void> {}\r\n protected async handleLinkPulse(_pulse: LinkPulse, _from: AgentId): Promise<void> {}\r\n\r\n\r\n /** */\r\n signalHandler?: AppSignalCb = this.mySignalHandler;\r\n\r\n\r\n /** */\r\n private mySignalHandler(appSignal: AppSignal): void {\r\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME\r\n console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\r\n if (appSignal.zome_name !== defaultZomeName) {\r\n return;\r\n }\r\n const zomeSignal = appSignal.payload as ZomeSignal;\r\n if (!(\"pulses\" in zomeSignal)) {\r\n return;\r\n }\r\n /*await*/ this.handleSignal(zomeSignal);\r\n }\r\n\r\n\r\n /** */\r\n private async handleSignal(signal: ZomeSignal): Promise<void> {\r\n const from = new AgentId(signal.from);\r\n let all = [];\r\n for (let pulse of signal.pulses) {\r\n /** -- Handle Signal according to type -- */\r\n /** Change tip to Entry or Link signal */\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\r\n if (!pulse) {\r\n continue;\r\n }\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n all.push(this.handleEntryPulse(pulse.Entry as EntryPulse, from));\r\n continue;\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n all.push(this.handleLinkPulse(pulse.Link as LinkPulse, from));\r\n continue;\r\n }\r\n }\r\n await Promise.all(all);\r\n this.notifySubscribers();\r\n }\r\n\r\n\r\n /** */\r\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\r\n const type = Object.keys(tip)[0];\r\n console.log(\"handleTip()\", type, from, tip);\r\n /* Handle tip according to its type */\r\n switch (type) {\r\n case \"Ping\":\r\n case \"Pong\":\r\n break;\r\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\r\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\r\n case \"App\":\r\n return this.handleAppTip((tip as TipProtocolVariantApp).App, from);\r\n break;\r\n }\r\n }\r\n\r\n\r\n /** */\r\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\r\n agents = agents? agents : this._dvmParent.livePeers;\r\n /** Skip if no recipients or sending to self only */\r\n const filtered = agents.filter((key) => key.b64 != this.cell.agentId.b64);\r\n const tipType = Object.keys(tip)[0];\r\n console.log(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.agentId.short);\r\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\r\n if (!filtered || filtered.length == 0) {\r\n console.log(\"broadcastTip() aborted: No recipients\")\r\n return;\r\n }\r\n /** Broadcast */\r\n const peers = agents.map((key) => key.hash);\r\n await this.zomeProxy.call('cast_tip', {tip, peers});\r\n /** Log */\r\n this._castLogs.push({ts: Date.now(), tip, peers: agents});\r\n }\r\n\r\n\r\n /** */\r\n dumpCastLogs() {\r\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n this._castLogs.map((log) => {\r\n const type = Object.keys(log.tip)[0];\r\n const payload = (log.tip as any)[type];\r\n appSignals.push({timestamp: prettyDate(new Date(log.ts)), type, payload, count: log.peers.length, first: log.peers[0]});\r\n });\r\n console.table(appSignals);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, Timestamp} from \"@holochain/client\";\r\nimport {\r\n ActionId,\r\n AgentId, AnyLinkableId, Dictionary, EntryDef, EntryId,\r\n EntryPulse, getIndexByVariant, intoLinkableId, LinkPulse, prettyDate, StateChange,\r\n TipProtocol, TipProtocolVariantApp, TipProtocolVariantEntry, TipProtocolVariantLink,\r\n ZomeSignal, ZomeSignalProtocol,\r\n ZomeSignalProtocolType, ZomeSignalProtocolVariantEntry, ZomeSignalProtocolVariantLink\r\n} from \"@ddd-qc/cell-proxy\";\r\nimport {AppSignal} from \"@holochain/client/lib/api/app/types\";\r\nimport {ZomeViewModel} from \"./ZomeViewModel\";\r\nimport {AnyLinkableHash, LinkType, ZomeIndex} from \"@holochain/client/lib/hdk/link\";\r\nimport {EntryVisibility} from \"@holochain/client/lib/hdk/entry\";\r\nimport {ActionHash, AgentPubKey} from \"@holochain/client/lib/types\";\r\n\r\n\r\n/** */\r\nexport interface CastLog {\r\n ts: Timestamp,\r\n tip: TipProtocol,\r\n peers: AgentId[],\r\n}\r\n\r\n\r\n/**\r\n * ZVM with support for ZomeSignals\r\n */\r\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\r\n\r\n private _castLogs: CastLog[] = [];\r\n\r\n /** Methods to override */\r\n protected handleAppTip(_appTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\r\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\r\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\r\n\r\n\r\n /** */\r\n signalHandler?: AppSignalCb = this.mySignalHandler;\r\n\r\n\r\n /** */\r\n private mySignalHandler(appSignal: AppSignal): void {\r\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME\r\n console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\r\n if (appSignal.zome_name !== defaultZomeName) {\r\n return;\r\n }\r\n const zomeSignal = appSignal.payload as ZomeSignal;\r\n if (!(\"pulses\" in zomeSignal)) {\r\n return;\r\n }\r\n /*await*/ this.handleSignal(zomeSignal);\r\n }\r\n\r\n\r\n /** */\r\n private async handleSignal(signal: ZomeSignal): Promise<void> {\r\n const from = new AgentId(signal.from);\r\n let all = [];\r\n for (let pulse of signal.pulses) {\r\n /** -- Handle Signal according to type -- */\r\n /** Change tip to Entry or Link signal */\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\r\n if (!pulse) {\r\n continue;\r\n }\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\r\n all.push(this.handleEntryPulse(entryPulseMat, from));\r\n /** If new entry from this agent, broadcast to peers as tip */\r\n if (entryPulseMat.isNew && from.b64 == this.cell.agentId.b64) {\r\n all.push(this.broadcastTip({Entry: pulse.Entry as EntryPulse}));\r\n }\r\n continue;\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\r\n all.push(this.handleLinkPulse(linkPulseMat, from));\r\n /** If new Link from this agent, broadcast to peers as tip */\r\n if (linkPulseMat.isNew && from.b64 == this.cell.agentId.b64) {\r\n all.push(this.broadcastTip({Link: pulse.Link as LinkPulse}));\r\n }\r\n continue;\r\n }\r\n }\r\n await Promise.all(all);\r\n this.notifySubscribers();\r\n }\r\n\r\n\r\n /** */\r\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\r\n const type = Object.keys(tip)[0];\r\n console.log(\"handleTip()\", type, from, tip);\r\n /* Handle tip according to its type */\r\n switch (type) {\r\n case \"Ping\":\r\n case \"Pong\":\r\n break;\r\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\r\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\r\n case \"App\":\r\n return this.handleAppTip((tip as TipProtocolVariantApp).App, from);\r\n break;\r\n }\r\n }\r\n\r\n\r\n /** */\r\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\r\n agents = agents? agents : this._dvmParent.livePeers;\r\n /** Skip if no recipients or sending to self only */\r\n const filtered = agents.filter((key) => key.b64 != this.cell.agentId.b64);\r\n const tipType = Object.keys(tip)[0];\r\n console.log(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.agentId.short);\r\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\r\n if (!filtered || filtered.length == 0) {\r\n console.log(\"broadcastTip() aborted: No recipients\")\r\n return;\r\n }\r\n /** Broadcast */\r\n const peers = agents.map((key) => key.hash);\r\n await this.zomeProxy.call('cast_tip', {tip, peers});\r\n /** Log */\r\n this._castLogs.push({ts: Date.now(), tip, peers: agents});\r\n }\r\n\r\n\r\n /** */\r\n dumpCastLogs() {\r\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n this._castLogs.map((log) => {\r\n const type = Object.keys(log.tip)[0];\r\n const payload = (log.tip as any)[type];\r\n appSignals.push({timestamp: prettyDate(new Date(log.ts)), type, payload, count: log.peers.length, first: log.peers[0]});\r\n });\r\n console.table(appSignals);\r\n }\r\n}\r\n\r\n\r\nexport interface EntryPulseMat {\r\n ah: ActionId,\r\n state: string,\r\n isNew: Boolean,\r\n ts: Timestamp,\r\n author: AgentId,\r\n eh: EntryId,\r\n entryType: string,\r\n bytes: Uint8Array,\r\n}\r\n\r\n\r\n/** */\r\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\r\n console.log(\"materializeEntryPulse()\", entryTypes);\r\n const stateStr = Object.keys(entryPulse.state)[0];\r\n return {\r\n ah: new ActionId(entryPulse.ah),\r\n state: stateStr,\r\n isNew: (entryPulse.state as any)[stateStr],\r\n ts: entryPulse.ts,\r\n author: new AgentId(entryPulse.author),\r\n eh: new EntryId(entryPulse.eh),\r\n entryType: entryTypes[entryPulse.def.entry_index],\r\n bytes: entryPulse.bytes,\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\r\n let state: Object = {};\r\n state[pulse.state] = pulse.isNew;\r\n console.log(\"dematerializeEntryPulse()\", state, entryTypes);\r\n /** */\r\n return {\r\n ah: pulse.ah.hash,\r\n state: state as StateChange,\r\n ts: pulse.ts,\r\n author: pulse.author.hash,\r\n eh: pulse.eh.hash,\r\n def: {\r\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\r\n zome_index: 0, // Should not be used\r\n visibility: \"Public\", // Should not be used, or grab actual value in EntryDefs\r\n },\r\n bytes: pulse.bytes,\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport interface LinkPulseMat {\r\n author: AgentId,\r\n base: AnyLinkableId;\r\n target: AnyLinkableId,\r\n timestamp: Timestamp,\r\n zome_index: ZomeIndex,\r\n link_type: string,\r\n tag: Uint8Array,\r\n create_link_hash: ActionId,\r\n /** */\r\n state: string,\r\n isNew: Boolean,\r\n}\r\n\r\n/** */\r\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\r\n console.log(\"materializeLinkPulse()\", linkTypes);\r\n const stateStr = Object.keys(linkPulse.state)[0];\r\n return {\r\n author: new AgentId(linkPulse.link.author),\r\n base: intoLinkableId(linkPulse.link.base),\r\n target: intoLinkableId(linkPulse.link.target),\r\n timestamp: linkPulse.link.timestamp,\r\n zome_index: linkPulse.link.zome_index,\r\n link_type: linkTypes[linkPulse.link.link_type],\r\n tag: linkPulse.link.tag,\r\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\r\n state: Object.keys(linkPulse.state)[0],\r\n isNew: (linkPulse.state as any)[stateStr],\r\n }\r\n}\r\n\r\n/** */\r\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\r\n let state: Object = {};\r\n state[pulse.state] = pulse.isNew;\r\n console.log(\"dematerializeLinkPulse()\", state);\r\n /** */\r\n return {\r\n state: state as StateChange,\r\n link: {\r\n author: pulse.author.hash,\r\n base: pulse.base.hash,\r\n target: pulse.target.hash,\r\n timestamp: pulse.timestamp,\r\n zome_index: pulse.zome_index,\r\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\r\n tag: pulse.tag,\r\n create_link_hash: pulse.create_link_hash.hash,\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,18 @@
1
+ import { LitElement } from "lit";
2
+ import { DnaViewModel } from "../DnaViewModel";
3
+ /**
4
+ *
5
+ */
6
+ export declare class DvmInspect extends LitElement {
7
+ /** -- Fields -- */
8
+ private _selectedZomeName;
9
+ private _allEntryDefs;
10
+ dnaViewModel: DnaViewModel;
11
+ /** -- Methods -- */
12
+ /** */
13
+ firstUpdated(): Promise<void>;
14
+ /** */
15
+ onZomeSelect(e: any): Promise<void>;
16
+ /** */
17
+ render(): import("lit-html").TemplateResult<1>;
18
+ }
@@ -0,0 +1,76 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html } from "lit";
3
+ import { state, property, customElement } from "lit/decorators.js";
4
+ /**
5
+ *
6
+ */
7
+ let DvmInspect = class DvmInspect extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ /** -- Fields -- */
11
+ this._selectedZomeName = "";
12
+ this._allEntryDefs = {};
13
+ }
14
+ /** -- Methods -- */
15
+ /** */
16
+ async firstUpdated() {
17
+ this._allEntryDefs = await this.dnaViewModel.fetchAllEntryDefs();
18
+ }
19
+ /** */
20
+ async onZomeSelect(e) {
21
+ //console.log("onZomeSelect() CALLED", e)
22
+ const zomeSelector = this.shadowRoot.getElementById("selectedZome");
23
+ this._selectedZomeName = zomeSelector.value;
24
+ }
25
+ /** */
26
+ render() {
27
+ const zomeOptions = this.dnaViewModel.zomeNames.map((zomeName) => {
28
+ return html `<option>${zomeName}</option>`;
29
+ });
30
+ let entryTypeOptions = null;
31
+ let linkTypeOptions = null;
32
+ let zfnOptions = null;
33
+ if (this._selectedZomeName) {
34
+ const zvm = this.dnaViewModel.getZomeViewModel(this._selectedZomeName);
35
+ entryTypeOptions = zvm.zomeProxy.entryTypes.map(types => html `<option>${types}</option>`);
36
+ linkTypeOptions = zvm.zomeProxy.linkTypes.map(types => html `<option>${types}</option>`);
37
+ zfnOptions = zvm.zomeProxy.fnNames.map(([_zomeName, zfn]) => html `<option>${zfn}</option>`);
38
+ }
39
+ //console.log({entryTypeOptions})
40
+ /** render all */
41
+ return html `
42
+ <span>Inspecting DNA <abbr title=${this.dnaViewModel.hcl}>${this.dnaViewModel.baseRoleName}</abbr>: </span>
43
+ <select name="selectedZome" id="selectedZome" @click=${this.onZomeSelect}>
44
+ ${zomeOptions}
45
+ </select>
46
+ <div style="display: flex; flex-direction: row; gap: 5px;">
47
+ <span>EntryTypes:</span>
48
+ <select name="selectedEntryType" id="selectedEntryType">
49
+ ${entryTypeOptions}
50
+ </select>
51
+ <span>LinkTypes:</span>
52
+ <select name="selectedLinkType" id="selectedLinkType">
53
+ ${linkTypeOptions}
54
+ </select>
55
+ <span>ZomeFunctions:</span>
56
+ <select name="selectedZfn" id="selectedZfn">
57
+ ${zfnOptions}
58
+ </select>
59
+ </div>
60
+ `;
61
+ }
62
+ };
63
+ __decorate([
64
+ state()
65
+ ], DvmInspect.prototype, "_selectedZomeName", void 0);
66
+ __decorate([
67
+ state()
68
+ ], DvmInspect.prototype, "_allEntryDefs", void 0);
69
+ __decorate([
70
+ property({ type: Object, attribute: false })
71
+ ], DvmInspect.prototype, "dnaViewModel", void 0);
72
+ DvmInspect = __decorate([
73
+ customElement("dvm-inspect")
74
+ ], DvmInspect);
75
+ export { DvmInspect };
76
+ //# sourceMappingURL=dvm-inspect.js.map
@@ -0,0 +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;AAKnE;;GAEG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QAEL,mBAAmB;QACF,sBAAiB,GAAG,EAAE,CAAA;QACtB,kBAAa,GAAqC,EAAE,CAAC;IAkExE,CAAC;IA5DC,oBAAoB;IAEpB,MAAM;IACN,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAA;IAClE,CAAC;IAGD,MAAM;IACN,KAAK,CAAC,YAAY,CAAC,CAAM;QACvB,yCAAyC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAW,CAAC,cAAc,CAAC,cAAc,CAAsB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC;IAC9C,CAAC;IAKD,MAAM;IACN,MAAM;QACJ,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,CAAC,CAAC;YACvE,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;QACD,iCAAiC;QAEjC,iBAAiB;QACjB,OAAO,IAAI,CAAA;2CAC4B,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY;6DACrC,IAAI,CAAC,YAAY;YAClE,WAAW;;;;;cAKT,gBAAgB;;;;cAIhB,eAAe;;;;gBAIb,UAAU;;;KAGrB,CAAA;IACH,CAAC;CACF,CAAA;AAnEkB;IAAhB,KAAK,EAAE;qDAA+B;AACtB;IAAhB,KAAK,EAAE;iDAA8D;AAGtE;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gDACjB;AAPjB,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAsEtB","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\nimport {Dictionary, EntryDef} from \"@ddd-qc/cell-proxy\";\n\n\n/**\n *\n */\n@customElement(\"dvm-inspect\")\nexport class DvmInspect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n @state() private _allEntryDefs: Dictionary<Dictionary<EntryDef>> = {};\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n /** */\n async firstUpdated() {\n this._allEntryDefs = await this.dnaViewModel.fetchAllEntryDefs()\n }\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 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 <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"]}
@@ -47,8 +47,12 @@ let EntryDefSelect = class EntryDefSelect extends LitElement {
47
47
  //console.log({zomeTypes})
48
48
  let entryTypeOptions = null;
49
49
  if (zomeTypes.length > 0) {
50
- entryTypeOptions = Object.entries(zomeTypes[0]).map(([_zomeName, pair]) => {
51
- return html `<option>${pair[0]}</option>`;
50
+ entryTypeOptions = Object.entries(zomeTypes[0]).map(([_zomeName, entryDef]) => {
51
+ let name = Object.keys(entryDef.id)[0];
52
+ if ("App" in entryDef.id) {
53
+ name = entryDef.id.App;
54
+ }
55
+ return html `<option>${name}</option>`;
52
56
  });
53
57
  }
54
58
  //console.log({entryTypeOptions})
@@ -1 +1 @@
1
- {"version":3,"file":"entry-def-select.js","sourceRoot":"","sources":["../../src/elements/entry-def-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\nimport {Dictionary} from \"@ddd-qc/cell-proxy\";\n\n\n/**\n *\n */\n@customElement(\"entry-def-select\")\nexport class EntryDefSelect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n @state() private _allEntryDefs: Dictionary<[string, boolean][]> = {};\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n async firstUpdated() {\n this._allEntryDefs = await this.dnaViewModel.fetchAllEntryDefs()\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 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._allEntryDefs).map(\n ([zomeName, _entryDef]) => {\n return html`<option>${zomeName}</option>`\n }\n )\n let zomeTypes = Object.entries(this._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, pair]) => {\n return html`<option>${pair[0]}</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":"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","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { state, property, customElement } from \"lit/decorators.js\";\nimport { DnaViewModel } from \"../DnaViewModel\";\nimport {Dictionary, EntryDef} from \"@ddd-qc/cell-proxy\";\n\n\n/**\n *\n */\n@customElement(\"entry-def-select\")\nexport class EntryDefSelect extends LitElement {\n\n /** -- Fields -- */\n @state() private _selectedZomeName = \"\"\n @state() private _allEntryDefs: Dictionary<Dictionary<EntryDef>> = {};\n\n @property({ type: Object, attribute: false })\n dnaViewModel!: DnaViewModel;\n\n\n /** -- Methods -- */\n\n async firstUpdated() {\n this._allEntryDefs = await this.dnaViewModel.fetchAllEntryDefs()\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 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._allEntryDefs).map(\n ([zomeName, _entryDef]) => {\n return html`<option>${zomeName}</option>`\n }\n )\n let zomeTypes = Object.entries(this._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"]}
package/dist/index.d.ts CHANGED
@@ -11,4 +11,5 @@ export * from "./definitions";
11
11
  export * from "./elements/entry-def-select";
12
12
  export * from "./elements/cell-context";
13
13
  export * from "./elements/view-cell-context";
14
+ export * from "./elements/dvm-inspect";
14
15
  export * from "@ddd-qc/cell-proxy";
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ export * from "./definitions";
11
11
  export * from "./elements/entry-def-select";
12
12
  export * from "./elements/cell-context";
13
13
  export * from "./elements/view-cell-context";
14
+ export * from "./elements/dvm-inspect";
14
15
  /* Include all from cell-proxy */
15
16
  export * from "@ddd-qc/cell-proxy";
16
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAE1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAE7C,iCAAiC;AACjC,cAAc,oBAAoB,CAAA","sourcesContent":["export * from \"./globals\";\n\nexport * from \"./HappViewModel\";\nexport * from \"./ZomeViewModel\";\nexport * from \"./ZomeViewModelWithSignals\";\nexport * from \"./DnaViewModel\";\nexport * from \"./ViewModel\";\nexport * from \"./ZomeElement\";\nexport * from \"./DnaElement\";\nexport * from \"./HappElement\";\nexport * from \"./definitions\";\n\nexport * from \"./elements/entry-def-select\";\nexport * from \"./elements/cell-context\";\nexport * from \"./elements/view-cell-context\";\n\n/* Include all from cell-proxy */\nexport * from \"@ddd-qc/cell-proxy\"\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAE1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AAGvC,iCAAiC;AACjC,cAAc,oBAAoB,CAAA","sourcesContent":["export * from \"./globals\";\n\nexport * from \"./HappViewModel\";\nexport * from \"./ZomeViewModel\";\nexport * from \"./ZomeViewModelWithSignals\";\nexport * from \"./DnaViewModel\";\nexport * from \"./ViewModel\";\nexport * from \"./ZomeElement\";\nexport * from \"./DnaElement\";\nexport * from \"./HappElement\";\nexport * from \"./definitions\";\n\nexport * from \"./elements/entry-def-select\";\nexport * from \"./elements/cell-context\";\nexport * from \"./elements/view-cell-context\";\nexport * from \"./elements/dvm-inspect\";\n\n\n/* Include all from cell-proxy */\nexport * from \"@ddd-qc/cell-proxy\"\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/lit-happ",
3
- "version": "0.25.1",
3
+ "version": "0.26.1",
4
4
  "description": "MVVM Framework for holochain apps using Lit",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@ddd-qc/cell-proxy": "file:../cell-proxy",
32
- "@holochain/client": "^0.18.0-dev.1",
32
+ "@holochain/client": "^0.18.0-dev.4",
33
33
  "@lit/context": "1.0.1",
34
34
  "lit": "3.0.2",
35
35
  "async-mutex": "0.4.0"