@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.
- package/README.md +1 -1
- package/dist/cjs/sdk/actions/kontor/public/call-view.js.map +1 -1
- package/dist/cjs/sdk/chains/definitions/signet.js +2 -2
- package/dist/cjs/sdk/test/e2e.test-deprecated.js +2 -0
- package/dist/cjs/sdk/test/e2e.test-deprecated.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/bool.js +9 -21
- package/dist/cjs/sdk/utils/wit/codecs/bool.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/contract-address.js +92 -0
- package/dist/cjs/sdk/utils/wit/codecs/contract-address.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/index.js +29 -0
- package/dist/cjs/sdk/utils/wit/codecs/index.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/list.js +21 -95
- package/dist/cjs/sdk/utils/wit/codecs/list.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/numerics.js +228 -0
- package/dist/cjs/sdk/utils/wit/codecs/numerics.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/option.js +21 -72
- package/dist/cjs/sdk/utils/wit/codecs/option.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/result.js +32 -0
- package/dist/cjs/sdk/utils/wit/codecs/result.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/codecs/string.js +16 -21
- package/dist/cjs/sdk/utils/wit/codecs/string.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/unit.js +11 -19
- package/dist/cjs/sdk/utils/wit/codecs/unit.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/codecs/util.js +185 -0
- package/dist/cjs/sdk/utils/wit/codecs/util.js.map +1 -0
- package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js +297 -163
- package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
- package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js +214 -221
- package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
- package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
- package/dist/cjs/wit/built-ins.js +19 -0
- package/dist/cjs/wit/built-ins.js.map +1 -0
- package/dist/cjs/wit/regex.js +1 -1
- package/dist/cjs/wit/regex.js.map +1 -1
- package/dist/cjs/wit/wit-parser/core/errors/signature.js +17 -2
- package/dist/cjs/wit/wit-parser/core/errors/signature.js.map +1 -1
- package/dist/cjs/wit/wit-parser/core/signatures.js +18 -0
- package/dist/cjs/wit/wit-parser/core/signatures.js.map +1 -1
- package/dist/cjs/wit/wit-parser/core/types/{records.js → user-defined.js} +1 -1
- package/dist/cjs/wit/wit-parser/core/types/user-defined.js.map +1 -0
- package/dist/cjs/wit/wit-parser/core/user-defined.js +271 -0
- package/dist/cjs/wit/wit-parser/core/user-defined.js.map +1 -0
- package/dist/cjs/wit/wit-parser/core/utils.js +29 -7
- package/dist/cjs/wit/wit-parser/core/utils.js.map +1 -1
- package/dist/cjs/wit/wit-parser/parse-wit-parameter.js +9 -3
- package/dist/cjs/wit/wit-parser/parse-wit-parameter.js.map +1 -1
- package/dist/cjs/wit/wit-parser/parse-wit.js +7 -3
- package/dist/cjs/wit/wit-parser/parse-wit.js.map +1 -1
- package/dist/esm/sdk/actions/kontor/public/call-view.js.map +1 -1
- package/dist/esm/sdk/chains/definitions/signet.js +2 -2
- package/dist/esm/sdk/test/e2e.test-deprecated.js +197 -0
- package/dist/esm/sdk/test/e2e.test-deprecated.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/bool.js +9 -21
- package/dist/esm/sdk/utils/wit/codecs/bool.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/contract-address.js +92 -0
- package/dist/esm/sdk/utils/wit/codecs/contract-address.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/index.js +9 -0
- package/dist/esm/sdk/utils/wit/codecs/index.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/list.js +20 -114
- package/dist/esm/sdk/utils/wit/codecs/list.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/numerics.js +234 -0
- package/dist/esm/sdk/utils/wit/codecs/numerics.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/option.js +21 -88
- package/dist/esm/sdk/utils/wit/codecs/option.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/result.js +29 -0
- package/dist/esm/sdk/utils/wit/codecs/result.js.map +1 -0
- package/dist/esm/sdk/utils/wit/codecs/string.js +22 -22
- package/dist/esm/sdk/utils/wit/codecs/string.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/unit.js +12 -21
- package/dist/esm/sdk/utils/wit/codecs/unit.js.map +1 -1
- package/dist/esm/sdk/utils/wit/codecs/util.js +181 -0
- package/dist/esm/sdk/utils/wit/codecs/util.js.map +1 -0
- package/dist/esm/sdk/utils/wit/decode-wit-parameter.js +322 -188
- package/dist/esm/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
- package/dist/esm/sdk/utils/wit/encode-wit-parameters.js +230 -233
- package/dist/esm/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/wit/built-ins.js +16 -0
- package/dist/esm/wit/built-ins.js.map +1 -0
- package/dist/esm/wit/regex.js +1 -1
- package/dist/esm/wit/regex.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/errors/signature.js +15 -1
- package/dist/esm/wit/wit-parser/core/errors/signature.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/signatures.js +14 -0
- package/dist/esm/wit/wit-parser/core/signatures.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/types/signatures.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/types/user-defined.js +2 -0
- package/dist/esm/wit/wit-parser/core/types/user-defined.js.map +1 -0
- package/dist/esm/wit/wit-parser/core/types/utils.js +25 -0
- package/dist/esm/wit/wit-parser/core/types/utils.js.map +1 -1
- package/dist/esm/wit/wit-parser/core/user-defined.js +280 -0
- package/dist/esm/wit/wit-parser/core/user-defined.js.map +1 -0
- package/dist/esm/wit/wit-parser/core/utils.js +33 -36
- package/dist/esm/wit/wit-parser/core/utils.js.map +1 -1
- package/dist/esm/wit/wit-parser/parse-wit-parameter.js +10 -4
- package/dist/esm/wit/wit-parser/parse-wit-parameter.js.map +1 -1
- package/dist/esm/wit/wit-parser/parse-wit.js +8 -4
- package/dist/esm/wit/wit-parser/parse-wit.js.map +1 -1
- package/dist/types/sdk/actions/kontor/public/call-view.d.ts +2 -1
- package/dist/types/sdk/actions/kontor/public/call-view.d.ts.map +1 -1
- package/dist/types/sdk/chains/definitions/signet.d.ts +2 -2
- package/dist/types/sdk/test/e2e.test-deprecated.d.ts +2 -0
- package/dist/types/sdk/test/e2e.test-deprecated.d.ts.map +1 -0
- package/dist/types/sdk/types/contract.d.ts +5 -5
- package/dist/types/sdk/types/contract.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/bool.d.ts +2 -2
- package/dist/types/sdk/utils/wit/codecs/bool.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts +5 -0
- package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/index.d.ts +9 -0
- package/dist/types/sdk/utils/wit/codecs/index.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/list.d.ts +2 -16
- package/dist/types/sdk/utils/wit/codecs/list.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/numerics.d.ts +14 -0
- package/dist/types/sdk/utils/wit/codecs/numerics.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/option.d.ts +3 -23
- package/dist/types/sdk/utils/wit/codecs/option.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/result.d.ts +4 -0
- package/dist/types/sdk/utils/wit/codecs/result.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/codecs/string.d.ts +6 -2
- package/dist/types/sdk/utils/wit/codecs/string.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/types.d.ts +4 -0
- package/dist/types/sdk/utils/wit/codecs/types.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/unit.d.ts +2 -11
- package/dist/types/sdk/utils/wit/codecs/unit.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/codecs/util.d.ts +12 -0
- package/dist/types/sdk/utils/wit/codecs/util.d.ts.map +1 -0
- package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts +9 -31
- package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts.map +1 -1
- package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts +9 -1
- package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts.map +1 -1
- package/dist/types/wit/built-ins.d.ts +6 -0
- package/dist/types/wit/built-ins.d.ts.map +1 -0
- package/dist/types/wit/regex.d.ts.map +1 -1
- package/dist/types/wit/utils.d.ts +53 -33
- package/dist/types/wit/utils.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/errors/signature.d.ts +7 -1
- package/dist/types/wit/wit-parser/core/errors/signature.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/signatures.d.ts +10 -0
- package/dist/types/wit/wit-parser/core/signatures.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/types/signatures.d.ts +6 -2
- package/dist/types/wit/wit-parser/core/types/signatures.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/types/user-defined.d.ts +134 -0
- package/dist/types/wit/wit-parser/core/types/user-defined.d.ts.map +1 -0
- package/dist/types/wit/wit-parser/core/types/utils.d.ts +86 -11
- package/dist/types/wit/wit-parser/core/types/utils.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/core/user-defined.d.ts +19 -0
- package/dist/types/wit/wit-parser/core/user-defined.d.ts.map +1 -0
- package/dist/types/wit/wit-parser/core/utils.d.ts +8 -4
- package/dist/types/wit/wit-parser/core/utils.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts +11 -5
- package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts.map +1 -1
- package/dist/types/wit/wit-parser/parse-wit.d.ts +7 -3
- package/dist/types/wit/wit-parser/parse-wit.d.ts.map +1 -1
- package/dist/types/wit/wit.d.ts +20 -12
- package/dist/types/wit/wit.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/sdk/actions/get-contract.test-d.ts +430 -50
- package/src/sdk/actions/get-contract.test.ts +324 -24
- package/src/sdk/actions/kontor/public/call-view.ts +2 -1
- package/src/sdk/actions/kontor/public/proc-contract.test-d.ts +107 -0
- package/src/sdk/actions/kontor/public/proc-contract.test.ts +234 -21
- package/src/sdk/actions/kontor/public/view-contract.test-d.ts +240 -0
- package/src/sdk/actions/kontor/public/view-contract.test.ts +613 -18
- package/src/sdk/chains/definitions/signet.ts +2 -2
- package/src/sdk/clients/base/create-rpc-client.test.ts +2 -2
- package/src/sdk/clients/create-public-client.test.ts +2 -2
- package/src/sdk/clients/kontor/create-public-client.test.ts +2 -2
- package/src/sdk/clients/transports/http-rpc.test.ts +0 -24
- package/src/sdk/test/e2e.test-deprecated.ts +195 -0
- package/src/sdk/types/contract.test-d.ts +489 -55
- package/src/sdk/types/contract.ts +6 -7
- package/src/sdk/utils/wit/codecs/bool.test.ts +29 -0
- package/src/sdk/utils/wit/codecs/bool.ts +10 -25
- package/src/sdk/utils/wit/codecs/contract-address.test.ts +37 -0
- package/src/sdk/utils/wit/codecs/contract-address.ts +114 -0
- package/src/sdk/utils/wit/codecs/index.ts +20 -0
- package/src/sdk/utils/wit/codecs/list.test-d.ts +13 -0
- package/src/sdk/utils/wit/codecs/list.test.ts +55 -0
- package/src/sdk/utils/wit/codecs/list.ts +21 -150
- package/src/sdk/utils/wit/codecs/numerics.test.ts +399 -0
- package/src/sdk/utils/wit/codecs/numerics.ts +304 -0
- package/src/sdk/utils/wit/codecs/option.test.ts +71 -0
- package/src/sdk/utils/wit/codecs/option.ts +21 -120
- package/src/sdk/utils/wit/codecs/result.test.ts +82 -0
- package/src/sdk/utils/wit/codecs/result.ts +37 -0
- package/src/sdk/utils/wit/codecs/string.test.ts +62 -0
- package/src/sdk/utils/wit/codecs/string.ts +23 -25
- package/src/sdk/utils/wit/codecs/types.ts +5 -0
- package/src/sdk/utils/wit/codecs/unit.test.ts +27 -0
- package/src/sdk/utils/wit/codecs/unit.ts +14 -38
- package/src/sdk/utils/wit/codecs/util.test.ts +221 -0
- package/src/sdk/utils/wit/codecs/util.ts +193 -0
- package/src/sdk/utils/wit/decode-wit-parameter.test.ts +1264 -32
- package/src/sdk/utils/wit/decode-wit-parameter.ts +508 -211
- package/src/sdk/utils/wit/encode-wit-parameters.test.ts +955 -91
- package/src/sdk/utils/wit/encode-wit-parameters.ts +277 -274
- package/src/sdk/utils/wit/get-wit-item.test.ts +1 -1
- package/src/wit/built-ins.ts +23 -0
- package/src/wit/regex.ts +1 -1
- package/src/wit/utils.ts +120 -74
- package/src/wit/wit-parser/core/errors/signature.ts +13 -2
- package/src/wit/wit-parser/core/signatures.ts +28 -0
- package/src/wit/wit-parser/core/types/signatures.test-d.ts +21 -0
- package/src/wit/wit-parser/core/types/signatures.ts +19 -2
- package/src/wit/wit-parser/core/types/user-defined.test-d.ts +1308 -0
- package/src/wit/wit-parser/core/types/user-defined.ts +412 -0
- package/src/wit/wit-parser/core/types/utils.test-d.ts +43 -2
- package/src/wit/wit-parser/core/types/utils.ts +143 -14
- package/src/wit/wit-parser/core/user-defined.test.ts +609 -0
- package/src/wit/wit-parser/core/user-defined.ts +392 -0
- package/src/wit/wit-parser/core/utils.test.ts +334 -115
- package/src/wit/wit-parser/core/utils.ts +54 -38
- package/src/wit/wit-parser/parse-wit-parameter.test.ts +282 -4
- package/src/wit/wit-parser/parse-wit-parameter.ts +37 -11
- package/src/wit/wit-parser/parse-wit.test.ts +738 -12
- package/src/wit/wit-parser/parse-wit.ts +25 -10
- package/src/wit/wit.ts +37 -16
- package/vitest.config.ts +5 -0
- package/dist/cjs/sdk/utils/wit/codecs/decimal.js +0 -148
- package/dist/cjs/sdk/utils/wit/codecs/decimal.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/enum.js +0 -94
- package/dist/cjs/sdk/utils/wit/codecs/enum.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/integer.js +0 -125
- package/dist/cjs/sdk/utils/wit/codecs/integer.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/s64.js +0 -57
- package/dist/cjs/sdk/utils/wit/codecs/s64.js.map +0 -1
- package/dist/cjs/sdk/utils/wit/codecs/u64.js +0 -56
- package/dist/cjs/sdk/utils/wit/codecs/u64.js.map +0 -1
- package/dist/cjs/wit/wit-parser/core/records.js +0 -70
- package/dist/cjs/wit/wit-parser/core/records.js.map +0 -1
- package/dist/cjs/wit/wit-parser/core/types/records.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/decimal.js +0 -165
- package/dist/esm/sdk/utils/wit/codecs/decimal.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/enum.js +0 -104
- package/dist/esm/sdk/utils/wit/codecs/enum.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/integer.js +0 -167
- package/dist/esm/sdk/utils/wit/codecs/integer.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/s64.js +0 -65
- package/dist/esm/sdk/utils/wit/codecs/s64.js.map +0 -1
- package/dist/esm/sdk/utils/wit/codecs/u64.js +0 -63
- package/dist/esm/sdk/utils/wit/codecs/u64.js.map +0 -1
- package/dist/esm/wit/wit-parser/core/records.js +0 -73
- package/dist/esm/wit/wit-parser/core/records.js.map +0 -1
- package/dist/esm/wit/wit-parser/core/types/records.js +0 -2
- package/dist/esm/wit/wit-parser/core/types/records.js.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/decimal.d.ts +0 -42
- package/dist/types/sdk/utils/wit/codecs/decimal.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/enum.d.ts +0 -49
- package/dist/types/sdk/utils/wit/codecs/enum.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/integer.d.ts +0 -36
- package/dist/types/sdk/utils/wit/codecs/integer.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/s64.d.ts +0 -23
- package/dist/types/sdk/utils/wit/codecs/s64.d.ts.map +0 -1
- package/dist/types/sdk/utils/wit/codecs/u64.d.ts +0 -23
- package/dist/types/sdk/utils/wit/codecs/u64.d.ts.map +0 -1
- package/dist/types/wit/wit-parser/core/records.d.ts +0 -4
- package/dist/types/wit/wit-parser/core/records.d.ts.map +0 -1
- package/dist/types/wit/wit-parser/core/types/records.d.ts +0 -51
- package/dist/types/wit/wit-parser/core/types/records.d.ts.map +0 -1
- package/src/sdk/test/e2e.test.ts +0 -194
- package/src/sdk/utils/wit/codecs/decimal.ts +0 -215
- package/src/sdk/utils/wit/codecs/enum.ts +0 -114
- package/src/sdk/utils/wit/codecs/integer.ts +0 -193
- package/src/sdk/utils/wit/codecs/s64.ts +0 -76
- package/src/sdk/utils/wit/codecs/u64.ts +0 -73
- package/src/wit/wit-parser/core/records.test.ts +0 -69
- package/src/wit/wit-parser/core/records.ts +0 -101
- package/src/wit/wit-parser/core/types/records.test-d.ts +0 -331
- 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
|
-
];
|