liminal 0.4.0 → 1.0.0-beta.2

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 (239) hide show
  1. package/LICENSE +201 -15
  2. package/README.md +96 -81
  3. package/esm/client/Client.d.ts +39 -0
  4. package/esm/client/Client.d.ts.map +1 -0
  5. package/esm/client/Client.js +9 -0
  6. package/esm/client/Client.js.map +1 -0
  7. package/esm/client/Store.d.ts +3 -0
  8. package/esm/client/Store.d.ts.map +1 -0
  9. package/esm/client/Store.js +3 -0
  10. package/esm/client/Store.js.map +1 -0
  11. package/esm/client/Tx.d.ts +40 -0
  12. package/esm/client/Tx.d.ts.map +1 -0
  13. package/esm/client/Tx.js +36 -0
  14. package/esm/client/Tx.js.map +1 -0
  15. package/esm/client/mod.d.ts +4 -0
  16. package/esm/client/mod.d.ts.map +1 -0
  17. package/esm/client/mod.js +5 -0
  18. package/esm/client/mod.js.map +1 -0
  19. package/esm/core/Bool.d.ts +104 -0
  20. package/esm/core/Bool.d.ts.map +1 -0
  21. package/esm/core/Bool.js +73 -0
  22. package/esm/core/Bool.js.map +1 -0
  23. package/esm/core/Bytes.d.ts +39 -0
  24. package/esm/core/Bytes.d.ts.map +1 -0
  25. package/esm/core/Bytes.js +7 -0
  26. package/esm/core/Bytes.js.map +1 -0
  27. package/esm/core/Call.d.ts +11 -0
  28. package/esm/core/Call.d.ts.map +1 -0
  29. package/esm/core/Call.js +23 -0
  30. package/esm/core/Call.js.map +1 -0
  31. package/esm/core/Effect.d.ts +20 -0
  32. package/esm/core/Effect.d.ts.map +1 -0
  33. package/esm/core/Effect.js +37 -0
  34. package/esm/core/Effect.js.map +1 -0
  35. package/esm/core/Hash.d.ts +41 -0
  36. package/esm/core/Hash.d.ts.map +1 -0
  37. package/esm/core/Hash.js +8 -0
  38. package/esm/core/Hash.js.map +1 -0
  39. package/esm/core/Id.d.ts +198 -0
  40. package/esm/core/Id.d.ts.map +1 -0
  41. package/esm/core/Id.js +69 -0
  42. package/esm/core/Id.js.map +1 -0
  43. package/esm/core/Int.d.ts +768 -0
  44. package/esm/core/Int.d.ts.map +1 -0
  45. package/esm/core/Int.js +201 -0
  46. package/esm/core/Int.js.map +1 -0
  47. package/esm/core/Key.d.ts +40 -0
  48. package/esm/core/Key.d.ts.map +1 -0
  49. package/esm/core/Key.js +7 -0
  50. package/esm/core/Key.js.map +1 -0
  51. package/esm/core/MerkleList.d.ts +105 -0
  52. package/esm/core/MerkleList.d.ts.map +1 -0
  53. package/esm/core/MerkleList.js +82 -0
  54. package/esm/core/MerkleList.js.map +1 -0
  55. package/esm/core/MerkleMap.d.ts +87 -0
  56. package/esm/core/MerkleMap.d.ts.map +1 -0
  57. package/esm/core/MerkleMap.js +67 -0
  58. package/esm/core/MerkleMap.js.map +1 -0
  59. package/esm/core/None.d.ts +52 -0
  60. package/esm/core/None.d.ts.map +1 -0
  61. package/esm/core/None.js +12 -0
  62. package/esm/core/None.js.map +1 -0
  63. package/esm/core/State.d.ts +16 -0
  64. package/esm/core/State.d.ts.map +1 -0
  65. package/esm/core/State.js +22 -0
  66. package/esm/core/State.js.map +1 -0
  67. package/esm/core/String.d.ts +41 -0
  68. package/esm/core/String.d.ts.map +1 -0
  69. package/esm/core/String.js +4 -0
  70. package/esm/core/String.js.map +1 -0
  71. package/esm/core/Struct.d.ts +58 -0
  72. package/esm/core/Struct.d.ts.map +1 -0
  73. package/esm/core/Struct.js +13 -0
  74. package/esm/core/Struct.js.map +1 -0
  75. package/esm/core/Type.d.ts +78 -0
  76. package/esm/core/Type.d.ts.map +1 -0
  77. package/esm/core/Type.js +71 -0
  78. package/esm/core/Type.js.map +1 -0
  79. package/esm/core/Union.d.ts +43 -0
  80. package/esm/core/Union.d.ts.map +1 -0
  81. package/esm/core/Union.js +7 -0
  82. package/esm/core/Union.js.map +1 -0
  83. package/esm/core/Use.d.ts +62 -0
  84. package/esm/core/Use.d.ts.map +1 -0
  85. package/esm/core/Use.js +16 -0
  86. package/esm/core/Use.js.map +1 -0
  87. package/esm/core/mod.d.ts +18 -0
  88. package/esm/core/mod.d.ts.map +1 -0
  89. package/esm/core/mod.js +19 -0
  90. package/esm/core/mod.js.map +1 -0
  91. package/esm/lib/MerkleList.d.ts +4 -0
  92. package/esm/lib/MerkleList.d.ts.map +1 -0
  93. package/esm/lib/MerkleList.js +4 -0
  94. package/esm/lib/MerkleList.js.map +1 -0
  95. package/esm/lib/MerkleMap.d.ts +4 -0
  96. package/esm/lib/MerkleMap.d.ts.map +1 -0
  97. package/esm/lib/MerkleMap.js +4 -0
  98. package/esm/lib/MerkleMap.js.map +1 -0
  99. package/esm/lib/mod.d.ts +3 -0
  100. package/esm/lib/mod.d.ts.map +1 -0
  101. package/esm/lib/mod.js +3 -0
  102. package/esm/lib/mod.js.map +1 -0
  103. package/esm/mod.d.ts +3 -0
  104. package/esm/mod.d.ts.map +1 -0
  105. package/esm/mod.js +4 -0
  106. package/esm/mod.js.map +1 -0
  107. package/esm/package.json +3 -0
  108. package/esm/test/Signer.d.ts +10 -0
  109. package/esm/test/Signer.d.ts.map +1 -0
  110. package/esm/test/Signer.js +13 -0
  111. package/esm/test/Signer.js.map +1 -0
  112. package/esm/test/mod.d.ts +2 -0
  113. package/esm/test/mod.d.ts.map +1 -0
  114. package/esm/test/mod.js +2 -0
  115. package/esm/test/mod.js.map +1 -0
  116. package/esm/util/AbortController.d.ts +4 -0
  117. package/esm/util/AbortController.d.ts.map +1 -0
  118. package/esm/util/AbortController.js +2 -0
  119. package/esm/util/AbortController.js.map +1 -0
  120. package/esm/util/ArrayOfLength.d.ts +2 -0
  121. package/esm/util/ArrayOfLength.d.ts.map +1 -0
  122. package/esm/util/ArrayOfLength.js +2 -0
  123. package/esm/util/ArrayOfLength.js.map +1 -0
  124. package/esm/util/Flatten.d.ts +4 -0
  125. package/esm/util/Flatten.d.ts.map +1 -0
  126. package/esm/util/Flatten.js +2 -0
  127. package/esm/util/Flatten.js.map +1 -0
  128. package/esm/util/Rest.d.ts +2 -0
  129. package/esm/util/Rest.d.ts.map +1 -0
  130. package/esm/util/Rest.js +2 -0
  131. package/esm/util/Rest.js.map +1 -0
  132. package/esm/util/Subscription.d.ts +5 -0
  133. package/esm/util/Subscription.d.ts.map +1 -0
  134. package/esm/util/Subscription.js +2 -0
  135. package/esm/util/Subscription.js.map +1 -0
  136. package/esm/util/Tagged.d.ts +6 -0
  137. package/esm/util/Tagged.d.ts.map +1 -0
  138. package/esm/util/Tagged.js +6 -0
  139. package/esm/util/Tagged.js.map +1 -0
  140. package/esm/util/U2I.d.ts +2 -0
  141. package/esm/util/U2I.d.ts.map +1 -0
  142. package/esm/util/U2I.js +2 -0
  143. package/esm/util/U2I.js.map +1 -0
  144. package/esm/util/generator/collect.d.ts +3 -0
  145. package/esm/util/generator/collect.d.ts.map +1 -0
  146. package/esm/util/generator/collect.js +16 -0
  147. package/esm/util/generator/collect.js.map +1 -0
  148. package/esm/util/isKey.d.ts +2 -0
  149. package/esm/util/isKey.d.ts.map +1 -0
  150. package/esm/util/isKey.js +8 -0
  151. package/esm/util/isKey.js.map +1 -0
  152. package/esm/util/unimplemented.d.ts +2 -0
  153. package/esm/util/unimplemented.d.ts.map +1 -0
  154. package/esm/util/unimplemented.js +6 -0
  155. package/esm/util/unimplemented.js.map +1 -0
  156. package/package.json +21 -21
  157. package/src/client/Client.ts +49 -0
  158. package/src/client/Store.ts +1 -0
  159. package/src/client/Tx.ts +62 -0
  160. package/src/client/mod.ts +5 -0
  161. package/src/core/Bool.ts +75 -0
  162. package/src/core/Bytes.ts +9 -0
  163. package/src/core/Call.ts +38 -0
  164. package/src/core/Effect.ts +87 -0
  165. package/src/core/Hash.ts +23 -0
  166. package/src/core/Id.ts +97 -0
  167. package/src/core/Int.ts +177 -0
  168. package/src/core/Key.ts +9 -0
  169. package/src/core/MerkleList.ts +92 -0
  170. package/src/core/MerkleMap.ts +86 -0
  171. package/src/core/None.ts +11 -0
  172. package/src/core/State.ts +31 -0
  173. package/src/core/String.ts +5 -0
  174. package/src/core/Struct.ts +49 -0
  175. package/src/core/Type.ts +120 -0
  176. package/src/core/Union.ts +17 -0
  177. package/src/core/Use.ts +33 -0
  178. package/src/core/mod.ts +19 -0
  179. package/src/lib/MerkleList.ts +4 -0
  180. package/src/lib/MerkleMap.ts +4 -0
  181. package/src/lib/mod.ts +2 -0
  182. package/src/mod.ts +4 -0
  183. package/src/test/Signer.ts +22 -0
  184. package/src/test/mod.ts +1 -0
  185. package/src/util/AbortController.ts +3 -0
  186. package/src/util/ArrayOfLength.ts +5 -0
  187. package/src/util/Flatten.ts +2 -0
  188. package/src/util/Rest.ts +1 -0
  189. package/src/util/Subscription.ts +5 -0
  190. package/src/util/Tagged.ts +5 -0
  191. package/src/util/U2I.ts +1 -0
  192. package/src/util/generator/collect.ts +16 -0
  193. package/src/util/isKey.ts +7 -0
  194. package/src/util/unimplemented.ts +4 -0
  195. package/jest.config.js +0 -4
  196. package/lib/array/array.d.ts +0 -6
  197. package/lib/array/array.js +0 -21
  198. package/lib/array/index.d.ts +0 -11
  199. package/lib/array/index.js +0 -17
  200. package/lib/composition/composition.d.ts +0 -6
  201. package/lib/composition/composition.js +0 -37
  202. package/lib/composition/index.d.ts +0 -9
  203. package/lib/composition/index.js +0 -13
  204. package/lib/composition/types.d.ts +0 -2
  205. package/lib/composition/types.js +0 -2
  206. package/lib/dispatch/getType.d.ts +0 -2
  207. package/lib/dispatch/getType.js +0 -15
  208. package/lib/dispatch/identity.d.ts +0 -2
  209. package/lib/dispatch/identity.js +0 -4
  210. package/lib/dispatch/index.d.ts +0 -22
  211. package/lib/dispatch/index.js +0 -13
  212. package/lib/dispatch/types.d.ts +0 -14
  213. package/lib/dispatch/types.js +0 -16
  214. package/lib/error/error.d.ts +0 -24
  215. package/lib/error/error.js +0 -25
  216. package/lib/error/index.d.ts +0 -2
  217. package/lib/error/index.js +0 -4
  218. package/lib/index.d.ts +0 -67
  219. package/lib/index.js +0 -19
  220. package/lib/multimethod/index.d.ts +0 -7
  221. package/lib/multimethod/index.js +0 -9
  222. package/lib/multimethod/multimethod.d.ts +0 -3
  223. package/lib/multimethod/multimethod.js +0 -101
  224. package/src/array/array.ts +0 -29
  225. package/src/array/index.ts +0 -12
  226. package/src/composition/composition.ts +0 -45
  227. package/src/composition/index.ts +0 -10
  228. package/src/composition/types.ts +0 -6
  229. package/src/dispatch/getType.ts +0 -17
  230. package/src/dispatch/identity.ts +0 -3
  231. package/src/dispatch/index.ts +0 -11
  232. package/src/dispatch/types.ts +0 -15
  233. package/src/error/error.ts +0 -26
  234. package/src/error/index.ts +0 -3
  235. package/src/index.ts +0 -15
  236. package/src/multimethod/index.ts +0 -8
  237. package/src/multimethod/multimethod.test.ts +0 -10
  238. package/src/multimethod/multimethod.ts +0 -148
  239. package/tsconfig.json +0 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/core/mod.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA"}
@@ -0,0 +1,19 @@
1
+ // moderate
2
+ export * from "./Bool.js";
3
+ export * from "./Bytes.js";
4
+ export * from "./Call.js";
5
+ export * from "./Effect.js";
6
+ export * from "./Hash.js";
7
+ export * from "./Id.js";
8
+ export * from "./Int.js";
9
+ export * from "./Key.js";
10
+ export * from "./MerkleList.js";
11
+ export * from "./MerkleMap.js";
12
+ export * from "./None.js";
13
+ export * from "./State.js";
14
+ export * from "./String.js";
15
+ export * from "./Struct.js";
16
+ export * from "./Type.js";
17
+ export * from "./Union.js";
18
+ export * from "./Use.js";
19
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/core/mod.ts"],"names":[],"mappings":"AAAA,WAAW;AAEX,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare class MerkleList<T> {
2
+ ""?: [T];
3
+ }
4
+ //# sourceMappingURL=MerkleList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerkleList.d.ts","sourceRoot":"","sources":["../../src/lib/MerkleList.ts"],"names":[],"mappings":"AACA,qBAAa,UAAU,CAAC,CAAC;IACf,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CACjB"}
@@ -0,0 +1,4 @@
1
+ // TODO
2
+ export class MerkleList {
3
+ }
4
+ //# sourceMappingURL=MerkleList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerkleList.js","sourceRoot":"","sources":["../../src/lib/MerkleList.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,MAAM,OAAO,UAAU;CAEtB"}
@@ -0,0 +1,4 @@
1
+ export declare class MerkleMap<K, V> {
2
+ ""?: [K, V];
3
+ }
4
+ //# sourceMappingURL=MerkleMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerkleMap.d.ts","sourceRoot":"","sources":["../../src/lib/MerkleMap.ts"],"names":[],"mappings":"AACA,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC;IACjB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CACpB"}
@@ -0,0 +1,4 @@
1
+ // TODO
2
+ export class MerkleMap {
3
+ }
4
+ //# sourceMappingURL=MerkleMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerkleMap.js","sourceRoot":"","sources":["../../src/lib/MerkleMap.ts"],"names":[],"mappings":"AAAA,OAAO;AACP,MAAM,OAAO,SAAS;CAErB"}
@@ -0,0 +1,3 @@
1
+ export * from "./MerkleList.js";
2
+ export * from "./MerkleMap.js";
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/lib/mod.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA"}
package/esm/lib/mod.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./MerkleList.js";
2
+ export * from "./MerkleMap.js";
3
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/lib/mod.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA"}
package/esm/mod.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./client/mod.js";
2
+ export * from "./core/mod.js";
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
package/esm/mod.js ADDED
@@ -0,0 +1,4 @@
1
+ // moderate --exclude lib test
2
+ export * from "./client/mod.js";
3
+ export * from "./core/mod.js";
4
+ //# sourceMappingURL=mod.js.map
package/esm/mod.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,10 @@
1
+ import { ArrayOfLength } from "../util/ArrayOfLength.js";
2
+ export declare function signer(): TestSigner;
3
+ export declare function signer(count: 1): TestSigner;
4
+ export declare function signer<C extends number>(count: C): ArrayOfLength<TestSigner, C>;
5
+ export interface TestSigner {
6
+ publicKey: Uint8Array;
7
+ (tx: Uint8Array): Uint8Array;
8
+ }
9
+ export declare function TestSigner(): TestSigner;
10
+ //# sourceMappingURL=Signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Signer.d.ts","sourceRoot":"","sources":["../../src/test/Signer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,wBAAgB,MAAM,IAAI,UAAU,CAAA;AACpC,wBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;AAC5C,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;AAMhF,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,UAAU,CAAA;IACrB,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,CAAA;CAC7B;AAGD,wBAAgB,UAAU,IAAI,UAAU,CAIvC"}
@@ -0,0 +1,13 @@
1
+ import crypto from "node:crypto";
2
+ export function signer(count) {
3
+ if (!count || count === 1)
4
+ return TestSigner();
5
+ return Array.from({ length: count }, TestSigner);
6
+ }
7
+ // TODO: get signing actually working at some point
8
+ export function TestSigner() {
9
+ const pair = crypto.generateKeyPairSync("ec", { namedCurve: "secp256k1" });
10
+ const publicKey = new Uint8Array(pair.publicKey.export({ format: "der", type: "sec1" }));
11
+ return Object.assign((tx) => crypto.sign(null, tx, pair.privateKey), { publicKey });
12
+ }
13
+ //# sourceMappingURL=Signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Signer.js","sourceRoot":"","sources":["../../src/test/Signer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAMhC,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,UAAU,EAAE,CAAA;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,CAAC,CAAA;AAClD,CAAC;AAOD,mDAAmD;AACnD,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;IAC1E,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACxF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;AACjG,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./Signer.js";
2
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/test/mod.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./Signer.js";
2
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/test/mod.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,4 @@
1
+ export interface SignalOptions {
2
+ signal?: AbortSignal;
3
+ }
4
+ //# sourceMappingURL=AbortController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbortController.d.ts","sourceRoot":"","sources":["../../src/util/AbortController.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AbortController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbortController.js","sourceRoot":"","sources":["../../src/util/AbortController.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type ArrayOfLength<T, L extends number, A extends T[] = []> = number extends L ? T[] : L extends A["length"] ? A : ArrayOfLength<T, L, [...A, T]>;
2
+ //# sourceMappingURL=ArrayOfLength.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayOfLength.d.ts","sourceRoot":"","sources":["../../src/util/ArrayOfLength.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CACvB,CAAC,EACD,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAChB,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ArrayOfLength.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArrayOfLength.js","sourceRoot":"","sources":["../../src/util/ArrayOfLength.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export type Flatten<T> = [{
2
+ [K in keyof T]: T[K];
3
+ }][0];
4
+ //# sourceMappingURL=Flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flatten.d.ts","sourceRoot":"","sources":["../../src/util/Flatten.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Flatten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flatten.js","sourceRoot":"","sources":["../../src/util/Flatten.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type Rest<T> = undefined extends T ? [value?: T] : [value: T];
2
+ //# sourceMappingURL=Rest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rest.d.ts","sourceRoot":"","sources":["../../src/util/Rest.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Rest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rest.js","sourceRoot":"","sources":["../../src/util/Rest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { SignalOptions } from "./AbortController.js";
2
+ export interface Subscription<T> {
3
+ subscribe(callback: (value: T) => void, options?: SignalOptions): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=Subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../../src/util/Subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscription.js","sourceRoot":"","sources":["../../src/util/Subscription.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export declare function Tagged<K extends keyof any>(tag: K): {
2
+ new (): {
3
+ readonly tag: K;
4
+ };
5
+ };
6
+ //# sourceMappingURL=Tagged.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tagged.d.ts","sourceRoot":"","sources":["../../src/util/Tagged.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;;;;EAIjD"}
@@ -0,0 +1,6 @@
1
+ export function Tagged(tag) {
2
+ return class {
3
+ tag = tag;
4
+ };
5
+ }
6
+ //# sourceMappingURL=Tagged.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tagged.js","sourceRoot":"","sources":["../../src/util/Tagged.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAsB,GAAM;IAChD,OAAO;QACI,GAAG,GAAG,GAAG,CAAA;KACnB,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type U2I<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;
2
+ //# sourceMappingURL=U2I.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"U2I.d.ts","sourceRoot":"","sources":["../../src/util/U2I.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=U2I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"U2I.js","sourceRoot":"","sources":["../../src/util/U2I.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export type Collected<Y, R> = [Y[], R];
2
+ export declare function collect<Y, R>(generator: Generator<Y, R>): Collected<Y, R>;
3
+ //# sourceMappingURL=collect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../src/util/generator/collect.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAEtC,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAazE"}
@@ -0,0 +1,16 @@
1
+ export function collect(generator) {
2
+ const statements = [];
3
+ let result;
4
+ statements: while (true) {
5
+ const next = generator.next();
6
+ if (next.done) {
7
+ result = next.value;
8
+ break statements;
9
+ }
10
+ else {
11
+ statements.push(next.value);
12
+ }
13
+ }
14
+ return [statements, result];
15
+ }
16
+ //# sourceMappingURL=collect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/util/generator/collect.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAO,SAA0B;IACtD,MAAM,UAAU,GAAQ,EAAE,CAAA;IAC1B,IAAI,MAAS,CAAA;IACb,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;YACnB,MAAM,UAAU,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isKey(inQuestion: unknown): inQuestion is keyof any;
2
+ //# sourceMappingURL=isKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isKey.d.ts","sourceRoot":"","sources":["../../src/util/isKey.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,IAAI,MAAM,GAAG,CAMlE"}
@@ -0,0 +1,8 @@
1
+ export function isKey(inQuestion) {
2
+ return !!{
3
+ number: true,
4
+ string: true,
5
+ symbol: true,
6
+ }[typeof inQuestion];
7
+ }
8
+ //# sourceMappingURL=isKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isKey.js","sourceRoot":"","sources":["../../src/util/isKey.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,UAAmB;IACvC,OAAO,CAAC,CAAE;QACR,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;KACe,CAAC,OAAO,UAAU,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function unimplemented(message?: string): never;
2
+ //# sourceMappingURL=unimplemented.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unimplemented.d.ts","sourceRoot":"","sources":["../../src/util/unimplemented.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAGrD"}
@@ -0,0 +1,6 @@
1
+ export function unimplemented(message) {
2
+ if (message)
3
+ console.error(message);
4
+ throw 0;
5
+ }
6
+ //# sourceMappingURL=unimplemented.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unimplemented.js","sourceRoot":"","sources":["../../src/util/unimplemented.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACnC,MAAM,CAAC,CAAA;AACT,CAAC"}
package/package.json CHANGED
@@ -1,26 +1,26 @@
1
1
  {
2
2
  "name": "liminal",
3
- "version": "0.4.0",
4
- "description": "Functional tools for composing applications",
5
- "repository": "https://github.com/caderek/liminal",
6
- "homepage": "https://github.com/caderek/liminal",
7
- "main": "lib/index.js",
8
- "license": "ISC",
9
- "scripts": {
10
- "start": "nodemon --exec ts-node src/index.ts",
11
- "build": "tsc",
12
- "test": "jest"
3
+ "version": "v1.0.0-beta.2",
4
+ "description": "",
5
+ "repository": "github:MinaFoundation/Liminal",
6
+ "license": "Apache-2.0",
7
+ "module": "./esm/mod.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./esm/mod.js"
11
+ },
12
+ "liminal/lib": {
13
+ "import": "./esm/lib/mod.js"
14
+ },
15
+ "liminal/test": {
16
+ "import": "./esm/test/mod.js"
17
+ }
18
+ },
19
+ "dependencies": {
20
+ "tslib": "^2.6.2"
13
21
  },
14
22
  "devDependencies": {
15
- "@types/jest": "^24.0.18",
16
- "@types/node": "^12.7.4",
17
- "jest": "^24.9.0",
18
- "nodemon": "^1.19.2",
19
- "ts-jest": "^24.1.0",
20
- "ts-node": "^8.3.0",
21
- "typescript": "^3.6.3"
23
+ "@types/node": "^20.9.0"
22
24
  },
23
- "dependencies": {
24
- "deep-strict-equal": "^0.2.0"
25
- }
26
- }
25
+ "_generatedBy": "dnt@dev"
26
+ }
@@ -0,0 +1,49 @@
1
+ import { Result, Type } from "../core/mod.js"
2
+ import { SignalOptions } from "../util/AbortController.js"
3
+ import { Subscription } from "../util/Subscription.js"
4
+ import { unimplemented } from "../util/unimplemented.js"
5
+
6
+ export declare function client(...bootNodes: string[]): Promise<Client>
7
+
8
+ export class Client implements Disposable {
9
+ send<R extends Result>(
10
+ _tx: () => Generator<unknown, R>,
11
+ _options: SignalOptions,
12
+ ): Subscription<TxStatus<Type.Native<R>>> {
13
+ unimplemented()
14
+ }
15
+
16
+ // TODO
17
+ [Symbol.dispose]() {}
18
+ }
19
+
20
+ export interface TxBroadcast {
21
+ tag: "Broadcasted"
22
+ peers: string[]
23
+ }
24
+ export interface TxInclusion<R> {
25
+ tag: "Included"
26
+ block: string
27
+ result: R
28
+ }
29
+ export interface TxFinalization<R> {
30
+ tag: "Finalized"
31
+ block: string
32
+ result: R
33
+ }
34
+ export interface TxRejection {
35
+ tag: "Rejected"
36
+ reason: TxRejectionReason
37
+ }
38
+
39
+ export type TxStatus<R> = TxBroadcast | TxInclusion<R> | TxFinalization<R> | TxRejection
40
+
41
+ // TODO
42
+ export type TxRejectionReason =
43
+ | { tag: "SeeingAnotherTx" }
44
+ | { tag: "LackingRizz" }
45
+ | { tag: "Impossible" }
46
+ | {
47
+ tag: "SystemError"
48
+ value: "A" | "B" | "C"
49
+ }
@@ -0,0 +1 @@
1
+ export class Store {}
@@ -0,0 +1,62 @@
1
+ import { Call, Result, Yield } from "../core/Call.js"
2
+ import { SignerRequirement } from "../core/Id.js"
3
+ import { Type } from "../core/Type.js"
4
+ import { SignalOptions } from "../util/AbortController.js"
5
+ import { Subscription } from "../util/Subscription.js"
6
+ import { unimplemented } from "../util/unimplemented.js"
7
+ import { Client, TxBroadcast, TxFinalization, TxInclusion, TxStatus } from "./Client.js"
8
+
9
+ export function tx<R extends Type>(f: R | (() => R)): Tx<never, R>
10
+ export function tx<Y extends Yield, R extends Result>(
11
+ f: Generator<Y, R> | (() => Generator<Y, R>),
12
+ ): Tx<Y, R>
13
+ export function tx(value: any) {
14
+ return new Tx(value)
15
+ }
16
+
17
+ export class Tx<Y extends Yield, R extends Result> {
18
+ constructor(readonly f: Call<Y, R>) {}
19
+
20
+ sign(senderSigner: SignBytes, ...maybeSigners: MaybeTxSigners<Y>): SignedTx<Y, R> {
21
+ return new SignedTx(this, senderSigner, ...maybeSigners)
22
+ }
23
+ }
24
+
25
+ export type MaybeTxSigners<Y> = [Extract<Y, SignerRequirement>] extends [never] ? [] : [
26
+ signers: { [K in Extract<Y, SignerRequirement>["key"]]: SignBytes },
27
+ ]
28
+ export type SignBytes = (bytes: Uint8Array) => Uint8Array
29
+
30
+ export class SignedTx<Y extends Yield, R extends Result> {
31
+ signers
32
+ constructor(
33
+ readonly tx: Tx<Y, R>,
34
+ readonly senderSigner: SignBytes,
35
+ ...[signers]: MaybeTxSigners<Y>
36
+ ) {
37
+ this.signers = signers
38
+ }
39
+
40
+ run(_handler?: TxHandler<Y>): TxRun<Y, R> {
41
+ return new TxRun(this)
42
+ }
43
+ }
44
+
45
+ export type TxHandler<Y extends Yield> = (value: Type.Native<Exclude<Y, SignerRequirement>>) => void
46
+
47
+ export class TxRun<Y extends Yield, R extends Result> {
48
+ constructor(readonly signedTx: SignedTx<Y, R>) {}
49
+
50
+ commit(_chain: Client, _options?: CommitOptions): Commit<Type.Native<R>> {
51
+ unimplemented()
52
+ }
53
+ }
54
+
55
+ export interface CommitOptions extends SignalOptions {}
56
+
57
+ // TODO: should `included` and `finalized` include the tx result value in the case that the tx generator returns a value?
58
+ export interface Commit<R> extends Subscription<TxStatus<R>> {
59
+ broadcasted(): Promise<TxBroadcast>
60
+ included(): Promise<TxInclusion<R>>
61
+ finalized(): Promise<TxFinalization<R>>
62
+ }
@@ -0,0 +1,5 @@
1
+ // moderate
2
+
3
+ export * from "./Client.js"
4
+ export * from "./Store.js"
5
+ export * from "./Tx.js"
@@ -0,0 +1,75 @@
1
+ import { Tagged } from "../util/Tagged.js"
2
+ import { unimplemented } from "../util/unimplemented.js"
3
+ import { Call, Result, Yield } from "./Call.js"
4
+ import { Effect } from "./Effect.js"
5
+ import { None } from "./None.js"
6
+ import { Factory, Type } from "./Type.js"
7
+
8
+ export class bool extends Type.make("bool")<BoolSource, boolean, never, never> {
9
+ if<R extends Result>(call: R | (() => R)): If<never, R>
10
+ if<Y extends Yield, R extends Result>(
11
+ call: Generator<Y, R> | (() => Generator<Y, R>),
12
+ ): If<Y, R>
13
+ if(call: any) {
14
+ return new If(this, call)
15
+ }
16
+
17
+ not(): bool {
18
+ return new bool(new BoolSource.Not(this))
19
+ }
20
+
21
+ assert<E extends Type>(_error: E): Effect<E, never> {
22
+ unimplemented()
23
+ }
24
+ }
25
+
26
+ export class If<Y extends Yield, R extends Result> extends Effect<Y, R | None> {
27
+ constructor(readonly self: bool, readonly call: Call<Y, R>) {
28
+ super()
29
+ const [yields, result] = Call.collect(call)
30
+ this.yields = yields
31
+ this.result = result
32
+ }
33
+
34
+ else<R2 extends Result>(
35
+ call: R2 | (() => R2),
36
+ ): [Y] extends [never] ? R | R2 : Effect<Y, R | R2>
37
+ else<Y2 extends Yield, R2 extends Result>(
38
+ call: Generator<Y2, R2> | (() => Generator<Y2, R2>),
39
+ ): Effect<Y | Y2, R | R2>
40
+ else(_call: any) {
41
+ return unimplemented()
42
+ }
43
+ }
44
+
45
+ export type BoolSource =
46
+ | BoolSource.True
47
+ | BoolSource.False
48
+ | BoolSource.Not
49
+ | BoolSource.Equals
50
+ | BoolSource.Is
51
+ export namespace BoolSource {
52
+ export class True extends Tagged("True") {}
53
+ export class False extends Tagged("False") {}
54
+ export class Not extends Tagged("Not") {
55
+ constructor(readonly not: bool) {
56
+ super()
57
+ }
58
+ }
59
+ export class Equals extends Tagged("Equals") {
60
+ constructor(readonly left: Type, readonly right: Type) {
61
+ super()
62
+ }
63
+ }
64
+ export class Is extends Tagged("Is") {
65
+ constructor(readonly inQuestion: Type, readonly match: Factory) {
66
+ super()
67
+ }
68
+ }
69
+ }
70
+
71
+ const true_ = new bool(new BoolSource.True())
72
+ export { true_ as true }
73
+
74
+ const false_ = new bool(new BoolSource.False())
75
+ export { false_ as false }
@@ -0,0 +1,9 @@
1
+ import { Type } from "./Type.js"
2
+
3
+ export function Bytes<Size extends number>(size: Size) {
4
+ return class extends Type.make("Bytes")<BytesSource, Uint8Array> {
5
+ size = size
6
+ }
7
+ }
8
+
9
+ export type BytesSource = never