@ddd-qc/lit-happ 0.31.3 → 0.31.5

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.
@@ -1,13 +1,15 @@
1
1
  import { LitElement } from "lit";
2
- import { BaseRoleName, AppProxy, CellIdStr } from "@ddd-qc/cell-proxy";
2
+ import { BaseRoleName, AppProxy } from "@ddd-qc/cell-proxy";
3
3
  import { HappViewModel } from "./HappViewModel";
4
4
  import { CellDef, HvmDef } from "./definitions";
5
- import { AppWebsocket, ClonedCell, InstalledAppId, NetworkInfo, Timestamp } from "@holochain/client";
5
+ import { AppWebsocket, ClonedCell, InstalledAppId } from "@holochain/client";
6
6
  import { DnaViewModel } from "./DnaViewModel";
7
+ import { NetworkCaller } from "./NetworkCaller";
7
8
  export declare class HappElement extends LitElement {
8
9
  static HVM_DEF: HvmDef;
9
10
  protected appProxy: AppProxy;
10
11
  hvm: HappViewModel;
12
+ networkCaller?: NetworkCaller;
11
13
  protected constructor(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number);
12
14
  hvmConstructed(): Promise<void>;
13
15
  perspectiveInitializedOffline(): Promise<void>;
@@ -15,9 +17,6 @@ export declare class HappElement extends LitElement {
15
17
  shouldUpdate(): boolean;
16
18
  protected constructHvm(port_or_socket: number | AppWebsocket, appId?: InstalledAppId, adminUrl?: URL, defaultTimeout?: number): Promise<void>;
17
19
  initializePerspective(): Promise<void>;
18
- networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>>;
19
- dumpLastestNetworkInfo(baseRoleName?: string): void;
20
- dumpNetworkInfoLogs(cellIdStr?: string): void;
21
20
  createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]>;
22
21
  }
23
22
  //# sourceMappingURL=HappElement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HappElement.d.ts","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,QAAQ,EAGR,SAAS,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,WAAW,EAAE,SAAS,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAS5C,qBAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGvB,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC;IACrB,GAAG,EAAG,aAAa,CAAC;IAI7B,SAAS,aAAa,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM;IAMtH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAG1C,YAAY;cAKL,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7I,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAgDjG,sBAAsB,CAAC,YAAY,CAAC,EAAE,MAAM;IAgD5C,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM;IA+BhC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;CAItG"}
1
+ {"version":3,"file":"HappElement.d.ts","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,QAAQ,EAET,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,qBAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGvB,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC;IACrB,GAAG,EAAG,aAAa,CAAC;IAI7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAI9B,SAAS,aAAa,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM;IAMtH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9C,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAG1C,YAAY;cAKL,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7I,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;CAItG"}
@@ -1,8 +1,9 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { LitElement } from "lit";
3
3
  import { state } from "lit/decorators.js";
4
- import { ConductorAppProxy, flattenCells, AgentIdMap, CellAddress, } from "@ddd-qc/cell-proxy";
4
+ import { ConductorAppProxy, } from "@ddd-qc/cell-proxy";
5
5
  import { HappViewModel } from "./HappViewModel";
6
+ import { NetworkCaller } from "./NetworkCaller";
6
7
  export class HappElement extends LitElement {
7
8
  constructor(port_or_socket, appId, adminUrl, defaultTimeout) {
8
9
  super();
@@ -24,6 +25,7 @@ export class HappElement extends LitElement {
24
25
  }
25
26
  this.appProxy = await ConductorAppProxy.new(port_or_socket, hvmDef.id, adminUrl, defaultTimeout);
26
27
  this.hvm = await HappViewModel.new(this, this.appProxy, hvmDef, true);
28
+ this.networkCaller = new NetworkCaller(this.appProxy);
27
29
  await this.hvm.authorizeAllZomeCalls(this.appProxy.adminWs);
28
30
  await this.hvmConstructed();
29
31
  await this.initializePerspective();
@@ -34,119 +36,6 @@ export class HappElement extends LitElement {
34
36
  await this.hvm.initializePerspectiveOnline();
35
37
  await this.perspectiveInitializedOnline();
36
38
  }
37
- async networkInfoAll(baseRoleName) {
38
- console.debug(`networkInfoAll() "${baseRoleName}"`);
39
- const hvmDef = this.constructor.HVM_DEF;
40
- const cellMap = this.appProxy.getAppCells(hvmDef.id);
41
- if (!cellMap) {
42
- return Promise.reject("No cells found at given appId: " + hvmDef.id);
43
- }
44
- let cellAddrs = [];
45
- if (baseRoleName) {
46
- const cfr = cellMap[baseRoleName];
47
- if (!cfr) {
48
- return Promise.reject("No cells found at given baseRoleName: " + baseRoleName);
49
- }
50
- cellAddrs = flattenCells(cfr);
51
- }
52
- else {
53
- for (const cells of Object.values(cellMap)) {
54
- cellAddrs = cellAddrs.concat(flattenCells(cells));
55
- }
56
- }
57
- console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));
58
- let dnaPerAgentMap = new AgentIdMap();
59
- for (const cellAddr of cellAddrs) {
60
- if (!dnaPerAgentMap.get(cellAddr.agentId)) {
61
- dnaPerAgentMap.set(cellAddr.agentId, []);
62
- }
63
- dnaPerAgentMap.get(cellAddr.agentId).push(cellAddr.dnaId);
64
- }
65
- console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);
66
- const allNetInfos = {};
67
- for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {
68
- const netInfos = await this.appProxy.networkInfo({ dnas: dnaIds.map((dna) => dna.hash) });
69
- let i = 0;
70
- for (const netInfo of netInfos) {
71
- const idStr = new CellAddress(dnaIds[i], agent).str;
72
- allNetInfos[idStr] = [Date.now(), netInfo];
73
- i += 1;
74
- }
75
- }
76
- return allNetInfos;
77
- }
78
- dumpLastestNetworkInfo(baseRoleName) {
79
- console.log(`dumpLastestNetworkInfo() "${baseRoleName}"`);
80
- const hvmDef = this.constructor.HVM_DEF;
81
- const cellMap = this.appProxy.getAppCells(hvmDef.id);
82
- if (!cellMap) {
83
- throw Error("No cells found at given appId: " + hvmDef.id);
84
- }
85
- let cellAddrs = [];
86
- if (baseRoleName) {
87
- const cfr = cellMap[baseRoleName];
88
- if (!cfr) {
89
- throw Promise.reject("No cells found at given baseRoleName: " + baseRoleName);
90
- }
91
- cellAddrs = flattenCells(cfr);
92
- }
93
- else {
94
- for (const cells of Object.values(cellMap)) {
95
- cellAddrs = cellAddrs.concat(flattenCells(cells));
96
- }
97
- }
98
- let logs = cellAddrs.map((cellAddr) => {
99
- const logs = this.appProxy.networkInfoLogs[cellAddr.str];
100
- if (!logs || logs.length === 0) {
101
- return;
102
- }
103
- const [ts, info] = logs[logs.length - 1];
104
- const hcl = this.appProxy.getLocations(cellAddr);
105
- const cellName = this.appProxy.getCellName(hcl[0]);
106
- return {
107
- ts,
108
- name: cellName,
109
- dna: cellAddr.dnaId.short,
110
- arc: info.arc_size,
111
- peers: info.current_number_of_peers,
112
- total_peers: info.total_network_peers,
113
- rounds: info.completed_rounds_since_last_time_queried,
114
- bytes: info.bytes_since_last_time_queried,
115
- fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
116
- fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
117
- agent: cellAddr.agentId.short,
118
- };
119
- });
120
- console.table(logs);
121
- }
122
- dumpNetworkInfoLogs(cellIdStr) {
123
- console.log(`dumpNetworkInfoLogs() "${cellIdStr}"`);
124
- let logMap = this.appProxy.networkInfoLogs;
125
- if (cellIdStr) {
126
- logMap = {};
127
- logMap[cellIdStr] = this.appProxy.networkInfoLogs[cellIdStr];
128
- }
129
- for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {
130
- const cellAddr = CellAddress.from(cellIdStr);
131
- const hcl = this.appProxy.getLocations(cellAddr);
132
- const cellName = this.appProxy.getCellName(hcl[0]);
133
- console.log(`NetworfInfo logs of cell "${cellName}" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);
134
- const logs = infoPairs
135
- .map(([ts, info]) => {
136
- return {
137
- ts,
138
- arc: info.arc_size,
139
- peers: info.current_number_of_peers,
140
- total_peers: info.total_network_peers,
141
- rounds: info.completed_rounds_since_last_time_queried,
142
- bytes: info.bytes_since_last_time_queried,
143
- fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
144
- fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
145
- };
146
- });
147
- console.table(logs);
148
- }
149
- }
150
39
  async createClone(baseRoleName, cellDef) {
151
40
  return this.hvm.cloneDvm(baseRoleName, cellDef);
152
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HappElement.js","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAGL,iBAAiB,EACjB,YAAY,EACD,UAAU,EAAS,WAAW,GAC1C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAiB9C,MAAM,OAAO,WAAY,SAAQ,UAAU;IAWzC,YAAsB,cAAqC,EAAE,KAAsB,EAAE,QAAc,EAAE,cAAuB;QAC1H,KAAK,EAAE,CAAC;QACI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACjF,CAAC;IAGD,KAAK,CAAC,cAAc,KAAmB,CAAC;IAExC,KAAK,CAAC,6BAA6B,KAAmB,CAAC;IAEvD,KAAK,CAAC,4BAA4B,KAAmB,CAAC;IAG7C,YAAY;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAGS,KAAK,CAAC,YAAY,CAAC,cAAqC,EAAE,KAAsB,EAAE,QAAc,EAAE,cAAuB;QACjI,MAAM,MAAM,GAAI,IAAI,CAAC,WAAkC,CAAC,OAAO,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,yDAAyD,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAChG;QAED,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjG,IAAI,CAAC,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAEtE,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAID,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAE3C,MAAM,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAC5C,CAAC;IAeD,KAAK,CAAC,cAAc,CAAC,YAAqB;QACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,YAAY,GAAG,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAI,IAAI,CAAC,WAAkC,CAAC,OAAO,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;SACtE;QAED,IAAI,SAAS,GAAkB,EAAE,CAAC;QAClC,IAAI,YAAY,EAAE;YAChB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,wCAAwC,GAAG,YAAY,CAAC,CAAC;aAChF;YACD,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACL,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1C,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;aAClD;SACF;QACD,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/E,IAAI,cAAc,GAAwB,IAAI,UAAU,EAAE,CAAC;QAC3D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACzC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aAC1C;YACD,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC5D;QACD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAgD,EAAE,CAAC;QACpE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YACxF,IAAI,CAAC,GAAI,CAAC,CAAC;YACX,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC;gBACrD,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC3C,CAAC,IAAI,CAAC,CAAC;aACR;SACF;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAID,sBAAsB,CAAC,YAAqB;QAC1C,OAAO,CAAC,GAAG,CAAC,6BAA6B,YAAY,GAAG,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAI,IAAI,CAAC,WAAkC,CAAC,OAAO,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CAAC,iCAAiC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;SAC5D;QAED,IAAI,SAAS,GAAkB,EAAE,CAAC;QAClC,IAAI,YAAY,EAAE;YAChB,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,EAAE;gBACR,MAAM,OAAO,CAAC,MAAM,CAAC,wCAAwC,GAAG,YAAY,CAAC,CAAC;aAC/E;YACD,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACL,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1C,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;aAClD;SACF;QACD,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,OAAO;aACR;YACD,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;YACpD,OAAO;gBACD,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK;gBACzB,GAAG,EAAE,IAAI,CAAC,QAAQ;gBAClB,KAAK,EAAE,IAAI,CAAC,uBAAuB;gBACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;gBACrC,MAAM,EAAE,IAAI,CAAC,wCAAwC;gBACrD,KAAK,EAAE,IAAI,CAAC,6BAA6B;gBACzC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB;gBACnD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB;gBAChD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK;aAC9B,CAAA;QACP,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAID,mBAAmB,CAAC,SAAkB;QACpC,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,GAAG,CAAC,CAAC;QACpD,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3C,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAE,CAAC;SAC/D;QACD,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YAC7G,MAAM,IAAI,GAAG,SAAS;iBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;gBAClB,OAAO;oBACL,EAAE;oBACF,GAAG,EAAE,IAAI,CAAC,QAAQ;oBAClB,KAAK,EAAE,IAAI,CAAC,uBAAuB;oBACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;oBACrC,MAAM,EAAE,IAAI,CAAC,wCAAwC;oBACrD,KAAK,EAAE,IAAI,CAAC,6BAA6B;oBACzC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB;oBACnD,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB;iBACjD,CAAA;YACH,CAAC,CAAC,CAAC;YACL,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACrB;IACH,CAAC;IAID,KAAK,CAAC,WAAW,CAAC,YAA0B,EAAE,OAAiB;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CAEF;AAjMU;IAAR,KAAK,EAAE;wCAAqB","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, true);\n /** FIXME: wait for genesis to finish first? */\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
+ {"version":3,"file":"HappElement.js","sourceRoot":"","sources":["../src/HappElement.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAGL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAW9C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,MAAM,OAAO,WAAY,SAAQ,UAAU;IAezC,YAAsB,cAAqC,EAAE,KAAsB,EAAE,QAAc,EAAE,cAAuB;QAC1H,KAAK,EAAE,CAAC;QACI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACjF,CAAC;IAGD,KAAK,CAAC,cAAc,KAAmB,CAAC;IAExC,KAAK,CAAC,6BAA6B,KAAmB,CAAC;IAEvD,KAAK,CAAC,4BAA4B,KAAmB,CAAC;IAG7C,YAAY;QACnB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAGS,KAAK,CAAC,YAAY,CAAC,cAAqC,EAAE,KAAsB,EAAE,QAAc,EAAE,cAAuB;QACjI,MAAM,MAAM,GAAI,IAAI,CAAC,WAAkC,CAAC,OAAO,CAAC;QAChE,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,yDAAyD,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAChG;QAED,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjG,IAAI,CAAC,GAAG,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtD,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACrC,CAAC;IAID,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC9C,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAE3C,MAAM,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAC5C,CAAC;IAKD,KAAK,CAAC,WAAW,CAAC,YAA0B,EAAE,OAAiB;QAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CAEF;AA7DU;IAAR,KAAK,EAAE;wCAAqB","sourcesContent":["import {LitElement} from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport {\n BaseRoleName,\n AppProxy,\n ConductorAppProxy,\n} from \"@ddd-qc/cell-proxy\";\nimport {HappViewModel} from \"./HappViewModel\";\nimport {CellDef, HvmDef} from \"./definitions\";\nimport {\n AppWebsocket,\n ClonedCell,\n InstalledAppId,\n} from \"@holochain/client\";\nimport {DnaViewModel} from \"./DnaViewModel\";\n//import {CellId} from \"@holochain/client/lib/types\";\n// @ts-ignore\nimport * as net from \"net\";\nimport {NetworkCaller} from \"./NetworkCaller\";\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 /** Continually calls networkInfo for a specific cell with appProxy */\n networkCaller?: NetworkCaller;\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, true);\n this.networkCaller = new NetworkCaller(this.appProxy);\n /** FIXME: wait for genesis to finish first? */\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 /** */\n async createClone(baseRoleName: BaseRoleName, cellDef?: CellDef): Promise<[ClonedCell, DnaViewModel]> {\n return this.hvm.cloneDvm(baseRoleName, cellDef);\n }\n\n}\n"]}
@@ -3,20 +3,20 @@ import { AppProxy, CellIdStr } from "@ddd-qc/cell-proxy";
3
3
  import { HappViewModel } from "./HappViewModel";
4
4
  import { HvmDef } from "./definitions";
5
5
  import { AppWebsocket, InstalledAppId, NetworkInfo, Timestamp } from "@holochain/client";
6
+ import { NetworkCaller } from "./NetworkCaller";
6
7
  export declare class HappMultiElement extends LitElement {
7
8
  readonly isMainView: boolean;
8
9
  static HVM_DEF: HvmDef;
9
10
  hvms: [AppProxy, HappViewModel][];
11
+ networkCaller?: NetworkCaller;
10
12
  get count(): number;
11
13
  protected constructor(appInfo: [number | AppWebsocket, InstalledAppId | undefined][], isMainView: boolean, adminUrl?: URL, defaultTimeout?: number);
12
- hvmConstructed(): Promise<void>;
14
+ hvmsConstructed(): Promise<void>;
13
15
  perspectiveInitializedOffline(): Promise<void>;
14
16
  perspectiveInitializedOnline(): Promise<void>;
15
17
  shouldUpdate(): boolean;
16
18
  protected constructHvms(appInfo: [number | AppWebsocket, InstalledAppId | undefined][], adminUrl?: URL, defaultTimeout?: number): Promise<void>;
17
19
  initializePerspective(): Promise<void>;
18
20
  networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>>;
19
- dumpLastestNetworkInfo(baseRoleName?: string): void;
20
- dumpNetworkInfoLogs(cellIdStr?: string): void;
21
21
  }
22
22
  //# 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,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;aAa5B,UAAU,EAAE,OAAO;IAVrC,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,aACP,OAAO,EAAE,CAAC,MAAM,GAAG,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,EAC9C,UAAU,EAAE,OAAO,EACnC,QAAQ,CAAC,EAAE,GAAG,EACd,cAAc,CAAC,EAAE,MAAM;IAOnB,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"}
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;AAG3B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAM9C,qBAAa,gBAAiB,SAAQ,UAAU;aAgB5B,UAAU,EAAE,OAAO;IAbrC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAK;IAG/C,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B,IAAI,KAAK,IAAI,MAAM,CAA0B;IAG7C,SAAS,aACP,OAAO,EAAE,CAAC,MAAM,GAAG,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC,EAAE,EAC9C,UAAU,EAAE,OAAO,EACnC,QAAQ,CAAC,EAAE,GAAG,EACd,cAAc,CAAC,EAAE,MAAM;IAOnB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhC,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;IAsB/I,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAetC,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;CA+ClG"}
@@ -3,6 +3,7 @@ import { LitElement } from "lit";
3
3
  import { state } from "lit/decorators.js";
4
4
  import { ConductorAppProxy, flattenCells, AgentIdMap, CellAddress, } from "@ddd-qc/cell-proxy";
5
5
  import { HappViewModel } from "./HappViewModel";
6
+ import { NetworkCaller } from "./NetworkCaller";
6
7
  export class HappMultiElement extends LitElement {
7
8
  get count() { return this.hvms.length; }
8
9
  constructor(appInfo, isMainView, adminUrl, defaultTimeout) {
@@ -11,7 +12,7 @@ export class HappMultiElement extends LitElement {
11
12
  this.hvms = [];
12
13
  this.constructHvms(appInfo, adminUrl, defaultTimeout);
13
14
  }
14
- async hvmConstructed() { }
15
+ async hvmsConstructed() { }
15
16
  async perspectiveInitializedOffline() { }
16
17
  async perspectiveInitializedOnline() { }
17
18
  shouldUpdate() {
@@ -30,9 +31,10 @@ export class HappMultiElement extends LitElement {
30
31
  const hvm = await HappViewModel.new(this, appProxy, hvmDef, this.isMainView);
31
32
  await hvm.authorizeAllZomeCalls(appProxy.adminWs);
32
33
  this.hvms.push([appProxy, hvm]);
33
- await this.hvmConstructed();
34
- await this.initializePerspective();
35
34
  }
35
+ this.networkCaller = new NetworkCaller(this.hvms[0][0]);
36
+ await this.hvmsConstructed();
37
+ await this.initializePerspective();
36
38
  }
37
39
  async initializePerspective() {
38
40
  for (const [_proxy, hvm] of this.hvms) {
@@ -45,7 +47,6 @@ export class HappMultiElement extends LitElement {
45
47
  await this.perspectiveInitializedOnline();
46
48
  }
47
49
  async networkInfoAll(baseRoleName) {
48
- console.debug(`networkInfoAll() "${baseRoleName}"`);
49
50
  const hvmDef = this.constructor.HVM_DEF;
50
51
  const appProxy = this.hvms[0][0];
51
52
  const cellMap = appProxy.getAppCells(hvmDef.id);
@@ -65,7 +66,6 @@ export class HappMultiElement extends LitElement {
65
66
  cellAddrs = cellAddrs.concat(flattenCells(cells));
66
67
  }
67
68
  }
68
- console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));
69
69
  let dnaPerAgentMap = new AgentIdMap();
70
70
  for (const cellAddr of cellAddrs) {
71
71
  if (!dnaPerAgentMap.get(cellAddr.agentId)) {
@@ -73,7 +73,6 @@ export class HappMultiElement extends LitElement {
73
73
  }
74
74
  dnaPerAgentMap.get(cellAddr.agentId).push(cellAddr.dnaId);
75
75
  }
76
- console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);
77
76
  const allNetInfos = {};
78
77
  for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {
79
78
  const netInfos = await appProxy.networkInfo({ dnas: dnaIds.map((dna) => dna.hash) });
@@ -86,80 +85,6 @@ export class HappMultiElement extends LitElement {
86
85
  }
87
86
  return allNetInfos;
88
87
  }
89
- dumpLastestNetworkInfo(baseRoleName) {
90
- console.log(`dumpLastestNetworkInfo() "${baseRoleName}"`);
91
- const appProxy = this.hvms[0][0];
92
- const hvmDef = this.constructor.HVM_DEF;
93
- const cellMap = appProxy.getAppCells(hvmDef.id);
94
- if (!cellMap) {
95
- throw Error("No cells found at given appId: " + hvmDef.id);
96
- }
97
- let cellAddrs = [];
98
- if (baseRoleName) {
99
- const cfr = cellMap[baseRoleName];
100
- if (!cfr) {
101
- throw Promise.reject("No cells found at given baseRoleName: " + baseRoleName);
102
- }
103
- cellAddrs = flattenCells(cfr);
104
- }
105
- else {
106
- for (const cells of Object.values(cellMap)) {
107
- cellAddrs = cellAddrs.concat(flattenCells(cells));
108
- }
109
- }
110
- let logs = cellAddrs.map((cellAddr) => {
111
- const logs = appProxy.networkInfoLogs[cellAddr.str];
112
- if (!logs || logs.length === 0) {
113
- return;
114
- }
115
- const [ts, info] = logs[logs.length - 1];
116
- const hcl = appProxy.getLocations(cellAddr);
117
- const cellName = appProxy.getCellName(hcl[0]);
118
- return {
119
- ts,
120
- name: cellName,
121
- dna: cellAddr.dnaId.short,
122
- arc: info.arc_size,
123
- peers: info.current_number_of_peers,
124
- total_peers: info.total_network_peers,
125
- rounds: info.completed_rounds_since_last_time_queried,
126
- bytes: info.bytes_since_last_time_queried,
127
- fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
128
- fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
129
- agent: cellAddr.agentId.short,
130
- };
131
- });
132
- console.table(logs);
133
- }
134
- dumpNetworkInfoLogs(cellIdStr) {
135
- console.log(`dumpNetworkInfoLogs() "${cellIdStr}"`);
136
- const appProxy = this.hvms[0][0];
137
- let logMap = appProxy.networkInfoLogs;
138
- if (cellIdStr) {
139
- logMap = {};
140
- logMap[cellIdStr] = appProxy.networkInfoLogs[cellIdStr];
141
- }
142
- for (const [cellIdStr, infoPairs] of Object.entries(logMap)) {
143
- const cellAddr = CellAddress.from(cellIdStr);
144
- const hcl = appProxy.getLocations(cellAddr);
145
- const cellName = appProxy.getCellName(hcl[0]);
146
- console.log(`NetworfInfo logs of cell "${cellName}" | [${cellAddr.agentId.short}, ${cellAddr.dnaId.short}]`);
147
- const logs = infoPairs
148
- .map(([ts, info]) => {
149
- return {
150
- ts,
151
- arc: info.arc_size,
152
- peers: info.current_number_of_peers,
153
- total_peers: info.total_network_peers,
154
- rounds: info.completed_rounds_since_last_time_queried,
155
- bytes: info.bytes_since_last_time_queried,
156
- fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
157
- fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
158
- };
159
- });
160
- console.table(logs);
161
- }
162
- }
163
88
  }
164
89
  __decorate([
165
90
  state()
@@ -1 +1 @@
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(\n appInfo: [number | AppWebsocket, InstalledAppId | undefined][],\n public readonly isMainView: boolean,\n adminUrl?: URL,\n defaultTimeout?: number,\n ) {\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, this.isMainView);\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"]}
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\";\nimport {NetworkCaller} from \"./NetworkCaller\";\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 /** Continually calls networkInfo for a specific cell with appProxy */\n networkCaller?: NetworkCaller;\n\n get count(): number {return this.hvms.length}\n\n /** Ctor */\n protected constructor(\n appInfo: [number | AppWebsocket, InstalledAppId | undefined][],\n public readonly isMainView: boolean,\n adminUrl?: URL,\n defaultTimeout?: number,\n ) {\n super();\n /* await */ this.constructHvms(appInfo, adminUrl, defaultTimeout);\n }\n\n /** */\n async hvmsConstructed(): 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, this.isMainView);\n await hvm.authorizeAllZomeCalls(appProxy.adminWs);\n this.hvms.push([appProxy, hvm]);\n }\n this.networkCaller = new NetworkCaller(this.hvms[0]![0]); // use first appProxy\n await this.hvmsConstructed();\n await this.initializePerspective();\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 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"]}
@@ -0,0 +1,20 @@
1
+ import { AppProxy, CellAddress } from "@ddd-qc/cell-proxy";
2
+ import { NetworkInfo, Timestamp } from "@holochain/client";
3
+ export declare class NetworkCaller {
4
+ private appProxy;
5
+ private cellAddr?;
6
+ constructor(appProxy: AppProxy, cellAddr?: CellAddress | undefined);
7
+ private _lastTimeQueried;
8
+ private _networkInfoLogs;
9
+ private _intervalId;
10
+ setCellAddr(cellAddr: CellAddress): void;
11
+ setCapacity(n: number): void;
12
+ get networkInfoLogs(): [Timestamp, NetworkInfo][];
13
+ isLooping(): boolean;
14
+ startCallLoop(interval: number, callback?: (n: NetworkInfo) => void): void;
15
+ stopCallLoop(): void;
16
+ clear(): void;
17
+ callNetworkInfo(): Promise<NetworkInfo>;
18
+ dumpNetworkInfoLogs(n?: number): void;
19
+ }
20
+ //# sourceMappingURL=NetworkCaller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkCaller.d.ts","sourceRoot":"","sources":["../src/NetworkCaller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAC,WAAW,EAAsB,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAK7E,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,QAAQ,CAAC;gBAArC,QAAQ,EAAE,QAAQ,EAAU,QAAQ,CAAC,yBAAa;IAKtE,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAA4D;IAEpF,OAAO,CAAC,WAAW,CAA8B;IAIjD,WAAW,CAAC,QAAQ,EAAE,WAAW;IAEjC,WAAW,CAAC,CAAC,EAAE,MAAM;IAIrB,IAAI,eAAe,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAA0C;IAK3F,SAAS,IAAI,OAAO;IAOpB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAC,WAAW,KAAK,IAAI;IAgBlE,YAAY;IAOZ,KAAK;IAMC,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC;IAqB7C,mBAAmB,CAAC,CAAC,CAAC,EAAE,MAAM;CAwE/B"}
@@ -0,0 +1,75 @@
1
+ import { prettyDate, RingBuffer } from "@ddd-qc/cell-proxy";
2
+ export class NetworkCaller {
3
+ constructor(appProxy, cellAddr) {
4
+ this.appProxy = appProxy;
5
+ this.cellAddr = cellAddr;
6
+ this._lastTimeQueried = 0;
7
+ this._networkInfoLogs = new RingBuffer(50);
8
+ this._intervalId = undefined;
9
+ }
10
+ setCellAddr(cellAddr) { this.cellAddr = cellAddr; }
11
+ ;
12
+ setCapacity(n) {
13
+ this._networkInfoLogs.resize(n);
14
+ }
15
+ get networkInfoLogs() { return this._networkInfoLogs.toArray(); }
16
+ isLooping() {
17
+ console.log("bruh", this._intervalId, this._intervalId === undefined);
18
+ const isUnd = this._intervalId === undefined;
19
+ return !isUnd;
20
+ }
21
+ startCallLoop(interval, callback) {
22
+ if (this.isLooping()) {
23
+ this.stopCallLoop();
24
+ }
25
+ this._intervalId = setInterval(async () => {
26
+ const res = await this.callNetworkInfo();
27
+ if (callback) {
28
+ callback(res);
29
+ }
30
+ }, interval);
31
+ }
32
+ stopCallLoop() {
33
+ clearInterval(this._intervalId);
34
+ this._intervalId = undefined;
35
+ }
36
+ clear() {
37
+ this._networkInfoLogs.clear();
38
+ }
39
+ async callNetworkInfo() {
40
+ if (!this.cellAddr) {
41
+ throw Promise.reject("callNetworkInfo() aborted. cellAddr not specified.");
42
+ }
43
+ const response = await this.appProxy.networkInfo({
44
+ dnas: [this.cellAddr.dnaId.hash],
45
+ last_time_queried: this._lastTimeQueried,
46
+ });
47
+ if (response.length == 0) {
48
+ throw Promise.reject("No network info response");
49
+ }
50
+ this._lastTimeQueried = Date.now();
51
+ this._networkInfoLogs.add([this._lastTimeQueried, response[0]]);
52
+ return response[0];
53
+ }
54
+ dumpNetworkInfoLogs(n) {
55
+ console.log(`dumpNetworkInfoLogs()`, this.cellAddr);
56
+ if (!this.cellAddr) {
57
+ throw Promise.reject("dumpNetworkInfoLogs() aborted. cellAddr not specified.");
58
+ }
59
+ const nn = n ? n : this._networkInfoLogs.getBufferLength();
60
+ let logs = this._networkInfoLogs.getLastN(nn).map(([ts, info]) => {
61
+ return {
62
+ ts: prettyDate(new Date(ts)),
63
+ arc: info.arc_size,
64
+ peers: info.current_number_of_peers,
65
+ total_peers: info.total_network_peers,
66
+ rounds: info.completed_rounds_since_last_time_queried,
67
+ bytes: info.bytes_since_last_time_queried,
68
+ fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,
69
+ fetch_ops: info.fetch_pool_info.num_ops_to_fetch,
70
+ };
71
+ });
72
+ console.table(logs);
73
+ }
74
+ }
75
+ //# sourceMappingURL=NetworkCaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkCaller.js","sourceRoot":"","sources":["../src/NetworkCaller.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppProxy, CellAddress, prettyDate, RingBuffer} from \"@ddd-qc/cell-proxy\";\r\nimport {NetworkInfo, NetworkInfoRequest, Timestamp} from \"@holochain/client\";\r\n\r\n/**\r\n * Class handling network info calling and result storing\r\n */\r\nexport class NetworkCaller {\r\n\r\n /** */\r\n constructor(private appProxy: AppProxy, private cellAddr?: CellAddress) {\r\n // N/A\r\n }\r\n\r\n\r\n private _lastTimeQueried: Timestamp = 0;\r\n private _networkInfoLogs: RingBuffer<[Timestamp, NetworkInfo]> = new RingBuffer(50);\r\n\r\n private _intervalId: any | undefined = undefined;\r\n\r\n /** -- Getters & Setters -- */\r\n\r\n setCellAddr(cellAddr: CellAddress) { this.cellAddr = cellAddr};\r\n\r\n setCapacity(n: number) {\r\n this._networkInfoLogs.resize(n);\r\n }\r\n\r\n get networkInfoLogs(): [Timestamp, NetworkInfo][] {return this._networkInfoLogs.toArray();}\r\n\r\n\r\n /** -- Methods -- */\r\n\r\n isLooping(): boolean {\r\n console.log(\"bruh\", this._intervalId, this._intervalId === undefined);\r\n const isUnd = this._intervalId === undefined\r\n return !isUnd;\r\n }\r\n\r\n /** */\r\n startCallLoop(interval: number, callback?: (n:NetworkInfo) => void) {\r\n // FIXME\r\n if (this.isLooping()) {\r\n this.stopCallLoop();\r\n }\r\n this._intervalId = setInterval(async () => {\r\n //console.log(\"Requesting network info...\");\r\n const res = await this.callNetworkInfo();\r\n if (callback) {\r\n callback(res);\r\n }\r\n }, interval);\r\n }\r\n\r\n\r\n /** */\r\n stopCallLoop() {\r\n clearInterval(this._intervalId);\r\n this._intervalId = undefined;\r\n }\r\n\r\n\r\n /** */\r\n clear() {\r\n this._networkInfoLogs.clear();\r\n }\r\n\r\n\r\n /** */\r\n async callNetworkInfo(): Promise<NetworkInfo> {\r\n if (!this.cellAddr) {\r\n throw Promise.reject(\"callNetworkInfo() aborted. cellAddr not specified.\");\r\n }\r\n /* Call networkInfo */\r\n const response = await this.appProxy.networkInfo({\r\n dnas: [this.cellAddr.dnaId.hash],\r\n last_time_queried: this._lastTimeQueried,\r\n } as NetworkInfoRequest);\r\n if (response.length == 0) {\r\n throw Promise.reject(\"No network info response\");\r\n }\r\n /* Store */\r\n this._lastTimeQueried = Date.now();\r\n this._networkInfoLogs.add([this._lastTimeQueried, response[0]!]);\r\n /** */\r\n return response[0]!;\r\n }\r\n\r\n\r\n /** */\r\n dumpNetworkInfoLogs(n?: number) {\r\n console.log(`dumpNetworkInfoLogs()`, this.cellAddr);\r\n if (!this.cellAddr) {\r\n throw Promise.reject(\"dumpNetworkInfoLogs() aborted. cellAddr not specified.\");\r\n }\r\n const nn = n? n : this._networkInfoLogs.getBufferLength();\r\n let logs = this._networkInfoLogs.getLastN(nn).map(([ts, info]) => {\r\n return {\r\n //ts,\r\n ts: prettyDate(new Date(ts)),\r\n arc: info.arc_size,\r\n peers: info.current_number_of_peers,\r\n total_peers: info.total_network_peers,\r\n rounds: info.completed_rounds_since_last_time_queried,\r\n bytes: info.bytes_since_last_time_queried,\r\n fetch_bytes: info.fetch_pool_info.op_bytes_to_fetch,\r\n fetch_ops: info.fetch_pool_info.num_ops_to_fetch,\r\n //agent: this.cellAddr!.agentId.short,\r\n }\r\n })\r\n console.table(logs);\r\n }\r\n\r\n\r\n\r\n // /** call network Info on all cells of the Happ */\r\n // async networkInfoAll(baseRoleName?: string): Promise<Record<CellIdStr, [Timestamp, NetworkInfo]>> {\r\n // console.debug(`networkInfoAll() \"${baseRoleName}\"`);\r\n // /** Grab cellMap */\r\n // const hvmDef = (this.constructor as typeof HappElement).HVM_DEF;\r\n // const cellMap = this.appProxy.getAppCells(hvmDef.id);\r\n // if (!cellMap) {\r\n // return Promise.reject(\"No cells found at given appId: \" + hvmDef.id);\r\n // }\r\n // /** Get cell Ids */\r\n // let cellAddrs: CellAddress[] = [];\r\n // if (baseRoleName) {\r\n // const cfr = cellMap[baseRoleName];\r\n // if (!cfr) {\r\n // return Promise.reject(\"No cells found at given baseRoleName: \" + baseRoleName);\r\n // }\r\n // cellAddrs = flattenCells(cfr);\r\n // } else {\r\n // for (const cells of Object.values(cellMap)) {\r\n // cellAddrs = cellAddrs.concat(flattenCells(cells))\r\n // }\r\n // }\r\n // console.debug(`networkInfoAll() cellIds`, cellAddrs.map(cellId => cellId.str));\r\n // /* Sort by agent key */\r\n // let dnaPerAgentMap: AgentIdMap<DnaId[]> = new AgentIdMap();\r\n // for (const cellAddr of cellAddrs) {\r\n // if (!dnaPerAgentMap.get(cellAddr.agentId)) {\r\n // dnaPerAgentMap.set(cellAddr.agentId, []);\r\n // }\r\n // dnaPerAgentMap.get(cellAddr.agentId)!.push(cellAddr.dnaId);\r\n // }\r\n // console.debug(`networkInfoAll() dnaMap`, dnaPerAgentMap);\r\n // /** Call NetworkInfo per AgentId */\r\n // const allNetInfos: Record<CellIdStr, [Timestamp, NetworkInfo]> = {};\r\n // for (const [agent, dnaIds] of dnaPerAgentMap.entries()) {\r\n // const netInfos = await this.appProxy.networkInfo({dnas: dnaIds.map((dna) => dna.hash)});\r\n // let i = 0;\r\n // for (const netInfo of netInfos) {\r\n // const idStr = new CellAddress(dnaIds[i]!, agent).str;\r\n // allNetInfos[idStr] = [Date.now(), netInfo];\r\n // i += 1;\r\n // }\r\n // }\r\n // /* Done */\r\n // return allNetInfos;\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.31.3",
3
+ "version": "0.31.5",
4
4
  "description": "MVVM Framework for holochain apps using Lit",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",