@ddd-qc/lit-happ 0.26.2 → 0.26.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.js +1 -1
- package/dist/DnaViewModel.js.map +1 -1
- package/dist/ZomeViewModel.js +1 -1
- package/dist/ZomeViewModel.js.map +1 -1
- package/dist/ZomeViewModelWithSignals.d.ts +4 -1
- package/dist/ZomeViewModelWithSignals.js +35 -3
- package/dist/ZomeViewModelWithSignals.js.map +1 -1
- package/package.json +3 -2
package/dist/DnaViewModel.js
CHANGED
|
@@ -76,7 +76,7 @@ export class DnaViewModel extends CellMixin(RoleMixin(ViewModel)) {
|
|
|
76
76
|
const grantedFns = { [GrantedFunctionsType.Listed]: allFnNames };
|
|
77
77
|
try {
|
|
78
78
|
console.log("authorizeSigningCredentials: " + this.cell.hcl().toString(), allFnNames);
|
|
79
|
-
console.log("authorizeSigningCredentials. cell_id = [" + this.cell.dnaId + " ; " + this.cell.agentId + "]");
|
|
79
|
+
console.log("authorizeSigningCredentials. cell_id = [" + this.cell.dnaId.b64 + " ; " + this.cell.agentId.b64 + "]");
|
|
80
80
|
//await adminWs.authorizeSigningCredentials(this.cell.id, grantedFns);
|
|
81
81
|
await adminWs.authorizeSigningCredentials(this.cell.id);
|
|
82
82
|
}
|
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;AACtC,OAAO,EAEL,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAU,aAAa,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAGL,GAAG,EACS,SAAS,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAe,MAAM,aAAa,CAAC;AAqBpD;;;;;GAKG;AACH,MAAM,OAAgB,YAAa,SAAQ,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAMxE,WAAW;IACX,YAA4B,IAAqB,EAAE,QAAkB,EAAE,OAA6B;QAClG,KAAK,EAAE,CAAC;QADkB,SAAI,GAAJ,IAAI,CAAiB;QAgCjD,qBAAqB;QACX,oBAAe,GAA8B,EAAE,CAAC;QAC1D,6BAA6B;QACnB,eAAU,GAAyB,EAAE,CAAC;QAChD,yCAAyC;QACjC,kBAAa,GAAqC,EAAE,CAAC;QAE7D,wCAAwC;QAC9B,eAAU,GAAc,EAAE,CAAC;QAtCnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAChD;QACD,MAAM,OAAO,GAAI,IAAI,CAAC,WAAmC,CAAA;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;QAC1E,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;QACtE,mCAAmC;QACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,GAAG,CAAC;YACR,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzB,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACzC;YACD,+CAA+C;YAC/C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;SACzD;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,0FAA0F;IACvH,CAAC;IAoBD,oBAAoB;IAEpB,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,IAAqC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA,CAAA,CAAC;IAC5G,gBAAgB,CAAC,QAAkB,IAA8B,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA,CAAA,CAAC;IACvG,WAAW,CAAC,GAAyB,IAA0B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA,CAAA,CAAC;IAE5G,oBAAoB;IAEpB,qDAAqD;IACrD,WAAW,CAAC,cAAc,CAAC,IAAqB;QAC9C,iDAAiD;QACjD,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACrD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;SACzB;IACH,CAAC;IAGD,UAAU,KAA+B,OAAO,aAAa,CAAc,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAC;IAAA,CAAC;IAGrG,MAAM;IACN,KAAK,CAAC,kBAAkB,CAAC,OAAuB;QAC9C,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACnE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;SACtD;QACD,MAAM,UAAU,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;QAChE,IAAI;YACA,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,0CAA0C,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;YAC5G,sEAAsE;YACtE,MAAM,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3D;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;SACxD;QACF,2DAA2D;QAC3D,gDAAgD;QAChD,EAAE;QACF,yEAAyE;QACzE,wDAAwD;QACxD,KAAK;IACN,CAAC;IAGD,6GAA6G;IACnG,aAAa;QACrB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,qCAAqC;YACrC,GAAG,CAAC,QAAQ,EAAE,CAAC;SAChB;IACH,CAAC;IAGD,MAAM;IACN,UAAU,CAAC,GAAkB,IAAS,CAAC;IAGvC,MAAM;IACN,KAAK,CAAC,4BAA4B;QAChC,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,4BAA4B,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACb;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAGD,MAAM;IACN,KAAK,CAAC,2BAA2B;QAC/B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,2BAA2B,EAAE,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACb;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAGD,iGAAiG;IACjG,KAAK,CAAC,iBAAiB;QACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC9B,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB;gBAC5E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;aACrC;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,IAAI,CAAC,0CAA0C,QAAQ,iEAAiE,CAAC,CAAA;gBACjI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;aACnC;SACF;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAGD,MAAM;IACN,YAAY,CAAC,QAAmB;QAC9B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAGD,MAAM;IACN,cAAc,CAAC,QAAmB;QAChC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;gBAC7E,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAC1B;YACD,OAAO;SACR;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAA;YACjF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACrD;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;SACtE;IACH,CAAC;CACF","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"]}
|
|
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.b64 + \" ; \" + this.cell.agentId.b64 + \"]\");\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"]}
|
package/dist/ZomeViewModel.js
CHANGED
|
@@ -68,7 +68,7 @@ export class ZomeViewModel extends CellMixin(ViewModel) {
|
|
|
68
68
|
}
|
|
69
69
|
/** */
|
|
70
70
|
getContext() {
|
|
71
|
-
const context = createContext('zvm/' + this._zomeProxy.defaultZomeName + '/' + this.cell.dnaId);
|
|
71
|
+
const context = createContext('zvm/' + this._zomeProxy.defaultZomeName + '/' + this.cell.dnaId.b64);
|
|
72
72
|
//console.log({contextType: typeof context})
|
|
73
73
|
return context;
|
|
74
74
|
}
|
|
@@ -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;IAMD,gBAAgB;IAChB,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC7C,CAAC;IAGD,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;IACtC,CAAC;IAKD,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;
|
|
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.b64)\n //console.log({contextType: typeof context})\n return context\n }\n\n\n /** */\n dumpSignalLogs(signalLogs: SignalLog[]) {\n console.warn(`All signals from zome \"${this.zomeName}\"`);\n console.table(prettySignalLogs(signalLogs));\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AppSignalCb, EntryVisibility, Timestamp } from "@holochain/client";
|
|
2
|
-
import { ActionId, AgentId, AnyLinkableId, EntryId, EntryPulse, LinkPulse, TipProtocol, ZomeSignalProtocol } from "@ddd-qc/cell-proxy";
|
|
2
|
+
import { ActionId, AgentId, AnyLinkableId, EntryId, EntryPulse, LinkPulse, SignalLog, TipProtocol, ZomeSignalProtocol } from "@ddd-qc/cell-proxy";
|
|
3
3
|
import { ZomeViewModel } from "./ZomeViewModel";
|
|
4
4
|
import { ZomeIndex } from "@holochain/client/lib/hdk/link";
|
|
5
5
|
/** */
|
|
@@ -29,7 +29,10 @@ export declare abstract class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
29
29
|
broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void>;
|
|
30
30
|
/** */
|
|
31
31
|
dumpCastLogs(): void;
|
|
32
|
+
/** */
|
|
33
|
+
dumpSignalLogs(signalLogs: SignalLog[]): void;
|
|
32
34
|
}
|
|
35
|
+
/** -- Materialze -- */
|
|
33
36
|
export interface EntryPulseMat {
|
|
34
37
|
ah: ActionId;
|
|
35
38
|
state: string;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ActionId, AgentId, EntryId, getIndexByVariant, intoLinkableId, prettyDate, ZomeSignalProtocolType } from "@ddd-qc/cell-proxy";
|
|
1
|
+
import { ActionId, AgentId, anyToB64, enc64, EntryId, getIndexByVariant, intoLinkableId, prettyDate, prettyState, SignalType, ZomeSignalProtocolType } from "@ddd-qc/cell-proxy";
|
|
2
2
|
import { ZomeViewModel } from "./ZomeViewModel";
|
|
3
|
+
import { decode } from "@msgpack/msgpack";
|
|
3
4
|
/**
|
|
4
5
|
* ZVM with support for ZomeSignals
|
|
5
6
|
*/
|
|
@@ -111,6 +112,37 @@ export class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
111
112
|
});
|
|
112
113
|
console.table(appSignals);
|
|
113
114
|
}
|
|
115
|
+
/** */
|
|
116
|
+
dumpSignalLogs(signalLogs) {
|
|
117
|
+
this.dumpCastLogs();
|
|
118
|
+
console.warn(`Signals received from zome "${this.zomeName}"`);
|
|
119
|
+
let appSignals = [];
|
|
120
|
+
signalLogs
|
|
121
|
+
.filter((log) => log.type == SignalType.Zome)
|
|
122
|
+
.map((log) => {
|
|
123
|
+
const signal = log.zomeSignal;
|
|
124
|
+
const pulses = signal.pulses;
|
|
125
|
+
const timestamp = prettyDate(new Date(log.ts));
|
|
126
|
+
const from = enc64(signal.from) == this.cell.agentId.b64 ? "self" : new AgentId(signal.from);
|
|
127
|
+
for (const pulse of pulses) {
|
|
128
|
+
if (ZomeSignalProtocolType.Tip in pulse) {
|
|
129
|
+
const tip = pulse.Tip;
|
|
130
|
+
const type = Object.keys(tip)[0];
|
|
131
|
+
appSignals.push({ timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip) });
|
|
132
|
+
}
|
|
133
|
+
if (ZomeSignalProtocolType.Entry in pulse) {
|
|
134
|
+
const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));
|
|
135
|
+
const typedEntry = decode(entryPulse.bytes);
|
|
136
|
+
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 });
|
|
137
|
+
}
|
|
138
|
+
if (ZomeSignalProtocolType.Link in pulse) {
|
|
139
|
+
const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));
|
|
140
|
+
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() });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
console.table(appSignals);
|
|
145
|
+
}
|
|
114
146
|
}
|
|
115
147
|
/** */
|
|
116
148
|
export function materializeEntryPulse(entryPulse, entryTypes) {
|
|
@@ -150,7 +182,7 @@ export function dematerializeEntryPulse(pulse, entryTypes) {
|
|
|
150
182
|
}
|
|
151
183
|
/** */
|
|
152
184
|
export function materializeLinkPulse(linkPulse, linkTypes) {
|
|
153
|
-
console.log("materializeLinkPulse()", linkTypes);
|
|
185
|
+
//console.log("materializeLinkPulse()", linkTypes);
|
|
154
186
|
const stateStr = Object.keys(linkPulse.state)[0];
|
|
155
187
|
return {
|
|
156
188
|
author: new AgentId(linkPulse.link.author),
|
|
@@ -169,7 +201,7 @@ export function materializeLinkPulse(linkPulse, linkTypes) {
|
|
|
169
201
|
export function dematerializeLinkPulse(pulse, linkTypes) {
|
|
170
202
|
let state = {};
|
|
171
203
|
state[pulse.state] = pulse.isNew;
|
|
172
|
-
console.log("dematerializeLinkPulse()", state);
|
|
204
|
+
//console.log("dematerializeLinkPulse()", state);
|
|
173
205
|
/** */
|
|
174
206
|
return {
|
|
175
207
|
state: state,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, EntryVisibility, Timestamp} from \"@holochain/client\";\r\nimport {\r\n ActionId,\r\n AgentId, AnyLinkableId, 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 {ZomeIndex} from \"@holochain/client/lib/hdk/link\";\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 && entryPulseMat.visibility == \"Public\") {\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 visibility: EntryVisibility,\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 visibility: entryPulse.def.visibility,\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: 42, // Should not be used\r\n visibility: pulse.visibility,\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"]}
|
|
1
|
+
{"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, EntryVisibility, Timestamp} from \"@holochain/client\";\r\nimport {\r\n ActionId,\r\n AgentId, AnyLinkableId, anyToB64, enc64, EntryId,\r\n EntryPulse, getIndexByVariant, intoLinkableId, LinkPulse, prettyDate, prettyState, SignalLog, SignalType, 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 {ZomeIndex} from \"@holochain/client/lib/hdk/link\";\r\nimport {ProfilesAltLinkType, ProfilesAltUnitEnum} from \"@ddd-qc/profiles-dvm/dist/bindings/profilesAlt.integrity\";\r\nimport {decode} from \"@msgpack/msgpack\";\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 && entryPulseMat.visibility == \"Public\") {\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 dumpSignalLogs(signalLogs: SignalLog[]) {\r\n this.dumpCastLogs();\r\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n signalLogs\r\n .filter((log) => log.type == SignalType.Zome)\r\n .map((log) => {\r\n const signal = log.zomeSignal as ZomeSignal;\r\n const pulses = signal.pulses as ZomeSignalProtocol[];\r\n const timestamp = prettyDate(new Date(log.ts));\r\n const from = enc64(signal.from) == this.cell.agentId.b64? \"self\" : new AgentId(signal.from);\r\n for (const pulse of pulses) {\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n const tip: TipProtocol = pulse.Tip;\r\n const type = Object.keys(tip)[0];\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip)});\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\r\n const typedEntry = decode(entryPulse.bytes);\r\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});\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\r\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()});\r\n }\r\n }\r\n });\r\n console.table(appSignals);\r\n }\r\n}\r\n\r\n\r\n/** -- Materialze -- */\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 visibility: EntryVisibility,\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 visibility: entryPulse.def.visibility,\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: 42, // Should not be used\r\n visibility: pulse.visibility,\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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-qc/lit-happ",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.6",
|
|
4
4
|
"description": "MVVM Framework for holochain apps using Lit",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
12
|
"lint": "eslint --ext .ts .",
|
|
13
|
-
"build": "rm -rf dist && tsc"
|
|
13
|
+
"build": "rm -rf dist && tsc",
|
|
14
|
+
"build:watch": "tsc -w --preserveWatchOutput"
|
|
14
15
|
},
|
|
15
16
|
"repository": {
|
|
16
17
|
"type": "git",
|