@ddd-qc/lit-happ 0.31.12 → 0.31.13
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/HappViewModel.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AdminWebsocket, ClonedCell, InstalledAppId } from "@holochain/client";
|
|
2
2
|
import { ReactiveElement } from "lit";
|
|
3
|
-
import { AppProxy, BaseRoleName, CellAddress, Dictionary, HCL } from "@ddd-qc/cell-proxy";
|
|
3
|
+
import { AppProxy, BaseRoleName, CellAddress, CellCloner, Dictionary, HCL } from "@ddd-qc/cell-proxy";
|
|
4
4
|
import { CellDef, DvmDef, HvmDef } from "./definitions";
|
|
5
5
|
import { DnaViewModel } from "./DnaViewModel";
|
|
6
6
|
export declare class HappViewModel {
|
|
@@ -20,7 +20,7 @@ export declare class HappViewModel {
|
|
|
20
20
|
private createStartingClonesDvm;
|
|
21
21
|
private createDvm;
|
|
22
22
|
private createOriginalDvm;
|
|
23
|
-
cloneDvm(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]>;
|
|
23
|
+
cloneDvm(baseRoleName: BaseRoleName, cellDef?: CellDef, cellCloner?: CellCloner): Promise<[ClonedCell, DnaViewModel]>;
|
|
24
24
|
probeAll(): void;
|
|
25
25
|
initializePerspectiveOffline(): Promise<void>;
|
|
26
26
|
initializePerspectiveOnline(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HappViewModel.d.ts","sourceRoot":"","sources":["../src/HappViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,UAAU,EAA0B,cAAc,EAAS,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EACL,QAAQ,EACR,YAAY,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"HappViewModel.d.ts","sourceRoot":"","sources":["../src/HappViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,UAAU,EAA0B,cAAc,EAAS,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EACL,QAAQ,EACR,YAAY,EAAE,WAAW,EAAE,UAAU,EAGrC,UAAU,EACV,GAAG,EACJ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C,qBAAa,aAAa;IA+EtB,SAAS,CAAC,KAAK,EAAE,eAAe;IAChC,SAAS,CAAC,SAAS,EAAE,QAAQ;aAEb,UAAU,EAAE,OAAO;IA/ErC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAE/B,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,CAAM;IAEjD,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAM;IAM3C,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS;IAK9C,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS;IActE,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,YAAY,GAAI,YAAY,GAAG,SAAS;IAS9D,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,YAAY,EAAE;WAgBxC,GAAG,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBxH,OAAO;IAkBD,qBAAqB,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpE,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,SAAS;IAyBjB,OAAO,CAAC,iBAAiB;IAgBnB,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAqD3H,QAAQ,IAAI,IAAI;IAQV,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlD,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;CAchD"}
|
package/dist/HappViewModel.js
CHANGED
|
@@ -112,7 +112,7 @@ export class HappViewModel {
|
|
|
112
112
|
this.createDvm(dvmDef, hcl);
|
|
113
113
|
this._defMap[baseRoleName] = dvmDef;
|
|
114
114
|
}
|
|
115
|
-
async cloneDvm(baseRoleName, cellDef) {
|
|
115
|
+
async cloneDvm(baseRoleName, cellDef, cellCloner) {
|
|
116
116
|
console.log("cloneDvm()", baseRoleName);
|
|
117
117
|
const def = this._defMap[baseRoleName];
|
|
118
118
|
if (!def) {
|
|
@@ -140,7 +140,7 @@ export class HappViewModel {
|
|
|
140
140
|
if (cellDef.cloneName)
|
|
141
141
|
request.name = cellDef.cloneName;
|
|
142
142
|
}
|
|
143
|
-
const clonedCell = await this._appProxy.createCloneCell(request);
|
|
143
|
+
const clonedCell = cellCloner ? await cellCloner.createCloneCell(request, false) : await this._appProxy.createCloneCell(request);
|
|
144
144
|
const cell = await this._appProxy.fetchCell(this.appId, CellAddress.from(clonedCell.cell_id));
|
|
145
145
|
console.log("clone created:", cell);
|
|
146
146
|
const hcl = new HCL(this.appId, baseRoleName, cell.cloneId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HappViewModel.js","sourceRoot":"","sources":["../src/HappViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {AdminWebsocket, ClonedCell, CreateCloneCellRequest, InstalledAppId, Signal} from \"@holochain/client\";\nimport { ReactiveElement } from \"lit\";\nimport {\n AppProxy,\n BaseRoleName, CellAddress,\n CloneIndex,\n createCloneName,\n Dictionary,\n HCL,\n} from \"@ddd-qc/cell-proxy\";\nimport { CellDef, DvmDef, HvmDef } from \"./definitions\";\nimport { DnaViewModel } from \"./DnaViewModel\";\n\n\n//export type HvmConstructor = {new(installedAppId: InstalledAppId): HappViewModel};\n\n\n/**\n * \"ViewModel\" of a hApp\n * Creates and stores all the DnaViewModels from the happDef.\n */\nexport class HappViewModel {\n\n /** -- Fields -- */\n readonly appId: InstalledAppId;\n /** HCLString -> DnaViewModel */\n protected _dvmMap: Dictionary<DnaViewModel> = {};\n /** BaseRoleName -> DvmDef */\n protected _defMap: Dictionary<DvmDef> = {};\n\n\n /** -- Getters -- */\n\n /** */\n getDef(name: BaseRoleName): DvmDef | undefined {\n return this._defMap[name];\n }\n\n /** */\n getCellDvms(cellId: CellAddress): Dictionary<DnaViewModel> | undefined {\n const hcls = this._appProxy.getLocations(cellId);\n if (hcls === undefined) return undefined;\n let dict: Dictionary<DnaViewModel> = {};\n for (const hcl of hcls) {\n const maybe = this.getDvm(hcl);\n if (maybe) {\n dict[hcl.toString()] = maybe;\n }\n }\n return dict;\n }\n\n /** */\n getDvm(hclOrId: HCL | BaseRoleName ): DnaViewModel | undefined {\n if (typeof hclOrId === 'string') {\n hclOrId = new HCL(this.appId, hclOrId);\n }\n return this._dvmMap[hclOrId.toString()];\n }\n\n\n /** */\n getClones(baseRoleName: BaseRoleName): DnaViewModel[] {\n const searchHcl = new HCL(this.appId, baseRoleName);\n let cloneDvms = [];\n for (const [sHcl, dvm] of Object.entries(this._dvmMap)) {\n const hcl = HCL.parse(sHcl);\n if (hcl.isClone() && hcl.match(searchHcl)) {\n cloneDvms.push(dvm);\n }\n }\n return cloneDvms;\n }\n\n\n /** -- Create -- */\n\n /** Spawn a HappViewModel for an AppId running on the AppProxy */\n static async new(host: ReactiveElement, appProxy: AppProxy, hvmDef: HvmDef, isMainView: boolean): Promise<HappViewModel> {\n const appId = appProxy.appIdOfShame? appProxy.appIdOfShame : hvmDef.id;\n //console.log(\"HappViewModel.new()\", hvmDef.id, appId)\n /** Create all Cell Proxies in the definition */\n for (const dvmDef of hvmDef.dvmDefs) {\n if (dvmDef.ctor.DEFAULT_BASE_ROLE_NAME === undefined) {\n return Promise.reject(\"static field DEFAULT_BASE_ROLE_NAME not defined for class \" + dvmDef.ctor.name);\n }\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n await appProxy.fetchCells(appId, baseRoleName);\n const hcl = new HCL(appId, baseRoleName);\n appProxy.createCellProxy(hcl);\n }\n const hvm = new HappViewModel(host, appProxy, hvmDef, isMainView);\n return hvm;\n }\n\n\n /** Ctor */\n private constructor(\n protected _host: ReactiveElement, /* VIEW */\n protected _appProxy: AppProxy, /* MODEL */\n hvmDef: HvmDef, /* VIEW-MODEL definition */\n public readonly isMainView: boolean,\n ) {\n this.appId = this._appProxy.appIdOfShame? this._appProxy.appIdOfShame : hvmDef.id;\n /** Create all non-deferred DVMs for this Happ */\n for (const dvmDef of hvmDef.dvmDefs) {\n this.createOriginalDvm(dvmDef);\n }\n this.createStartingClonesDvm();\n //console.log(\"HappViewModel created\", this._dvmMap)\n }\n\n\n /** -- Methods -- */\n\n async authorizeAllZomeCalls(adminWs?: AdminWebsocket): Promise<void> {\n if (!adminWs) {\n return;\n }\n for (const [_sHcl, dvm] of Object.entries(this._dvmMap)) {\n //console.log(\"Authorizing\", sHcl);\n await dvm.authorizeZomeCalls(adminWs);\n }\n }\n\n /** */\n private createStartingClonesDvm(): void {\n const appInstalledCells = this._appProxy.getAppCells(this.appId)!;\n for (const [baseRoleName, roleCells] of Object.entries(appInstalledCells)) {\n const def = this._defMap[baseRoleName];\n if (!def) {\n throw Error(\"No definition found for given baseRoleName\");\n }\n for (const [cloneId, clone] of Object.entries(roleCells.clones)) {\n const hcl = new HCL(this.appId, baseRoleName, cloneId);\n this._appProxy.createCellProxy(hcl, clone.name);\n this.createDvm(def, hcl);\n }\n }\n }\n\n\n /** */\n private createDvm(dvmDef: DvmDef, hcl: HCL): DnaViewModel {\n const dvm: DnaViewModel = new dvmDef.ctor(this._host, this._appProxy, hcl, this.isMainView); // WARN this can throw an error\n //console.log(` createDvm() for \"${hcl.toString()}\" ; cellId: ${CellIdStr(dvm.cellId)}`);\n /** Setup signalHandler */\n if (dvm.signalHandler) {\n //console.log(`\"${dvm.baseRoleName}\" signalHandler added`, dvm.signalHandler);\n try {\n this._appProxy.addSignalHandler((sig: Signal) => {\n dvm.signalHandler!(sig)\n }, hcl.toString());\n } catch (e) {\n console.error(e)\n }\n }\n /** Store it */\n if (this._dvmMap[hcl.toString()]) {\n throw Error(\"DVM already exists for \" + hcl.toString());\n }\n this._dvmMap[hcl.toString()] = dvm;\n /** Done */\n return dvm;\n }\n\n\n /** */\n private createOriginalDvm(dvmDef: DvmDef): void {\n /** Determine baseRoleName */\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n //console.log(\"createOriginalDvm() for \", baseRoleName);\n if (this._defMap[baseRoleName]) {\n throw Error(`createOriginalDvm() failed. DVM for original cell of ${baseRoleName} already exists.`);\n }\n const hcl = new HCL(this.appId, baseRoleName);\n this.createDvm(dvmDef, hcl);\n this._defMap[baseRoleName] = dvmDef;\n }\n\n\n /** */\n async cloneDvm(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n console.log(\"cloneDvm()\", baseRoleName);\n /** Check preconditions */\n const def = this._defMap[baseRoleName];\n if (!def) {\n return Promise.reject(`createCloneDvm() failed for ${baseRoleName}. No original DVM created.`)\n }\n if (!def.isClonable) {\n return Promise.reject(`createCloneDvm() failed. Role \"${baseRoleName}\" is not clonable.`)\n }\n /** Get cloneIndex */\n const clones = this.getClones(baseRoleName);\n const cloneIndex: CloneIndex = clones.length;\n const cloneName = cellDef && cellDef.cloneName\n ? cellDef.cloneName\n : createCloneName(baseRoleName, cloneIndex);\n /** Build default request */\n let request: CreateCloneCellRequest = {\n //app_id: this.appId,\n role_name: baseRoleName,\n modifiers: {\n network_seed: String(cloneIndex),\n },\n name: cloneName,\n }\n /** Modify request according to CellDef */\n if (cellDef) {\n request.modifiers = cellDef.modifiers;\n if (cellDef.membraneProof) request.membrane_proof = cellDef.membraneProof;\n if (cellDef.cloneName) request.name = cellDef.cloneName;\n }\n /** Create Cell */\n const clonedCell = await this._appProxy.createCloneCell(request);\n //console.log(\"clone created:\", CellIdStr(cloneInstalledCell.cell_id));\n const cell = await this._appProxy.fetchCell(this.appId, CellAddress.from(clonedCell.cell_id));\n console.log(\"clone created:\", cell);\n const hcl = new HCL(this.appId, baseRoleName, cell.cloneId);\n /** Get created cell */\n const clone = cell.asCloned()!;\n this._appProxy.addClone(hcl, clone);\n /** Create CellProxy */\n this._appProxy.createCellProxy(hcl, clone.name);\n /** Create DVM and authorize */\n const dvm = this.createDvm(def, hcl);\n if (this._appProxy.adminWs) {\n await dvm.authorizeZomeCalls(this._appProxy.adminWs);\n }\n /** Done */\n return [clonedCell, dvm];\n }\n\n\n /** */\n probeAll(): void {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.probeAll();\n }\n }\n\n\n /** Can't parallelize calls since happ can have multiple roles with same dnas which can throttle entry_def calls */\n async initializePerspectiveOffline(): Promise<void> {\n for (const dvm of Object.values(this._dvmMap)) {\n await dvm.initializePerspectiveOffline();\n }\n }\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n const all = [];\n for (const dvm of Object.values(this._dvmMap)) {\n const p = dvm.initializePerspectiveOnline();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n dumpCallLogs(baseRoleName?: BaseRoleName): void {\n if (baseRoleName) {\n const dvm = this.getDvm(baseRoleName);\n if (dvm) {\n dvm.dumpCallLogs();\n } else {\n console.error(`dumpCallLogs() failed. Role \"${baseRoleName}\" not found in happ \"${this.appId}\"`)\n }\n } else {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.dumpCallLogs();\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HappViewModel.js","sourceRoot":"","sources":["../src/HappViewModel.ts"],"names":[],"mappings":"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","sourcesContent":["import {AdminWebsocket, ClonedCell, CreateCloneCellRequest, InstalledAppId, Signal} from \"@holochain/client\";\nimport { ReactiveElement } from \"lit\";\nimport {\n AppProxy,\n BaseRoleName, CellAddress, CellCloner,\n CloneIndex,\n createCloneName,\n Dictionary,\n HCL,\n} from \"@ddd-qc/cell-proxy\";\nimport { CellDef, DvmDef, HvmDef } from \"./definitions\";\nimport { DnaViewModel } from \"./DnaViewModel\";\n\n\n//export type HvmConstructor = {new(installedAppId: InstalledAppId): HappViewModel};\n\n\n/**\n * \"ViewModel\" of a hApp\n * Creates and stores all the DnaViewModels from the happDef.\n */\nexport class HappViewModel {\n\n /** -- Fields -- */\n readonly appId: InstalledAppId;\n /** HCLString -> DnaViewModel */\n protected _dvmMap: Dictionary<DnaViewModel> = {};\n /** BaseRoleName -> DvmDef */\n protected _defMap: Dictionary<DvmDef> = {};\n\n\n /** -- Getters -- */\n\n /** */\n getDef(name: BaseRoleName): DvmDef | undefined {\n return this._defMap[name];\n }\n\n /** */\n getCellDvms(cellId: CellAddress): Dictionary<DnaViewModel> | undefined {\n const hcls = this._appProxy.getLocations(cellId);\n if (hcls === undefined) return undefined;\n let dict: Dictionary<DnaViewModel> = {};\n for (const hcl of hcls) {\n const maybe = this.getDvm(hcl);\n if (maybe) {\n dict[hcl.toString()] = maybe;\n }\n }\n return dict;\n }\n\n /** */\n getDvm(hclOrId: HCL | BaseRoleName ): DnaViewModel | undefined {\n if (typeof hclOrId === 'string') {\n hclOrId = new HCL(this.appId, hclOrId);\n }\n return this._dvmMap[hclOrId.toString()];\n }\n\n\n /** */\n getClones(baseRoleName: BaseRoleName): DnaViewModel[] {\n const searchHcl = new HCL(this.appId, baseRoleName);\n let cloneDvms = [];\n for (const [sHcl, dvm] of Object.entries(this._dvmMap)) {\n const hcl = HCL.parse(sHcl);\n if (hcl.isClone() && hcl.match(searchHcl)) {\n cloneDvms.push(dvm);\n }\n }\n return cloneDvms;\n }\n\n\n /** -- Create -- */\n\n /** Spawn a HappViewModel for an AppId running on the AppProxy */\n static async new(host: ReactiveElement, appProxy: AppProxy, hvmDef: HvmDef, isMainView: boolean): Promise<HappViewModel> {\n const appId = appProxy.appIdOfShame? appProxy.appIdOfShame : hvmDef.id;\n //console.log(\"HappViewModel.new()\", hvmDef.id, appId)\n /** Create all Cell Proxies in the definition */\n for (const dvmDef of hvmDef.dvmDefs) {\n if (dvmDef.ctor.DEFAULT_BASE_ROLE_NAME === undefined) {\n return Promise.reject(\"static field DEFAULT_BASE_ROLE_NAME not defined for class \" + dvmDef.ctor.name);\n }\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n await appProxy.fetchCells(appId, baseRoleName);\n const hcl = new HCL(appId, baseRoleName);\n appProxy.createCellProxy(hcl);\n }\n const hvm = new HappViewModel(host, appProxy, hvmDef, isMainView);\n return hvm;\n }\n\n\n /** Ctor */\n private constructor(\n protected _host: ReactiveElement, /* VIEW */\n protected _appProxy: AppProxy, /* MODEL */\n hvmDef: HvmDef, /* VIEW-MODEL definition */\n public readonly isMainView: boolean,\n ) {\n this.appId = this._appProxy.appIdOfShame? this._appProxy.appIdOfShame : hvmDef.id;\n /** Create all non-deferred DVMs for this Happ */\n for (const dvmDef of hvmDef.dvmDefs) {\n this.createOriginalDvm(dvmDef);\n }\n this.createStartingClonesDvm();\n //console.log(\"HappViewModel created\", this._dvmMap)\n }\n\n\n /** -- Methods -- */\n\n async authorizeAllZomeCalls(adminWs?: AdminWebsocket): Promise<void> {\n if (!adminWs) {\n return;\n }\n for (const [_sHcl, dvm] of Object.entries(this._dvmMap)) {\n //console.log(\"Authorizing\", sHcl);\n await dvm.authorizeZomeCalls(adminWs);\n }\n }\n\n /** */\n private createStartingClonesDvm(): void {\n const appInstalledCells = this._appProxy.getAppCells(this.appId)!;\n for (const [baseRoleName, roleCells] of Object.entries(appInstalledCells)) {\n const def = this._defMap[baseRoleName];\n if (!def) {\n throw Error(\"No definition found for given baseRoleName\");\n }\n for (const [cloneId, clone] of Object.entries(roleCells.clones)) {\n const hcl = new HCL(this.appId, baseRoleName, cloneId);\n this._appProxy.createCellProxy(hcl, clone.name);\n this.createDvm(def, hcl);\n }\n }\n }\n\n\n /** */\n private createDvm(dvmDef: DvmDef, hcl: HCL): DnaViewModel {\n const dvm: DnaViewModel = new dvmDef.ctor(this._host, this._appProxy, hcl, this.isMainView); // WARN this can throw an error\n //console.log(` createDvm() for \"${hcl.toString()}\" ; cellId: ${CellIdStr(dvm.cellId)}`);\n /** Setup signalHandler */\n if (dvm.signalHandler) {\n //console.log(`\"${dvm.baseRoleName}\" signalHandler added`, dvm.signalHandler);\n try {\n this._appProxy.addSignalHandler((sig: Signal) => {\n dvm.signalHandler!(sig)\n }, hcl.toString());\n } catch (e) {\n console.error(e)\n }\n }\n /** Store it */\n if (this._dvmMap[hcl.toString()]) {\n throw Error(\"DVM already exists for \" + hcl.toString());\n }\n this._dvmMap[hcl.toString()] = dvm;\n /** Done */\n return dvm;\n }\n\n\n /** */\n private createOriginalDvm(dvmDef: DvmDef): void {\n /** Determine baseRoleName */\n const baseRoleName = dvmDef.baseRoleName\n ? dvmDef.baseRoleName\n : dvmDef.ctor.DEFAULT_BASE_ROLE_NAME;\n //console.log(\"createOriginalDvm() for \", baseRoleName);\n if (this._defMap[baseRoleName]) {\n throw Error(`createOriginalDvm() failed. DVM for original cell of ${baseRoleName} already exists.`);\n }\n const hcl = new HCL(this.appId, baseRoleName);\n this.createDvm(dvmDef, hcl);\n this._defMap[baseRoleName] = dvmDef;\n }\n\n\n /** */\n async cloneDvm(baseRoleName: BaseRoleName, cellDef?: CellDef, cellCloner?: CellCloner): Promise<[ClonedCell, DnaViewModel]> {\n console.log(\"cloneDvm()\", baseRoleName);\n /** Check preconditions */\n const def = this._defMap[baseRoleName];\n if (!def) {\n return Promise.reject(`createCloneDvm() failed for ${baseRoleName}. No original DVM created.`)\n }\n if (!def.isClonable) {\n return Promise.reject(`createCloneDvm() failed. Role \"${baseRoleName}\" is not clonable.`)\n }\n /** Get cloneIndex */\n const clones = this.getClones(baseRoleName);\n const cloneIndex: CloneIndex = clones.length;\n const cloneName = cellDef && cellDef.cloneName\n ? cellDef.cloneName\n : createCloneName(baseRoleName, cloneIndex);\n /** Build default request */\n let request: CreateCloneCellRequest = {\n //app_id: this.appId,\n role_name: baseRoleName,\n modifiers: {\n network_seed: String(cloneIndex),\n },\n name: cloneName,\n }\n /** Modify request according to CellDef */\n if (cellDef) {\n request.modifiers = cellDef.modifiers;\n if (cellDef.membraneProof) request.membrane_proof = cellDef.membraneProof;\n if (cellDef.cloneName) request.name = cellDef.cloneName;\n }\n /** Create Cell */\n const clonedCell = cellCloner? await cellCloner.createCloneCell(request, false) : await this._appProxy.createCloneCell(request);\n //console.log(\"clone created:\", CellIdStr(cloneInstalledCell.cell_id));\n const cell = await this._appProxy.fetchCell(this.appId, CellAddress.from(clonedCell.cell_id));\n console.log(\"clone created:\", cell);\n const hcl = new HCL(this.appId, baseRoleName, cell.cloneId);\n /** Get created cell */\n const clone = cell.asCloned()!;\n this._appProxy.addClone(hcl, clone);\n /** Create CellProxy */\n this._appProxy.createCellProxy(hcl, clone.name);\n /** Create DVM and authorize */\n const dvm = this.createDvm(def, hcl);\n if (this._appProxy.adminWs) {\n await dvm.authorizeZomeCalls(this._appProxy.adminWs);\n }\n /** Done */\n return [clonedCell, dvm];\n }\n\n\n /** */\n probeAll(): void {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.probeAll();\n }\n }\n\n\n /** Can't parallelize calls since happ can have multiple roles with same dnas which can throttle entry_def calls */\n async initializePerspectiveOffline(): Promise<void> {\n for (const dvm of Object.values(this._dvmMap)) {\n await dvm.initializePerspectiveOffline();\n }\n }\n\n /** */\n async initializePerspectiveOnline(): Promise<void> {\n const all = [];\n for (const dvm of Object.values(this._dvmMap)) {\n const p = dvm.initializePerspectiveOnline();\n all.push(p);\n }\n await Promise.all(all);\n }\n\n\n /** */\n dumpCallLogs(baseRoleName?: BaseRoleName): void {\n if (baseRoleName) {\n const dvm = this.getDvm(baseRoleName);\n if (dvm) {\n dvm.dumpCallLogs();\n } else {\n console.error(`dumpCallLogs() failed. Role \"${baseRoleName}\" not found in happ \"${this.appId}\"`)\n }\n } else {\n for (const dvm of Object.values(this._dvmMap)) {\n dvm.dumpCallLogs();\n }\n }\n }\n}\n"]}
|