@ddd-qc/cell-proxy 0.27.6 → 0.28.0

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.
Files changed (67) hide show
  1. package/dist/AppProxy.d.ts +9 -45
  2. package/dist/AppProxy.d.ts.map +1 -0
  3. package/dist/AppProxy.js +23 -91
  4. package/dist/AppProxy.js.map +1 -1
  5. package/dist/CellProxy.d.ts +1 -37
  6. package/dist/CellProxy.d.ts.map +1 -0
  7. package/dist/CellProxy.js +4 -71
  8. package/dist/CellProxy.js.map +1 -1
  9. package/dist/ConductorAppProxy.d.ts +2 -19
  10. package/dist/ConductorAppProxy.d.ts.map +1 -0
  11. package/dist/ConductorAppProxy.js +15 -41
  12. package/dist/ConductorAppProxy.js.map +1 -1
  13. package/dist/ExternalAppProxy.d.ts +1 -5
  14. package/dist/ExternalAppProxy.d.ts.map +1 -0
  15. package/dist/ExternalAppProxy.js +1 -8
  16. package/dist/ExternalAppProxy.js.map +1 -1
  17. package/dist/ZomeProxy.d.ts +4 -15
  18. package/dist/ZomeProxy.d.ts.map +1 -0
  19. package/dist/ZomeProxy.js +0 -17
  20. package/dist/ZomeProxy.js.map +1 -1
  21. package/dist/cell.d.ts +1 -11
  22. package/dist/cell.d.ts.map +1 -0
  23. package/dist/cell.js +0 -14
  24. package/dist/cell.js.map +1 -1
  25. package/dist/datum-map.d.ts +2 -6
  26. package/dist/datum-map.d.ts.map +1 -0
  27. package/dist/datum-map.js +0 -12
  28. package/dist/datum-map.js.map +1 -1
  29. package/dist/hash.d.ts +2 -21
  30. package/dist/hash.d.ts.map +1 -0
  31. package/dist/hash.js +19 -51
  32. package/dist/hash.js.map +1 -1
  33. package/dist/hcl.d.ts +2 -15
  34. package/dist/hcl.d.ts.map +1 -0
  35. package/dist/hcl.js +1 -14
  36. package/dist/hcl.js.map +1 -1
  37. package/dist/holochain-id-map.d.ts +2 -1
  38. package/dist/holochain-id-map.d.ts.map +1 -0
  39. package/dist/holochain-id-map.js +0 -17
  40. package/dist/holochain-id-map.js.map +1 -1
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/mixins.d.ts +2 -13
  44. package/dist/mixins.d.ts.map +1 -0
  45. package/dist/mixins.js +1 -13
  46. package/dist/mixins.js.map +1 -1
  47. package/dist/pretty.d.ts +1 -4
  48. package/dist/pretty.d.ts.map +1 -0
  49. package/dist/pretty.js +0 -4
  50. package/dist/pretty.js.map +1 -1
  51. package/dist/types.d.ts +1 -11
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +1 -10
  54. package/dist/types.js.map +1 -1
  55. package/dist/utils.d.ts +3 -10
  56. package/dist/utils.d.ts.map +1 -0
  57. package/dist/utils.js +11 -11
  58. package/dist/utils.js.map +1 -1
  59. package/dist/zomeSignals.integrity.d.ts +1 -0
  60. package/dist/zomeSignals.integrity.d.ts.map +1 -0
  61. package/dist/zomeSignals.integrity.js +1 -1
  62. package/dist/zomeSignals.integrity.js.map +1 -1
  63. package/dist/zomeSignals.types.d.ts +1 -5
  64. package/dist/zomeSignals.types.d.ts.map +1 -0
  65. package/dist/zomeSignals.types.js +0 -4
  66. package/dist/zomeSignals.types.js.map +1 -1
  67. package/package.json +3 -3
package/dist/hash.js CHANGED
@@ -3,16 +3,11 @@ import blake2b from "@bitgo/blake2b";
3
3
  import { Base64 } from "js-base64";
4
4
  import { HASH_TYPE_PREFIX, randomByteArray, } from "@holochain/client";
5
5
  import { getIndexByVariant } from "./utils";
6
- /**
7
- * Checks if obj is a Hash or list of hashes and tries to convert it a B64 or list of B64
8
- */
9
6
  export function anyToB64(obj) {
10
- /** Check if it's a hash */
11
7
  if (obj instanceof Uint8Array) {
12
8
  return enc64(obj);
13
9
  }
14
10
  else {
15
- /** Check if it's an array of hashes */
16
11
  if (Array.isArray(obj)) {
17
12
  const isUint8Array = obj.length > 0 &&
18
13
  obj.every((value) => {
@@ -29,7 +24,6 @@ export function anyToB64(obj) {
29
24
  }
30
25
  return obj;
31
26
  }
32
- /** ------------------------------------------------------------------------------------------------------------------*/
33
27
  function decodeHashFromBase64(hash) {
34
28
  return Base64.toUint8Array(hash.slice(1));
35
29
  }
@@ -37,6 +31,9 @@ function encodeHashToBase64(hash) {
37
31
  return `u${Base64.fromUint8Array(hash, true)}`;
38
32
  }
39
33
  export function dhtLocationFrom32(hashCore) {
34
+ if (hashCore.length != 32) {
35
+ throw Error("Uint8Array length must be exactly 32");
36
+ }
40
37
  const hash = new Uint8Array(16);
41
38
  blake2b(hash.length).update(hashCore).digest(hash);
42
39
  const out = hash.slice(0, 4);
@@ -48,28 +45,23 @@ export function dhtLocationFrom32(hashCore) {
48
45
  });
49
46
  return out;
50
47
  }
51
- /** ------------------------------------------------------------------------------------------------------------------*/
52
48
  export var HoloHashType;
53
49
  (function (HoloHashType) {
54
50
  HoloHashType["Action"] = "Action";
55
51
  HoloHashType["Agent"] = "Agent";
56
- //DhtOp = "DhtOp",
57
52
  HoloHashType["Dna"] = "Dna";
58
53
  HoloHashType["Entry"] = "Entry";
59
54
  HoloHashType["External"] = "External";
60
55
  HoloHashType["Network"] = "Network";
61
- //Warrent = "Warrent",
62
56
  HoloHashType["Wasm"] = "Wasm";
63
57
  })(HoloHashType || (HoloHashType = {}));
64
58
  export const HASH_TYPE_PREFIX_B64 = {
65
59
  Action: "uhCkk",
66
60
  Agent: "uhCAk",
67
61
  Dna: "uhC0k",
68
- //DhtOp: "hCQk",
69
62
  Entry: "uhCEk",
70
63
  External: "uhC8k",
71
64
  Network: "uhCIk",
72
- //Warrent: "Warrent",
73
65
  Wasm: "uhCok",
74
66
  };
75
67
  export function getHashType(hash) {
@@ -82,7 +74,6 @@ export function getHashType(hash) {
82
74
  }
83
75
  throw Error("Unknown hash type");
84
76
  }
85
- /** */
86
77
  export function isHashTypeB64(hash, hashType) {
87
78
  const slice = hash.slice(0, 5);
88
79
  const prefix = HASH_TYPE_PREFIX_B64[hashType];
@@ -96,7 +87,6 @@ export function isHashTypeB64(hash, hashType) {
96
87
  export function hasHoloHashType(hash) {
97
88
  return !!Object.values(HASH_TYPE_PREFIX_B64).find((prefix) => hash.startsWith(`${prefix}`));
98
89
  }
99
- /** */
100
90
  export function validateHashB64(hash, hashType) {
101
91
  if (!hash || typeof (hash) != 'string') {
102
92
  throw new Error("The hash must be a valid string");
@@ -120,12 +110,10 @@ export function enc64(hash) {
120
110
  function isUint8Array(value) {
121
111
  return value instanceof Uint8Array;
122
112
  }
123
- /** A HoloHash starts with 'u' has a type and is 53 chars long */
124
113
  export class HolochainId {
125
114
  get hashType() {
126
115
  return this.constructor.HASH_TYPE;
127
116
  }
128
- /** ctor: validate */
129
117
  constructor(input) {
130
118
  if (typeof (input) != 'string') {
131
119
  input = encodeHashToBase64(input);
@@ -133,9 +121,7 @@ export class HolochainId {
133
121
  validateHashB64(input, this.hashType);
134
122
  this.b64 = input;
135
123
  }
136
- /** */
137
124
  equals(other) {
138
- //console.log("equals", other, isUint8Array(other));
139
125
  if (!other) {
140
126
  return false;
141
127
  }
@@ -153,19 +139,14 @@ export class HolochainId {
153
139
  }
154
140
  return b64 == this.b64;
155
141
  }
156
- /** */
157
142
  static empty(byte) {
158
143
  const empty = new Uint8Array(32);
159
144
  byte = byte ? byte : 0;
160
145
  empty.fill(byte);
161
- const newHash = Uint8Array.from([
162
- ...HASH_TYPE_PREFIX[this.HASH_TYPE],
163
- ...empty,
164
- ...dhtLocationFrom32(empty),
165
- ]);
146
+ const hashType = this.HASH_TYPE;
147
+ const newHash = retypeHoloHashArray(empty, hashType);
166
148
  return new this(newHash);
167
149
  }
168
- /** */
169
150
  static from(start) {
170
151
  let hash;
171
152
  if (typeof start == 'string') {
@@ -176,31 +157,30 @@ export class HolochainId {
176
157
  }
177
158
  const core = Uint8Array.from(hash.slice(3, 35));
178
159
  const hashType = this.HASH_TYPE;
179
- const newHash = Uint8Array.from([
180
- ...HASH_TYPE_PREFIX[hashType],
181
- ...core,
182
- ...dhtLocationFrom32(core),
183
- ]);
160
+ const newHash = retypeHoloHashArray(core, hashType);
184
161
  return new this(newHash);
185
162
  }
186
- /** */
187
163
  static async random() {
188
164
  const core = await randomByteArray(32);
189
- const newHash = Uint8Array.from([
190
- ...HASH_TYPE_PREFIX[this.HASH_TYPE],
191
- ...core,
192
- ...dhtLocationFrom32(core),
193
- ]);
165
+ const hashType = this.HASH_TYPE;
166
+ const newHash = retypeHoloHashArray(core, hashType);
194
167
  return new this(newHash);
195
168
  }
196
- // Don't autoconvert to string as this can lead to confusions. Have convert to string be explicit
197
169
  toString() { throw Error("Implicit conversion of HolochainId to string"); }
198
- //toString(): string {return this.b64;}
199
170
  get hash() { return dec64(this.b64); }
200
- /** First 8 chars of the Core */
201
171
  get short() { return this.b64.slice(5, 13); }
202
172
  print() { return `${this.short} (${this.hashType})`; }
203
173
  }
174
+ function retypeHoloHashArray(core, hashType) {
175
+ if (hashType == HoloHashType.Network || hashType == HoloHashType.Wasm) {
176
+ throw Error("HoloHashType not handled");
177
+ }
178
+ return Uint8Array.from([
179
+ ...HASH_TYPE_PREFIX[hashType],
180
+ ...core,
181
+ ...dhtLocationFrom32(core),
182
+ ]);
183
+ }
204
184
  export class ActionId extends HolochainId {
205
185
  action() { }
206
186
  }
@@ -221,7 +201,6 @@ export class ExternalId extends HolochainId {
221
201
  external() { }
222
202
  }
223
203
  ExternalId.HASH_TYPE = HoloHashType.External;
224
- /** */
225
204
  export function intoDhtId(input) {
226
205
  try {
227
206
  const actionId = new ActionId(input);
@@ -232,7 +211,6 @@ export function intoDhtId(input) {
232
211
  return entryId;
233
212
  }
234
213
  }
235
- /** */
236
214
  export function intoLinkableId(input) {
237
215
  try {
238
216
  const dhtId = intoDhtId(input);
@@ -243,7 +221,6 @@ export function intoLinkableId(input) {
243
221
  return externalId;
244
222
  }
245
223
  }
246
- /** */
247
224
  export function intoAnyId(input) {
248
225
  try {
249
226
  const dhtId = intoLinkableId(input);
@@ -260,12 +237,8 @@ export function intoAnyId(input) {
260
237
  }
261
238
  }
262
239
  }
263
- /** -- JSON -- */
264
- export function holoIdReviver(key, value) {
240
+ export function holoIdReviver(_key, value) {
265
241
  if (typeof value === 'object' && value !== null) {
266
- // if (value.dataType === 'HolochainId') {
267
- // return intoAnyId(value.value);
268
- // }
269
242
  const keys = Object.keys(value);
270
243
  if (keys.length == 1 && keys[0] == "b64") {
271
244
  return intoAnyId(value.b64);
@@ -273,7 +246,6 @@ export function holoIdReviver(key, value) {
273
246
  }
274
247
  return value;
275
248
  }
276
- /** -- MsgPack ExtensionCodec for HolochainId -- */
277
249
  export const HOLOCHAIN_ID_EXT_CODEC = new ExtensionCodec();
278
250
  HOLOCHAIN_ID_EXT_CODEC.register({
279
251
  type: getIndexByVariant(HoloHashType, HoloHashType.Agent),
@@ -335,8 +307,6 @@ HOLOCHAIN_ID_EXT_CODEC.register({
335
307
  return new DnaId(b64);
336
308
  },
337
309
  });
338
- /** -- TESTING -- */
339
- /** */
340
310
  export async function testHoloId() {
341
311
  console.log("testHoloId()");
342
312
  const emptyAction = ActionId.empty();
@@ -346,7 +316,6 @@ export async function testHoloId() {
346
316
  const randomEh = await EntryId.random();
347
317
  const randomEh2 = EntryId.from(randomEh.b64);
348
318
  console.log("testHoloId()", emptyAction);
349
- /** */
350
319
  function printEh(eh) {
351
320
  console.log("printEh", eh);
352
321
  }
@@ -357,6 +326,5 @@ export async function testHoloId() {
357
326
  console.log("testHoloId.emptyEntry2", emptyEntry.equals(emptyEntry2), emptyEntry.equals(emptyEntry2.b64), emptyEntry.equals(emptyEntry2.hash));
358
327
  console.log("testHoloId.randomEh", emptyEntry.equals(randomEh), emptyEntry.equals(emptyAgent), emptyEntry.equals(emptyAgent.hash), emptyEntry.equals(emptyAgent.b64));
359
328
  console.log("testHoloId.randomEh2", randomEh.equals(randomEh2));
360
- //printEh(emptyAction); // Should error at compile time
361
329
  }
362
330
  //# sourceMappingURL=hash.js.map
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\";\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 = [];\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 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 newHash = Uint8Array.from([\n ...HASH_TYPE_PREFIX[(this as unknown as typeof HolochainId).HASH_TYPE],\n ...empty,\n ...dhtLocationFrom32(empty),\n ]);\n return new this(newHash);\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 = Uint8Array.from([\n ...HASH_TYPE_PREFIX[hashType],\n ...core,\n ...dhtLocationFrom32(core),\n ]);\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 newHash = Uint8Array.from([\n ...HASH_TYPE_PREFIX[(this as unknown as typeof HolochainId).HASH_TYPE],\n ...core,\n ...dhtLocationFrom32(core),\n ]);\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\nexport class ActionId extends HolochainId { static readonly HASH_TYPE = HoloHashType.Action; action() {} }\nexport class AgentId extends HolochainId { static readonly HASH_TYPE = HoloHashType.Agent; agent() {} }\nexport class EntryId extends HolochainId { static readonly HASH_TYPE = HoloHashType.Entry; entry() {} }\nexport class DnaId extends HolochainId { static readonly HASH_TYPE = HoloHashType.Dna; dna() {} }\nexport class ExternalId extends HolochainId { static 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, 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"]}
package/dist/hcl.d.ts CHANGED
@@ -1,28 +1,15 @@
1
1
  import { InstalledAppId } from "@holochain/client";
2
2
  import { BaseRoleName, CloneId } from "./types";
3
- /** -- HCL: Holochain Cell Locator -- */
4
3
  export type HCLString = string;
5
- /**
6
- * `cell:/<appId>/<BaseRoleName>/<cloneId>`
7
- * Examples
8
- * `cell:/where/profiles`
9
- * `cell:/chatApp/channel/channel.2`
10
- */
11
4
  export declare class HCL {
12
5
  readonly appId: InstalledAppId;
13
6
  readonly baseRoleName: BaseRoleName;
14
- /** A Cell can have a cloneId if it's a cloneCell */
15
- readonly cloneId?: CloneId;
16
- /** Ctor */
7
+ readonly cloneId: CloneId | undefined;
17
8
  constructor(appId: InstalledAppId, role: BaseRoleName, cloneId?: CloneId);
18
- /** */
19
9
  get roleName(): string;
20
- /** */
21
10
  static parse(sHcl: HCLString): HCL;
22
- /** */
23
11
  toString(): HCLString;
24
- /** */
25
12
  isClone(): boolean;
26
- /** */
27
13
  match(hcl: HCL): boolean;
28
14
  }
15
+ //# sourceMappingURL=hcl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hcl.d.ts","sourceRoot":"","sources":["../src/hcl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAK9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAQ/B,qBAAa,GAAG;IAEd,SAAgB,KAAK,EAAE,cAAc,CAAC;IACtC,SAAgB,YAAY,EAAE,YAAY,CAAC;IAE3C,SAAgB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAa;gBAG7C,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO;IAOxE,IAAI,QAAQ,IAAI,MAAM,CAA6D;IAInF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,GAAG;IAclC,QAAQ,IAAI,SAAS;IAWrB,OAAO,IAAI,OAAO;IAIlB,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;CAUzB"}
package/dist/hcl.js CHANGED
@@ -1,23 +1,14 @@
1
- /**
2
- * `cell:/<appId>/<BaseRoleName>/<cloneId>`
3
- * Examples
4
- * `cell:/where/profiles`
5
- * `cell:/chatApp/channel/channel.2`
6
- */
7
1
  export class HCL {
8
- /** Ctor */
9
2
  constructor(appId, role, cloneId) {
3
+ this.cloneId = undefined;
10
4
  this.appId = appId;
11
5
  this.baseRoleName = role;
12
6
  this.cloneId = cloneId;
13
7
  }
14
- /** */
15
8
  get roleName() { return this.isClone() ? this.cloneId : this.baseRoleName; }
16
9
  ;
17
- /** */
18
10
  static parse(sHcl) {
19
11
  const subs = sHcl.split('/');
20
- //console.log({subs});
21
12
  if (subs[0] !== "cell:")
22
13
  throw Error("HCL.parse() Bad string format: " + sHcl);
23
14
  if (subs.length < 2)
@@ -29,18 +20,14 @@ export class HCL {
29
20
  }
30
21
  return new HCL(subs[1], subs[2]);
31
22
  }
32
- /** */
33
23
  toString() {
34
24
  let hcl = "cell:/" + this.appId + "/" + this.baseRoleName;
35
- //const maybeCloneName = this.cloneId;
36
25
  if (this.isClone()) {
37
26
  hcl += "/" + this.cloneId;
38
27
  }
39
28
  return hcl;
40
29
  }
41
- /** */
42
30
  isClone() { return this.cloneId !== undefined; }
43
- /** */
44
31
  match(hcl) {
45
32
  if (this.appId != hcl.appId)
46
33
  return false;
package/dist/hcl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hcl.js","sourceRoot":"","sources":["../src/hcl.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IAOd,WAAW;IACX,YAAY,KAAqB,EAAE,IAAkB,EAAE,OAAiB;QACtE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM;IACN,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;IAAA,CAAC;IAGnF,MAAM;IACN,MAAM,CAAC,KAAK,CAAC,IAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,sBAAsB;QACtB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,qDAAqD,GAAG,IAAI,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,sDAAsD,GAAG,IAAI,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAGD,MAAM;IACN,QAAQ;QACN,IAAI,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;QACzD,sCAAsC;QACtC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA;SAC1B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,MAAM;IACN,OAAO,KAAa,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAA,CAAC;IAGvD,MAAM;IACN,KAAK,CAAC,GAAQ;QACZ,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAE,OAAO,KAAK,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAEF","sourcesContent":["import {InstalledAppId} from \"@holochain/client\";\nimport {BaseRoleName, CloneId} from \"./types\";\n\n\n/** -- HCL: Holochain Cell Locator -- */\n\nexport type HCLString = string;\n\n/**\n * `cell:/<appId>/<BaseRoleName>/<cloneId>`\n * Examples\n * `cell:/where/profiles`\n * `cell:/chatApp/channel/channel.2`\n */\nexport class HCL {\n\n public readonly appId: InstalledAppId;\n public readonly baseRoleName: BaseRoleName;\n /** A Cell can have a cloneId if it's a cloneCell */\n public readonly cloneId?: CloneId;\n\n /** Ctor */\n constructor(appId: InstalledAppId, role: BaseRoleName, cloneId?: CloneId) {\n this.appId = appId;\n this.baseRoleName = role;\n this.cloneId = cloneId;\n }\n\n /** */\n get roleName(): string { return this.isClone()? this.cloneId : this.baseRoleName };\n\n\n /** */\n static parse(sHcl: HCLString): HCL {\n const subs = sHcl.split('/');\n //console.log({subs});\n if (subs[0] !== \"cell:\") throw Error(\"HCL.parse() Bad string format: \" + sHcl);\n if (subs.length < 2) throw Error(\"HCL.parse() Bad string format. Too few components: \" + sHcl);\n if (subs.length > 4) throw Error(\"HCL.parse() Bad string format. Too many components: \" + sHcl);\n if (subs.length == 4) {\n return new HCL(subs[1], subs[2], subs[3]);\n }\n return new HCL(subs[1], subs[2]);\n }\n\n\n /** */\n toString(): HCLString {\n let hcl = \"cell:/\" + this.appId + \"/\" + this.baseRoleName\n //const maybeCloneName = this.cloneId;\n if (this.isClone()) {\n hcl += \"/\" + this.cloneId\n }\n return hcl;\n }\n\n\n /** */\n isClone(): boolean {return this.cloneId !== undefined;}\n\n\n /** */\n match(hcl: HCL): boolean {\n if (this.appId != hcl.appId) return false;\n if (this.baseRoleName != hcl.baseRoleName) return false;\n if (hcl.isClone()) {\n if (!this.isClone()) return false;\n if (hcl.cloneId != this.cloneId) return false;\n }\n return true;\n }\n\n}\n"]}
1
+ {"version":3,"file":"hcl.js","sourceRoot":"","sources":["../src/hcl.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,GAAG;IAQd,YAAY,KAAqB,EAAE,IAAkB,EAAE,OAAiB;QAHxD,YAAO,GAAwB,SAAS,CAAC;QAIvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAGD,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAA,CAAC,CAAC;IAAA,CAAC;IAIpF,MAAM,CAAC,KAAK,CAAC,IAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,qDAAqD,GAAG,IAAI,CAAC,CAAC;QAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,sDAAsD,GAAG,IAAI,CAAC,CAAC;QAChG,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;IACrC,CAAC;IAID,QAAQ;QACN,IAAI,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;QAEzD,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAID,OAAO,KAAa,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAA,CAAC;IAIvD,KAAK,CAAC,GAAQ;QACZ,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAE,OAAO,KAAK,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CAEF","sourcesContent":["import {InstalledAppId} from \"@holochain/client\";\nimport {BaseRoleName, CloneId} from \"./types\";\n\n\n/** -- HCL: Holochain Cell Locator -- */\n\nexport type HCLString = string;\n\n/**\n * `cell:/<appId>/<BaseRoleName>/<cloneId>`\n * Examples\n * `cell:/where/profiles`\n * `cell:/chatApp/channel/channel.2`\n */\nexport class HCL {\n\n public readonly appId: InstalledAppId;\n public readonly baseRoleName: BaseRoleName;\n /** A Cell can have a cloneId if it's a cloneCell */\n public readonly cloneId: CloneId | undefined = undefined;\n\n /** Ctor */\n constructor(appId: InstalledAppId, role: BaseRoleName, cloneId?: CloneId) {\n this.appId = appId;\n this.baseRoleName = role;\n this.cloneId = cloneId;\n }\n\n /** */\n get roleName(): string { return this.isClone()? this.cloneId! : this.baseRoleName };\n\n\n /** */\n static parse(sHcl: HCLString): HCL {\n const subs = sHcl.split('/');\n //console.log({subs});\n if (subs[0] !== \"cell:\") throw Error(\"HCL.parse() Bad string format: \" + sHcl);\n if (subs.length < 2) throw Error(\"HCL.parse() Bad string format. Too few components: \" + sHcl);\n if (subs.length > 4) throw Error(\"HCL.parse() Bad string format. Too many components: \" + sHcl);\n if (subs.length == 4) {\n return new HCL(subs[1]!, subs[2]!, subs[3]);\n }\n return new HCL(subs[1]!, subs[2]!);\n }\n\n\n /** */\n toString(): HCLString {\n let hcl = \"cell:/\" + this.appId + \"/\" + this.baseRoleName\n //const maybeCloneName = this.cloneId;\n if (this.isClone()) {\n hcl += \"/\" + this.cloneId\n }\n return hcl;\n }\n\n\n /** */\n isClone(): boolean {return this.cloneId !== undefined;}\n\n\n /** */\n match(hcl: HCL): boolean {\n if (this.appId != hcl.appId) return false;\n if (this.baseRoleName != hcl.baseRoleName) return false;\n if (hcl.isClone()) {\n if (!this.isClone()) return false;\n if (hcl.cloneId != this.cloneId) return false;\n }\n return true;\n }\n\n}\n"]}
@@ -6,7 +6,7 @@ export declare class HolochainIdMap<K extends HolochainId, V> implements Map<K,
6
6
  _map: Map<HoloHashB64, V>;
7
7
  constructor(_ctor: GConstructor<K>, initialEntries?: Array<[K, V]>);
8
8
  has(key: K): boolean;
9
- get(key: K): V;
9
+ get(key: K): V | undefined;
10
10
  set(key: K, value: V): this;
11
11
  delete(key: K): boolean;
12
12
  values(): IterableIterator<V>;
@@ -32,3 +32,4 @@ export declare class EntryIdMap<T> extends HolochainIdMap<EntryId, T> {
32
32
  }
33
33
  export declare class AnyIdMap<T> extends Map<HoloHashB64, T> {
34
34
  }
35
+ //# sourceMappingURL=holochain-id-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"holochain-id-map.d.ts","sourceRoot":"","sources":["../src/holochain-id-map.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAC,MAAM,QAAQ,CAAC;AACtE,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAGtC,qBAAa,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,CAAE,YAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAG5D,OAAO,CAAC,KAAK;IAFzB,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAEN,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAS1E,GAAG,CAAC,GAAG,EAAE,CAAC;IAIV,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAK3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB,MAAM;IAIN,IAAI;IAMJ,OAAO;IAMP,KAAK;IAIL,OAAO,CACL,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EACtD,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI;IAMP,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;CACF;AAID,qBAAa,WAAW,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjD,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;CAGlD;AAED,qBAAa,UAAU,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CAGjD;AAED,qBAAa,QAAQ,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3C,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;CAG/C;AAED,qBAAa,UAAU,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CAGjD;AAsBD,qBAAa,QAAQ,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;CAAG"}
@@ -71,23 +71,6 @@ export class EntryIdMap extends HolochainIdMap {
71
71
  super(EntryId, initialEntries);
72
72
  }
73
73
  }
74
- //
75
- // export class DhtIdMap<T> extends HolochainIdMap<DhtId, T> {
76
- // constructor(initialEntries?: Array<[DhtId, T]>) {
77
- // super(HoloHashB64, initialEntries)
78
- // }
79
- // }
80
- //
81
- // export class LinkableIdMap<T> extends HolochainIdMap<LinkableId, T> {
82
- // constructor(initialEntries?: Array<[LinkableId, T]>) {
83
- // super(LinkableId, initialEntries)
84
- // }
85
- // }
86
- // export class AnyIdMap<T> extends HolochainIdMap<AnyId, T> {
87
- // constructor(initialEntries?: Array<[AnyId, T]>) {
88
- // super(AnyId, initialEntries)
89
- // }
90
- // }
91
74
  export class AnyIdMap extends Map {
92
75
  }
93
76
  //# sourceMappingURL=holochain-id-map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"holochain-id-map.js","sourceRoot":"","sources":["../src/holochain-id-map.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n HoloHashB64,\n} from \"@holochain/client\";\nimport {ActionId, AgentId, DnaId, EntryId, HolochainId} from \"./hash\";\nimport {GConstructor} from \"./mixins\";\n\n\nexport class HolochainIdMap<K extends HolochainId, V> implements Map<K, V> {\n _map: Map<HoloHashB64, V>;\n\n constructor(private _ctor: GConstructor<K>, initialEntries?: Array<[K, V]>) {\n this._map = new Map();\n if (initialEntries) {\n for (const [key, value] of initialEntries) {\n this.set(key, value);\n }\n }\n }\n\n has(key: K) {\n return this._map.has(key.b64);\n }\n\n get(key: K): V {\n return this._map.get(key.b64);\n }\n\n set(key: K, value: V) {\n this._map.set(key.b64, value);\n return this;\n }\n\n delete(key: K) {\n return this._map.delete(key.b64);\n }\n\n values() {\n return this._map.values();\n }\n\n keys() {\n return Array.from(this._map.keys())\n .map((h) => new this._ctor(h))\n [Symbol.iterator]();\n }\n\n entries() {\n return Array.from(this._map.entries())\n .map(([h, v]) => [new this._ctor(h), v] as [K, V])\n [Symbol.iterator]();\n }\n\n clear() {\n return this._map.clear();\n }\n\n forEach(\n callbackfn: (value: V, key: K, map: Map<K, V>) => void,\n thisArg?: any\n ): void {\n return this._map.forEach((value, key) => {\n callbackfn(value, new this._ctor(key), this);\n }, thisArg);\n }\n\n get size() {\n return this._map.size;\n }\n\n [Symbol.iterator](): IterableIterator<[K, V]> {\n return this.entries();\n }\n\n get [Symbol.toStringTag](): string {\n return this._map[Symbol.toStringTag];\n }\n}\n\n\n\nexport class ActionIdMap<T> extends HolochainIdMap<ActionId, T> {\n constructor(initialEntries?: Array<[ActionId, T]>) {\n super(ActionId, initialEntries)\n }\n}\n\nexport class AgentIdMap<T> extends HolochainIdMap<AgentId, T> {\n constructor(initialEntries?: Array<[AgentId, T]>) {\n super(AgentId, initialEntries)\n }\n}\n\nexport class DnaIdMap<T> extends HolochainIdMap<DnaId, T> {\n constructor(initialEntries?: Array<[DnaId, T]>) {\n super(DnaId, initialEntries)\n }\n}\n\nexport class EntryIdMap<T> extends HolochainIdMap<EntryId, T> {\n constructor(initialEntries?: Array<[EntryId, T]>) {\n super(EntryId, initialEntries)\n }\n}\n\n//\n// export class DhtIdMap<T> extends HolochainIdMap<DhtId, T> {\n// constructor(initialEntries?: Array<[DhtId, T]>) {\n// super(HoloHashB64, initialEntries)\n// }\n// }\n//\n// export class LinkableIdMap<T> extends HolochainIdMap<LinkableId, T> {\n// constructor(initialEntries?: Array<[LinkableId, T]>) {\n// super(LinkableId, initialEntries)\n// }\n// }\n\n\n// export class AnyIdMap<T> extends HolochainIdMap<AnyId, T> {\n// constructor(initialEntries?: Array<[AnyId, T]>) {\n// super(AnyId, initialEntries)\n// }\n// }\n\nexport class AnyIdMap<T> extends Map<HoloHashB64, T> {}\n"]}
1
+ {"version":3,"file":"holochain-id-map.js","sourceRoot":"","sources":["../src/holochain-id-map.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n HoloHashB64,\n} from \"@holochain/client\";\nimport {ActionId, AgentId, DnaId, EntryId, HolochainId} from \"./hash\";\nimport {GConstructor} from \"./mixins\";\n\n\nexport class HolochainIdMap<K extends HolochainId, V> implements Map<K, V> {\n _map: Map<HoloHashB64, V>;\n\n constructor(private _ctor: GConstructor<K>, initialEntries?: Array<[K, V]>) {\n this._map = new Map();\n if (initialEntries) {\n for (const [key, value] of initialEntries) {\n this.set(key, value);\n }\n }\n }\n\n has(key: K) {\n return this._map.has(key.b64);\n }\n\n get(key: K): V | undefined {\n return this._map.get(key.b64);\n }\n\n set(key: K, value: V): this {\n this._map.set(key.b64, value);\n return this;\n }\n\n delete(key: K): boolean {\n return this._map.delete(key.b64);\n }\n\n values() {\n return this._map.values();\n }\n\n keys() {\n return Array.from(this._map.keys())\n .map((h) => new this._ctor(h))\n [Symbol.iterator]();\n }\n\n entries() {\n return Array.from(this._map.entries())\n .map(([h, v]) => [new this._ctor(h), v] as [K, V])\n [Symbol.iterator]();\n }\n\n clear() {\n return this._map.clear();\n }\n\n forEach(\n callbackfn: (value: V, key: K, map: Map<K, V>) => void,\n thisArg?: any\n ): void {\n return this._map.forEach((value, key) => {\n callbackfn(value, new this._ctor(key), this);\n }, thisArg);\n }\n\n get size(): number {\n return this._map.size;\n }\n\n [Symbol.iterator](): IterableIterator<[K, V]> {\n return this.entries();\n }\n\n get [Symbol.toStringTag](): string {\n return this._map[Symbol.toStringTag];\n }\n}\n\n\n\nexport class ActionIdMap<T> extends HolochainIdMap<ActionId, T> {\n constructor(initialEntries?: Array<[ActionId, T]>) {\n super(ActionId, initialEntries)\n }\n}\n\nexport class AgentIdMap<T> extends HolochainIdMap<AgentId, T> {\n constructor(initialEntries?: Array<[AgentId, T]>) {\n super(AgentId, initialEntries)\n }\n}\n\nexport class DnaIdMap<T> extends HolochainIdMap<DnaId, T> {\n constructor(initialEntries?: Array<[DnaId, T]>) {\n super(DnaId, initialEntries)\n }\n}\n\nexport class EntryIdMap<T> extends HolochainIdMap<EntryId, T> {\n constructor(initialEntries?: Array<[EntryId, T]>) {\n super(EntryId, initialEntries)\n }\n}\n\n//\n// export class DhtIdMap<T> extends HolochainIdMap<DhtId, T> {\n// constructor(initialEntries?: Array<[DhtId, T]>) {\n// super(HoloHashB64, initialEntries)\n// }\n// }\n//\n// export class LinkableIdMap<T> extends HolochainIdMap<LinkableId, T> {\n// constructor(initialEntries?: Array<[LinkableId, T]>) {\n// super(LinkableId, initialEntries)\n// }\n// }\n\n\n// export class AnyIdMap<T> extends HolochainIdMap<AnyId, T> {\n// constructor(initialEntries?: Array<[AnyId, T]>) {\n// super(AnyId, initialEntries)\n// }\n// }\n\nexport class AnyIdMap<T> extends Map<HoloHashB64, T> {}\n"]}
package/dist/index.d.ts CHANGED
@@ -12,3 +12,4 @@ export * from "./pretty";
12
12
  export * from "./hash";
13
13
  export * from "./holochain-id-map";
14
14
  export * from "./zomeSignals.types";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
package/dist/mixins.d.ts CHANGED
@@ -6,28 +6,17 @@ export type Constructor<T> = {
6
6
  export type GConstructor<T = {}> = new (...args: any[]) => T;
7
7
  export type AbstractConstructor<T = {}> = abstract new (...args: any[]) => T;
8
8
  export declare class Empty {
9
- constructor(...args: any[]);
9
+ constructor(..._args: any[]);
10
10
  }
11
- /** ------------------------------------------------------------------------------------------- **/
12
- /**
13
- * Mixin for Cell bound classes.
14
- * A Cell bound class must have a "Provisioned" or "Cloned" cell from @holochain/client
15
- */
16
11
  export declare function CellMixin<TBase extends AbstractConstructor>(Base: TBase): (abstract new (...args: any[]) => {
17
12
  _cell?: Cell;
18
13
  readonly cell: Cell;
19
14
  }) & TBase;
20
- /** ------------------------------------------------------------------------------------------- **/
21
- /**
22
- * Mixin for Zome bound classes.
23
- * A Zome bound class must have a zome name and a list of zome functions
24
- */
25
15
  export declare function ZomeMixin<TBase extends AbstractConstructor>(Base: TBase): ((abstract new (...args: any[]) => {
26
16
  zomeName: ZomeName;
27
17
  readonly defaultZomeName: string;
28
18
  readonly entryTypes: string[];
29
19
  readonly linkTypes: string[];
30
- /** Tuple array with zome name */
31
20
  readonly fnNames: [string, string][];
32
21
  }) & {
33
22
  readonly DEFAULT_ZOME_NAME: ZomeName;
@@ -40,7 +29,6 @@ export declare const ZomeSpecific: ((abstract new (...args: any[]) => {
40
29
  readonly defaultZomeName: string;
41
30
  readonly entryTypes: string[];
42
31
  readonly linkTypes: string[];
43
- /** Tuple array with zome name */
44
32
  readonly fnNames: [string, string][];
45
33
  }) & {
46
34
  readonly DEFAULT_ZOME_NAME: ZomeName;
@@ -48,3 +36,4 @@ export declare const ZomeSpecific: ((abstract new (...args: any[]) => {
48
36
  readonly LINK_TYPES: string[];
49
37
  readonly FN_NAMES: FunctionName[];
50
38
  }) & typeof Empty;
39
+ //# sourceMappingURL=mixins.d.ts.map
@@ -0,0 +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;AAYD,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"}
package/dist/mixins.js CHANGED
@@ -1,11 +1,6 @@
1
1
  export class Empty {
2
- constructor(...args) { }
2
+ constructor(..._args) { }
3
3
  }
4
- /** ------------------------------------------------------------------------------------------- **/
5
- /**
6
- * Mixin for Cell bound classes.
7
- * A Cell bound class must have a "Provisioned" or "Cloned" cell from @holochain/client
8
- */
9
4
  export function CellMixin(Base) {
10
5
  class ACell extends Base {
11
6
  get cell() { if (!this._cell)
@@ -13,12 +8,6 @@ export function CellMixin(Base) {
13
8
  }
14
9
  return ACell;
15
10
  }
16
- //export const CellSpecific = CellMixin(Empty);
17
- /** ------------------------------------------------------------------------------------------- **/
18
- /**
19
- * Mixin for Zome bound classes.
20
- * A Zome bound class must have a zome name and a list of zome functions
21
- */
22
11
  export function ZomeMixin(Base) {
23
12
  class AZomeSpecific extends Base {
24
13
  constructor(...args) {
@@ -34,7 +23,6 @@ export function ZomeMixin(Base) {
34
23
  get linkTypes() {
35
24
  return this.constructor.LINK_TYPES;
36
25
  }
37
- /** Tuple array with zome name */
38
26
  get fnNames() {
39
27
  const fnNames = this.constructor.FN_NAMES;
40
28
  if (!fnNames) {
@@ -1 +1 @@
1
- {"version":3,"file":"mixins.js","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,KAAK;IAChB,YAAY,GAAG,IAAW,IAAG,CAAC;CAC/B;AAGD,mGAAmG;AAEnG;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,KAAM,SAAQ,IAAI;QAM/B,IAAI,IAAI,KAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAE,CAAC,OAAO,IAAI,CAAC,KAAM,CAAA,CAAC,CAAC;KAExG;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+CAA+C;AAI/C,mGAAmG;AAEnG;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,aAAc,SAAQ,IAAI;QAQvC,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,WAAoC,CAAC,iBAAiB,CAAA;QAC9E,CAAC;QAED,IAAI,eAAe;YACjB,OAAQ,IAAI,CAAC,WAAoC,CAAC,iBAAiB,CAAC;QACtE,CAAC;QAED,IAAI,UAAU;YACZ,OAAQ,IAAI,CAAC,WAAoC,CAAC,WAAW,CAAC;QAChE,CAAC;QACD,IAAI,SAAS;YACX,OAAQ,IAAI,CAAC,WAAoC,CAAC,UAAU,CAAC;QAC/D,CAAC;QAGD,iCAAiC;QACjC,IAAI,OAAO;YACT,MAAM,OAAO,GAAI,IAAI,CAAC,WAAoC,CAAC,QAAQ,CAAC;YACpE,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACpF;YACD,OAAQ,OAA0B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import {\n FunctionName,\n ZomeName\n} from \"@holochain/client\";\nimport {Cell} from \"./cell\";\n\nexport type Constructor<T> = {new (): T};\nexport type GConstructor<T = {}> = new (...args: any[]) => T;\nexport type AbstractConstructor<T = {}> = abstract new (...args: any[]) => T\n\n\nexport class Empty {\n constructor(...args: any[]) {}\n}\n\n\n/** ------------------------------------------------------------------------------------------- **/\n\n/**\n * Mixin for Cell bound classes.\n * A Cell bound class must have a \"Provisioned\" or \"Cloned\" cell from @holochain/client\n */\nexport function CellMixin<TBase extends AbstractConstructor>(Base: TBase) {\n abstract class ACell extends Base {\n // constructor(...args: any[]){\n // super(args);\n // }\n _cell?: Cell;\n\n get cell(): Cell { if (!this._cell) throw Error(\"Cell field not set for object\") ; return this._cell! }\n\n }\n\n return ACell;\n}\n\n//export const CellSpecific = CellMixin(Empty);\n\n\n\n/** ------------------------------------------------------------------------------------------- **/\n\n/**\n * Mixin for Zome bound classes.\n * A Zome bound class must have a zome name and a list of zome functions\n */\nexport function ZomeMixin<TBase extends AbstractConstructor>(Base: TBase) {\n abstract class AZomeSpecific extends Base {\n\n zomeName: ZomeName;\n static readonly DEFAULT_ZOME_NAME: ZomeName;\n static readonly ENTRY_TYPES: string[];\n static readonly LINK_TYPES: string[];\n static readonly FN_NAMES: FunctionName[];\n\n constructor(...args: any[]){\n super(args);\n this.zomeName = (this.constructor as typeof AZomeSpecific).DEFAULT_ZOME_NAME\n }\n\n get defaultZomeName(): ZomeName {\n return (this.constructor as typeof AZomeSpecific).DEFAULT_ZOME_NAME;\n }\n\n get entryTypes(): string[] {\n return (this.constructor as typeof AZomeSpecific).ENTRY_TYPES;\n }\n get linkTypes(): string[] {\n return (this.constructor as typeof AZomeSpecific).LINK_TYPES;\n }\n\n\n /** Tuple array with zome name */\n get fnNames(): [ZomeName, FunctionName][] {\n const fnNames = (this.constructor as typeof AZomeSpecific).FN_NAMES;\n if (!fnNames) {\n throw Error(\"FN_NAMES not defined in ZomeProxy subclass \" + this.constructor.name);\n }\n return (fnNames as FunctionName[]).map((fnName) => {\n return [this.zomeName, fnName]\n })\n }\n }\n\n return AZomeSpecific;\n}\n\nexport const ZomeSpecific = ZomeMixin(Empty);\n"]}
1
+ {"version":3,"file":"mixins.js","sourceRoot":"","sources":["../src/mixins.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,KAAK;IAChB,YAAY,GAAG,KAAY,IAAG,CAAC;CAChC;AASD,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,KAAM,SAAQ,IAAI;QAM/B,IAAI,IAAI,KAAW,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAE,CAAC,OAAO,IAAI,CAAC,KAAM,CAAA,CAAC,CAAC;KAExG;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAYD,MAAM,UAAU,SAAS,CAAoC,IAAW;IACtE,MAAe,aAAc,SAAQ,IAAI;QAQvC,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,WAAoC,CAAC,iBAAiB,CAAA;QAC9E,CAAC;QAED,IAAI,eAAe;YACjB,OAAQ,IAAI,CAAC,WAAoC,CAAC,iBAAiB,CAAC;QACtE,CAAC;QAED,IAAI,UAAU;YACZ,OAAQ,IAAI,CAAC,WAAoC,CAAC,WAAW,CAAC;QAChE,CAAC;QACD,IAAI,SAAS;YACX,OAAQ,IAAI,CAAC,WAAoC,CAAC,UAAU,CAAC;QAC/D,CAAC;QAID,IAAI,OAAO;YACT,MAAM,OAAO,GAAI,IAAI,CAAC,WAAoC,CAAC,QAAQ,CAAC;YACpE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACrF,CAAC;YACD,OAAQ,OAA0B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC","sourcesContent":["import {\n FunctionName,\n ZomeName\n} from \"@holochain/client\";\nimport {Cell} from \"./cell\";\n\nexport type Constructor<T> = {new (): T};\nexport type GConstructor<T = {}> = new (...args: any[]) => T;\nexport type AbstractConstructor<T = {}> = abstract new (...args: any[]) => T\n\n\nexport class Empty {\n constructor(..._args: any[]) {}\n}\n\n\n/** ------------------------------------------------------------------------------------------- **/\n\n/**\n * Mixin for Cell bound classes.\n * A Cell bound class must have a \"Provisioned\" or \"Cloned\" cell from @holochain/client\n */\nexport function CellMixin<TBase extends AbstractConstructor>(Base: TBase) {\n abstract class ACell extends Base {\n // constructor(...args: any[]){\n // super(args);\n // }\n _cell?: Cell;\n\n get cell(): Cell { if (!this._cell) throw Error(\"Cell field not set for object\") ; return this._cell! }\n\n }\n\n return ACell;\n}\n\n//export const CellSpecific = CellMixin(Empty);\n\n\n\n/** ------------------------------------------------------------------------------------------- **/\n\n/**\n * Mixin for Zome bound classes.\n * A Zome bound class must have a zome name and a list of zome functions\n */\nexport function ZomeMixin<TBase extends AbstractConstructor>(Base: TBase) {\n abstract class AZomeSpecific extends Base {\n\n zomeName: ZomeName;\n static readonly DEFAULT_ZOME_NAME: ZomeName;\n static readonly ENTRY_TYPES: string[];\n static readonly LINK_TYPES: string[];\n static readonly FN_NAMES: FunctionName[];\n\n constructor(...args: any[]){\n super(args);\n this.zomeName = (this.constructor as typeof AZomeSpecific).DEFAULT_ZOME_NAME\n }\n\n get defaultZomeName(): ZomeName {\n return (this.constructor as typeof AZomeSpecific).DEFAULT_ZOME_NAME;\n }\n\n get entryTypes(): string[] {\n return (this.constructor as typeof AZomeSpecific).ENTRY_TYPES;\n }\n get linkTypes(): string[] {\n return (this.constructor as typeof AZomeSpecific).LINK_TYPES;\n }\n\n\n /** Tuple array with zome name */\n get fnNames(): [ZomeName, FunctionName][] {\n const fnNames = (this.constructor as typeof AZomeSpecific).FN_NAMES;\n if (!fnNames) {\n throw Error(\"FN_NAMES not defined in ZomeProxy subclass \" + this.constructor.name);\n }\n return (fnNames as FunctionName[]).map((fnName) => {\n return [this.zomeName, fnName]\n })\n }\n }\n\n return AZomeSpecific;\n}\n\nexport const ZomeSpecific = ZomeMixin(Empty);\n"]}