@ddd-qc/lit-happ 0.34.4 → 0.34.6
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.
- package/dist/DnaViewModel.d.ts +0 -1
- package/dist/DnaViewModel.d.ts.map +1 -1
- package/dist/DnaViewModel.js +1 -2
- package/dist/DnaViewModel.js.map +1 -1
- package/dist/ZomeViewModelWithSignals.d.ts +3 -3
- package/dist/ZomeViewModelWithSignals.d.ts.map +1 -1
- package/dist/ZomeViewModelWithSignals.js +14 -11
- package/dist/ZomeViewModelWithSignals.js.map +1 -1
- package/package.json +1 -1
package/dist/DnaViewModel.d.ts
CHANGED
|
@@ -34,7 +34,6 @@ export declare abstract class DnaViewModel extends DnaViewModel_base implements
|
|
|
34
34
|
private _allEntryDefs;
|
|
35
35
|
private _allZomeInfo;
|
|
36
36
|
private _dnaInfo;
|
|
37
|
-
protected _livePeers: AgentId[];
|
|
38
37
|
readonly hcl: HCL;
|
|
39
38
|
constructor(host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean);
|
|
40
39
|
get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnaViewModel.d.ts","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,eAAe,EAAC,MAAM,KAAK,CAAC;AACpC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EACL,cAAc,EACd,cAAc,EACd,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,OAAO,EAAgB,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,SAAS,EACT,QAAQ,EACR,GAAG,EACH,YAAY,EAAa,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAC9D,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAY,YAAY,EAAC,MAAM,aAAa,CAAC;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAM3D,UAAU,aAAa;IACrB,YAAY,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxC,cAAc,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAM3C;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,YAAY,GAAG;IAAC,aAAa,EAAE,mBAAmB,CAAA;CAAC,GAAG;IACxF,KAAI,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,cAAc,EAAE,UAAU,EAAE,OAAO,GAAG,YAAY,CAAC;CAC/G,CAAC;;SAnBG,CAAC;;;;;;;AA4BN,8BAAsB,YAAa,SAAQ,iBAAgC,YAAW,aAAa;
|
|
1
|
+
{"version":3,"file":"DnaViewModel.d.ts","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"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"}
|
package/dist/DnaViewModel.js
CHANGED
|
@@ -11,7 +11,6 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
|
|
|
11
11
|
this._allEntryDefs = {};
|
|
12
12
|
this._allZomeInfo = {};
|
|
13
13
|
this._dnaInfo = undefined;
|
|
14
|
-
this._livePeers = [];
|
|
15
14
|
if (typeof idOrHcl === 'object') {
|
|
16
15
|
this.baseRoleName = idOrHcl.baseRoleName;
|
|
17
16
|
this.hcl = idOrHcl;
|
|
@@ -43,7 +42,7 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
|
|
|
43
42
|
get allEntryDefs() { return this._allEntryDefs; }
|
|
44
43
|
get allZomeInfo() { return this._allZomeInfo; }
|
|
45
44
|
get dnaInfo() { return this._dnaInfo; }
|
|
46
|
-
get livePeers() {
|
|
45
|
+
get livePeers() { console.warn(" get livePeers() is missing an implementation in a concrete DnaViewModel."); return []; }
|
|
47
46
|
;
|
|
48
47
|
get zomeNames() { return Object.values(this._zomeNames); }
|
|
49
48
|
getZomeEntryDefs(zomeName) {
|
package/dist/DnaViewModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DnaViewModel.js","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAOtC,OAAO,EAAU,aAAa,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAGL,GAAG,EACW,SAAS,EACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAe,MAAM,aAAa,CAAC;AA4BpD,MAAM,OAAgB,YAAa,SAAQ,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAwBxE,YAA4B,IAAqB,EAAE,QAAkB,EAAE,OAA6B,EAAE,UAAmB;QACvH,KAAK,CAAC,UAAU,CAAC,CAAC;QADQ,SAAI,GAAJ,IAAI,CAAiB;QAhBvC,oBAAe,GAAgC,EAAE,CAAC;QAElD,eAAU,GAAe,EAAE,CAAC;QAE9B,kBAAa,GAAyC,EAAE,CAAC;QAEzD,iBAAY,GAA2B,EAAE,CAAC;QAC1C,aAAQ,GAAwB,SAAS,CAAC;QAGxC,eAAU,GAAc,EAAE,CAAC;QAQnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAI,IAAI,CAAC,WAAmC,CAAA;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,0BAA0B,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,GAAkB,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAKD,IAAI,YAAY,KAA2C,OAAO,IAAI,CAAC,aAAa,CAAA,CAAC,CAAC;IAEtF,IAAI,WAAW,KAA6B,OAAO,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;IAEtE,IAAI,OAAO,KAAc,OAAO,IAAI,CAAC,QAAS,CAAA,CAAC,CAAC;IAEhD,IAAI,SAAS,KAAgB,OAAO,IAAI,CAAC,UAAU,CAAA,CAAC,CAAC;IAAA,CAAC;IAEtD,IAAI,SAAS,KAAgB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA,CAAC;IAEpE,gBAAgB,CAAC,QAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,QAAkB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAcoB,cAAc,CAAC,IAAqB;QAEvD,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAGD,UAAU,KAA+B,OAAO,aAAa,CAAc,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC;IAAA,CAAC;IAIzI,KAAK,CAAC,kBAAkB,CAAC,OAAuB;QAC9C,IAAI,UAAU,GAA+B,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE/E,MAAM,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAM,CAAC,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IAOH,CAAC;IAIkB,aAAa,CAAC,QAAqB;QACpD,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAEhE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAID,UAAU,CAAC,IAAmB,IAAS,CAAC;IAI/B,KAAK,CAAC,8BAA8B;QAC3C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,GAAG,CAAC,8BAA8B,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAIQ,KAAK,CAAC,gCAAgC;QAC7C,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,GAAG,CAAC,gCAAgC,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAIO,KAAK,CAAC,eAAe;QAE3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAMxB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7E,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAM,CAAM,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;oBAChB,SAAS;gBACX,CAAC;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;IACH,CAAC;IAID,YAAY,CAAC,QAAmB;QAC9B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAID,cAAc,CAAC,QAAmB;QAChC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;gBAC7E,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;YACjF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAGD,SAAS;QACP,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;CACF","sourcesContent":["import {ZomeViewModel} from \"./ZomeViewModel\";\nimport {ReactiveElement} from \"lit\";\nimport {ViewModel} from \"./ViewModel\";\nimport {\n AdminWebsocket, FunctionName,\n InstalledAppId,\n ZomeName,\n} from \"@holochain/client\";\nimport {DnaModifiersOptions, ZvmDef} from \"./definitions\";\nimport {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n AppProxy,\n HCL,\n MyDictionary, CellMixin, AgentId, EntryDef, ZomeInfo, DnaInfo\n} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin, RoleSpecific} from \"./roleMixin\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\n\n\n//export type IDnaViewModel = _DnaViewModel & ICellDef & typeof RoleSpecific;\n\n/** Interface specific to DnaViewModel class */\ninterface IDnaViewModel {\n dumpCallLogs(zomeName?: ZomeName): void;\n dumpSignalLogs(zomeName?: ZomeName): void;\n /** zomeName -> (AppEntryName, isPublic)[] */\n //fetchAllEntryDefs(): Promise<void>;\n //get entryTypes(): Dictionary<[string, boolean][]>;\n //getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined;\n //getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined\n}\n\nexport type DvmConstructor = typeof RoleSpecific & {DNA_MODIFIERS: DnaModifiersOptions} & {\n new(host: ReactiveElement, proxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean): DnaViewModel;\n};\n\n\n/**\n * Abstract ViewModel for a DNA.\n * It holds the CellProxy and all the ZomeViewModels of the DNA.\n * It is expected to derive this class for each DNA and add extra logic at the DNA level.\n * TODO: Split into RoleViewModel and CellViewModel (e.g. have call logs separated by role)\n */\nexport abstract class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) implements IDnaViewModel {\n /** -- Static -- */\n /* private */ static ZVM_DEFS: ZvmDef[];\n static DNA_MODIFIERS: DnaModifiersOptions;\n\n /** -- Fields -- */\n protected _cellProxy: CellProxy;\n /* ZomeName -> Zvm */\n protected _zomeViewModels: MyDictionary<ZomeViewModel> = {};\n /* ZvmCtorName -> ZomeName */\n protected _zomeNames: ZomeName[] = [];\n /* ZomeName -> (EntryName -> EntryDef) */\n private _allEntryDefs: MyDictionary<MyDictionary<EntryDef>> = {};\n /* ZomeName -> ZomeInfo */\n private _allZomeInfo: MyDictionary<ZomeInfo> = {};\n private _dnaInfo: DnaInfo | undefined = undefined;\n\n /** list of \"known\" peers in this DNA */\n protected _livePeers: AgentId[] = [];\n\n public readonly hcl: HCL;\n\n\n /** Ctor */\n constructor(public readonly host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean) {\n super(isMainView);\n if (typeof idOrHcl === 'object') {\n this.baseRoleName = idOrHcl.baseRoleName;\n this.hcl = idOrHcl;\n } else {\n this.hcl = new HCL(idOrHcl, this.baseRoleName);\n }\n const dvmCtor = (this.constructor as typeof DnaViewModel)\n const zvmDefs = dvmCtor.ZVM_DEFS;\n if (zvmDefs.length == 0) {\n throw Error(`DNA ${this.baseRoleName} does not have any zomes`);\n }\n this._cellProxy = appProxy.getCellProxy(this.hcl); // WARN can throw error\n this._cell = this._cellProxy.cell;\n console.log(`DVM.ctor of ${this.baseRoleName}`, this._cellProxy.cell);\n /** Create all ZVMs for this DNA */\n for (const zvmDef of zvmDefs) {\n let zvm: ZomeViewModel;\n if (Array.isArray(zvmDef)) {\n zvm = new zvmDef[0](this._cellProxy, this, isMainView, zvmDef[1]);\n } else {\n zvm = new zvmDef(this._cellProxy, this, isMainView);\n }\n // TODO check zvm.zomeName exists in _cellProxy\n this._zomeViewModels[zvm.zomeName] = zvm;\n this._zomeNames.push(zvm.zomeName);\n }\n this.provideContext(host); // TODO move this to host.connectedCallback? e.g. change ViewModel to a ReactiveController\n }\n\n\n /** -- Getters -- */\n\n get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>> { return this._allEntryDefs }\n\n get allZomeInfo(): MyDictionary<ZomeInfo> { return this._allZomeInfo }\n\n get dnaInfo(): DnaInfo { return this._dnaInfo! }\n\n get livePeers(): AgentId[] { return this._livePeers };\n\n get zomeNames(): ZomeName[] {return Object.values(this._zomeNames);}\n\n getZomeEntryDefs(zomeName: ZomeName): MyDictionary<EntryDef> {\n const maybe = this._allEntryDefs[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n getZomeViewModel(zomeName: ZomeName): ZomeViewModel {\n const maybe = this._zomeViewModels[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n // getZomeName(zvm: typeof ZomeViewModel): ZomeName {\n // console.log(\"getZomeName()\", zvm.constructor.name);\n // const maybe = this._zomeViewModels[zvm.constructor.name];\n // if (!maybe) {\n // throw Error(\"Unknown zome in DVM: \" + zvm.DEFAULT_ZOME_NAME + \". Available zomes: \" + this.zomeNames.join(', '));\n // }\n // return maybe;\n // }\n\n /** -- Methods -- */\n\n /** Override so we can provide context of all zvms */\n /*private*/ override provideContext(host: ReactiveElement): void {\n //console.log(\"DVM.provideContext()\", host, this)\n super.provideContext(host);\n for (const zvm of Object.values(this._zomeViewModels)) {\n zvm.provideContext(host)\n }\n }\n\n\n getContext(): Context<unknown, unknown> {return createContext<typeof this>('dvm/' + this.cell.name + \"/\" + this.cell.address.dnaId.b64)};\n\n\n /** */\n async authorizeZomeCalls(adminWs: AdminWebsocket): Promise<void> {\n let allFnNames: [ZomeName, FunctionName][] = [];\n for (const [_zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n allFnNames = allFnNames.concat(zvm.zomeProxy.fnNames)\n }\n //const grantedFns = { [GrantedFunctionsType.Listed]: allFnNames }\n try {\n console.log(\"authorizeSigningCredentials. cell_id = \" + this.cell.address.str);\n //await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);\n await adminWs.authorizeSigningCredentials(this.cell.address.intoId());\n console.log(\"authorizeSigningCredentials: \" + this.cell.hcl().toString(), allFnNames);\n } catch(e) {\n console.warn(\"authorizeSigningCredentials FAILED.\", e);\n }\n // this._signingProps = getSigningCredentials(this.cellId);\n // console.log({signProps: this._signingProps})\n //\n // for (const [zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n // zvm.zomeProxy.setSigningProps(this._signingProps);\n // }\n }\n\n\n /** Not async on purpose as we except this to be long. Post-processing should be done via an observer pattern. */\n protected override probeAllInner(strategy: GetStrategy): void {\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n //console.log(\"Dvm.probeAll()\", name)\n zvm.probeAll(strategy);\n }\n }\n\n\n /** */\n zvmChanged(_zvm: ZomeViewModel): void {}\n\n\n /** */\n override async initializePerspectiveFromLocal(): Promise<void> {\n await this.queryAllDnaData();\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromLocal();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n override async initializePerspectiveFromNetwork(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromNetwork();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n private async queryAllDnaData(): Promise<void> {\n /** DnaInfo */\n const dnaInfo = await this._cellProxy.callDnaInfo(this.zomeNames[0]!);\n this._dnaInfo = dnaInfo;\n // /** ZomeInfo from dnaInfo */\n // for (const zomeName of dnaInfo.zome_names) {\n // this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n // }\n /** ZomeInfo from known Zomes */\n for (const zomeName of this.zomeNames) {\n this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n }\n /** EntryDefs */\n for (const zomeName of Object.keys(this._allZomeInfo)) {\n try {\n this._allEntryDefs[zomeName] = await this._cellProxy.callEntryDefs(zomeName);\n } catch(e: any) {\n if (e.throttled) {\n continue;\n }\n return Promise.reject(e);\n }\n }\n }\n\n\n /** */\n dumpCallLogs(zomeName?: ZomeName): void {\n this._cellProxy.dumpCallLogs(zomeName);\n }\n\n\n /** */\n dumpSignalLogs(zomeName?: ZomeName): void {\n console.warn(\"Dumping signals in DVM\", this.baseRoleName);\n if (zomeName == undefined) {\n for (const [name, zvm] of Object.entries(this._zomeViewModels)) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == name)\n zvm.dumpSignalLogs(logs);\n }\n return;\n }\n if (this._zomeViewModels[zomeName]) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == zomeName)\n this._zomeViewModels[zomeName]!.dumpSignalLogs(logs);\n } else {\n console.error(`Unknown zome ${zomeName} in DVM ${this.baseRoleName}`)\n }\n }\n\n /** */\n purgeLogs() {\n this._cellProxy.purgeLogs();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DnaViewModel.js","sourceRoot":"","sources":["../src/DnaViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {ZomeViewModel} from \"./ZomeViewModel\";\nimport {ReactiveElement} from \"lit\";\nimport {ViewModel} from \"./ViewModel\";\nimport {\n AdminWebsocket, FunctionName,\n InstalledAppId,\n ZomeName,\n} from \"@holochain/client\";\nimport {DnaModifiersOptions, ZvmDef} from \"./definitions\";\nimport {Context, createContext} from \"@lit/context\";\nimport {\n CellProxy,\n AppProxy,\n HCL,\n MyDictionary, CellMixin, AgentId, EntryDef, ZomeInfo, DnaInfo\n} from \"@ddd-qc/cell-proxy\";\nimport {RoleMixin, RoleSpecific} from \"./roleMixin\";\nimport {GetStrategy} from \"@holochain-open-dev/core-types\";\n\n\n//export type IDnaViewModel = _DnaViewModel & ICellDef & typeof RoleSpecific;\n\n/** Interface specific to DnaViewModel class */\ninterface IDnaViewModel {\n dumpCallLogs(zomeName?: ZomeName): void;\n dumpSignalLogs(zomeName?: ZomeName): void;\n /** zomeName -> (AppEntryName, isPublic)[] */\n //fetchAllEntryDefs(): Promise<void>;\n //get entryTypes(): Dictionary<[string, boolean][]>;\n //getZomeEntryDefs(zomeName: ZomeName): [string, boolean][] | undefined;\n //getZomeViewModel(zomeName: ZomeName): ZomeViewModel | undefined\n}\n\nexport type DvmConstructor = typeof RoleSpecific & {DNA_MODIFIERS: DnaModifiersOptions} & {\n new(host: ReactiveElement, proxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean): DnaViewModel;\n};\n\n\n/**\n * Abstract ViewModel for a DNA.\n * It holds the CellProxy and all the ZomeViewModels of the DNA.\n * It is expected to derive this class for each DNA and add extra logic at the DNA level.\n * TODO: Split into RoleViewModel and CellViewModel (e.g. have call logs separated by role)\n */\nexport abstract class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) implements IDnaViewModel {\n /** -- Static -- */\n /* private */ static ZVM_DEFS: ZvmDef[];\n static DNA_MODIFIERS: DnaModifiersOptions;\n\n /** -- Fields -- */\n protected _cellProxy: CellProxy;\n /* ZomeName -> Zvm */\n protected _zomeViewModels: MyDictionary<ZomeViewModel> = {};\n /* ZvmCtorName -> ZomeName */\n protected _zomeNames: ZomeName[] = [];\n /* ZomeName -> (EntryName -> EntryDef) */\n private _allEntryDefs: MyDictionary<MyDictionary<EntryDef>> = {};\n /* ZomeName -> ZomeInfo */\n private _allZomeInfo: MyDictionary<ZomeInfo> = {};\n private _dnaInfo: DnaInfo | undefined = undefined;\n\n public readonly hcl: HCL;\n\n\n /** Ctor */\n constructor(public readonly host: ReactiveElement, appProxy: AppProxy, idOrHcl: HCL | InstalledAppId, isMainView: boolean) {\n super(isMainView);\n if (typeof idOrHcl === 'object') {\n this.baseRoleName = idOrHcl.baseRoleName;\n this.hcl = idOrHcl;\n } else {\n this.hcl = new HCL(idOrHcl, this.baseRoleName);\n }\n const dvmCtor = (this.constructor as typeof DnaViewModel)\n const zvmDefs = dvmCtor.ZVM_DEFS;\n if (zvmDefs.length == 0) {\n throw Error(`DNA ${this.baseRoleName} does not have any zomes`);\n }\n this._cellProxy = appProxy.getCellProxy(this.hcl); // WARN can throw error\n this._cell = this._cellProxy.cell;\n console.log(`DVM.ctor of ${this.baseRoleName}`, this._cellProxy.cell);\n /** Create all ZVMs for this DNA */\n for (const zvmDef of zvmDefs) {\n let zvm: ZomeViewModel;\n if (Array.isArray(zvmDef)) {\n zvm = new zvmDef[0](this._cellProxy, this, isMainView, zvmDef[1]);\n } else {\n zvm = new zvmDef(this._cellProxy, this, isMainView);\n }\n // TODO check zvm.zomeName exists in _cellProxy\n this._zomeViewModels[zvm.zomeName] = zvm;\n this._zomeNames.push(zvm.zomeName);\n }\n this.provideContext(host); // TODO move this to host.connectedCallback? e.g. change ViewModel to a ReactiveController\n }\n\n\n /** -- Getters -- */\n\n get allEntryDefs(): MyDictionary<MyDictionary<EntryDef>> { return this._allEntryDefs }\n\n get allZomeInfo(): MyDictionary<ZomeInfo> { return this._allZomeInfo }\n\n get dnaInfo(): DnaInfo { return this._dnaInfo! }\n\n get livePeers(): AgentId[] { console.warn(\" get livePeers() is missing an implementation in a concrete DnaViewModel.\"); return [];};\n\n get zomeNames(): ZomeName[] {return Object.values(this._zomeNames);}\n\n getZomeEntryDefs(zomeName: ZomeName): MyDictionary<EntryDef> {\n const maybe = this._allEntryDefs[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n getZomeViewModel(zomeName: ZomeName): ZomeViewModel {\n const maybe = this._zomeViewModels[zomeName];\n if (!maybe) {\n throw Error(\"Unknown zome in DVM: \" + zomeName + \". Available zomes: \" + this.zomeNames.join(', '));\n }\n return maybe;\n }\n\n // getZomeName(zvm: typeof ZomeViewModel): ZomeName {\n // console.log(\"getZomeName()\", zvm.constructor.name);\n // const maybe = this._zomeViewModels[zvm.constructor.name];\n // if (!maybe) {\n // throw Error(\"Unknown zome in DVM: \" + zvm.DEFAULT_ZOME_NAME + \". Available zomes: \" + this.zomeNames.join(', '));\n // }\n // return maybe;\n // }\n\n /** -- Methods -- */\n\n /** Override so we can provide context of all zvms */\n /*private*/ override provideContext(host: ReactiveElement): void {\n //console.log(\"DVM.provideContext()\", host, this)\n super.provideContext(host);\n for (const zvm of Object.values(this._zomeViewModels)) {\n zvm.provideContext(host)\n }\n }\n\n\n getContext(): Context<unknown, unknown> {return createContext<typeof this>('dvm/' + this.cell.name + \"/\" + this.cell.address.dnaId.b64)};\n\n\n /** */\n async authorizeZomeCalls(adminWs: AdminWebsocket): Promise<void> {\n let allFnNames: [ZomeName, FunctionName][] = [];\n for (const [_zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n allFnNames = allFnNames.concat(zvm.zomeProxy.fnNames)\n }\n //const grantedFns = { [GrantedFunctionsType.Listed]: allFnNames }\n try {\n console.log(\"authorizeSigningCredentials. cell_id = \" + this.cell.address.str);\n //await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);\n await adminWs.authorizeSigningCredentials(this.cell.address.intoId());\n console.log(\"authorizeSigningCredentials: \" + this.cell.hcl().toString(), allFnNames);\n } catch(e) {\n console.warn(\"authorizeSigningCredentials FAILED.\", e);\n }\n // this._signingProps = getSigningCredentials(this.cellId);\n // console.log({signProps: this._signingProps})\n //\n // for (const [zomeName, zvm] of Object.entries(this._zomeViewModels)) {\n // zvm.zomeProxy.setSigningProps(this._signingProps);\n // }\n }\n\n\n /** Not async on purpose as we except this to be long. Post-processing should be done via an observer pattern. */\n protected override probeAllInner(strategy: GetStrategy): void {\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n //console.log(\"Dvm.probeAll()\", name)\n zvm.probeAll(strategy);\n }\n }\n\n\n /** */\n zvmChanged(_zvm: ZomeViewModel): void {}\n\n\n /** */\n override async initializePerspectiveFromLocal(): Promise<void> {\n await this.queryAllDnaData();\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromLocal();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n override async initializePerspectiveFromNetwork(): Promise<void> {\n const all = [];\n for (const [_name, zvm] of Object.entries(this._zomeViewModels)) {\n const p = zvm.initializePerspectiveFromNetwork();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n private async queryAllDnaData(): Promise<void> {\n /** DnaInfo */\n const dnaInfo = await this._cellProxy.callDnaInfo(this.zomeNames[0]!);\n this._dnaInfo = dnaInfo;\n // /** ZomeInfo from dnaInfo */\n // for (const zomeName of dnaInfo.zome_names) {\n // this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n // }\n /** ZomeInfo from known Zomes */\n for (const zomeName of this.zomeNames) {\n this._allZomeInfo[zomeName] = await this._cellProxy.callZomeInfo(zomeName);\n }\n /** EntryDefs */\n for (const zomeName of Object.keys(this._allZomeInfo)) {\n try {\n this._allEntryDefs[zomeName] = await this._cellProxy.callEntryDefs(zomeName);\n } catch(e: any) {\n if (e.throttled) {\n continue;\n }\n return Promise.reject(e);\n }\n }\n }\n\n\n /** */\n dumpCallLogs(zomeName?: ZomeName): void {\n this._cellProxy.dumpCallLogs(zomeName);\n }\n\n\n /** */\n dumpSignalLogs(zomeName?: ZomeName): void {\n console.warn(\"Dumping signals in DVM\", this.baseRoleName);\n if (zomeName == undefined) {\n for (const [name, zvm] of Object.entries(this._zomeViewModels)) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == name)\n zvm.dumpSignalLogs(logs);\n }\n return;\n }\n if (this._zomeViewModels[zomeName]) {\n const logs = this._cellProxy.signalLogs.filter((log) => log.zomeName == zomeName)\n this._zomeViewModels[zomeName]!.dumpSignalLogs(logs);\n } else {\n console.error(`Unknown zome ${zomeName} in DVM ${this.baseRoleName}`)\n }\n }\n\n /** */\n purgeLogs() {\n this._cellProxy.purgeLogs();\n }\n}\n"]}
|
|
@@ -17,9 +17,9 @@ export declare abstract class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
17
17
|
private mySignalHandler;
|
|
18
18
|
private handleSignal;
|
|
19
19
|
private handleTip;
|
|
20
|
-
synchronizeValueTip(key: string, value: string, recipient: AgentId, zomeName: string):
|
|
21
|
-
synchronizeCustomTip(appTip: Uint8Array, recipient: AgentId, zomeName: string):
|
|
22
|
-
broadcastTip(tip: TipProtocol, agents?: Array<AgentId>):
|
|
20
|
+
synchronizeValueTip(key: string, value: string, recipient: AgentId, zomeName: string): void;
|
|
21
|
+
synchronizeCustomTip(appTip: Uint8Array, recipient: AgentId, zomeName: string): void;
|
|
22
|
+
broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): void;
|
|
23
23
|
dumpCastLogs(): void;
|
|
24
24
|
private tip2Log;
|
|
25
25
|
dumpSignalLogs(signalLogs: SignalLog[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZomeViewModelWithSignals.d.ts","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAgC,MAAM,mBAAmB,CAAC;AACjH,OAAO,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EAGV,OAAO,EACP,UAAU,EAGV,SAAS,EAGT,SAAS,EAGT,WAAW,EAIX,kBAAkB,EAMlB,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAK9C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,SAAS,CAAC;IACd,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC;AAMD,8BAAsB,wBAAyB,SAAQ,aAAa;IAElE,OAAO,CAAC,SAAS,CAAiB;IAGlC,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;IACjG,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;cACtF,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cACtE,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,aAAa,CAAC,EAAE,QAAQ,CAAwB;IAIzD,OAAO,CAAC,eAAe;YAmBT,YAAY;IAqC1B,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"ZomeViewModelWithSignals.d.ts","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
41
41
|
const entryPulseMat = materializeEntryPulse(pulse.Entry, this.constructor.ENTRY_TYPES);
|
|
42
42
|
all.push(this.handleEntryPulse(entryPulseMat, from));
|
|
43
43
|
if (entryPulseMat.isNew && this.cell.address.agentId.equals(from) && entryPulseMat.visibility == "Public") {
|
|
44
|
-
|
|
44
|
+
this.broadcastTip({ Entry: pulse.Entry });
|
|
45
45
|
}
|
|
46
46
|
continue;
|
|
47
47
|
}
|
|
@@ -49,7 +49,7 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
49
49
|
const linkPulseMat = materializeLinkPulse(pulse.Link, this.constructor.LINK_TYPES);
|
|
50
50
|
all.push(this.handleLinkPulse(linkPulseMat, from));
|
|
51
51
|
if (linkPulseMat.isNew && this.cell.address.agentId.equals(from)) {
|
|
52
|
-
|
|
52
|
+
this.broadcastTip({ Link: pulse.Link });
|
|
53
53
|
}
|
|
54
54
|
continue;
|
|
55
55
|
}
|
|
@@ -81,25 +81,27 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
81
81
|
}
|
|
82
82
|
return undefined;
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
synchronizeValueTip(key, value, recipient, zomeName) {
|
|
85
85
|
if (!this.isMainView) {
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
88
|
console.debug(`synchronizeValueTip() Sending to`, recipient, zomeName);
|
|
89
89
|
const tip = { AppValue: [key, value] };
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
this.zomeProxy.call('synchronize_tip', { tip, recipient: recipient.hash, zomeName })
|
|
91
|
+
.then((response) => this._castLogs.push({ ts: Date.now(), tip, peers: [recipient], response }))
|
|
92
|
+
.catch((e) => { console.warn("zome call to synchronize_tip() failed: ", e); });
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
+
synchronizeCustomTip(appTip, recipient, zomeName) {
|
|
94
95
|
if (!this.isMainView) {
|
|
95
96
|
return;
|
|
96
97
|
}
|
|
97
98
|
console.debug(`synchronizeCustomTip() Sending to`, recipient, zomeName);
|
|
98
99
|
const tip = { AppCustom: appTip };
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
this.zomeProxy.call('synchronize_tip', { tip, recipient: recipient.hash, zomeName })
|
|
101
|
+
.then((response) => this._castLogs.push({ ts: Date.now(), tip, peers: [recipient], response }))
|
|
102
|
+
.catch((e) => { console.warn("zome call to synchronize_tip() failed: ", e); });
|
|
101
103
|
}
|
|
102
|
-
|
|
104
|
+
broadcastTip(tip, agents) {
|
|
103
105
|
if (!this.isMainView) {
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
@@ -112,8 +114,9 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
112
114
|
return;
|
|
113
115
|
}
|
|
114
116
|
const peers = agents.map((key) => key.hash);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
this.zomeProxy.call('cast_tip', { tip, peers })
|
|
118
|
+
.then(() => this._castLogs.push({ ts: Date.now(), tip, peers: agents, response: undefined }))
|
|
119
|
+
.catch((e) => { console.warn("zome call to cast_tip() failed: ", e); });
|
|
117
120
|
}
|
|
118
121
|
dumpCastLogs() {
|
|
119
122
|
console.warn(`Tips sent from zome "${this.zomeName}"`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {SignalCb, EntryVisibility, Timestamp, ZomeIndex, Signal, SignalType, AppSignal} from \"@holochain/client\";\nimport {\n ActionId,\n AgentId,\n LinkableId,\n anyToB64,\n enc64,\n EntryId,\n EntryPulse,\n getIndexByVariant,\n intoLinkableId,\n LinkPulse,\n prettyDate,\n prettyState,\n SignalLog,\n AppSignalType,\n StateChange,\n TipProtocol,\n TipProtocolVariantEntry,\n TipProtocolVariantLink,\n ZomeSignal,\n ZomeSignalProtocol,\n ZomeSignalProtocolType,\n ZomeSignalProtocolVariantEntry,\n ZomeSignalProtocolVariantLink,\n TipProtocolType,\n intoAnyId,\n ValidatedBy, SynchronizeTipInput, TipProtocolVariantAppValue, TipProtocolVariantAppCustom,\n} from \"@ddd-qc/cell-proxy\";\nimport {ZomeViewModel} from \"./ZomeViewModel\";\nimport {decode} from \"@msgpack/msgpack\";\n\n\n/** */\nexport interface CastLog {\n ts: Timestamp,\n tip: TipProtocol,\n peers: AgentId[],\n response: Timestamp | undefined,\n}\n\n\n/**\n * ZVM with support for ZomeSignals\n */\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\n\n private _castLogs: CastLog[] = [];\n\n /** Methods to override */\n protected handleCustomTip(_customTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected handleValueTip(_key: string, _value: string, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\n\n\n /** */\n override signalHandler?: SignalCb = this.mySignalHandler;\n\n\n /** */\n private mySignalHandler(signal: Signal): void {\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME;\n //console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n if (appSignal.zome_name !== defaultZomeName) {\n return;\n }\n const zomeSignal = appSignal.payload as ZomeSignal;\n if (!(\"pulses\" in zomeSignal)) {\n return;\n }\n /*await*/ this.handleSignal(zomeSignal);\n }\n\n\n /** */\n private async handleSignal(signal: ZomeSignal): Promise<void> {\n const from = new AgentId(signal.from);\n let all = [];\n for (let pulse of signal.pulses) {\n /** -- Handle Signal according to type -- */\n /** Change tip to Entry or Link signal */\n if (ZomeSignalProtocolType.Tip in pulse) {\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\n if (!pulse) {\n continue;\n }\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\n all.push(this.handleEntryPulse(entryPulseMat, from));\n /** If new entry from this agent, broadcast to peers as tip */\n if (entryPulseMat.isNew && this.cell.address.agentId.equals(from) && entryPulseMat.visibility == \"Public\") {\n all.push(this.broadcastTip({Entry: pulse.Entry as EntryPulse}));\n }\n continue;\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\n all.push(this.handleLinkPulse(linkPulseMat, from));\n /** If new Link from this agent, broadcast to peers as tip */\n if (linkPulseMat.isNew && this.cell.address.agentId.equals(from)) {\n all.push(this.broadcastTip({Link: pulse.Link as LinkPulse}));\n }\n continue;\n }\n }\n await Promise.all(all);\n this.notifySubscribers();\n }\n\n\n /** */\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\n const type = Object.keys(tip)[0];\n console.log(\"handleTip()\", type, from, tip);\n /* Handle tip according to its type */\n switch (type) {\n case \"Ping\":\n case \"Pong\":\n break;\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\n case \"AppValue\":\n const key = (tip as TipProtocolVariantAppValue).AppValue[0];\n const value = (tip as TipProtocolVariantAppValue).AppValue[1];\n return this.handleValueTip(key, value, from);\n break;\n case \"AppCustom\":\n return this.handleCustomTip((tip as TipProtocolVariantAppCustom).AppCustom, from);\n break;\n }\n return undefined;\n }\n\n\n /** */\n async synchronizeValueTip(key: string, value: string, recipient: AgentId, zomeName: string): Promise<void> {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeValueTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppValue: [key, value]};\n const response = await this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput);\n this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response});\n }\n\n\n /** */\n async synchronizeCustomTip(appTip: Uint8Array, recipient: AgentId, zomeName: string): Promise<void> {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeCustomTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppCustom: appTip};\n await this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput);\n this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response: undefined});\n }\n\n\n /** Cast Tip to all known livePeers */\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\n /** Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n agents = agents? agents : this._dvmParent.livePeers;\n /** Skip if no recipients or sending to self only */\n const filtered = agents.filter((key) => key.b64 != this.cell.address.agentId.b64);\n const tipType = Object.keys(tip)[0];\n console.debug(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.address.agentId.short);\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\n if (!filtered || filtered.length == 0) {\n console.debug(\"broadcastTip() aborted: No recipients\")\n return;\n }\n /** Broadcast */\n const peers = agents.map((key) => key.hash);\n await this.zomeProxy.call('cast_tip', {tip, peers});\n /** Log */\n this._castLogs.push({ts: Date.now(), tip, peers: agents, response: undefined});\n }\n\n\n /** */\n dumpCastLogs() {\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n this._castLogs.map((log) => {\n const type = Object.keys(log.tip)[0]!;\n const payload = (log.tip as any)[type];\n appSignals.push({\n timestamp: prettyDate(new Date(log.ts)),\n type,\n payload,\n count: log.peers.length,\n first: log.peers[0]? log.peers[0].short : undefined,\n response: log.response });\n });\n console.table(appSignals);\n }\n\n\n private tip2Log(tip: TipProtocol, type: TipProtocolType): [string, string] {\n switch (type) {\n case TipProtocolType.Ping:\n case TipProtocolType.Pong: return [\"\", \"\"]; break;\n case TipProtocolType.AppValue: {\n const [key, value] = (tip as TipProtocolVariantAppValue).AppValue;\n return [key, value];\n }\n break;\n case TipProtocolType.AppCustom: {\n const app = (tip as TipProtocolVariantAppCustom).AppCustom;\n return [\"\" + app.length, \"\"];\n }\n break;\n case TipProtocolType.Entry: {\n const entryPulse = (tip as TipProtocolVariantEntry).Entry;\n return [intoAnyId(entryPulse.ah).short, intoAnyId(entryPulse.eh).short];\n }\n break;\n case TipProtocolType.Link: {\n const linkPulse = (tip as TipProtocolVariantLink).Link;\n return [intoAnyId(linkPulse.link.base).short, intoAnyId(linkPulse.link.target).short];\n }\n break;\n }\n }\n\n\n /** */\n override dumpSignalLogs(signalLogs: SignalLog[]) {\n this.dumpCastLogs();\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n signalLogs\n .filter((log) => log.type == AppSignalType.Zome)\n .map((log) => {\n const signal = log.zomeSignal as ZomeSignal;\n const pulses = signal.pulses as ZomeSignalProtocol[];\n const timestamp = prettyDate(new Date(log.ts));\n const from: string = enc64(signal.from) == this.cell.address.agentId.b64? \"self\" : new AgentId(signal.from).short;\n for (const pulse of pulses) {\n if (ZomeSignalProtocolType.Tip in pulse) {\n const tip: TipProtocol = pulse.Tip;\n const type = Object.keys(tip)[0];\n const [ah_base, eh_target] = this.tip2Log(tip, type as TipProtocolType);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip), ah_base, eh_target});\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\n const typedEntry = decode(entryPulse.bytes);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Entry, state: prettyState(pulse.Entry.state), type: entryPulse.entryType, payload: anyToB64(typedEntry), ah_base: entryPulse.ah.short, eh_target: entryPulse.eh.short});\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Link, state: prettyState(pulse.Link.state), type: linkPulse.link_type, payload: linkPulse.tag, ah_base: linkPulse.base.print(), eh_target: linkPulse.target.print()});\n }\n }\n });\n console.table(appSignals);\n }\n}\n\n\n/** -- Materialze -- */\n\nexport interface EntryPulseMat {\n origAh: ActionId | null,\n ah: ActionId,\n state: string,\n validatedBy: ValidatedBy,\n isNew: boolean,\n ts: Timestamp,\n author: AgentId,\n eh: EntryId,\n entryType: string,\n visibility: EntryVisibility,\n bytes: Uint8Array,\n}\n\n\n/** */\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\n //console.log(\"materializeEntryPulse()\", entryTypes);\n const stateStr = Object.keys(entryPulse.state)[0]!;\n return {\n origAh: entryPulse.orig_ah? new ActionId(entryPulse.orig_ah) : null,\n ah: new ActionId(entryPulse.ah),\n state: stateStr,\n validatedBy: entryPulse.validation,\n isNew: (entryPulse.state as any)[stateStr],\n ts: entryPulse.ts,\n author: new AgentId(entryPulse.author),\n eh: new EntryId(entryPulse.eh),\n entryType: entryTypes[entryPulse.def.entry_index]!,\n visibility: entryPulse.def.visibility,\n bytes: entryPulse.bytes,\n }\n}\n\n\n/** */\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeEntryPulse()\", state, entryTypes);\n /** */\n let res: EntryPulse = {\n ah: pulse.ah.hash,\n state: state as StateChange,\n validation: pulse.validatedBy,\n ts: pulse.ts,\n author: pulse.author.hash,\n eh: pulse.eh.hash,\n def: {\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\n zome_index: 42, // Should not be used\n visibility: pulse.visibility,\n },\n bytes: pulse.bytes,\n }\n if (pulse.origAh) {\n res.orig_ah = pulse.origAh.hash\n }\n return res;\n}\n\n\n/** */\nexport interface LinkPulseMat {\n author: AgentId,\n base: LinkableId;\n target: LinkableId,\n timestamp: Timestamp,\n zome_index: ZomeIndex,\n link_type: string,\n tag: Uint8Array,\n create_link_hash: ActionId,\n /** */\n state: string,\n validatedBy: ValidatedBy,\n isNew: Boolean,\n}\n\n/** */\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\n //console.log(\"materializeLinkPulse()\", linkTypes);\n const stateStr = Object.keys(linkPulse.state)[0]!;\n return {\n author: new AgentId(linkPulse.link.author),\n base: intoLinkableId(linkPulse.link.base),\n target: intoLinkableId(linkPulse.link.target),\n timestamp: linkPulse.link.timestamp,\n zome_index: linkPulse.link.zome_index,\n link_type: linkTypes[linkPulse.link.link_type]!,\n tag: linkPulse.link.tag,\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\n state: Object.keys(linkPulse.state)[0]!,\n validatedBy: linkPulse.validation,\n isNew: (linkPulse.state as any)[stateStr],\n }\n}\n\n/** */\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeLinkPulse()\", state);\n /** */\n return {\n state: state as StateChange,\n validation: pulse.validatedBy,\n link: {\n author: pulse.author.hash,\n base: pulse.base.hash,\n target: pulse.target.hash,\n timestamp: pulse.timestamp,\n zome_index: pulse.zome_index,\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\n tag: pulse.tag,\n create_link_hash: pulse.create_link_hash.hash,\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {SignalCb, EntryVisibility, Timestamp, ZomeIndex, Signal, SignalType, AppSignal} from \"@holochain/client\";\nimport {\n ActionId,\n AgentId,\n LinkableId,\n anyToB64,\n enc64,\n EntryId,\n EntryPulse,\n getIndexByVariant,\n intoLinkableId,\n LinkPulse,\n prettyDate,\n prettyState,\n SignalLog,\n AppSignalType,\n StateChange,\n TipProtocol,\n TipProtocolVariantEntry,\n TipProtocolVariantLink,\n ZomeSignal,\n ZomeSignalProtocol,\n ZomeSignalProtocolType,\n ZomeSignalProtocolVariantEntry,\n ZomeSignalProtocolVariantLink,\n TipProtocolType,\n intoAnyId,\n ValidatedBy, SynchronizeTipInput, TipProtocolVariantAppValue, TipProtocolVariantAppCustom,\n} from \"@ddd-qc/cell-proxy\";\nimport {ZomeViewModel} from \"./ZomeViewModel\";\nimport {decode} from \"@msgpack/msgpack\";\n\n\n/** */\nexport interface CastLog {\n ts: Timestamp,\n tip: TipProtocol,\n peers: AgentId[],\n response: Timestamp | undefined,\n}\n\n\n/**\n * ZVM with support for ZomeSignals\n */\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\n\n private _castLogs: CastLog[] = [];\n\n /** Methods to override */\n protected handleCustomTip(_customTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected handleValueTip(_key: string, _value: string, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\n\n\n /** */\n override signalHandler?: SignalCb = this.mySignalHandler;\n\n\n /** */\n private mySignalHandler(signal: Signal): void {\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME;\n //console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n if (appSignal.zome_name !== defaultZomeName) {\n return;\n }\n const zomeSignal = appSignal.payload as ZomeSignal;\n if (!(\"pulses\" in zomeSignal)) {\n return;\n }\n /*await*/ this.handleSignal(zomeSignal);\n }\n\n\n /** */\n private async handleSignal(signal: ZomeSignal): Promise<void> {\n const from = new AgentId(signal.from);\n let all = [];\n for (let pulse of signal.pulses) {\n /** -- Handle Signal according to type -- */\n /** Change tip to Entry or Link signal */\n if (ZomeSignalProtocolType.Tip in pulse) {\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\n if (!pulse) {\n continue;\n }\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\n all.push(this.handleEntryPulse(entryPulseMat, from));\n /** If new entry from this agent, broadcast to peers as tip */\n if (entryPulseMat.isNew && this.cell.address.agentId.equals(from) && entryPulseMat.visibility == \"Public\") {\n this.broadcastTip({Entry: pulse.Entry as EntryPulse});\n }\n continue;\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\n all.push(this.handleLinkPulse(linkPulseMat, from));\n /** If new Link from this agent, broadcast to peers as tip */\n if (linkPulseMat.isNew && this.cell.address.agentId.equals(from)) {\n this.broadcastTip({Link: pulse.Link as LinkPulse});\n }\n continue;\n }\n }\n await Promise.all(all);\n this.notifySubscribers();\n }\n\n\n /** */\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\n const type = Object.keys(tip)[0];\n console.log(\"handleTip()\", type, from, tip);\n /* Handle tip according to its type */\n switch (type) {\n case \"Ping\":\n case \"Pong\":\n break;\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\n case \"AppValue\":\n const key = (tip as TipProtocolVariantAppValue).AppValue[0];\n const value = (tip as TipProtocolVariantAppValue).AppValue[1];\n return this.handleValueTip(key, value, from);\n break;\n case \"AppCustom\":\n return this.handleCustomTip((tip as TipProtocolVariantAppCustom).AppCustom, from);\n break;\n }\n return undefined;\n }\n\n\n /** */\n synchronizeValueTip(key: string, value: string, recipient: AgentId, zomeName: string): void {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeValueTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppValue: [key, value]};\n this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput)\n .then((response) => this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response}))\n .catch((e) => {console.warn(\"zome call to synchronize_tip() failed: \", e)})\n }\n\n\n /** */\n synchronizeCustomTip(appTip: Uint8Array, recipient: AgentId, zomeName: string): void {\n /* Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n console.debug(`synchronizeCustomTip() Sending to`, recipient, zomeName);\n const tip: TipProtocol = {AppCustom: appTip};\n this.zomeProxy.call('synchronize_tip', {tip, recipient: recipient.hash, zomeName} as SynchronizeTipInput)\n .then((response) => this._castLogs.push({ts: Date.now(), tip, peers: [recipient], response}))\n .catch((e) => {console.warn(\"zome call to synchronize_tip() failed: \", e)})\n }\n\n\n /** Cast Tip to all known livePeers */\n broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): void {\n /** Only MainView can cast tips */\n if (!this.isMainView) {\n return;\n }\n agents = agents? agents : this._dvmParent.livePeers;\n /** Skip if no recipients or sending to self only */\n const filtered = agents.filter((key) => key.b64 != this.cell.address.agentId.b64);\n const tipType = Object.keys(tip)[0];\n console.debug(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.address.agentId.short);\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\n if (!filtered || filtered.length == 0) {\n console.debug(\"broadcastTip() aborted: No recipients\")\n return;\n }\n /** Broadcast */\n const peers = agents.map((key) => key.hash);\n this.zomeProxy.call('cast_tip', {tip, peers})\n .then(() => this._castLogs.push({ts: Date.now(), tip, peers: agents, response: undefined}))\n .catch((e) => {console.warn(\"zome call to cast_tip() failed: \", e)})\n }\n\n\n /** */\n dumpCastLogs() {\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n this._castLogs.map((log) => {\n const type = Object.keys(log.tip)[0]!;\n const payload = (log.tip as any)[type];\n appSignals.push({\n timestamp: prettyDate(new Date(log.ts)),\n type,\n payload,\n count: log.peers.length,\n first: log.peers[0]? log.peers[0].short : undefined,\n response: log.response });\n });\n console.table(appSignals);\n }\n\n\n private tip2Log(tip: TipProtocol, type: TipProtocolType): [string, string] {\n switch (type) {\n case TipProtocolType.Ping:\n case TipProtocolType.Pong: return [\"\", \"\"]; break;\n case TipProtocolType.AppValue: {\n const [key, value] = (tip as TipProtocolVariantAppValue).AppValue;\n return [key, value];\n }\n break;\n case TipProtocolType.AppCustom: {\n const app = (tip as TipProtocolVariantAppCustom).AppCustom;\n return [\"\" + app.length, \"\"];\n }\n break;\n case TipProtocolType.Entry: {\n const entryPulse = (tip as TipProtocolVariantEntry).Entry;\n return [intoAnyId(entryPulse.ah).short, intoAnyId(entryPulse.eh).short];\n }\n break;\n case TipProtocolType.Link: {\n const linkPulse = (tip as TipProtocolVariantLink).Link;\n return [intoAnyId(linkPulse.link.base).short, intoAnyId(linkPulse.link.target).short];\n }\n break;\n }\n }\n\n\n /** */\n override dumpSignalLogs(signalLogs: SignalLog[]) {\n this.dumpCastLogs();\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\n let appSignals: any[] = [];\n signalLogs\n .filter((log) => log.type == AppSignalType.Zome)\n .map((log) => {\n const signal = log.zomeSignal as ZomeSignal;\n const pulses = signal.pulses as ZomeSignalProtocol[];\n const timestamp = prettyDate(new Date(log.ts));\n const from: string = enc64(signal.from) == this.cell.address.agentId.b64? \"self\" : new AgentId(signal.from).short;\n for (const pulse of pulses) {\n if (ZomeSignalProtocolType.Tip in pulse) {\n const tip: TipProtocol = pulse.Tip;\n const type = Object.keys(tip)[0];\n const [ah_base, eh_target] = this.tip2Log(tip, type as TipProtocolType);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip), ah_base, eh_target});\n }\n if (ZomeSignalProtocolType.Entry in pulse) {\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\n const typedEntry = decode(entryPulse.bytes);\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Entry, state: prettyState(pulse.Entry.state), type: entryPulse.entryType, payload: anyToB64(typedEntry), ah_base: entryPulse.ah.short, eh_target: entryPulse.eh.short});\n }\n if (ZomeSignalProtocolType.Link in pulse) {\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Link, state: prettyState(pulse.Link.state), type: linkPulse.link_type, payload: linkPulse.tag, ah_base: linkPulse.base.print(), eh_target: linkPulse.target.print()});\n }\n }\n });\n console.table(appSignals);\n }\n}\n\n\n/** -- Materialze -- */\n\nexport interface EntryPulseMat {\n origAh: ActionId | null,\n ah: ActionId,\n state: string,\n validatedBy: ValidatedBy,\n isNew: boolean,\n ts: Timestamp,\n author: AgentId,\n eh: EntryId,\n entryType: string,\n visibility: EntryVisibility,\n bytes: Uint8Array,\n}\n\n\n/** */\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\n //console.log(\"materializeEntryPulse()\", entryTypes);\n const stateStr = Object.keys(entryPulse.state)[0]!;\n return {\n origAh: entryPulse.orig_ah? new ActionId(entryPulse.orig_ah) : null,\n ah: new ActionId(entryPulse.ah),\n state: stateStr,\n validatedBy: entryPulse.validation,\n isNew: (entryPulse.state as any)[stateStr],\n ts: entryPulse.ts,\n author: new AgentId(entryPulse.author),\n eh: new EntryId(entryPulse.eh),\n entryType: entryTypes[entryPulse.def.entry_index]!,\n visibility: entryPulse.def.visibility,\n bytes: entryPulse.bytes,\n }\n}\n\n\n/** */\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeEntryPulse()\", state, entryTypes);\n /** */\n let res: EntryPulse = {\n ah: pulse.ah.hash,\n state: state as StateChange,\n validation: pulse.validatedBy,\n ts: pulse.ts,\n author: pulse.author.hash,\n eh: pulse.eh.hash,\n def: {\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\n zome_index: 42, // Should not be used\n visibility: pulse.visibility,\n },\n bytes: pulse.bytes,\n }\n if (pulse.origAh) {\n res.orig_ah = pulse.origAh.hash\n }\n return res;\n}\n\n\n/** */\nexport interface LinkPulseMat {\n author: AgentId,\n base: LinkableId;\n target: LinkableId,\n timestamp: Timestamp,\n zome_index: ZomeIndex,\n link_type: string,\n tag: Uint8Array,\n create_link_hash: ActionId,\n /** */\n state: string,\n validatedBy: ValidatedBy,\n isNew: Boolean,\n}\n\n/** */\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\n //console.log(\"materializeLinkPulse()\", linkTypes);\n const stateStr = Object.keys(linkPulse.state)[0]!;\n return {\n author: new AgentId(linkPulse.link.author),\n base: intoLinkableId(linkPulse.link.base),\n target: intoLinkableId(linkPulse.link.target),\n timestamp: linkPulse.link.timestamp,\n zome_index: linkPulse.link.zome_index,\n link_type: linkTypes[linkPulse.link.link_type]!,\n tag: linkPulse.link.tag,\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\n state: Object.keys(linkPulse.state)[0]!,\n validatedBy: linkPulse.validation,\n isNew: (linkPulse.state as any)[stateStr],\n }\n}\n\n/** */\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\n let state: Object = {};\n // @ts-ignore\n state[pulse.state] = pulse.isNew;\n //console.log(\"dematerializeLinkPulse()\", state);\n /** */\n return {\n state: state as StateChange,\n validation: pulse.validatedBy,\n link: {\n author: pulse.author.hash,\n base: pulse.base.hash,\n target: pulse.target.hash,\n timestamp: pulse.timestamp,\n zome_index: pulse.zome_index,\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\n tag: pulse.tag,\n create_link_hash: pulse.create_link_hash.hash,\n }\n }\n}\n"]}
|