@e280/stz 0.0.0-17 → 0.0.0-19

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 (50) hide show
  1. package/package.json +1 -1
  2. package/s/coalesce.ts +1 -0
  3. package/s/data/bytename/bytename.ts +0 -9
  4. package/s/data/bytename/thumbprint.test.ts +1 -1
  5. package/s/data/bytename/thumbprint.ts +38 -37
  6. package/s/deadline.ts +1 -0
  7. package/s/{defer-promise.ts → defer.ts} +2 -2
  8. package/s/drill.ts +2 -4
  9. package/s/id-counter.ts +9 -0
  10. package/s/index.ts +2 -1
  11. package/s/is.ts +10 -4
  12. package/s/map-g.ts +2 -2
  13. package/s/nap.ts +1 -0
  14. package/s/pubsub.ts +17 -2
  15. package/x/coalesce.d.ts +1 -0
  16. package/x/coalesce.js +1 -0
  17. package/x/coalesce.js.map +1 -1
  18. package/x/data/bytename/bytename.d.ts +0 -6
  19. package/x/data/bytename/bytename.js +0 -6
  20. package/x/data/bytename/bytename.js.map +1 -1
  21. package/x/data/bytename/thumbprint.d.ts +12 -11
  22. package/x/data/bytename/thumbprint.js +31 -32
  23. package/x/data/bytename/thumbprint.js.map +1 -1
  24. package/x/data/bytename/thumbprint.test.js +1 -1
  25. package/x/data/bytename/thumbprint.test.js.map +1 -1
  26. package/x/{defer-promise.d.ts → defer.d.ts} +2 -2
  27. package/x/{defer-promise.js → defer.js} +2 -2
  28. package/x/defer.js.map +1 -0
  29. package/x/drill.d.ts +1 -3
  30. package/x/drill.js +2 -4
  31. package/x/drill.js.map +1 -1
  32. package/x/id-counter.d.ts +5 -0
  33. package/x/id-counter.js +10 -0
  34. package/x/id-counter.js.map +1 -0
  35. package/x/index.d.ts +2 -1
  36. package/x/index.js +2 -1
  37. package/x/index.js.map +1 -1
  38. package/x/is.d.ts +6 -4
  39. package/x/is.js +6 -4
  40. package/x/is.js.map +1 -1
  41. package/x/map-g.d.ts +3 -3
  42. package/x/map-g.js +1 -1
  43. package/x/map-g.js.map +1 -1
  44. package/x/nap.d.ts +1 -0
  45. package/x/nap.js +1 -0
  46. package/x/nap.js.map +1 -1
  47. package/x/pubsub.d.ts +10 -0
  48. package/x/pubsub.js +2 -2
  49. package/x/pubsub.js.map +1 -1
  50. package/x/defer-promise.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/stz",
3
- "version": "0.0.0-17",
3
+ "version": "0.0.0-19",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/coalesce.ts CHANGED
@@ -1,4 +1,5 @@
1
1
 
2
+ /** return a single function that calls all the provided functions */
2
3
  export function coalesce<A extends any[] = []>(...fns: ((...a: A) => void)[]) {
3
4
  return (...a: A) => fns.forEach(fn => fn(...a))
4
5
  }
@@ -86,14 +86,5 @@ export const Bytename = {
86
86
  fromHex(hex: string, options?: Partial<BytenameOptions>) {
87
87
  return Bytename.fromBytes(Hex.bytes(hex), options)
88
88
  },
89
-
90
- /** @deprecated renamed to `fromBytes` */
91
- string(bytes: Uint8Array, options: Partial<BytenameOptions> = {}) { return Bytename.fromBytes(bytes, options) },
92
-
93
- /** @deprecated renamed to `toBytes` */
94
- bytes(bytename: string) { return Bytename.toBytes(bytename) },
95
-
96
- /** @deprecated renamed to `toHex` */
97
- hex(bytename: string) { return Bytename.toHex(bytename) },
98
89
  }
99
90
 
@@ -4,7 +4,7 @@ import {Hex} from "../hex.js"
4
4
  import {Bytes} from "../bytes.js"
5
5
  import {Thumbprint} from "./thumbprint.js"
6
6
 
7
- const sampleThumbprint = "nodlyn.fasrep.habbud::5QQkszJKjJY3mbFns7FDSJ7a43gbkj93wt88"
7
+ const sampleThumbprint = "nodlyn.fasrep.habbud.ralwel.Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
8
8
  const sampleHex = "88e8c3fad1028fcf6ce5ac491578850f4d833336feca03b608265501c3019d59"
9
9
  const sampleBytes = Hex.bytes(sampleHex)
10
10
 
@@ -5,75 +5,80 @@ import {Bytename} from "./bytename.js"
5
5
 
6
6
  export type ThumbprintOptions = {
7
7
  delimiter: string
8
- sigilDelimiter: string
9
- sigilByteCount: number
8
+ sigilBytes: number
9
+ previewBytes: number
10
10
  }
11
11
 
12
12
  export type ThumbprintData = {
13
13
  bytes: Uint8Array
14
- sigil: string
15
- bulk: string
16
14
  thumbprint: string
15
+ preview: string
16
+ bulk: string
17
+ sigil: string
17
18
  }
18
19
 
19
20
  /**
20
21
  * Thumbprint is a friendly presentation format for arbitrary binary data.
21
- * - looks like "nodlyn.fasrep.habbud.ralwel::Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
22
- * - the "sigil" is the first bytes that are shown in bytename format
23
- * - the "bulk" is the rest of the data in base58
24
- * - originally designed to be a nice way to present 256-bit ids
25
- * - can actually represent any number of bytes
22
+ * - looks like "nodlyn.fasrep.habbud.ralwel.Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
23
+ * - the preview: "nodlyn.fasrep.habbud.ralwel" (bytename format)
24
+ * - the bulk: "Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ" (base58 format)
25
+ * - the sigil: "nodlyn.fasrep" (shorter part of the bytename)
26
+ * - originally designed to be a nice way to present 256-bit ids, but can actually represent any number of bytes
26
27
  */
27
28
  export const Thumbprint = {
28
29
  defaults: (<ThumbprintOptions>{
29
- delimiter: "::",
30
- sigilDelimiter: ".",
31
- sigilByteCount: 6,
30
+ delimiter: ".",
31
+ sigilBytes: 4,
32
+ previewBytes: 8,
32
33
  }),
33
34
 
34
- parse(thumbprint: string): ThumbprintData {
35
+ toBytes(thumbprint: string) {
35
36
  thumbprint = thumbprint.trim()
36
- const parts = thumbprint.split(/[^a-zA-Z0-9]+/m)
37
+ const beans = thumbprint.split(/[^a-zA-Z0-9]+/m)
37
38
  .filter(Boolean)
38
39
  .map(s => s.trim())
39
40
 
40
- if (parts.length < 2) {
41
- const sigil = parts.join(".")
42
- const bytes = Bytename.toBytes(sigil)
43
- return {bytes, sigil, bulk: "", thumbprint}
44
- }
41
+ if (beans.length < 2)
42
+ return Bytename.toBytes(beans.join(""))
43
+
44
+ const bulk = beans.pop()!
45
+ const preview = beans.join("")
45
46
 
46
- const bulk = parts.pop()!
47
- const sigil = parts.join(".")
48
- const bytes = new Uint8Array([
49
- ...Bytename.toBytes(sigil),
47
+ return new Uint8Array([
48
+ ...Bytename.toBytes(preview),
50
49
  ...Base58.bytes(bulk),
51
50
  ])
51
+ },
52
52
 
53
- return {bytes, sigil, bulk, thumbprint}
53
+ parse(thumbprint: string, options?: Partial<ThumbprintOptions>): ThumbprintData {
54
+ const bytes = Thumbprint.toBytes(thumbprint)
55
+ return Thumbprint.build.fromBytes(bytes, options)
54
56
  },
55
57
 
56
58
  build: {
57
59
  fromBytes(bytes: Uint8Array, options: Partial<ThumbprintOptions> = {}): ThumbprintData {
58
- const {sigilByteCount, sigilDelimiter, delimiter}
60
+ const {delimiter, previewBytes, sigilBytes}
59
61
  = {...Thumbprint.defaults, ...options}
60
62
 
61
- const sigil = (bytes.length > 0)
62
- ? Bytename.fromBytes(bytes.slice(0, sigilByteCount), {
63
- wordSeparator: sigilDelimiter,
64
- groupSeparator: sigilDelimiter,
63
+ const yoink = (b: number) => (bytes.length > 0)
64
+ ? Bytename.fromBytes(bytes.slice(0, b), {
65
+ wordSeparator: delimiter,
66
+ groupSeparator: delimiter,
65
67
  })
66
68
  : ""
67
69
 
68
- const bulk = (bytes.length > sigilByteCount)
69
- ? Base58.string(bytes.slice(sigilByteCount))
70
+ const sigil = yoink(sigilBytes)
71
+ const preview = yoink(previewBytes)
72
+
73
+ const bulk = (bytes.length > previewBytes)
74
+ ? Base58.string(bytes.slice(previewBytes))
70
75
  : ""
71
76
 
72
- const thumbprint = [sigil, bulk]
77
+ const thumbprint = [preview, bulk]
73
78
  .filter(s => s.length > 0)
74
79
  .join(delimiter)
75
80
 
76
- return {bytes, sigil, bulk, thumbprint}
81
+ return {bytes, thumbprint, preview, bulk, sigil}
77
82
  },
78
83
 
79
84
  fromHex(hex: string, options?: Partial<ThumbprintOptions>) {
@@ -82,10 +87,6 @@ export const Thumbprint = {
82
87
  },
83
88
  },
84
89
 
85
- toBytes(thumbprint: string) {
86
- return Thumbprint.parse(thumbprint).bytes
87
- },
88
-
89
90
  toHex(thumbprint: string) {
90
91
  const bytes = Thumbprint.toBytes(thumbprint)
91
92
  return Hex.string(bytes)
package/s/deadline.ts CHANGED
@@ -24,3 +24,4 @@ export function deadline<R>(milliseconds: number, message: string, fn: () => Pro
24
24
  .finally(() => clearTimeout(id))
25
25
  })
26
26
  }
27
+
@@ -1,6 +1,6 @@
1
1
 
2
2
  /** a promise which can be resolved from the outside */
3
- export type DeferredPromise<R> = {
3
+ export type Deferred<R> = {
4
4
  promise: Promise<R>
5
5
  resolve: (result: R) => void
6
6
  reject: (reason: any) => void
@@ -10,7 +10,7 @@ export type DeferredPromise<R> = {
10
10
  }
11
11
 
12
12
  /** returns a deferred promise with exposed resolve and reject fns */
13
- export function deferPromise<R>(): DeferredPromise<R> {
13
+ export function defer<R>(): Deferred<R> {
14
14
  let resolve!: (result: R) => void
15
15
  let reject!: (reason: any) => void
16
16
 
package/s/drill.ts CHANGED
@@ -1,9 +1,7 @@
1
1
 
2
2
  import {is} from "./is.js"
3
3
 
4
- /**
5
- * return a value within an object tree, found at the given path.
6
- */
4
+ /** return a value within an object tree, found at the given path. */
7
5
  export function drill<xResult>(
8
6
  object: {[key: string]: any},
9
7
  path: string[],
@@ -13,7 +11,7 @@ export function drill<xResult>(
13
11
 
14
12
  for (const key of path) {
15
13
  current = current[key]
16
- if (is.unavailable(current))
14
+ if (is.unset(current))
17
15
  break
18
16
  }
19
17
 
@@ -0,0 +1,9 @@
1
+
2
+ export class IdCounter {
3
+ constructor(public count = 0) {}
4
+
5
+ next() {
6
+ return this.count++
7
+ }
8
+ }
9
+
package/s/index.ts CHANGED
@@ -16,10 +16,11 @@ export * from "./coalesce.js"
16
16
  export * from "./concurrent.js"
17
17
  export * from "./deadline.js"
18
18
  export * from "./dedupe.js"
19
- export * from "./defer-promise.js"
19
+ export * from "./defer.js"
20
20
  export * from "./drill.js"
21
21
  export * from "./escape-regex.js"
22
22
  export * from "./hat.js"
23
+ export * from "./id-counter.js"
23
24
  export * from "./is.js"
24
25
  export * from "./loopy.js"
25
26
  export * from "./map-g.js"
package/s/is.ts CHANGED
@@ -1,9 +1,9 @@
1
1
 
2
- export const is = {
3
- available: <X>(x: X): x is NonNullable<X> =>
2
+ export const is = Object.freeze({
3
+ set: <X>(x: X): x is NonNullable<X> =>
4
4
  x !== undefined && x !== null,
5
5
 
6
- unavailable: (x: any): x is (undefined | null) =>
6
+ unset: (x: any): x is (undefined | null) =>
7
7
  x === undefined || x === null,
8
8
 
9
9
  boolean: (x: any): x is boolean =>
@@ -23,5 +23,11 @@ export const is = {
23
23
 
24
24
  array: (x: any | any[]): x is any[] =>
25
25
  Array.isArray(x),
26
- }
26
+
27
+ fn: (x: any): x is (...a: any[]) => any =>
28
+ typeof x === "function",
29
+
30
+ symbol: (x: any): x is symbol =>
31
+ typeof x === "symbol",
32
+ })
27
33
 
package/s/map-g.ts CHANGED
@@ -1,11 +1,11 @@
1
1
 
2
- /** js map, but with handy methods like `require` and `guarantee` */
2
+ /** extended js map with handy methods like `require` and `guarantee` */
3
3
  export class MapG<K, V> extends Map<K, V> {
4
4
  static require<K, V>(map: Map<K, V>, key: K) {
5
5
  const value = map.get(key)
6
6
  if (value === undefined)
7
7
  throw new Error(`required key not found: "${key}"`)
8
- return value
8
+ return value as V
9
9
  }
10
10
 
11
11
  static guarantee<K, V>(map: Map<K, V>, key: K, make: () => V) {
package/s/nap.ts CHANGED
@@ -1,4 +1,5 @@
1
1
 
2
+ /** create a promise that waits for a number of milliseconds. */
2
3
  export const nap = (milliseconds: number = 0) => (
3
4
  new Promise<void>(resolve => setTimeout(resolve, milliseconds))
4
5
  )
package/s/pubsub.ts CHANGED
@@ -1,20 +1,35 @@
1
1
 
2
- import {deferPromise} from "./defer-promise.js"
2
+ import {defer} from "./defer.js"
3
3
 
4
4
  export type Listener<A extends any[]> = (...a: A) => (void | Promise<void>)
5
5
 
6
6
  export interface Xub<A extends any[] = []> {
7
+
8
+ /** publish to all subscribed listeners. */
7
9
  pub(...a: A): Promise<void>
10
+
11
+ /** subscribe a listener function. */
8
12
  sub(fn: Listener<A>): () => void
13
+
14
+ /**
15
+ * subscribe a listener function.
16
+ * @alias sub
17
+ */
9
18
  on(fn: Listener<A>): () => void
19
+
20
+ /** subscribe a listener function that unsubscribes itself after being invoked. */
10
21
  once(): Promise<A>
22
+
23
+ /** wipe all listeners attached to this. */
11
24
  clear(): void
12
25
  }
13
26
 
27
+ /** subscriber fn that can be published to. */
14
28
  export interface Sub<A extends any[] = []> extends Xub<A> {
15
29
  (fn: Listener<A>): () => void
16
30
  }
17
31
 
32
+ /** publisher fn that can be published to. */
18
33
  export interface Pub<A extends any[] = []> extends Xub<A> {
19
34
  (...a: A): Promise<void>
20
35
  }
@@ -32,7 +47,7 @@ export function xub<A extends any[] = []>() {
32
47
  }
33
48
 
34
49
  async function once() {
35
- const {promise, resolve} = deferPromise<A>()
50
+ const {promise, resolve} = defer<A>()
36
51
  const unsubscribe = sub((...a) => {
37
52
  resolve(a)
38
53
  unsubscribe()
package/x/coalesce.d.ts CHANGED
@@ -1 +1,2 @@
1
+ /** return a single function that calls all the provided functions */
1
2
  export declare function coalesce<A extends any[] = []>(...fns: ((...a: A) => void)[]): (...a: A) => void;
package/x/coalesce.js CHANGED
@@ -1,3 +1,4 @@
1
+ /** return a single function that calls all the provided functions */
1
2
  export function coalesce(...fns) {
2
3
  return (...a) => fns.forEach(fn => fn(...a));
3
4
  }
package/x/coalesce.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"coalesce.js","sourceRoot":"","sources":["../s/coalesce.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,QAAQ,CAAuB,GAAG,GAA0B;IAC3E,OAAO,CAAC,GAAG,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"coalesce.js","sourceRoot":"","sources":["../s/coalesce.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,MAAM,UAAU,QAAQ,CAAuB,GAAG,GAA0B;IAC3E,OAAO,CAAC,GAAG,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC"}
@@ -16,10 +16,4 @@ export declare const Bytename: {
16
16
  toBytes(bytename: string): Uint8Array<ArrayBuffer>;
17
17
  toHex(bytename: string): string;
18
18
  fromHex(hex: string, options?: Partial<BytenameOptions>): string;
19
- /** @deprecated renamed to `fromBytes` */
20
- string(bytes: Uint8Array, options?: Partial<BytenameOptions>): string;
21
- /** @deprecated renamed to `toBytes` */
22
- bytes(bytename: string): Uint8Array<ArrayBuffer>;
23
- /** @deprecated renamed to `toHex` */
24
- hex(bytename: string): string;
25
19
  };
@@ -61,11 +61,5 @@ export const Bytename = {
61
61
  fromHex(hex, options) {
62
62
  return Bytename.fromBytes(Hex.bytes(hex), options);
63
63
  },
64
- /** @deprecated renamed to `fromBytes` */
65
- string(bytes, options = {}) { return Bytename.fromBytes(bytes, options); },
66
- /** @deprecated renamed to `toBytes` */
67
- bytes(bytename) { return Bytename.toBytes(bytename); },
68
- /** @deprecated renamed to `toHex` */
69
- hex(bytename) { return Bytename.toHex(bytename); },
70
64
  };
71
65
  //# sourceMappingURL=bytename.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bytename.js","sourceRoot":"","sources":["../../../s/data/bytename/bytename.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bytename.js","sourceRoot":"","sources":["../../../s/data/bytename/bytename.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,31 @@
1
1
  export type ThumbprintOptions = {
2
2
  delimiter: string;
3
- sigilDelimiter: string;
4
- sigilByteCount: number;
3
+ sigilBytes: number;
4
+ previewBytes: number;
5
5
  };
6
6
  export type ThumbprintData = {
7
7
  bytes: Uint8Array;
8
- sigil: string;
9
- bulk: string;
10
8
  thumbprint: string;
9
+ preview: string;
10
+ bulk: string;
11
+ sigil: string;
11
12
  };
12
13
  /**
13
14
  * Thumbprint is a friendly presentation format for arbitrary binary data.
14
- * - looks like "nodlyn.fasrep.habbud.ralwel::Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
15
- * - the "sigil" is the first bytes that are shown in bytename format
16
- * - the "bulk" is the rest of the data in base58
17
- * - originally designed to be a nice way to present 256-bit ids
18
- * - can actually represent any number of bytes
15
+ * - looks like "nodlyn.fasrep.habbud.ralwel.Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
16
+ * - the preview: "nodlyn.fasrep.habbud.ralwel" (bytename format)
17
+ * - the bulk: "Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ" (base58 format)
18
+ * - the sigil: "nodlyn.fasrep" (shorter part of the bytename)
19
+ * - originally designed to be a nice way to present 256-bit ids, but can actually represent any number of bytes
19
20
  */
20
21
  export declare const Thumbprint: {
21
22
  defaults: ThumbprintOptions;
22
- parse(thumbprint: string): ThumbprintData;
23
+ toBytes(thumbprint: string): Uint8Array<ArrayBuffer>;
24
+ parse(thumbprint: string, options?: Partial<ThumbprintOptions>): ThumbprintData;
23
25
  build: {
24
26
  fromBytes(bytes: Uint8Array, options?: Partial<ThumbprintOptions>): ThumbprintData;
25
27
  fromHex(hex: string, options?: Partial<ThumbprintOptions>): ThumbprintData;
26
28
  };
27
- toBytes(thumbprint: string): Uint8Array<ArrayBufferLike>;
28
29
  toHex(thumbprint: string): string;
29
30
  fromBytes(bytes: Uint8Array, options?: Partial<ThumbprintOptions>): string;
30
31
  fromHex(hex: string, options?: Partial<ThumbprintOptions>): string;
@@ -3,61 +3,60 @@ import { Base58 } from "../base58.js";
3
3
  import { Bytename } from "./bytename.js";
4
4
  /**
5
5
  * Thumbprint is a friendly presentation format for arbitrary binary data.
6
- * - looks like "nodlyn.fasrep.habbud.ralwel::Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
7
- * - the "sigil" is the first bytes that are shown in bytename format
8
- * - the "bulk" is the rest of the data in base58
9
- * - originally designed to be a nice way to present 256-bit ids
10
- * - can actually represent any number of bytes
6
+ * - looks like "nodlyn.fasrep.habbud.ralwel.Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ"
7
+ * - the preview: "nodlyn.fasrep.habbud.ralwel" (bytename format)
8
+ * - the bulk: "Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ" (base58 format)
9
+ * - the sigil: "nodlyn.fasrep" (shorter part of the bytename)
10
+ * - originally designed to be a nice way to present 256-bit ids, but can actually represent any number of bytes
11
11
  */
12
12
  export const Thumbprint = {
13
13
  defaults: {
14
- delimiter: "::",
15
- sigilDelimiter: ".",
16
- sigilByteCount: 6,
14
+ delimiter: ".",
15
+ sigilBytes: 4,
16
+ previewBytes: 8,
17
17
  },
18
- parse(thumbprint) {
18
+ toBytes(thumbprint) {
19
19
  thumbprint = thumbprint.trim();
20
- const parts = thumbprint.split(/[^a-zA-Z0-9]+/m)
20
+ const beans = thumbprint.split(/[^a-zA-Z0-9]+/m)
21
21
  .filter(Boolean)
22
22
  .map(s => s.trim());
23
- if (parts.length < 2) {
24
- const sigil = parts.join(".");
25
- const bytes = Bytename.toBytes(sigil);
26
- return { bytes, sigil, bulk: "", thumbprint };
27
- }
28
- const bulk = parts.pop();
29
- const sigil = parts.join(".");
30
- const bytes = new Uint8Array([
31
- ...Bytename.toBytes(sigil),
23
+ if (beans.length < 2)
24
+ return Bytename.toBytes(beans.join(""));
25
+ const bulk = beans.pop();
26
+ const preview = beans.join("");
27
+ return new Uint8Array([
28
+ ...Bytename.toBytes(preview),
32
29
  ...Base58.bytes(bulk),
33
30
  ]);
34
- return { bytes, sigil, bulk, thumbprint };
31
+ },
32
+ parse(thumbprint, options) {
33
+ const bytes = Thumbprint.toBytes(thumbprint);
34
+ return Thumbprint.build.fromBytes(bytes, options);
35
35
  },
36
36
  build: {
37
37
  fromBytes(bytes, options = {}) {
38
- const { sigilByteCount, sigilDelimiter, delimiter } = { ...Thumbprint.defaults, ...options };
39
- const sigil = (bytes.length > 0)
40
- ? Bytename.fromBytes(bytes.slice(0, sigilByteCount), {
41
- wordSeparator: sigilDelimiter,
42
- groupSeparator: sigilDelimiter,
38
+ const { delimiter, previewBytes, sigilBytes } = { ...Thumbprint.defaults, ...options };
39
+ const yoink = (b) => (bytes.length > 0)
40
+ ? Bytename.fromBytes(bytes.slice(0, b), {
41
+ wordSeparator: delimiter,
42
+ groupSeparator: delimiter,
43
43
  })
44
44
  : "";
45
- const bulk = (bytes.length > sigilByteCount)
46
- ? Base58.string(bytes.slice(sigilByteCount))
45
+ const sigil = yoink(sigilBytes);
46
+ const preview = yoink(previewBytes);
47
+ const bulk = (bytes.length > previewBytes)
48
+ ? Base58.string(bytes.slice(previewBytes))
47
49
  : "";
48
- const thumbprint = [sigil, bulk]
50
+ const thumbprint = [preview, bulk]
49
51
  .filter(s => s.length > 0)
50
52
  .join(delimiter);
51
- return { bytes, sigil, bulk, thumbprint };
53
+ return { bytes, thumbprint, preview, bulk, sigil };
52
54
  },
53
55
  fromHex(hex, options) {
54
56
  const bytes = Hex.bytes(hex);
55
57
  return Thumbprint.build.fromBytes(bytes, options);
56
58
  },
57
59
  },
58
- toBytes(thumbprint) {
59
- return Thumbprint.parse(thumbprint).bytes;
60
- },
61
60
  toHex(thumbprint) {
62
61
  const bytes = Thumbprint.toBytes(thumbprint);
63
62
  return Hex.string(bytes);
@@ -1 +1 @@
1
- {"version":3,"file":"thumbprint.js","sourceRoot":"","sources":["../../../s/data/bytename/thumbprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thumbprint.js","sourceRoot":"","sources":["../../../s/data/bytename/thumbprint.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Science, test, expect } from "@e280/science";
2
2
  import { Hex } from "../hex.js";
3
3
  import { Bytes } from "../bytes.js";
4
4
  import { Thumbprint } from "./thumbprint.js";
5
- const sampleThumbprint = "nodlyn.fasrep.habbud::5QQkszJKjJY3mbFns7FDSJ7a43gbkj93wt88";
5
+ const sampleThumbprint = "nodlyn.fasrep.habbud.ralwel.Avo7gFmdWMRHkwsD149mcaBoZdS69iXuJ";
6
6
  const sampleHex = "88e8c3fad1028fcf6ce5ac491578850f4d833336feca03b608265501c3019d59";
7
7
  const sampleBytes = Hex.bytes(sampleHex);
8
8
  function good(bytes) {
@@ -1 +1 @@
1
- {"version":3,"file":"thumbprint.test.js","sourceRoot":"","sources":["../../../s/data/bytename/thumbprint.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thumbprint.test.js","sourceRoot":"","sources":["../../../s/data/bytename/thumbprint.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** a promise which can be resolved from the outside */
2
- export type DeferredPromise<R> = {
2
+ export type Deferred<R> = {
3
3
  promise: Promise<R>;
4
4
  resolve: (result: R) => void;
5
5
  reject: (reason: any) => void;
@@ -7,4 +7,4 @@ export type DeferredPromise<R> = {
7
7
  entangle: (outsidePromise: Promise<R>) => Promise<R>;
8
8
  };
9
9
  /** returns a deferred promise with exposed resolve and reject fns */
10
- export declare function deferPromise<R>(): DeferredPromise<R>;
10
+ export declare function defer<R>(): Deferred<R>;
@@ -1,5 +1,5 @@
1
1
  /** returns a deferred promise with exposed resolve and reject fns */
2
- export function deferPromise() {
2
+ export function defer() {
3
3
  let resolve;
4
4
  let reject;
5
5
  const promise = new Promise((res, rej) => {
@@ -12,4 +12,4 @@ export function deferPromise() {
12
12
  }
13
13
  return { promise, resolve, reject, entangle };
14
14
  }
15
- //# sourceMappingURL=defer-promise.js.map
15
+ //# sourceMappingURL=defer.js.map
package/x/defer.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defer.js","sourceRoot":"","sources":["../s/defer.ts"],"names":[],"mappings":"AAWA,qEAAqE;AACrE,MAAM,UAAU,KAAK;IACpB,IAAI,OAA6B,CAAA;IACjC,IAAI,MAA8B,CAAA;IAElC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,OAAO,GAAG,GAAG,CAAA;QACb,MAAM,GAAG,GAAG,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,SAAS,QAAQ,CAAC,OAAmB;QACpC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,OAAO,CAAA;IACf,CAAC;IAED,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAA;AAC5C,CAAC"}
package/x/drill.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- /**
2
- * return a value within an object tree, found at the given path.
3
- */
1
+ /** return a value within an object tree, found at the given path. */
4
2
  export declare function drill<xResult>(object: {
5
3
  [key: string]: any;
6
4
  }, path: string[]): xResult;
package/x/drill.js CHANGED
@@ -1,12 +1,10 @@
1
1
  import { is } from "./is.js";
2
- /**
3
- * return a value within an object tree, found at the given path.
4
- */
2
+ /** return a value within an object tree, found at the given path. */
5
3
  export function drill(object, path) {
6
4
  let current = object;
7
5
  for (const key of path) {
8
6
  current = current[key];
9
- if (is.unavailable(current))
7
+ if (is.unset(current))
10
8
  break;
11
9
  }
12
10
  return current;
package/x/drill.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"drill.js","sourceRoot":"","sources":["../s/drill.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,SAAS,CAAA;AAE1B;;GAEG;AACH,MAAM,UAAU,KAAK,CACnB,MAA4B,EAC5B,IAAc;IAGf,IAAI,OAAO,GAAQ,MAAM,CAAA;IAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;YAC1B,MAAK;IACP,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"drill.js","sourceRoot":"","sources":["../s/drill.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAC,MAAM,SAAS,CAAA;AAE1B,qEAAqE;AACrE,MAAM,UAAU,KAAK,CACnB,MAA4B,EAC5B,IAAc;IAGf,IAAI,OAAO,GAAQ,MAAM,CAAA;IAEzB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YACpB,MAAK;IACP,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare class IdCounter {
2
+ count: number;
3
+ constructor(count?: number);
4
+ next(): number;
5
+ }
@@ -0,0 +1,10 @@
1
+ export class IdCounter {
2
+ count;
3
+ constructor(count = 0) {
4
+ this.count = count;
5
+ }
6
+ next() {
7
+ return this.count++;
8
+ }
9
+ }
10
+ //# sourceMappingURL=id-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-counter.js","sourceRoot":"","sources":["../s/id-counter.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,SAAS;IACF;IAAnB,YAAmB,QAAQ,CAAC;QAAT,UAAK,GAAL,KAAK,CAAI;IAAG,CAAC;IAEhC,IAAI;QACH,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACD"}
package/x/index.d.ts CHANGED
@@ -12,10 +12,11 @@ export * from "./coalesce.js";
12
12
  export * from "./concurrent.js";
13
13
  export * from "./deadline.js";
14
14
  export * from "./dedupe.js";
15
- export * from "./defer-promise.js";
15
+ export * from "./defer.js";
16
16
  export * from "./drill.js";
17
17
  export * from "./escape-regex.js";
18
18
  export * from "./hat.js";
19
+ export * from "./id-counter.js";
19
20
  export * from "./is.js";
20
21
  export * from "./loopy.js";
21
22
  export * from "./map-g.js";
package/x/index.js CHANGED
@@ -12,10 +12,11 @@ export * from "./coalesce.js";
12
12
  export * from "./concurrent.js";
13
13
  export * from "./deadline.js";
14
14
  export * from "./dedupe.js";
15
- export * from "./defer-promise.js";
15
+ export * from "./defer.js";
16
16
  export * from "./drill.js";
17
17
  export * from "./escape-regex.js";
18
18
  export * from "./hat.js";
19
+ export * from "./id-counter.js";
19
20
  export * from "./is.js";
20
21
  export * from "./loopy.js";
21
22
  export * from "./map-g.js";
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
package/x/is.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- export declare const is: {
2
- available: <X>(x: X) => x is NonNullable<X>;
3
- unavailable: (x: any) => x is (undefined | null);
1
+ export declare const is: Readonly<{
2
+ set: <X>(x: X) => x is NonNullable<X>;
3
+ unset: (x: any) => x is (undefined | null);
4
4
  boolean: (x: any) => x is boolean;
5
5
  number: (x: any) => x is number;
6
6
  string: (x: any) => x is string;
7
7
  bigint: (x: any) => x is bigint;
8
8
  object: <X>(x: X) => x is object & NonNullable<X>;
9
9
  array: (x: any | any[]) => x is any[];
10
- };
10
+ fn: (x: any) => x is (...a: any[]) => any;
11
+ symbol: (x: any) => x is symbol;
12
+ }>;
package/x/is.js CHANGED
@@ -1,11 +1,13 @@
1
- export const is = {
2
- available: (x) => x !== undefined && x !== null,
3
- unavailable: (x) => x === undefined || x === null,
1
+ export const is = Object.freeze({
2
+ set: (x) => x !== undefined && x !== null,
3
+ unset: (x) => x === undefined || x === null,
4
4
  boolean: (x) => typeof x === "boolean",
5
5
  number: (x) => typeof x === "number",
6
6
  string: (x) => typeof x === "string",
7
7
  bigint: (x) => typeof x === "bigint",
8
8
  object: (x) => typeof x === "object" && x !== null,
9
9
  array: (x) => Array.isArray(x),
10
- };
10
+ fn: (x) => typeof x === "function",
11
+ symbol: (x) => typeof x === "symbol",
12
+ });
11
13
  //# sourceMappingURL=is.js.map
package/x/is.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"is.js","sourceRoot":"","sources":["../s/is.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,EAAE,GAAG;IACjB,SAAS,EAAE,CAAI,CAAI,EAAuB,EAAE,CAC3C,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;IAE9B,WAAW,EAAE,CAAC,CAAM,EAA2B,EAAE,CAChD,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;IAE9B,OAAO,EAAE,CAAC,CAAM,EAAgB,EAAE,CACjC,OAAO,CAAC,KAAK,SAAS;IAEvB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;IAEtB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;IAEtB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;IAEtB,MAAM,EAAE,CAAI,CAAI,EAAgC,EAAE,CACjD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;IAEpC,KAAK,EAAE,CAAC,CAAc,EAAc,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CACjB,CAAA"}
1
+ {"version":3,"file":"is.js","sourceRoot":"","sources":["../s/is.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE,CAAI,CAAI,EAAuB,EAAE,CACrC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;IAE9B,KAAK,EAAE,CAAC,CAAM,EAA2B,EAAE,CAC1C,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;IAE9B,OAAO,EAAE,CAAC,CAAM,EAAgB,EAAE,CACjC,OAAO,CAAC,KAAK,SAAS;IAEvB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;IAEtB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;IAEtB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;IAEtB,MAAM,EAAE,CAAI,CAAI,EAAgC,EAAE,CACjD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;IAEpC,KAAK,EAAE,CAAC,CAAc,EAAc,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjB,EAAE,EAAE,CAAC,CAAM,EAA6B,EAAE,CACzC,OAAO,CAAC,KAAK,UAAU;IAExB,MAAM,EAAE,CAAC,CAAM,EAAe,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ;CACtB,CAAC,CAAA"}
package/x/map-g.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- /** js map, but with handy methods like `require` and `guarantee` */
1
+ /** extended js map with handy methods like `require` and `guarantee` */
2
2
  export declare class MapG<K, V> extends Map<K, V> {
3
- static require<K, V>(map: Map<K, V>, key: K): V & ({} | null);
3
+ static require<K, V>(map: Map<K, V>, key: K): V;
4
4
  static guarantee<K, V>(map: Map<K, V>, key: K, make: () => V): V;
5
5
  array(): [K, V][];
6
- require(key: K): V & ({} | null);
6
+ require(key: K): V;
7
7
  guarantee(key: K, make: () => V): V;
8
8
  }
9
9
  export type Identifiable<Id = any> = {
package/x/map-g.js CHANGED
@@ -1,4 +1,4 @@
1
- /** js map, but with handy methods like `require` and `guarantee` */
1
+ /** extended js map with handy methods like `require` and `guarantee` */
2
2
  export class MapG extends Map {
3
3
  static require(map, key) {
4
4
  const value = map.get(key);
package/x/map-g.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"map-g.js","sourceRoot":"","sources":["../s/map-g.ts"],"names":[],"mappings":"AACA,oEAAoE;AACpE,MAAM,OAAO,IAAW,SAAQ,GAAS;IACxC,MAAM,CAAC,OAAO,CAAO,GAAc,EAAE,GAAM;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAA;QACpD,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,SAAS,CAAO,GAAc,EAAE,GAAM,EAAE,IAAa;QAC3D,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAExB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,GAAG,IAAI,EAAE,CAAA;YACd,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,KAAK;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,SAAS,CAAC,GAAM,EAAE,IAAa;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;CACD;AAID,oDAAoD;AACpD,MAAM,OAAO,KAA8B,SAAQ,IAAgB;IAClE,GAAG,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG,CAAC,KAAQ;QACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACzB,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAQ;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;CACD"}
1
+ {"version":3,"file":"map-g.js","sourceRoot":"","sources":["../s/map-g.ts"],"names":[],"mappings":"AACA,wEAAwE;AACxE,MAAM,OAAO,IAAW,SAAQ,GAAS;IACxC,MAAM,CAAC,OAAO,CAAO,GAAc,EAAE,GAAM;QAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,IAAI,KAAK,KAAK,SAAS;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAA;QACpD,OAAO,KAAU,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,SAAS,CAAO,GAAc,EAAE,GAAM,EAAE,IAAa;QAC3D,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAExB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,GAAG,IAAI,EAAE,CAAA;YACd,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,KAAK,CAAA;IACb,CAAC;IAED,KAAK;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,SAAS,CAAC,GAAM,EAAE,IAAa;QAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;CACD;AAID,oDAAoD;AACpD,MAAM,OAAO,KAA8B,SAAQ,IAAgB;IAClE,GAAG,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED,GAAG,CAAC,KAAQ;QACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACzB,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAQ;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;CACD"}
package/x/nap.d.ts CHANGED
@@ -1 +1,2 @@
1
+ /** create a promise that waits for a number of milliseconds. */
1
2
  export declare const nap: (milliseconds?: number) => Promise<void>;
package/x/nap.js CHANGED
@@ -1,2 +1,3 @@
1
+ /** create a promise that waits for a number of milliseconds. */
1
2
  export const nap = (milliseconds = 0) => (new Promise(resolve => setTimeout(resolve, milliseconds)));
2
3
  //# sourceMappingURL=nap.js.map
package/x/nap.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nap.js","sourceRoot":"","sources":["../s/nap.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,eAAuB,CAAC,EAAE,EAAE,CAAC,CAChD,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAC/D,CAAA"}
1
+ {"version":3,"file":"nap.js","sourceRoot":"","sources":["../s/nap.ts"],"names":[],"mappings":"AACA,gEAAgE;AAChE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,eAAuB,CAAC,EAAE,EAAE,CAAC,CAChD,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAC/D,CAAA"}
package/x/pubsub.d.ts CHANGED
@@ -1,14 +1,24 @@
1
1
  export type Listener<A extends any[]> = (...a: A) => (void | Promise<void>);
2
2
  export interface Xub<A extends any[] = []> {
3
+ /** publish to all subscribed listeners. */
3
4
  pub(...a: A): Promise<void>;
5
+ /** subscribe a listener function. */
4
6
  sub(fn: Listener<A>): () => void;
7
+ /**
8
+ * subscribe a listener function.
9
+ * @alias sub
10
+ */
5
11
  on(fn: Listener<A>): () => void;
12
+ /** subscribe a listener function that unsubscribes itself after being invoked. */
6
13
  once(): Promise<A>;
14
+ /** wipe all listeners attached to this. */
7
15
  clear(): void;
8
16
  }
17
+ /** subscriber fn that can be published to. */
9
18
  export interface Sub<A extends any[] = []> extends Xub<A> {
10
19
  (fn: Listener<A>): () => void;
11
20
  }
21
+ /** publisher fn that can be published to. */
12
22
  export interface Pub<A extends any[] = []> extends Xub<A> {
13
23
  (...a: A): Promise<void>;
14
24
  }
package/x/pubsub.js CHANGED
@@ -1,4 +1,4 @@
1
- import { deferPromise } from "./defer-promise.js";
1
+ import { defer } from "./defer.js";
2
2
  export function xub() {
3
3
  const set = new Set();
4
4
  function sub(fn) {
@@ -9,7 +9,7 @@ export function xub() {
9
9
  await Promise.all([...set].map(fn => fn(...a)));
10
10
  }
11
11
  async function once() {
12
- const { promise, resolve } = deferPromise();
12
+ const { promise, resolve } = defer();
13
13
  const unsubscribe = sub((...a) => {
14
14
  resolve(a);
15
15
  unsubscribe();
package/x/pubsub.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../s/pubsub.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAoB/C,MAAM,UAAU,GAAG;IAClB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAA;IAElC,SAAS,GAAG,CAAC,EAAe;QAC3B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACX,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,UAAU,GAAG,CAAC,GAAG,CAAI;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,IAAI;QAClB,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,YAAY,EAAK,CAAA;QAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,CAAC,CAAA;YACV,WAAW,EAAE,CAAA;QACd,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IACf,CAAC;IAED,SAAS,KAAK;QACb,GAAG,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;IACZ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;IACZ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAqB,CAAA;AACtC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAuB,QAAsB;IAC/D,MAAM,EAAE,GAAG,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,QAAQ;QACX,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjB,OAAO,EAAE,CAAA;AACV,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAuB,QAAsB;IAC/D,MAAM,EAAE,GAAG,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,QAAQ;QACX,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjB,OAAO,EAAE,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../s/pubsub.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAmChC,MAAM,UAAU,GAAG;IAClB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAA;IAElC,SAAS,GAAG,CAAC,EAAe;QAC3B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACX,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,UAAU,GAAG,CAAC,GAAG,CAAI;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,IAAI;QAClB,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,KAAK,EAAK,CAAA;QACrC,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,CAAC,CAAA;YACV,WAAW,EAAE,CAAA;QACd,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAA;IACf,CAAC;IAED,SAAS,KAAK;QACb,GAAG,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;IACZ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACb,GAAG,CAAC,EAAE,GAAG,GAAG,CAAA;IACZ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAqB,CAAA;AACtC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAuB,QAAsB;IAC/D,MAAM,EAAE,GAAG,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,QAAQ;QACX,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjB,OAAO,EAAE,CAAA;AACV,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,GAAG,CAAuB,QAAsB;IAC/D,MAAM,EAAE,GAAG,GAAG,EAAK,CAAC,CAAC,CAAC,CAAA;IACtB,IAAI,QAAQ;QACX,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACjB,OAAO,EAAE,CAAA;AACV,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"defer-promise.js","sourceRoot":"","sources":["../s/defer-promise.ts"],"names":[],"mappings":"AAWA,qEAAqE;AACrE,MAAM,UAAU,YAAY;IAC3B,IAAI,OAA6B,CAAA;IACjC,IAAI,MAA8B,CAAA;IAElC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,OAAO,GAAG,GAAG,CAAA;QACb,MAAM,GAAG,GAAG,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,SAAS,QAAQ,CAAC,OAAmB;QACpC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,OAAO,CAAA;IACf,CAAC;IAED,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAA;AAC5C,CAAC"}