@kontor/kontor-sdk 1.0.0-alpha.19 → 1.0.0-alpha.20
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/dist/src/exports/index.test.js +27 -0
- package/dist/src/exports/index.test.js.map +1 -0
- package/dist/src/sdk/accounts/private-key-to-account.js +42 -0
- package/dist/src/sdk/accounts/private-key-to-account.js.map +1 -0
- package/dist/src/sdk/actions/get-contract.js +50 -0
- package/dist/src/sdk/actions/get-contract.js.map +1 -0
- package/dist/src/sdk/actions/get-contract.test-d.js +43 -0
- package/dist/src/sdk/actions/get-contract.test-d.js.map +1 -0
- package/dist/src/sdk/actions/kontor/public/call-view.js +21 -0
- package/dist/src/sdk/actions/kontor/public/call-view.js.map +1 -0
- package/dist/src/sdk/actions/kontor/public/inspect.js +20 -0
- package/dist/src/sdk/actions/kontor/public/inspect.js.map +1 -0
- package/dist/src/sdk/actions/kontor/public/proc-contract.test.js +47 -0
- package/dist/src/sdk/actions/kontor/public/proc-contract.test.js.map +1 -0
- package/dist/src/sdk/actions/kontor/public/view-contract.js +47 -0
- package/dist/src/sdk/actions/kontor/public/view-contract.js.map +1 -0
- package/dist/src/sdk/actions/kontor/public/view-contract.test-d.js +29 -0
- package/dist/src/sdk/actions/kontor/public/view-contract.test-d.js.map +1 -0
- package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js +59 -0
- package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js.map +1 -0
- package/dist/src/sdk/actions/wallet/get-addresses.js +20 -0
- package/dist/src/sdk/actions/wallet/get-addresses.js.map +1 -0
- package/dist/src/sdk/actions/wallet/sign-psbt.js +28 -0
- package/dist/src/sdk/actions/wallet/sign-psbt.js.map +1 -0
- package/dist/src/sdk/clients/base/create-http-client.js +41 -0
- package/dist/src/sdk/clients/base/create-http-client.js.map +1 -0
- package/dist/src/sdk/clients/base/create-rpc-client.js +41 -0
- package/dist/src/sdk/clients/base/create-rpc-client.js.map +1 -0
- package/dist/src/sdk/clients/base/create-rpc-client.test.js +151 -0
- package/dist/src/sdk/clients/base/create-rpc-client.test.js.map +1 -0
- package/dist/src/sdk/clients/create-public-client.js +13 -0
- package/dist/src/sdk/clients/create-public-client.js.map +1 -0
- package/dist/src/sdk/clients/create-public-client.test.js +121 -0
- package/dist/src/sdk/clients/create-public-client.test.js.map +1 -0
- package/dist/src/sdk/clients/create-wallet-client.js +14 -0
- package/dist/src/sdk/clients/create-wallet-client.js.map +1 -0
- package/dist/src/sdk/clients/kontor/create-public-client.js +14 -0
- package/dist/src/sdk/clients/kontor/create-public-client.js.map +1 -0
- package/dist/src/sdk/clients/kontor/create-public-client.test.js +45 -0
- package/dist/src/sdk/clients/kontor/create-public-client.test.js.map +1 -0
- package/dist/src/sdk/clients/transports/create-rpc-transport.js +36 -0
- package/dist/src/sdk/clients/transports/create-rpc-transport.js.map +1 -0
- package/dist/src/sdk/contracts/wits.js +26 -0
- package/dist/src/sdk/contracts/wits.js.map +1 -0
- package/dist/src/sdk/types/chain.js +2 -0
- package/dist/src/sdk/types/chain.js.map +1 -0
- package/dist/src/sdk/types/contract.js +2 -0
- package/dist/src/sdk/types/contract.js.map +1 -0
- package/dist/src/sdk/types/contract.test-d.js +34 -0
- package/dist/src/sdk/types/contract.test-d.js.map +1 -0
- package/dist/src/sdk/types/http-schema.js +73 -0
- package/dist/src/sdk/types/http-schema.js.map +1 -0
- package/dist/src/sdk/types/rpc-schema.js +2 -0
- package/dist/src/sdk/types/rpc-schema.js.map +1 -0
- package/dist/src/sdk/utils/chain/defineChain.js +9 -0
- package/dist/src/sdk/utils/chain/defineChain.js.map +1 -0
- package/dist/src/sdk/utils/wit/codecs/u64.js +63 -0
- package/dist/src/sdk/utils/wit/codecs/u64.js.map +1 -0
- package/dist/src/sdk/utils/wit/decode-wit-parameter.js +289 -0
- package/dist/src/sdk/utils/wit/decode-wit-parameter.js.map +1 -0
- package/dist/src/sdk/utils/wit/encode-function-data.test-d.js +24 -0
- package/dist/src/sdk/utils/wit/encode-function-data.test-d.js.map +1 -0
- package/dist/src/sdk/utils/wit/encode-function-data.test.js +91 -0
- package/dist/src/sdk/utils/wit/encode-function-data.test.js.map +1 -0
- package/dist/src/sdk/utils/wit/encode-wit-parameters.js +261 -0
- package/dist/src/sdk/utils/wit/encode-wit-parameters.js.map +1 -0
- package/dist/src/sdk/utils/wit/get-wit-item.test.js +167 -0
- package/dist/src/sdk/utils/wit/get-wit-item.test.js.map +1 -0
- package/dist/src/wit/wit-parser/core/records.test.js +63 -0
- package/dist/src/wit/wit-parser/core/records.test.js.map +1 -0
- package/dist/src/wit/wit-parser/core/types/records.test-d.js +19 -0
- package/dist/src/wit/wit-parser/core/types/records.test-d.js.map +1 -0
- package/dist/src/wit/wit-parser/core/types/utils.js +2 -0
- package/dist/src/wit/wit-parser/core/types/utils.js.map +1 -0
- package/dist/src/wit/wit-parser/core/types/utils.test-d.js +159 -0
- package/dist/src/wit/wit-parser/core/types/utils.test-d.js.map +1 -0
- package/dist/src/wit/wit-parser/core/utils.js +213 -0
- package/dist/src/wit/wit-parser/core/utils.js.map +1 -0
- package/dist/src/wit/wit-parser/core/utils.test.js +316 -0
- package/dist/src/wit/wit-parser/core/utils.test.js.map +1 -0
- package/dist/src/wit/wit-parser/parse-wit-parameter.test.js +93 -0
- package/dist/src/wit/wit-parser/parse-wit-parameter.test.js.map +1 -0
- package/dist/src/wit/wit-parser/parse-wit.test.js +80 -0
- package/dist/src/wit/wit-parser/parse-wit.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/src/exports/index.test.ts +18 -1
- package/src/sdk/actions/kontor/public/call-view.ts +6 -14
- package/src/sdk/actions/kontor/public/proc-contract.test.ts +1 -1
- package/src/sdk/actions/kontor/public/view-contract.test-d.ts +2 -17
- package/src/sdk/actions/kontor/public/view-contract.ts +8 -3
- package/src/sdk/actions/kontor/wallet/sign-reveal.ts +3 -35
- package/src/sdk/clients/base/create-rpc-client.test.ts +10 -4
- package/src/sdk/clients/create-public-client.test.ts +11 -3
- package/src/sdk/clients/kontor/create-public-client.test.ts +4 -3
- package/src/sdk/contracts/wits.ts +1 -1
- package/src/sdk/types/contract.test-d.ts +29 -24
- package/src/sdk/utils/wit/codecs/u64.ts +73 -0
- package/src/sdk/utils/wit/decode-wit-parameter.ts +5 -0
- package/src/sdk/utils/wit/encode-function-data.test-d.ts +15 -11
- package/src/sdk/utils/wit/encode-function-data.test.ts +1 -1
- package/src/sdk/utils/wit/encode-wit-parameters.ts +16 -1
- package/src/sdk/utils/wit/get-wit-item.test.ts +58 -9
- package/src/wit/wit-parser/core/records.test.ts +24 -14
- package/src/wit/wit-parser/core/types/records.test-d.ts +141 -28
- package/src/wit/wit-parser/core/types/utils.test-d.ts +23 -2
- package/src/wit/wit-parser/core/types/utils.ts +8 -41
- package/src/wit/wit-parser/core/utils.test.ts +14 -0
- package/src/wit/wit-parser/core/utils.ts +1 -0
- package/src/wit/wit-parser/parse-wit-parameter.test.ts +30 -3
- package/src/wit/wit-parser/parse-wit.test.ts +93 -102
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// u64.ts
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
// You already have this in integer.ts; you can import it from there instead
|
|
4
|
+
const U64_MAX = (1n << 64n) - 1n;
|
|
5
|
+
export const U64 = z
|
|
6
|
+
.bigint()
|
|
7
|
+
.min(0n, { message: "must be ≥ 0" })
|
|
8
|
+
.max(U64_MAX, { message: "must be ≤ 2^64-1" });
|
|
9
|
+
/**
|
|
10
|
+
* Parse a Wave expression for a u64.
|
|
11
|
+
*
|
|
12
|
+
* - Accepts optional underscores for readability: 1_000_000
|
|
13
|
+
* - Must be a non-negative integer
|
|
14
|
+
* - Enforces the u64 range via zod
|
|
15
|
+
*/
|
|
16
|
+
export function parseU64WaveExpr(expr) {
|
|
17
|
+
const trimmed = expr.trim();
|
|
18
|
+
if (!trimmed)
|
|
19
|
+
throw new Error("empty u64 expression");
|
|
20
|
+
// Allow underscores like "1_000_000"
|
|
21
|
+
const normalized = trimmed.replace(/_/g, "");
|
|
22
|
+
if (!/^[0-9]+$/.test(normalized)) {
|
|
23
|
+
throw new Error(`invalid u64 literal: "${expr}"`);
|
|
24
|
+
}
|
|
25
|
+
const value = BigInt(normalized);
|
|
26
|
+
return U64.parse(value); // range-check via zod
|
|
27
|
+
}
|
|
28
|
+
// --- U64Codec ---------------------------------------------------
|
|
29
|
+
class _U64Codec {
|
|
30
|
+
constructor(value) {
|
|
31
|
+
Object.defineProperty(this, "value", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: void 0
|
|
36
|
+
});
|
|
37
|
+
this.value = U64.parse(value);
|
|
38
|
+
}
|
|
39
|
+
static fromJs(value) {
|
|
40
|
+
let v;
|
|
41
|
+
if (typeof value === "bigint")
|
|
42
|
+
v = value;
|
|
43
|
+
else if (typeof value === "number")
|
|
44
|
+
v = BigInt(value);
|
|
45
|
+
else
|
|
46
|
+
v = BigInt(value); // e.g. JSON string "12345"
|
|
47
|
+
return new _U64Codec(v);
|
|
48
|
+
}
|
|
49
|
+
static fromKontor(data) {
|
|
50
|
+
return _U64Codec.fromJs(data);
|
|
51
|
+
}
|
|
52
|
+
static parseWave(expr) {
|
|
53
|
+
return parseU64WaveExpr(expr);
|
|
54
|
+
}
|
|
55
|
+
toWave() {
|
|
56
|
+
return `${this.value}`;
|
|
57
|
+
}
|
|
58
|
+
toJs() {
|
|
59
|
+
return this.value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export const U64Codec = _U64Codec;
|
|
63
|
+
//# sourceMappingURL=u64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"u64.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/wit/codecs/u64.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAGzB,4EAA4E;AAC5E,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;KACjB,MAAM,EAAE;KACR,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;KACnC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEtD,qCAAqC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB;AACjD,CAAC;AAED,mEAAmE;AAEnE,MAAM,SAAS;IAGb,YAAY,KAAa;QAFT;;;;;WAAc;QAG5B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAA+B;QAC3C,IAAI,CAAS,CAAC;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,CAAC,GAAG,KAAK,CAAC;aACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;YACjD,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,2BAA2B;QAEnD,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAA8B;QAC9C,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAY;QAC3B,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,GAAG,IAAI,CAAC,KAAK,EAAc,CAAC;IACrC,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,SAIvB,CAAC"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { InvalidWitEncodingTypeError } from "../../errors/wit.js";
|
|
2
|
+
import { DecimalCodec } from "./codecs/decimal.js";
|
|
3
|
+
import { U64Codec } from "./codecs/u64.js";
|
|
4
|
+
import { StringCodec } from "./codecs/string.js";
|
|
5
|
+
import { OptionCodecFactory } from "./codecs/option.js";
|
|
6
|
+
import { ListCodecFactory } from "./codecs/list.js";
|
|
7
|
+
import { makeDecoder, } from "./codecs/types.js";
|
|
8
|
+
const u64Decoder = makeDecoder(U64Codec);
|
|
9
|
+
const stringDecoder = makeDecoder(StringCodec);
|
|
10
|
+
const decimalDecoder = makeDecoder(DecimalCodec);
|
|
11
|
+
const optionOfDecimalDecoder = makeDecoder(OptionCodecFactory.create(DecimalCodec));
|
|
12
|
+
const optionOfTupleDecoder = (param) => makeDecoder(OptionCodecFactory.create(makeTupleCodecConstructor(param)));
|
|
13
|
+
const listOfDecimalDecoder = makeDecoder(ListCodecFactory.create(DecimalCodec));
|
|
14
|
+
const listOfTupleDecoder = (param) => makeDecoder(ListCodecFactory.create(makeTupleCodecConstructor(param)));
|
|
15
|
+
const tupleDecoder = (param) => makeDecoder(makeTupleCodecConstructor(param));
|
|
16
|
+
//
|
|
17
|
+
export function decodeWitParameter(value, param) {
|
|
18
|
+
// TODO: type cast
|
|
19
|
+
const decoder = decoderForParam(param);
|
|
20
|
+
return {
|
|
21
|
+
decoded: decoder.decode(value),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function decodeTuple(record, param) {
|
|
25
|
+
if (!param.components) {
|
|
26
|
+
throw new Error("Tuple parameter missing components");
|
|
27
|
+
}
|
|
28
|
+
console.log("value");
|
|
29
|
+
return param.components.reduce((acc, component) => {
|
|
30
|
+
if (!component.name) {
|
|
31
|
+
throw new Error("Tuple component missing name");
|
|
32
|
+
}
|
|
33
|
+
const fieldValue = record[component.name];
|
|
34
|
+
const decoder = decoderForParam(component);
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
acc[component.name] = decoder.decode(fieldValue);
|
|
37
|
+
return acc;
|
|
38
|
+
}, {});
|
|
39
|
+
}
|
|
40
|
+
function decoderForParam(p) {
|
|
41
|
+
const t = p.type;
|
|
42
|
+
console.log({ t });
|
|
43
|
+
switch (t) {
|
|
44
|
+
case "tuple":
|
|
45
|
+
return tupleDecoder(p);
|
|
46
|
+
case "string":
|
|
47
|
+
return stringDecoder;
|
|
48
|
+
case "decimal":
|
|
49
|
+
return decimalDecoder;
|
|
50
|
+
case "option<decimal>":
|
|
51
|
+
return optionOfDecimalDecoder;
|
|
52
|
+
case "option<tuple>":
|
|
53
|
+
return optionOfTupleDecoder(p);
|
|
54
|
+
case "list<decimal>":
|
|
55
|
+
return listOfDecimalDecoder;
|
|
56
|
+
case "list<tuple>":
|
|
57
|
+
return listOfTupleDecoder(p);
|
|
58
|
+
case "error":
|
|
59
|
+
case "contract-address":
|
|
60
|
+
case "bool":
|
|
61
|
+
case "s8":
|
|
62
|
+
case "s16":
|
|
63
|
+
case "s32":
|
|
64
|
+
case "s64":
|
|
65
|
+
case "u8":
|
|
66
|
+
case "u16":
|
|
67
|
+
case "u32":
|
|
68
|
+
case "u64":
|
|
69
|
+
return u64Decoder;
|
|
70
|
+
case "integer":
|
|
71
|
+
case "option<string>":
|
|
72
|
+
case "option<bool>":
|
|
73
|
+
case "option<s8>":
|
|
74
|
+
case "option<s16>":
|
|
75
|
+
case "option<s32>":
|
|
76
|
+
case "option<s64>":
|
|
77
|
+
case "option<u8>":
|
|
78
|
+
case "option<u16>":
|
|
79
|
+
case "option<u32>":
|
|
80
|
+
case "option<u64>":
|
|
81
|
+
case "option<integer>":
|
|
82
|
+
case "option<_>":
|
|
83
|
+
case "list<string>":
|
|
84
|
+
case "list<bool>":
|
|
85
|
+
case "list<s8>":
|
|
86
|
+
case "list<s16>":
|
|
87
|
+
case "list<s32>":
|
|
88
|
+
case "list<s64>":
|
|
89
|
+
case "list<u8>":
|
|
90
|
+
case "list<u16>":
|
|
91
|
+
case "list<u32>":
|
|
92
|
+
case "list<u64>":
|
|
93
|
+
case "list<integer>":
|
|
94
|
+
case "list<_>":
|
|
95
|
+
case "result<_, error>":
|
|
96
|
+
case "result<string, error>":
|
|
97
|
+
case "result<bool, error>":
|
|
98
|
+
case "result<s8, error>":
|
|
99
|
+
case "result<s16, error>":
|
|
100
|
+
case "result<s32, error>":
|
|
101
|
+
case "result<s64, error>":
|
|
102
|
+
case "result<u8, error>":
|
|
103
|
+
case "result<u16, error>":
|
|
104
|
+
case "result<u32, error>":
|
|
105
|
+
case "result<u64, error>":
|
|
106
|
+
case "result<decimal, error>":
|
|
107
|
+
case "result<integer, error>":
|
|
108
|
+
case "result<tuple, error>":
|
|
109
|
+
case "result<option<string>, error>":
|
|
110
|
+
case "result<option<bool>, error>":
|
|
111
|
+
case "result<option<s8>, error>":
|
|
112
|
+
case "result<option<s16>, error>":
|
|
113
|
+
case "result<option<s32>, error>":
|
|
114
|
+
case "result<option<s64>, error>":
|
|
115
|
+
case "result<option<u8>, error>":
|
|
116
|
+
case "result<option<u16>, error>":
|
|
117
|
+
case "result<option<u32>, error>":
|
|
118
|
+
case "result<option<u64>, error>":
|
|
119
|
+
case "result<option<decimal>, error>":
|
|
120
|
+
case "result<option<integer>, error>":
|
|
121
|
+
case "result<option<_>, error>":
|
|
122
|
+
case "result<option<tuple>, error>":
|
|
123
|
+
case "option<list<string>>":
|
|
124
|
+
case "option<list<bool>>":
|
|
125
|
+
case "option<list<s8>>":
|
|
126
|
+
case "option<list<s16>>":
|
|
127
|
+
case "option<list<s32>>":
|
|
128
|
+
case "option<list<s64>>":
|
|
129
|
+
case "option<list<u8>>":
|
|
130
|
+
case "option<list<u16>>":
|
|
131
|
+
case "option<list<u32>>":
|
|
132
|
+
case "option<list<u64>>":
|
|
133
|
+
case "option<list<decimal>>":
|
|
134
|
+
case "option<list<integer>>":
|
|
135
|
+
case "option<list<_>>":
|
|
136
|
+
case "option<list<tuple>>":
|
|
137
|
+
case "result<option<list<string>>, error>":
|
|
138
|
+
case "result<option<list<bool>>, error>":
|
|
139
|
+
case "result<option<list<s8>>, error>":
|
|
140
|
+
case "result<option<list<s16>>, error>":
|
|
141
|
+
case "result<option<list<s32>>, error>":
|
|
142
|
+
case "result<option<list<s64>>, error>":
|
|
143
|
+
case "result<option<list<u8>>, error>":
|
|
144
|
+
case "result<option<list<u16>>, error>":
|
|
145
|
+
case "result<option<list<u32>>, error>":
|
|
146
|
+
case "result<option<list<u64>>, error>":
|
|
147
|
+
case "result<option<list<decimal>>, error>":
|
|
148
|
+
case "result<option<list<integer>>, error>":
|
|
149
|
+
case "result<option<list<_>>, error>":
|
|
150
|
+
case "result<option<list<tuple>>, error>":
|
|
151
|
+
case "result<list<string>, error>":
|
|
152
|
+
case "result<list<bool>, error>":
|
|
153
|
+
case "result<list<s8>, error>":
|
|
154
|
+
case "result<list<s16>, error>":
|
|
155
|
+
case "result<list<s32>, error>":
|
|
156
|
+
case "result<list<s64>, error>":
|
|
157
|
+
case "result<list<u8>, error>":
|
|
158
|
+
case "result<list<u16>, error>":
|
|
159
|
+
case "result<list<u32>, error>":
|
|
160
|
+
case "result<list<u64>, error>":
|
|
161
|
+
case "result<list<decimal>, error>":
|
|
162
|
+
case "result<list<integer>, error>":
|
|
163
|
+
case "result<list<_>, error>":
|
|
164
|
+
case "result<list<tuple>, error>":
|
|
165
|
+
throw new Error("not implemented");
|
|
166
|
+
default:
|
|
167
|
+
const exhaustive = t;
|
|
168
|
+
void exhaustive;
|
|
169
|
+
throw new InvalidWitEncodingTypeError(t, {
|
|
170
|
+
docsPath: "tk",
|
|
171
|
+
});
|
|
172
|
+
//
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export class TupleCodecInstance {
|
|
176
|
+
// 'data' holds the raw parsed JSON object representing the encoded tuple
|
|
177
|
+
constructor(data, param) {
|
|
178
|
+
Object.defineProperty(this, "data", {
|
|
179
|
+
enumerable: true,
|
|
180
|
+
configurable: true,
|
|
181
|
+
writable: true,
|
|
182
|
+
value: data
|
|
183
|
+
});
|
|
184
|
+
Object.defineProperty(this, "param", {
|
|
185
|
+
enumerable: true,
|
|
186
|
+
configurable: true,
|
|
187
|
+
writable: true,
|
|
188
|
+
value: param
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
// Fixes Error 2416: Property 'toWave' must return the branded type WaveExpr
|
|
192
|
+
toWave() {
|
|
193
|
+
// Converts JS data back to the wave format (usually a stringified object)
|
|
194
|
+
throw new Error("TupleCodec.toWave not implemented for decoding context");
|
|
195
|
+
}
|
|
196
|
+
toJs() {
|
|
197
|
+
// The core decoding step: recursively call decodeTuple
|
|
198
|
+
return decodeTuple(this.data, this.param);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export function makeTupleCodecConstructor(param) {
|
|
202
|
+
if (!param.components) {
|
|
203
|
+
throw new Error("Cannot create TupleCodec: Parameter missing components");
|
|
204
|
+
}
|
|
205
|
+
// 2. Define the CodecConstructor class with static methods
|
|
206
|
+
// We remove 'implements CodecConstructor<any, any, any>' as the function returns the class itself
|
|
207
|
+
// (Fixes Error 2420, although the original code had the static methods, this clarifies intent).
|
|
208
|
+
class TupleCodec {
|
|
209
|
+
// --- Static CodecConstructor methods ---
|
|
210
|
+
// Called to create an instance from a JavaScript value (e.g., when encoding)
|
|
211
|
+
static fromJs(_value) {
|
|
212
|
+
// NOTE: Full encoding implementation is omitted for focus
|
|
213
|
+
throw new Error("TupleCodec.fromJs not implemented for decoding context");
|
|
214
|
+
}
|
|
215
|
+
// Called to parse the raw encoded string into a JavaScript object (Wave Data)
|
|
216
|
+
static parseWave(expr) {
|
|
217
|
+
// For tuples, the raw encoded string is the JSON representation.
|
|
218
|
+
console.log("parsing tuple wave expr:", expr);
|
|
219
|
+
return parseWitRecord(expr);
|
|
220
|
+
}
|
|
221
|
+
// Called to create an instance from the parsed Wave Data
|
|
222
|
+
static fromKontor(data) {
|
|
223
|
+
// Pass the original parameter definition to the instance for use in toJs()
|
|
224
|
+
return new TupleCodecInstance(data, param);
|
|
225
|
+
}
|
|
226
|
+
// --- Instance constructor (optional, mainly for type checking compatibility) ---
|
|
227
|
+
constructor(data) {
|
|
228
|
+
// Delegate to the static factory to ensure the instance is correctly initialized
|
|
229
|
+
return TupleCodec.fromKontor(data);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
// 3. Cast the class to the correct CodecConstructor type
|
|
233
|
+
return TupleCodec;
|
|
234
|
+
}
|
|
235
|
+
export function parseWitRecord(raw) {
|
|
236
|
+
// Remove leading/trailing whitespace and outer braces
|
|
237
|
+
const trimmed = raw.trim().replace(/^\{|\}$/g, "");
|
|
238
|
+
const result = {};
|
|
239
|
+
let depth = 0;
|
|
240
|
+
let currentKey = "";
|
|
241
|
+
let currentValue = "";
|
|
242
|
+
let inKey = true;
|
|
243
|
+
let i = 0;
|
|
244
|
+
while (i < trimmed.length) {
|
|
245
|
+
const char = trimmed[i];
|
|
246
|
+
if (char === "{" || char === "[") {
|
|
247
|
+
depth++;
|
|
248
|
+
if (!inKey)
|
|
249
|
+
currentValue += char;
|
|
250
|
+
}
|
|
251
|
+
else if (char === "}" || char === "]") {
|
|
252
|
+
depth--;
|
|
253
|
+
if (!inKey)
|
|
254
|
+
currentValue += char;
|
|
255
|
+
}
|
|
256
|
+
else if (char === ":" && depth === 0 && inKey) {
|
|
257
|
+
// Found the separator between key and value
|
|
258
|
+
inKey = false;
|
|
259
|
+
i++;
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
else if (char === "," && depth === 0) {
|
|
263
|
+
// Found separator between key-value pairs
|
|
264
|
+
// @ts-ignore
|
|
265
|
+
result[currentKey.trim()] = currentValue.trim();
|
|
266
|
+
currentKey = "";
|
|
267
|
+
currentValue = "";
|
|
268
|
+
inKey = true;
|
|
269
|
+
i++;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
if (inKey) {
|
|
274
|
+
currentKey += char;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
currentValue += char;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
i++;
|
|
281
|
+
}
|
|
282
|
+
// Add the last key-value pair
|
|
283
|
+
if (currentKey.trim()) {
|
|
284
|
+
// @ts-ignore
|
|
285
|
+
result[currentKey.trim()] = currentValue.trim();
|
|
286
|
+
}
|
|
287
|
+
return result;
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=decode-wit-parameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode-wit-parameter.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/wit/decode-wit-parameter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { expectTypeOf, test } from "vitest";
|
|
2
|
+
import { encodeFunctionData, } from "./encode-function-data.js";
|
|
3
|
+
import { nativeToken } from "../../contracts/wits.js";
|
|
4
|
+
import { parseWit } from "../../../wit/wit-parser/parse-wit.js";
|
|
5
|
+
test("single, function name not required", () => {
|
|
6
|
+
const singleRaw = [
|
|
7
|
+
"record mint { dst: string, amt: decimal }",
|
|
8
|
+
"export issuance: func(ctx: borrow<core-context>, amt: decimal) -> result<mint, error>;",
|
|
9
|
+
];
|
|
10
|
+
const single = parseWit(singleRaw);
|
|
11
|
+
// single entry does not require functionName
|
|
12
|
+
encodeFunctionData({ wit: single, args: [[7n, 18]] });
|
|
13
|
+
expectTypeOf().toEqualTypeOf();
|
|
14
|
+
});
|
|
15
|
+
test("native token", () => {
|
|
16
|
+
try {
|
|
17
|
+
// @ts-expect-error functionName required
|
|
18
|
+
encodeFunctionData({ wit: nativeToken });
|
|
19
|
+
}
|
|
20
|
+
catch (e) { }
|
|
21
|
+
expectTypeOf().not.toEqualTypeOf();
|
|
22
|
+
expectTypeOf().toEqualTypeOf();
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=encode-function-data.test-d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-function-data.test-d.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/wit/encode-function-data.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAEL,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG;QAChB,2CAA2C;QAE3C,wFAAwF;KAChF,CAAC;IAEX,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEnC,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAItD,YAAY,EAAqB,CAAC,aAAa,EAA0B,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,IAAI,CAAC;QACH,yCAAyC;QACzC,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAId,YAAY,EAAqB,CAAC,GAAG,CAAC,aAAa,EAAa,CAAC;IAEjE,YAAY,EAAqB,CAAC,aAAa,EAY5C,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
import { encodeFunctionData } from "./encode-function-data.js";
|
|
3
|
+
import { parseWit } from "../../../wit/wit-parser/parse-wit.js";
|
|
4
|
+
export const nativeToken = parseWit([
|
|
5
|
+
"record balance { acc: string, amt: decimal }",
|
|
6
|
+
"record transfer { src: string, dst: string, amt: decimal }",
|
|
7
|
+
"record burn { src: string, amt: decimal }",
|
|
8
|
+
"record mint { dst: string, amt: decimal }",
|
|
9
|
+
"export issuance: func(ctx: borrow<core-context>, amt: decimal) -> result<mint, error>;",
|
|
10
|
+
"export hold: func(ctx: borrow<core-context>, amt: decimal) -> result<transfer, error>;",
|
|
11
|
+
"export release: func(ctx: borrow<core-context>, burn-amt: decimal) -> result<burn, error>;",
|
|
12
|
+
"export init: func(ctx: borrow<proc-context>);",
|
|
13
|
+
"export mint: func(ctx: borrow<proc-context>, amt: decimal) -> result<mint, error>;",
|
|
14
|
+
"export burn: func(ctx: borrow<proc-context>, amt: decimal) -> result<burn, error>;",
|
|
15
|
+
"export transfer: func(ctx: borrow<proc-context>, dst: string, amt: decimal) -> result<transfer, error>;",
|
|
16
|
+
"export balance: func(ctx: borrow<view-context>, acc: string) -> option<decimal>;",
|
|
17
|
+
"export balances: func(ctx: borrow<view-context>) -> list<balance>;",
|
|
18
|
+
"export total-supply: func(ctx: borrow<view-context>) -> decimal;",
|
|
19
|
+
"export attach: func(ctx: borrow<proc-context>, vout: u64, amt: decimal) -> result<transfer, error>;",
|
|
20
|
+
"export detach: func(ctx: borrow<proc-context>) -> result<transfer, error>;",
|
|
21
|
+
]);
|
|
22
|
+
//TODO: change functionName to func
|
|
23
|
+
test("issuance", () => {
|
|
24
|
+
expect(encodeFunctionData({
|
|
25
|
+
wit: nativeToken,
|
|
26
|
+
functionName: "issuance",
|
|
27
|
+
args: [[7n, 18]],
|
|
28
|
+
})).toEqual("issuance({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
|
|
29
|
+
});
|
|
30
|
+
test("hold", () => {
|
|
31
|
+
expect(encodeFunctionData({
|
|
32
|
+
wit: nativeToken,
|
|
33
|
+
functionName: "hold",
|
|
34
|
+
args: [[7n, 18]],
|
|
35
|
+
})).toEqual("hold({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
|
|
36
|
+
});
|
|
37
|
+
test("release", () => {
|
|
38
|
+
expect(encodeFunctionData({
|
|
39
|
+
wit: nativeToken,
|
|
40
|
+
functionName: "release",
|
|
41
|
+
args: [[7n, 18]],
|
|
42
|
+
})).toEqual("release({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
|
|
43
|
+
});
|
|
44
|
+
test("mint", () => {
|
|
45
|
+
expect(encodeFunctionData({
|
|
46
|
+
wit: nativeToken,
|
|
47
|
+
functionName: "mint",
|
|
48
|
+
args: [[7n, 18]],
|
|
49
|
+
})).toEqual("mint({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
|
|
50
|
+
});
|
|
51
|
+
test("burn", () => {
|
|
52
|
+
expect(encodeFunctionData({
|
|
53
|
+
wit: nativeToken,
|
|
54
|
+
functionName: "burn",
|
|
55
|
+
args: [[7n, 18]],
|
|
56
|
+
})).toEqual("burn({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
|
|
57
|
+
});
|
|
58
|
+
test("transfer", () => {
|
|
59
|
+
expect(encodeFunctionData({
|
|
60
|
+
wit: nativeToken,
|
|
61
|
+
functionName: "transfer",
|
|
62
|
+
args: ["bc1deadbeef", [7n, 18]],
|
|
63
|
+
})).toEqual(`transfer("bc1deadbeef", {r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})`);
|
|
64
|
+
});
|
|
65
|
+
test("balance", () => {
|
|
66
|
+
expect(encodeFunctionData({
|
|
67
|
+
wit: nativeToken,
|
|
68
|
+
functionName: "balance",
|
|
69
|
+
args: ["bc1deadbeef"],
|
|
70
|
+
})).toEqual(`balance("bc1deadbeef")`);
|
|
71
|
+
});
|
|
72
|
+
test("balances", () => {
|
|
73
|
+
expect(encodeFunctionData({
|
|
74
|
+
wit: nativeToken,
|
|
75
|
+
functionName: "balances",
|
|
76
|
+
})).toEqual(`balances()`);
|
|
77
|
+
});
|
|
78
|
+
test("totalSupply", () => {
|
|
79
|
+
expect(encodeFunctionData({
|
|
80
|
+
wit: nativeToken,
|
|
81
|
+
functionName: "total-supply",
|
|
82
|
+
})).toEqual(`total-supply()`);
|
|
83
|
+
});
|
|
84
|
+
test("attach", () => {
|
|
85
|
+
expect(encodeFunctionData({
|
|
86
|
+
wit: nativeToken,
|
|
87
|
+
functionName: "attach",
|
|
88
|
+
args: [7n, [7n, 18]],
|
|
89
|
+
})).toEqual("attach(7, {r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=encode-function-data.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode-function-data.test.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/wit/encode-function-data.test.ts"],"names":[],"mappings":"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"}
|