@ddd-qc/profiles-dvm 0.34.0 → 0.34.3

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.
@@ -11,19 +11,19 @@ export type ProfilesAltComparable = {
11
11
  export declare class ProfilesAltPerspective {
12
12
  profiles: ActionIdMap<[Profile, Timestamp]>;
13
13
  profileByAgent: AgentIdMap<ActionId>;
14
- agentByName: Record<string, Set<AgentId>>;
14
+ agentByName: Record<string, Array<AgentId>>;
15
15
  get agents(): AgentId[];
16
16
  get names(): string[];
17
17
  getProfileAgent(profileId: ActionId): AgentId | undefined;
18
18
  getProfile(agent: AgentId): Profile | undefined;
19
19
  getProfilesForName(nickname: string): Profile[];
20
20
  getProfileTs(agent: AgentId): Timestamp | undefined;
21
- getAgentsForName(nickname: string): Set<AgentId>;
22
21
  makeSnapshot(): ProfilesAltSnapshot;
23
22
  }
24
23
  export declare class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {
25
24
  get readonly(): ProfilesAltPerspective;
26
25
  storeProfile(profileAh: ActionId, profile: Profile, ts: Timestamp): void;
26
+ private storeAgentByName;
27
27
  storeAgentProfile(agentId: AgentId, profileAh: ActionId): void;
28
28
  unstoreAgentProfile(agentId: AgentId, profileAh: ActionId): void;
29
29
  restore(snapshot: ProfilesAltSnapshot): void;
@@ -1 +1 @@
1
- {"version":3,"file":"profilesAlt.perspective.d.ts","sourceRoot":"","sources":["../src/profilesAlt.perspective.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAI5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;CAChD,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAAA;AAGD,qBAAa,sBAAsB;IAEjC,QAAQ,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAqB;IAEhE,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAoB;IAIxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAM;IAK/C,IAAI,MAAM,IAAI,OAAO,EAAE,CAAiD;IACxE,IAAI,KAAK,IAAI,MAAM,EAAE,CAAwC;IAG7D,eAAe,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS;IAWzD,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAe/C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAY/C,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IAcnD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAYhD,YAAY,IAAI,mBAAmB;CAWpC;AAID,qBAAa,6BAA8B,SAAQ,sBAAsB;IAEvE,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAKD,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS;IAgBjE,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IAgBvD,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IAczD,OAAO,CAAC,QAAQ,EAAE,mBAAmB;IAgB/B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAS9F"}
1
+ {"version":3,"file":"profilesAlt.perspective.d.ts","sourceRoot":"","sources":["../src/profilesAlt.perspective.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAmB,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAI5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;CAChD,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB,CAAA;AAGD,qBAAa,sBAAsB;IAEjC,QAAQ,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAqB;IAEhE,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAoB;IAIxD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM;IAKjD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAiD;IACxE,IAAI,KAAK,IAAI,MAAM,EAAE,CAAwC;IAG7D,eAAe,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS;IAWzD,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS;IAe/C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAU/C,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;IAgBnD,YAAY,IAAI,mBAAmB;CAWpC;AAID,qBAAa,6BAA8B,SAAQ,sBAAsB;IAEvE,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAKD,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS;IAUjE,OAAO,CAAC,gBAAgB;IAgBxB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IAWvD,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IAczD,OAAO,CAAC,QAAQ,EAAE,mBAAmB;IAgB/B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAS9F"}
@@ -27,13 +27,11 @@ export class ProfilesAltPerspective {
27
27
  return maybe[0];
28
28
  }
29
29
  getProfilesForName(nickname) {
30
- let profiles = new Set();
31
- const maybe = this.agentByName[nickname];
32
- if (!maybe) {
30
+ const agents = this.agentByName[nickname];
31
+ if (!agents) {
33
32
  return [];
34
33
  }
35
- profiles = maybe;
36
- return Object.values(profiles).map((profileAh) => this.profiles.get(profileAh)[0]);
34
+ return agents.map((agentId) => this.profiles.get(this.profileByAgent.get(agentId))[0]);
37
35
  }
38
36
  getProfileTs(agent) {
39
37
  const profileAh = this.profileByAgent.get(agent);
@@ -46,13 +44,6 @@ export class ProfilesAltPerspective {
46
44
  }
47
45
  return pair[1];
48
46
  }
49
- getAgentsForName(nickname) {
50
- const maybe = this.agentByName[nickname];
51
- if (!maybe) {
52
- return new Set();
53
- }
54
- return maybe;
55
- }
56
47
  makeSnapshot() {
57
48
  let all = [];
58
49
  for (const [agentId, profileAh] of this.profileByAgent.entries()) {
@@ -74,13 +65,22 @@ export class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {
74
65
  this.profiles.set(profileAh, [profile, ts]);
75
66
  const agentId = this.getProfileAgent(profileAh);
76
67
  if (agentId) {
77
- let maybe = this.agentByName[profile.nickname];
78
- if (!maybe) {
79
- maybe = new Set();
68
+ this.storeAgentByName(agentId, profile.nickname);
69
+ }
70
+ }
71
+ storeAgentByName(agentId, name) {
72
+ let maybe = this.agentByName[name];
73
+ if (!maybe) {
74
+ maybe = new Array();
75
+ maybe.push(agentId);
76
+ }
77
+ else {
78
+ const found = maybe.find(cur => cur.b64 == agentId.b64);
79
+ if (!found) {
80
+ maybe.push(agentId);
80
81
  }
81
- maybe.add(agentId);
82
- this.agentByName[profile.nickname] = maybe;
83
82
  }
83
+ this.agentByName[name] = maybe;
84
84
  }
85
85
  storeAgentProfile(agentId, profileAh) {
86
86
  console.debug("ProfilesAltZvm.storeAgentProfile()", agentId.short, profileAh.short);
@@ -88,12 +88,7 @@ export class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {
88
88
  this.profileByAgent.set(agentId, profileAh);
89
89
  const pair = this.profiles.get(profileAh);
90
90
  if (pair) {
91
- let maybe = this.agentByName[pair[0].nickname];
92
- if (!maybe) {
93
- maybe = new Set();
94
- }
95
- maybe.add(agentId);
96
- this.agentByName[pair[0].nickname] = maybe;
91
+ this.storeAgentByName(agentId, pair[0].nickname);
97
92
  }
98
93
  }
99
94
  unstoreAgentProfile(agentId, profileAh) {
@@ -1 +1 @@
1
- {"version":3,"file":"profilesAlt.perspective.js","sourceRoot":"","sources":["../src/profilesAlt.perspective.ts"],"names":[],"mappings":"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","sourcesContent":["import {ActionId, ActionIdMap, AgentId, AgentIdMap, assertAllDefined} from \"@ddd-qc/cell-proxy\";\r\nimport {Profile} from \"./bindings/profiles.types\";\r\nimport {Timestamp} from \"@holochain/client\";\r\n\r\n\r\n/** */\r\nexport type ProfilesAltSnapshot = {\r\n all: [AgentId, ActionId, Profile, Timestamp][];\r\n}\r\n\r\n\r\nexport type ProfilesAltComparable = {\r\n profileCount: number,\r\n profiles: Profile[],\r\n}\r\n\r\n/** */\r\nexport class ProfilesAltPerspective {\r\n /* ActionId -> Profile */\r\n profiles: ActionIdMap<[Profile, Timestamp]> = new ActionIdMap();\r\n /* AgentId -> ActionId */\r\n profileByAgent: AgentIdMap<ActionId> = new AgentIdMap();\r\n\r\n /** -- Extra -- */\r\n /* Name -> AgentId */\r\n agentByName: Record<string, Set<AgentId>> = {};\r\n\r\n\r\n /** -- Getters -- */\r\n\r\n get agents(): AgentId[] { return Array.from(this.profileByAgent.keys())}\r\n get names(): string[] { return Object.keys(this.agentByName)}\r\n\r\n /** */\r\n getProfileAgent(profileId: ActionId): AgentId | undefined {\r\n for (const [agentId, profId] of this.profileByAgent.entries()) {\r\n if (profileId.b64 == profId.b64) {\r\n return agentId;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /** */\r\n getProfile(agent: AgentId): Profile | undefined {\r\n const profileAh = this.profileByAgent.get(agent);\r\n //console.log(\"ProfilesAltZvm.getProfile()\", agent, profileAh);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const maybe = this.profiles.get(profileAh);\r\n if (!maybe) {\r\n return undefined;\r\n }\r\n return maybe[0];\r\n }\r\n\r\n\r\n /** AgentId or Name */\r\n getProfilesForName(nickname: string): Profile[] {\r\n let profiles = new Set();\r\n const maybe = this.agentByName[nickname];\r\n if (!maybe) {\r\n return [];\r\n }\r\n profiles = maybe;\r\n return Object.values(profiles).map((profileAh) => this.profiles.get(profileAh)![0]);\r\n }\r\n\r\n\r\n /** */\r\n getProfileTs(agent: AgentId): Timestamp | undefined {\r\n const profileAh = this.profileByAgent.get(agent);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const pair = this.profiles.get(profileAh);\r\n if (!pair) {\r\n return undefined;\r\n }\r\n return pair[1];\r\n }\r\n\r\n\r\n /** */\r\n getAgentsForName(nickname: string): Set<AgentId> {\r\n const maybe = this.agentByName[nickname];\r\n if (!maybe) {\r\n return new Set();\r\n }\r\n return maybe;\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** TODO: deep copy */\r\n makeSnapshot(): ProfilesAltSnapshot {\r\n let all: [AgentId, ActionId, Profile, Timestamp][] = [];\r\n for (const [agentId, profileAh] of this.profileByAgent.entries()) {\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n all.push([agentId, profileAh, pair[0], pair[1]])\r\n }\r\n }\r\n /** */\r\n return {all};\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {\r\n\r\n get readonly(): ProfilesAltPerspective {\r\n return this;\r\n }\r\n\r\n /** -- Store -- */\r\n\r\n /** */\r\n storeProfile(profileAh: ActionId, profile: Profile, ts: Timestamp) {\r\n console.debug(\"ProfilesAltZvm.storeProfile()\", profileAh.short, profile.nickname);\r\n assertAllDefined(profileAh, profile, ts);\r\n this.profiles.set(profileAh, [profile, ts]);\r\n const agentId = this.getProfileAgent(profileAh);\r\n if (agentId) {\r\n let maybe = this.agentByName[profile.nickname];\r\n if (!maybe) {\r\n maybe = new Set<AgentId>();\r\n }\r\n maybe.add(agentId);\r\n this.agentByName[profile.nickname] = maybe;\r\n }\r\n }\r\n\r\n /** */\r\n storeAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n console.debug(\"ProfilesAltZvm.storeAgentProfile()\", agentId.short, profileAh.short);\r\n assertAllDefined(agentId, profileAh);\r\n this.profileByAgent.set(agentId, profileAh);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n let maybe = this.agentByName[pair[0].nickname];\r\n if (!maybe) {\r\n maybe = new Set<AgentId>();\r\n }\r\n maybe.add(agentId);\r\n this.agentByName[pair[0].nickname] = maybe;\r\n }\r\n }\r\n\r\n /** */\r\n unstoreAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n console.debug(\"ProfilesAltZvm.unstoreAgentProfile()\", agentId.short, profileAh.short);\r\n assertAllDefined(agentId, profileAh);\r\n this.profileByAgent.delete(agentId);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n delete this.agentByName[pair[0].nickname];\r\n }\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** */\r\n restore(snapshot: ProfilesAltSnapshot) {\r\n /** Clear */\r\n this.profiles.clear();\r\n this.profileByAgent.clear();\r\n this.agentByName = {};\r\n /** Store */\r\n for (const [agentId, profileAh, profile, ts] of snapshot.all) {\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts);\r\n }\r\n }\r\n\r\n\r\n /** -- Generate -- */\r\n\r\n /** */\r\n async generateRandomProfile(nickname: string, ts?: Timestamp, fields?: Record<string, string>) {\r\n const agentId = await AgentId.random();\r\n const profileAh = await ActionId.random();\r\n const profile: Profile = {nickname, fields: {}};\r\n if (fields) profile.fields = fields;\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts? ts : 0);\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"profilesAlt.perspective.js","sourceRoot":"","sources":["../src/profilesAlt.perspective.ts"],"names":[],"mappings":"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","sourcesContent":["import {ActionId, ActionIdMap, AgentId, AgentIdMap, assertAllDefined} from \"@ddd-qc/cell-proxy\";\r\nimport {Profile} from \"./bindings/profiles.types\";\r\nimport {Timestamp} from \"@holochain/client\";\r\n\r\n\r\n/** */\r\nexport type ProfilesAltSnapshot = {\r\n all: [AgentId, ActionId, Profile, Timestamp][];\r\n}\r\n\r\n\r\nexport type ProfilesAltComparable = {\r\n profileCount: number,\r\n profiles: Profile[],\r\n}\r\n\r\n/** */\r\nexport class ProfilesAltPerspective {\r\n /* ActionId -> Profile */\r\n profiles: ActionIdMap<[Profile, Timestamp]> = new ActionIdMap();\r\n /* AgentId -> ActionId */\r\n profileByAgent: AgentIdMap<ActionId> = new AgentIdMap();\r\n\r\n /** -- Extra -- */\r\n /* Name -> AgentId */\r\n agentByName: Record<string, Array<AgentId>> = {};\r\n\r\n\r\n /** -- Getters -- */\r\n\r\n get agents(): AgentId[] { return Array.from(this.profileByAgent.keys())}\r\n get names(): string[] { return Object.keys(this.agentByName)}\r\n\r\n /** */\r\n getProfileAgent(profileId: ActionId): AgentId | undefined {\r\n for (const [agentId, profId] of this.profileByAgent.entries()) {\r\n if (profileId.b64 == profId.b64) {\r\n return agentId;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /** */\r\n getProfile(agent: AgentId): Profile | undefined {\r\n const profileAh = this.profileByAgent.get(agent);\r\n //console.log(\"ProfilesAltZvm.getProfile()\", agent, profileAh);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const maybe = this.profiles.get(profileAh);\r\n if (!maybe) {\r\n return undefined;\r\n }\r\n return maybe[0];\r\n }\r\n\r\n\r\n /** AgentId or Name */\r\n getProfilesForName(nickname: string): Profile[] {\r\n const agents = this.agentByName[nickname];\r\n if (!agents) {\r\n return [];\r\n }\r\n return agents.map((agentId) => this.profiles.get(this.profileByAgent.get(agentId)!)![0]);\r\n }\r\n\r\n\r\n /** */\r\n getProfileTs(agent: AgentId): Timestamp | undefined {\r\n const profileAh = this.profileByAgent.get(agent);\r\n if (!profileAh) {\r\n return undefined;\r\n }\r\n const pair = this.profiles.get(profileAh);\r\n if (!pair) {\r\n return undefined;\r\n }\r\n return pair[1];\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** TODO: deep copy */\r\n makeSnapshot(): ProfilesAltSnapshot {\r\n let all: [AgentId, ActionId, Profile, Timestamp][] = [];\r\n for (const [agentId, profileAh] of this.profileByAgent.entries()) {\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n all.push([agentId, profileAh, pair[0], pair[1]])\r\n }\r\n }\r\n /** */\r\n return {all};\r\n }\r\n}\r\n\r\n\r\n/** */\r\nexport class ProfilesAltPerspectiveMutable extends ProfilesAltPerspective {\r\n\r\n get readonly(): ProfilesAltPerspective {\r\n return this;\r\n }\r\n\r\n /** -- Store -- */\r\n\r\n /** */\r\n storeProfile(profileAh: ActionId, profile: Profile, ts: Timestamp) {\r\n console.debug(\"ProfilesAltZvm.storeProfile()\", profileAh.short, profile.nickname);\r\n assertAllDefined(profileAh, profile, ts);\r\n this.profiles.set(profileAh, [profile, ts]);\r\n const agentId = this.getProfileAgent(profileAh);\r\n if (agentId) {\r\n this.storeAgentByName(agentId, profile.nickname);\r\n }\r\n }\r\n\r\n private storeAgentByName(agentId: AgentId, name: string) {\r\n let maybe = this.agentByName[name];\r\n if (!maybe) {\r\n maybe = new Array<AgentId>();\r\n maybe.push(agentId);\r\n } else {\r\n // check if already exists\r\n const found = maybe.find(cur => cur.b64 == agentId.b64);\r\n if (!found) {\r\n maybe.push(agentId);\r\n }\r\n }\r\n this.agentByName[name] = maybe;\r\n }\r\n\r\n /** */\r\n storeAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n console.debug(\"ProfilesAltZvm.storeAgentProfile()\", agentId.short, profileAh.short);\r\n assertAllDefined(agentId, profileAh);\r\n this.profileByAgent.set(agentId, profileAh);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n this.storeAgentByName(agentId, pair[0].nickname);\r\n }\r\n }\r\n\r\n /** */\r\n unstoreAgentProfile(agentId: AgentId, profileAh: ActionId) {\r\n console.debug(\"ProfilesAltZvm.unstoreAgentProfile()\", agentId.short, profileAh.short);\r\n assertAllDefined(agentId, profileAh);\r\n this.profileByAgent.delete(agentId);\r\n const pair = this.profiles.get(profileAh);\r\n if (pair) {\r\n delete this.agentByName[pair[0].nickname];\r\n }\r\n }\r\n\r\n\r\n /** -- Memento -- */\r\n\r\n /** */\r\n restore(snapshot: ProfilesAltSnapshot) {\r\n /** Clear */\r\n this.profiles.clear();\r\n this.profileByAgent.clear();\r\n this.agentByName = {};\r\n /** Store */\r\n for (const [agentId, profileAh, profile, ts] of snapshot.all) {\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts);\r\n }\r\n }\r\n\r\n\r\n /** -- Generate -- */\r\n\r\n /** */\r\n async generateRandomProfile(nickname: string, ts?: Timestamp, fields?: Record<string, string>) {\r\n const agentId = await AgentId.random();\r\n const profileAh = await ActionId.random();\r\n const profile: Profile = {nickname, fields: {}};\r\n if (fields) profile.fields = fields;\r\n this.storeAgentProfile(agentId, profileAh);\r\n this.storeProfile(profileAh, profile, ts? ts : 0);\r\n }\r\n\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ddd-qc/profiles-dvm",
3
- "version": "0.34.0",
3
+ "version": "0.34.3",
4
4
  "description": "DnaViewModel implementation for the Profiles zome.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -30,9 +30,9 @@
30
30
  "typescript": "~5.2.0"
31
31
  },
32
32
  "dependencies": {
33
- "@holochain/client": "=0.20.2",
33
+ "@holochain/client": "=0.20.4-rc.0",
34
34
  "@ddd-qc/lit-happ": "file:../lit-happ",
35
- "@holochain-open-dev/elements": "^0.600.0",
35
+ "@holochain-open-dev/elements": "^0.601.0",
36
36
  "@msgpack/msgpack": "^3.1.1",
37
37
  "lit": "3.0.2"
38
38
  },