@ddd-qc/cell-proxy 0.33.8 → 0.34.1

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,4 +1,4 @@
1
- import { AdminWebsocket, AgentPubKey, AppClient, AppEvents, AppInfoResponse, AppSignal, SignalCb, CallZomeRequest, ClonedCell, CreateCloneCellRequest, DisableCloneCellRequest, EnableCloneCellRequest, InstalledAppId, Timestamp, ZomeName, DumpNetworkMetricsRequest, DumpNetworkMetricsResponse } from "@holochain/client";
1
+ import { AdminWebsocket, AgentPubKey, AppClient, AppEvents, AppInfoResponse, AppSignal, SignalCb, CallZomeRequest, ClonedCell, CreateCloneCellRequest, DisableCloneCellRequest, EnableCloneCellRequest, InstalledAppId, Timestamp, ZomeName, DumpNetworkMetricsRequest, DumpNetworkMetricsResponse, MemproofMap, PeerMetaInfoRequest, PeerMetaInfoResponse, AgentInfoRequest, AgentInfoResponse } from "@holochain/client";
2
2
  import { UnsubscribeFunction } from "emittery";
3
3
  import { CellProxy } from "./CellProxy";
4
4
  import { BaseRoleName, CellAddress, CellsForRole, RoleCellsMap } from "./types";
@@ -51,6 +51,10 @@ export declare class AppProxy implements AppClient {
51
51
  disableCloneCell(_request: DisableCloneCellRequest): Promise<void>;
52
52
  dumpNetworkStats(): Promise<AppDumpNetworkStatsResponse>;
53
53
  dumpNetworkMetrics(_req: DumpNetworkMetricsRequest, _timeout?: number): Promise<DumpNetworkMetricsResponse>;
54
+ agentInfo(_req: AgentInfoRequest, _timeout?: number): Promise<AgentInfoResponse>;
55
+ peerMetaInfo(_req: PeerMetaInfoRequest, _timeout?: number): Promise<PeerMetaInfoResponse>;
56
+ provideMemproofs(_memproofs: MemproofMap): Promise<void>;
57
+ enableApp(): Promise<void>;
54
58
  constructor(_happSha256: string | null, defaultTimeout: number, appId: InstalledAppId, agentId: AgentId, adminWs?: AdminWebsocket | undefined);
55
59
  get happSha256(): string | null;
56
60
  setHappSha256(sha256: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AppProxy.d.ts","sourceRoot":"","sources":["../src/AppProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppProxy.d.ts","sourceRoot":"","sources":["../src/AppProxy.ts"],"names":[],"mappings":"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"}
package/dist/AppProxy.js CHANGED
@@ -89,6 +89,18 @@ export class AppProxy {
89
89
  async dumpNetworkMetrics(_req, _timeout) {
90
90
  throw new Error("Method not implemented.");
91
91
  }
92
+ async agentInfo(_req, _timeout) {
93
+ throw new Error("Method not implemented.");
94
+ }
95
+ async peerMetaInfo(_req, _timeout) {
96
+ throw new Error("Method not implemented.");
97
+ }
98
+ async provideMemproofs(_memproofs) {
99
+ throw new Error("Method not implemented.");
100
+ }
101
+ async enableApp() {
102
+ throw new Error("Method not implemented.");
103
+ }
92
104
  constructor(_happSha256, defaultTimeout, appId, agentId, adminWs) {
93
105
  this._happSha256 = _happSha256;
94
106
  this.defaultTimeout = defaultTimeout;
@@ -1 +1 @@
1
- {"version":3,"file":"AppProxy.js","sourceRoot":"","sources":["../src/AppProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AdminWebsocket, AgentPubKey,\n AppClient,\n AppEvents,\n AppInfoResponse,\n AppSignal,\n SignalCb,\n CallZomeRequest,\n CellType,\n ClonedCell,\n CreateCloneCellRequest,\n DisableCloneCellRequest,\n EnableCloneCellRequest,\n InstalledAppId,\n ProvisionedCell,\n Timestamp, ZomeName, SignalType, DumpNetworkMetricsRequest,\n DumpNetworkMetricsResponse,\n} from \"@holochain/client\";\nimport {UnsubscribeFunction} from \"emittery\";\nimport {CellProxy} from \"./CellProxy\";\nimport {\n BaseRoleName, CellAddress,\n CellsForRole,\n RoleCellsMap, AppSignalType, SystemPulse,\n} from \"./types\";\nimport {MyDictionary} from \"./utils\";\nimport {HCL, HCLString} from \"./hcl\";\nimport {Cell} from \"./cell\";\nimport {prettyDate, printAppInfo} from \"./pretty\";\nimport {AgentId, enc64} from \"./hash\";\nimport {ZomeSignal} from \"./zomeSignals.types\";\nimport {Signal} from \"@holochain/client/lib/api/app/types\";\nimport {AppDumpNetworkStatsResponse} from \"@holochain/client/lib/api/admin\";\nimport {encodeHappJoinCode} from \"./happJoinCode\";\nimport {RoleName} from \"@holochain/client/lib/types\";\n\n\n/** */\nexport interface SignalUnsubscriber {\n unsubscribe: () => void;\n}\n\n\nexport interface SignalLog {\n ts: Timestamp,\n cellAddr: CellAddress,\n zomeName: string,\n type: string,\n pulseCount: number,\n zomeSignal: ZomeSignal,\n}\n\n/**\n * Creates and holds Cell proxies.\n * Maintains a mapping between CellIds and HCLs\n * Handles SignalHandlers per HCL\n * Stores appSignal logs\n * TODO Implement Singleton per App port?\n */\nexport class AppProxy implements AppClient {\n\n /** -- Fields -- */\n\n /** Signal logs */\n private _signalLogs: SignalLog[] = [];\n /** Map cells per App: InstalledAppId -> (BaseRoleName -> CellsForRole) */\n private _cellsByApp: MyDictionary<RoleCellsMap> = {};\n /** Map cell locations: CellIdStr -> HCL[] */\n private _hclMap: MyDictionary<HCL[]> = {};\n /** Store handlers per cell location: HCLString -> SignalCb[] */\n private _signalHandlers: MyDictionary<SignalCb[]> = {};\n /** Store cell proxies per cell: CellIdStr -> CellProxy */\n private _cellProxies: MyDictionary<CellProxy> = {};\n\n\n /** Map HCLString: CloneId -> CloneName */\n private _cellNames: MyDictionary<string> = {} // Provisioned cell's name is its baseRoleName so no need to map them\n\n /** -- Getters -- */\n\n /** Check this after connecting since AppWebsocket can shamelessly override the provided args. */\n get appIdOfShame(): InstalledAppId | undefined { return undefined }\n\n /** */\n getAppCells(appId: InstalledAppId): RoleCellsMap | undefined {\n return this._cellsByApp[appId];\n }\n\n /** */\n getCellName(hcl: HCL): string | undefined {return this._cellNames[hcl.toString()]}\n\n\n get signalLogs(): SignalLog[] { return this._signalLogs }\n\n purgeLogs() {this._signalLogs = [] }\n\n /** */\n getLocations(adr: CellAddress): HCL[] | undefined {\n return this._hclMap[adr.str];\n }\n\n /** */\n getCell(hcl: HCL): Cell {\n const roleCellsMap = this._cellsByApp[hcl.appId];\n if (!roleCellsMap) throw Error(`getCell() failed. No hApp with ID \"${hcl.appId}\" found.`);\n const roleCells = roleCellsMap[hcl.baseRoleName];\n if (!roleCells) throw Error(`getCell() failed: BaseRoleName \"${hcl.baseRoleName}\" not found in happ \"${hcl.appId}\"`);\n let cell: ProvisionedCell | ClonedCell | undefined = roleCells.provisioned;\n if (hcl.cloneId !== undefined) {\n cell = roleCells.clones[hcl.cloneId];\n if (!cell) {\n throw Error(`getCell() failed: clone \"${hcl.cloneId}\" not found for role \"${hcl.toString()}\"`);\n }\n }\n return new Cell(cell, hcl.appId, hcl.baseRoleName);\n }\n\n\n /** Get stored CellProxy or attempt to create it */\n getCellProxy(cellIdOrLoc: HCL | CellAddress): CellProxy {\n if (cellIdOrLoc instanceof HCL) {\n const cell = this.getCell(cellIdOrLoc);\n const maybeProxy = this.getCellProxy(cell.address);\n if (!maybeProxy) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + cell.address.str);\n return maybeProxy;\n }\n const sId = cellIdOrLoc.str;\n const maybeProxy = this._cellProxies[sId];\n if (maybeProxy === undefined) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + sId);\n return maybeProxy;\n }\n\n\n /** */\n getAppRoles(installedAppId: InstalledAppId): BaseRoleName[] | undefined {\n const cellMap = this._cellsByApp[installedAppId];\n if (!cellMap) {\n return undefined;\n }\n return Object.values(cellMap).map((roleCells) => {\n return roleCells.provisioned.name;\n });\n }\n\n\n /** */\n getClones(appId: InstalledAppId, baseRoleName: BaseRoleName): ClonedCell[] {\n const maybeApp = this._cellsByApp[appId]\n if (!maybeApp) return [];\n const roleInstalledCells = maybeApp[baseRoleName];\n if (!roleInstalledCells) return [];\n return Object.values(roleInstalledCells.clones);\n }\n\n\n /** -- AppClient -- */\n\n myPubKey: AgentPubKey;\n installedAppId: InstalledAppId;\n\n async callZome(_req: CallZomeRequest, _timeout?: number): Promise<unknown> {\n throw new Error(\"Method not implemented.\");\n }\n\n on<Name extends keyof AppEvents>(\n _eventName: Name | readonly Name[],\n _listener: SignalCb\n ): UnsubscribeFunction {\n throw new Error(\"Method not implemented.\");\n }\n\n async appInfo(): Promise<AppInfoResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n async createCloneCell(_request: CreateCloneCellRequest): Promise<ClonedCell> {\n throw new Error(\"Method not implemented.\");\n }\n\n async enableCloneCell(_request: EnableCloneCellRequest): Promise<ClonedCell> {\n throw new Error(\"Method not implemented.\");\n }\n\n async disableCloneCell(_request: DisableCloneCellRequest): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n\n async dumpNetworkStats(): Promise<AppDumpNetworkStatsResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n async dumpNetworkMetrics(\n _req: DumpNetworkMetricsRequest,\n _timeout?: number\n ): Promise<DumpNetworkMetricsResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n\n\n /** -- Creation -- */\n\n /** Ctor */\n /*protected*/ constructor(\n protected _happSha256: string | null,\n public readonly defaultTimeout: number,\n appId: InstalledAppId,\n public readonly agentId: AgentId,\n public adminWs?: AdminWebsocket,\n ) {\n this.installedAppId = appId;\n this.myPubKey = agentId.hash;\n /*const _unsub =*/ this.addSignalHandler((sig) => this.logSignal(sig));\n }\n\n get happSha256(): string | null {return this._happSha256}\n setHappSha256(sha256: string): void {this._happSha256 = sha256;\n }\n\n /** -- Methods -- */\n\n getHappShareCode(role?: RoleName): string | null {\n /** Must have _happSha256 */\n if (!this._happSha256) {\n return null;\n }\n /** Must have specified role or at least one cell */\n let networkSeed: string = \"\";\n if (role) {\n try {\n const cell = this.getCell(new HCL(this.installedAppId, role));\n networkSeed = cell.dnaModifiers.network_seed;\n } catch (e) {\n return null;\n }\n } else {\n const cellsMap = this.getAppCells(this.installedAppId);\n if (!cellsMap) {\n return null;\n }\n const cells = Object.values(cellsMap);\n if (cells.length == 0) {\n return null;\n }\n networkSeed = cells[0]!.provisioned.dna_modifiers.network_seed;\n }\n /** encode */\n return encodeHappJoinCode(this._happSha256, this.installedAppId, networkSeed);\n }\n\n\n /** */\n async fetchCell(appId: InstalledAppId, cellAddr: CellAddress): Promise<Cell> {\n const appInfo = await this.appInfo();\n //console.log(\"fetchCell\", appInfo);\n if (appInfo == null) {\n return Promise.reject(`getCell() failed. App \"${appId}\" not found\"`);\n }\n for (const cellInfos of Object.values(appInfo.cell_info)) {\n for (const [baseRoleName, cellInfo] of Object.entries(cellInfos)) {\n let cell: Cell;\n try {\n cell = Cell.from(cellInfo, appId, baseRoleName);\n } catch(e) {\n // skip stem cell\n continue;\n }\n if (cell.address.equals(cellAddr)) {\n return cell;\n }\n }\n }\n return Promise.reject(\"getCell() failed. Cell not found for app.\");\n }\n\n\n /** Get all cells for a BaseRole in an app */\n async fetchCells(appId: InstalledAppId, baseRoleName: BaseRoleName): Promise<CellsForRole> {\n /** Make sure hApp exists */\n const appInfo = await this.appInfo();\n if (appInfo == null) {\n return Promise.reject(`fetchCells() failed. App \"${appId}\" not found`);\n }\n console.log(\"fetchCells() installedAppInfo:\\n\", printAppInfo(appInfo));\n\n /** Make sure app Object exists */\n if (!this._cellsByApp[appId]) {\n this._cellsByApp[appId] = {};\n }\n /** Get all cells with that baseRoleName */\n let provisioned: ProvisionedCell | undefined;\n let clones: MyDictionary<ClonedCell> = {};\n for (const [curBaseRoleName, cellInfos] of Object.entries(appInfo.cell_info)) {\n for (const cellInfo of Object.values(cellInfos)) {\n if (baseRoleName !== curBaseRoleName || CellType.Stem == cellInfo.type) {\n continue;\n }\n if (CellType.Cloned == cellInfo.type) {\n const cloned = cellInfo.value as ClonedCell;\n if (clones[cloned.clone_id]) {\n console.error(`fetchCells() Entry already exist for clone: \"${cloned.clone_id}\"`)\n }\n clones[cloned.clone_id] = cloned;\n } else {\n provisioned = cellInfo.value as ProvisionedCell;\n }\n }\n }\n if (typeof provisioned === 'undefined') {\n return Promise.reject(\"Provisioned cell not found for role \" + baseRoleName);\n }\n let roleInstalledCells: CellsForRole = {provisioned: provisioned!, clones}\n /** Store it*/\n this._cellsByApp[appId]![baseRoleName] = roleInstalledCells;\n return roleInstalledCells;\n }\n\n\n /** */\n addClone(hcl: HCL, cloneCell: ClonedCell): void {\n if (!this._cellsByApp[hcl.appId]) throw Error(\"addClone() failed. no appId. \" + hcl.toString());\n if (!this._cellsByApp[hcl.appId]![hcl.baseRoleName]) throw Error(\"addClone() failed. no baseRoleName. \" + hcl.toString());\n if (hcl.cloneId === undefined) throw Error(\"addClone() failed. Cell is not a CloneCell: \" + hcl.toString());\n\n // let cloneName = hcl.cloneId;\n // if (hcl.cloneId === undefined) {\n // const cloneIndex: number = Object.keys(this._cellsByApp[hcl.appId][hcl.baseRoleName].clones).length;\n // cloneName = createCloneName(hcl.baseRoleName, cloneIndex);\n // }\n this._cellsByApp[hcl.appId]![hcl.baseRoleName]!.clones[cloneCell.clone_id] = cloneCell;\n // const sCellId = CellIdStr(cloneCell.cell_id);\n // console.log(\"CreateCellProxy() adding to hclMap\", sCellId, cellLoc.asHcl())\n // if (this._hclMap[sCellId]) {\n // this._hclMap[sCellId].push(cellLoc.asHcl());\n // } else {\n // this._hclMap[sCellId] = [cellLoc.asHcl()];\n // }\n }\n\n\n /** */\n createCellProxy(hcl: HCL, cloneName?: string): CellProxy {\n console.log(\"createCellProxy() for\", hcl.toString(), cloneName);\n /** Make sure cell exists */\n const cell = this.getCell(hcl);\n const sCellId = cell.address.str;\n /** Create proxy for this cell if none exist yet, otherwise reuse */\n let cellProxy = this._cellProxies[sCellId];\n if (!cellProxy) {\n /** Create and store Proxy */\n cellProxy = new CellProxy(this, cell, this.defaultTimeout);\n this._cellProxies[sCellId] = cellProxy;\n }\n /** Create CellAddress -> HCL mapping */\n //console.log(\"CreateCellProxy() adding to hclMap\", sCellId, hcl.toString())\n if (this._hclMap[sCellId]) {\n this._hclMap[sCellId]!.push(hcl);\n } else {\n this._hclMap[sCellId] = [hcl];\n }\n //console.log(\"createCellProxy() Currently stored hclMap:\", this._hclMap);\n /** Associate cloneName if any */\n const name = cloneName? cloneName : hcl.baseRoleName;\n this._cellNames[hcl.toString()] = name;\n /** Done */\n return cellProxy;\n }\n\n\n /** */\n onSignal(signal: Signal): void {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n /** Grab cell specific handlers */\n const hcls = this.getLocations(CellAddress.from(appSignal.cell_id));\n if (!hcls) {\n return;\n }\n const handlerss: (SignalCb[] | undefined)[] = hcls\n .map((hcl) => this._signalHandlers[hcl.toString()])\n .filter((arr) => arr != undefined);\n //console.log(\"onSignal()\", hcls? hcls.toString() : \"unknown cell: \" + encodeHashToBase64(signal.cell_id[0]), handlerss);\n /** Grab common handler */\n const allHandlers = this._signalHandlers[\"__all\"];\n if (allHandlers) handlerss.push(allHandlers);\n /** Send to all handlers */\n for (const handlers of handlerss) {\n for (const handler of handlers!) {\n handler(signal);\n }\n }\n }\n\n\n /** Store signalHandler to internal handler array */\n addSignalHandler(handler: SignalCb, hcl?: HCLString): SignalUnsubscriber {\n //console.log(\"addSignalHandler()\", hcl);\n\n hcl = hcl? hcl: \"__all\";\n //console.log(\"addSignalHandler()\", hcl, Object.keys(this._signalHandlers));\n if (!this._signalHandlers[hcl]) {\n this._signalHandlers[hcl] = [handler];\n } else {\n this._signalHandlers[hcl]!.push(handler);\n }\n /* return tailored unsubscribe function to the caller */\n return {\n unsubscribe: () => {\n // FIXME\n // const maybeHandler = this._signalHandlers[hcl!]\n // if (!maybeHandler) {\n // console.warn(\"unsubscribe failed: Couldn't find signalHandler for\", hcl)\n // return;\n // }\n // delete this._signalHandlers[hcl!];\n }\n };\n }\n\n /** Log all signals received */\n protected logSignal(signal: Signal): void {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n const zomeSignal = this.intoZomeSignal(appSignal);\n if (!zomeSignal) {\n return;\n }\n const log: SignalLog = {ts: Date.now(), cellAddr: CellAddress.from(appSignal.cell_id), zomeName: appSignal.zome_name, zomeSignal, type: AppSignalType.Unknown, pulseCount: 1};\n if (zomeSignal) {\n log.pulseCount = zomeSignal.pulses.length;\n if (zomeSignal.pulses.length == 0) {\n log.type = AppSignalType.Empty;\n } else {\n log.type = AppSignalType.Zome;\n }\n }\n this._signalLogs.push(log);\n }\n\n\n /** */\n intoZomeSignal(appSignal: AppSignal): ZomeSignal | undefined {\n if (typeof appSignal.payload !== 'object' || Array.isArray(appSignal.payload) || appSignal.payload === null) {\n return;\n }\n const payload = appSignal.payload as Object;\n if (\"pulses\" in payload && \"from\" in payload) {\n return appSignal.payload as ZomeSignal;\n }\n return;\n }\n\n\n /** */\n dumpSignalLogs(canAppSignals: boolean, cellAddr?: CellAddress, zomeName?: ZomeName) {\n const me = enc64(this.myPubKey);\n let logs = this._signalLogs;\n /** Filter by cell and zome */\n let cellNames;\n if (cellAddr) {\n const hcls = this._hclMap[cellAddr.str];\n cellNames = hcls!.map((hcl) => this.getCellName(hcl));\n logs = this._signalLogs\n .filter((log) => log.cellAddr.equals(cellAddr));\n if (zomeName) {\n logs = this._signalLogs\n .filter((log) => log.zomeName == zomeName);\n }\n }\n /** Seperate by type */\n const unknownSignals = logs.filter((log) => log.type == AppSignalType.Unknown);\n const zomeSignals = logs.filter((log) => log.type == AppSignalType.Zome);\n const appSignals = zomeSignals.filter((log) => {\n const type = Object.keys(log.zomeSignal.pulses[0]!)[0];\n type != \"System\"\n });\n const sysSignals = zomeSignals.filter((log) => {\n const type = Object.keys(log.zomeSignal.pulses[0]!)[0];\n type == \"System\"\n });\n\n /** Dump unknown signals */\n if (unknownSignals.length) {\n let logs;\n if (zomeName) {\n console.error(`Unknown signals from zome \"${zomeName}\": ${unknownSignals.length}`);\n logs = unknownSignals\n .map((log) => {\n return {timestamp: prettyDate(new Date(log.ts)), payload: log.zomeSignal}\n });\n } else {\n console.error(`Unknown signals: ${unknownSignals.length}`);\n logs = unknownSignals\n .map((log) => {\n return {timestamp: prettyDate(new Date(log.ts)), zome: log.zomeName, payload: log.zomeSignal}\n });\n }\n console.table(logs);\n }\n\n /** Dump System signals */\n let syslogs: any[] = [];\n if (cellNames) {\n if (zomeName) {\n console.warn(`Unknown signals from zome \"${zomeName}\" in cell \"${cellNames}\"`);\n sysSignals.map((log) => {\n for (const pulse of log.zomeSignal.pulses) {\n const payload = (pulse as SystemPulse).System;\n syslogs.push({timestamp: prettyDate(new Date(log.ts)), payload});\n }\n });\n } else {\n console.warn(`System signals from cell \"${cellNames}\"`);\n sysSignals.map((log) => {\n for (const pulse of log.zomeSignal.pulses) {\n const payload = (pulse as SystemPulse).System;\n syslogs.push({timestamp: prettyDate(new Date(log.ts)), zome: log.zomeName, payload});\n }\n });\n }\n } else {\n console.warn(`System signals: ${sysSignals.length}`)\n sysSignals.map((log) => {\n const app = this._hclMap[log.cellAddr.str]![0]!.appId;\n const cell: string = this._hclMap[log.cellAddr.str]![0]!.roleName;\n for (const pulse of log.zomeSignal.pulses) {\n const payload = (pulse as SystemPulse).System;\n syslogs.push({timestamp: prettyDate(new Date(log.ts)), app, cell, zome: log.zomeName, payload});\n }\n });\n }\n console.table(syslogs);\n\n /** Dump App signals */\n if (!canAppSignals) {\n return;\n }\n let appLogs;\n if (cellNames) {\n if (zomeName) {\n console.warn(`App signals from zome \"${zomeName}\" in cell \"${cellNames}\"`);\n appLogs = appSignals.map((log) => {\n const pulses = log.zomeSignal.pulses;\n const from = enc64(log.zomeSignal.from) == me ? \"self\" : enc64(log.zomeSignal.from);\n return {timestamp: prettyDate(new Date(log.ts)), from, count: pulses.length, payload: pulses}\n });\n } else {\n console.warn(`App signals from cell \"${cellNames}\"`);\n appLogs = appSignals.map((log) => {\n const pulses = log.zomeSignal.pulses;\n const from = enc64(log.zomeSignal.from) == me ? \"self\" : enc64(log.zomeSignal.from);\n return {timestamp: prettyDate(new Date(log.ts)), zome: log.zomeName, from, count: pulses.length, payload: pulses}\n });\n }\n } else {\n console.warn(`App signals: ${appSignals.length}`)\n appLogs = appSignals.map((log) => {\n const app = this._hclMap[log.cellAddr.str]![0]!.appId;\n const cell: string = this._hclMap[log.cellAddr.str]![0]!.roleName;\n const pulses = log.zomeSignal.pulses;\n const from = enc64(log.zomeSignal.from) == me? \"self\" : enc64(log.zomeSignal.from);\n return { timestamp: prettyDate(new Date(log.ts)), app, cell, zome: log.zomeName, from, count: pulses.length, payload: pulses};\n });\n }\n console.table(appLogs);\n }\n}\n\n"]}
1
+ {"version":3,"file":"AppProxy.js","sourceRoot":"","sources":["../src/AppProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AdminWebsocket, AgentPubKey,\n AppClient,\n AppEvents,\n AppInfoResponse,\n AppSignal,\n SignalCb,\n CallZomeRequest,\n CellType,\n ClonedCell,\n CreateCloneCellRequest,\n DisableCloneCellRequest,\n EnableCloneCellRequest,\n InstalledAppId,\n ProvisionedCell,\n Timestamp, ZomeName, SignalType, DumpNetworkMetricsRequest,\n DumpNetworkMetricsResponse, MemproofMap, PeerMetaInfoRequest, PeerMetaInfoResponse, AgentInfoRequest,\n AgentInfoResponse,\n} from \"@holochain/client\";\nimport {UnsubscribeFunction} from \"emittery\";\nimport {CellProxy} from \"./CellProxy\";\nimport {\n BaseRoleName, CellAddress,\n CellsForRole,\n RoleCellsMap, AppSignalType, SystemPulse,\n} from \"./types\";\nimport {MyDictionary} from \"./utils\";\nimport {HCL, HCLString} from \"./hcl\";\nimport {Cell} from \"./cell\";\nimport {prettyDate, printAppInfo} from \"./pretty\";\nimport {AgentId, enc64} from \"./hash\";\nimport {ZomeSignal} from \"./zomeSignals.types\";\nimport {Signal} from \"@holochain/client/lib/api/app/types\";\nimport {AppDumpNetworkStatsResponse} from \"@holochain/client/lib/api/admin\";\nimport {encodeHappJoinCode} from \"./happJoinCode\";\nimport {RoleName} from \"@holochain/client/lib/types\";\n\n\n/** */\nexport interface SignalUnsubscriber {\n unsubscribe: () => void;\n}\n\n\nexport interface SignalLog {\n ts: Timestamp,\n cellAddr: CellAddress,\n zomeName: string,\n type: string,\n pulseCount: number,\n zomeSignal: ZomeSignal,\n}\n\n/**\n * Creates and holds Cell proxies.\n * Maintains a mapping between CellIds and HCLs\n * Handles SignalHandlers per HCL\n * Stores appSignal logs\n * TODO Implement Singleton per App port?\n */\nexport class AppProxy implements AppClient {\n\n /** -- Fields -- */\n\n /** Signal logs */\n private _signalLogs: SignalLog[] = [];\n /** Map cells per App: InstalledAppId -> (BaseRoleName -> CellsForRole) */\n private _cellsByApp: MyDictionary<RoleCellsMap> = {};\n /** Map cell locations: CellIdStr -> HCL[] */\n private _hclMap: MyDictionary<HCL[]> = {};\n /** Store handlers per cell location: HCLString -> SignalCb[] */\n private _signalHandlers: MyDictionary<SignalCb[]> = {};\n /** Store cell proxies per cell: CellIdStr -> CellProxy */\n private _cellProxies: MyDictionary<CellProxy> = {};\n\n\n /** Map HCLString: CloneId -> CloneName */\n private _cellNames: MyDictionary<string> = {} // Provisioned cell's name is its baseRoleName so no need to map them\n\n /** -- Getters -- */\n\n /** Check this after connecting since AppWebsocket can shamelessly override the provided args. */\n get appIdOfShame(): InstalledAppId | undefined { return undefined }\n\n /** */\n getAppCells(appId: InstalledAppId): RoleCellsMap | undefined {\n return this._cellsByApp[appId];\n }\n\n /** */\n getCellName(hcl: HCL): string | undefined {return this._cellNames[hcl.toString()]}\n\n\n get signalLogs(): SignalLog[] { return this._signalLogs }\n\n purgeLogs() {this._signalLogs = [] }\n\n /** */\n getLocations(adr: CellAddress): HCL[] | undefined {\n return this._hclMap[adr.str];\n }\n\n /** */\n getCell(hcl: HCL): Cell {\n const roleCellsMap = this._cellsByApp[hcl.appId];\n if (!roleCellsMap) throw Error(`getCell() failed. No hApp with ID \"${hcl.appId}\" found.`);\n const roleCells = roleCellsMap[hcl.baseRoleName];\n if (!roleCells) throw Error(`getCell() failed: BaseRoleName \"${hcl.baseRoleName}\" not found in happ \"${hcl.appId}\"`);\n let cell: ProvisionedCell | ClonedCell | undefined = roleCells.provisioned;\n if (hcl.cloneId !== undefined) {\n cell = roleCells.clones[hcl.cloneId];\n if (!cell) {\n throw Error(`getCell() failed: clone \"${hcl.cloneId}\" not found for role \"${hcl.toString()}\"`);\n }\n }\n return new Cell(cell, hcl.appId, hcl.baseRoleName);\n }\n\n\n /** Get stored CellProxy or attempt to create it */\n getCellProxy(cellIdOrLoc: HCL | CellAddress): CellProxy {\n if (cellIdOrLoc instanceof HCL) {\n const cell = this.getCell(cellIdOrLoc);\n const maybeProxy = this.getCellProxy(cell.address);\n if (!maybeProxy) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + cell.address.str);\n return maybeProxy;\n }\n const sId = cellIdOrLoc.str;\n const maybeProxy = this._cellProxies[sId];\n if (maybeProxy === undefined) throw Error(\"getCellProxy() failed. Proxy not found for cell \" + sId);\n return maybeProxy;\n }\n\n\n /** */\n getAppRoles(installedAppId: InstalledAppId): BaseRoleName[] | undefined {\n const cellMap = this._cellsByApp[installedAppId];\n if (!cellMap) {\n return undefined;\n }\n return Object.values(cellMap).map((roleCells) => {\n return roleCells.provisioned.name;\n });\n }\n\n\n /** */\n getClones(appId: InstalledAppId, baseRoleName: BaseRoleName): ClonedCell[] {\n const maybeApp = this._cellsByApp[appId]\n if (!maybeApp) return [];\n const roleInstalledCells = maybeApp[baseRoleName];\n if (!roleInstalledCells) return [];\n return Object.values(roleInstalledCells.clones);\n }\n\n\n /** -- AppClient -- */\n\n myPubKey: AgentPubKey;\n installedAppId: InstalledAppId;\n\n async callZome(_req: CallZomeRequest, _timeout?: number): Promise<unknown> {\n throw new Error(\"Method not implemented.\");\n }\n\n on<Name extends keyof AppEvents>(\n _eventName: Name | readonly Name[],\n _listener: SignalCb\n ): UnsubscribeFunction {\n throw new Error(\"Method not implemented.\");\n }\n\n async appInfo(): Promise<AppInfoResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n async createCloneCell(_request: CreateCloneCellRequest): Promise<ClonedCell> {\n throw new Error(\"Method not implemented.\");\n }\n\n async enableCloneCell(_request: EnableCloneCellRequest): Promise<ClonedCell> {\n throw new Error(\"Method not implemented.\");\n }\n\n async disableCloneCell(_request: DisableCloneCellRequest): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n\n async dumpNetworkStats(): Promise<AppDumpNetworkStatsResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n async dumpNetworkMetrics(\n _req: DumpNetworkMetricsRequest,\n _timeout?: number\n ): Promise<DumpNetworkMetricsResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n\n /** -- AppWebsocket specific API -- */\n\n async agentInfo(_req: AgentInfoRequest, _timeout?: number): Promise<AgentInfoResponse> {\n throw new Error(\"Method not implemented.\");\n }\n \n async peerMetaInfo(_req: PeerMetaInfoRequest, _timeout?: number): Promise<PeerMetaInfoResponse> {\n throw new Error(\"Method not implemented.\");\n }\n\n async provideMemproofs(_memproofs: MemproofMap) {\n throw new Error(\"Method not implemented.\");\n }\n\n async enableApp() {\n throw new Error(\"Method not implemented.\");\n } \n\n /** -- Creation -- */\n\n /** Ctor */\n /*protected*/ constructor(\n protected _happSha256: string | null,\n public readonly defaultTimeout: number,\n appId: InstalledAppId,\n public readonly agentId: AgentId,\n public adminWs?: AdminWebsocket,\n ) {\n this.installedAppId = appId;\n this.myPubKey = agentId.hash;\n /*const _unsub =*/ this.addSignalHandler((sig) => this.logSignal(sig));\n }\n\n get happSha256(): string | null {return this._happSha256}\n setHappSha256(sha256: string): void {this._happSha256 = sha256;\n }\n\n /** -- Methods -- */\n\n getHappShareCode(role?: RoleName): string | null {\n /** Must have _happSha256 */\n if (!this._happSha256) {\n return null;\n }\n /** Must have specified role or at least one cell */\n let networkSeed: string = \"\";\n if (role) {\n try {\n const cell = this.getCell(new HCL(this.installedAppId, role));\n networkSeed = cell.dnaModifiers.network_seed;\n } catch (e) {\n return null;\n }\n } else {\n const cellsMap = this.getAppCells(this.installedAppId);\n if (!cellsMap) {\n return null;\n }\n const cells = Object.values(cellsMap);\n if (cells.length == 0) {\n return null;\n }\n networkSeed = cells[0]!.provisioned.dna_modifiers.network_seed;\n }\n /** encode */\n return encodeHappJoinCode(this._happSha256, this.installedAppId, networkSeed);\n }\n\n\n /** */\n async fetchCell(appId: InstalledAppId, cellAddr: CellAddress): Promise<Cell> {\n const appInfo = await this.appInfo();\n //console.log(\"fetchCell\", appInfo);\n if (appInfo == null) {\n return Promise.reject(`getCell() failed. App \"${appId}\" not found\"`);\n }\n for (const cellInfos of Object.values(appInfo.cell_info)) {\n for (const [baseRoleName, cellInfo] of Object.entries(cellInfos)) {\n let cell: Cell;\n try {\n cell = Cell.from(cellInfo, appId, baseRoleName);\n } catch(e) {\n // skip stem cell\n continue;\n }\n if (cell.address.equals(cellAddr)) {\n return cell;\n }\n }\n }\n return Promise.reject(\"getCell() failed. Cell not found for app.\");\n }\n\n\n /** Get all cells for a BaseRole in an app */\n async fetchCells(appId: InstalledAppId, baseRoleName: BaseRoleName): Promise<CellsForRole> {\n /** Make sure hApp exists */\n const appInfo = await this.appInfo();\n if (appInfo == null) {\n return Promise.reject(`fetchCells() failed. App \"${appId}\" not found`);\n }\n console.log(\"fetchCells() installedAppInfo:\\n\", printAppInfo(appInfo));\n\n /** Make sure app Object exists */\n if (!this._cellsByApp[appId]) {\n this._cellsByApp[appId] = {};\n }\n /** Get all cells with that baseRoleName */\n let provisioned: ProvisionedCell | undefined;\n let clones: MyDictionary<ClonedCell> = {};\n for (const [curBaseRoleName, cellInfos] of Object.entries(appInfo.cell_info)) {\n for (const cellInfo of Object.values(cellInfos)) {\n if (baseRoleName !== curBaseRoleName || CellType.Stem == cellInfo.type) {\n continue;\n }\n if (CellType.Cloned == cellInfo.type) {\n const cloned = cellInfo.value as ClonedCell;\n if (clones[cloned.clone_id]) {\n console.error(`fetchCells() Entry already exist for clone: \"${cloned.clone_id}\"`)\n }\n clones[cloned.clone_id] = cloned;\n } else {\n provisioned = cellInfo.value as ProvisionedCell;\n }\n }\n }\n if (typeof provisioned === 'undefined') {\n return Promise.reject(\"Provisioned cell not found for role \" + baseRoleName);\n }\n let roleInstalledCells: CellsForRole = {provisioned: provisioned!, clones}\n /** Store it*/\n this._cellsByApp[appId]![baseRoleName] = roleInstalledCells;\n return roleInstalledCells;\n }\n\n\n /** */\n addClone(hcl: HCL, cloneCell: ClonedCell): void {\n if (!this._cellsByApp[hcl.appId]) throw Error(\"addClone() failed. no appId. \" + hcl.toString());\n if (!this._cellsByApp[hcl.appId]![hcl.baseRoleName]) throw Error(\"addClone() failed. no baseRoleName. \" + hcl.toString());\n if (hcl.cloneId === undefined) throw Error(\"addClone() failed. Cell is not a CloneCell: \" + hcl.toString());\n\n // let cloneName = hcl.cloneId;\n // if (hcl.cloneId === undefined) {\n // const cloneIndex: number = Object.keys(this._cellsByApp[hcl.appId][hcl.baseRoleName].clones).length;\n // cloneName = createCloneName(hcl.baseRoleName, cloneIndex);\n // }\n this._cellsByApp[hcl.appId]![hcl.baseRoleName]!.clones[cloneCell.clone_id] = cloneCell;\n // const sCellId = CellIdStr(cloneCell.cell_id);\n // console.log(\"CreateCellProxy() adding to hclMap\", sCellId, cellLoc.asHcl())\n // if (this._hclMap[sCellId]) {\n // this._hclMap[sCellId].push(cellLoc.asHcl());\n // } else {\n // this._hclMap[sCellId] = [cellLoc.asHcl()];\n // }\n }\n\n\n /** */\n createCellProxy(hcl: HCL, cloneName?: string): CellProxy {\n console.log(\"createCellProxy() for\", hcl.toString(), cloneName);\n /** Make sure cell exists */\n const cell = this.getCell(hcl);\n const sCellId = cell.address.str;\n /** Create proxy for this cell if none exist yet, otherwise reuse */\n let cellProxy = this._cellProxies[sCellId];\n if (!cellProxy) {\n /** Create and store Proxy */\n cellProxy = new CellProxy(this, cell, this.defaultTimeout);\n this._cellProxies[sCellId] = cellProxy;\n }\n /** Create CellAddress -> HCL mapping */\n //console.log(\"CreateCellProxy() adding to hclMap\", sCellId, hcl.toString())\n if (this._hclMap[sCellId]) {\n this._hclMap[sCellId]!.push(hcl);\n } else {\n this._hclMap[sCellId] = [hcl];\n }\n //console.log(\"createCellProxy() Currently stored hclMap:\", this._hclMap);\n /** Associate cloneName if any */\n const name = cloneName? cloneName : hcl.baseRoleName;\n this._cellNames[hcl.toString()] = name;\n /** Done */\n return cellProxy;\n }\n\n\n /** */\n onSignal(signal: Signal): void {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n /** Grab cell specific handlers */\n const hcls = this.getLocations(CellAddress.from(appSignal.cell_id));\n if (!hcls) {\n return;\n }\n const handlerss: (SignalCb[] | undefined)[] = hcls\n .map((hcl) => this._signalHandlers[hcl.toString()])\n .filter((arr) => arr != undefined);\n //console.log(\"onSignal()\", hcls? hcls.toString() : \"unknown cell: \" + encodeHashToBase64(signal.cell_id[0]), handlerss);\n /** Grab common handler */\n const allHandlers = this._signalHandlers[\"__all\"];\n if (allHandlers) handlerss.push(allHandlers);\n /** Send to all handlers */\n for (const handlers of handlerss) {\n for (const handler of handlers!) {\n handler(signal);\n }\n }\n }\n\n\n /** Store signalHandler to internal handler array */\n addSignalHandler(handler: SignalCb, hcl?: HCLString): SignalUnsubscriber {\n //console.log(\"addSignalHandler()\", hcl);\n\n hcl = hcl? hcl: \"__all\";\n //console.log(\"addSignalHandler()\", hcl, Object.keys(this._signalHandlers));\n if (!this._signalHandlers[hcl]) {\n this._signalHandlers[hcl] = [handler];\n } else {\n this._signalHandlers[hcl]!.push(handler);\n }\n /* return tailored unsubscribe function to the caller */\n return {\n unsubscribe: () => {\n // FIXME\n // const maybeHandler = this._signalHandlers[hcl!]\n // if (!maybeHandler) {\n // console.warn(\"unsubscribe failed: Couldn't find signalHandler for\", hcl)\n // return;\n // }\n // delete this._signalHandlers[hcl!];\n }\n };\n }\n\n /** Log all signals received */\n protected logSignal(signal: Signal): void {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n const zomeSignal = this.intoZomeSignal(appSignal);\n if (!zomeSignal) {\n return;\n }\n const log: SignalLog = {ts: Date.now(), cellAddr: CellAddress.from(appSignal.cell_id), zomeName: appSignal.zome_name, zomeSignal, type: AppSignalType.Unknown, pulseCount: 1};\n if (zomeSignal) {\n log.pulseCount = zomeSignal.pulses.length;\n if (zomeSignal.pulses.length == 0) {\n log.type = AppSignalType.Empty;\n } else {\n log.type = AppSignalType.Zome;\n }\n }\n this._signalLogs.push(log);\n }\n\n\n /** */\n intoZomeSignal(appSignal: AppSignal): ZomeSignal | undefined {\n if (typeof appSignal.payload !== 'object' || Array.isArray(appSignal.payload) || appSignal.payload === null) {\n return;\n }\n const payload = appSignal.payload as Object;\n if (\"pulses\" in payload && \"from\" in payload) {\n return appSignal.payload as ZomeSignal;\n }\n return;\n }\n\n\n /** */\n dumpSignalLogs(canAppSignals: boolean, cellAddr?: CellAddress, zomeName?: ZomeName) {\n const me = enc64(this.myPubKey);\n let logs = this._signalLogs;\n /** Filter by cell and zome */\n let cellNames;\n if (cellAddr) {\n const hcls = this._hclMap[cellAddr.str];\n cellNames = hcls!.map((hcl) => this.getCellName(hcl));\n logs = this._signalLogs\n .filter((log) => log.cellAddr.equals(cellAddr));\n if (zomeName) {\n logs = this._signalLogs\n .filter((log) => log.zomeName == zomeName);\n }\n }\n /** Seperate by type */\n const unknownSignals = logs.filter((log) => log.type == AppSignalType.Unknown);\n const zomeSignals = logs.filter((log) => log.type == AppSignalType.Zome);\n const appSignals = zomeSignals.filter((log) => {\n const type = Object.keys(log.zomeSignal.pulses[0]!)[0];\n type != \"System\"\n });\n const sysSignals = zomeSignals.filter((log) => {\n const type = Object.keys(log.zomeSignal.pulses[0]!)[0];\n type == \"System\"\n });\n\n /** Dump unknown signals */\n if (unknownSignals.length) {\n let logs;\n if (zomeName) {\n console.error(`Unknown signals from zome \"${zomeName}\": ${unknownSignals.length}`);\n logs = unknownSignals\n .map((log) => {\n return {timestamp: prettyDate(new Date(log.ts)), payload: log.zomeSignal}\n });\n } else {\n console.error(`Unknown signals: ${unknownSignals.length}`);\n logs = unknownSignals\n .map((log) => {\n return {timestamp: prettyDate(new Date(log.ts)), zome: log.zomeName, payload: log.zomeSignal}\n });\n }\n console.table(logs);\n }\n\n /** Dump System signals */\n let syslogs: any[] = [];\n if (cellNames) {\n if (zomeName) {\n console.warn(`Unknown signals from zome \"${zomeName}\" in cell \"${cellNames}\"`);\n sysSignals.map((log) => {\n for (const pulse of log.zomeSignal.pulses) {\n const payload = (pulse as SystemPulse).System;\n syslogs.push({timestamp: prettyDate(new Date(log.ts)), payload});\n }\n });\n } else {\n console.warn(`System signals from cell \"${cellNames}\"`);\n sysSignals.map((log) => {\n for (const pulse of log.zomeSignal.pulses) {\n const payload = (pulse as SystemPulse).System;\n syslogs.push({timestamp: prettyDate(new Date(log.ts)), zome: log.zomeName, payload});\n }\n });\n }\n } else {\n console.warn(`System signals: ${sysSignals.length}`)\n sysSignals.map((log) => {\n const app = this._hclMap[log.cellAddr.str]![0]!.appId;\n const cell: string = this._hclMap[log.cellAddr.str]![0]!.roleName;\n for (const pulse of log.zomeSignal.pulses) {\n const payload = (pulse as SystemPulse).System;\n syslogs.push({timestamp: prettyDate(new Date(log.ts)), app, cell, zome: log.zomeName, payload});\n }\n });\n }\n console.table(syslogs);\n\n /** Dump App signals */\n if (!canAppSignals) {\n return;\n }\n let appLogs;\n if (cellNames) {\n if (zomeName) {\n console.warn(`App signals from zome \"${zomeName}\" in cell \"${cellNames}\"`);\n appLogs = appSignals.map((log) => {\n const pulses = log.zomeSignal.pulses;\n const from = enc64(log.zomeSignal.from) == me ? \"self\" : enc64(log.zomeSignal.from);\n return {timestamp: prettyDate(new Date(log.ts)), from, count: pulses.length, payload: pulses}\n });\n } else {\n console.warn(`App signals from cell \"${cellNames}\"`);\n appLogs = appSignals.map((log) => {\n const pulses = log.zomeSignal.pulses;\n const from = enc64(log.zomeSignal.from) == me ? \"self\" : enc64(log.zomeSignal.from);\n return {timestamp: prettyDate(new Date(log.ts)), zome: log.zomeName, from, count: pulses.length, payload: pulses}\n });\n }\n } else {\n console.warn(`App signals: ${appSignals.length}`)\n appLogs = appSignals.map((log) => {\n const app = this._hclMap[log.cellAddr.str]![0]!.appId;\n const cell: string = this._hclMap[log.cellAddr.str]![0]!.roleName;\n const pulses = log.zomeSignal.pulses;\n const from = enc64(log.zomeSignal.from) == me? \"self\" : enc64(log.zomeSignal.from);\n return { timestamp: prettyDate(new Date(log.ts)), app, cell, zome: log.zomeName, from, count: pulses.length, payload: pulses};\n });\n }\n console.table(appLogs);\n }\n}\n\n"]}
@@ -21,7 +21,7 @@ export interface ResponseLog {
21
21
  export type Cb = () => Promise<unknown>;
22
22
  declare const CellProxy_base: (abstract new (...args: any[]) => {
23
23
  _cell?: Cell;
24
- readonly cell: Cell;
24
+ get cell(): Cell;
25
25
  }) & typeof Empty;
26
26
  export declare class CellProxy extends CellProxy_base {
27
27
  private _appProxy;
package/dist/CellProxy.js CHANGED
@@ -260,6 +260,7 @@ export class CellProxy extends CellMixin(Empty) {
260
260
  }
261
261
  }
262
262
  async callDnaInfo(zomeName) {
263
+ console.log("callDnaInfo()", zomeName);
263
264
  if (this._dnaInfoCache) {
264
265
  return this._dnaInfoCache;
265
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CellProxy.js","sourceRoot":"","sources":["../src/CellProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppSignal,\n SignalCb,\n CallZomeRequest,\n CapSecret,\n Timestamp,\n ZomeName,\n Signal, SignalType,\n} from \"@holochain/client\";\nimport {CellMixin, Empty} from \"./mixins\";\nimport {Cell} from \"./cell\";\nimport {\n CellIdStr,\n DnaInfo, EntryDef,\n EntryDefsCallbackResult,\n AppSignalType,\n SystemPulse,\n\n ZomeInfo\n} from \"./types\";\nimport {Mutex, withTimeout} from \"async-mutex\";\nimport MutexInterface from \"async-mutex/lib/MutexInterface\";\nimport {\n AppProxy,\n SignalUnsubscriber,\n} from \"./AppProxy\";\nimport {prettyDate, prettyDuration} from \"./pretty\";\nimport {anyToB64, intoAnyId} from \"./hash\";\nimport {MyDictionary, sha256} from \"./utils\";\nimport {TimeMap} from \"./time-map\";\nimport {\n SystemAttestationVariantPostCommitEntry,\n SystemAttestationVariantSelfCallEnd,\n SystemAttestationVariantSelfCallStart\n} from \"./zomeSignals.types\";\n\n\nexport interface RequestLog {\n request: CallZomeRequest,\n timeout: number,\n requestTimestamp: number,\n executionTimestamp: number,\n}\n\nexport interface ResponseLog {\n success?: unknown,\n failure?: unknown,\n throttled?: boolean,\n timestamp: number,\n requestIndex: number;\n}\n\n\nexport type Cb = () => Promise<unknown>\n\n/**\n * Proxy for a running DNA.\n * It logs and queues ZomeCalls.\n * It holds a reference to its AppProxy and its Cell.\n * This class is expected to be used by ZomeProxies.\n */\nexport class CellProxy extends CellMixin(Empty) {\n\n /** Ctor */\n constructor(\n private _appProxy: AppProxy,\n cell: Cell,\n //public readonly dnaDef: MyDnaDef,\n defaultTimeout?: number,\n ) {\n super();\n this._cell = cell;\n console.log(`CellProxy.ctor`, cell);\n this.defaultTimeout = defaultTimeout ? defaultTimeout : 10 * 1000;\n this._callMutex = withTimeout(new Mutex(), this.defaultTimeout);\n\n ///*const _unsub =*/ this.addSignalHandler((sig) => this.blockSelfCall(sig));\n /*const _unsub =*/ this.addSignalHandler((sig) => this.blockUntilPostCommit(sig));\n }\n\n /** -- Fields -- */\n\n defaultTimeout: number;\n protected _callMutex: MutexInterface;\n\n /** append only logs */\n private _requestLog: RequestLog[] = []\n private _responseLog: ResponseLog[] = []\n\n /** Throttle: Don't allow exact same call within 100ms */\n private _reqThrottle = new TimeMap(100, 10);\n private _canThrottle: boolean = true;\n setCanThrottle(can: boolean) {this._canThrottle = can};\n\n /** Cache */\n private _entryDefCache: MyDictionary<MyDictionary<EntryDef>> = {};\n private _zomeInfoCache: MyDictionary<ZomeInfo> = {};\n private _dnaInfoCache?: DnaInfo;\n\n\n /** -- Methods -- */\n\n getHappShareCode(): string | null { return this._appProxy.getHappShareCode(this.cell.baseRoleName)}\n\n\n /** Have a PostCommitEntry attestation release the Mutex */\n private _postCommitRelease?: MutexInterface.Releaser;\n private _postCommitReleaseEntryType?: string;\n protected async blockUntilPostCommit(signal: Signal) {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n const zomeSignal = this._appProxy.intoZomeSignal(appSignal);\n if (!zomeSignal || zomeSignal.pulses.length == 0) {\n return;\n }\n console.debug(\"blockUntilPostCommit()\", zomeSignal, this._postCommitReleaseEntryType, !!this._postCommitRelease);\n const signalType = Object.keys(zomeSignal.pulses[0]!)[0];\n if (signalType != \"System\" || !this._postCommitRelease || !this._postCommitReleaseEntryType) {\n return;\n }\n for (const pulse of zomeSignal.pulses) {\n const sys = (pulse as SystemPulse).System;\n if (sys.type !== \"PostCommitEntry\") {\n continue;\n }\n const pce = sys as SystemAttestationVariantPostCommitEntry;\n if (!pce.succeeded) {\n console.error(\"PostCommit attestations failed\");\n this.dumpCallLogs(appSignal.zome_name);\n this.dumpSignalLogs(appSignal.zome_name);\n }\n if (pce.app_entry_type !== this._postCommitReleaseEntryType) {\n continue;\n }\n /** Release */\n console.debug(\"blockUntilPostCommit() postCommit Lock RELEASE\");\n this._postCommitRelease();\n delete this._postCommitRelease;\n delete this._postCommitReleaseEntryType;\n break;\n }\n }\n\n\n /** Have a self call acquire & the call Mutex */\n private _selfCallRelease?: MutexInterface.Releaser;\n protected async blockSelfCall(signal: AppSignal) {\n const zomeSignal = this._appProxy.intoZomeSignal(signal);\n if (!zomeSignal || zomeSignal.pulses.length == 0 || Object.keys(zomeSignal.pulses[0]!)[0] != 'System') {\n return;\n }\n for (const pulse of zomeSignal.pulses) {\n const sys = (pulse as SystemPulse).System;\n if (sys.type == \"SelfCallStart\") {\n console.log(\"\")\n /** Acquire lock */\n try {\n this._callMutex.acquire().then((r) => this._selfCallRelease = r)\n } catch (e) {\n console.error(\"A Zome self call is initialized during a writing zome call\", e);\n }\n }\n if (sys.type == \"SelfCallEnd\" && this._selfCallRelease) {\n /** Release */\n this._selfCallRelease();\n delete this._selfCallRelease;\n const end = sys as SystemAttestationVariantSelfCallEnd;\n if (!end.succeeded) {\n console.error(\"Call to self failed.\")\n this.dumpCallLogs(end.zome_name);\n this.dumpSignalLogs(end.zome_name);\n }\n }\n }\n }\n\n\n /** */\n purgeLogs() {\n this._responseLog = [];\n this._requestLog = [];\n this._appProxy.purgeLogs();\n }\n\n /** */\n addSignalHandler(handler: SignalCb): SignalUnsubscriber {\n return this._appProxy.addSignalHandler(handler, this.cell.hcl().toString());\n }\n\n\n /** */\n dumpSignalLogs(zomeName?: ZomeName, canAppSignals?: boolean) {\n this._appProxy.dumpSignalLogs(canAppSignals? canAppSignals : true, this.cell.address, zomeName);\n }\n\n\n /** */\n get signalLogs() {\n return this._appProxy.signalLogs.filter((log) => log.cellAddr.equals(this.cell.address));\n }\n\n\n /** Pass call request to conductor proxy and log it */\n private async executeZomeCall(reqLog: RequestLog): Promise<ResponseLog> {\n //console.log(\"executeZomeCall()\", reqLog.request.zome_name, reqLog.request.fn_name);\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n /** Throttle */\n if (this._canThrottle) {\n const reqHash = await sha256(JSON.stringify(reqLog.request));\n if (this._reqThrottle.has(reqHash)) {\n console.warn(`THROTTLING ${reqLog.request.zome_name}::${reqLog.request.fn_name}()`, reqLog.executionTimestamp);\n return {\n requestIndex,\n timestamp: reqLog.executionTimestamp,\n failure: \"Throttled: \" + reqLog.request.fn_name + \"()\",\n throttled: true\n };\n }\n this._reqThrottle.add(reqHash);\n }\n /** */\n this._requestLog.push(reqLog);\n try {\n const response = await this._appProxy.callZome(reqLog.request, reqLog.timeout);\n const respLog = { requestIndex, success: response, timestamp: Date.now() };\n this._responseLog.push(respLog);\n return respLog;\n } catch (e) {\n const respLog = { requestIndex, failure: e, timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\n }\n }\n\n\n /** Pass call request to conductor proxy and log it */\n logCallTimedout(reqLog: RequestLog): ResponseLog {\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n this._requestLog.push(reqLog);\n const respLog = { requestIndex, failure: \"Waiting for Mutex timed-out\", timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\n }\n\n\n /**\n * callZome() with Mutex (for calls that writes to source-chain)\n * TODO: Implement call queue instead of mutex?\n */\n async callZomeBlockPostCommit(entryType: string, zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n /** Create RequestLog */\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.address.intoId(),\n provenance: this.cell.address.agentId.hash,\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n /** Acquire lock */\n console.debug(\"postCommit Lock in progress...\");\n try {\n this._postCommitRelease = await this._callMutex.acquire();\n this._postCommitReleaseEntryType = entryType;\n } catch(e) {\n console.warn(\"Waiting for callZomeBlockPostCommit mutex timed-out\", e);\n this.logCallTimedout(log)\n return Promise.reject(\"Waiting for callZomeBlockPostCommit mutex timed-out\");\n }\n console.debug(\"postCommit Lock ACQUIRED\");\n /** Execute */\n const respLog = await this.executeZomeCall(log);\n return respLog.success;\n }\n\n\n /**\n * callZome() with Mutex (for calls that writes to source-chain)\n * TODO: Implement call queue instead of mutex?\n */\n async callZomeBlocking(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n /** Create RequestLog */\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.address.intoId(),\n provenance: this.cell.address.agentId.hash,\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n\n /** Acquire lock */\n let release;\n try {\n release = await this._callMutex.acquire();\n } catch(e) {\n console.warn(\"Waiting for callZomeBlocking mutex timed-out\", e);\n this.logCallTimedout(log)\n return Promise.reject(\"Waiting for callZomeBlocking mutex timed-out\");\n }\n /** Execute */\n const respLog = await this.executeZomeCall(log);\n /** Release */\n release();\n if (respLog.failure) {\n if (!respLog.throttled) {\n this.dumpCallLogs(zome_name);\n this.dumpSignalLogs(zome_name);\n }\n return Promise.reject(respLog);\n }\n return respLog.success;\n }\n\n\n /** On success returns the data returned by the zome function */\n async callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n /** Create RequestLog */\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.address.intoId(),\n provenance: this.cell.address.agentId.hash,\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n /** Wait for lock */\n try {\n await this._callMutex.waitForUnlock();\n } catch(e) {\n console.warn(\"Waiting for callZome mutex timed-out\", e);\n this.logCallTimedout(log);\n return Promise.reject(\"Waiting for callZome mutex timed-out\");\n }\n /** Execute & return response */\n const respLog = await this.executeZomeCall(log);\n if (respLog.failure) {\n if (!respLog.throttled) {\n this.dumpCallLogs(zome_name);\n this.dumpSignalLogs(zome_name);\n }\n return Promise.reject(respLog);\n }\n return respLog.success;\n }\n\n\n /**\n * Calls the `entry_defs()` zome function and\n * Returns an array of all the zome's AppEntryNames and Visibility, i.e. (AppEntryName, isPublic)[]\n */\n async callEntryDefs(zomeName: ZomeName): Promise<MyDictionary<EntryDef>> {\n console.debug(\"callEntryDefs()\", this._cell?.name, zomeName)\n /** Return cache if any */\n if (this._entryDefCache[zomeName]) {\n return this._entryDefCache[zomeName]!;\n }\n /** Call zome */\n let entryDefs;\n try {\n /* Need big timeout since Holochain is slow when receiving simultaneous calls from multiple happs */\n entryDefs = await this.callZome(zomeName, \"entry_defs\", null, null, 60 * 1000) as EntryDefsCallbackResult;\n } catch (e: any) {\n if (e && e.failure && e.failure.message && e.failure.message.includes(\"Attempted to call a zome function that doesn't exist\")) {\n console.log(`Calling \"entry_defs()\" failed on zome \"${zomeName}\" because zome does not have entry defs.`);\n this._entryDefCache[zomeName] = {};\n return {};\n }\n console.error(`Calling \"entry_defs()\" failed on zome \"${zomeName}\".`);\n return Promise.reject(e);\n }\n console.debug(\"getEntryDefs() for \" + zomeName + \" result:\", entryDefs);\n /** Map result */\n let result: MyDictionary<EntryDef> = {}\n for (const def of entryDefs.Defs) {\n let name = Object.keys(def.id)[0];\n if (\"App\" in def.id) {\n name = def.id.App;\n }\n result[name!] = def;\n }\n //console.log({result})\n this._entryDefCache[zomeName] = result;\n return result;\n }\n\n /**\n * Calls the `zome_info()` zome function\n */\n async callZomeInfo(zomeName: ZomeName): Promise<ZomeInfo> {\n //console.log(\"callZomeInfo()\", zomeName, !!this._zomeInfoCache);\n if (this._zomeInfoCache[zomeName]) {\n return this._zomeInfoCache[zomeName]!;\n }\n try {\n const zome_info = await this.callZome(zomeName, \"get_zome_info\", null, null, 10 * 1000) as ZomeInfo;\n //console.debug(\"callZomeInfo() for \" + zomeName + \" result:\")\n //console.log({zome_info})\n this._zomeInfoCache[zomeName] = zome_info;\n return zome_info;\n } catch (e) {\n console.error(\"Calling callZomeInfo() on \" + zomeName + \" failed. Make sure `get_zome_info()` is implemented in your zome code.\")\n return Promise.reject(e);\n }\n }\n\n\n /**\n * Calls the `dna_info()` zome function\n */\n async callDnaInfo(zomeName: ZomeName): Promise<DnaInfo> {\n //console.log(\"callDnaInfo()\", zomeName);\n if (this._dnaInfoCache) {\n return this._dnaInfoCache;\n }\n try {\n const dna_info = await this.callZome(zomeName, \"get_dna_info\", null, null, 10 * 1000) as DnaInfo;\n //console.debug(\"callDnaInfo() for \" + zomeName + \" result:\")\n //console.log({dna_info})\n this._dnaInfoCache = dna_info;\n return dna_info;\n } catch (e) {\n console.error(\"Calling callDnaInfo() on \" + zomeName + \" failed. Make sure `get_dna_info()` is implemented in your zome code.\")\n return Promise.reject(e);\n }\n }\n\n\n // /** TODO once we have getDnaDefinition() api */\n // dumpAllZomes() {\n // // FIXME get DNA DEF\n // for (const zomeName of dnaDef) {\n // this.dumpCallLogs(zomeName)\n // }\n // }\n\n\n /** */\n dumpCallLogs(zomeName?: ZomeName) {\n let result = [];\n let call_map = new Map<string, [number, number]>(); // fn_fname, call_count, call_total_duration;\n for (const response of this._responseLog) {\n const requestLog = this._requestLog[response.requestIndex];\n if (!requestLog || (zomeName && requestLog.request.zome_name != zomeName)) {\n continue;\n }\n const startTime= prettyDate(new Date(requestLog.requestTimestamp));\n const waitTime = prettyDuration(new Date(requestLog.executionTimestamp - requestLog.requestTimestamp));\n const duration_ts = response.timestamp - requestLog.requestTimestamp;\n const duration = prettyDuration(new Date(duration_ts));\n let input = requestLog.request.payload;\n // if (requestLog.request.payload instanceof HoloHash) {\n // //console.log(\"instanceof HoloHash\", requestLog.request.payload);\n // input = intoAnyId(requestLog.request.payload.toBytes()).print();\n // } else {\n if (requestLog.request.payload instanceof Uint8Array) {\n //console.log(\"instanceof Uint8Array\", requestLog.request.payload);\n input = intoAnyId(requestLog.request.payload).print();\n }\n //}\n //const input = requestLog.request.payload instanceof Uint8Array ? enc64(requestLog.request.payload) : requestLog.request.payload;\n const output = anyToB64(response.failure ? response.failure : response.success);\n const log = zomeName\n ? { startTime, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n : { startTime, zomeName: requestLog.request.zome_name, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n result.push(log);\n let maybe_value = call_map.get(requestLog.request.fn_name);\n if (!maybe_value) {\n call_map.set(requestLog.request.fn_name, [1, duration_ts]);\n } else {\n call_map.set(requestLog.request.fn_name, [maybe_value[0] + 1, maybe_value[1] + duration_ts]);\n }\n }\n console.warn(`Dumping call logs for cell \"${this._appProxy.getLocations(this.cell.address)}\"`)\n if (zomeName) {\n console.warn(` - For zome \"${zomeName}\"`);\n }\n console.table(result)\n\n /** Print call_map as Table */\n let summary: any[] = [];\n for (const [fn_name, values] of call_map) {\n const log = { fnName: fn_name, count: values[0], avgDuration: prettyDuration(new Date(values[1] / values[0])) };\n summary.push(log);\n }\n summary.sort((a, b) => b.count - a.count);\n console.table(summary);\n\n /** Parse signal self-call logs */\n //console.log(this._appProxy.signalLogs)\n\n const zomeSignals = this._appProxy.signalLogs.filter((log) => log.type == AppSignalType.Zome);\n const sysSignals = zomeSignals.filter((log) => {\n const type = Object.keys(log.zomeSignal.pulses[0]!)[0];\n type == \"System\"\n });\n\n const startCalls: [Timestamp, CellIdStr, SystemAttestationVariantSelfCallStart][] = [];\n const endCalls: [Timestamp, CellIdStr, SystemAttestationVariantSelfCallEnd][] = [];\n sysSignals.map((log) => {\n for (const pulse of log.zomeSignal.pulses) {\n const sys = (pulse as SystemPulse).System;\n if(sys.type == \"SelfCallStart\") {\n startCalls.push([log.ts, log.cellAddr.str, (sys as SystemAttestationVariantSelfCallStart)]);\n }\n if(sys.type == \"SelfCallEnd\") {\n endCalls.push([log.ts, log.cellAddr.str, (sys as SystemAttestationVariantSelfCallEnd)]);\n }\n }\n })\n\n let sigResults = [];\n for (const [startTs, startId, startSignal] of startCalls) {\n const index = endCalls.findIndex(([ts, cellId, signal]) => ts >= startTs && startId == cellId && startSignal.fn_name == signal.fn_name)\n if (index == -1) {\n continue;\n }\n const first = endCalls.splice(index, 1)[0]!;\n const [endTs, _cId, endSignal] = first;\n const duration = prettyDuration(new Date(endTs - startTs));\n const log = { startTime: startTs, zomeName: endSignal.zome_name, fnName: endSignal.fn_name, succeeded: endSignal.succeeded, duration }\n sigResults.push(log);\n }\n\n console.table(sigResults)\n }\n\n\n}\n\n"]}
1
+ {"version":3,"file":"CellProxy.js","sourceRoot":"","sources":["../src/CellProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppSignal,\n SignalCb,\n CallZomeRequest,\n CapSecret,\n Timestamp,\n ZomeName,\n Signal, SignalType,\n} from \"@holochain/client\";\nimport {CellMixin, Empty} from \"./mixins\";\nimport {Cell} from \"./cell\";\nimport {\n CellIdStr,\n DnaInfo, EntryDef,\n EntryDefsCallbackResult,\n AppSignalType,\n SystemPulse,\n\n ZomeInfo\n} from \"./types\";\nimport {Mutex, withTimeout} from \"async-mutex\";\nimport MutexInterface from \"async-mutex/lib/MutexInterface\";\nimport {\n AppProxy,\n SignalUnsubscriber,\n} from \"./AppProxy\";\nimport {prettyDate, prettyDuration} from \"./pretty\";\nimport {anyToB64, intoAnyId} from \"./hash\";\nimport {MyDictionary, sha256} from \"./utils\";\nimport {TimeMap} from \"./time-map\";\nimport {\n SystemAttestationVariantPostCommitEntry,\n SystemAttestationVariantSelfCallEnd,\n SystemAttestationVariantSelfCallStart\n} from \"./zomeSignals.types\";\n\n\nexport interface RequestLog {\n request: CallZomeRequest,\n timeout: number,\n requestTimestamp: number,\n executionTimestamp: number,\n}\n\nexport interface ResponseLog {\n success?: unknown,\n failure?: unknown,\n throttled?: boolean,\n timestamp: number,\n requestIndex: number;\n}\n\n\nexport type Cb = () => Promise<unknown>\n\n/**\n * Proxy for a running DNA.\n * It logs and queues ZomeCalls.\n * It holds a reference to its AppProxy and its Cell.\n * This class is expected to be used by ZomeProxies.\n */\nexport class CellProxy extends CellMixin(Empty) {\n\n /** Ctor */\n constructor(\n private _appProxy: AppProxy,\n cell: Cell,\n //public readonly dnaDef: MyDnaDef,\n defaultTimeout?: number,\n ) {\n super();\n this._cell = cell;\n console.log(`CellProxy.ctor`, cell);\n this.defaultTimeout = defaultTimeout ? defaultTimeout : 10 * 1000;\n this._callMutex = withTimeout(new Mutex(), this.defaultTimeout);\n\n ///*const _unsub =*/ this.addSignalHandler((sig) => this.blockSelfCall(sig));\n /*const _unsub =*/ this.addSignalHandler((sig) => this.blockUntilPostCommit(sig));\n }\n\n /** -- Fields -- */\n\n defaultTimeout: number;\n protected _callMutex: MutexInterface;\n\n /** append only logs */\n private _requestLog: RequestLog[] = []\n private _responseLog: ResponseLog[] = []\n\n /** Throttle: Don't allow exact same call within 100ms */\n private _reqThrottle = new TimeMap(100, 10);\n private _canThrottle: boolean = true;\n setCanThrottle(can: boolean) {this._canThrottle = can};\n\n /** Cache */\n private _entryDefCache: MyDictionary<MyDictionary<EntryDef>> = {};\n private _zomeInfoCache: MyDictionary<ZomeInfo> = {};\n private _dnaInfoCache?: DnaInfo;\n\n\n /** -- Methods -- */\n\n getHappShareCode(): string | null { return this._appProxy.getHappShareCode(this.cell.baseRoleName)}\n\n\n /** Have a PostCommitEntry attestation release the Mutex */\n private _postCommitRelease?: MutexInterface.Releaser;\n private _postCommitReleaseEntryType?: string;\n protected async blockUntilPostCommit(signal: Signal) {\n if (SignalType.App != signal.type) {\n return;\n }\n const appSignal: AppSignal = signal.value;\n const zomeSignal = this._appProxy.intoZomeSignal(appSignal);\n if (!zomeSignal || zomeSignal.pulses.length == 0) {\n return;\n }\n console.debug(\"blockUntilPostCommit()\", zomeSignal, this._postCommitReleaseEntryType, !!this._postCommitRelease);\n const signalType = Object.keys(zomeSignal.pulses[0]!)[0];\n if (signalType != \"System\" || !this._postCommitRelease || !this._postCommitReleaseEntryType) {\n return;\n }\n for (const pulse of zomeSignal.pulses) {\n const sys = (pulse as SystemPulse).System;\n if (sys.type !== \"PostCommitEntry\") {\n continue;\n }\n const pce = sys as SystemAttestationVariantPostCommitEntry;\n if (!pce.succeeded) {\n console.error(\"PostCommit attestations failed\");\n this.dumpCallLogs(appSignal.zome_name);\n this.dumpSignalLogs(appSignal.zome_name);\n }\n if (pce.app_entry_type !== this._postCommitReleaseEntryType) {\n continue;\n }\n /** Release */\n console.debug(\"blockUntilPostCommit() postCommit Lock RELEASE\");\n this._postCommitRelease();\n delete this._postCommitRelease;\n delete this._postCommitReleaseEntryType;\n break;\n }\n }\n\n\n /** Have a self call acquire & the call Mutex */\n private _selfCallRelease?: MutexInterface.Releaser;\n protected async blockSelfCall(signal: AppSignal) {\n const zomeSignal = this._appProxy.intoZomeSignal(signal);\n if (!zomeSignal || zomeSignal.pulses.length == 0 || Object.keys(zomeSignal.pulses[0]!)[0] != 'System') {\n return;\n }\n for (const pulse of zomeSignal.pulses) {\n const sys = (pulse as SystemPulse).System;\n if (sys.type == \"SelfCallStart\") {\n console.log(\"\")\n /** Acquire lock */\n try {\n this._callMutex.acquire().then((r) => this._selfCallRelease = r)\n } catch (e) {\n console.error(\"A Zome self call is initialized during a writing zome call\", e);\n }\n }\n if (sys.type == \"SelfCallEnd\" && this._selfCallRelease) {\n /** Release */\n this._selfCallRelease();\n delete this._selfCallRelease;\n const end = sys as SystemAttestationVariantSelfCallEnd;\n if (!end.succeeded) {\n console.error(\"Call to self failed.\")\n this.dumpCallLogs(end.zome_name);\n this.dumpSignalLogs(end.zome_name);\n }\n }\n }\n }\n\n\n /** */\n purgeLogs() {\n this._responseLog = [];\n this._requestLog = [];\n this._appProxy.purgeLogs();\n }\n\n /** */\n addSignalHandler(handler: SignalCb): SignalUnsubscriber {\n return this._appProxy.addSignalHandler(handler, this.cell.hcl().toString());\n }\n\n\n /** */\n dumpSignalLogs(zomeName?: ZomeName, canAppSignals?: boolean) {\n this._appProxy.dumpSignalLogs(canAppSignals? canAppSignals : true, this.cell.address, zomeName);\n }\n\n\n /** */\n get signalLogs() {\n return this._appProxy.signalLogs.filter((log) => log.cellAddr.equals(this.cell.address));\n }\n\n\n /** Pass call request to conductor proxy and log it */\n private async executeZomeCall(reqLog: RequestLog): Promise<ResponseLog> {\n //console.log(\"executeZomeCall()\", reqLog.request.zome_name, reqLog.request.fn_name);\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n /** Throttle */\n if (this._canThrottle) {\n const reqHash = await sha256(JSON.stringify(reqLog.request));\n if (this._reqThrottle.has(reqHash)) {\n console.warn(`THROTTLING ${reqLog.request.zome_name}::${reqLog.request.fn_name}()`, reqLog.executionTimestamp);\n return {\n requestIndex,\n timestamp: reqLog.executionTimestamp,\n failure: \"Throttled: \" + reqLog.request.fn_name + \"()\",\n throttled: true\n };\n }\n this._reqThrottle.add(reqHash);\n }\n /** */\n this._requestLog.push(reqLog);\n try {\n const response = await this._appProxy.callZome(reqLog.request, reqLog.timeout);\n const respLog = { requestIndex, success: response, timestamp: Date.now() };\n this._responseLog.push(respLog);\n return respLog;\n } catch (e) {\n const respLog = { requestIndex, failure: e, timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\n }\n }\n\n\n /** Pass call request to conductor proxy and log it */\n logCallTimedout(reqLog: RequestLog): ResponseLog {\n reqLog.executionTimestamp = Date.now();\n const requestIndex = this._requestLog.length;\n this._requestLog.push(reqLog);\n const respLog = { requestIndex, failure: \"Waiting for Mutex timed-out\", timestamp: Date.now() }\n this._responseLog.push(respLog);\n return respLog;\n }\n\n\n /**\n * callZome() with Mutex (for calls that writes to source-chain)\n * TODO: Implement call queue instead of mutex?\n */\n async callZomeBlockPostCommit(entryType: string, zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n /** Create RequestLog */\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.address.intoId(),\n provenance: this.cell.address.agentId.hash,\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n /** Acquire lock */\n console.debug(\"postCommit Lock in progress...\");\n try {\n this._postCommitRelease = await this._callMutex.acquire();\n this._postCommitReleaseEntryType = entryType;\n } catch(e) {\n console.warn(\"Waiting for callZomeBlockPostCommit mutex timed-out\", e);\n this.logCallTimedout(log)\n return Promise.reject(\"Waiting for callZomeBlockPostCommit mutex timed-out\");\n }\n console.debug(\"postCommit Lock ACQUIRED\");\n /** Execute */\n const respLog = await this.executeZomeCall(log);\n return respLog.success;\n }\n\n\n /**\n * callZome() with Mutex (for calls that writes to source-chain)\n * TODO: Implement call queue instead of mutex?\n */\n async callZomeBlocking(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n /** Create RequestLog */\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.address.intoId(),\n provenance: this.cell.address.agentId.hash,\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n\n /** Acquire lock */\n let release;\n try {\n release = await this._callMutex.acquire();\n } catch(e) {\n console.warn(\"Waiting for callZomeBlocking mutex timed-out\", e);\n this.logCallTimedout(log)\n return Promise.reject(\"Waiting for callZomeBlocking mutex timed-out\");\n }\n /** Execute */\n const respLog = await this.executeZomeCall(log);\n /** Release */\n release();\n if (respLog.failure) {\n if (!respLog.throttled) {\n this.dumpCallLogs(zome_name);\n this.dumpSignalLogs(zome_name);\n }\n return Promise.reject(respLog);\n }\n return respLog.success;\n }\n\n\n /** On success returns the data returned by the zome function */\n async callZome(zome_name: ZomeName, fn_name: string, payload: any, cap_secret: CapSecret | null, timeout?: number): Promise<unknown> {\n /** Create RequestLog */\n timeout = timeout? timeout : this.defaultTimeout;\n const req = {\n cap_secret, zome_name, fn_name, payload,\n cell_id: this.cell.address.intoId(),\n provenance: this.cell.address.agentId.hash,\n } as CallZomeRequest;\n const log = { request: req, timeout, requestTimestamp: Date.now() } as RequestLog;\n /** Wait for lock */\n try {\n await this._callMutex.waitForUnlock();\n } catch(e) {\n console.warn(\"Waiting for callZome mutex timed-out\", e);\n this.logCallTimedout(log);\n return Promise.reject(\"Waiting for callZome mutex timed-out\");\n }\n /** Execute & return response */\n const respLog = await this.executeZomeCall(log);\n if (respLog.failure) {\n if (!respLog.throttled) {\n this.dumpCallLogs(zome_name);\n this.dumpSignalLogs(zome_name);\n }\n return Promise.reject(respLog);\n }\n return respLog.success;\n }\n\n\n /**\n * Calls the `entry_defs()` zome function and\n * Returns an array of all the zome's AppEntryNames and Visibility, i.e. (AppEntryName, isPublic)[]\n */\n async callEntryDefs(zomeName: ZomeName): Promise<MyDictionary<EntryDef>> {\n console.debug(\"callEntryDefs()\", this._cell?.name, zomeName)\n /** Return cache if any */\n if (this._entryDefCache[zomeName]) {\n return this._entryDefCache[zomeName]!;\n }\n /** Call zome */\n let entryDefs;\n try {\n /* Need big timeout since Holochain is slow when receiving simultaneous calls from multiple happs */\n entryDefs = await this.callZome(zomeName, \"entry_defs\", null, null, 60 * 1000) as EntryDefsCallbackResult;\n } catch (e: any) {\n if (e && e.failure && e.failure.message && e.failure.message.includes(\"Attempted to call a zome function that doesn't exist\")) {\n console.log(`Calling \"entry_defs()\" failed on zome \"${zomeName}\" because zome does not have entry defs.`);\n this._entryDefCache[zomeName] = {};\n return {};\n }\n console.error(`Calling \"entry_defs()\" failed on zome \"${zomeName}\".`);\n return Promise.reject(e);\n }\n console.debug(\"getEntryDefs() for \" + zomeName + \" result:\", entryDefs);\n /** Map result */\n let result: MyDictionary<EntryDef> = {}\n for (const def of entryDefs.Defs) {\n let name = Object.keys(def.id)[0];\n if (\"App\" in def.id) {\n name = def.id.App;\n }\n result[name!] = def;\n }\n //console.log({result})\n this._entryDefCache[zomeName] = result;\n return result;\n }\n\n /**\n * Calls the `zome_info()` zome function\n */\n async callZomeInfo(zomeName: ZomeName): Promise<ZomeInfo> {\n //console.log(\"callZomeInfo()\", zomeName, !!this._zomeInfoCache);\n if (this._zomeInfoCache[zomeName]) {\n return this._zomeInfoCache[zomeName]!;\n }\n try {\n const zome_info = await this.callZome(zomeName, \"get_zome_info\", null, null, 10 * 1000) as ZomeInfo;\n //console.debug(\"callZomeInfo() for \" + zomeName + \" result:\")\n //console.log({zome_info})\n this._zomeInfoCache[zomeName] = zome_info;\n return zome_info;\n } catch (e) {\n console.error(\"Calling callZomeInfo() on \" + zomeName + \" failed. Make sure `get_zome_info()` is implemented in your zome code.\")\n return Promise.reject(e);\n }\n }\n\n\n /**\n * Calls the `dna_info()` zome function\n */\n async callDnaInfo(zomeName: ZomeName): Promise<DnaInfo> {\n console.log(\"callDnaInfo()\", zomeName);\n if (this._dnaInfoCache) {\n return this._dnaInfoCache;\n }\n try {\n const dna_info = await this.callZome(zomeName, \"get_dna_info\", null, null, 10 * 1000) as DnaInfo;\n //console.debug(\"callDnaInfo() for \" + zomeName + \" result:\")\n //console.log({dna_info})\n this._dnaInfoCache = dna_info;\n return dna_info;\n } catch (e) {\n console.error(\"Calling callDnaInfo() on \" + zomeName + \" failed. Make sure `get_dna_info()` is implemented in your zome code.\")\n return Promise.reject(e);\n }\n }\n\n\n // /** TODO once we have getDnaDefinition() api */\n // dumpAllZomes() {\n // // FIXME get DNA DEF\n // for (const zomeName of dnaDef) {\n // this.dumpCallLogs(zomeName)\n // }\n // }\n\n\n /** */\n dumpCallLogs(zomeName?: ZomeName) {\n let result = [];\n let call_map = new Map<string, [number, number]>(); // fn_fname, call_count, call_total_duration;\n for (const response of this._responseLog) {\n const requestLog = this._requestLog[response.requestIndex];\n if (!requestLog || (zomeName && requestLog.request.zome_name != zomeName)) {\n continue;\n }\n const startTime= prettyDate(new Date(requestLog.requestTimestamp));\n const waitTime = prettyDuration(new Date(requestLog.executionTimestamp - requestLog.requestTimestamp));\n const duration_ts = response.timestamp - requestLog.requestTimestamp;\n const duration = prettyDuration(new Date(duration_ts));\n let input = requestLog.request.payload;\n // if (requestLog.request.payload instanceof HoloHash) {\n // //console.log(\"instanceof HoloHash\", requestLog.request.payload);\n // input = intoAnyId(requestLog.request.payload.toBytes()).print();\n // } else {\n if (requestLog.request.payload instanceof Uint8Array) {\n //console.log(\"instanceof Uint8Array\", requestLog.request.payload);\n input = intoAnyId(requestLog.request.payload).print();\n }\n //}\n //const input = requestLog.request.payload instanceof Uint8Array ? enc64(requestLog.request.payload) : requestLog.request.payload;\n const output = anyToB64(response.failure ? response.failure : response.success);\n const log = zomeName\n ? { startTime, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n : { startTime, zomeName: requestLog.request.zome_name, fnName: requestLog.request.fn_name, input, output, duration, waitTime }\n result.push(log);\n let maybe_value = call_map.get(requestLog.request.fn_name);\n if (!maybe_value) {\n call_map.set(requestLog.request.fn_name, [1, duration_ts]);\n } else {\n call_map.set(requestLog.request.fn_name, [maybe_value[0] + 1, maybe_value[1] + duration_ts]);\n }\n }\n console.warn(`Dumping call logs for cell \"${this._appProxy.getLocations(this.cell.address)}\"`)\n if (zomeName) {\n console.warn(` - For zome \"${zomeName}\"`);\n }\n console.table(result)\n\n /** Print call_map as Table */\n let summary: any[] = [];\n for (const [fn_name, values] of call_map) {\n const log = { fnName: fn_name, count: values[0], avgDuration: prettyDuration(new Date(values[1] / values[0])) };\n summary.push(log);\n }\n summary.sort((a, b) => b.count - a.count);\n console.table(summary);\n\n /** Parse signal self-call logs */\n //console.log(this._appProxy.signalLogs)\n\n const zomeSignals = this._appProxy.signalLogs.filter((log) => log.type == AppSignalType.Zome);\n const sysSignals = zomeSignals.filter((log) => {\n const type = Object.keys(log.zomeSignal.pulses[0]!)[0];\n type == \"System\"\n });\n\n const startCalls: [Timestamp, CellIdStr, SystemAttestationVariantSelfCallStart][] = [];\n const endCalls: [Timestamp, CellIdStr, SystemAttestationVariantSelfCallEnd][] = [];\n sysSignals.map((log) => {\n for (const pulse of log.zomeSignal.pulses) {\n const sys = (pulse as SystemPulse).System;\n if(sys.type == \"SelfCallStart\") {\n startCalls.push([log.ts, log.cellAddr.str, (sys as SystemAttestationVariantSelfCallStart)]);\n }\n if(sys.type == \"SelfCallEnd\") {\n endCalls.push([log.ts, log.cellAddr.str, (sys as SystemAttestationVariantSelfCallEnd)]);\n }\n }\n })\n\n let sigResults = [];\n for (const [startTs, startId, startSignal] of startCalls) {\n const index = endCalls.findIndex(([ts, cellId, signal]) => ts >= startTs && startId == cellId && startSignal.fn_name == signal.fn_name)\n if (index == -1) {\n continue;\n }\n const first = endCalls.splice(index, 1)[0]!;\n const [endTs, _cId, endSignal] = first;\n const duration = prettyDuration(new Date(endTs - startTs));\n const log = { startTime: startTs, zomeName: endSignal.zome_name, fnName: endSignal.fn_name, succeeded: endSignal.succeeded, duration }\n sigResults.push(log);\n }\n\n console.table(sigResults)\n }\n\n\n}\n\n"]}
@@ -1,4 +1,4 @@
1
- import { AppInfoResponse, AppWebsocket, CallZomeRequest, InstalledAppId, CreateCloneCellRequest, DisableCloneCellRequest, EnableCloneCellRequest, ClonedCell, AppClient, AppEvents, SignalCb, AdminWebsocket, CreateCloneCellResponse, EnableCloneCellResponse, DumpNetworkMetricsRequest, DumpNetworkMetricsResponse } from "@holochain/client";
1
+ import { AppInfoResponse, AppWebsocket, CallZomeRequest, InstalledAppId, CreateCloneCellRequest, DisableCloneCellRequest, EnableCloneCellRequest, ClonedCell, AppClient, AppEvents, SignalCb, AdminWebsocket, CreateCloneCellResponse, EnableCloneCellResponse, DumpNetworkMetricsRequest, DumpNetworkMetricsResponse, AgentInfoResponse, PeerMetaInfoResponse, PeerMetaInfoRequest, AgentInfoRequest, MemproofMap } from "@holochain/client";
2
2
  import { UnsubscribeFunction } from "emittery";
3
3
  import { AppProxy } from "./AppProxy";
4
4
  import { AgentId } from "./hash";
@@ -30,6 +30,10 @@ export declare class ConductorAppProxy extends AppProxy implements AppClient {
30
30
  disableCloneCell(request: DisableCloneCellRequest): Promise<void>;
31
31
  dumpNetworkStats(): Promise<AppDumpNetworkStatsResponse>;
32
32
  dumpNetworkMetrics(req: DumpNetworkMetricsRequest, timeout?: number): Promise<DumpNetworkMetricsResponse>;
33
+ agentInfo(req: AgentInfoRequest, timeout?: number): Promise<AgentInfoResponse>;
34
+ peerMetaInfo(req: PeerMetaInfoRequest, timeout?: number): Promise<PeerMetaInfoResponse>;
35
+ provideMemproofs(memproofs: MemproofMap): Promise<void>;
36
+ enableApp(): Promise<void>;
33
37
  static new(appId: InstalledAppId, connOptions: HcConnectionOptions, happSha256?: string): Promise<ConductorAppProxy>;
34
38
  private static fromSocket;
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConductorAppProxy.d.ts","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAC,2BAA2B,EAAC,MAAM,iCAAiC,CAAC;AAG5E,MAAM,WAAW,UAAU;IACf,eAAe,CAAC,GAAG,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,OAAO,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC9G,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC/E,gBAAgB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAGD,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAC9B,CAAA;AAED,KAAK,eAAe,GAAG;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,eAAe,CAAC;AAWlE,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,SAAS;gBAI5D,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,cAAc;IAQ9B,OAAO,CAAC,MAAM,CAAgB;IAWf,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAIzC,EAAE,CAAC,IAAI,SAAS,MAAM,SAAS,EACtC,SAAS,EAAE,IAAI,GAAG,SAAS,IAAI,EAAE,EACjC,QAAQ,EAAE,QAAQ,GACjB,mBAAmB;IAIP,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKrE,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKrE,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMjE,gBAAgB,IAAI,OAAO,CAAC,2BAA2B,CAAC;IAIxD,kBAAkB,CAC/B,GAAG,EAAE,yBAAyB,EAC9B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,0BAA0B,CAAC;WASzB,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;mBAwCrG,UAAU;CAWhC"}
1
+ {"version":3,"file":"ConductorAppProxy.d.ts","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,18 @@ export class ConductorAppProxy extends AppProxy {
30
30
  async dumpNetworkMetrics(req, timeout) {
31
31
  return await this._appWs.dumpNetworkMetrics(req, timeout);
32
32
  }
33
+ async agentInfo(req, timeout) {
34
+ return this._appWs.agentInfo(req, timeout);
35
+ }
36
+ async peerMetaInfo(req, timeout) {
37
+ return this._appWs.peerMetaInfo(req, timeout);
38
+ }
39
+ async provideMemproofs(memproofs) {
40
+ return this._appWs.provideMemproofs(memproofs);
41
+ }
42
+ async enableApp() {
43
+ return this._appWs.enableApp();
44
+ }
33
45
  static async new(appId, connOptions, happSha256) {
34
46
  const timeout = connOptions.timeout ? connOptions.timeout : 10 * 1000;
35
47
  if ('socket' in connOptions) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConductorAppProxy.js","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppInfoResponse,\n AppWebsocket,\n CallZomeRequest,\n InstalledAppId,\n CreateCloneCellRequest,\n DisableCloneCellRequest,\n EnableCloneCellRequest,\n ClonedCell,\n AppClient,\n AppEvents,\n SignalCb,\n AdminWebsocket,\n CreateCloneCellResponse,\n EnableCloneCellResponse,\n DumpNetworkMetricsRequest,\n DumpNetworkMetricsResponse,\n} from \"@holochain/client\";\nimport { UnsubscribeFunction } from \"emittery\";\nimport {AppProxy} from \"./AppProxy\";\nimport {AgentId} from \"./hash\";\nimport {AppWebsocketConnectionOptions, AppAuthenticationToken} from \"@holochain/client\";\nimport {AppDumpNetworkStatsResponse} from \"@holochain/client/lib/api/admin\";\n\n\nexport interface CellCloner {\n /*async*/ createCloneCell(req: CreateCloneCellRequest, publicToGroupMembers: boolean): Promise<CreateCloneCellResponse>,\n /*async*/ enableCloneCell(req: EnableCloneCellRequest): Promise<EnableCloneCellResponse>,\n /*async*/ disableCloneCell(req: DisableCloneCellRequest): Promise<void>,\n}\n\n\ntype HcPortOptions = {\n port: number;\n timeout?: number,\n token?: number[],\n adminUrl?: URL | undefined;\n}\n\ntype HcSocketOptions = {\n socket: AppWebsocket;\n timeout?: number,\n}\n\nexport type HcConnectionOptions = HcPortOptions | HcSocketOptions;\n\n\n/**\n * Creates, connects and holds an appWebsocket.\n * Creates and holds Cell proxies for this appWebsocket.\n * Maintains a mapping between CellIds and HCLs\n * Handles SignalHandlers per HCL\n * Stores appSignal logs\n * TODO Implement Singleton per App port?\n */\nexport class ConductorAppProxy extends AppProxy implements AppClient {\n\n /** Ctor */\n /*protected*/ constructor(\n happSha256: string | null,\n defaultTimeout: number,\n appId: InstalledAppId,\n agentId: AgentId,\n adminWs?: AdminWebsocket,\n ) {\n super(happSha256, defaultTimeout, appId, agentId, adminWs);\n }\n\n\n /** -- Fields -- */\n\n private _appWs!: AppWebsocket;\n\n\n /** -- Getters -- */\n\n ///** Check this after connecting since AppWebsocket can shamelessly override the provided args. */\n //get appIdOfShame(): InstalledAppId | undefined { return this._appWs.overrideInstalledAppId;}\n\n\n /** -- AppClient (Passthrough to appWebsocket) -- */\n\n override async callZome(req: CallZomeRequest, timeout?: number): Promise<unknown> {\n timeout = timeout ? timeout : this.defaultTimeout\n return this._appWs.callZome(req, timeout)\n }\n\n override async appInfo(): Promise<AppInfoResponse> {\n return this._appWs!.appInfo();\n }\n\n override on<Name extends keyof AppEvents>(\n eventName: Name | readonly Name[],\n listener: SignalCb\n ): UnsubscribeFunction {\n return this._appWs!.on(eventName, listener);\n }\n\n override async createCloneCell(request: CreateCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"createCloneCell() called:\", request)\n return this._appWs!.createCloneCell(request);\n }\n\n override async enableCloneCell(request: EnableCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"enableCloneCell() called:\", request)\n return this._appWs!.enableCloneCell(request);\n }\n\n override async disableCloneCell(request: DisableCloneCellRequest): Promise<void> {\n //console.log(\"disableCloneCell() called:\", request)\n return this._appWs!.disableCloneCell(request);\n }\n\n\n override async dumpNetworkStats(): Promise<AppDumpNetworkStatsResponse> {\n return await this._appWs!.dumpNetworkStats();\n }\n\n override async dumpNetworkMetrics(\n req: DumpNetworkMetricsRequest,\n timeout?: number\n ): Promise<DumpNetworkMetricsResponse> {\n return await this._appWs!.dumpNetworkMetrics(req, timeout);\n }\n\n\n\n /** -- Creation -- */\n\n /** async Factory */\n static async new(appId: InstalledAppId, connOptions: HcConnectionOptions, happSha256?: string): Promise<ConductorAppProxy> {\n const timeout = connOptions.timeout ? connOptions.timeout : 10 * 1000;\n if ('socket' in connOptions) {\n return ConductorAppProxy.fromSocket(connOptions.socket, timeout, happSha256);\n } else {\n let wsUrl = new URL(`ws://localhost:${connOptions.port}`);\n try {\n let token: AppAuthenticationToken | undefined = connOptions.token;\n let adminWs: AdminWebsocket | undefined = undefined;\n if (connOptions.adminUrl) {\n adminWs = await AdminWebsocket.connect({url: connOptions.adminUrl});\n console.log({adminWs});\n if (!token) {\n const issued = await adminWs.issueAppAuthenticationToken({installed_app_id: appId});\n token = issued.token;\n }\n }\n const options: AppWebsocketConnectionOptions = {\n url: wsUrl,\n defaultTimeout: timeout,\n };\n if (token) {\n options.token = token;\n }\n const appWs = await AppWebsocket.connect(options);\n const agentId = new AgentId(appWs.myPubKey);\n //console.log(\"appWs.myPubKey\", appWs.myPubKey, agentId);\n let conductor = new ConductorAppProxy(happSha256?happSha256 : null, timeout, appId, agentId, adminWs);\n conductor._appWs = appWs;\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)});\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n }\n\n\n /** */\n private static async fromSocket(appWebsocket: AppWebsocket, defaultTimeout: number, happSha256?: string): Promise<ConductorAppProxy> {\n try {\n let conductor = new ConductorAppProxy(happSha256? happSha256 : null, defaultTimeout, appWebsocket.installedAppId, new AgentId(appWebsocket.myPubKey));\n conductor._appWs = appWebsocket;\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)})\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n}\n\n"]}
1
+ {"version":3,"file":"ConductorAppProxy.js","sourceRoot":"","sources":["../src/ConductorAppProxy.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppInfoResponse,\n AppWebsocket,\n CallZomeRequest,\n InstalledAppId,\n CreateCloneCellRequest,\n DisableCloneCellRequest,\n EnableCloneCellRequest,\n ClonedCell,\n AppClient,\n AppEvents,\n SignalCb,\n AdminWebsocket,\n CreateCloneCellResponse,\n EnableCloneCellResponse,\n DumpNetworkMetricsRequest,\n DumpNetworkMetricsResponse, AgentInfoResponse, PeerMetaInfoResponse, PeerMetaInfoRequest, AgentInfoRequest,\n MemproofMap,\n} from \"@holochain/client\";\nimport { UnsubscribeFunction } from \"emittery\";\nimport {AppProxy} from \"./AppProxy\";\nimport {AgentId} from \"./hash\";\nimport {AppWebsocketConnectionOptions, AppAuthenticationToken} from \"@holochain/client\";\nimport {AppDumpNetworkStatsResponse} from \"@holochain/client/lib/api/admin\";\n\n\nexport interface CellCloner {\n /*async*/ createCloneCell(req: CreateCloneCellRequest, publicToGroupMembers: boolean): Promise<CreateCloneCellResponse>,\n /*async*/ enableCloneCell(req: EnableCloneCellRequest): Promise<EnableCloneCellResponse>,\n /*async*/ disableCloneCell(req: DisableCloneCellRequest): Promise<void>,\n}\n\n\ntype HcPortOptions = {\n port: number;\n timeout?: number,\n token?: number[],\n adminUrl?: URL | undefined;\n}\n\ntype HcSocketOptions = {\n socket: AppWebsocket;\n timeout?: number,\n}\n\nexport type HcConnectionOptions = HcPortOptions | HcSocketOptions;\n\n\n/**\n * Creates, connects and holds an appWebsocket.\n * Creates and holds Cell proxies for this appWebsocket.\n * Maintains a mapping between CellIds and HCLs\n * Handles SignalHandlers per HCL\n * Stores appSignal logs\n * TODO Implement Singleton per App port?\n */\nexport class ConductorAppProxy extends AppProxy implements AppClient {\n\n /** Ctor */\n /*protected*/ constructor(\n happSha256: string | null,\n defaultTimeout: number,\n appId: InstalledAppId,\n agentId: AgentId,\n adminWs?: AdminWebsocket,\n ) {\n super(happSha256, defaultTimeout, appId, agentId, adminWs);\n }\n\n\n /** -- Fields -- */\n\n private _appWs!: AppWebsocket;\n\n\n /** -- Getters -- */\n\n ///** Check this after connecting since AppWebsocket can shamelessly override the provided args. */\n //get appIdOfShame(): InstalledAppId | undefined { return this._appWs.overrideInstalledAppId;}\n\n\n /** -- AppClient (Passthrough to appWebsocket) -- */\n\n override async callZome(req: CallZomeRequest, timeout?: number): Promise<unknown> {\n timeout = timeout ? timeout : this.defaultTimeout\n return this._appWs.callZome(req, timeout)\n }\n\n override async appInfo(): Promise<AppInfoResponse> {\n return this._appWs!.appInfo();\n }\n\n override on<Name extends keyof AppEvents>(\n eventName: Name | readonly Name[],\n listener: SignalCb\n ): UnsubscribeFunction {\n return this._appWs!.on(eventName, listener);\n }\n\n override async createCloneCell(request: CreateCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"createCloneCell() called:\", request)\n return this._appWs!.createCloneCell(request);\n }\n\n override async enableCloneCell(request: EnableCloneCellRequest): Promise<ClonedCell> {\n //console.log(\"enableCloneCell() called:\", request)\n return this._appWs!.enableCloneCell(request);\n }\n\n override async disableCloneCell(request: DisableCloneCellRequest): Promise<void> {\n //console.log(\"disableCloneCell() called:\", request)\n return this._appWs!.disableCloneCell(request);\n }\n\n\n override async dumpNetworkStats(): Promise<AppDumpNetworkStatsResponse> {\n return await this._appWs!.dumpNetworkStats();\n }\n\n override async dumpNetworkMetrics(\n req: DumpNetworkMetricsRequest,\n timeout?: number\n ): Promise<DumpNetworkMetricsResponse> {\n return await this._appWs!.dumpNetworkMetrics(req, timeout);\n }\n\n /** -- More AppWebsocket passthrough -- */\n\n override async agentInfo(req: AgentInfoRequest, timeout?: number): Promise<AgentInfoResponse> {\n return this._appWs!.agentInfo(req, timeout);\n }\n\n override async peerMetaInfo(req: PeerMetaInfoRequest, timeout?: number): Promise<PeerMetaInfoResponse> {\n return this._appWs!.peerMetaInfo(req, timeout);\n }\n\n override async provideMemproofs(memproofs: MemproofMap) {\n return this._appWs!.provideMemproofs(memproofs);\n }\n\n override async enableApp() {\n return this._appWs!.enableApp();\n }\n\n\n /** -- Creation -- */\n\n /** async Factory */\n static async new(appId: InstalledAppId, connOptions: HcConnectionOptions, happSha256?: string): Promise<ConductorAppProxy> {\n const timeout = connOptions.timeout ? connOptions.timeout : 10 * 1000;\n if ('socket' in connOptions) {\n return ConductorAppProxy.fromSocket(connOptions.socket, timeout, happSha256);\n } else {\n let wsUrl = new URL(`ws://localhost:${connOptions.port}`);\n try {\n let token: AppAuthenticationToken | undefined = connOptions.token;\n let adminWs: AdminWebsocket | undefined = undefined;\n if (connOptions.adminUrl) {\n adminWs = await AdminWebsocket.connect({url: connOptions.adminUrl});\n console.log({adminWs});\n if (!token) {\n const issued = await adminWs.issueAppAuthenticationToken({installed_app_id: appId});\n token = issued.token;\n }\n }\n const options: AppWebsocketConnectionOptions = {\n url: wsUrl,\n defaultTimeout: timeout,\n };\n if (token) {\n options.token = token;\n }\n const appWs = await AppWebsocket.connect(options);\n const agentId = new AgentId(appWs.myPubKey);\n //console.log(\"appWs.myPubKey\", appWs.myPubKey, agentId);\n let conductor = new ConductorAppProxy(happSha256?happSha256 : null, timeout, appId, agentId, adminWs);\n conductor._appWs = appWs;\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)});\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n }\n\n\n /** */\n private static async fromSocket(appWebsocket: AppWebsocket, defaultTimeout: number, happSha256?: string): Promise<ConductorAppProxy> {\n try {\n let conductor = new ConductorAppProxy(happSha256? happSha256 : null, defaultTimeout, appWebsocket.installedAppId, new AgentId(appWebsocket.myPubKey));\n conductor._appWs = appWebsocket;\n conductor._appWs.on('signal', (sig) => {conductor.onSignal(sig)})\n return conductor;\n } catch (e) {\n console.error(\"ConductorAppProxy initialization failed\", e)\n return Promise.reject(\"ConductorAppProxy initialization failed\");\n }\n }\n}\n\n"]}
@@ -8,13 +8,13 @@ export type ZomeProxyConstructor = {
8
8
  } & typeof ZomeSpecific;
9
9
  declare const ZomeProxy_base: (abstract new (...args: any[]) => {
10
10
  _cell?: import("./cell").Cell;
11
- readonly cell: import("./cell").Cell;
11
+ get cell(): import("./cell").Cell;
12
12
  }) & ((abstract new (...args: any[]) => {
13
13
  zomeName: ZomeName;
14
- readonly defaultZomeName: string;
15
- readonly entryTypes: string[];
16
- readonly linkTypes: string[];
17
- readonly fnNames: [string, string][];
14
+ get defaultZomeName(): ZomeName;
15
+ get entryTypes(): string[];
16
+ get linkTypes(): string[];
17
+ get fnNames(): [ZomeName, FunctionName][];
18
18
  }) & {
19
19
  readonly DEFAULT_ZOME_NAME: ZomeName;
20
20
  readonly ENTRY_TYPES: string[];
@@ -19,7 +19,7 @@ export declare class DatumMap<K extends HoloHashB64, V> {
19
19
  get(key: K): V;
20
20
  set(key: K, value: V, validity: DatumValidity, storage: DatumStorageLocations): void;
21
21
  delete(key: K): boolean;
22
- keys(): IterableIterator<K>;
22
+ keys(): MapIterator<K>;
23
23
  values(): V[];
24
24
  entries(): [K, V][];
25
25
  clear(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"dnaJoiningInfo.d.ts","sourceRoot":"","sources":["../src/dnaJoiningInfo.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,EAAE,UAAU,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI3G;AAID,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAEtE"}
1
+ {"version":3,"file":"dnaJoiningInfo.d.ts","sourceRoot":"","sources":["../src/dnaJoiningInfo.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,EAAE,UAAU,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK3G;AAID,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAEtE"}
@@ -1,7 +1,8 @@
1
1
  import { decode, encode } from "@msgpack/msgpack";
2
2
  export function encodeDnaJoiningInfo(originalDnaHash, name, networkSeed) {
3
3
  const info = { originalDnaHash, name, networkSeed };
4
- const data = Array.from(encode(info));
4
+ const encoded = encode(info);
5
+ const data = Array.from(encoded);
5
6
  return btoa(String.fromCharCode.apply(null, data));
6
7
  }
7
8
  export function decodeDnaJoiningInfo(shareCode) {
@@ -1 +1 @@
1
- {"version":3,"file":"dnaJoiningInfo.js","sourceRoot":"","sources":["../src/dnaJoiningInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AASlD,MAAM,UAAU,oBAAoB,CAAC,eAA2B,EAAE,IAAY,EAAE,WAAmB;IACjG,MAAM,IAAI,GAAmB,EAAC,eAAe,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAID,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAmB,CAAC;AACzG,CAAC","sourcesContent":["import { decode, encode } from \"@msgpack/msgpack\";\n\nexport type DnaJoiningInfo = {\n originalDnaHash: Uint8Array;\n name: string;\n networkSeed: string;\n};\n\n/** Encode a dna clone description as a base64 string for easily sharing */\nexport function encodeDnaJoiningInfo(originalDnaHash: Uint8Array, name: string, networkSeed: string): string {\n const info: DnaJoiningInfo = {originalDnaHash, name, networkSeed};\n const data = Array.from(encode(info));\n return btoa(String.fromCharCode.apply(null, data));\n}\n\n\n/** Decode base64 string back to clone description */\nexport function decodeDnaJoiningInfo(shareCode: string): DnaJoiningInfo {\n return decode(new Uint8Array(atob(shareCode).split(\"\").map((c) => c.charCodeAt(0)))) as DnaJoiningInfo;\n}\n"]}
1
+ {"version":3,"file":"dnaJoiningInfo.js","sourceRoot":"","sources":["../src/dnaJoiningInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AASlD,MAAM,UAAU,oBAAoB,CAAC,eAA2B,EAAE,IAAY,EAAE,WAAmB;IACjG,MAAM,IAAI,GAAmB,EAAC,eAAe,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAgB,CAAC,CAAC,CAAC;AACjE,CAAC;AAID,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,OAAO,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAmB,CAAC;AACzG,CAAC","sourcesContent":["import { decode, encode } from \"@msgpack/msgpack\";\n\nexport type DnaJoiningInfo = {\n originalDnaHash: Uint8Array;\n name: string;\n networkSeed: string;\n};\n\n/** Encode a dna clone description as a base64 string for easily sharing */\nexport function encodeDnaJoiningInfo(originalDnaHash: Uint8Array, name: string, networkSeed: string): string {\n const info: DnaJoiningInfo = {originalDnaHash, name, networkSeed};\n const encoded = encode(info);\n const data = Array.from(encoded);\n return btoa(String.fromCharCode.apply(null, data as number[]));\n}\n\n\n/** Decode base64 string back to clone description */\nexport function decodeDnaJoiningInfo(shareCode: string): DnaJoiningInfo {\n return decode(new Uint8Array(atob(shareCode).split(\"\").map((c) => c.charCodeAt(0)))) as DnaJoiningInfo;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"happJoinCode.d.ts","sourceRoot":"","sources":["../src/happJoinCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI1G;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAElE"}
1
+ {"version":3,"file":"happJoinCode.d.ts","sourceRoot":"","sources":["../src/happJoinCode.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK1G;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAElE"}
@@ -1,7 +1,8 @@
1
1
  import { decode, encode } from "@msgpack/msgpack";
2
2
  export function encodeHappJoinCode(happSha256, happId, networkSeed) {
3
3
  const code = { happSha256, happId, networkSeed };
4
- const data = Array.from(encode(code));
4
+ const encoded = encode(code);
5
+ const data = Array.from(encoded);
5
6
  return btoa(String.fromCharCode.apply(null, data));
6
7
  }
7
8
  export function decodeHappJoinCode(shareCode) {
@@ -1 +1 @@
1
- {"version":3,"file":"happJoinCode.js","sourceRoot":"","sources":["../src/happJoinCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAUlD,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,MAAsB,EAAE,WAAmB;IAChG,MAAM,IAAI,GAAiB,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAID,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;AACvG,CAAC","sourcesContent":["import { decode, encode } from \"@msgpack/msgpack\";\nimport {InstalledAppId} from \"@holochain/client\";\n\nexport type HappJoinCode = {\n happSha256: string;\n happId: InstalledAppId;\n networkSeed: string;\n};\n\n/** */\nexport function encodeHappJoinCode(happSha256: string, happId: InstalledAppId, networkSeed: string): string {\n const code: HappJoinCode = {happSha256, happId, networkSeed};\n const data = Array.from(encode(code));\n return btoa(String.fromCharCode.apply(null, data));\n}\n\n\n/** */\nexport function decodeHappJoinCode(shareCode: string): HappJoinCode {\n return decode(new Uint8Array(atob(shareCode).split(\"\").map((c) => c.charCodeAt(0)))) as HappJoinCode;\n}\n"]}
1
+ {"version":3,"file":"happJoinCode.js","sourceRoot":"","sources":["../src/happJoinCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAUlD,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,MAAsB,EAAE,WAAmB;IAChG,MAAM,IAAI,GAAiB,EAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAa,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAID,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;AACvG,CAAC","sourcesContent":["import { decode, encode } from \"@msgpack/msgpack\";\nimport {InstalledAppId} from \"@holochain/client\";\n\nexport type HappJoinCode = {\n happSha256: string;\n happId: InstalledAppId;\n networkSeed: string;\n};\n\n/** */\nexport function encodeHappJoinCode(happSha256: string, happId: InstalledAppId, networkSeed: string): string {\n const code: HappJoinCode = {happSha256, happId, networkSeed};\n const encoded = encode(code);\n const data = Array.from(encoded) as number[];\n return btoa(String.fromCharCode.apply(null, data));\n}\n\n\n/** */\nexport function decodeHappJoinCode(shareCode: string): HappJoinCode {\n return decode(new Uint8Array(atob(shareCode).split(\"\").map((c) => c.charCodeAt(0)))) as HappJoinCode;\n}\n"]}
package/dist/hash.d.ts CHANGED
@@ -1,24 +1,16 @@
1
1
  import { ExtensionCodec } from "@msgpack/msgpack";
2
- import { HoloHashB64 } from "@holochain/client";
2
+ import { HoloHashB64, HoloHashType } from "@holochain/client";
3
3
  export declare function anyToB64(obj: unknown): unknown;
4
4
  export declare function dhtLocationFrom32(hashCore: Uint8Array): Uint8Array;
5
- export declare enum HoloHashType {
6
- Action = "Action",
7
- Agent = "Agent",
8
- Dna = "Dna",
9
- Entry = "Entry",
10
- External = "External",
11
- Network = "Network",
12
- Wasm = "Wasm"
13
- }
14
5
  export declare const HASH_TYPE_PREFIX_B64: {
15
- Action: string;
16
- Agent: string;
17
- Dna: string;
18
- Entry: string;
19
- External: string;
20
- Network: string;
21
- Wasm: string;
6
+ action: string;
7
+ agent: string;
8
+ dna: string;
9
+ dhtop: string;
10
+ entry: string;
11
+ external: string;
12
+ warrant: string;
13
+ wasm: string;
22
14
  };
23
15
  export declare function getHashType(hash: HoloHashB64): HoloHashType;
24
16
  export declare function isHashTypeB64(hash: HoloHashB64, hashType: HoloHashType): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
package/dist/hash.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { decode, encode, ExtensionCodec } from "@msgpack/msgpack";
2
2
  import blake2b from "@bitgo/blake2b";
3
3
  import { Base64 } from "js-base64";
4
- import { HASH_TYPE_PREFIX, randomByteArray, } from "@holochain/client";
5
- import { getIndexByVariant } from "./utils";
4
+ import { HASH_TYPE_PREFIX, HoloHashType, randomByteArray, } from "@holochain/client";
5
+ import { getIndexByVariant, pascal } from "./utils";
6
6
  export function anyToB64(obj) {
7
7
  if (obj instanceof Uint8Array) {
8
8
  return enc64(obj);
@@ -45,24 +45,15 @@ export function dhtLocationFrom32(hashCore) {
45
45
  });
46
46
  return out;
47
47
  }
48
- export var HoloHashType;
49
- (function (HoloHashType) {
50
- HoloHashType["Action"] = "Action";
51
- HoloHashType["Agent"] = "Agent";
52
- HoloHashType["Dna"] = "Dna";
53
- HoloHashType["Entry"] = "Entry";
54
- HoloHashType["External"] = "External";
55
- HoloHashType["Network"] = "Network";
56
- HoloHashType["Wasm"] = "Wasm";
57
- })(HoloHashType || (HoloHashType = {}));
58
48
  export const HASH_TYPE_PREFIX_B64 = {
59
- Action: "uhCkk",
60
- Agent: "uhCAk",
61
- Dna: "uhC0k",
62
- Entry: "uhCEk",
63
- External: "uhC8k",
64
- Network: "uhCIk",
65
- Wasm: "uhCok",
49
+ action: "uhCkk",
50
+ agent: "uhCAk",
51
+ dna: "uhC0k",
52
+ dhtop: "hCQk",
53
+ entry: "uhCEk",
54
+ external: "uhC8k",
55
+ warrant: "uhCwk",
56
+ wasm: "uhCok",
66
57
  };
67
58
  export function getHashType(hash) {
68
59
  const hashExt = hash.slice(0, 5);
@@ -172,9 +163,6 @@ export class HolochainId {
172
163
  print() { return `${this.short} (${this.hashType})`; }
173
164
  }
174
165
  function retypeHoloHashArray(core, hashType) {
175
- if (hashType == HoloHashType.Network || hashType == HoloHashType.Wasm) {
176
- throw Error("HoloHashType not handled");
177
- }
178
166
  return Uint8Array.from([
179
167
  ...HASH_TYPE_PREFIX[hashType],
180
168
  ...core,
@@ -248,7 +236,7 @@ export function holoIdReviver(_key, value) {
248
236
  }
249
237
  export const HOLOCHAIN_ID_EXT_CODEC = new ExtensionCodec();
250
238
  HOLOCHAIN_ID_EXT_CODEC.register({
251
- type: getIndexByVariant(HoloHashType, HoloHashType.Agent),
239
+ type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Agent)),
252
240
  encode: (object) => {
253
241
  if (object instanceof AgentId) {
254
242
  return encode(object.b64);
@@ -263,7 +251,7 @@ HOLOCHAIN_ID_EXT_CODEC.register({
263
251
  },
264
252
  });
265
253
  HOLOCHAIN_ID_EXT_CODEC.register({
266
- type: getIndexByVariant(HoloHashType, HoloHashType.Entry),
254
+ type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Entry)),
267
255
  encode: (object) => {
268
256
  if (object instanceof EntryId) {
269
257
  return encode(object.b64);
@@ -278,7 +266,7 @@ HOLOCHAIN_ID_EXT_CODEC.register({
278
266
  },
279
267
  });
280
268
  HOLOCHAIN_ID_EXT_CODEC.register({
281
- type: getIndexByVariant(HoloHashType, HoloHashType.Action),
269
+ type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Action)),
282
270
  encode: (object) => {
283
271
  if (object instanceof ActionId) {
284
272
  return encode(object.b64);
@@ -293,7 +281,7 @@ HOLOCHAIN_ID_EXT_CODEC.register({
293
281
  },
294
282
  });
295
283
  HOLOCHAIN_ID_EXT_CODEC.register({
296
- type: getIndexByVariant(HoloHashType, HoloHashType.Dna),
284
+ type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Dna)),
297
285
  encode: (object) => {
298
286
  if (object instanceof DnaId) {
299
287
  return encode(object.b64);
package/dist/hash.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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","sourcesContent":["import {decode, encode, ExtensionCodec} from \"@msgpack/msgpack\";\n// @ts-ignore\nimport blake2b from \"@bitgo/blake2b\";\nimport { Base64 } from \"js-base64\";\nimport {\n ActionHashB64,\n AgentPubKeyB64,\n EntryHashB64, HASH_TYPE_PREFIX,\n HoloHashB64, randomByteArray,\n} from \"@holochain/client\";\nimport {getIndexByVariant} from \"./utils\";\n\n\n/**\n * Checks if obj is a Hash or list of hashes and tries to convert it a B64 or list of B64\n */\nexport function anyToB64(obj: unknown): unknown {\n /** Check if it's a hash */\n if (obj instanceof Uint8Array) {\n return enc64(obj);\n } else {\n /** Check if it's an array of hashes */\n if (Array.isArray(obj)) {\n const isUint8Array =\n obj.length > 0 &&\n obj.every((value) => {\n return value instanceof Uint8Array;\n });\n if (isUint8Array) {\n let result: any[] = [];\n for (const cur of obj) {\n result.push(enc64(cur));\n }\n return result;\n }\n }\n }\n return obj;\n}\n\n\n/** ------------------------------------------------------------------------------------------------------------------*/\n\nfunction decodeHashFromBase64(hash: HoloHashB64): Uint8Array {\n return Base64.toUint8Array(hash.slice(1));\n}\n\n\nfunction encodeHashToBase64(hash: Uint8Array): HoloHashB64 {\n return `u${Base64.fromUint8Array(hash, true)}`;\n}\n\n\nexport function dhtLocationFrom32(hashCore: Uint8Array): Uint8Array {\n if (hashCore.length != 32) {\n throw Error(\"Uint8Array length must be exactly 32\");\n }\n const hash = new Uint8Array(16);\n blake2b(hash.length).update(hashCore).digest(hash);\n\n const out = hash.slice(0, 4)!;\n [4, 8, 12].forEach((i) => {\n out[0]! ^= hash[i]!;\n out[1]! ^= hash[i + 1]!;\n out[2]! ^= hash[i + 2]!;\n out[3]! ^= hash[i + 3]!;\n });\n\n return out;\n}\n\n/** ------------------------------------------------------------------------------------------------------------------*/\n\nexport enum HoloHashType {\n Action = \"Action\",\n Agent = \"Agent\",\n //DhtOp = \"DhtOp\",\n Dna = \"Dna\",\n Entry = \"Entry\",\n External = \"External\",\n Network = \"Network\",\n //Warrent = \"Warrent\",\n Wasm = \"Wasm\",\n}\n\nexport const HASH_TYPE_PREFIX_B64 = {\n Action: \"uhCkk\",\n Agent: \"uhCAk\",\n Dna: \"uhC0k\",\n //DhtOp: \"hCQk\",\n Entry: \"uhCEk\",\n External: \"uhC8k\",\n Network: \"uhCIk\",\n //Warrent: \"Warrent\",\n Wasm: \"uhCok\",\n};\n\nexport function getHashType(hash: HoloHashB64): HoloHashType {\n const hashExt = hash.slice(0, 5);\n const hashPrefixes = Object.values(HASH_TYPE_PREFIX_B64)\n for (let i = 0; i < hashPrefixes.length; i+= 1) {\n if (hashPrefixes[i] == hashExt) {\n return Object.keys(HASH_TYPE_PREFIX_B64)[i] as HoloHashType;\n }\n }\n throw Error(\"Unknown hash type\");\n}\n\n\n/** */\nexport function isHashTypeB64(hash: HoloHashB64, hashType: HoloHashType) {\n const slice = hash.slice(0, 5);\n const prefix = HASH_TYPE_PREFIX_B64[hashType];\n for (let i = 0; i < prefix.length; i++) {\n if (slice[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n}\n\n\nexport function hasHoloHashType(hash: HoloHashB64): boolean {\n return !!Object.values(HASH_TYPE_PREFIX_B64).find((prefix) => hash.startsWith(`${prefix}`));\n}\n\n\n/** */\nexport function validateHashB64(hash: HoloHashB64, hashType?: HoloHashType) {\n if (!hash || typeof(hash) != 'string') {\n throw new Error(\"The hash must be a valid string\");\n }\n if (hash.length !== 53) {\n throw new Error(\"The hash must be exactly 53 characters long. Got: \" + hash.length);\n }\n if((hashType && !isHashTypeB64(hash, hashType)) || !hasHoloHashType(hash)) {\n throw new Error(\"The hash must have a valid HoloHashB64 type.\");\n }\n}\n\n\nexport function dec64(hash: HoloHashB64): Uint8Array {\n validateHashB64(hash);\n return decodeHashFromBase64(hash);\n}\n\nexport function enc64(hash: Uint8Array): HoloHashB64 {\n let b64 = encodeHashToBase64(hash);\n validateHashB64(b64);\n return b64;\n}\n\nfunction isUint8Array(value: any): boolean {\n return value instanceof Uint8Array;\n}\n\n/** A HoloHash starts with 'u' has a type and is 53 chars long */\nexport abstract class HolochainId {\n public readonly b64: HoloHashB64;\n\n static readonly HASH_TYPE: HoloHashType;\n\n get hashType(): HoloHashType {\n return (this.constructor as typeof HolochainId).HASH_TYPE;\n }\n\n /** ctor: validate */\n constructor(input: HoloHashB64 | Uint8Array) {\n if (typeof(input) != 'string') {\n input = encodeHashToBase64(input);\n }\n validateHashB64(input, this.hashType);\n this.b64 = input;\n }\n\n /** */\n equals<T extends HolochainId>(other: T | Uint8Array | string): boolean {\n //console.log(\"equals\", other, isUint8Array(other));\n if (!other) {\n return false;\n }\n let b64;\n if (typeof(other) == 'string') {\n b64 = other;\n } else {\n if (isUint8Array(other)) {\n b64 = enc64(other as Uint8Array);\n } else {\n b64 = (other as T).b64;\n }\n }\n return b64 == this.b64;\n }\n\n\n /** */\n static empty<T extends HolochainId>(this: new (input: HoloHashB64 | Uint8Array) => T, byte?: number): T {\n const empty = new Uint8Array(32);\n byte = byte? byte : 0;\n empty.fill(byte);\n const hashType = (this as unknown as typeof HolochainId).HASH_TYPE;\n const newHash = retypeHoloHashArray(empty, hashType);\n return new this(newHash);\n }\n\n\n /** */\n static from<T extends HolochainId, Z extends HolochainId>(this: new (input: HoloHashB64 | Uint8Array) => Z, start: T | string): Z {\n let hash;\n if (typeof start == 'string') {\n hash = dec64(start);\n } else {\n hash = start.hash;\n }\n const core = Uint8Array.from(hash.slice(3, 35));\n const hashType = (this as unknown as typeof HolochainId).HASH_TYPE;\n const newHash = retypeHoloHashArray(core, hashType);\n return new this(newHash);\n }\n\n\n /** */\n static async random<T extends HolochainId>(this: new (input: HoloHashB64 | Uint8Array) => T): Promise<T> {\n const core = await randomByteArray(32);\n const hashType = (this as unknown as typeof HolochainId).HASH_TYPE;\n const newHash = retypeHoloHashArray(core, hashType);\n return new this(newHash);\n }\n\n\n // Don't autoconvert to string as this can lead to confusions. Have convert to string be explicit\n toString(): string {throw Error(\"Implicit conversion of HolochainId to string\")}\n\n //toString(): string {return this.b64;}\n\n get hash(): Uint8Array { return dec64(this.b64) }\n /** First 8 chars of the Core */\n get short(): string { return this.b64.slice(5, 13); }\n\n print(): string { return `${this.short} (${this.hashType})`}\n}\n\n\n/** */\nfunction retypeHoloHashArray(core: Uint8Array, hashType: HoloHashType): Uint8Array {\n if (hashType == HoloHashType.Network || hashType == HoloHashType.Wasm) {\n throw Error(\"HoloHashType not handled\");\n }\n return Uint8Array.from([\n ...HASH_TYPE_PREFIX[hashType],\n ...core,\n ...dhtLocationFrom32(core),\n ]);\n}\n\n\n\nexport class ActionId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Action; action() {} }\nexport class AgentId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Agent; agent() {} }\nexport class EntryId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Entry; entry() {} }\nexport class DnaId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Dna; dna() {} }\nexport class ExternalId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.External; external() {} }\n\n//export class AnyId extends HolochainId { static readonly HASH_TYPE = HoloHashType.Any; any() {} }\n\nexport type DhtId = ActionId | EntryId;\nexport type LinkableId = DhtId | ExternalId;\nexport type AnyId = LinkableId | AgentId | DnaId;\n\n\n\n\n/** */\nexport function intoDhtId(input: HoloHashB64 | Uint8Array): DhtId {\n try {\n const actionId = new ActionId(input);\n return actionId;\n } catch(e) {\n const entryId = new EntryId(input);\n return entryId;\n }\n}\n\n\n/** */\nexport function intoLinkableId(input: HoloHashB64 | Uint8Array): LinkableId {\n try {\n const dhtId = intoDhtId(input);\n return dhtId;\n } catch(e) {\n const externalId = new ExternalId(input);\n return externalId;\n }\n}\n\n\n/** */\nexport function intoAnyId(input: HoloHashB64 | Uint8Array): AnyId {\n try {\n const dhtId = intoLinkableId(input);\n return dhtId;\n } catch(e) {\n try {\n const dnaId = new AgentId(input);\n return dnaId;\n } catch(e) {\n const id = new DnaId(input);\n return id;\n }\n }\n}\n\n\n/** -- JSON -- */\n\nexport function holoIdReviver(_key: any, value: any) {\n if(typeof value === 'object' && value !== null) {\n // if (value.dataType === 'HolochainId') {\n // return intoAnyId(value.value);\n // }\n const keys = Object.keys(value);\n if (keys.length == 1 && keys[0] == \"b64\") {\n return intoAnyId(value.b64);\n }\n }\n return value;\n}\n\n\n/** -- MsgPack ExtensionCodec for HolochainId -- */\n\nexport const HOLOCHAIN_ID_EXT_CODEC = new ExtensionCodec();\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, HoloHashType.Agent),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof AgentId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as AgentPubKeyB64;\n return new AgentId(b64);\n },\n});\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, HoloHashType.Entry),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof EntryId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as EntryHashB64;\n return new EntryId(b64);\n },\n});\n\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, HoloHashType.Action),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof ActionId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as ActionHashB64;\n return new ActionId(b64);\n },\n});\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, HoloHashType.Dna),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof DnaId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as ActionHashB64;\n return new DnaId(b64);\n },\n});\n\n\n/** -- TESTING -- */\n\n/** */\nexport async function testHoloId() {\n console.log(\"testHoloId()\");\n const emptyAction = ActionId.empty();\n const emptyEntry = EntryId.empty();\n const emptyAgent = AgentId.from(emptyEntry);\n const emptyEntry2 = EntryId.from(emptyAgent);\n const randomEh = await EntryId.random();\n const randomEh2 = EntryId.from(randomEh.b64);\n\n console.log(\"testHoloId()\", emptyAction);\n /** */\n function printEh(eh: EntryId) {\n console.log(\"printEh\", eh);\n }\n\n printEh(emptyEntry);\n printEh(emptyEntry2);\n printEh(randomEh);\n console.log(\"testHoloId.emptyEntry\", emptyEntry.equals(emptyEntry), emptyEntry.equals(emptyEntry.b64), emptyEntry.equals(emptyEntry.hash));\n console.log(\"testHoloId.emptyEntry2\", emptyEntry.equals(emptyEntry2), emptyEntry.equals(emptyEntry2.b64), emptyEntry.equals(emptyEntry2.hash));\n console.log(\"testHoloId.randomEh\", emptyEntry.equals(randomEh), emptyEntry.equals(emptyAgent), emptyEntry.equals(emptyAgent.hash), emptyEntry.equals(emptyAgent.b64));\n console.log(\"testHoloId.randomEh2\", randomEh.equals(randomEh2));\n\n //printEh(emptyAction); // Should error at compile time\n}\n\n"]}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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","sourcesContent":["import {decode, encode, ExtensionCodec} from \"@msgpack/msgpack\";\n// @ts-ignore\nimport blake2b from \"@bitgo/blake2b\";\nimport { Base64 } from \"js-base64\";\nimport {\n ActionHashB64,\n AgentPubKeyB64,\n EntryHashB64, HASH_TYPE_PREFIX,\n HoloHashB64, HoloHashType, randomByteArray,\n} from \"@holochain/client\";\nimport {getIndexByVariant, pascal} from \"./utils\";\n\n\n/**\n * Checks if obj is a Hash or list of hashes and tries to convert it a B64 or list of B64\n */\nexport function anyToB64(obj: unknown): unknown {\n /** Check if it's a hash */\n if (obj instanceof Uint8Array) {\n return enc64(obj);\n } else {\n /** Check if it's an array of hashes */\n if (Array.isArray(obj)) {\n const isUint8Array =\n obj.length > 0 &&\n obj.every((value) => {\n return value instanceof Uint8Array;\n });\n if (isUint8Array) {\n let result: any[] = [];\n for (const cur of obj) {\n result.push(enc64(cur));\n }\n return result;\n }\n }\n }\n return obj;\n}\n\n\n/** ------------------------------------------------------------------------------------------------------------------*/\n\nfunction decodeHashFromBase64(hash: HoloHashB64): Uint8Array {\n return Base64.toUint8Array(hash.slice(1));\n}\n\n\nfunction encodeHashToBase64(hash: Uint8Array): HoloHashB64 {\n return `u${Base64.fromUint8Array(hash, true)}`;\n}\n\n\nexport function dhtLocationFrom32(hashCore: Uint8Array): Uint8Array {\n if (hashCore.length != 32) {\n throw Error(\"Uint8Array length must be exactly 32\");\n }\n const hash = new Uint8Array(16);\n blake2b(hash.length).update(hashCore).digest(hash);\n\n const out = hash.slice(0, 4)!;\n [4, 8, 12].forEach((i) => {\n out[0]! ^= hash[i]!;\n out[1]! ^= hash[i + 1]!;\n out[2]! ^= hash[i + 2]!;\n out[3]! ^= hash[i + 3]!;\n });\n\n return out;\n}\n\n/** ------------------------------------------------------------------------------------------------------------------*/\n\n// export enum HoloHashType {\n// Action = \"Action\",\n// Agent = \"Agent\",\n// //DhtOp = \"DhtOp\",\n// Dna = \"Dna\",\n// Entry = \"Entry\",\n// External = \"External\",\n// Network = \"Network\",\n// //Warrent = \"Warrent\",\n// Wasm = \"Wasm\",\n// }\n\nexport const HASH_TYPE_PREFIX_B64 = {\n action: \"uhCkk\",\n agent: \"uhCAk\",\n dna: \"uhC0k\",\n dhtop: \"hCQk\",\n entry: \"uhCEk\",\n external: \"uhC8k\",\n //Network: \"uhCIk\",\n warrant: \"uhCwk\",\n wasm: \"uhCok\",\n};\n\nexport function getHashType(hash: HoloHashB64): HoloHashType {\n const hashExt = hash.slice(0, 5);\n const hashPrefixes = Object.values(HASH_TYPE_PREFIX_B64)\n for (let i = 0; i < hashPrefixes.length; i+= 1) {\n if (hashPrefixes[i] == hashExt) {\n return Object.keys(HASH_TYPE_PREFIX_B64)[i] as HoloHashType;\n }\n }\n throw Error(\"Unknown hash type\");\n}\n\n\n/** */\nexport function isHashTypeB64(hash: HoloHashB64, hashType: HoloHashType) {\n const slice = hash.slice(0, 5);\n const prefix = HASH_TYPE_PREFIX_B64[hashType];\n for (let i = 0; i < prefix.length; i++) {\n if (slice[i] !== prefix[i]) {\n return false;\n }\n }\n return true;\n}\n\n\nexport function hasHoloHashType(hash: HoloHashB64): boolean {\n return !!Object.values(HASH_TYPE_PREFIX_B64).find((prefix) => hash.startsWith(`${prefix}`));\n}\n\n\n/** */\nexport function validateHashB64(hash: HoloHashB64, hashType?: HoloHashType) {\n if (!hash || typeof(hash) != 'string') {\n throw new Error(\"The hash must be a valid string\");\n }\n if (hash.length !== 53) {\n throw new Error(\"The hash must be exactly 53 characters long. Got: \" + hash.length);\n }\n if((hashType && !isHashTypeB64(hash, hashType)) || !hasHoloHashType(hash)) {\n throw new Error(\"The hash must have a valid HoloHashB64 type.\");\n }\n}\n\n\nexport function dec64(hash: HoloHashB64): Uint8Array {\n validateHashB64(hash);\n return decodeHashFromBase64(hash);\n}\n\nexport function enc64(hash: Uint8Array): HoloHashB64 {\n let b64 = encodeHashToBase64(hash);\n validateHashB64(b64);\n return b64;\n}\n\nfunction isUint8Array(value: any): boolean {\n return value instanceof Uint8Array;\n}\n\n/** A HoloHash starts with 'u' has a type and is 53 chars long */\nexport abstract class HolochainId {\n public readonly b64: HoloHashB64;\n\n static readonly HASH_TYPE: HoloHashType;\n\n get hashType(): HoloHashType {\n return (this.constructor as typeof HolochainId).HASH_TYPE;\n }\n\n /** ctor: validate */\n constructor(input: HoloHashB64 | Uint8Array) {\n if (typeof(input) != 'string') {\n input = encodeHashToBase64(input);\n }\n validateHashB64(input, this.hashType);\n this.b64 = input;\n }\n\n /** */\n equals<T extends HolochainId>(other: T | Uint8Array | string): boolean {\n //console.log(\"equals\", other, isUint8Array(other));\n if (!other) {\n return false;\n }\n let b64;\n if (typeof(other) == 'string') {\n b64 = other;\n } else {\n if (isUint8Array(other)) {\n b64 = enc64(other as Uint8Array);\n } else {\n b64 = (other as T).b64;\n }\n }\n return b64 == this.b64;\n }\n\n\n /** */\n static empty<T extends HolochainId>(this: new (input: HoloHashB64 | Uint8Array) => T, byte?: number): T {\n const empty = new Uint8Array(32);\n byte = byte? byte : 0;\n empty.fill(byte);\n const hashType = (this as unknown as typeof HolochainId).HASH_TYPE;\n const newHash = retypeHoloHashArray(empty, hashType);\n return new this(newHash);\n }\n\n\n /** */\n static from<T extends HolochainId, Z extends HolochainId>(this: new (input: HoloHashB64 | Uint8Array) => Z, start: T | string): Z {\n let hash;\n if (typeof start == 'string') {\n hash = dec64(start);\n } else {\n hash = start.hash;\n }\n const core = Uint8Array.from(hash.slice(3, 35));\n const hashType = (this as unknown as typeof HolochainId).HASH_TYPE;\n const newHash = retypeHoloHashArray(core, hashType);\n return new this(newHash);\n }\n\n\n /** */\n static async random<T extends HolochainId>(this: new (input: HoloHashB64 | Uint8Array) => T): Promise<T> {\n const core = await randomByteArray(32);\n const hashType = (this as unknown as typeof HolochainId).HASH_TYPE;\n const newHash = retypeHoloHashArray(core, hashType);\n return new this(newHash);\n }\n\n\n // Don't autoconvert to string as this can lead to confusions. Convert to string explicitly.\n toString(): string {throw Error(\"Implicit conversion of HolochainId to string\")}\n\n //toString(): string {return this.b64;}\n\n get hash(): Uint8Array { return dec64(this.b64) }\n /** First 8 chars of the Core */\n get short(): string { return this.b64.slice(5, 13); }\n\n print(): string { return `${this.short} (${this.hashType})`}\n}\n\n\n/** */\nfunction retypeHoloHashArray(core: Uint8Array, hashType: HoloHashType): Uint8Array {\n // if (hashType == HoloHashType.Network || hashType == HoloHashType.Wasm) {\n // throw Error(\"HoloHashType not handled\");\n // }\n return Uint8Array.from([\n ...HASH_TYPE_PREFIX[hashType],\n ...core,\n ...dhtLocationFrom32(core),\n ]);\n}\n\n\n\nexport class ActionId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Action; action() {} }\nexport class AgentId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Agent; agent() {} }\nexport class EntryId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Entry; entry() {} }\nexport class DnaId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.Dna; dna() {} }\nexport class ExternalId extends HolochainId { static override readonly HASH_TYPE = HoloHashType.External; external() {} }\n\n//export class AnyId extends HolochainId { static readonly HASH_TYPE = HoloHashType.Any; any() {} }\n\nexport type DhtId = ActionId | EntryId;\nexport type LinkableId = DhtId | ExternalId;\nexport type AnyId = LinkableId | AgentId | DnaId;\n\n\n\n\n/** */\nexport function intoDhtId(input: HoloHashB64 | Uint8Array): DhtId {\n try {\n const actionId = new ActionId(input);\n return actionId;\n } catch(e) {\n const entryId = new EntryId(input);\n return entryId;\n }\n}\n\n\n/** */\nexport function intoLinkableId(input: HoloHashB64 | Uint8Array): LinkableId {\n try {\n const dhtId = intoDhtId(input);\n return dhtId;\n } catch(e) {\n const externalId = new ExternalId(input);\n return externalId;\n }\n}\n\n\n/** */\nexport function intoAnyId(input: HoloHashB64 | Uint8Array): AnyId {\n try {\n const dhtId = intoLinkableId(input);\n return dhtId;\n } catch(e) {\n try {\n const dnaId = new AgentId(input);\n return dnaId;\n } catch(e) {\n const id = new DnaId(input);\n return id;\n }\n }\n}\n\n\n/** -- JSON -- */\n\nexport function holoIdReviver(_key: any, value: any) {\n if(typeof value === 'object' && value !== null) {\n // if (value.dataType === 'HolochainId') {\n // return intoAnyId(value.value);\n // }\n const keys = Object.keys(value);\n if (keys.length == 1 && keys[0] == \"b64\") {\n return intoAnyId(value.b64);\n }\n }\n return value;\n}\n\n\n/** -- MsgPack ExtensionCodec for HolochainId -- */\n\nexport const HOLOCHAIN_ID_EXT_CODEC = new ExtensionCodec();\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Agent)),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof AgentId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as AgentPubKeyB64;\n return new AgentId(b64);\n },\n});\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Entry)),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof EntryId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as EntryHashB64;\n return new EntryId(b64);\n },\n});\n\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Action)),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof ActionId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as ActionHashB64;\n return new ActionId(b64);\n },\n});\n\nHOLOCHAIN_ID_EXT_CODEC.register({\n type: getIndexByVariant(HoloHashType, pascal(HoloHashType.Dna)),\n encode: (object: unknown): Uint8Array | null => {\n if (object instanceof DnaId) {\n return encode(object.b64);\n } else {\n return null;\n }\n },\n decode: (data: Uint8Array) => {\n const b64 = decode(data) as ActionHashB64;\n return new DnaId(b64);\n },\n});\n\n\n/** -- TESTING -- */\n\n/** */\nexport async function testHoloId() {\n console.log(\"testHoloId()\");\n const emptyAction = ActionId.empty();\n const emptyEntry = EntryId.empty();\n const emptyAgent = AgentId.from(emptyEntry);\n const emptyEntry2 = EntryId.from(emptyAgent);\n const randomEh = await EntryId.random();\n const randomEh2 = EntryId.from(randomEh.b64);\n\n console.log(\"testHoloId()\", emptyAction);\n /** */\n function printEh(eh: EntryId) {\n console.log(\"printEh\", eh);\n }\n\n printEh(emptyEntry);\n printEh(emptyEntry2);\n printEh(randomEh);\n console.log(\"testHoloId.emptyEntry\", emptyEntry.equals(emptyEntry), emptyEntry.equals(emptyEntry.b64), emptyEntry.equals(emptyEntry.hash));\n console.log(\"testHoloId.emptyEntry2\", emptyEntry.equals(emptyEntry2), emptyEntry.equals(emptyEntry2.b64), emptyEntry.equals(emptyEntry2.hash));\n console.log(\"testHoloId.randomEh\", emptyEntry.equals(randomEh), emptyEntry.equals(emptyAgent), emptyEntry.equals(emptyAgent.hash), emptyEntry.equals(emptyAgent.b64));\n console.log(\"testHoloId.randomEh2\", randomEh.equals(randomEh2));\n\n //printEh(emptyAction); // Should error at compile time\n}\n\n"]}
@@ -9,9 +9,9 @@ export declare class HolochainIdMap<K extends HolochainId, V> implements Map<K,
9
9
  get(key: K): V | undefined;
10
10
  set(key: K, value: V): this;
11
11
  delete(key: K): boolean;
12
- values(): IterableIterator<V>;
13
- keys(): IterableIterator<K>;
14
- entries(): IterableIterator<[K, V]>;
12
+ values(): MapIterator<V>;
13
+ keys(): ArrayIterator<K>;
14
+ entries(): ArrayIterator<[K, V]>;
15
15
  clear(): void;
16
16
  forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
17
17
  get size(): number;
package/dist/mixins.d.ts CHANGED
@@ -10,19 +10,19 @@ export declare class Empty {
10
10
  }
11
11
  export declare function CellMixin<TBase extends AbstractConstructor>(Base: TBase): (abstract new (...args: any[]) => {
12
12
  _cell?: Cell;
13
- readonly cell: Cell;
13
+ get cell(): Cell;
14
14
  }) & TBase;
15
15
  export declare function CellsMixin<TBase extends AbstractConstructor>(Base: TBase): (abstract new (...args: any[]) => {
16
16
  _cells?: Cell[];
17
- readonly cells: Cell[];
18
- readonly cell: Cell;
17
+ get cells(): Cell[];
18
+ get cell(): Cell;
19
19
  }) & TBase;
20
20
  export declare function ZomeMixin<TBase extends AbstractConstructor>(Base: TBase): ((abstract new (...args: any[]) => {
21
21
  zomeName: ZomeName;
22
- readonly defaultZomeName: string;
23
- readonly entryTypes: string[];
24
- readonly linkTypes: string[];
25
- readonly fnNames: [string, string][];
22
+ get defaultZomeName(): ZomeName;
23
+ get entryTypes(): string[];
24
+ get linkTypes(): string[];
25
+ get fnNames(): [ZomeName, FunctionName][];
26
26
  }) & {
27
27
  readonly DEFAULT_ZOME_NAME: ZomeName;
28
28
  readonly ENTRY_TYPES: string[];
@@ -31,10 +31,10 @@ export declare function ZomeMixin<TBase extends AbstractConstructor>(Base: TBase
31
31
  }) & TBase;
32
32
  export declare const ZomeSpecific: ((abstract new (...args: any[]) => {
33
33
  zomeName: ZomeName;
34
- readonly defaultZomeName: string;
35
- readonly entryTypes: string[];
36
- readonly linkTypes: string[];
37
- readonly fnNames: [string, string][];
34
+ get defaultZomeName(): ZomeName;
35
+ get entryTypes(): string[];
36
+ get linkTypes(): string[];
37
+ get fnNames(): [ZomeName, FunctionName][];
38
38
  }) & {
39
39
  readonly DEFAULT_ZOME_NAME: ZomeName;
40
40
  readonly ENTRY_TYPES: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"mixins.d.ts","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAC,QAAQ,CAAC,CAAA;CAAC,CAAC;AACzC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAG5E,qBAAa,KAAK;gBACJ,GAAG,KAAK,EAAE,GAAG,EAAE;CAC5B;AASD,wBAAgB,SAAS,CAAC,KAAK,SAAS,mBAAmB,EAAE,IAAI,EAAE,KAAK,2BAdP,GAAG,EAAE;YAmB1D,IAAI;;WAOf;AASD,wBAAgB,UAAU,CAAC,KAAK,SAAS,mBAAmB,EAAE,IAAI,EAAE,KAAK,2BAnCR,GAAG,EAAE;aAwCzD,IAAI,EAAE;;;WAgBlB;AASD,wBAAgB,SAAS,CAAC,KAAK,SAAS,mBAAmB,EAAE,IAAI,EAAE,KAAK,4BAS/C,GAAG,EAAE;cANhB,QAAQ;;;;;;gCACiB,QAAQ;0BACd,MAAM,EAAE;yBACT,MAAM,EAAE;uBACV,YAAY,EAAE;WAgC3C;AAED,eAAO,MAAM,YAAY,2BAhCA,GAAG,EAAE;cANhB,QAAQ;;;;;;gCACiB,QAAQ;0BACd,MAAM,EAAE;yBACT,MAAM,EAAE;uBACV,YAAY,EAAE;iBAkCA,CAAC"}
1
+ {"version":3,"file":"mixins.d.ts","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAC,QAAQ,CAAC,CAAA;CAAC,CAAC;AACzC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,EAAE,IAAI,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAG5E,qBAAa,KAAK;gBACJ,GAAG,KAAK,EAAE,GAAG,EAAE;CAC5B;AASD,wBAAgB,SAAS,CAAC,KAAK,SAAS,mBAAmB,EAAE,IAAI,EAAE,KAAK,2BAdP,GAAG,EAAE;YAmB1D,IAAI;gBAEA,IAAI;WAKnB;AASD,wBAAgB,UAAU,CAAC,KAAK,SAAS,mBAAmB,EAAE,IAAI,EAAE,KAAK,2BAnCR,GAAG,EAAE;aAwCzD,IAAI,EAAE;iBAEF,IAAI,EAAE;gBAKP,IAAI;WASnB;AASD,wBAAgB,SAAS,CAAC,KAAK,SAAS,mBAAmB,EAAE,IAAI,EAAE,KAAK,4BAS/C,GAAG,EAAE;cANhB,QAAQ;2BAWK,QAAQ;sBAIb,MAAM,EAAE;qBAGT,MAAM,EAAE;mBAMV,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;;gCAvBN,QAAQ;0BACd,MAAM,EAAE;yBACT,MAAM,EAAE;uBACV,YAAY,EAAE;WAgC3C;AAED,eAAO,MAAM,YAAY,2BAhCA,GAAG,EAAE;cANhB,QAAQ;2BAWK,QAAQ;sBAIb,MAAM,EAAE;qBAGT,MAAM,EAAE;mBAMV,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;;gCAvBN,QAAQ;0BACd,MAAM,EAAE;yBACT,MAAM,EAAE;uBACV,YAAY,EAAE;iBAkCA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-map.js","sourceRoot":"","sources":["../src/time-map.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,OAAO;IAKlB,YAAY,WAAmB,EAAmB,QAAW;QAAX,aAAQ,GAAR,QAAQ,CAAG;QAC3D,IAAI,CAAC,IAAI,GAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;IAChC,CAAC;IAGO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAGD,GAAG,CAAC,KAAQ;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,UAAU,IAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CAEF","sourcesContent":["\n/**\n * Insert items in time buckets.\n * On Insert oldest item is deleted if max map size is reached.\n */\nexport class TimeMap<N extends number, V> {\n private _map: Map<number, Set<V>>;\n private readonly _blockSize: number;\n //private readonly _mapSize: number;\n\n constructor(blockSizeMs: number, private readonly _mapSize: N) {\n this._map = new Map();\n this._blockSize = blockSizeMs;\n }\n\n\n private getNowKey(): number {\n const now = Date.now();\n const bucket = Math.floor(now / this._blockSize);\n return bucket;\n }\n\n add(value: V) {\n const bucket = this.getNowKey();\n const maybe = this._map.get(bucket);\n let sett = new Set<V>();\n if (maybe) {\n sett = maybe;\n }\n sett.add(value);\n /* Remove the oldest entry (first inserted entry) */\n if (this._map.size >= this._mapSize) {\n const oldestKey = this._map.keys().next().value;\n this._map.delete(oldestKey);\n }\n /* */\n this._map.set(bucket, sett);\n }\n\n\n has(value: V): boolean {\n const bucket = this.getNowKey();\n const maybe = this._map.get(bucket);\n if (maybe && maybe.has(value)) {\n return true;\n }\n const bucketMinus = bucket - 1;\n const maybeMinus = this._map.get(bucketMinus);\n if (maybeMinus && maybeMinus.has(value)) {\n return true;\n }\n /* */\n return false;\n }\n\n}\n"]}
1
+ {"version":3,"file":"time-map.js","sourceRoot":"","sources":["../src/time-map.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,OAAO;IAKlB,YAAY,WAAmB,EAAmB,QAAW;QAAX,aAAQ,GAAR,QAAQ,CAAG;QAC3D,IAAI,CAAC,IAAI,GAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;IAChC,CAAC;IAGO,SAAS;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;QACxB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,GAAG,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAGD,GAAG,CAAC,KAAQ;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,UAAU,IAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CAEF","sourcesContent":["\n/**\n * Insert items in time buckets.\n * On Insert oldest item is deleted if max map size is reached.\n */\nexport class TimeMap<N extends number, V> {\n private _map: Map<number, Set<V>>;\n private readonly _blockSize: number;\n //private readonly _mapSize: number;\n\n constructor(blockSizeMs: number, private readonly _mapSize: N) {\n this._map = new Map();\n this._blockSize = blockSizeMs;\n }\n\n\n private getNowKey(): number {\n const now = Date.now();\n const bucket = Math.floor(now / this._blockSize);\n return bucket;\n }\n\n add(value: V) {\n const bucket = this.getNowKey();\n const maybe = this._map.get(bucket);\n let sett = new Set<V>();\n if (maybe) {\n sett = maybe;\n }\n sett.add(value);\n /* Remove the oldest entry (first inserted entry) */\n if (this._map.size >= this._mapSize) {\n const oldestKey = this._map.keys().next().value!;\n this._map.delete(oldestKey);\n }\n /* */\n this._map.set(bucket, sett);\n }\n\n\n has(value: V): boolean {\n const bucket = this.getNowKey();\n const maybe = this._map.get(bucket);\n if (maybe && maybe.has(value)) {\n return true;\n }\n const bucketMinus = bucket - 1;\n const maybeMinus = this._map.get(bucketMinus);\n if (maybeMinus && maybeMinus.has(value)) {\n return true;\n }\n /* */\n return false;\n }\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,MAAM,YAAY,CAAC,CAAC,IAAI;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;CAClB,CAAC;AAIF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAI3E;AAID,wBAAgB,gBAAgB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAMrD;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,WAEnE;AAID,eAAO,MAAM,KAAK,OAAQ,MAAM,qBAAwC,CAAA;AAGxE,eAAO,MAAM,KAAK,QAAS,MAAM,WAGhC,CAAA;AAID,eAAO,MAAM,MAAM,QAAS,MAAM,WAGjC,CAAA;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpF;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpF;AAID,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAI7B,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM3D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,MAAM,YAAY,CAAC,CAAC,IAAI;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;CAClB,CAAC;AAIF,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAI3E;AAID,wBAAgB,gBAAgB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAMrD;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,WAEnE;AAID,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBAAwC,CAAA;AAGxE,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,WAGhC,CAAA;AAID,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,WAGjC,CAAA;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpF;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpF;AAID,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAI7B,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/cell-proxy",
3
- "version": "0.33.8",
3
+ "version": "0.34.1",
4
4
  "description": "Proxy classes and helpers for managing a Holochain AppWebsocket",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -24,13 +24,13 @@
24
24
  },
25
25
  "homepage": "https://github.com/ddd-mtl/lit-happ#readme",
26
26
  "devDependencies": {
27
- "tslib": "^2.6.3",
28
- "typescript": "~5.5.4"
27
+ "tslib": "^2.8",
28
+ "typescript": "~5.9"
29
29
  },
30
30
  "dependencies": {
31
- "@holochain/client": "^0.20.0",
31
+ "@holochain/client": "=0.20.2",
32
32
  "@bitgo/blake2b": "^3.2.4",
33
- "libsodium-wrappers-sumo": "^0.7.15",
33
+ "libsodium-wrappers-sumo": "^0.8",
34
34
  "js-base64": "^3.7.5",
35
35
  "@msgpack/msgpack": "^3.1.1",
36
36
  "async-mutex": "0.5.0"