@ddd-qc/profiles-dvm 0.34.0 → 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.
|
@@ -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,
|
|
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,
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
if (!maybe) {
|
|
30
|
+
const agents = this.agentByName[nickname];
|
|
31
|
+
if (!agents) {
|
|
33
32
|
return [];
|
|
34
33
|
}
|
|
35
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
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"]}
|