@e280/stz 0.0.0-8 → 0.0.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 (148) hide show
  1. package/README.md +275 -24
  2. package/package.json +13 -9
  3. package/s/coalesce.ts +1 -0
  4. package/s/constructor.ts +15 -0
  5. package/s/data/base-x.ts +170 -0
  6. package/s/data/base58.ts +15 -5
  7. package/s/data/base64.ts +15 -6
  8. package/s/data/base64url.ts +15 -6
  9. package/s/data/bytename/bytename.test.ts +12 -12
  10. package/s/data/bytename/bytename.ts +13 -6
  11. package/s/data/bytename/index.ts +1 -1
  12. package/s/data/bytename/thumbprint.test.ts +53 -0
  13. package/s/data/bytename/thumbprint.ts +112 -0
  14. package/s/data/bytes.ts +2 -2
  15. package/s/data/data.test.ts +98 -0
  16. package/s/data/hex.ts +15 -5
  17. package/s/data/txt.ts +14 -4
  18. package/s/deadline.ts +5 -6
  19. package/s/{defer-promise.ts → defer.ts} +2 -2
  20. package/s/drill.ts +2 -4
  21. package/s/ev.ts +20 -0
  22. package/s/id-counter.ts +9 -0
  23. package/s/index.ts +12 -1
  24. package/s/is.ts +10 -4
  25. package/s/map-g.ts +9 -10
  26. package/s/nap.ts +1 -0
  27. package/s/once.ts +14 -0
  28. package/s/pipe.ts +7 -8
  29. package/s/pubsub.ts +24 -6
  30. package/s/queue/queue.test.ts +67 -0
  31. package/s/queue/queue.ts +21 -0
  32. package/s/repeat.ts +25 -0
  33. package/s/scope.ts +108 -0
  34. package/s/templating.ts +22 -0
  35. package/s/tests.test.ts +14 -10
  36. package/s/time.ts +22 -0
  37. package/x/coalesce.d.ts +1 -0
  38. package/x/coalesce.js +1 -0
  39. package/x/coalesce.js.map +1 -1
  40. package/x/constructor.d.ts +3 -0
  41. package/x/constructor.js +4 -0
  42. package/x/constructor.js.map +1 -0
  43. package/x/data/base-x.d.ts +47 -0
  44. package/x/data/base-x.js +147 -0
  45. package/x/data/base-x.js.map +1 -0
  46. package/x/data/base58.d.ts +5 -1
  47. package/x/data/base58.js +13 -5
  48. package/x/data/base58.js.map +1 -1
  49. package/x/data/base64.d.ts +7 -3
  50. package/x/data/base64.js +13 -5
  51. package/x/data/base64.js.map +1 -1
  52. package/x/data/base64url.d.ts +5 -1
  53. package/x/data/base64url.js +13 -5
  54. package/x/data/base64url.js.map +1 -1
  55. package/x/data/bytename/bytename.d.ts +9 -3
  56. package/x/data/bytename/bytename.js +13 -6
  57. package/x/data/bytename/bytename.js.map +1 -1
  58. package/x/data/bytename/bytename.test.js +12 -12
  59. package/x/data/bytename/bytename.test.js.map +1 -1
  60. package/x/data/bytename/index.d.ts +1 -1
  61. package/x/data/bytename/index.js +1 -1
  62. package/x/data/bytename/index.js.map +1 -1
  63. package/x/data/bytename/thumbprint.d.ts +36 -0
  64. package/x/data/bytename/thumbprint.js +79 -0
  65. package/x/data/bytename/thumbprint.js.map +1 -0
  66. package/x/data/bytename/{badge.test.d.ts → thumbprint.test.d.ts} +2 -2
  67. package/x/data/bytename/thumbprint.test.js +45 -0
  68. package/x/data/bytename/thumbprint.test.js.map +1 -0
  69. package/x/data/bytes.d.ts +2 -2
  70. package/x/data/bytes.js +2 -2
  71. package/x/data/bytes.js.map +1 -1
  72. package/x/data/data.test.d.ts +69 -0
  73. package/x/data/data.test.js +77 -0
  74. package/x/data/data.test.js.map +1 -0
  75. package/x/data/hex.d.ts +8 -4
  76. package/x/data/hex.js +13 -5
  77. package/x/data/hex.js.map +1 -1
  78. package/x/data/txt.d.ts +6 -2
  79. package/x/data/txt.js +12 -4
  80. package/x/data/txt.js.map +1 -1
  81. package/x/deadline.d.ts +2 -2
  82. package/x/deadline.js +4 -4
  83. package/x/deadline.js.map +1 -1
  84. package/x/{defer-promise.d.ts → defer.d.ts} +2 -2
  85. package/x/{defer-promise.js → defer.js} +2 -2
  86. package/x/defer.js.map +1 -0
  87. package/x/drill.d.ts +1 -3
  88. package/x/drill.js +2 -4
  89. package/x/drill.js.map +1 -1
  90. package/x/ev.d.ts +6 -0
  91. package/x/ev.js +10 -0
  92. package/x/ev.js.map +1 -0
  93. package/x/id-counter.d.ts +5 -0
  94. package/x/id-counter.js +10 -0
  95. package/x/id-counter.js.map +1 -0
  96. package/x/index.d.ts +11 -1
  97. package/x/index.js +11 -1
  98. package/x/index.js.map +1 -1
  99. package/x/is.d.ts +6 -4
  100. package/x/is.js +6 -4
  101. package/x/is.js.map +1 -1
  102. package/x/map-g.d.ts +3 -3
  103. package/x/map-g.js +9 -8
  104. package/x/map-g.js.map +1 -1
  105. package/x/nap.d.ts +1 -0
  106. package/x/nap.js +1 -0
  107. package/x/nap.js.map +1 -1
  108. package/x/once.d.ts +1 -0
  109. package/x/once.js +12 -0
  110. package/x/once.js.map +1 -0
  111. package/x/pipe.d.ts +3 -3
  112. package/x/pipe.js +5 -5
  113. package/x/pipe.js.map +1 -1
  114. package/x/pubsub.d.ts +12 -1
  115. package/x/pubsub.js +7 -5
  116. package/x/pubsub.js.map +1 -1
  117. package/x/queue/queue.d.ts +4 -0
  118. package/x/queue/queue.js +14 -0
  119. package/x/queue/queue.js.map +1 -0
  120. package/x/queue/queue.test.d.ts +8 -0
  121. package/x/queue/queue.test.js +57 -0
  122. package/x/queue/queue.test.js.map +1 -0
  123. package/x/repeat.d.ts +5 -0
  124. package/x/repeat.js +23 -0
  125. package/x/repeat.js.map +1 -0
  126. package/x/scope.d.ts +37 -0
  127. package/x/scope.js +82 -0
  128. package/x/scope.js.map +1 -0
  129. package/x/templating.d.ts +6 -0
  130. package/x/templating.js +11 -0
  131. package/x/templating.js.map +1 -0
  132. package/x/tests.test.js +14 -10
  133. package/x/tests.test.js.map +1 -1
  134. package/x/time.d.ts +18 -0
  135. package/x/time.js +19 -0
  136. package/x/time.js.map +1 -0
  137. package/s/data/anka.ts +0 -66
  138. package/s/data/bytename/badge.test.ts +0 -53
  139. package/s/data/bytename/badge.ts +0 -81
  140. package/x/data/anka.d.ts +0 -5
  141. package/x/data/anka.js +0 -53
  142. package/x/data/anka.js.map +0 -1
  143. package/x/data/bytename/badge.d.ts +0 -27
  144. package/x/data/bytename/badge.js +0 -57
  145. package/x/data/bytename/badge.js.map +0 -1
  146. package/x/data/bytename/badge.test.js +0 -45
  147. package/x/data/bytename/badge.test.js.map +0 -1
  148. package/x/defer-promise.js.map +0 -1
@@ -0,0 +1,77 @@
1
+ import { Science, test, expect } from "@e280/science";
2
+ import { ob } from "../ob.js";
3
+ import { Txt } from "./txt.js";
4
+ import { Hex } from "./hex.js";
5
+ import { Bytes } from "./bytes.js";
6
+ import { BaseX } from "./base-x.js";
7
+ import { Base58 } from "./base58.js";
8
+ import { Base64 } from "./base64.js";
9
+ import { Base64url } from "./base64url.js";
10
+ const sampleBytes = Hex.toBytes("9960cd633a46acfe8307d8a400e842da0d930a75fb8188e0f5da264e4b6b4e5b");
11
+ function testBytes(util) {
12
+ return async () => {
13
+ const string = util.fromBytes(sampleBytes);
14
+ const recreated = util.toBytes(string);
15
+ expect(Bytes.eq(sampleBytes, recreated)).ok();
16
+ };
17
+ }
18
+ function testNumbers(util) {
19
+ return {
20
+ positive: async () => {
21
+ const original = 123456789;
22
+ const string = util.fromInteger(original);
23
+ const recreated = util.toInteger(string);
24
+ expect(original).is(recreated);
25
+ expect(util.toInteger("")).is(0);
26
+ },
27
+ negative: async () => {
28
+ const original = -123456789;
29
+ const string = util.fromInteger(original);
30
+ const recreated = util.toInteger(string);
31
+ expect(original).is(recreated);
32
+ expect(util.toInteger("")).is(0);
33
+ },
34
+ };
35
+ }
36
+ function testBoth(util) {
37
+ return {
38
+ bytes: testBytes(util),
39
+ numbers: testNumbers(util),
40
+ };
41
+ }
42
+ function testCompat(alpha, bravo) {
43
+ return async () => {
44
+ expect(alpha.fromBytes(sampleBytes))
45
+ .is(bravo.fromBytes(sampleBytes));
46
+ };
47
+ }
48
+ export default Science.suite({
49
+ "Base58": testBytes(Base58),
50
+ "Base64": testBytes(Base64),
51
+ "Base64url": testBytes(Base64url),
52
+ "Hex": testBytes(Hex),
53
+ "Txt": test(async () => {
54
+ const original = `build or die. 💻>☠️ 命火工`;
55
+ const bytes = Txt.toBytes(original);
56
+ const recreated = Txt.fromBytes(bytes);
57
+ expect(original).is(recreated);
58
+ }),
59
+ "BaseX": Science.suite({
60
+ lexicons: Science.suite(ob(BaseX.lexicons).map(lex => testBoth(new BaseX(lex)))),
61
+ compat: Science.suite({
62
+ "Hex": testCompat(Hex, new BaseX(BaseX.lexicons.hex)),
63
+ "Base64": testCompat(Base64, new BaseX(BaseX.lexicons.base64)),
64
+ "Base64url": testCompat(Base64url, new BaseX(BaseX.lexicons.base64url)),
65
+ }),
66
+ "base64 has padding": test(async () => {
67
+ const s = new BaseX(BaseX.lexicons.base64).fromBytes(sampleBytes);
68
+ expect(s.endsWith("=")).ok();
69
+ }),
70
+ "antagonistic base64 positive integer": test(async () => {
71
+ const base64url = new BaseX(BaseX.lexicons.base64url);
72
+ expect(base64url.toInteger(base64url.fromInteger(62))).is(62);
73
+ expect(base64url.toInteger(base64url.fromInteger(4030))).is(4030);
74
+ }),
75
+ }),
76
+ });
77
+ //# sourceMappingURL=data.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.test.js","sourceRoot":"","sources":["../../s/data/data.test.ts"],"names":[],"mappings":"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"}
package/x/data/hex.d.ts CHANGED
@@ -1,6 +1,10 @@
1
- export declare const Hex: {
2
- string(bytes: Uint8Array): string;
3
- bytes(string: string): Uint8Array<ArrayBuffer>;
1
+ export declare const Hex: Readonly<{
2
+ fromBytes(bytes: Uint8Array): string;
3
+ toBytes(string: string): Uint8Array<ArrayBuffer>;
4
4
  /** generate a random hex string. byteCount defaults to 32. */
5
5
  random(byteCount?: number): string;
6
- };
6
+ /** @deprecated renamed to `fromBytes` */
7
+ string(bytes: Uint8Array): string;
8
+ /** @deprecated renamed to `toBytes` */
9
+ bytes(string: string): Uint8Array<ArrayBuffer>;
10
+ }>;
package/x/data/hex.js CHANGED
@@ -8,13 +8,13 @@
8
8
 
9
9
  */
10
10
  import { Bytes } from "./bytes.js";
11
- export const Hex = {
12
- string(bytes) {
11
+ export const Hex = Object.freeze({
12
+ fromBytes(bytes) {
13
13
  return [...bytes]
14
14
  .map(byte => byte.toString(16).padStart(2, "0"))
15
15
  .join("");
16
16
  },
17
- bytes(string) {
17
+ toBytes(string) {
18
18
  if (string.length % 2 !== 0)
19
19
  throw new Error("must have even number of hex characters");
20
20
  const bytes = new Uint8Array(string.length / 2);
@@ -24,7 +24,15 @@ export const Hex = {
24
24
  },
25
25
  /** generate a random hex string. byteCount defaults to 32. */
26
26
  random(byteCount = 32) {
27
- return this.string(Bytes.random(byteCount));
27
+ return this.fromBytes(Bytes.random(byteCount));
28
+ },
29
+ /** @deprecated renamed to `fromBytes` */
30
+ string(bytes) {
31
+ return Hex.fromBytes(bytes);
32
+ },
33
+ /** @deprecated renamed to `toBytes` */
34
+ bytes(string) {
35
+ return Hex.toBytes(string);
28
36
  },
29
- };
37
+ });
30
38
  //# sourceMappingURL=hex.js.map
package/x/data/hex.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../s/data/hex.ts"],"names":[],"mappings":"AACA;;;;;;;;EAQE;AAEF,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,CAAC,MAAM,GAAG,GAAG;IAClB,MAAM,CAAC,KAAiB;QACvB,OAAO,CAAC,GAAG,KAAK,CAAC;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YACxC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpD,OAAO,KAAK,CAAA;IACb,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,SAAS,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5C,CAAC;CACD,CAAA"}
1
+ {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../s/data/hex.ts"],"names":[],"mappings":"AACA;;;;;;;;EAQE;AAEF,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,SAAS,CAAC,KAAiB;QAC1B,OAAO,CAAC,GAAG,KAAK,CAAC;aACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAA;IACX,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC3D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YACxC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpD,OAAO,KAAK,CAAA;IACb,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,SAAS,GAAG,EAAE;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,KAAiB;QACvB,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,MAAc;QACnB,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;CACD,CAAC,CAAA"}
package/x/data/txt.d.ts CHANGED
@@ -1,4 +1,8 @@
1
- export declare const Txt: {
1
+ export declare const Txt: Readonly<{
2
+ fromBytes(bytes: Uint8Array): string;
3
+ toBytes(string: string): Uint8Array<ArrayBufferLike>;
4
+ /** @deprecated renamed to `fromBytes` */
2
5
  string(bytes: Uint8Array): string;
6
+ /** @deprecated renamed to `toBytes` */
3
7
  bytes(string: string): Uint8Array<ArrayBufferLike>;
4
- };
8
+ }>;
package/x/data/txt.js CHANGED
@@ -1,9 +1,17 @@
1
- export const Txt = {
2
- string(bytes) {
1
+ export const Txt = Object.freeze({
2
+ fromBytes(bytes) {
3
3
  return new TextDecoder().decode(bytes);
4
4
  },
5
- bytes(string) {
5
+ toBytes(string) {
6
6
  return new TextEncoder().encode(string);
7
7
  },
8
- };
8
+ /** @deprecated renamed to `fromBytes` */
9
+ string(bytes) {
10
+ return Txt.fromBytes(bytes);
11
+ },
12
+ /** @deprecated renamed to `toBytes` */
13
+ bytes(string) {
14
+ return Txt.toBytes(string);
15
+ },
16
+ });
9
17
  //# sourceMappingURL=txt.js.map
package/x/data/txt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"txt.js","sourceRoot":"","sources":["../../s/data/txt.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,GAAG,GAAG;IAClB,MAAM,CAAC,KAAiB;QACvB,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;CACD,CAAA"}
1
+ {"version":3,"file":"txt.js","sourceRoot":"","sources":["../../s/data/txt.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,SAAS,CAAC,KAAiB;QAC1B,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACxC,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,KAAiB;QACvB,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,MAAc;QACnB,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;CACD,CAAC,CAAA"}
package/x/deadline.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export declare class DeadlineError extends Error {
2
2
  milliseconds: number;
3
3
  name: string;
4
- constructor(milliseconds: number, message: string);
4
+ constructor(milliseconds: number);
5
5
  }
6
6
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
7
- export declare function deadline<R>(milliseconds: number, message: string, fn: () => Promise<R>): Promise<R>;
7
+ export declare function deadline<R>(milliseconds: number, fn: () => Promise<R>): Promise<R>;
package/x/deadline.js CHANGED
@@ -1,17 +1,17 @@
1
1
  export class DeadlineError extends Error {
2
2
  milliseconds;
3
3
  name = this.constructor.name;
4
- constructor(milliseconds, message) {
5
- super(`${message}, timed out in ${(milliseconds / 1000).toFixed(1)} seconds`);
4
+ constructor(milliseconds) {
5
+ super(`deadline exceeded (${(milliseconds / 1000).toFixed(1)} seconds)`);
6
6
  this.milliseconds = milliseconds;
7
7
  }
8
8
  }
9
9
  /** set a deadline for a fn to do something, will reject with a `DeadlineError` if it takes too long */
10
- export function deadline(milliseconds, message, fn) {
10
+ export function deadline(milliseconds, fn) {
11
11
  if (milliseconds <= 0 || milliseconds === Infinity)
12
12
  return fn();
13
13
  return new Promise((resolve, reject) => {
14
- const id = setTimeout(() => reject(new DeadlineError(milliseconds, message)), milliseconds);
14
+ const id = setTimeout(() => reject(new DeadlineError(milliseconds)), milliseconds);
15
15
  fn()
16
16
  .then(resolve)
17
17
  .catch(reject)
package/x/deadline.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../s/deadline.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB;IADnB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC5B,YAAmB,YAAoB,EAAE,OAAe;QACvD,KAAK,CAAC,GAAG,OAAO,kBAAkB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAD3D,iBAAY,GAAZ,YAAY,CAAQ;IAEvC,CAAC;CACD;AAED,uGAAuG;AACvG,MAAM,UAAU,QAAQ,CAAI,YAAoB,EAAE,OAAe,EAAE,EAAoB;IACtF,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,KAAK,QAAQ;QACjD,OAAO,EAAE,EAAE,CAAA;IAEZ,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEzC,MAAM,EAAE,GAAG,UAAU,CACpB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EACtD,YAAY,CACZ,CAAA;QAED,EAAE,EAAE;aACF,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,MAAM,CAAC;aACb,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"deadline.js","sourceRoot":"","sources":["../s/deadline.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAEpB;IADnB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC5B,YAAmB,YAAoB;QACtC,KAAK,CAAC,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;QADtD,iBAAY,GAAZ,YAAY,CAAQ;IAEvC,CAAC;CACD;AAED,uGAAuG;AACvG,MAAM,UAAU,QAAQ,CAAI,YAAoB,EAAE,EAAoB;IACrE,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,KAAK,QAAQ;QACjD,OAAO,EAAE,EAAE,CAAA;IAEZ,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,EAAE,GAAG,UAAU,CACpB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,EAC7C,YAAY,CACZ,CAAA;QACD,EAAE,EAAE;aACF,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,MAAM,CAAC;aACb,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACH,CAAC"}
@@ -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 = void> = {
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 = void>(): 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"}
package/x/ev.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export type EvFn = (...a: any[]) => void;
2
+ export type EvTarget<N extends string> = {
3
+ addEventListener(name: N, fn: EvFn): void;
4
+ removeEventListener(name: N, fn: EvFn): void;
5
+ };
6
+ export declare function ev<N extends string>(target: EvTarget<N>, fns: Record<N, EvFn>): () => void;
package/x/ev.js ADDED
@@ -0,0 +1,10 @@
1
+ export function ev(target, fns) {
2
+ const entries = Object.entries(fns);
3
+ for (const [name, fn] of entries)
4
+ target.addEventListener(name, fn);
5
+ return () => {
6
+ for (const [name, fn] of entries)
7
+ target.removeEventListener(name, fn);
8
+ };
9
+ }
10
+ //# sourceMappingURL=ev.js.map
package/x/ev.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ev.js","sourceRoot":"","sources":["../s/ev.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,EAAE,CAAmB,MAAmB,EAAE,GAAoB;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAgB,CAAA;IAElD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO;QAC/B,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAElC,OAAO,GAAG,EAAE;QACX,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO;YAC/B,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACtC,CAAC,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
@@ -1,4 +1,5 @@
1
1
  export * from "./data/bytename/index.js";
2
+ export * from "./data/base-x.js";
2
3
  export * from "./data/base58.js";
3
4
  export * from "./data/base64.js";
4
5
  export * from "./data/base64url.js";
@@ -8,19 +9,28 @@ export * from "./data/txt.js";
8
9
  export * from "./debounce/debounce.js";
9
10
  export * from "./debounce/types.js";
10
11
  export * from "./deep/deep.js";
12
+ export * from "./queue/queue.js";
11
13
  export * from "./coalesce.js";
12
14
  export * from "./concurrent.js";
15
+ export * from "./constructor.js";
13
16
  export * from "./deadline.js";
14
17
  export * from "./dedupe.js";
15
- export * from "./defer-promise.js";
18
+ export * from "./defer.js";
16
19
  export * from "./drill.js";
17
20
  export * from "./escape-regex.js";
21
+ export * from "./ev.js";
18
22
  export * from "./hat.js";
23
+ export * from "./id-counter.js";
19
24
  export * from "./is.js";
20
25
  export * from "./loopy.js";
21
26
  export * from "./map-g.js";
22
27
  export * from "./nap.js";
23
28
  export * from "./ob.js";
29
+ export * from "./once.js";
24
30
  export * from "./pipe.js";
25
31
  export * from "./pubsub.js";
32
+ export * from "./repeat.js";
33
+ export * from "./scope.js";
34
+ export * from "./templating.js";
35
+ export * from "./time.js";
26
36
  export * from "./trash.js";
package/x/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./data/bytename/index.js";
2
+ export * from "./data/base-x.js";
2
3
  export * from "./data/base58.js";
3
4
  export * from "./data/base64.js";
4
5
  export * from "./data/base64url.js";
@@ -8,20 +9,29 @@ export * from "./data/txt.js";
8
9
  export * from "./debounce/debounce.js";
9
10
  export * from "./debounce/types.js";
10
11
  export * from "./deep/deep.js";
12
+ export * from "./queue/queue.js";
11
13
  export * from "./coalesce.js";
12
14
  export * from "./concurrent.js";
15
+ export * from "./constructor.js";
13
16
  export * from "./deadline.js";
14
17
  export * from "./dedupe.js";
15
- export * from "./defer-promise.js";
18
+ export * from "./defer.js";
16
19
  export * from "./drill.js";
17
20
  export * from "./escape-regex.js";
21
+ export * from "./ev.js";
18
22
  export * from "./hat.js";
23
+ export * from "./id-counter.js";
19
24
  export * from "./is.js";
20
25
  export * from "./loopy.js";
21
26
  export * from "./map-g.js";
22
27
  export * from "./nap.js";
23
28
  export * from "./ob.js";
29
+ export * from "./once.js";
24
30
  export * from "./pipe.js";
25
31
  export * from "./pubsub.js";
32
+ export * from "./repeat.js";
33
+ export * from "./scope.js";
34
+ export * from "./templating.js";
35
+ export * from "./time.js";
26
36
  export * from "./trash.js";
27
37
  //# sourceMappingURL=index.js.map
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,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,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,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,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,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): NonNullable<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): NonNullable<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,18 +1,19 @@
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
- const value = map.get(key);
5
- if (value === undefined)
4
+ if (map.has(key))
5
+ return map.get(key);
6
+ else
6
7
  throw new Error(`required key not found: "${key}"`);
7
- return value;
8
8
  }
9
9
  static guarantee(map, key, make) {
10
- let value = map.get(key);
11
- if (value === undefined) {
12
- value = make();
10
+ if (map.has(key))
11
+ return map.get(key);
12
+ else {
13
+ const value = make();
13
14
  map.set(key, value);
15
+ return value;
14
16
  }
15
- return value;
16
17
  }
17
18
  array() {
18
19
  return [...this];
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,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;;YAEpB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,CAAC,SAAS,CAAO,GAAc,EAAE,GAAM,EAAE,IAAa;QAC3D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;aAChB,CAAC;YACL,MAAM,KAAK,GAAG,IAAI,EAAE,CAAA;YACpB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACnB,OAAO,KAAK,CAAA;QACb,CAAC;IACF,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/once.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function once<Fn extends (...a: any[]) => any>(fn: Fn): Fn;
package/x/once.js ADDED
@@ -0,0 +1,12 @@
1
+ export function once(fn) {
2
+ let done = false;
3
+ let ret;
4
+ return ((...a) => {
5
+ if (!done) {
6
+ done = true;
7
+ ret = fn(...a);
8
+ }
9
+ return ret;
10
+ });
11
+ }
12
+ //# sourceMappingURL=once.js.map
package/x/once.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.js","sourceRoot":"","sources":["../s/once.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,IAAI,CAAkC,EAAM;IAC3D,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,GAAQ,CAAA;IAEZ,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE;QAChB,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,GAAG,IAAI,CAAA;YACX,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACf,CAAC;QACD,OAAO,GAAG,CAAA;IACX,CAAC,CAAO,CAAA;AACT,CAAC"}
package/x/pipe.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export type PipeFun<I, O> = (input: I) => O;
1
+ export type Piper<I, O> = (input: I) => O;
2
+ export declare function pipe<I>(input: I): Pipe<I>;
2
3
  export declare class Pipe<I> {
3
4
  #private;
4
- static with<I>(input: I): Pipe<I>;
5
5
  constructor(input: I);
6
- to<O>(fun: PipeFun<I, O>): Pipe<O>;
6
+ to<O>(fn: Piper<I, O>): Pipe<O>;
7
7
  done(): I;
8
8
  }
package/x/pipe.js CHANGED
@@ -1,13 +1,13 @@
1
+ export function pipe(input) {
2
+ return new Pipe(input);
3
+ }
1
4
  export class Pipe {
2
- static with(input) {
3
- return new this(input);
4
- }
5
5
  #input;
6
6
  constructor(input) {
7
7
  this.#input = input;
8
8
  }
9
- to(fun) {
10
- return new Pipe(fun(this.#input));
9
+ to(fn) {
10
+ return new Pipe(fn(this.#input));
11
11
  }
12
12
  done() {
13
13
  return this.#input;
package/x/pipe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../s/pipe.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,IAAI;IAEhB,MAAM,CAAC,IAAI,CAAI,KAAQ;QACtB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAG;IAET,YAAY,KAAQ;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,EAAE,CAAI,GAAkB;QACvB,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;CACD"}
1
+ {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../s/pipe.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,IAAI,CAAI,KAAQ;IAC/B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,OAAO,IAAI;IAChB,MAAM,CAAG;IAET,YAAY,KAAQ;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,EAAE,CAAI,EAAe;QACpB,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,IAAI;QACH,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;CACD"}
package/x/pubsub.d.ts CHANGED
@@ -1,13 +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;
5
- once(): Promise<A>;
7
+ /**
8
+ * subscribe a listener function.
9
+ * @alias sub
10
+ */
11
+ on(fn: Listener<A>): () => void;
12
+ /** wait for the next published value */
13
+ next(): Promise<A>;
14
+ /** wipe all listeners attached to this. */
6
15
  clear(): void;
7
16
  }
17
+ /** subscriber fn that can be published to. */
8
18
  export interface Sub<A extends any[] = []> extends Xub<A> {
9
19
  (fn: Listener<A>): () => void;
10
20
  }
21
+ /** publisher fn that can be published to. */
11
22
  export interface Pub<A extends any[] = []> extends Xub<A> {
12
23
  (...a: A): Promise<void>;
13
24
  }