@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,24 +1,20 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
WitError,
|
|
3
|
+
WitParameter,
|
|
4
|
+
WitResult,
|
|
5
|
+
WitType,
|
|
6
|
+
} from "../../../wit/wit.js";
|
|
2
7
|
import type {
|
|
3
8
|
WitParametersToPrimitiveTypes,
|
|
4
|
-
WitParameterToPrimitiveType,
|
|
5
9
|
Option,
|
|
6
10
|
} from "../../../wit/utils.js";
|
|
7
11
|
import {
|
|
8
12
|
InvalidWitEncodingTypeError,
|
|
9
13
|
WitEncodingLengthMismatchError,
|
|
10
14
|
} from "../../errors/wit.js";
|
|
15
|
+
import * as C from "./codecs/index.js";
|
|
16
|
+
import type { Codec } from "./codecs/types.js";
|
|
11
17
|
|
|
12
|
-
import { U64Codec } from "./codecs/u64.js";
|
|
13
|
-
import { S64Codec } from "./codecs/s64.js";
|
|
14
|
-
import { DecimalCodec } from "./codecs/decimal.js";
|
|
15
|
-
import { IntegerCodec } from "./codecs/integer.js";
|
|
16
|
-
import { ListCodecFactory } from "./codecs/list.js";
|
|
17
|
-
import { OptionCodecFactory } from "./codecs/option.js";
|
|
18
|
-
import { StringCodec } from "./codecs/string.js";
|
|
19
|
-
import { BoolCodec } from "./codecs/bool.js";
|
|
20
|
-
|
|
21
|
-
// TODO: consider renaming to Wave
|
|
22
18
|
export type EncodeWitParametersReturnType = string;
|
|
23
19
|
|
|
24
20
|
export function encodeWitParameters<
|
|
@@ -29,310 +25,317 @@ export function encodeWitParameters<
|
|
|
29
25
|
? WitParametersToPrimitiveTypes<params>
|
|
30
26
|
: never,
|
|
31
27
|
): EncodeWitParametersReturnType {
|
|
32
|
-
if (params.length !== values.length)
|
|
28
|
+
if (params.length !== values.length) {
|
|
33
29
|
throw new WitEncodingLengthMismatchError({
|
|
34
30
|
expectedLength: params.length as number,
|
|
35
31
|
givenLength: values.length as any,
|
|
36
32
|
});
|
|
33
|
+
}
|
|
37
34
|
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
});
|
|
42
|
-
const encoded = encodeParams(preparedParams);
|
|
35
|
+
const encodedParams = (params as readonly WitParameter[]).map((param, i) =>
|
|
36
|
+
encoderForParam(param).encodeWave(values[i] as any),
|
|
37
|
+
);
|
|
43
38
|
|
|
44
|
-
return
|
|
39
|
+
return encodedParams.join(", ");
|
|
45
40
|
}
|
|
46
41
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
params,
|
|
51
|
-
values,
|
|
52
|
-
}: {
|
|
53
|
-
params: params;
|
|
54
|
-
values: WitParametersToPrimitiveTypes<params>;
|
|
55
|
-
}) {
|
|
56
|
-
const preparedParams: PreparedParam[] = [];
|
|
57
|
-
for (let i = 0; i < params.length; i++) {
|
|
58
|
-
preparedParams.push(prepareParam({ param: params[i]!, value: values[i] }));
|
|
59
|
-
}
|
|
60
|
-
return preparedParams;
|
|
61
|
-
}
|
|
62
|
-
function prepareParam<const param extends WitParameter>({
|
|
63
|
-
param,
|
|
64
|
-
value,
|
|
65
|
-
}: {
|
|
66
|
-
param: param;
|
|
67
|
-
value: WitParameterToPrimitiveType<param>;
|
|
68
|
-
}): PreparedParam {
|
|
69
|
-
// TODO: this is a little smelly
|
|
70
|
-
|
|
71
|
-
const isOption = getOptionComponent(param.type);
|
|
72
|
-
if (isOption) {
|
|
73
|
-
const type = param.type as WitOption;
|
|
74
|
-
|
|
75
|
-
switch (type) {
|
|
76
|
-
case "option<bool>":
|
|
77
|
-
return {
|
|
78
|
-
encoded: OptionCodecFactory.create(BoolCodec)
|
|
79
|
-
.fromJs(value as unknown as Option<boolean>)
|
|
80
|
-
.toWave(),
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
case "option<string>": {
|
|
84
|
-
return {
|
|
85
|
-
encoded: OptionCodecFactory.create(StringCodec)
|
|
86
|
-
.fromJs(value as unknown as Option<string>)
|
|
87
|
-
.toWave(),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// CODEC BUILDER HELPERS - Reduce duplication while keeping explicit switches
|
|
44
|
+
// ============================================================================
|
|
90
45
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
.toWave(),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
46
|
+
/** Wraps a codec in an OptionCodec */
|
|
47
|
+
function option<T>(codec: Codec<T>): Codec<Option<T>> {
|
|
48
|
+
return C.OptionCodec(codec);
|
|
49
|
+
}
|
|
98
50
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
.toWave(),
|
|
104
|
-
};
|
|
105
|
-
}
|
|
51
|
+
/** Wraps a codec in a ListCodec */
|
|
52
|
+
function list<T>(codec: Codec<T>): Codec<T[]> {
|
|
53
|
+
return C.ListCodec(codec);
|
|
54
|
+
}
|
|
106
55
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// ENCODER FACTORY - Single explicit switch showing all supported types
|
|
58
|
+
// ============================================================================
|
|
59
|
+
|
|
60
|
+
export function encoderForParam(param: WitParameter): Codec<unknown> {
|
|
61
|
+
const type = param.type as Exclude<WitType, WitResult | WitError>;
|
|
62
|
+
|
|
63
|
+
switch (type) {
|
|
64
|
+
// --- BASE TYPES -------------------------------------------------
|
|
65
|
+
case "bool":
|
|
66
|
+
return C.BoolCodec;
|
|
67
|
+
case "string":
|
|
68
|
+
return C.StringCodec;
|
|
69
|
+
case "integer":
|
|
70
|
+
return C.IntegerCodec;
|
|
71
|
+
case "decimal":
|
|
72
|
+
return C.DecimalCodec;
|
|
73
|
+
case "u8":
|
|
74
|
+
return C.U8Codec;
|
|
75
|
+
case "u16":
|
|
76
|
+
return C.U16Codec;
|
|
77
|
+
case "u32":
|
|
78
|
+
return C.U32Codec;
|
|
79
|
+
case "u64":
|
|
80
|
+
return C.U64Codec;
|
|
81
|
+
case "s8":
|
|
82
|
+
return C.S8Codec;
|
|
83
|
+
case "s16":
|
|
84
|
+
return C.S16Codec;
|
|
85
|
+
case "s32":
|
|
86
|
+
return C.S32Codec;
|
|
87
|
+
case "s64":
|
|
88
|
+
return C.S64Codec;
|
|
89
|
+
case "contract-address":
|
|
90
|
+
return C.ContractAddressCodec;
|
|
91
|
+
|
|
92
|
+
// --- OPTION<BASE> -----------------------------------------------
|
|
93
|
+
case "option<bool>":
|
|
94
|
+
return option(C.BoolCodec);
|
|
95
|
+
case "option<string>":
|
|
96
|
+
return option(C.StringCodec);
|
|
97
|
+
case "option<integer>":
|
|
98
|
+
return option(C.IntegerCodec);
|
|
99
|
+
case "option<decimal>":
|
|
100
|
+
return option(C.DecimalCodec);
|
|
101
|
+
case "option<u8>":
|
|
102
|
+
return option(C.U8Codec);
|
|
103
|
+
case "option<u16>":
|
|
104
|
+
return option(C.U16Codec);
|
|
105
|
+
case "option<u32>":
|
|
106
|
+
return option(C.U32Codec);
|
|
107
|
+
case "option<u64>":
|
|
108
|
+
return option(C.U64Codec);
|
|
109
|
+
case "option<s8>":
|
|
110
|
+
return option(C.S8Codec);
|
|
111
|
+
case "option<s16>":
|
|
112
|
+
return option(C.S16Codec);
|
|
113
|
+
case "option<s32>":
|
|
114
|
+
return option(C.S32Codec);
|
|
115
|
+
case "option<s64>":
|
|
116
|
+
return option(C.S64Codec);
|
|
117
|
+
case "option<_>":
|
|
118
|
+
return option(C.UnitCodec);
|
|
119
|
+
|
|
120
|
+
// --- LIST<BASE> -------------------------------------------------
|
|
121
|
+
case "list<bool>":
|
|
122
|
+
return list(C.BoolCodec);
|
|
123
|
+
case "list<string>":
|
|
124
|
+
return list(C.StringCodec);
|
|
125
|
+
case "list<integer>":
|
|
126
|
+
return list(C.IntegerCodec);
|
|
127
|
+
case "list<decimal>":
|
|
128
|
+
return list(C.DecimalCodec);
|
|
129
|
+
case "list<u8>":
|
|
130
|
+
return list(C.U8Codec);
|
|
131
|
+
case "list<u16>":
|
|
132
|
+
return list(C.U16Codec);
|
|
133
|
+
case "list<u32>":
|
|
134
|
+
return list(C.U32Codec);
|
|
135
|
+
case "list<u64>":
|
|
136
|
+
return list(C.U64Codec);
|
|
137
|
+
case "list<s8>":
|
|
138
|
+
return list(C.S8Codec);
|
|
139
|
+
case "list<s16>":
|
|
140
|
+
return list(C.S16Codec);
|
|
141
|
+
case "list<s32>":
|
|
142
|
+
return list(C.S32Codec);
|
|
143
|
+
case "list<s64>":
|
|
144
|
+
return list(C.S64Codec);
|
|
145
|
+
|
|
146
|
+
// --- OPTION<LIST<BASE>> -----------------------------------------
|
|
147
|
+
case "option<list<bool>>":
|
|
148
|
+
return option(list(C.BoolCodec));
|
|
149
|
+
case "option<list<string>>":
|
|
150
|
+
return option(list(C.StringCodec));
|
|
151
|
+
case "option<list<integer>>":
|
|
152
|
+
return option(list(C.IntegerCodec));
|
|
153
|
+
case "option<list<decimal>>":
|
|
154
|
+
return option(list(C.DecimalCodec));
|
|
155
|
+
case "option<list<u8>>":
|
|
156
|
+
return option(list(C.U8Codec));
|
|
157
|
+
case "option<list<u16>>":
|
|
158
|
+
return option(list(C.U16Codec));
|
|
159
|
+
case "option<list<u32>>":
|
|
160
|
+
return option(list(C.U32Codec));
|
|
161
|
+
case "option<list<u64>>":
|
|
162
|
+
return option(list(C.U64Codec));
|
|
163
|
+
case "option<list<s8>>":
|
|
164
|
+
return option(list(C.S8Codec));
|
|
165
|
+
case "option<list<s16>>":
|
|
166
|
+
return option(list(C.S16Codec));
|
|
167
|
+
case "option<list<s32>>":
|
|
168
|
+
return option(list(C.S32Codec));
|
|
169
|
+
case "option<list<s64>>":
|
|
170
|
+
return option(list(C.S64Codec));
|
|
171
|
+
|
|
172
|
+
// --- COMPLEX TYPES ----------------------------------------------
|
|
173
|
+
case "record":
|
|
174
|
+
return RecordCodec(param);
|
|
175
|
+
case "option<record>":
|
|
176
|
+
return option(RecordCodec(param));
|
|
177
|
+
case "list<record>":
|
|
178
|
+
return list(RecordCodec(param));
|
|
179
|
+
case "option<list<record>>":
|
|
180
|
+
return option(list(RecordCodec(param)));
|
|
181
|
+
|
|
182
|
+
case "variant":
|
|
183
|
+
return VariantCodec(param);
|
|
184
|
+
case "option<variant>":
|
|
185
|
+
return option(VariantCodec(param));
|
|
186
|
+
case "list<variant>":
|
|
187
|
+
return list(VariantCodec(param));
|
|
188
|
+
case "option<list<variant>>":
|
|
189
|
+
return option(list(VariantCodec(param)));
|
|
190
|
+
|
|
191
|
+
case "enum":
|
|
192
|
+
return EnumCodec(param);
|
|
193
|
+
case "option<enum>":
|
|
194
|
+
return option(EnumCodec(param));
|
|
195
|
+
case "list<enum>":
|
|
196
|
+
return list(EnumCodec(param));
|
|
197
|
+
case "option<list<enum>>":
|
|
198
|
+
return option(list(EnumCodec(param)));
|
|
199
|
+
|
|
200
|
+
default: {
|
|
201
|
+
const _: never = type;
|
|
202
|
+
throw new InvalidWitEncodingTypeError(_, { docsPath: "tk" });
|
|
158
203
|
}
|
|
159
204
|
}
|
|
205
|
+
}
|
|
160
206
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
switch (type) {
|
|
166
|
-
case "list<bool>":
|
|
167
|
-
return {
|
|
168
|
-
encoded: ListCodecFactory.create(BoolCodec)
|
|
169
|
-
.fromJs(value as unknown as boolean[])
|
|
170
|
-
.toWave(),
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
case "list<string>": {
|
|
174
|
-
return {
|
|
175
|
-
encoded: ListCodecFactory.create(StringCodec)
|
|
176
|
-
.fromJs(value as unknown as string[])
|
|
177
|
-
.toWave(),
|
|
178
|
-
};
|
|
179
|
-
}
|
|
207
|
+
// ============================================================================
|
|
208
|
+
// COMPLEX TYPE CODECS
|
|
209
|
+
// ============================================================================
|
|
180
210
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
encoded: ListCodecFactory.create(IntegerCodec)
|
|
184
|
-
.fromJs(value as unknown as bigint[])
|
|
185
|
-
.toWave(),
|
|
186
|
-
};
|
|
187
|
-
}
|
|
211
|
+
export type RecordJs = Record<string, unknown>;
|
|
212
|
+
export type VariantJs = [string] | [string, unknown];
|
|
188
213
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
.fromJs(value as unknown as [bigint, number][])
|
|
193
|
-
.toWave(),
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
case "list<s64>":
|
|
198
|
-
return {
|
|
199
|
-
encoded: ListCodecFactory.create(S64Codec)
|
|
200
|
-
.fromJs(value as unknown as bigint[])
|
|
201
|
-
.toWave(),
|
|
202
|
-
};
|
|
203
|
-
case "list<u64>":
|
|
204
|
-
return {
|
|
205
|
-
encoded: ListCodecFactory.create(U64Codec)
|
|
206
|
-
.fromJs(value as unknown as bigint[])
|
|
207
|
-
.toWave(),
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
case "list<_>":
|
|
211
|
-
case "list<u8>":
|
|
212
|
-
case "list<u16>":
|
|
213
|
-
case "list<u32>":
|
|
214
|
-
case "list<tuple>":
|
|
215
|
-
case "list<s8>":
|
|
216
|
-
case "list<s16>":
|
|
217
|
-
case "list<s32>":
|
|
218
|
-
// TODO: ListCodecFactory.create(TupleCodec) once it exists
|
|
219
|
-
throw new InvalidWitEncodingTypeError(param.type, {
|
|
220
|
-
docsPath: "tk",
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
default: {
|
|
224
|
-
const _: never = type;
|
|
225
|
-
|
|
226
|
-
throw new InvalidWitEncodingTypeError(_, {
|
|
227
|
-
docsPath: "tk",
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
}
|
|
214
|
+
export function RecordCodec(param: WitParameter): Codec<RecordJs> {
|
|
215
|
+
if (!param.components) {
|
|
216
|
+
throw new Error("Record parameter missing components");
|
|
231
217
|
}
|
|
232
218
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
219
|
+
return {
|
|
220
|
+
decodeWave(_: string): RecordJs {
|
|
221
|
+
throw new Error("not implemented");
|
|
222
|
+
},
|
|
236
223
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
224
|
+
encodeWave(value: RecordJs): string {
|
|
225
|
+
const fields = param.components!.map((component) => {
|
|
226
|
+
if (!component.name) {
|
|
227
|
+
throw new Error("Record component missing name");
|
|
228
|
+
}
|
|
240
229
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
230
|
+
const fieldValue = value[component.name];
|
|
231
|
+
if (fieldValue === undefined) {
|
|
232
|
+
throw new Error(`Record missing field "${component.name}"`);
|
|
233
|
+
}
|
|
244
234
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
235
|
+
const codec = encoderForParam(component);
|
|
236
|
+
const encoded = codec.encodeWave(fieldValue);
|
|
248
237
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
255
|
-
throw new InvalidWitEncodingTypeError(param.type, {
|
|
256
|
-
docsPath: "tk",
|
|
257
|
-
});
|
|
238
|
+
return `${component.name}: ${encoded}`;
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
return `{${fields.join(", ")}}`;
|
|
242
|
+
},
|
|
243
|
+
};
|
|
258
244
|
}
|
|
259
245
|
|
|
260
|
-
export function
|
|
261
|
-
|
|
246
|
+
export function VariantCodec(param: WitParameter): Codec<VariantJs> {
|
|
247
|
+
if (!param.components) {
|
|
248
|
+
throw new Error("Variant parameter missing components");
|
|
249
|
+
}
|
|
262
250
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
const matches = type.match(/^list<(.*)>$/);
|
|
251
|
+
return {
|
|
252
|
+
decodeWave(_: string): VariantJs {
|
|
253
|
+
throw new Error("not implemented");
|
|
254
|
+
},
|
|
268
255
|
|
|
269
|
-
|
|
270
|
-
|
|
256
|
+
encodeWave(value: VariantJs): string {
|
|
257
|
+
const [caseName, payload] = value;
|
|
271
258
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
// - "option<list<decimal>>"
|
|
276
|
-
// - "option< result<string, error> >"
|
|
277
|
-
const matches = type.match(/^option<(.*)>$/);
|
|
259
|
+
const variantCase = param.components!.find(
|
|
260
|
+
(c: WitParameter) => c.name === caseName,
|
|
261
|
+
);
|
|
278
262
|
|
|
279
|
-
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
constructor(type: string) {
|
|
283
|
-
super(`Invalid result type "${type}". The error channel must be "error".`);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
export function getResultComponentsStrict(
|
|
288
|
-
type: string,
|
|
289
|
-
): [okType: string, errorType: "error"] | undefined {
|
|
290
|
-
const matches = type.match(/^result<(.*?),(.*?)>$/);
|
|
291
|
-
if (!matches) return undefined;
|
|
263
|
+
if (!variantCase) {
|
|
264
|
+
throw new Error(`Unknown variant case: ${caseName}`);
|
|
265
|
+
}
|
|
292
266
|
|
|
293
|
-
|
|
294
|
-
|
|
267
|
+
// Unit case (no payload)
|
|
268
|
+
if (variantCase.type === "_") {
|
|
269
|
+
if (payload !== undefined) {
|
|
270
|
+
throw new Error(
|
|
271
|
+
`Variant case ${caseName} expects no payload but got: ${payload}`,
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
return caseName;
|
|
275
|
+
}
|
|
295
276
|
|
|
296
|
-
|
|
277
|
+
// Case with payload
|
|
278
|
+
if (payload === undefined) {
|
|
279
|
+
throw new Error(
|
|
280
|
+
`Variant case ${caseName} expects a payload but got undefined`,
|
|
281
|
+
);
|
|
282
|
+
}
|
|
297
283
|
|
|
298
|
-
|
|
299
|
-
|
|
284
|
+
const codec = encoderForParam(variantCase);
|
|
285
|
+
const encoded = codec.encodeWave(payload);
|
|
300
286
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
encoded: BoolCodec.fromJs(value).toWave(),
|
|
287
|
+
return `${caseName}(${encoded})`;
|
|
288
|
+
},
|
|
304
289
|
};
|
|
305
290
|
}
|
|
306
291
|
|
|
307
|
-
function
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
311
|
-
|
|
292
|
+
export function EnumCodec(param: WitParameter): Codec<string> {
|
|
293
|
+
if (!param.components) {
|
|
294
|
+
throw new Error("Enum parameter missing components (cases)");
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
const validCases = param.components.map((c) => c.name);
|
|
312
298
|
|
|
313
|
-
function encodeS64(value: bigint): PreparedParam {
|
|
314
|
-
return {
|
|
315
|
-
encoded: S64Codec.fromJs(value).toWave(),
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
function encodeInteger(value: bigint): PreparedParam {
|
|
319
299
|
return {
|
|
320
|
-
|
|
300
|
+
decodeWave(expr: string): string {
|
|
301
|
+
const caseName = expr.trim();
|
|
302
|
+
if (!validCases.includes(caseName)) {
|
|
303
|
+
throw new Error(
|
|
304
|
+
`Invalid enum case "${caseName}". Valid cases: ${validCases.join(", ")}`,
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
return caseName;
|
|
308
|
+
},
|
|
309
|
+
|
|
310
|
+
encodeWave(value: string): string {
|
|
311
|
+
if (!validCases.includes(value)) {
|
|
312
|
+
throw new Error(
|
|
313
|
+
`Invalid enum case "${value}". Valid cases: ${validCases.join(", ")}`,
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
return value;
|
|
317
|
+
},
|
|
321
318
|
};
|
|
322
319
|
}
|
|
323
320
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
321
|
+
// ============================================================================
|
|
322
|
+
// DEPRECATED - Keep for backward compatibility if needed
|
|
323
|
+
// ============================================================================
|
|
324
|
+
|
|
325
|
+
/** @deprecated Use encoderForParam instead */
|
|
326
|
+
export function getListComponents(type: string): string | undefined {
|
|
327
|
+
const matches = type.match(/^list<(.*)>$/);
|
|
328
|
+
return matches ? matches[1]?.trim() : undefined;
|
|
328
329
|
}
|
|
329
330
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
331
|
+
/** @deprecated Use encoderForParam instead */
|
|
332
|
+
export function getOptionComponent(type: string): string | undefined {
|
|
333
|
+
const matches = type.match(/^option<(.*)>$/);
|
|
334
|
+
return matches ? matches[1]?.trim() : undefined;
|
|
334
335
|
}
|
|
335
336
|
|
|
336
|
-
|
|
337
|
-
|
|
337
|
+
export class InvalidResultTypeError extends Error {
|
|
338
|
+
constructor(type: string) {
|
|
339
|
+
super(`Invalid result type "${type}". The error channel must be "error".`);
|
|
340
|
+
}
|
|
338
341
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { WitParameter } from "./wit.js";
|
|
2
|
+
|
|
3
|
+
export namespace WitError {
|
|
4
|
+
export const param: WitParameter = {
|
|
5
|
+
name: "error",
|
|
6
|
+
type: "variant",
|
|
7
|
+
internalType: "error",
|
|
8
|
+
components: [
|
|
9
|
+
{ name: "message", type: "string" },
|
|
10
|
+
{ name: "overflow", type: "string" },
|
|
11
|
+
{ name: "div-by-zero", type: "string" },
|
|
12
|
+
{ name: "syntax", type: "string" },
|
|
13
|
+
{ name: "validation", type: "string" },
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export type T =
|
|
18
|
+
| ["message", string]
|
|
19
|
+
| ["overflow", string]
|
|
20
|
+
| ["div-by-zero", string]
|
|
21
|
+
| ["syntax", string]
|
|
22
|
+
| ["validation", string];
|
|
23
|
+
}
|
package/src/wit/regex.ts
CHANGED