@ddd-qc/lit-happ 0.29.10 → 0.29.12
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/HappElement.js +3 -3
- package/dist/HappElement.js.map +1 -1
- package/dist/HappMultiElement.d.ts +7 -4
- package/dist/HappMultiElement.d.ts.map +1 -1
- package/dist/HappMultiElement.js +122 -9
- package/dist/HappMultiElement.js.map +1 -1
- package/dist/ViewModel.d.ts.map +1 -1
- package/dist/ViewModel.js +2 -1
- package/dist/ViewModel.js.map +1 -1
- package/dist/deepcopy/cloneArrayBuffer.d.ts +2 -0
- package/dist/deepcopy/cloneArrayBuffer.d.ts.map +1 -0
- package/dist/deepcopy/cloneArrayBuffer.js +6 -0
- package/dist/deepcopy/cloneArrayBuffer.js.map +1 -0
- package/dist/deepcopy/cloneDataView.d.ts +2 -0
- package/dist/deepcopy/cloneDataView.d.ts.map +1 -0
- package/dist/deepcopy/cloneDataView.js +6 -0
- package/dist/deepcopy/cloneDataView.js.map +1 -0
- package/dist/deepcopy/cloneDate.d.ts +2 -0
- package/dist/deepcopy/cloneDate.d.ts.map +1 -0
- package/dist/deepcopy/cloneDate.js +4 -0
- package/dist/deepcopy/cloneDate.js.map +1 -0
- package/dist/deepcopy/cloneMap.d.ts +2 -0
- package/dist/deepcopy/cloneMap.d.ts.map +1 -0
- package/dist/deepcopy/cloneMap.js +7 -0
- package/dist/deepcopy/cloneMap.js.map +1 -0
- package/dist/deepcopy/cloneRegexp.d.ts +2 -0
- package/dist/deepcopy/cloneRegexp.d.ts.map +1 -0
- package/dist/deepcopy/cloneRegexp.js +6 -0
- package/dist/deepcopy/cloneRegexp.js.map +1 -0
- package/dist/deepcopy/cloneTypedArray.d.ts +3 -0
- package/dist/deepcopy/cloneTypedArray.d.ts.map +1 -0
- package/dist/deepcopy/cloneTypedArray.js +22 -0
- package/dist/deepcopy/cloneTypedArray.js.map +1 -0
- package/dist/deepcopy/deepCopy.d.ts +2 -0
- package/dist/deepcopy/deepCopy.d.ts.map +1 -0
- package/dist/deepcopy/deepCopy.js +49 -0
- package/dist/deepcopy/deepCopy.js.map +1 -0
- package/package.json +1 -1
package/dist/HappElement.js
CHANGED
|
@@ -35,7 +35,7 @@ export class HappElement extends LitElement {
|
|
|
35
35
|
await this.perspectiveInitializedOnline();
|
|
36
36
|
}
|
|
37
37
|
async networkInfoAll(baseRoleName) {
|
|
38
|
-
console.
|
|
38
|
+
console.debug(`networkInfoAll() "${baseRoleName}"`);
|
|
39
39
|
const hvmDef = this.constructor.HVM_DEF;
|
|
40
40
|
const cellMap = this.appProxy.getAppCells(hvmDef.id);
|
|
41
41
|
if (!cellMap) {
|
|
@@ -54,7 +54,7 @@ export class HappElement extends LitElement {
|
|
|
54
54
|
cellAddrs = cellAddrs.concat(flattenCells(cells));
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
console.
|
|
57
|
+
console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));
|
|
58
58
|
let dnaPerAgentMap = new AgentIdMap();
|
|
59
59
|
for (const cellAddr of cellAddrs) {
|
|
60
60
|
if (!dnaPerAgentMap.get(cellAddr.agentId)) {
|
|
@@ -62,7 +62,7 @@ export class HappElement extends LitElement {
|
|
|
62
62
|
}
|
|
63
63
|
dnaPerAgentMap.get(cellAddr.agentId).push(cellAddr.dnaId);
|
|
64
64
|
}
|
|
65
|
-
console.
|
|
65
|
+
console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);
|
|
66
66
|
const allNetInfos = {};
|
|
67
67
|
for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {
|
|
68
68
|
const netInfos = await this.appProxy.networkInfo({ dnas: dnaIds.map((dna) => dna.hash) });
|
package/dist/HappElement.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HappElement.js","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n BaseRoleName,\n AppProxy,\n ConductorAppProxy,\n flattenCells,\n CellIdStr, AgentIdMap, DnaId, CellAddress,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n AppWebsocket,\n ClonedCell,\n InstalledAppId,\n NetworkInfo, Timestamp\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n//import {CellId} from \"@holochain/client/lib/types\";\n// @ts-ignore\nimport * as net from \"net\";\n\n\n/**\n *\n */\nexport class HappElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n protected appProxy!: AppProxy;\n @state() hvm!: HappViewModel;\n\n\n /** Ctor */\n protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number) {\n super();\n /* await */ this.constructHvm(port_or_socket, appId, adminUrl, defaultTimeout);\n }\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedOffline(): Promise<void> {}\n /** */\n async perspectiveInitializedOnline(): Promise<void> {}\n\n /** */\n override shouldUpdate() {\n return !!this.hvm;\n }\n\n /** */\n protected async constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number): Promise<void> {\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappElement subclass \" + this.constructor.name);\n }\n /** Override appId */\n if (appId) {\n hvmDef.id = appId;\n }\n this.appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);\n this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef);\n await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);\n await this.hvmConstructed();\n await this.initializePerspective();\n }\n\n\n /** */\n async initializePerspective(): Promise<void> {\n await this.hvm.initializePerspectiveOffline();\n await this.perspectiveInitializedOffline();\n // TODO move this to a later stage\n await this.hvm.initializePerspectiveOnline();\n await this.perspectiveInitializedOnline();\n }\n\n\n // /** */\n // async networkInfoCell(hcl: HCL): Promise<NetworkInfo> {\n // const dvm = this.hvm.getDvm(hcl);\n // if (!dvm) {\n // return Promise.reject(\"No DNA found at given HCL: \" + hcl.toString());\n // }\n // const netInfoMap = await this.appProxy.networkInfo({dnas: [dvm.cell.dnaId.hash]});\n // return netInfoMap[dvm.cell.dnaId][1];\n // }\n\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\n console.log(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n console.log(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\n /* Sort by agent key */\n let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\n for (const cellAddr of cellAddrs) {\n if (!dnaPerAgentMap.get(cellAddr.agentId)) {\n dnaPerAgentMap.set(cellAddr.agentId, []);\n }\n dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\n }\n console.log(`networkInfoAll() dnaMap`, dnaPerAgentMap);\n /** Call NetworkInfo per AgentId */\n const allNetInfos: Record<CellIdStr, [Timestamp, NetworkInfo]> = {};\n for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\n const netInfos = await this.appProxy.networkInfo({dnas: dnaIds.map((dna) => dna.hash)});\n let i = 0;\n for (const netInfo of netInfos) {\n const idStr = new CellAddress(dnaIds[i]!, agent).str;\n allNetInfos[idStr] = [Date.now(), netInfo];\n i += 1;\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n\n /** */\n dumpLastestNetworkInfo(baseRoleName?: string) {\n console.log(`dumpLastestNetworkInfo() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n throw Error(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n throw Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n let logs = cellAddrs.map((cellAddr) => {\n const logs = this.appProxy.networkInfoLogs[cellAddr.str];\n if (!logs || logs.length === 0) {\n return;\n }\n const [ts, info] = logs[logs.length - 1]!;\n const hcl = this.appProxy.getLocations(cellAddr)!;\n const cellName = this.appProxy.getCellName(hcl[0]!);\n return {\n ts,\n name: cellName,\n dna: cellAddr.dnaId.short,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n agent: cellAddr.agentId.short,\n }\n })\n console.table(logs);\n }\n\n\n /* */\n dumpNetworkInfoLogs(cellIdStr?: string) {\n console.log(`dumpNetworkInfoLogs() \"${cellIdStr}\"`);\n let logMap = this.appProxy.networkInfoLogs;\n if (cellIdStr) {\n logMap = {};\n logMap[cellIdStr] = this.appProxy.networkInfoLogs[cellIdStr]!;\n }\n for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {\n const cellAddr = CellAddress.from(cellIdStr);\n const hcl = this.appProxy.getLocations(cellAddr)!;\n const cellName = this.appProxy.getCellName(hcl[0]!);\n console.log(`NetworfInfo logs of cell \"${cellName}\" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);\n const logs = infoPairs\n .map(([ts, info]) => {\n return {\n ts,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n }\n });\n console.table(logs);\n }\n }\n\n\n /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HappElement.js","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n BaseRoleName,\n AppProxy,\n ConductorAppProxy,\n flattenCells,\n CellIdStr, AgentIdMap, DnaId, CellAddress,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n AppWebsocket,\n ClonedCell,\n InstalledAppId,\n NetworkInfo, Timestamp\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n//import {CellId} from \"@holochain/client/lib/types\";\n// @ts-ignore\nimport * as net from \"net\";\n\n\n/**\n *\n */\nexport class HappElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n protected appProxy!: AppProxy;\n @state() hvm!: HappViewModel;\n\n\n /** Ctor */\n protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number) {\n super();\n /* await */ this.constructHvm(port_or_socket, appId, adminUrl, defaultTimeout);\n }\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedOffline(): Promise<void> {}\n /** */\n async perspectiveInitializedOnline(): Promise<void> {}\n\n /** */\n override shouldUpdate() {\n return !!this.hvm;\n }\n\n /** */\n protected async constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number): Promise<void> {\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappElement subclass \" + this.constructor.name);\n }\n /** Override appId */\n if (appId) {\n hvmDef.id = appId;\n }\n this.appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);\n this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef);\n await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);\n await this.hvmConstructed();\n await this.initializePerspective();\n }\n\n\n /** */\n async initializePerspective(): Promise<void> {\n await this.hvm.initializePerspectiveOffline();\n await this.perspectiveInitializedOffline();\n // TODO move this to a later stage\n await this.hvm.initializePerspectiveOnline();\n await this.perspectiveInitializedOnline();\n }\n\n\n // /** */\n // async networkInfoCell(hcl: HCL): Promise<NetworkInfo> {\n // const dvm = this.hvm.getDvm(hcl);\n // if (!dvm) {\n // return Promise.reject(\"No DNA found at given HCL: \" + hcl.toString());\n // }\n // const netInfoMap = await this.appProxy.networkInfo({dnas: [dvm.cell.dnaId.hash]});\n // return netInfoMap[dvm.cell.dnaId][1];\n // }\n\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\n console.debug(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\n /* Sort by agent key */\n let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\n for (const cellAddr of cellAddrs) {\n if (!dnaPerAgentMap.get(cellAddr.agentId)) {\n dnaPerAgentMap.set(cellAddr.agentId, []);\n }\n dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\n }\n console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);\n /** Call NetworkInfo per AgentId */\n const allNetInfos: Record<CellIdStr, [Timestamp, NetworkInfo]> = {};\n for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\n const netInfos = await this.appProxy.networkInfo({dnas: dnaIds.map((dna) => dna.hash)});\n let i = 0;\n for (const netInfo of netInfos) {\n const idStr = new CellAddress(dnaIds[i]!, agent).str;\n allNetInfos[idStr] = [Date.now(), netInfo];\n i += 1;\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n\n /** */\n dumpLastestNetworkInfo(baseRoleName?: string) {\n console.log(`dumpLastestNetworkInfo() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n const cellMap = this.appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n throw Error(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n throw Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n let logs = cellAddrs.map((cellAddr) => {\n const logs = this.appProxy.networkInfoLogs[cellAddr.str];\n if (!logs || logs.length === 0) {\n return;\n }\n const [ts, info] = logs[logs.length - 1]!;\n const hcl = this.appProxy.getLocations(cellAddr)!;\n const cellName = this.appProxy.getCellName(hcl[0]!);\n return {\n ts,\n name: cellName,\n dna: cellAddr.dnaId.short,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n agent: cellAddr.agentId.short,\n }\n })\n console.table(logs);\n }\n\n\n /* */\n dumpNetworkInfoLogs(cellIdStr?: string) {\n console.log(`dumpNetworkInfoLogs() \"${cellIdStr}\"`);\n let logMap = this.appProxy.networkInfoLogs;\n if (cellIdStr) {\n logMap = {};\n logMap[cellIdStr] = this.appProxy.networkInfoLogs[cellIdStr]!;\n }\n for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {\n const cellAddr = CellAddress.from(cellIdStr);\n const hcl = this.appProxy.getLocations(cellAddr)!;\n const cellName = this.appProxy.getCellName(hcl[0]!);\n console.log(`NetworfInfo logs of cell \"${cellName}\" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);\n const logs = infoPairs\n .map(([ts, info]) => {\n return {\n ts,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n }\n });\n console.table(logs);\n }\n }\n\n\n /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n\n}\n"]}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { LitElement } from "lit";
|
|
2
|
-
import { AppProxy } from "@ddd-qc/cell-proxy";
|
|
2
|
+
import { AppProxy, CellIdStr } from "@ddd-qc/cell-proxy";
|
|
3
3
|
import { HappViewModel } from "./HappViewModel";
|
|
4
4
|
import { HvmDef } from "./definitions";
|
|
5
|
-
import { AppWebsocket, InstalledAppId } from "@holochain/client";
|
|
5
|
+
import { AppWebsocket, InstalledAppId, NetworkInfo, Timestamp } from "@holochain/client";
|
|
6
6
|
export declare class HappMultiElement extends LitElement {
|
|
7
7
|
static HVM_DEF: HvmDef;
|
|
8
8
|
hvms: [AppProxy, HappViewModel][];
|
|
9
9
|
get count(): number;
|
|
10
|
-
protected constructor(
|
|
10
|
+
protected constructor(appInfo: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number);
|
|
11
11
|
hvmConstructed(): Promise<void>;
|
|
12
12
|
perspectiveInitializedOffline(): Promise<void>;
|
|
13
13
|
perspectiveInitializedOnline(): Promise<void>;
|
|
14
14
|
shouldUpdate(): boolean;
|
|
15
|
-
protected constructHvms(
|
|
15
|
+
protected constructHvms(appInfo: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number): Promise<void>;
|
|
16
16
|
initializePerspective(): Promise<void>;
|
|
17
|
+
networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>>;
|
|
18
|
+
dumpLastestNetworkInfo(baseRoleName?: string): void;
|
|
19
|
+
dumpNetworkInfoLogs(cellIdStr?: string): void;
|
|
17
20
|
}
|
|
18
21
|
//# sourceMappingURL=HappMultiElement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HappMultiElement.d.ts","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,
|
|
1
|
+
{"version":3,"file":"HappMultiElement.d.ts","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACL,QAAQ,EAGR,SAAS,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAc,MAAM,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EAAE,SAAS,EACvB,MAAM,mBAAmB,CAAC;AAQ3B,qBAAa,gBAAiB,SAAQ,UAAU;IAG9C,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAK;IAE/C,IAAI,KAAK,IAAI,MAAM,CAA0B;IAG7C,SAAS,aAAa,OAAO,EAAE,CAAC,MAAM,GAAG,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM;IAMvH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAG1C,YAAY;cAKL,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/I,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAiDjG,sBAAsB,CAAC,YAAY,CAAC,EAAE,MAAM;IAiD5C,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM;CAoCvC"}
|
package/dist/HappMultiElement.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { LitElement } from "lit";
|
|
3
3
|
import { state } from "lit/decorators.js";
|
|
4
|
-
import { ConductorAppProxy, } from "@ddd-qc/cell-proxy";
|
|
4
|
+
import { ConductorAppProxy, flattenCells, AgentIdMap, CellAddress, } from "@ddd-qc/cell-proxy";
|
|
5
5
|
import { HappViewModel } from "./HappViewModel";
|
|
6
6
|
export class HappMultiElement extends LitElement {
|
|
7
7
|
get count() { return this.hvms.length; }
|
|
8
|
-
constructor(
|
|
8
|
+
constructor(appInfo, adminUrl, defaultTimeout) {
|
|
9
9
|
super();
|
|
10
10
|
this.hvms = [];
|
|
11
|
-
this.constructHvms(
|
|
11
|
+
this.constructHvms(appInfo, adminUrl, defaultTimeout);
|
|
12
12
|
}
|
|
13
13
|
async hvmConstructed() { }
|
|
14
14
|
async perspectiveInitializedOffline() { }
|
|
@@ -16,19 +16,16 @@ export class HappMultiElement extends LitElement {
|
|
|
16
16
|
shouldUpdate() {
|
|
17
17
|
return this.hvms.length > 0;
|
|
18
18
|
}
|
|
19
|
-
async constructHvms(
|
|
19
|
+
async constructHvms(appInfo, adminUrl, defaultTimeout) {
|
|
20
20
|
const hvmDef = this.constructor.HVM_DEF;
|
|
21
21
|
if (!hvmDef) {
|
|
22
22
|
throw Error("HVM_DEF static field undefined in HappMultiElement subclass " + this.constructor.name);
|
|
23
23
|
}
|
|
24
|
-
for (const [port_or_socket, appId] of
|
|
24
|
+
for (const [port_or_socket, appId] of appInfo) {
|
|
25
|
+
const appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);
|
|
25
26
|
if (appId) {
|
|
26
27
|
hvmDef.id = appId;
|
|
27
28
|
}
|
|
28
|
-
const appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);
|
|
29
|
-
if (!this.appProxy) {
|
|
30
|
-
this.appProxy = appProxy;
|
|
31
|
-
}
|
|
32
29
|
const hvm = await HappViewModel.new(this, appProxy, hvmDef);
|
|
33
30
|
await hvm.authorizeAllZomeCalls(appProxy.adminWs);
|
|
34
31
|
this.hvms.push([appProxy, hvm]);
|
|
@@ -46,6 +43,122 @@ export class HappMultiElement extends LitElement {
|
|
|
46
43
|
}
|
|
47
44
|
await this.perspectiveInitializedOnline();
|
|
48
45
|
}
|
|
46
|
+
async networkInfoAll(baseRoleName) {
|
|
47
|
+
console.debug(`networkInfoAll() "${baseRoleName}"`);
|
|
48
|
+
const hvmDef = this.constructor.HVM_DEF;
|
|
49
|
+
const appProxy = this.hvms[0][0];
|
|
50
|
+
const cellMap = appProxy.getAppCells(hvmDef.id);
|
|
51
|
+
if (!cellMap) {
|
|
52
|
+
return Promise.reject("No cells found at given appId: " + hvmDef.id);
|
|
53
|
+
}
|
|
54
|
+
let cellAddrs = [];
|
|
55
|
+
if (baseRoleName) {
|
|
56
|
+
const cfr = cellMap[baseRoleName];
|
|
57
|
+
if (!cfr) {
|
|
58
|
+
return Promise.reject("No cells found at given baseRoleName: " + baseRoleName);
|
|
59
|
+
}
|
|
60
|
+
cellAddrs = flattenCells(cfr);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
for (const cells of Object.values(cellMap)) {
|
|
64
|
+
cellAddrs = cellAddrs.concat(flattenCells(cells));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));
|
|
68
|
+
let dnaPerAgentMap = new AgentIdMap();
|
|
69
|
+
for (const cellAddr of cellAddrs) {
|
|
70
|
+
if (!dnaPerAgentMap.get(cellAddr.agentId)) {
|
|
71
|
+
dnaPerAgentMap.set(cellAddr.agentId, []);
|
|
72
|
+
}
|
|
73
|
+
dnaPerAgentMap.get(cellAddr.agentId).push(cellAddr.dnaId);
|
|
74
|
+
}
|
|
75
|
+
console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);
|
|
76
|
+
const allNetInfos = {};
|
|
77
|
+
for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {
|
|
78
|
+
const netInfos = await appProxy.networkInfo({ dnas: dnaIds.map((dna) => dna.hash) });
|
|
79
|
+
let i = 0;
|
|
80
|
+
for (const netInfo of netInfos) {
|
|
81
|
+
const idStr = new CellAddress(dnaIds[i], agent).str;
|
|
82
|
+
allNetInfos[idStr] = [Date.now(), netInfo];
|
|
83
|
+
i += 1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return allNetInfos;
|
|
87
|
+
}
|
|
88
|
+
dumpLastestNetworkInfo(baseRoleName) {
|
|
89
|
+
console.log(`dumpLastestNetworkInfo() "${baseRoleName}"`);
|
|
90
|
+
const appProxy = this.hvms[0][0];
|
|
91
|
+
const hvmDef = this.constructor.HVM_DEF;
|
|
92
|
+
const cellMap = appProxy.getAppCells(hvmDef.id);
|
|
93
|
+
if (!cellMap) {
|
|
94
|
+
throw Error("No cells found at given appId: " + hvmDef.id);
|
|
95
|
+
}
|
|
96
|
+
let cellAddrs = [];
|
|
97
|
+
if (baseRoleName) {
|
|
98
|
+
const cfr = cellMap[baseRoleName];
|
|
99
|
+
if (!cfr) {
|
|
100
|
+
throw Promise.reject("No cells found at given baseRoleName: " + baseRoleName);
|
|
101
|
+
}
|
|
102
|
+
cellAddrs = flattenCells(cfr);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
for (const cells of Object.values(cellMap)) {
|
|
106
|
+
cellAddrs = cellAddrs.concat(flattenCells(cells));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
let logs = cellAddrs.map((cellAddr) => {
|
|
110
|
+
const logs = appProxy.networkInfoLogs[cellAddr.str];
|
|
111
|
+
if (!logs || logs.length === 0) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const [ts, info] = logs[logs.length - 1];
|
|
115
|
+
const hcl = appProxy.getLocations(cellAddr);
|
|
116
|
+
const cellName = appProxy.getCellName(hcl[0]);
|
|
117
|
+
return {
|
|
118
|
+
ts,
|
|
119
|
+
name: cellName,
|
|
120
|
+
dna: cellAddr.dnaId.short,
|
|
121
|
+
arc: info.arc_size,
|
|
122
|
+
peers: info.current_number_of_peers,
|
|
123
|
+
total_peers: info.total_network_peers,
|
|
124
|
+
rounds: info.completed_rounds_since_last_time_queried,
|
|
125
|
+
bytes: info.bytes_since_last_time_queried,
|
|
126
|
+
fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
|
|
127
|
+
fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
|
|
128
|
+
agent: cellAddr.agentId.short,
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
console.table(logs);
|
|
132
|
+
}
|
|
133
|
+
dumpNetworkInfoLogs(cellIdStr) {
|
|
134
|
+
console.log(`dumpNetworkInfoLogs() "${cellIdStr}"`);
|
|
135
|
+
const appProxy = this.hvms[0][0];
|
|
136
|
+
let logMap = appProxy.networkInfoLogs;
|
|
137
|
+
if (cellIdStr) {
|
|
138
|
+
logMap = {};
|
|
139
|
+
logMap[cellIdStr] = appProxy.networkInfoLogs[cellIdStr];
|
|
140
|
+
}
|
|
141
|
+
for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {
|
|
142
|
+
const cellAddr = CellAddress.from(cellIdStr);
|
|
143
|
+
const hcl = appProxy.getLocations(cellAddr);
|
|
144
|
+
const cellName = appProxy.getCellName(hcl[0]);
|
|
145
|
+
console.log(`NetworfInfo logs of cell "${cellName}" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);
|
|
146
|
+
const logs = infoPairs
|
|
147
|
+
.map(([ts, info]) => {
|
|
148
|
+
return {
|
|
149
|
+
ts,
|
|
150
|
+
arc: info.arc_size,
|
|
151
|
+
peers: info.current_number_of_peers,
|
|
152
|
+
total_peers: info.total_network_peers,
|
|
153
|
+
rounds: info.completed_rounds_since_last_time_queried,
|
|
154
|
+
bytes: info.bytes_since_last_time_queried,
|
|
155
|
+
fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
|
|
156
|
+
fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
console.table(logs);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
49
162
|
}
|
|
50
163
|
__decorate([
|
|
51
164
|
state()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HappMultiElement.js","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAGL,iBAAiB,GAGlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAiB9C,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAQ9C,IAAI,KAAK,KAAY,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA,CAAA,CAAC;IAG7C,YAAsB,GAA0D,EAAE,QAAc,EAAE,cAAuB;QACvH,KAAK,EAAE,CAAC;QAND,SAAI,GAAgC,EAAE,CAAA;QAOjC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAChE,CAAC;IAGD,KAAK,CAAC,cAAc,KAAmB,CAAC;IAExC,KAAK,CAAC,6BAA6B,KAAmB,CAAC;IAEvD,KAAK,CAAC,4BAA4B,KAAmB,CAAC;IAG7C,YAAY;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAGS,KAAK,CAAC,aAAa,CAAC,GAA0D,EAAE,QAAc,EAAE,cAAuB;QAC/H,MAAM,MAAM,GAAI,IAAI,CAAC,WAAuC,CAAC,OAAO,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,8DAA8D,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACrG;QACD,KAAK,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,GAAG,EAAE;YAEzC,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;aACnB;YACD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAElG,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAEjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC1B;YACD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YAEhC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACpC;IACH,CAAC;IAID,KAAK,CAAC,qBAAqB;QACzB,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YACrC,MAAM,GAAG,CAAC,4BAA4B,EAAE,CAAC;SAC1C;QACD,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAG3C,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;YACrC,MAAM,GAAG,CAAC,2BAA2B,EAAE,CAAC;SACzC;QACD,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAC5C,CAAC;CAwIF;AAtMU;IAAR,KAAK,EAAE;8CAAuC","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n //BaseRoleName,\n AppProxy,\n ConductorAppProxy,\n //flattenCells,\n //CellIdStr, AgentIdMap, DnaId, CellAddress,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {/*CellDef,*/ HvmDef} from \"./definitions\";\nimport {\n AppWebsocket,\n //ClonedCell,\n InstalledAppId,\n //NetworkInfo, Timestamp\n} from \"@holochain/client\";\n//import {DnaViewModel} from \"./DnaViewModel\";\n//import {CellId} from \"@holochain/client/lib/types\";\n// @ts-ignore\nimport * as net from \"net\";\n\n\n/**\n *\n */\nexport class HappMultiElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n @state() hvms: [AppProxy, HappViewModel][] = []\n\n get count(): number {return this.hvms.length}\n\n /** Ctor */\n protected constructor(wtf: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number) {\n super();\n /* await */ this.constructHvms(wtf, adminUrl, defaultTimeout);\n }\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedOffline(): Promise<void> {}\n /** */\n async perspectiveInitializedOnline(): Promise<void> {}\n\n /** */\n override shouldUpdate() {\n return this.hvms.length > 0;\n }\n\n /** */\n protected async constructHvms(wtf: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number): Promise<void> {\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappMultiElement subclass \" + this.constructor.name);\n }\n for (const [port_or_socket, appId] of wtf) {\n /** Override appId */\n if (appId) {\n hvmDef.id = appId;\n }\n const appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);\n // @ts-ignore\n if(!this.appProxy) {\n // @ts-ignore\n this.appProxy = appProxy;\n }\n const hvm = await HappViewModel.new(this, appProxy, hvmDef);\n await hvm.authorizeAllZomeCalls(appProxy.adminWs);\n\n this.hvms.push([appProxy, hvm]);\n\n await this.hvmConstructed();\n await this.initializePerspective();\n }\n }\n\n\n /** */\n async initializePerspective(): Promise<void> {\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveOffline();\n }\n await this.perspectiveInitializedOffline();\n\n // TODO move this to a later stage\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveOnline();\n }\n await this.perspectiveInitializedOnline();\n }\n\n\n //\n // /** */\n // async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\n // console.log(`networkInfoAll() \"${baseRoleName}\"`);\n // /** Grab cellMap */\n // const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n // const cellMap = this.appProxy.getAppCells(hvmDef.id);\n // if (!cellMap) {\n // return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\n // }\n // /** Get cell Ids */\n // let cellAddrs: CellAddress[] = [];\n // if (baseRoleName) {\n // const cfr = cellMap[baseRoleName];\n // if (!cfr) {\n // return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n // }\n // cellAddrs = flattenCells(cfr);\n // } else {\n // for (const cells of Object.values(cellMap)) {\n // cellAddrs = cellAddrs.concat(flattenCells(cells))\n // }\n // }\n // console.log(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\n // /* Sort by agent key */\n // let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\n // for (const cellAddr of cellAddrs) {\n // if (!dnaPerAgentMap.get(cellAddr.agentId)) {\n // dnaPerAgentMap.set(cellAddr.agentId, []);\n // }\n // dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\n // }\n // console.log(`networkInfoAll() dnaMap`, dnaPerAgentMap);\n // /** Call NetworkInfo per AgentId */\n // const allNetInfos: Record<CellIdStr, [Timestamp, NetworkInfo]> = {};\n // for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\n // const netInfos = await this.appProxy.networkInfo({dnas: dnaIds.map((dna) => dna.hash)});\n // let i = 0;\n // for (const netInfo of netInfos) {\n // const idStr = new CellAddress(dnaIds[i]!, agent).str;\n // allNetInfos[idStr] = [Date.now(), netInfo];\n // i += 1;\n // }\n // }\n // /* Done */\n // return allNetInfos;\n // }\n\n //\n // /** */\n // dumpLastestNetworkInfo(baseRoleName?: string) {\n // console.log(`dumpLastestNetworkInfo() \"${baseRoleName}\"`);\n // /** Grab cellMap */\n // const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\n // const cellMap = this.appProxy.getAppCells(hvmDef.id);\n // if (!cellMap) {\n // throw Error(\"No cells found at given appId: \" + hvmDef.id);\n // }\n // /** Get cell Ids */\n // let cellAddrs: CellAddress[] = [];\n // if (baseRoleName) {\n // const cfr = cellMap[baseRoleName];\n // if (!cfr) {\n // throw Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n // }\n // cellAddrs = flattenCells(cfr);\n // } else {\n // for (const cells of Object.values(cellMap)) {\n // cellAddrs = cellAddrs.concat(flattenCells(cells))\n // }\n // }\n // let logs = cellAddrs.map((cellAddr) => {\n // const logs = this.appProxy.networkInfoLogs[cellAddr.str];\n // if (!logs || logs.length === 0) {\n // return;\n // }\n // const [ts, info] = logs[logs.length - 1]!;\n // const hcl = this.appProxy.getLocations(cellAddr)!;\n // const cellName = this.appProxy.getCellName(hcl[0]!);\n // return {\n // ts,\n // name: cellName,\n // dna: cellAddr.dnaId.short,\n // arc: info.arc_size,\n // peers: info.current_number_of_peers,\n // total_peers: info.total_network_peers,\n // rounds: info.completed_rounds_since_last_time_queried,\n // bytes: info.bytes_since_last_time_queried,\n // fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n // fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n // agent: cellAddr.agentId.short,\n // }\n // })\n // console.table(logs);\n // }\n //\n //\n // /* */\n // dumpNetworkInfoLogs(cellIdStr?: string) {\n // console.log(`dumpNetworkInfoLogs() \"${cellIdStr}\"`);\n // let logMap = this.appProxy.networkInfoLogs;\n // if (cellIdStr) {\n // logMap = {};\n // logMap[cellIdStr] = this.appProxy.networkInfoLogs[cellIdStr]!;\n // }\n // for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {\n // const cellAddr = CellAddress.from(cellIdStr);\n // const hcl = this.appProxy.getLocations(cellAddr)!;\n // const cellName = this.appProxy.getCellName(hcl[0]!);\n // console.log(`NetworfInfo logs of cell \"${cellName}\" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);\n // const logs = infoPairs\n // .map(([ts, info]) => {\n // return {\n // ts,\n // arc: info.arc_size,\n // peers: info.current_number_of_peers,\n // total_peers: info.total_network_peers,\n // rounds: info.completed_rounds_since_last_time_queried,\n // bytes: info.bytes_since_last_time_queried,\n // fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n // fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n // }\n // });\n // console.table(logs);\n // }\n // }\n\n\n // /** */\n // async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n // return this.hvm.cloneDvm(baseRoleName, cellDef);\n // }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HappMultiElement.js","sourceRoot":"","sources":["../src/HappMultiElement.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n AppProxy,\n ConductorAppProxy,\n flattenCells,\n CellIdStr, AgentIdMap, DnaId, CellAddress,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {/*CellDef,*/ HvmDef} from \"./definitions\";\nimport {\n AppWebsocket,\n InstalledAppId,\n NetworkInfo, Timestamp\n} from \"@holochain/client\";\n// @ts-ignore\nimport * as net from \"net\";\n\n\n/**\n *\n */\nexport class HappMultiElement extends LitElement {\n\n /** Must be defined by subclass */\n static HVM_DEF: HvmDef;\n\n /** Set during init triggered at ctor */\n @state() hvms: [AppProxy, HappViewModel][] = []\n\n get count(): number {return this.hvms.length}\n\n /** Ctor */\n protected constructor(appInfo: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number) {\n super();\n /* await */ this.constructHvms(appInfo, adminUrl, defaultTimeout);\n }\n\n /** */\n async hvmConstructed(): Promise<void> {}\n /** */\n async perspectiveInitializedOffline(): Promise<void> {}\n /** */\n async perspectiveInitializedOnline(): Promise<void> {}\n\n /** */\n override shouldUpdate() {\n return this.hvms.length > 0;\n }\n\n /** */\n protected async constructHvms(appInfo: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number): Promise<void> {\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n if (!hvmDef) {\n throw Error(\"HVM_DEF static field undefined in HappMultiElement subclass \" + this.constructor.name);\n }\n for (const [port_or_socket, appId] of appInfo) {\n const appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);\n if (appId) {\n /** Override appId */\n hvmDef.id = appId;\n }\n const hvm = await HappViewModel.new(this, appProxy, hvmDef);\n await hvm.authorizeAllZomeCalls(appProxy.adminWs);\n\n this.hvms.push([appProxy, hvm]);\n\n await this.hvmConstructed();\n await this.initializePerspective();\n }\n }\n\n\n /** */\n async initializePerspective(): Promise<void> {\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveOffline();\n }\n await this.perspectiveInitializedOffline();\n\n // TODO move this to a later stage\n for (const [_proxy, hvm] of this.hvms) {\n await hvm.initializePerspectiveOnline();\n }\n await this.perspectiveInitializedOnline();\n }\n\n\n\n /** */\n async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\n console.debug(`networkInfoAll() \"${baseRoleName}\"`);\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n const appProxy = this.hvms[0]![0];\n const cellMap = appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\n /* Sort by agent key */\n let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\n for (const cellAddr of cellAddrs) {\n if (!dnaPerAgentMap.get(cellAddr.agentId)) {\n dnaPerAgentMap.set(cellAddr.agentId, []);\n }\n dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\n }\n console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);\n /** Call NetworkInfo per AgentId */\n const allNetInfos: Record<CellIdStr, [Timestamp, NetworkInfo]> = {};\n for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\n const netInfos = await appProxy.networkInfo({dnas: dnaIds.map((dna) => dna.hash)});\n let i = 0;\n for (const netInfo of netInfos) {\n const idStr = new CellAddress(dnaIds[i]!, agent).str;\n allNetInfos[idStr] = [Date.now(), netInfo];\n i += 1;\n }\n }\n /* Done */\n return allNetInfos;\n }\n\n\n /** */\n dumpLastestNetworkInfo(baseRoleName?: string) {\n console.log(`dumpLastestNetworkInfo() \"${baseRoleName}\"`);\n const appProxy = this.hvms[0]![0];\n /** Grab cellMap */\n const hvmDef = (this.constructor as typeof HappMultiElement).HVM_DEF;\n const cellMap = appProxy.getAppCells(hvmDef.id);\n if (!cellMap) {\n throw Error(\"No cells found at given appId: \" + hvmDef.id);\n }\n /** Get cell Ids */\n let cellAddrs: CellAddress[] = [];\n if (baseRoleName) {\n const cfr = cellMap[baseRoleName];\n if (!cfr) {\n throw Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\n }\n cellAddrs = flattenCells(cfr);\n } else {\n for (const cells of Object.values(cellMap)) {\n cellAddrs = cellAddrs.concat(flattenCells(cells))\n }\n }\n let logs = cellAddrs.map((cellAddr) => {\n const logs = appProxy.networkInfoLogs[cellAddr.str];\n if (!logs || logs.length === 0) {\n return;\n }\n const [ts, info] = logs[logs.length - 1]!;\n const hcl = appProxy.getLocations(cellAddr)!;\n const cellName = appProxy.getCellName(hcl[0]!);\n return {\n ts,\n name: cellName,\n dna: cellAddr.dnaId.short,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n agent: cellAddr.agentId.short,\n }\n })\n console.table(logs);\n }\n\n\n /* */\n dumpNetworkInfoLogs(cellIdStr?: string) {\n console.log(`dumpNetworkInfoLogs() \"${cellIdStr}\"`);\n const appProxy = this.hvms[0]![0];\n let logMap = appProxy.networkInfoLogs;\n if (cellIdStr) {\n logMap = {};\n logMap[cellIdStr] = appProxy.networkInfoLogs[cellIdStr]!;\n }\n for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {\n const cellAddr = CellAddress.from(cellIdStr);\n const hcl = appProxy.getLocations(cellAddr)!;\n const cellName = appProxy.getCellName(hcl[0]!);\n console.log(`NetworfInfo logs of cell \"${cellName}\" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);\n const logs = infoPairs\n .map(([ts, info]) => {\n return {\n ts,\n arc: info.arc_size,\n peers: info.current_number_of_peers,\n total_peers: info.total_network_peers,\n rounds: info.completed_rounds_since_last_time_queried,\n bytes: info.bytes_since_last_time_queried,\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\n }\n });\n console.table(logs);\n }\n }\n\n\n // /** */\n // async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n // return this.hvm.cloneDvm(baseRoleName, cellDef);\n // }\n\n}\n"]}
|
package/dist/ViewModel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewModel.d.ts","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAC,sBAAsB,EAAE,eAAe,EAAC,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsBnC,8BAAsB,SAAS;IAG9B,SAAS,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACzC,SAAS,CAAC,cAAc,EAAE,CAAC,sBAAsB,EAAE,WAAW,CAAC,EAAE,CAAM;IACvE,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE9B,SAAS,CAAC,UAAU,UAAQ;IAK5B,SAAS,CAAC,WAAW,QAAe;IAIpC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IAKrC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IAEhD,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IAG9B,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAElD,SAAS,CAAC,aAAa,IAAI,IAAI;IAM/B,QAAQ,IAAI,IAAI;IAsBhB,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO;IAMxC,cAAc,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI;IAQnD,SAAS,CAAC,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAM5E,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAYpD,SAAS,CAAC,iBAAiB,IAAI,OAAO;
|
|
1
|
+
{"version":3,"file":"ViewModel.d.ts","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAC,sBAAsB,EAAE,eAAe,EAAC,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsBnC,8BAAsB,SAAS;IAG9B,SAAS,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACzC,SAAS,CAAC,cAAc,EAAE,CAAC,sBAAsB,EAAE,WAAW,CAAC,EAAE,CAAM;IACvE,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE9B,SAAS,CAAC,UAAU,UAAQ;IAK5B,SAAS,CAAC,WAAW,QAAe;IAIpC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IAKrC,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IAEhD,QAAQ,KAAK,WAAW,IAAI,OAAO,CAAC;IAG9B,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAElD,SAAS,CAAC,aAAa,IAAI,IAAI;IAM/B,QAAQ,IAAI,IAAI;IAsBhB,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,OAAO;IAMxC,cAAc,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI;IAQnD,SAAS,CAAC,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAM5E,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAYpD,SAAS,CAAC,iBAAiB,IAAI,OAAO;CAiBvC"}
|
package/dist/ViewModel.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ContextProvider } from "@lit/context";
|
|
2
2
|
import { Mutex } from 'async-mutex';
|
|
3
|
+
import { deepCopy } from "./deepcopy/deepCopy";
|
|
3
4
|
export class ViewModel {
|
|
4
5
|
constructor() {
|
|
5
6
|
this._providedHosts = [];
|
|
@@ -45,7 +46,7 @@ export class ViewModel {
|
|
|
45
46
|
if (!this._canNotify || !this.hasChanged()) {
|
|
46
47
|
return false;
|
|
47
48
|
}
|
|
48
|
-
this._previousPerspective = this.perspective;
|
|
49
|
+
this._previousPerspective = deepCopy(this.perspective);
|
|
49
50
|
for (const [host, propName] of this._providedHosts) {
|
|
50
51
|
if (propName == "") {
|
|
51
52
|
host.requestUpdate();
|
package/dist/ViewModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewModel.js","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,eAAe,EAAC,MAAM,cAAc,CAAC;AAItD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewModel.js","sourceRoot":"","sources":["../src/ViewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,eAAe,EAAC,MAAM,cAAc,CAAC;AAItD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAqB5C,MAAM,OAAgB,SAAS;IAA/B;QAIW,mBAAc,GAA4C,EAAE,CAAC;QAG7D,eAAU,GAAG,IAAI,CAAC;QAKlB,gBAAW,GAAG,IAAI,KAAK,EAAE,CAAC;IA+FtC,CAAC;IAjFC,KAAK,CAAC,4BAA4B,KAAmB,CAAC;IAEtD,KAAK,CAAC,2BAA2B,KAAmB,CAAC;IAE3C,aAAa,KAAU,CAAC;IAAA,CAAC;IAMnC,QAAQ;QAKN,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO;SACR;QACD,IAAI,CAAC,WAAW;aACb,OAAO,EAAE;aACT,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC;IAaD,cAAc,CAAC,YAA6B;QAC1C,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAKD,SAAS,CAAC,YAAoC,EAAE,QAAqB;QAChE,YAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAA;IACtD,CAAC;IAGD,WAAW,CAAC,SAAiC;QACzC,IAAI,KAAK,GAAI,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YACjD,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM;YAC9B,KAAK,IAAI,CAAC,CAAC;SACd;QACD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACxC;IACL,CAAC;IAGS,iBAAiB;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAGvD,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;YAClD,IAAI,QAAQ,IAAI,EAAE,EAAE;gBACjB,IAAY,CAAC,aAAa,EAAE,CAAC;aAC/B;iBAAM;gBACJ,IAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;aACrD;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAEF","sourcesContent":["import {Context, ContextProvider} from \"@lit/context\";\nimport {ReactiveControllerHost, ReactiveElement} from \"lit\";\nimport {AppSignalCb} from \"@holochain/client\";\n\nimport { Mutex } from 'async-mutex';\nimport {deepCopy} from \"./deepcopy/deepCopy\";\n\n// enum InitializationState {\n// Uninitialized = \"Uninitialized\",\n// InitializingOffline = \"InitializingOffline\",\n// InitializingOnline = \"InitializingOnline\",\n// Initialized = \"Initialized\",\n// }\n\n\n/**\n * ABC of a ViewModel.\n * It mediates the interaction between a View (CustomElements) and a Model (Zome / DNA).\n * It is an Observable meant to be observed by (Lit) ReactiveElements.\n * It is meant to be a singleton passed around by a (Lit) Context.\n * The ViewModel contains a perspective: All the data that a view can observe.\n * To update subscribers, it makes use of Lit's reactive properties.\n * When subscribing, a host must provide a reactive property that has the ViewModel's perspestives's type.\n * Hosts can trigger probing in order to get an updated perspective.\n * The perspective can be automatically updated by internal events.\n */\n export abstract class ViewModel {\n\n /** -- Fields -- */\n protected _previousPerspective?: unknown;\n protected _providedHosts: [ReactiveControllerHost, PropertyKey][] = [];\n protected _provider?: unknown; // FIXME type: ContextProvider<this.getContext()>;\n\n protected _canNotify = true; // Master switch for notifying subscribers\n\n //protected _initializationState: InitializationState = InitializationState.Uninitialized;\n\n\n protected _probeMutex = new Mutex();\n\n /** -- Abstract fields -- */\n\n abstract signalHandler?: AppSignalCb;\n\n\n /** -- Abstract methods -- */\n\n abstract getContext(): Context<unknown, unknown>;\n /* Child class should implement with specific type */\n abstract get perspective(): unknown;\n\n /* (optional) Set perspective with data from the source-chain only */\n async initializePerspectiveOffline(): Promise<void> {}\n /* (optional) Set perspective with data from the DHT */\n async initializePerspectiveOnline(): Promise<void> {}\n /* (optional) Lets the observer trigger probing into the network in order to get an updated perspective */\n protected probeAllInner(): void {};\n\n /**\n * Mutex wrapping of probeAllInner: Don't call probeAll() during a probeAll()\n * Should not be async as we expect this to be long, so happs are expected to use signals instead if something changed.\n */\n probeAll(): void {\n // if (this._initializationState !== InitializationState.Initialized) {\n // console.warn(\"probeAll() called on unitialized ViewModel\");\n // return;\n // }\n if (this._probeMutex.isLocked()) {\n console.log(\"probeAll() call skipped. Reason: Already running.\");\n return;\n }\n this._probeMutex\n .acquire()\n .then(async (release) => {\n this.probeAllInner();\n release();\n });\n }\n\n /**\n * Return true if the perspective has changed. This will trigger an update on the observers\n * Child classes are expected to compare their latest constructed perspective (the one returned by this.perspective())\n * with this._previousPerspective.\n */\n protected abstract hasChanged(): boolean;\n\n\n /** -- Final methods -- */\n\n /** Set ContextProvider for host */\n provideContext(providerHost: ReactiveElement): void {\n console.log(`\\t\\tProviding context \"${this.getContext()}\" | in host `, providerHost);\n this._provider = new ContextProvider(providerHost, this.getContext(), this);\n }\n\n /** -- Observer pattern -- */\n\n /** */\n subscribe(providedHost: ReactiveControllerHost, propName: PropertyKey): void {\n (providedHost as any)[propName] = this.perspective;\n this._providedHosts.push([providedHost, propName])\n }\n\n /** */\n unsubscribe(candidate: ReactiveControllerHost): void {\n let index = 0;\n for (const [host, _propName] of this._providedHosts) {\n if (host === candidate) break;\n index += 1;\n }\n if (index > -1) {\n this._providedHosts.splice(index, 1);\n }\n }\n\n /** */\n protected notifySubscribers(): boolean {\n if (!this._canNotify || !this.hasChanged()) {\n return false;\n }\n this._previousPerspective = deepCopy(this.perspective);\n //this._previousPerspective = structuredClone(this.perspective);\n //this._previousPerspective = this.perspective;\n for (const [host, propName] of this._providedHosts) {\n if (propName == \"\") {\n (host as any).requestUpdate();\n } else {\n (host as any)[propName] = this._previousPerspective;\n }\n }\n return true;\n }\n\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneArrayBuffer.d.ts","sourceRoot":"","sources":["../../src/deepcopy/cloneArrayBuffer.ts"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAItE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneArrayBuffer.js","sourceRoot":"","sources":["../../src/deepcopy/cloneArrayBuffer.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/**\r\n * Creates a clone of `arrayBuffer`.\r\n *\r\n * @private\r\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\r\n * @returns {ArrayBuffer} Returns the cloned array buffer.\r\n */\r\nexport function cloneArrayBuffer(arrayBuffer: ArrayBuffer): ArrayBuffer {\r\n const result = new ArrayBuffer(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneDataView.d.ts","sourceRoot":"","sources":["../../src/deepcopy/cloneDataView.ts"],"names":[],"mappings":"AASA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAG1D"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { cloneArrayBuffer } from "./cloneArrayBuffer";
|
|
2
|
+
export function cloneDataView(dataView) {
|
|
3
|
+
const buffer = cloneArrayBuffer(dataView.buffer);
|
|
4
|
+
return new DataView(buffer, dataView.byteOffset, dataView.byteLength);
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=cloneDataView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneDataView.js","sourceRoot":"","sources":["../../src/deepcopy/cloneDataView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAStD,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxE,CAAC","sourcesContent":["import { cloneArrayBuffer } from \"./cloneArrayBuffer\";\r\n\r\n/**\r\n * Creates a clone of `dataView`.\r\n *\r\n * @private\r\n * @param {Object} dataView The data view to clone.\r\n * @returns {Object} Returns the cloned data view.\r\n */\r\nexport function cloneDataView(dataView: DataView): DataView {\r\n const buffer = cloneArrayBuffer(dataView.buffer);\r\n return new DataView(buffer, dataView.byteOffset, dataView.byteLength);\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneDate.d.ts","sourceRoot":"","sources":["../../src/deepcopy/cloneDate.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAEhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneDate.js","sourceRoot":"","sources":["../../src/deepcopy/cloneDate.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,SAAS,CAAC,UAAgB;IACxC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC","sourcesContent":["/**\r\n * Creates a clone of `date`.\r\n *\r\n * @private\r\n * @param {Date} typedDate The date to clone.\r\n * @returns {Object} Returns the cloned date.\r\n */\r\nexport function cloneDate(targetDate: Date): Date {\r\n return new Date(targetDate.getTime());\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneMap.d.ts","sourceRoot":"","sources":["../../src/deepcopy/cloneMap.ts"],"names":[],"mappings":"AASA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAI9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneMap.js","sourceRoot":"","sources":["../../src/deepcopy/cloneMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC,MAAM,UAAU,QAAQ,CAAO,SAAoB;IACjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAQ,CAAC;IAC5B,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { deepCopy } from \"./deepCopy\";\r\n\r\n/**\r\n * Creates a clone of `map`.\r\n *\r\n * @private\r\n * @param {Date} typedDate The map to clone.\r\n * @returns {Object} Returns the cloned map.\r\n */\r\nexport function cloneMap<K, V>(targetMap: Map<K, V>): Map<K, V> {\r\n const map = new Map<K, V>();\r\n targetMap.forEach((value, key) => map.set(deepCopy(key), deepCopy(value)));\r\n return map;\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneRegexp.d.ts","sourceRoot":"","sources":["../../src/deepcopy/cloneRegexp.ts"],"names":[],"mappings":"AAOA,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneRegexp.js","sourceRoot":"","sources":["../../src/deepcopy/cloneRegexp.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/**\r\n * Creates a clone of `regexp`.\r\n *\r\n * @private\r\n * @param {Object} targetRegexp The regexp to clone.\r\n * @returns {Object} Returns the cloned regexp.\r\n */\r\nexport function cloneRegExp(targetRegexp: RegExp): RegExp {\r\n const result = new RegExp(targetRegexp.source, targetRegexp.flags);\r\n result.lastIndex = targetRegexp.lastIndex;\r\n return result;\r\n}\r\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type TypedArrayType = Float32Array | Float64Array | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Uint8ClampedArray | BigInt64Array | BigUint64Array;
|
|
2
|
+
export declare function cloneTypedArray(typedArray: TypedArrayType): TypedArrayType;
|
|
3
|
+
//# sourceMappingURL=cloneTypedArray.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneTypedArray.d.ts","sourceRoot":"","sources":["../../src/deepcopy/cloneTypedArray.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,WAAW,GACX,iBAAiB,GACjB,aAAa,GACb,cAAc,CAAC;AAkCnB,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,CAa1E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { cloneArrayBuffer } from "./cloneArrayBuffer";
|
|
2
|
+
const TypedArrayMap = {
|
|
3
|
+
"[object Float32Array]": Float32Array,
|
|
4
|
+
"[object Float64Array]": Float64Array,
|
|
5
|
+
"[object Int8Array]": Int8Array,
|
|
6
|
+
"[object Int16Array]": Int16Array,
|
|
7
|
+
"[object Int32Array]": Int32Array,
|
|
8
|
+
"[object Uint8Array]": Uint8Array,
|
|
9
|
+
"[object Uint16Array]": Uint16Array,
|
|
10
|
+
"[object Uint32Array]": Uint32Array,
|
|
11
|
+
"[object Uint8ClampedArray]": Uint8ClampedArray
|
|
12
|
+
};
|
|
13
|
+
export function cloneTypedArray(typedArray) {
|
|
14
|
+
try {
|
|
15
|
+
TypedArrayMap["[object BigInt64Array]"] = BigInt64Array;
|
|
16
|
+
TypedArrayMap["[object BigUint64Array]"] = BigUint64Array;
|
|
17
|
+
}
|
|
18
|
+
catch (e) { }
|
|
19
|
+
const buffer = cloneArrayBuffer(typedArray.buffer);
|
|
20
|
+
return new TypedArrayMap[Object.prototype.toString.call(typedArray)](buffer, typedArray.byteOffset, typedArray.length);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=cloneTypedArray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneTypedArray.js","sourceRoot":"","sources":["../../src/deepcopy/cloneTypedArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA4BtD,MAAM,aAAa,GAA8C;IAC/D,uBAAuB,EAAE,YAAY;IACrC,uBAAuB,EAAE,YAAY;IACrC,oBAAoB,EAAE,SAAS;IAC/B,qBAAqB,EAAE,UAAU;IACjC,qBAAqB,EAAE,UAAU;IACjC,qBAAqB,EAAE,UAAU;IACjC,sBAAsB,EAAE,WAAW;IACnC,sBAAsB,EAAE,WAAW;IACnC,4BAA4B,EAAE,iBAAiB;CAChD,CAAC;AASF,MAAM,UAAU,eAAe,CAAC,UAA0B;IACxD,IAAG;QACD,aAAa,CAAC,wBAAwB,CAAC,GAAG,aAAa,CAAC;QACxD,aAAa,CAAC,yBAAyB,CAAC,GAAG,cAAc,CAAC;KAC3D;IAAA,OAAM,CAAC,EAAC,GAAE;IAEX,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAClE,MAAM,EACN,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,MAAM,CAClB,CAAC;AACJ,CAAC","sourcesContent":["import { cloneArrayBuffer } from \"./cloneArrayBuffer\";\r\n\r\nexport type TypedArrayType =\r\n | Float32Array\r\n | Float64Array\r\n | Int8Array\r\n | Int16Array\r\n | Int32Array\r\n | Uint8Array\r\n | Uint16Array\r\n | Uint32Array\r\n | Uint8ClampedArray\r\n | BigInt64Array\r\n | BigUint64Array;\r\n\r\ntype TypedArrayConstructorType =\r\n | Float32ArrayConstructor\r\n | Float64ArrayConstructor\r\n | Int8ArrayConstructor\r\n | Int16ArrayConstructor\r\n | Int32ArrayConstructor\r\n | Uint8ArrayConstructor\r\n | Uint16ArrayConstructor\r\n | Uint32ArrayConstructor\r\n | Uint8ClampedArrayConstructor\r\n | BigInt64ArrayConstructor\r\n | BigUint64ArrayConstructor;\r\n\r\nconst TypedArrayMap: Record<string, TypedArrayConstructorType> = {\r\n \"[object Float32Array]\": Float32Array,\r\n \"[object Float64Array]\": Float64Array,\r\n \"[object Int8Array]\": Int8Array,\r\n \"[object Int16Array]\": Int16Array,\r\n \"[object Int32Array]\": Int32Array,\r\n \"[object Uint8Array]\": Uint8Array,\r\n \"[object Uint16Array]\": Uint16Array,\r\n \"[object Uint32Array]\": Uint32Array,\r\n \"[object Uint8ClampedArray]\": Uint8ClampedArray\r\n};\r\n\r\n/**\r\n * Creates a clone of `typedArray`.\r\n *\r\n * @private\r\n * @param {Object} typedArray The typed array to clone.\r\n * @returns {Object} Returns the cloned typed array.\r\n */\r\nexport function cloneTypedArray(typedArray: TypedArrayType): TypedArrayType {\r\n try{\r\n TypedArrayMap[\"[object BigInt64Array]\"] = BigInt64Array;\r\n TypedArrayMap[\"[object BigUint64Array]\"] = BigUint64Array;\r\n }catch(e){}\r\n\r\n const buffer = cloneArrayBuffer(typedArray.buffer);\r\n // @ts-ignore\r\n return new TypedArrayMap[Object.prototype.toString.call(typedArray)](\r\n buffer,\r\n typedArray.byteOffset,\r\n typedArray.length\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepCopy.d.ts","sourceRoot":"","sources":["../../src/deepcopy/deepCopy.ts"],"names":[],"mappings":"AAiCA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CA2BxC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { cloneArrayBuffer } from "./cloneArrayBuffer";
|
|
2
|
+
import { cloneDataView } from "./cloneDataView";
|
|
3
|
+
import { cloneDate } from "./cloneDate";
|
|
4
|
+
import { cloneMap } from "./cloneMap";
|
|
5
|
+
import { cloneRegExp } from "./cloneRegexp";
|
|
6
|
+
import { cloneTypedArray } from "./cloneTypedArray";
|
|
7
|
+
const TypedArrayMap = {
|
|
8
|
+
"[object Date]": cloneDate,
|
|
9
|
+
"[object ArrayBuffer]": cloneArrayBuffer,
|
|
10
|
+
"[object DataView]": cloneDataView,
|
|
11
|
+
"[object Float32Array]": cloneTypedArray,
|
|
12
|
+
"[object Float64Array]": cloneTypedArray,
|
|
13
|
+
"[object Int8Array]": cloneTypedArray,
|
|
14
|
+
"[object Int16Array]": cloneTypedArray,
|
|
15
|
+
"[object Int32Array]": cloneTypedArray,
|
|
16
|
+
"[object Uint8Array]": cloneTypedArray,
|
|
17
|
+
"[object Uint8ClampedArray]": cloneTypedArray,
|
|
18
|
+
"[object Uint16Array]": cloneTypedArray,
|
|
19
|
+
"[object Uint32Array]": cloneTypedArray,
|
|
20
|
+
"[object BigInt64Array]": cloneTypedArray,
|
|
21
|
+
"[object BigUint64Array]": cloneTypedArray,
|
|
22
|
+
"[object RegExp]": cloneRegExp,
|
|
23
|
+
"[object Map]": cloneMap,
|
|
24
|
+
};
|
|
25
|
+
export function deepCopy(target) {
|
|
26
|
+
const tag = Object.prototype.toString.call(target);
|
|
27
|
+
if (TypedArrayMap[tag]) {
|
|
28
|
+
return TypedArrayMap[tag](target);
|
|
29
|
+
}
|
|
30
|
+
if (target === null) {
|
|
31
|
+
return target;
|
|
32
|
+
}
|
|
33
|
+
if (target instanceof Array) {
|
|
34
|
+
const cp = [];
|
|
35
|
+
target.forEach((v) => {
|
|
36
|
+
cp.push(v);
|
|
37
|
+
});
|
|
38
|
+
return cp.map((n) => deepCopy(n));
|
|
39
|
+
}
|
|
40
|
+
if (typeof target === "object") {
|
|
41
|
+
const cp = { ...target };
|
|
42
|
+
Object.keys(cp).forEach((k) => {
|
|
43
|
+
cp[k] = deepCopy(cp[k]);
|
|
44
|
+
});
|
|
45
|
+
return cp;
|
|
46
|
+
}
|
|
47
|
+
return target;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=deepCopy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepCopy.js","sourceRoot":"","sources":["../../src/deepcopy/deepCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,aAAa,GAA6B;IAC9C,eAAe,EAAE,SAAS;IAC1B,sBAAsB,EAAE,gBAAgB;IACxC,mBAAmB,EAAE,aAAa;IAClC,uBAAuB,EAAE,eAAe;IACxC,uBAAuB,EAAE,eAAe;IACxC,oBAAoB,EAAE,eAAe;IACrC,qBAAqB,EAAE,eAAe;IACtC,qBAAqB,EAAE,eAAe;IACtC,qBAAqB,EAAE,eAAe;IACtC,4BAA4B,EAAE,eAAe;IAC7C,sBAAsB,EAAE,eAAe;IACvC,sBAAsB,EAAE,eAAe;IACvC,wBAAwB,EAAE,eAAe;IACzC,yBAAyB,EAAE,eAAe;IAC1C,iBAAiB,EAAE,WAAW;IAC9B,cAAc,EAAE,QAAQ;CACzB,CAAC;AASF,MAAM,UAAU,QAAQ,CAAI,MAAS;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QAEtB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;KACnC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,MAAM,YAAY,KAAK,EAAE;QAC3B,MAAM,EAAE,GAAG,EAAW,CAAC;QACtB,MAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAM,CAAC,CAAC,CAAQ,CAAC;KACpD;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,MAAM,EAAE,GAAG,EAAE,GAAI,MAAiC,EAEjD,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,EAAO,CAAC;KAChB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { cloneArrayBuffer } from \"./cloneArrayBuffer\";\r\nimport { cloneDataView } from \"./cloneDataView\";\r\nimport { cloneDate } from \"./cloneDate\";\r\nimport { cloneMap } from \"./cloneMap\";\r\nimport { cloneRegExp } from \"./cloneRegexp\";\r\nimport { cloneTypedArray } from \"./cloneTypedArray\";\r\n\r\nconst TypedArrayMap: Record<string, Function> = {\r\n \"[object Date]\": cloneDate,\r\n \"[object ArrayBuffer]\": cloneArrayBuffer,\r\n \"[object DataView]\": cloneDataView,\r\n \"[object Float32Array]\": cloneTypedArray,\r\n \"[object Float64Array]\": cloneTypedArray,\r\n \"[object Int8Array]\": cloneTypedArray,\r\n \"[object Int16Array]\": cloneTypedArray,\r\n \"[object Int32Array]\": cloneTypedArray,\r\n \"[object Uint8Array]\": cloneTypedArray,\r\n \"[object Uint8ClampedArray]\": cloneTypedArray,\r\n \"[object Uint16Array]\": cloneTypedArray,\r\n \"[object Uint32Array]\": cloneTypedArray,\r\n \"[object BigInt64Array]\": cloneTypedArray,\r\n \"[object BigUint64Array]\": cloneTypedArray,\r\n \"[object RegExp]\": cloneRegExp,\r\n \"[object Map]\": cloneMap,\r\n};\r\n\r\n/**\r\n * Deep copy function for TypeScript.\r\n * @param T Generic type of target/copied value.\r\n * @param target Target value to be copied.\r\n * @see Original source: ts-deepcopy https://github.com/ykdr2017/ts-deepcopy\r\n * @see Code pen https://codepen.io/erikvullings/pen/ejyBYg\r\n */\r\nexport function deepCopy<T>(target: T): T {\r\n const tag = Object.prototype.toString.call(target);\r\n\r\n if (TypedArrayMap[tag]) {\r\n // @ts-ignore\r\n return TypedArrayMap[tag](target);\r\n }\r\n if (target === null) {\r\n return target;\r\n }\r\n if (target instanceof Array) {\r\n const cp = [] as any[];\r\n (target as any[]).forEach((v) => {\r\n cp.push(v);\r\n });\r\n return cp.map((n: any) => deepCopy<any>(n)) as any;\r\n }\r\n if (typeof target === \"object\") {\r\n const cp = { ...(target as { [key: string]: any }) } as {\r\n [key: string]: any;\r\n };\r\n Object.keys(cp).forEach((k) => {\r\n cp[k] = deepCopy<any>(cp[k]);\r\n });\r\n return cp as T;\r\n }\r\n return target;\r\n}\r\n"]}
|