@ddd-qc/lit-happ 0.26.6 → 0.26.8
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,5 +1,5 @@
|
|
|
1
1
|
import { AppSignalCb, EntryVisibility, Timestamp } from "@holochain/client";
|
|
2
|
-
import { ActionId, AgentId,
|
|
2
|
+
import { ActionId, AgentId, LinkableId, EntryId, EntryPulse, LinkPulse, SignalLog, TipProtocol, ZomeSignalProtocol } from "@ddd-qc/cell-proxy";
|
|
3
3
|
import { ZomeViewModel } from "./ZomeViewModel";
|
|
4
4
|
import { ZomeIndex } from "@holochain/client/lib/hdk/link";
|
|
5
5
|
/** */
|
|
@@ -36,7 +36,7 @@ export declare abstract class ZomeViewModelWithSignals extends ZomeViewModel {
|
|
|
36
36
|
export interface EntryPulseMat {
|
|
37
37
|
ah: ActionId;
|
|
38
38
|
state: string;
|
|
39
|
-
isNew:
|
|
39
|
+
isNew: boolean;
|
|
40
40
|
ts: Timestamp;
|
|
41
41
|
author: AgentId;
|
|
42
42
|
eh: EntryId;
|
|
@@ -51,8 +51,8 @@ export declare function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes
|
|
|
51
51
|
/** */
|
|
52
52
|
export interface LinkPulseMat {
|
|
53
53
|
author: AgentId;
|
|
54
|
-
base:
|
|
55
|
-
target:
|
|
54
|
+
base: LinkableId;
|
|
55
|
+
target: LinkableId;
|
|
56
56
|
timestamp: Timestamp;
|
|
57
57
|
zome_index: ZomeIndex;
|
|
58
58
|
link_type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, EntryVisibility, Timestamp} from \"@holochain/client\";\r\nimport {\r\n ActionId,\r\n AgentId, AnyLinkableId, anyToB64, enc64, EntryId,\r\n EntryPulse, getIndexByVariant, intoLinkableId, LinkPulse, prettyDate, prettyState, SignalLog, SignalType, StateChange,\r\n TipProtocol, TipProtocolVariantApp, TipProtocolVariantEntry, TipProtocolVariantLink,\r\n ZomeSignal, ZomeSignalProtocol,\r\n ZomeSignalProtocolType, ZomeSignalProtocolVariantEntry, ZomeSignalProtocolVariantLink\r\n} from \"@ddd-qc/cell-proxy\";\r\nimport {AppSignal} from \"@holochain/client/lib/api/app/types\";\r\nimport {ZomeViewModel} from \"./ZomeViewModel\";\r\nimport {ZomeIndex} from \"@holochain/client/lib/hdk/link\";\r\nimport {ProfilesAltLinkType, ProfilesAltUnitEnum} from \"@ddd-qc/profiles-dvm/dist/bindings/profilesAlt.integrity\";\r\nimport {decode} from \"@msgpack/msgpack\";\r\n\r\n\r\n/** */\r\nexport interface CastLog {\r\n ts: Timestamp,\r\n tip: TipProtocol,\r\n peers: AgentId[],\r\n}\r\n\r\n\r\n/**\r\n * ZVM with support for ZomeSignals\r\n */\r\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\r\n\r\n private _castLogs: CastLog[] = [];\r\n\r\n /** Methods to override */\r\n protected handleAppTip(_appTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\r\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\r\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\r\n\r\n\r\n /** */\r\n signalHandler?: AppSignalCb = this.mySignalHandler;\r\n\r\n\r\n /** */\r\n private mySignalHandler(appSignal: AppSignal): void {\r\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME;\r\n console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\r\n if (appSignal.zome_name !== defaultZomeName) {\r\n return;\r\n }\r\n const zomeSignal = appSignal.payload as ZomeSignal;\r\n if (!(\"pulses\" in zomeSignal)) {\r\n return;\r\n }\r\n /*await*/ this.handleSignal(zomeSignal);\r\n }\r\n\r\n\r\n /** */\r\n private async handleSignal(signal: ZomeSignal): Promise<void> {\r\n const from = new AgentId(signal.from);\r\n let all = [];\r\n for (let pulse of signal.pulses) {\r\n /** -- Handle Signal according to type -- */\r\n /** Change tip to Entry or Link signal */\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\r\n if (!pulse) {\r\n continue;\r\n }\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\r\n all.push(this.handleEntryPulse(entryPulseMat, from));\r\n /** If new entry from this agent, broadcast to peers as tip */\r\n if (entryPulseMat.isNew && from.b64 == this.cell.agentId.b64 && entryPulseMat.visibility == \"Public\") {\r\n all.push(this.broadcastTip({Entry: pulse.Entry as EntryPulse}));\r\n }\r\n continue;\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\r\n all.push(this.handleLinkPulse(linkPulseMat, from));\r\n /** If new Link from this agent, broadcast to peers as tip */\r\n if (linkPulseMat.isNew && from.b64 == this.cell.agentId.b64) {\r\n all.push(this.broadcastTip({Link: pulse.Link as LinkPulse}));\r\n }\r\n continue;\r\n }\r\n }\r\n await Promise.all(all);\r\n this.notifySubscribers();\r\n }\r\n\r\n\r\n /** */\r\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\r\n const type = Object.keys(tip)[0];\r\n console.log(\"handleTip()\", type, from, tip);\r\n /* Handle tip according to its type */\r\n switch (type) {\r\n case \"Ping\":\r\n case \"Pong\":\r\n break;\r\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\r\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\r\n case \"App\":\r\n return this.handleAppTip((tip as TipProtocolVariantApp).App, from);\r\n break;\r\n }\r\n }\r\n\r\n\r\n /** */\r\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\r\n agents = agents? agents : this._dvmParent.livePeers;\r\n /** Skip if no recipients or sending to self only */\r\n const filtered = agents.filter((key) => key.b64 != this.cell.agentId.b64);\r\n const tipType = Object.keys(tip)[0];\r\n console.log(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.agentId.short);\r\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\r\n if (!filtered || filtered.length == 0) {\r\n console.log(\"broadcastTip() aborted: No recipients\")\r\n return;\r\n }\r\n /** Broadcast */\r\n const peers = agents.map((key) => key.hash);\r\n await this.zomeProxy.call('cast_tip', {tip, peers});\r\n /** Log */\r\n this._castLogs.push({ts: Date.now(), tip, peers: agents});\r\n }\r\n\r\n\r\n /** */\r\n dumpCastLogs() {\r\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n this._castLogs.map((log) => {\r\n const type = Object.keys(log.tip)[0];\r\n const payload = (log.tip as any)[type];\r\n appSignals.push({timestamp: prettyDate(new Date(log.ts)), type, payload, count: log.peers.length, first: log.peers[0]});\r\n });\r\n console.table(appSignals);\r\n }\r\n\r\n /** */\r\n dumpSignalLogs(signalLogs: SignalLog[]) {\r\n this.dumpCastLogs();\r\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n signalLogs\r\n .filter((log) => log.type == SignalType.Zome)\r\n .map((log) => {\r\n const signal = log.zomeSignal as ZomeSignal;\r\n const pulses = signal.pulses as ZomeSignalProtocol[];\r\n const timestamp = prettyDate(new Date(log.ts));\r\n const from = enc64(signal.from) == this.cell.agentId.b64? \"self\" : new AgentId(signal.from);\r\n for (const pulse of pulses) {\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n const tip: TipProtocol = pulse.Tip;\r\n const type = Object.keys(tip)[0];\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip)});\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\r\n const typedEntry = decode(entryPulse.bytes);\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Entry, state: prettyState(pulse.Entry.state), type: entryPulse.entryType, payload: anyToB64(typedEntry), ah_base: entryPulse.ah.short, eh_target: entryPulse.eh.short});\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Link, state: prettyState(pulse.Link.state), type: linkPulse.link_type, payload: linkPulse.tag, ah_base: linkPulse.base.print(), eh_target: linkPulse.target.print()});\r\n }\r\n }\r\n });\r\n console.table(appSignals);\r\n }\r\n}\r\n\r\n\r\n/** -- Materialze -- */\r\n\r\nexport interface EntryPulseMat {\r\n ah: ActionId,\r\n state: string,\r\n isNew: Boolean,\r\n ts: Timestamp,\r\n author: AgentId,\r\n eh: EntryId,\r\n entryType: string,\r\n visibility: EntryVisibility,\r\n bytes: Uint8Array,\r\n}\r\n\r\n\r\n/** */\r\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\r\n //console.log(\"materializeEntryPulse()\", entryTypes);\r\n const stateStr = Object.keys(entryPulse.state)[0];\r\n return {\r\n ah: new ActionId(entryPulse.ah),\r\n state: stateStr,\r\n isNew: (entryPulse.state as any)[stateStr],\r\n ts: entryPulse.ts,\r\n author: new AgentId(entryPulse.author),\r\n eh: new EntryId(entryPulse.eh),\r\n entryType: entryTypes[entryPulse.def.entry_index],\r\n visibility: entryPulse.def.visibility,\r\n bytes: entryPulse.bytes,\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\r\n let state: Object = {};\r\n state[pulse.state] = pulse.isNew;\r\n //console.log(\"dematerializeEntryPulse()\", state, entryTypes);\r\n /** */\r\n return {\r\n ah: pulse.ah.hash,\r\n state: state as StateChange,\r\n ts: pulse.ts,\r\n author: pulse.author.hash,\r\n eh: pulse.eh.hash,\r\n def: {\r\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\r\n zome_index: 42, // Should not be used\r\n visibility: pulse.visibility,\r\n },\r\n bytes: pulse.bytes,\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport interface LinkPulseMat {\r\n author: AgentId,\r\n base: AnyLinkableId;\r\n target: AnyLinkableId,\r\n timestamp: Timestamp,\r\n zome_index: ZomeIndex,\r\n link_type: string,\r\n tag: Uint8Array,\r\n create_link_hash: ActionId,\r\n /** */\r\n state: string,\r\n isNew: Boolean,\r\n}\r\n\r\n/** */\r\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\r\n //console.log(\"materializeLinkPulse()\", linkTypes);\r\n const stateStr = Object.keys(linkPulse.state)[0];\r\n return {\r\n author: new AgentId(linkPulse.link.author),\r\n base: intoLinkableId(linkPulse.link.base),\r\n target: intoLinkableId(linkPulse.link.target),\r\n timestamp: linkPulse.link.timestamp,\r\n zome_index: linkPulse.link.zome_index,\r\n link_type: linkTypes[linkPulse.link.link_type],\r\n tag: linkPulse.link.tag,\r\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\r\n state: Object.keys(linkPulse.state)[0],\r\n isNew: (linkPulse.state as any)[stateStr],\r\n }\r\n}\r\n\r\n/** */\r\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\r\n let state: Object = {};\r\n state[pulse.state] = pulse.isNew;\r\n //console.log(\"dematerializeLinkPulse()\", state);\r\n /** */\r\n return {\r\n state: state as StateChange,\r\n link: {\r\n author: pulse.author.hash,\r\n base: pulse.base.hash,\r\n target: pulse.target.hash,\r\n timestamp: pulse.timestamp,\r\n zome_index: pulse.zome_index,\r\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\r\n tag: pulse.tag,\r\n create_link_hash: pulse.create_link_hash.hash,\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ZomeViewModelWithSignals.js","sourceRoot":"","sources":["../src/ZomeViewModelWithSignals.ts"],"names":[],"mappings":"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","sourcesContent":["import {AppSignalCb, EntryVisibility, Timestamp} from \"@holochain/client\";\r\nimport {\r\n ActionId,\r\n AgentId, LinkableId, anyToB64, enc64, EntryId,\r\n EntryPulse, getIndexByVariant, intoLinkableId, LinkPulse, prettyDate, prettyState, SignalLog, SignalType, StateChange,\r\n TipProtocol, TipProtocolVariantApp, TipProtocolVariantEntry, TipProtocolVariantLink,\r\n ZomeSignal, ZomeSignalProtocol,\r\n ZomeSignalProtocolType, ZomeSignalProtocolVariantEntry, ZomeSignalProtocolVariantLink\r\n} from \"@ddd-qc/cell-proxy\";\r\nimport {AppSignal} from \"@holochain/client/lib/api/app/types\";\r\nimport {ZomeViewModel} from \"./ZomeViewModel\";\r\nimport {ZomeIndex} from \"@holochain/client/lib/hdk/link\";\r\nimport {decode} from \"@msgpack/msgpack\";\r\n\r\n\r\n/** */\r\nexport interface CastLog {\r\n ts: Timestamp,\r\n tip: TipProtocol,\r\n peers: AgentId[],\r\n}\r\n\r\n\r\n/**\r\n * ZVM with support for ZomeSignals\r\n */\r\nexport abstract class ZomeViewModelWithSignals extends ZomeViewModel {\r\n\r\n private _castLogs: CastLog[] = [];\r\n\r\n /** Methods to override */\r\n protected handleAppTip(_appTip: Uint8Array, _from: AgentId): ZomeSignalProtocol | undefined { return undefined;}\r\n protected async handleEntryPulse(_pulse: EntryPulseMat, _from: AgentId): Promise<void> {}\r\n protected async handleLinkPulse(_pulse: LinkPulseMat, _from: AgentId): Promise<void> {}\r\n\r\n\r\n /** */\r\n signalHandler?: AppSignalCb = this.mySignalHandler;\r\n\r\n\r\n /** */\r\n private mySignalHandler(appSignal: AppSignal): void {\r\n const defaultZomeName = (this.constructor as typeof ZomeViewModelWithSignals).ZOME_PROXY.DEFAULT_ZOME_NAME;\r\n console.log(\"mySignalHandler()\", appSignal, defaultZomeName);\r\n if (appSignal.zome_name !== defaultZomeName) {\r\n return;\r\n }\r\n const zomeSignal = appSignal.payload as ZomeSignal;\r\n if (!(\"pulses\" in zomeSignal)) {\r\n return;\r\n }\r\n /*await*/ this.handleSignal(zomeSignal);\r\n }\r\n\r\n\r\n /** */\r\n private async handleSignal(signal: ZomeSignal): Promise<void> {\r\n const from = new AgentId(signal.from);\r\n let all = [];\r\n for (let pulse of signal.pulses) {\r\n /** -- Handle Signal according to type -- */\r\n /** Change tip to Entry or Link signal */\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n pulse = this.handleTip(pulse.Tip as TipProtocol, from)!;\r\n if (!pulse) {\r\n continue;\r\n }\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n const entryPulseMat = materializeEntryPulse(pulse.Entry as EntryPulse, (this.constructor as typeof ZomeViewModel).ENTRY_TYPES);\r\n all.push(this.handleEntryPulse(entryPulseMat, from));\r\n /** If new entry from this agent, broadcast to peers as tip */\r\n if (entryPulseMat.isNew && from.b64 == this.cell.agentId.b64 && entryPulseMat.visibility == \"Public\") {\r\n all.push(this.broadcastTip({Entry: pulse.Entry as EntryPulse}));\r\n }\r\n continue;\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n const linkPulseMat = materializeLinkPulse(pulse.Link as LinkPulse, (this.constructor as typeof ZomeViewModel).LINK_TYPES);\r\n all.push(this.handleLinkPulse(linkPulseMat, from));\r\n /** If new Link from this agent, broadcast to peers as tip */\r\n if (linkPulseMat.isNew && from.b64 == this.cell.agentId.b64) {\r\n all.push(this.broadcastTip({Link: pulse.Link as LinkPulse}));\r\n }\r\n continue;\r\n }\r\n }\r\n await Promise.all(all);\r\n this.notifySubscribers();\r\n }\r\n\r\n\r\n /** */\r\n private handleTip(tip: TipProtocol, from: AgentId): ZomeSignalProtocol | undefined {\r\n const type = Object.keys(tip)[0];\r\n console.log(\"handleTip()\", type, from, tip);\r\n /* Handle tip according to its type */\r\n switch (type) {\r\n case \"Ping\":\r\n case \"Pong\":\r\n break;\r\n case \"Entry\": return {Entry: (tip as TipProtocolVariantEntry).Entry} as ZomeSignalProtocolVariantEntry; break;\r\n case \"Link\": return {Link: (tip as TipProtocolVariantLink).Link} as ZomeSignalProtocolVariantLink; break;\r\n case \"App\":\r\n return this.handleAppTip((tip as TipProtocolVariantApp).App, from);\r\n break;\r\n }\r\n }\r\n\r\n\r\n /** */\r\n async broadcastTip(tip: TipProtocol, agents?: Array<AgentId>): Promise<void> {\r\n agents = agents? agents : this._dvmParent.livePeers;\r\n /** Skip if no recipients or sending to self only */\r\n const filtered = agents.filter((key) => key.b64 != this.cell.agentId.b64);\r\n const tipType = Object.keys(tip)[0];\r\n console.log(`broadcastTip() Sending Tip \"${tipType}\" to`, filtered, this.cell.agentId.short);\r\n //if (!agents || agents.length == 1 && agents[0] === this._cellProxy.cell.agentPubKey) {\r\n if (!filtered || filtered.length == 0) {\r\n console.log(\"broadcastTip() aborted: No recipients\")\r\n return;\r\n }\r\n /** Broadcast */\r\n const peers = agents.map((key) => key.hash);\r\n await this.zomeProxy.call('cast_tip', {tip, peers});\r\n /** Log */\r\n this._castLogs.push({ts: Date.now(), tip, peers: agents});\r\n }\r\n\r\n\r\n /** */\r\n dumpCastLogs() {\r\n console.warn(`Tips sent from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n this._castLogs.map((log) => {\r\n const type = Object.keys(log.tip)[0];\r\n const payload = (log.tip as any)[type];\r\n appSignals.push({timestamp: prettyDate(new Date(log.ts)), type, payload, count: log.peers.length, first: log.peers[0]});\r\n });\r\n console.table(appSignals);\r\n }\r\n\r\n /** */\r\n dumpSignalLogs(signalLogs: SignalLog[]) {\r\n this.dumpCastLogs();\r\n console.warn(`Signals received from zome \"${this.zomeName}\"`);\r\n let appSignals: any[] = [];\r\n signalLogs\r\n .filter((log) => log.type == SignalType.Zome)\r\n .map((log) => {\r\n const signal = log.zomeSignal as ZomeSignal;\r\n const pulses = signal.pulses as ZomeSignalProtocol[];\r\n const timestamp = prettyDate(new Date(log.ts));\r\n const from = enc64(signal.from) == this.cell.agentId.b64? \"self\" : new AgentId(signal.from);\r\n for (const pulse of pulses) {\r\n if (ZomeSignalProtocolType.Tip in pulse) {\r\n const tip: TipProtocol = pulse.Tip;\r\n const type = Object.keys(tip)[0];\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Tip, type, payload: anyToB64(tip)});\r\n }\r\n if (ZomeSignalProtocolType.Entry in pulse) {\r\n const entryPulse = materializeEntryPulse(pulse.Entry, Object.values(this.zomeProxy.entryTypes));\r\n const typedEntry = decode(entryPulse.bytes);\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Entry, state: prettyState(pulse.Entry.state), type: entryPulse.entryType, payload: anyToB64(typedEntry), ah_base: entryPulse.ah.short, eh_target: entryPulse.eh.short});\r\n }\r\n if (ZomeSignalProtocolType.Link in pulse) {\r\n const linkPulse = materializeLinkPulse(pulse.Link, Object.values(this.zomeProxy.linkTypes));\r\n appSignals.push({timestamp, from, pulse: ZomeSignalProtocolType.Link, state: prettyState(pulse.Link.state), type: linkPulse.link_type, payload: linkPulse.tag, ah_base: linkPulse.base.print(), eh_target: linkPulse.target.print()});\r\n }\r\n }\r\n });\r\n console.table(appSignals);\r\n }\r\n}\r\n\r\n\r\n/** -- Materialze -- */\r\n\r\nexport interface EntryPulseMat {\r\n ah: ActionId,\r\n state: string,\r\n isNew: boolean,\r\n ts: Timestamp,\r\n author: AgentId,\r\n eh: EntryId,\r\n entryType: string,\r\n visibility: EntryVisibility,\r\n bytes: Uint8Array,\r\n}\r\n\r\n\r\n/** */\r\nexport function materializeEntryPulse(entryPulse: EntryPulse, entryTypes: string[]): EntryPulseMat {\r\n //console.log(\"materializeEntryPulse()\", entryTypes);\r\n const stateStr = Object.keys(entryPulse.state)[0];\r\n return {\r\n ah: new ActionId(entryPulse.ah),\r\n state: stateStr,\r\n isNew: (entryPulse.state as any)[stateStr],\r\n ts: entryPulse.ts,\r\n author: new AgentId(entryPulse.author),\r\n eh: new EntryId(entryPulse.eh),\r\n entryType: entryTypes[entryPulse.def.entry_index],\r\n visibility: entryPulse.def.visibility,\r\n bytes: entryPulse.bytes,\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport function dematerializeEntryPulse(pulse: EntryPulseMat, entryTypes: string[]): EntryPulse {\r\n let state: Object = {};\r\n state[pulse.state] = pulse.isNew;\r\n //console.log(\"dematerializeEntryPulse()\", state, entryTypes);\r\n /** */\r\n return {\r\n ah: pulse.ah.hash,\r\n state: state as StateChange,\r\n ts: pulse.ts,\r\n author: pulse.author.hash,\r\n eh: pulse.eh.hash,\r\n def: {\r\n entry_index: getIndexByVariant(entryTypes, pulse.entryType),\r\n zome_index: 42, // Should not be used\r\n visibility: pulse.visibility,\r\n },\r\n bytes: pulse.bytes,\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport interface LinkPulseMat {\r\n author: AgentId,\r\n base: LinkableId;\r\n target: LinkableId,\r\n timestamp: Timestamp,\r\n zome_index: ZomeIndex,\r\n link_type: string,\r\n tag: Uint8Array,\r\n create_link_hash: ActionId,\r\n /** */\r\n state: string,\r\n isNew: Boolean,\r\n}\r\n\r\n/** */\r\nexport function materializeLinkPulse(linkPulse: LinkPulse, linkTypes: string[]): LinkPulseMat {\r\n //console.log(\"materializeLinkPulse()\", linkTypes);\r\n const stateStr = Object.keys(linkPulse.state)[0];\r\n return {\r\n author: new AgentId(linkPulse.link.author),\r\n base: intoLinkableId(linkPulse.link.base),\r\n target: intoLinkableId(linkPulse.link.target),\r\n timestamp: linkPulse.link.timestamp,\r\n zome_index: linkPulse.link.zome_index,\r\n link_type: linkTypes[linkPulse.link.link_type],\r\n tag: linkPulse.link.tag,\r\n create_link_hash: new ActionId(linkPulse.link.create_link_hash),\r\n state: Object.keys(linkPulse.state)[0],\r\n isNew: (linkPulse.state as any)[stateStr],\r\n }\r\n}\r\n\r\n/** */\r\nexport function dematerializeLinkPulse(pulse: LinkPulseMat, linkTypes: string[]): LinkPulse {\r\n let state: Object = {};\r\n state[pulse.state] = pulse.isNew;\r\n //console.log(\"dematerializeLinkPulse()\", state);\r\n /** */\r\n return {\r\n state: state as StateChange,\r\n link: {\r\n author: pulse.author.hash,\r\n base: pulse.base.hash,\r\n target: pulse.target.hash,\r\n timestamp: pulse.timestamp,\r\n zome_index: pulse.zome_index,\r\n link_type: getIndexByVariant(linkTypes, pulse.link_type),\r\n tag: pulse.tag,\r\n create_link_hash: pulse.create_link_hash.hash,\r\n }\r\n }\r\n}\r\n"]}
|