@kontor/kontor-sdk 1.0.0-alpha.39 → 1.0.0-alpha.40

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 (270) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/sdk/actions/kontor/public/call-view.js.map +1 -1
  3. package/dist/cjs/sdk/chains/definitions/signet.js +2 -2
  4. package/dist/cjs/sdk/test/e2e.test-deprecated.js +2 -0
  5. package/dist/cjs/sdk/test/e2e.test-deprecated.js.map +1 -0
  6. package/dist/cjs/sdk/utils/wit/codecs/bool.js +9 -21
  7. package/dist/cjs/sdk/utils/wit/codecs/bool.js.map +1 -1
  8. package/dist/cjs/sdk/utils/wit/codecs/contract-address.js +92 -0
  9. package/dist/cjs/sdk/utils/wit/codecs/contract-address.js.map +1 -0
  10. package/dist/cjs/sdk/utils/wit/codecs/index.js +29 -0
  11. package/dist/cjs/sdk/utils/wit/codecs/index.js.map +1 -0
  12. package/dist/cjs/sdk/utils/wit/codecs/list.js +21 -95
  13. package/dist/cjs/sdk/utils/wit/codecs/list.js.map +1 -1
  14. package/dist/cjs/sdk/utils/wit/codecs/numerics.js +228 -0
  15. package/dist/cjs/sdk/utils/wit/codecs/numerics.js.map +1 -0
  16. package/dist/cjs/sdk/utils/wit/codecs/option.js +21 -72
  17. package/dist/cjs/sdk/utils/wit/codecs/option.js.map +1 -1
  18. package/dist/cjs/sdk/utils/wit/codecs/result.js +32 -0
  19. package/dist/cjs/sdk/utils/wit/codecs/result.js.map +1 -0
  20. package/dist/cjs/sdk/utils/wit/codecs/string.js +16 -21
  21. package/dist/cjs/sdk/utils/wit/codecs/string.js.map +1 -1
  22. package/dist/cjs/sdk/utils/wit/codecs/unit.js +11 -19
  23. package/dist/cjs/sdk/utils/wit/codecs/unit.js.map +1 -1
  24. package/dist/cjs/sdk/utils/wit/codecs/util.js +185 -0
  25. package/dist/cjs/sdk/utils/wit/codecs/util.js.map +1 -0
  26. package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js +297 -163
  27. package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
  28. package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js +214 -221
  29. package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
  30. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  31. package/dist/cjs/wit/built-ins.js +19 -0
  32. package/dist/cjs/wit/built-ins.js.map +1 -0
  33. package/dist/cjs/wit/regex.js +1 -1
  34. package/dist/cjs/wit/regex.js.map +1 -1
  35. package/dist/cjs/wit/wit-parser/core/errors/signature.js +17 -2
  36. package/dist/cjs/wit/wit-parser/core/errors/signature.js.map +1 -1
  37. package/dist/cjs/wit/wit-parser/core/signatures.js +18 -0
  38. package/dist/cjs/wit/wit-parser/core/signatures.js.map +1 -1
  39. package/dist/cjs/wit/wit-parser/core/types/{records.js → user-defined.js} +1 -1
  40. package/dist/cjs/wit/wit-parser/core/types/user-defined.js.map +1 -0
  41. package/dist/cjs/wit/wit-parser/core/user-defined.js +271 -0
  42. package/dist/cjs/wit/wit-parser/core/user-defined.js.map +1 -0
  43. package/dist/cjs/wit/wit-parser/core/utils.js +29 -7
  44. package/dist/cjs/wit/wit-parser/core/utils.js.map +1 -1
  45. package/dist/cjs/wit/wit-parser/parse-wit-parameter.js +9 -3
  46. package/dist/cjs/wit/wit-parser/parse-wit-parameter.js.map +1 -1
  47. package/dist/cjs/wit/wit-parser/parse-wit.js +7 -3
  48. package/dist/cjs/wit/wit-parser/parse-wit.js.map +1 -1
  49. package/dist/esm/sdk/actions/kontor/public/call-view.js.map +1 -1
  50. package/dist/esm/sdk/chains/definitions/signet.js +2 -2
  51. package/dist/esm/sdk/test/e2e.test-deprecated.js +197 -0
  52. package/dist/esm/sdk/test/e2e.test-deprecated.js.map +1 -0
  53. package/dist/esm/sdk/utils/wit/codecs/bool.js +9 -21
  54. package/dist/esm/sdk/utils/wit/codecs/bool.js.map +1 -1
  55. package/dist/esm/sdk/utils/wit/codecs/contract-address.js +92 -0
  56. package/dist/esm/sdk/utils/wit/codecs/contract-address.js.map +1 -0
  57. package/dist/esm/sdk/utils/wit/codecs/index.js +9 -0
  58. package/dist/esm/sdk/utils/wit/codecs/index.js.map +1 -0
  59. package/dist/esm/sdk/utils/wit/codecs/list.js +20 -114
  60. package/dist/esm/sdk/utils/wit/codecs/list.js.map +1 -1
  61. package/dist/esm/sdk/utils/wit/codecs/numerics.js +234 -0
  62. package/dist/esm/sdk/utils/wit/codecs/numerics.js.map +1 -0
  63. package/dist/esm/sdk/utils/wit/codecs/option.js +21 -88
  64. package/dist/esm/sdk/utils/wit/codecs/option.js.map +1 -1
  65. package/dist/esm/sdk/utils/wit/codecs/result.js +29 -0
  66. package/dist/esm/sdk/utils/wit/codecs/result.js.map +1 -0
  67. package/dist/esm/sdk/utils/wit/codecs/string.js +22 -22
  68. package/dist/esm/sdk/utils/wit/codecs/string.js.map +1 -1
  69. package/dist/esm/sdk/utils/wit/codecs/unit.js +12 -21
  70. package/dist/esm/sdk/utils/wit/codecs/unit.js.map +1 -1
  71. package/dist/esm/sdk/utils/wit/codecs/util.js +181 -0
  72. package/dist/esm/sdk/utils/wit/codecs/util.js.map +1 -0
  73. package/dist/esm/sdk/utils/wit/decode-wit-parameter.js +322 -188
  74. package/dist/esm/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
  75. package/dist/esm/sdk/utils/wit/encode-wit-parameters.js +230 -233
  76. package/dist/esm/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
  77. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  78. package/dist/esm/wit/built-ins.js +16 -0
  79. package/dist/esm/wit/built-ins.js.map +1 -0
  80. package/dist/esm/wit/regex.js +1 -1
  81. package/dist/esm/wit/regex.js.map +1 -1
  82. package/dist/esm/wit/wit-parser/core/errors/signature.js +15 -1
  83. package/dist/esm/wit/wit-parser/core/errors/signature.js.map +1 -1
  84. package/dist/esm/wit/wit-parser/core/signatures.js +14 -0
  85. package/dist/esm/wit/wit-parser/core/signatures.js.map +1 -1
  86. package/dist/esm/wit/wit-parser/core/types/signatures.js.map +1 -1
  87. package/dist/esm/wit/wit-parser/core/types/user-defined.js +2 -0
  88. package/dist/esm/wit/wit-parser/core/types/user-defined.js.map +1 -0
  89. package/dist/esm/wit/wit-parser/core/types/utils.js +25 -0
  90. package/dist/esm/wit/wit-parser/core/types/utils.js.map +1 -1
  91. package/dist/esm/wit/wit-parser/core/user-defined.js +280 -0
  92. package/dist/esm/wit/wit-parser/core/user-defined.js.map +1 -0
  93. package/dist/esm/wit/wit-parser/core/utils.js +33 -36
  94. package/dist/esm/wit/wit-parser/core/utils.js.map +1 -1
  95. package/dist/esm/wit/wit-parser/parse-wit-parameter.js +10 -4
  96. package/dist/esm/wit/wit-parser/parse-wit-parameter.js.map +1 -1
  97. package/dist/esm/wit/wit-parser/parse-wit.js +8 -4
  98. package/dist/esm/wit/wit-parser/parse-wit.js.map +1 -1
  99. package/dist/types/sdk/actions/kontor/public/call-view.d.ts +2 -1
  100. package/dist/types/sdk/actions/kontor/public/call-view.d.ts.map +1 -1
  101. package/dist/types/sdk/chains/definitions/signet.d.ts +2 -2
  102. package/dist/types/sdk/test/e2e.test-deprecated.d.ts +2 -0
  103. package/dist/types/sdk/test/e2e.test-deprecated.d.ts.map +1 -0
  104. package/dist/types/sdk/types/contract.d.ts +5 -5
  105. package/dist/types/sdk/types/contract.d.ts.map +1 -1
  106. package/dist/types/sdk/utils/wit/codecs/bool.d.ts +2 -2
  107. package/dist/types/sdk/utils/wit/codecs/bool.d.ts.map +1 -1
  108. package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts +5 -0
  109. package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts.map +1 -0
  110. package/dist/types/sdk/utils/wit/codecs/index.d.ts +9 -0
  111. package/dist/types/sdk/utils/wit/codecs/index.d.ts.map +1 -0
  112. package/dist/types/sdk/utils/wit/codecs/list.d.ts +2 -16
  113. package/dist/types/sdk/utils/wit/codecs/list.d.ts.map +1 -1
  114. package/dist/types/sdk/utils/wit/codecs/numerics.d.ts +14 -0
  115. package/dist/types/sdk/utils/wit/codecs/numerics.d.ts.map +1 -0
  116. package/dist/types/sdk/utils/wit/codecs/option.d.ts +3 -23
  117. package/dist/types/sdk/utils/wit/codecs/option.d.ts.map +1 -1
  118. package/dist/types/sdk/utils/wit/codecs/result.d.ts +4 -0
  119. package/dist/types/sdk/utils/wit/codecs/result.d.ts.map +1 -0
  120. package/dist/types/sdk/utils/wit/codecs/string.d.ts +6 -2
  121. package/dist/types/sdk/utils/wit/codecs/string.d.ts.map +1 -1
  122. package/dist/types/sdk/utils/wit/codecs/types.d.ts +4 -0
  123. package/dist/types/sdk/utils/wit/codecs/types.d.ts.map +1 -1
  124. package/dist/types/sdk/utils/wit/codecs/unit.d.ts +2 -11
  125. package/dist/types/sdk/utils/wit/codecs/unit.d.ts.map +1 -1
  126. package/dist/types/sdk/utils/wit/codecs/util.d.ts +12 -0
  127. package/dist/types/sdk/utils/wit/codecs/util.d.ts.map +1 -0
  128. package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts +9 -31
  129. package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts.map +1 -1
  130. package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts +9 -1
  131. package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts.map +1 -1
  132. package/dist/types/wit/built-ins.d.ts +6 -0
  133. package/dist/types/wit/built-ins.d.ts.map +1 -0
  134. package/dist/types/wit/regex.d.ts.map +1 -1
  135. package/dist/types/wit/utils.d.ts +53 -33
  136. package/dist/types/wit/utils.d.ts.map +1 -1
  137. package/dist/types/wit/wit-parser/core/errors/signature.d.ts +7 -1
  138. package/dist/types/wit/wit-parser/core/errors/signature.d.ts.map +1 -1
  139. package/dist/types/wit/wit-parser/core/signatures.d.ts +10 -0
  140. package/dist/types/wit/wit-parser/core/signatures.d.ts.map +1 -1
  141. package/dist/types/wit/wit-parser/core/types/signatures.d.ts +6 -2
  142. package/dist/types/wit/wit-parser/core/types/signatures.d.ts.map +1 -1
  143. package/dist/types/wit/wit-parser/core/types/user-defined.d.ts +134 -0
  144. package/dist/types/wit/wit-parser/core/types/user-defined.d.ts.map +1 -0
  145. package/dist/types/wit/wit-parser/core/types/utils.d.ts +86 -11
  146. package/dist/types/wit/wit-parser/core/types/utils.d.ts.map +1 -1
  147. package/dist/types/wit/wit-parser/core/user-defined.d.ts +19 -0
  148. package/dist/types/wit/wit-parser/core/user-defined.d.ts.map +1 -0
  149. package/dist/types/wit/wit-parser/core/utils.d.ts +8 -4
  150. package/dist/types/wit/wit-parser/core/utils.d.ts.map +1 -1
  151. package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts +11 -5
  152. package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts.map +1 -1
  153. package/dist/types/wit/wit-parser/parse-wit.d.ts +7 -3
  154. package/dist/types/wit/wit-parser/parse-wit.d.ts.map +1 -1
  155. package/dist/types/wit/wit.d.ts +20 -12
  156. package/dist/types/wit/wit.d.ts.map +1 -1
  157. package/package.json +1 -1
  158. package/src/sdk/actions/get-contract.test-d.ts +430 -50
  159. package/src/sdk/actions/get-contract.test.ts +324 -24
  160. package/src/sdk/actions/kontor/public/call-view.ts +2 -1
  161. package/src/sdk/actions/kontor/public/proc-contract.test-d.ts +107 -0
  162. package/src/sdk/actions/kontor/public/proc-contract.test.ts +234 -21
  163. package/src/sdk/actions/kontor/public/view-contract.test-d.ts +240 -0
  164. package/src/sdk/actions/kontor/public/view-contract.test.ts +613 -18
  165. package/src/sdk/chains/definitions/signet.ts +2 -2
  166. package/src/sdk/clients/base/create-rpc-client.test.ts +2 -2
  167. package/src/sdk/clients/create-public-client.test.ts +2 -2
  168. package/src/sdk/clients/kontor/create-public-client.test.ts +2 -2
  169. package/src/sdk/clients/transports/http-rpc.test.ts +0 -24
  170. package/src/sdk/test/e2e.test-deprecated.ts +195 -0
  171. package/src/sdk/types/contract.test-d.ts +489 -55
  172. package/src/sdk/types/contract.ts +6 -7
  173. package/src/sdk/utils/wit/codecs/bool.test.ts +29 -0
  174. package/src/sdk/utils/wit/codecs/bool.ts +10 -25
  175. package/src/sdk/utils/wit/codecs/contract-address.test.ts +37 -0
  176. package/src/sdk/utils/wit/codecs/contract-address.ts +114 -0
  177. package/src/sdk/utils/wit/codecs/index.ts +20 -0
  178. package/src/sdk/utils/wit/codecs/list.test-d.ts +13 -0
  179. package/src/sdk/utils/wit/codecs/list.test.ts +55 -0
  180. package/src/sdk/utils/wit/codecs/list.ts +21 -150
  181. package/src/sdk/utils/wit/codecs/numerics.test.ts +399 -0
  182. package/src/sdk/utils/wit/codecs/numerics.ts +304 -0
  183. package/src/sdk/utils/wit/codecs/option.test.ts +71 -0
  184. package/src/sdk/utils/wit/codecs/option.ts +21 -120
  185. package/src/sdk/utils/wit/codecs/result.test.ts +82 -0
  186. package/src/sdk/utils/wit/codecs/result.ts +37 -0
  187. package/src/sdk/utils/wit/codecs/string.test.ts +62 -0
  188. package/src/sdk/utils/wit/codecs/string.ts +23 -25
  189. package/src/sdk/utils/wit/codecs/types.ts +5 -0
  190. package/src/sdk/utils/wit/codecs/unit.test.ts +27 -0
  191. package/src/sdk/utils/wit/codecs/unit.ts +14 -38
  192. package/src/sdk/utils/wit/codecs/util.test.ts +221 -0
  193. package/src/sdk/utils/wit/codecs/util.ts +193 -0
  194. package/src/sdk/utils/wit/decode-wit-parameter.test.ts +1264 -32
  195. package/src/sdk/utils/wit/decode-wit-parameter.ts +508 -211
  196. package/src/sdk/utils/wit/encode-wit-parameters.test.ts +955 -91
  197. package/src/sdk/utils/wit/encode-wit-parameters.ts +277 -274
  198. package/src/sdk/utils/wit/get-wit-item.test.ts +1 -1
  199. package/src/wit/built-ins.ts +23 -0
  200. package/src/wit/regex.ts +1 -1
  201. package/src/wit/utils.ts +120 -74
  202. package/src/wit/wit-parser/core/errors/signature.ts +13 -2
  203. package/src/wit/wit-parser/core/signatures.ts +28 -0
  204. package/src/wit/wit-parser/core/types/signatures.test-d.ts +21 -0
  205. package/src/wit/wit-parser/core/types/signatures.ts +19 -2
  206. package/src/wit/wit-parser/core/types/user-defined.test-d.ts +1308 -0
  207. package/src/wit/wit-parser/core/types/user-defined.ts +412 -0
  208. package/src/wit/wit-parser/core/types/utils.test-d.ts +43 -2
  209. package/src/wit/wit-parser/core/types/utils.ts +143 -14
  210. package/src/wit/wit-parser/core/user-defined.test.ts +609 -0
  211. package/src/wit/wit-parser/core/user-defined.ts +392 -0
  212. package/src/wit/wit-parser/core/utils.test.ts +334 -115
  213. package/src/wit/wit-parser/core/utils.ts +54 -38
  214. package/src/wit/wit-parser/parse-wit-parameter.test.ts +282 -4
  215. package/src/wit/wit-parser/parse-wit-parameter.ts +37 -11
  216. package/src/wit/wit-parser/parse-wit.test.ts +738 -12
  217. package/src/wit/wit-parser/parse-wit.ts +25 -10
  218. package/src/wit/wit.ts +37 -16
  219. package/vitest.config.ts +5 -0
  220. package/dist/cjs/sdk/utils/wit/codecs/decimal.js +0 -148
  221. package/dist/cjs/sdk/utils/wit/codecs/decimal.js.map +0 -1
  222. package/dist/cjs/sdk/utils/wit/codecs/enum.js +0 -94
  223. package/dist/cjs/sdk/utils/wit/codecs/enum.js.map +0 -1
  224. package/dist/cjs/sdk/utils/wit/codecs/integer.js +0 -125
  225. package/dist/cjs/sdk/utils/wit/codecs/integer.js.map +0 -1
  226. package/dist/cjs/sdk/utils/wit/codecs/s64.js +0 -57
  227. package/dist/cjs/sdk/utils/wit/codecs/s64.js.map +0 -1
  228. package/dist/cjs/sdk/utils/wit/codecs/u64.js +0 -56
  229. package/dist/cjs/sdk/utils/wit/codecs/u64.js.map +0 -1
  230. package/dist/cjs/wit/wit-parser/core/records.js +0 -70
  231. package/dist/cjs/wit/wit-parser/core/records.js.map +0 -1
  232. package/dist/cjs/wit/wit-parser/core/types/records.js.map +0 -1
  233. package/dist/esm/sdk/utils/wit/codecs/decimal.js +0 -165
  234. package/dist/esm/sdk/utils/wit/codecs/decimal.js.map +0 -1
  235. package/dist/esm/sdk/utils/wit/codecs/enum.js +0 -104
  236. package/dist/esm/sdk/utils/wit/codecs/enum.js.map +0 -1
  237. package/dist/esm/sdk/utils/wit/codecs/integer.js +0 -167
  238. package/dist/esm/sdk/utils/wit/codecs/integer.js.map +0 -1
  239. package/dist/esm/sdk/utils/wit/codecs/s64.js +0 -65
  240. package/dist/esm/sdk/utils/wit/codecs/s64.js.map +0 -1
  241. package/dist/esm/sdk/utils/wit/codecs/u64.js +0 -63
  242. package/dist/esm/sdk/utils/wit/codecs/u64.js.map +0 -1
  243. package/dist/esm/wit/wit-parser/core/records.js +0 -73
  244. package/dist/esm/wit/wit-parser/core/records.js.map +0 -1
  245. package/dist/esm/wit/wit-parser/core/types/records.js +0 -2
  246. package/dist/esm/wit/wit-parser/core/types/records.js.map +0 -1
  247. package/dist/types/sdk/utils/wit/codecs/decimal.d.ts +0 -42
  248. package/dist/types/sdk/utils/wit/codecs/decimal.d.ts.map +0 -1
  249. package/dist/types/sdk/utils/wit/codecs/enum.d.ts +0 -49
  250. package/dist/types/sdk/utils/wit/codecs/enum.d.ts.map +0 -1
  251. package/dist/types/sdk/utils/wit/codecs/integer.d.ts +0 -36
  252. package/dist/types/sdk/utils/wit/codecs/integer.d.ts.map +0 -1
  253. package/dist/types/sdk/utils/wit/codecs/s64.d.ts +0 -23
  254. package/dist/types/sdk/utils/wit/codecs/s64.d.ts.map +0 -1
  255. package/dist/types/sdk/utils/wit/codecs/u64.d.ts +0 -23
  256. package/dist/types/sdk/utils/wit/codecs/u64.d.ts.map +0 -1
  257. package/dist/types/wit/wit-parser/core/records.d.ts +0 -4
  258. package/dist/types/wit/wit-parser/core/records.d.ts.map +0 -1
  259. package/dist/types/wit/wit-parser/core/types/records.d.ts +0 -51
  260. package/dist/types/wit/wit-parser/core/types/records.d.ts.map +0 -1
  261. package/src/sdk/test/e2e.test.ts +0 -194
  262. package/src/sdk/utils/wit/codecs/decimal.ts +0 -215
  263. package/src/sdk/utils/wit/codecs/enum.ts +0 -114
  264. package/src/sdk/utils/wit/codecs/integer.ts +0 -193
  265. package/src/sdk/utils/wit/codecs/s64.ts +0 -76
  266. package/src/sdk/utils/wit/codecs/u64.ts +0 -73
  267. package/src/wit/wit-parser/core/records.test.ts +0 -69
  268. package/src/wit/wit-parser/core/records.ts +0 -101
  269. package/src/wit/wit-parser/core/types/records.test-d.ts +0 -331
  270. package/src/wit/wit-parser/core/types/records.ts +0 -91
@@ -1,331 +0,0 @@
1
- import { expectTypeOf, test } from "vitest";
2
-
3
- // TODO: audit discrepancies in this whole file
4
- import type {
5
- ParseRecords,
6
- ParseRecord,
7
- ParseRecordProperties,
8
- // RecordLookup,
9
- } from "./records.js";
10
-
11
- type Records = {
12
- "contract-address": readonly [
13
- { readonly name: "name"; readonly type: "string" },
14
- { readonly name: "height"; readonly type: "s64" },
15
- { readonly name: "tx-index"; readonly type: "s64" },
16
- ];
17
- };
18
-
19
- test("ParseRecords", () => {
20
- expectTypeOf<
21
- ParseRecords<
22
- [
23
- "record contract-address { name: string, height: s64, tx-index: s64 }",
24
- "record token-pair { a: contract-address, b: contract-address }",
25
- ]
26
- >
27
- >().toEqualTypeOf<{
28
- "contract-address": readonly [
29
- {
30
- readonly name: "name";
31
- readonly type: "string";
32
- readonly internalType: "string";
33
- },
34
- {
35
- readonly name: "height";
36
- readonly type: "s64";
37
- readonly internalType: "s64";
38
- },
39
- {
40
- readonly name: "tx-index";
41
- readonly type: "s64";
42
- readonly internalType: "s64";
43
- },
44
- ];
45
-
46
- "token-pair": readonly [
47
- {
48
- readonly type: "tuple";
49
- readonly name: "a";
50
- // TODO: should include internalType
51
- readonly components: readonly [
52
- {
53
- readonly name: "name";
54
- readonly type: "string";
55
- readonly internalType: "string";
56
- },
57
- {
58
- readonly name: "height";
59
- readonly type: "s64";
60
- readonly internalType: "s64";
61
- },
62
- {
63
- readonly name: "tx-index";
64
- readonly type: "s64";
65
- readonly internalType: "s64";
66
- },
67
- ];
68
- },
69
- {
70
- readonly type: "tuple";
71
- readonly name: "b";
72
- readonly components: readonly [
73
- {
74
- readonly name: "name";
75
- readonly type: "string";
76
- readonly internalType: "string";
77
- },
78
- {
79
- readonly name: "height";
80
- readonly type: "s64";
81
- readonly internalType: "s64";
82
- },
83
- {
84
- readonly name: "tx-index";
85
- readonly type: "s64";
86
- readonly internalType: "s64";
87
- },
88
- ];
89
- },
90
- ];
91
- }>();
92
- expectTypeOf<
93
- ParseRecords<
94
- [
95
- "record contract-address { name: string, height: s64, tx-index: s64 }",
96
- "record token-pair { values: list<contract-address> }",
97
- ]
98
- >
99
- >().toEqualTypeOf<{
100
- "contract-address": readonly [
101
- {
102
- readonly name: "name";
103
- readonly type: "string";
104
- readonly internalType: "string";
105
- },
106
- {
107
- readonly name: "height";
108
- readonly type: "s64";
109
- readonly internalType: "s64";
110
- },
111
- {
112
- readonly name: "tx-index";
113
- readonly type: "s64";
114
- readonly internalType: "s64";
115
- },
116
- ];
117
-
118
- "token-pair": readonly [
119
- {
120
- readonly name: "values";
121
- readonly type: "list<contract-address>";
122
- readonly internalType: "list<contract-address>";
123
- },
124
- ];
125
- }>();
126
- expectTypeOf<
127
- ParseRecords<["record contract-address { cycle: contract-address }"]>
128
- >().toEqualTypeOf<{
129
- "contract-address": readonly [
130
- {
131
- readonly name: "cycle";
132
- readonly type: "tuple";
133
- readonly components: readonly [
134
- [
135
- 'Error: Circular reference detected. Record "contract-address" is a circular reference.',
136
- ],
137
- ];
138
- },
139
- ];
140
- }>();
141
- });
142
-
143
- test("ParseRecord", () => {
144
- expectTypeOf<
145
- ParseRecord<"record contract-address { name: string, height: s64, tx-index: s64 }">
146
- >().toEqualTypeOf<{
147
- readonly name: "contract-address";
148
- readonly components: [
149
- {
150
- readonly name: "name";
151
- readonly type: "string";
152
- readonly internalType: "string";
153
- },
154
- {
155
- readonly name: "height";
156
- readonly type: "s64";
157
- readonly internalType: "s64";
158
- },
159
- {
160
- readonly name: "tx-index";
161
- readonly type: "s64";
162
- readonly internalType: "s64";
163
- },
164
- ];
165
- }>();
166
-
167
- expectTypeOf<
168
- ParseRecord<"record token-pair { a: contract-address, b: contract-address }">
169
- >().toEqualTypeOf<{
170
- readonly name: "token-pair";
171
- readonly components: [
172
- {
173
- readonly name: "a";
174
- readonly type: "contract-address";
175
- readonly internalType: "contract-address";
176
- },
177
- {
178
- readonly name: "b";
179
- readonly type: "contract-address";
180
- readonly internalType: "contract-address";
181
- },
182
- ];
183
- }>();
184
-
185
- expectTypeOf<
186
- ParseRecord<
187
- "record token-pair { a: contract-address, b: contract-address }",
188
- Records
189
- >
190
- >().toEqualTypeOf<{
191
- readonly name: "token-pair";
192
- readonly components: [
193
- {
194
- readonly type: "tuple";
195
- readonly name: "a";
196
- readonly internalType: "contract-address";
197
- readonly components: readonly [
198
- {
199
- // TODO: why aren't we getting internalType here
200
- readonly name: "name";
201
- readonly type: "string";
202
- },
203
- {
204
- readonly name: "height";
205
- readonly type: "s64";
206
- },
207
- {
208
- readonly name: "tx-index";
209
- readonly type: "s64";
210
- },
211
- ];
212
- },
213
- {
214
- readonly type: "tuple";
215
- readonly name: "b";
216
- readonly internalType: "contract-address";
217
- readonly components: readonly [
218
- {
219
- readonly name: "name";
220
- readonly type: "string";
221
- },
222
- {
223
- readonly name: "height";
224
- readonly type: "s64";
225
- },
226
- {
227
- readonly name: "tx-index";
228
- readonly type: "s64";
229
- },
230
- ];
231
- },
232
- ];
233
- }>();
234
- });
235
-
236
- test("ParseRecordProperties", () => {
237
- expectTypeOf<
238
- ParseRecordProperties<"name: string, height: s64, tx-index: s64">
239
- >().toEqualTypeOf<
240
- [
241
- {
242
- readonly name: "name";
243
- readonly type: "string";
244
- readonly internalType: "string";
245
- },
246
- {
247
- readonly name: "height";
248
- readonly type: "s64";
249
- readonly internalType: "s64";
250
- },
251
- {
252
- readonly name: "tx-index";
253
- readonly type: "s64";
254
- readonly internalType: "s64";
255
- },
256
- ]
257
- >();
258
-
259
- expectTypeOf<
260
- ParseRecordProperties<"a: contract-address, b: contract-address">
261
- >().toEqualTypeOf<
262
- [
263
- {
264
- readonly name: "a";
265
- readonly type: "contract-address";
266
- readonly internalType: "contract-address";
267
- },
268
- {
269
- readonly name: "b";
270
- readonly type: "contract-address";
271
- readonly internalType: "contract-address";
272
- },
273
- ]
274
- >();
275
-
276
- expectTypeOf<
277
- ParseRecordProperties<"a: contract-address, b: contract-address", Records>
278
- >().toEqualTypeOf<
279
- [
280
- {
281
- readonly type: "tuple";
282
- readonly name: "a";
283
- readonly internalType: "contract-address";
284
- readonly components: readonly [
285
- { readonly name: "name"; readonly type: "string" },
286
- { readonly name: "height"; readonly type: "s64" },
287
- { readonly name: "tx-index"; readonly type: "s64" },
288
- ];
289
- },
290
- {
291
- readonly type: "tuple";
292
- readonly name: "b";
293
- readonly internalType: "contract-address";
294
- readonly components: readonly [
295
- { readonly name: "name"; readonly type: "string" },
296
- { readonly name: "height"; readonly type: "s64" },
297
- { readonly name: "tx-index"; readonly type: "s64" },
298
- ];
299
- },
300
- ]
301
- >();
302
-
303
- expectTypeOf<
304
- ParseRecordProperties<"values: list<string>", Records>
305
- >().toEqualTypeOf<
306
- [
307
- {
308
- readonly name: "values";
309
- readonly type: "list<string>";
310
- readonly internalType: "list<string>";
311
- },
312
- ]
313
- >();
314
-
315
- expectTypeOf<
316
- ParseRecordProperties<"values: list<contract-address>", Records>
317
- >().toEqualTypeOf<
318
- [
319
- {
320
- readonly name: "values";
321
- readonly type: "list<tuple>";
322
- readonly internalType: "list<contract-address>";
323
- readonly components: readonly [
324
- { readonly name: "name"; readonly type: "string" },
325
- { readonly name: "height"; readonly type: "s64" },
326
- { readonly name: "tx-index"; readonly type: "s64" },
327
- ];
328
- },
329
- ]
330
- >();
331
- });
@@ -1,91 +0,0 @@
1
- import type { WitParameter } from "../../../wit.js";
2
- import type { Trim } from "../../../type-utils.js";
3
- import type { RecordSignature } from "./signatures.js";
4
- import type { ParseWitParameter } from "./utils.js";
5
- import type { Error_ } from "../../../error.js";
6
-
7
- export type RecordLookup = Record<string, readonly WitParameter[]>;
8
-
9
- export type ParseRecords<signatures extends readonly string[]> =
10
- // Create "shallow" version of each record (and filter out non-records or invalid records)
11
- {
12
- [signature in signatures[number] as ParseRecord<signature> extends infer record extends
13
- {
14
- name: string;
15
- }
16
- ? record["name"]
17
- : never]: ParseRecord<signature>["components"];
18
- } extends infer records extends Record<
19
- string,
20
- readonly (WitParameter & { type: string })[]
21
- >
22
- ? // Resolve nested records inside each record
23
- {
24
- [recordName in keyof records]: ResolveRecords<
25
- records[recordName],
26
- records
27
- >;
28
- }
29
- : never;
30
-
31
- export type ParseRecord<
32
- signature extends string,
33
- records extends RecordLookup | unknown = unknown,
34
- > =
35
- signature extends RecordSignature<infer name, infer properties>
36
- ? {
37
- readonly name: Trim<name>;
38
- readonly components: ParseRecordProperties<properties, records>;
39
- }
40
- : never;
41
-
42
- export type ParseRecordProperties<
43
- signature extends string,
44
- records extends RecordLookup | unknown = unknown,
45
- result extends any[] = [],
46
- > =
47
- Trim<signature> extends `${infer head},${infer tail}`
48
- ? ParseRecordProperties<
49
- tail,
50
- records,
51
- [...result, ParseWitParameter<head, { records: records }>]
52
- >
53
- : Trim<signature> extends ""
54
- ? result
55
- : [...result, ParseWitParameter<signature, { records: records }>];
56
-
57
- export type ResolveRecords<
58
- witParameters extends readonly (WitParameter & { type: string })[],
59
- structs extends Record<string, readonly (WitParameter & { type: string })[]>,
60
- keyReferences extends { [_: string]: unknown } | unknown = unknown,
61
- > = readonly [
62
- ...{
63
- [key in keyof witParameters]: witParameters[key]["type"] extends `${infer head extends
64
- string & keyof structs}<${infer tail}>`
65
- ? head extends keyof keyReferences
66
- ? Error_<`Circular reference detected. Record "${witParameters[key]["type"]}" is a circular reference.`>
67
- : {
68
- readonly name: witParameters[key]["name"];
69
- readonly type: `tuple<${tail}>`;
70
- readonly components: ResolveRecords<
71
- structs[head],
72
- structs,
73
- keyReferences & { [_ in head]: true }
74
- >;
75
- }
76
- : // Basic struct (e.g. `type: 'Struct'`)
77
- witParameters[key]["type"] extends keyof structs
78
- ? witParameters[key]["type"] extends keyof keyReferences
79
- ? Error_<`Circular reference detected. Record "${witParameters[key]["type"]}" is a circular reference.`>
80
- : {
81
- readonly name: witParameters[key]["name"];
82
- readonly type: "tuple";
83
- readonly components: ResolveRecords<
84
- structs[witParameters[key]["type"]],
85
- structs,
86
- keyReferences & { [_ in witParameters[key]["type"]]: true }
87
- >;
88
- }
89
- : witParameters[key];
90
- },
91
- ];