@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
package/src/wit/utils.ts
CHANGED
|
@@ -10,13 +10,16 @@ import type {
|
|
|
10
10
|
TypedData,
|
|
11
11
|
WitParameterKind,
|
|
12
12
|
WitParameter,
|
|
13
|
-
|
|
13
|
+
WitRecord,
|
|
14
14
|
TypedDataType,
|
|
15
15
|
WitOption,
|
|
16
16
|
WitResult,
|
|
17
|
+
WitVariant,
|
|
18
|
+
WitEnum,
|
|
17
19
|
} from "./wit.js";
|
|
18
20
|
import type { ResolvedRegister } from "./register.js";
|
|
19
21
|
import type { Merge, Pretty } from "./type-utils.js";
|
|
22
|
+
import type { WitError } from "./built-ins.js";
|
|
20
23
|
|
|
21
24
|
export type IsWit<wit> = wit extends Wit ? true : false;
|
|
22
25
|
|
|
@@ -40,9 +43,8 @@ type NoBits = "";
|
|
|
40
43
|
type GreaterThan48Bits = Exclude<MBits, 8 | 16 | 32 | NoBits>;
|
|
41
44
|
type LessThanOrEqualTo48Bits = Exclude<MBits, GreaterThan48Bits | NoBits>;
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
export type
|
|
45
|
-
export type Result<T, E> = { ok: true; value: T } | { ok: false; error: E };
|
|
46
|
+
export type Option<T> = ["none"] | ["some", T];
|
|
47
|
+
export type Result<T, E> = ["ok", T] | ["err", E];
|
|
46
48
|
|
|
47
49
|
export type WitTypeToPrimitiveType<witType extends WitType> =
|
|
48
50
|
PrimitiveTypeLookup[witType];
|
|
@@ -55,7 +57,9 @@ interface PrimitiveTypeLookup
|
|
|
55
57
|
bool: boolean;
|
|
56
58
|
address: string;
|
|
57
59
|
string: string;
|
|
58
|
-
|
|
60
|
+
record: Record<string, unknown>;
|
|
61
|
+
variant: [string, unknown];
|
|
62
|
+
enum: string;
|
|
59
63
|
error: unknown;
|
|
60
64
|
integer: ResolvedRegister["bigIntType"];
|
|
61
65
|
decimal: ResolvedRegister["decimalType"];
|
|
@@ -75,8 +79,7 @@ type WitListMap = { [_ in WitList]: readonly unknown[] };
|
|
|
75
79
|
|
|
76
80
|
type WitOptionMap = { [_ in WitOption]: Option<unknown> };
|
|
77
81
|
|
|
78
|
-
|
|
79
|
-
type WitResultMap = { [_ in WitResult]: Result<unknown, string> };
|
|
82
|
+
type WitResultMap = { [_ in WitResult]: Result<unknown, WitError.T> };
|
|
80
83
|
|
|
81
84
|
type BitsTypeLookup = {
|
|
82
85
|
[key in MBits]: ResolvedRegister[key extends LessThanOrEqualTo48Bits
|
|
@@ -84,61 +87,21 @@ type BitsTypeLookup = {
|
|
|
84
87
|
: "bigIntType"];
|
|
85
88
|
};
|
|
86
89
|
|
|
87
|
-
// TODO: add record / option
|
|
88
90
|
type WitBasicType = Exclude<
|
|
89
91
|
WitType,
|
|
90
|
-
|
|
92
|
+
WitRecord | WitList | WitResult | WitOption | WitVariant | WitEnum
|
|
91
93
|
>;
|
|
92
94
|
|
|
93
95
|
export type WitParametersToPrimitiveTypes<
|
|
94
96
|
witParameters extends readonly WitParameter[],
|
|
95
97
|
witParameterKind extends WitParameterKind = WitParameterKind,
|
|
96
98
|
> = Pretty<{
|
|
97
|
-
// TODO: Convert to labeled tuple so parameter names show up in autocomplete
|
|
98
|
-
// e.g. [foo: string, bar: string]
|
|
99
|
-
// https://github.com/microsoft/TypeScript/issues/44939
|
|
100
99
|
[key in keyof witParameters]: WitParameterToPrimitiveType<
|
|
101
100
|
witParameters[key],
|
|
102
101
|
witParameterKind
|
|
103
102
|
>;
|
|
104
103
|
}>;
|
|
105
104
|
|
|
106
|
-
export type WitParameterToPrimitiveType<
|
|
107
|
-
witParameter extends WitParameter | { name: string; type: unknown },
|
|
108
|
-
witParameterKind extends WitParameterKind = WitParameterKind,
|
|
109
|
-
> =
|
|
110
|
-
// 1. Basic type (non-tuple, non-list) – uses PrimitiveTypeLookup (ints, bool, string, option<string>, result<u64,error>, etc.)
|
|
111
|
-
witParameter["type"] extends WitBasicType
|
|
112
|
-
? WitTypeToPrimitiveType<witParameter["type"]>
|
|
113
|
-
: // 2. Explicit tuple with components
|
|
114
|
-
witParameter extends {
|
|
115
|
-
type: WitTuple;
|
|
116
|
-
components: infer components extends readonly WitParameter[];
|
|
117
|
-
}
|
|
118
|
-
? WitComponentsToPrimitiveType<components, witParameterKind>
|
|
119
|
-
: // 3. list<...>
|
|
120
|
-
MaybeExtractListParameterType<
|
|
121
|
-
witParameter["type"]
|
|
122
|
-
> extends infer head extends string
|
|
123
|
-
? WitListToPrimitiveType<witParameter, witParameterKind, head>
|
|
124
|
-
: // 4. option<...>
|
|
125
|
-
MaybeExtractOptionParameterType<
|
|
126
|
-
witParameter["type"]
|
|
127
|
-
> extends infer inner extends string
|
|
128
|
-
? WitOptionToPrimitiveType<witParameter, witParameterKind, inner>
|
|
129
|
-
: // 5. result<Ok, Err>
|
|
130
|
-
MaybeExtractResultParameterType<witParameter["type"]> extends [
|
|
131
|
-
infer ok extends string,
|
|
132
|
-
infer _err extends string,
|
|
133
|
-
]
|
|
134
|
-
? WitResultToPrimitiveType<witParameter, witParameterKind, ok>
|
|
135
|
-
: // 6. Fallback / error
|
|
136
|
-
ResolvedRegister["strictWitType"] extends true
|
|
137
|
-
? Error_<`Unknown type '${witParameter["type"] & string}'.`>
|
|
138
|
-
: witParameter extends { components: Error_<string> }
|
|
139
|
-
? witParameter["components"]
|
|
140
|
-
: unknown;
|
|
141
|
-
|
|
142
105
|
type MaybeExtractListParameterType<T> = T extends `list<${infer Inner}>`
|
|
143
106
|
? Inner
|
|
144
107
|
: undefined;
|
|
@@ -174,35 +137,121 @@ type WitResultToPrimitiveType<
|
|
|
174
137
|
witParameter extends WitParameter | { name: string; type: unknown },
|
|
175
138
|
witParameterKind extends WitParameterKind,
|
|
176
139
|
ok extends string,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
140
|
+
> =
|
|
141
|
+
Result<
|
|
142
|
+
WitParameterToPrimitiveType<
|
|
143
|
+
Merge<witParameter, { type: ok }>,
|
|
144
|
+
witParameterKind
|
|
145
|
+
>,
|
|
146
|
+
WitError.T
|
|
147
|
+
> extends infer R
|
|
148
|
+
? R
|
|
149
|
+
: never;
|
|
150
|
+
|
|
151
|
+
export type WitParameterToPrimitiveType<
|
|
152
|
+
witParameter extends WitParameter | { name: string; type: unknown },
|
|
153
|
+
witParameterKind extends WitParameterKind = WitParameterKind,
|
|
154
|
+
> =
|
|
155
|
+
// 1. Basic type
|
|
156
|
+
witParameter["type"] extends WitBasicType
|
|
157
|
+
? WitTypeToPrimitiveType<witParameter["type"]>
|
|
158
|
+
: // 2. Variant (discriminated union)
|
|
159
|
+
witParameter extends {
|
|
160
|
+
type: "variant";
|
|
161
|
+
components?: infer components extends readonly WitParameter[];
|
|
162
|
+
}
|
|
163
|
+
? WitVariantToPrimitiveType<components, witParameterKind>
|
|
164
|
+
: // 3. Enum (string literal union)
|
|
165
|
+
witParameter extends {
|
|
166
|
+
type: "enum";
|
|
167
|
+
// components?: infer components extends readonly {
|
|
168
|
+
// name: string;
|
|
169
|
+
// type: "_";
|
|
170
|
+
// }[];
|
|
171
|
+
}
|
|
172
|
+
? witParameter extends {
|
|
173
|
+
components?: infer components extends readonly WitParameter[];
|
|
174
|
+
}
|
|
175
|
+
? WitEnumToPrimitiveType<components>
|
|
176
|
+
: never
|
|
177
|
+
: // 4. Explicite record with components
|
|
178
|
+
witParameter extends {
|
|
179
|
+
type: WitRecord;
|
|
180
|
+
components: infer components extends readonly WitParameter[];
|
|
181
|
+
}
|
|
182
|
+
? WitComponentsToPrimitiveType<components, witParameterKind>
|
|
183
|
+
: // 5. list<...>
|
|
184
|
+
MaybeExtractListParameterType<
|
|
185
|
+
witParameter["type"]
|
|
186
|
+
> extends infer head extends string
|
|
187
|
+
? WitListToPrimitiveType<witParameter, witParameterKind, head>
|
|
188
|
+
: // 6. option<...>
|
|
189
|
+
MaybeExtractOptionParameterType<
|
|
190
|
+
witParameter["type"]
|
|
191
|
+
> extends infer inner extends string
|
|
192
|
+
? WitOptionToPrimitiveType<witParameter, witParameterKind, inner>
|
|
193
|
+
: // 7. result<Ok, Err>
|
|
194
|
+
MaybeExtractResultParameterType<witParameter["type"]> extends [
|
|
195
|
+
infer ok extends string,
|
|
196
|
+
infer _err extends "error",
|
|
197
|
+
]
|
|
198
|
+
? WitResultToPrimitiveType<witParameter, witParameterKind, ok>
|
|
199
|
+
: ResolvedRegister["strictWitType"] extends true
|
|
200
|
+
? Error_<`Unknown type '${witParameter["type"] & string}'.`>
|
|
201
|
+
: witParameter extends { components: Error_<string> }
|
|
202
|
+
? witParameter["components"]
|
|
203
|
+
: unknown;
|
|
204
|
+
|
|
205
|
+
type WitVariantToPrimitiveType<
|
|
206
|
+
components extends readonly WitParameter[],
|
|
207
|
+
witParameterKind extends WitParameterKind,
|
|
208
|
+
> = {
|
|
209
|
+
[K in keyof components]: components[K] extends {
|
|
210
|
+
name: infer CaseName extends string;
|
|
211
|
+
}
|
|
212
|
+
? components[K] extends { type: "_" }
|
|
213
|
+
? [CaseName] // Unit case (no value)
|
|
214
|
+
: components[K] extends {
|
|
215
|
+
type: WitRecord;
|
|
216
|
+
name: string;
|
|
217
|
+
components?: infer components extends readonly WitParameter[];
|
|
218
|
+
}
|
|
219
|
+
? [CaseName, WitComponentsToPrimitiveType<components, witParameterKind>]
|
|
220
|
+
: [
|
|
221
|
+
CaseName,
|
|
222
|
+
WitParameterToPrimitiveType<components[K], witParameterKind>,
|
|
223
|
+
// components[K],
|
|
224
|
+
]
|
|
225
|
+
: never;
|
|
226
|
+
}[number];
|
|
227
|
+
|
|
228
|
+
type WitEnumToPrimitiveType<components extends readonly WitParameter[]> =
|
|
229
|
+
Readonly<{
|
|
230
|
+
[K in keyof components]: components[K] extends {
|
|
231
|
+
name: infer CaseName extends string;
|
|
232
|
+
}
|
|
233
|
+
? components[K] extends { type: "_" }
|
|
234
|
+
? CaseName
|
|
235
|
+
: never
|
|
236
|
+
: never;
|
|
237
|
+
}>[number];
|
|
238
|
+
|
|
186
239
|
type WitComponentsToPrimitiveType<
|
|
187
240
|
components extends readonly WitParameter[],
|
|
188
241
|
witParameterKind extends WitParameterKind,
|
|
189
242
|
> = components extends readonly []
|
|
190
243
|
? []
|
|
191
|
-
:
|
|
192
|
-
// set where each name is coerced to a string and undefined|"" are excluded
|
|
193
|
-
components[number]["name"] extends Exclude<
|
|
244
|
+
: components[number]["name"] extends Exclude<
|
|
194
245
|
components[number]["name"] & string,
|
|
195
246
|
undefined | ""
|
|
196
247
|
>
|
|
197
|
-
?
|
|
198
|
-
{
|
|
248
|
+
? {
|
|
199
249
|
[component in components[number] as component["name"] & {}]: WitParameterToPrimitiveType<
|
|
200
250
|
component,
|
|
201
251
|
witParameterKind
|
|
202
252
|
>;
|
|
203
253
|
}
|
|
204
|
-
:
|
|
205
|
-
{
|
|
254
|
+
: {
|
|
206
255
|
[key in keyof components]: WitParameterToPrimitiveType<
|
|
207
256
|
components[key],
|
|
208
257
|
witParameterKind
|
|
@@ -215,10 +264,9 @@ export type TypedDataToPrimitiveTypes<
|
|
|
215
264
|
keyReferences extends { [_: string]: unknown } | unknown = unknown,
|
|
216
265
|
> = {
|
|
217
266
|
[key in keyof typedData]: {
|
|
218
|
-
|
|
219
|
-
[key2 in typedData[key][number] as key2["name"]]: key2["type"] extends key // 1. Eliminate self-referencing structs
|
|
267
|
+
[key2 in typedData[key][number] as key2["name"]]: key2["type"] extends key
|
|
220
268
|
? Error_<`Cannot convert self-referencing struct '${key2["type"]}' to primitive type.`>
|
|
221
|
-
: key2["type"] extends keyof typedData
|
|
269
|
+
: key2["type"] extends keyof typedData
|
|
222
270
|
? key2["type"] extends keyof keyReferences
|
|
223
271
|
? Error_<`Circular reference detected. '${key2["type"]}' is a circular reference.`>
|
|
224
272
|
: TypedDataToPrimitiveTypes<
|
|
@@ -226,13 +274,12 @@ export type TypedDataToPrimitiveTypes<
|
|
|
226
274
|
witParameterKind,
|
|
227
275
|
keyReferences & { [_ in key2["type"] | key]: true }
|
|
228
276
|
>[key2["type"]]
|
|
229
|
-
:
|
|
230
|
-
key2["type"] extends `${infer type extends keyof typedData &
|
|
277
|
+
: key2["type"] extends `${infer type extends keyof typedData &
|
|
231
278
|
string}[${infer tail}]`
|
|
232
279
|
? WitParameterToPrimitiveType<
|
|
233
280
|
{
|
|
234
281
|
name: key2["name"];
|
|
235
|
-
type: `
|
|
282
|
+
type: `record[${tail}]`;
|
|
236
283
|
components: _TypedDataParametersToWitParameters<
|
|
237
284
|
typedData[type],
|
|
238
285
|
typedData,
|
|
@@ -241,11 +288,10 @@ export type TypedDataToPrimitiveTypes<
|
|
|
241
288
|
},
|
|
242
289
|
witParameterKind
|
|
243
290
|
>
|
|
244
|
-
: key2["type"] extends TypedDataType
|
|
291
|
+
: key2["type"] extends TypedDataType
|
|
245
292
|
? WitParameterToPrimitiveType<key2, witParameterKind>
|
|
246
293
|
: Error_<`Cannot convert unknown type '${key2["type"]}' to primitive type.`>;
|
|
247
294
|
};
|
|
248
|
-
// Ensure the result is "Prettied"
|
|
249
295
|
} & unknown;
|
|
250
296
|
|
|
251
297
|
type _TypedDataParametersToWitParameters<
|
|
@@ -261,7 +307,7 @@ type _TypedDataParametersToWitParameters<
|
|
|
261
307
|
? typedDataParameter["type"] extends keyof typedData & string
|
|
262
308
|
? {
|
|
263
309
|
name: typedDataParameter["name"];
|
|
264
|
-
type: "
|
|
310
|
+
type: "record";
|
|
265
311
|
components: typedDataParameter["type"] extends keyof keyReferences
|
|
266
312
|
? Error_<`Circular reference detected. '${typedDataParameter["type"]}' is a circular reference.`>
|
|
267
313
|
: _TypedDataParametersToWitParameters<
|
|
@@ -274,7 +320,7 @@ type _TypedDataParametersToWitParameters<
|
|
|
274
320
|
keyof typedData & string}[${infer tail}]`
|
|
275
321
|
? {
|
|
276
322
|
name: typedDataParameter["name"];
|
|
277
|
-
type: `
|
|
323
|
+
type: `record[${tail}]`;
|
|
278
324
|
components: type extends keyof keyReferences
|
|
279
325
|
? Error_<`Circular reference detected. '${typedDataParameter["type"]}' is a circular reference.`>
|
|
280
326
|
: _TypedDataParametersToWitParameters<
|
|
@@ -9,7 +9,7 @@ export class InvalidSignatureError extends BaseError {
|
|
|
9
9
|
type,
|
|
10
10
|
}: {
|
|
11
11
|
signature: string;
|
|
12
|
-
type: WitItemType | "record";
|
|
12
|
+
type: WitItemType | "record" | "variant" | "enum";
|
|
13
13
|
}) {
|
|
14
14
|
super(`Invalid ${type} signature.`, {
|
|
15
15
|
details: signature,
|
|
@@ -28,7 +28,7 @@ export class UnknownSignatureError extends BaseError {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export class InvalidRecordSignatureError extends BaseError {
|
|
31
|
-
override name = "
|
|
31
|
+
override name = "InvalidRecordSignatureError";
|
|
32
32
|
|
|
33
33
|
constructor({ signature }: { signature: string }) {
|
|
34
34
|
super("Invalid record signature.", {
|
|
@@ -37,3 +37,14 @@ export class InvalidRecordSignatureError extends BaseError {
|
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
+
|
|
41
|
+
export class InvalidVariantSignatureError extends BaseError {
|
|
42
|
+
override name = "InvalidVariantSignatureError";
|
|
43
|
+
|
|
44
|
+
constructor({ signature }: { signature: string }) {
|
|
45
|
+
super("Invalid variant signature.", {
|
|
46
|
+
details: signature,
|
|
47
|
+
metaMessages: ["No variant cases"],
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -50,3 +50,31 @@ export function execRecordSignature(signature: string) {
|
|
|
50
50
|
properties: string;
|
|
51
51
|
}>(witRecordSignatureRegex, signature);
|
|
52
52
|
}
|
|
53
|
+
|
|
54
|
+
const witVariantSignatureRegex =
|
|
55
|
+
/^variant\s+(?<name>[a-zA-Z$_][a-zA-Z0-9$_-]*)\s*\{(?<cases>[\s\S]*?)\}$/;
|
|
56
|
+
|
|
57
|
+
export function isVariantSignature(signature: string) {
|
|
58
|
+
return witVariantSignatureRegex.test(signature);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function execVariantSignature(signature: string) {
|
|
62
|
+
return execTyped<{
|
|
63
|
+
name: string;
|
|
64
|
+
cases: string;
|
|
65
|
+
}>(witVariantSignatureRegex, signature);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const witEnumSignatureRegex =
|
|
69
|
+
/^enum\s+(?<name>[a-zA-Z$_][a-zA-Z0-9$_-]*)\s*\{(?<cases>[\s\S]*?)\}$/;
|
|
70
|
+
|
|
71
|
+
export function isEnumSignature(signature: string) {
|
|
72
|
+
return witEnumSignatureRegex.test(signature);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function execEnumSignature(signature: string) {
|
|
76
|
+
return execTyped<{
|
|
77
|
+
name: string;
|
|
78
|
+
cases: string;
|
|
79
|
+
}>(witEnumSignatureRegex, signature);
|
|
80
|
+
}
|
|
@@ -3,6 +3,8 @@ import { assertType, test } from "vitest";
|
|
|
3
3
|
import type {
|
|
4
4
|
IsFunctionSignature,
|
|
5
5
|
IsRecordSignature,
|
|
6
|
+
IsEnumSignature,
|
|
7
|
+
IsVariantSignature,
|
|
6
8
|
IsSignature,
|
|
7
9
|
} from "./signatures.js";
|
|
8
10
|
|
|
@@ -29,6 +31,17 @@ test("IsRecordSignature", () => {
|
|
|
29
31
|
IsRecordSignature<"record token-pair { a: contract-address, b: contract-address }">
|
|
30
32
|
>(true);
|
|
31
33
|
});
|
|
34
|
+
|
|
35
|
+
test("IsEnumSignature", () => {
|
|
36
|
+
assertType<IsEnumSignature<"enum color { hot-pink, lime-green, nave-blue }">>;
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test("IsVariantSignature", () => {
|
|
40
|
+
assertType<
|
|
41
|
+
IsVariantSignature<"variant allowed-destinations { none, any, restricted(list<address>) }">
|
|
42
|
+
>;
|
|
43
|
+
});
|
|
44
|
+
|
|
32
45
|
test("IsSignature", () => {
|
|
33
46
|
assertType<
|
|
34
47
|
IsSignature<"record contract-address { name: string, height: s64, tx-index: s64 }">
|
|
@@ -49,4 +62,12 @@ test("IsSignature", () => {
|
|
|
49
62
|
assertType<
|
|
50
63
|
IsSignature<"export cached-values: func(ctx: borrow<view-context>) -> list<u64>;">
|
|
51
64
|
>(true);
|
|
65
|
+
|
|
66
|
+
assertType<IsSignature<"enum color { hot-pink, lime-green, nave-blue }">>(
|
|
67
|
+
true,
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
assertType<
|
|
71
|
+
IsSignature<"variant allowed-destinations { none, any, restricted(list<address>) }">
|
|
72
|
+
>(true);
|
|
52
73
|
});
|
|
@@ -2,7 +2,9 @@ import type { Error_ } from "../../../error.js";
|
|
|
2
2
|
|
|
3
3
|
export type IsSignature<type extends string> =
|
|
4
4
|
| (IsFunctionSignature<type> extends true ? true : never)
|
|
5
|
-
| (IsRecordSignature<type> extends true ? true : never)
|
|
5
|
+
| (IsRecordSignature<type> extends true ? true : never)
|
|
6
|
+
| (IsVariantSignature<type> extends true ? true : never)
|
|
7
|
+
| (IsEnumSignature<type> extends true ? true : never);
|
|
6
8
|
|
|
7
9
|
export type Signature<
|
|
8
10
|
string1 extends string,
|
|
@@ -28,6 +30,22 @@ export type RecordSignature<
|
|
|
28
30
|
export type IsRecordSignature<signature extends string> =
|
|
29
31
|
signature extends RecordSignature<infer name> ? IsName<name> : false;
|
|
30
32
|
|
|
33
|
+
export type VariantSignature<
|
|
34
|
+
name extends string = string,
|
|
35
|
+
cases extends string = string,
|
|
36
|
+
> = `variant ${name} { ${cases} }`;
|
|
37
|
+
|
|
38
|
+
export type IsVariantSignature<signature extends string> =
|
|
39
|
+
signature extends VariantSignature<infer name> ? IsName<name> : false;
|
|
40
|
+
|
|
41
|
+
export type EnumSignature<
|
|
42
|
+
name extends string = string,
|
|
43
|
+
cases extends string = string,
|
|
44
|
+
> = `enum ${name} { ${cases} }`;
|
|
45
|
+
|
|
46
|
+
export type IsEnumSignature<signature extends string> =
|
|
47
|
+
signature extends EnumSignature<infer name> ? IsName<name> : false;
|
|
48
|
+
|
|
31
49
|
export type FunctionSignature<
|
|
32
50
|
name extends string = string,
|
|
33
51
|
tail extends string = string,
|
|
@@ -98,7 +116,6 @@ export type WitKeyword =
|
|
|
98
116
|
| "variant"
|
|
99
117
|
| "option"
|
|
100
118
|
| "result"
|
|
101
|
-
| "tuple"
|
|
102
119
|
| "bool"
|
|
103
120
|
| "s8"
|
|
104
121
|
| "s16"
|