@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.
Files changed (111) hide show
  1. package/dist/src/exports/index.test.js +27 -0
  2. package/dist/src/exports/index.test.js.map +1 -0
  3. package/dist/src/sdk/accounts/private-key-to-account.js +42 -0
  4. package/dist/src/sdk/accounts/private-key-to-account.js.map +1 -0
  5. package/dist/src/sdk/actions/get-contract.js +50 -0
  6. package/dist/src/sdk/actions/get-contract.js.map +1 -0
  7. package/dist/src/sdk/actions/get-contract.test-d.js +43 -0
  8. package/dist/src/sdk/actions/get-contract.test-d.js.map +1 -0
  9. package/dist/src/sdk/actions/kontor/public/call-view.js +21 -0
  10. package/dist/src/sdk/actions/kontor/public/call-view.js.map +1 -0
  11. package/dist/src/sdk/actions/kontor/public/inspect.js +20 -0
  12. package/dist/src/sdk/actions/kontor/public/inspect.js.map +1 -0
  13. package/dist/src/sdk/actions/kontor/public/proc-contract.test.js +47 -0
  14. package/dist/src/sdk/actions/kontor/public/proc-contract.test.js.map +1 -0
  15. package/dist/src/sdk/actions/kontor/public/view-contract.js +47 -0
  16. package/dist/src/sdk/actions/kontor/public/view-contract.js.map +1 -0
  17. package/dist/src/sdk/actions/kontor/public/view-contract.test-d.js +29 -0
  18. package/dist/src/sdk/actions/kontor/public/view-contract.test-d.js.map +1 -0
  19. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js +59 -0
  20. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js.map +1 -0
  21. package/dist/src/sdk/actions/wallet/get-addresses.js +20 -0
  22. package/dist/src/sdk/actions/wallet/get-addresses.js.map +1 -0
  23. package/dist/src/sdk/actions/wallet/sign-psbt.js +28 -0
  24. package/dist/src/sdk/actions/wallet/sign-psbt.js.map +1 -0
  25. package/dist/src/sdk/clients/base/create-http-client.js +41 -0
  26. package/dist/src/sdk/clients/base/create-http-client.js.map +1 -0
  27. package/dist/src/sdk/clients/base/create-rpc-client.js +41 -0
  28. package/dist/src/sdk/clients/base/create-rpc-client.js.map +1 -0
  29. package/dist/src/sdk/clients/base/create-rpc-client.test.js +151 -0
  30. package/dist/src/sdk/clients/base/create-rpc-client.test.js.map +1 -0
  31. package/dist/src/sdk/clients/create-public-client.js +13 -0
  32. package/dist/src/sdk/clients/create-public-client.js.map +1 -0
  33. package/dist/src/sdk/clients/create-public-client.test.js +121 -0
  34. package/dist/src/sdk/clients/create-public-client.test.js.map +1 -0
  35. package/dist/src/sdk/clients/create-wallet-client.js +14 -0
  36. package/dist/src/sdk/clients/create-wallet-client.js.map +1 -0
  37. package/dist/src/sdk/clients/kontor/create-public-client.js +14 -0
  38. package/dist/src/sdk/clients/kontor/create-public-client.js.map +1 -0
  39. package/dist/src/sdk/clients/kontor/create-public-client.test.js +45 -0
  40. package/dist/src/sdk/clients/kontor/create-public-client.test.js.map +1 -0
  41. package/dist/src/sdk/clients/transports/create-rpc-transport.js +36 -0
  42. package/dist/src/sdk/clients/transports/create-rpc-transport.js.map +1 -0
  43. package/dist/src/sdk/contracts/wits.js +26 -0
  44. package/dist/src/sdk/contracts/wits.js.map +1 -0
  45. package/dist/src/sdk/types/chain.js +2 -0
  46. package/dist/src/sdk/types/chain.js.map +1 -0
  47. package/dist/src/sdk/types/contract.js +2 -0
  48. package/dist/src/sdk/types/contract.js.map +1 -0
  49. package/dist/src/sdk/types/contract.test-d.js +34 -0
  50. package/dist/src/sdk/types/contract.test-d.js.map +1 -0
  51. package/dist/src/sdk/types/http-schema.js +73 -0
  52. package/dist/src/sdk/types/http-schema.js.map +1 -0
  53. package/dist/src/sdk/types/rpc-schema.js +2 -0
  54. package/dist/src/sdk/types/rpc-schema.js.map +1 -0
  55. package/dist/src/sdk/utils/chain/defineChain.js +9 -0
  56. package/dist/src/sdk/utils/chain/defineChain.js.map +1 -0
  57. package/dist/src/sdk/utils/wit/codecs/u64.js +63 -0
  58. package/dist/src/sdk/utils/wit/codecs/u64.js.map +1 -0
  59. package/dist/src/sdk/utils/wit/decode-wit-parameter.js +289 -0
  60. package/dist/src/sdk/utils/wit/decode-wit-parameter.js.map +1 -0
  61. package/dist/src/sdk/utils/wit/encode-function-data.test-d.js +24 -0
  62. package/dist/src/sdk/utils/wit/encode-function-data.test-d.js.map +1 -0
  63. package/dist/src/sdk/utils/wit/encode-function-data.test.js +91 -0
  64. package/dist/src/sdk/utils/wit/encode-function-data.test.js.map +1 -0
  65. package/dist/src/sdk/utils/wit/encode-wit-parameters.js +261 -0
  66. package/dist/src/sdk/utils/wit/encode-wit-parameters.js.map +1 -0
  67. package/dist/src/sdk/utils/wit/get-wit-item.test.js +167 -0
  68. package/dist/src/sdk/utils/wit/get-wit-item.test.js.map +1 -0
  69. package/dist/src/wit/wit-parser/core/records.test.js +63 -0
  70. package/dist/src/wit/wit-parser/core/records.test.js.map +1 -0
  71. package/dist/src/wit/wit-parser/core/types/records.test-d.js +19 -0
  72. package/dist/src/wit/wit-parser/core/types/records.test-d.js.map +1 -0
  73. package/dist/src/wit/wit-parser/core/types/utils.js +2 -0
  74. package/dist/src/wit/wit-parser/core/types/utils.js.map +1 -0
  75. package/dist/src/wit/wit-parser/core/types/utils.test-d.js +159 -0
  76. package/dist/src/wit/wit-parser/core/types/utils.test-d.js.map +1 -0
  77. package/dist/src/wit/wit-parser/core/utils.js +213 -0
  78. package/dist/src/wit/wit-parser/core/utils.js.map +1 -0
  79. package/dist/src/wit/wit-parser/core/utils.test.js +316 -0
  80. package/dist/src/wit/wit-parser/core/utils.test.js.map +1 -0
  81. package/dist/src/wit/wit-parser/parse-wit-parameter.test.js +93 -0
  82. package/dist/src/wit/wit-parser/parse-wit-parameter.test.js.map +1 -0
  83. package/dist/src/wit/wit-parser/parse-wit.test.js +80 -0
  84. package/dist/src/wit/wit-parser/parse-wit.test.js.map +1 -0
  85. package/dist/tsconfig.tsbuildinfo +1 -0
  86. package/package.json +1 -1
  87. package/src/exports/index.test.ts +18 -1
  88. package/src/sdk/actions/kontor/public/call-view.ts +6 -14
  89. package/src/sdk/actions/kontor/public/proc-contract.test.ts +1 -1
  90. package/src/sdk/actions/kontor/public/view-contract.test-d.ts +2 -17
  91. package/src/sdk/actions/kontor/public/view-contract.ts +8 -3
  92. package/src/sdk/actions/kontor/wallet/sign-reveal.ts +3 -35
  93. package/src/sdk/clients/base/create-rpc-client.test.ts +10 -4
  94. package/src/sdk/clients/create-public-client.test.ts +11 -3
  95. package/src/sdk/clients/kontor/create-public-client.test.ts +4 -3
  96. package/src/sdk/contracts/wits.ts +1 -1
  97. package/src/sdk/types/contract.test-d.ts +29 -24
  98. package/src/sdk/utils/wit/codecs/u64.ts +73 -0
  99. package/src/sdk/utils/wit/decode-wit-parameter.ts +5 -0
  100. package/src/sdk/utils/wit/encode-function-data.test-d.ts +15 -11
  101. package/src/sdk/utils/wit/encode-function-data.test.ts +1 -1
  102. package/src/sdk/utils/wit/encode-wit-parameters.ts +16 -1
  103. package/src/sdk/utils/wit/get-wit-item.test.ts +58 -9
  104. package/src/wit/wit-parser/core/records.test.ts +24 -14
  105. package/src/wit/wit-parser/core/types/records.test-d.ts +141 -28
  106. package/src/wit/wit-parser/core/types/utils.test-d.ts +23 -2
  107. package/src/wit/wit-parser/core/types/utils.ts +8 -41
  108. package/src/wit/wit-parser/core/utils.test.ts +14 -0
  109. package/src/wit/wit-parser/core/utils.ts +1 -0
  110. package/src/wit/wit-parser/parse-wit-parameter.test.ts +30 -3
  111. package/src/wit/wit-parser/parse-wit.test.ts +93 -102
@@ -0,0 +1,261 @@
1
+ import { InvalidWitEncodingTypeError, WitEncodingLengthMismatchError, } from "../../errors/wit.js";
2
+ import { U64Codec } from "./codecs/u64.js";
3
+ import { DecimalCodec } from "./codecs/decimal.js";
4
+ import { IntegerCodec } from "./codecs/integer.js";
5
+ import { ListCodecFactory } from "./codecs/list.js";
6
+ import { OptionCodecFactory } from "./codecs/option.js";
7
+ import { StringCodec } from "./codecs/string.js";
8
+ export function encodeWitParameters(params, values) {
9
+ if (params.length !== values.length)
10
+ throw new WitEncodingLengthMismatchError({
11
+ expectedLength: params.length,
12
+ givenLength: values.length,
13
+ });
14
+ const preparedParams = prepareParams({
15
+ params: params,
16
+ values: values,
17
+ });
18
+ const encoded = encodeParams(preparedParams);
19
+ return encoded;
20
+ }
21
+ function prepareParams({ params, values, }) {
22
+ const preparedParams = [];
23
+ for (let i = 0; i < params.length; i++) {
24
+ preparedParams.push(prepareParam({ param: params[i], value: values[i] }));
25
+ }
26
+ return preparedParams;
27
+ }
28
+ function prepareParam({ param, value, }) {
29
+ // TODO: this is a little smelly
30
+ const isOption = getOptionComponent(param.type);
31
+ if (isOption) {
32
+ const type = param.type;
33
+ switch (type) {
34
+ case "option<bool>":
35
+ // No BoolCodec yet – fail loudly for now.
36
+ // TODO: change to list speci,fic error
37
+ throw new InvalidWitEncodingTypeError(param.type, {
38
+ docsPath: "tk",
39
+ });
40
+ case "option<string>": {
41
+ return {
42
+ encoded: OptionCodecFactory.create(StringCodec)
43
+ .fromJs(value)
44
+ .toWave(),
45
+ };
46
+ }
47
+ case "option<integer>": {
48
+ return {
49
+ encoded: OptionCodecFactory.create(IntegerCodec)
50
+ .fromJs(value)
51
+ .toWave(),
52
+ };
53
+ }
54
+ case "option<decimal>": {
55
+ return {
56
+ encoded: OptionCodecFactory.create(DecimalCodec)
57
+ .fromJs(value)
58
+ .toWave(),
59
+ };
60
+ }
61
+ // signed ints
62
+ case "option<s8>":
63
+ case "option<s16>":
64
+ case "option<s32>":
65
+ case "option<s64>":
66
+ // TODO: wire up once you have a signed-int codec
67
+ throw new InvalidWitEncodingTypeError(param.type, {
68
+ docsPath: "tk",
69
+ });
70
+ // unsigned ints
71
+ case "option<u8>":
72
+ case "option<u16>":
73
+ case "option<u32>":
74
+ case "option<u64>":
75
+ // TODO: wire up once you have an unsigned-int codec
76
+ throw new InvalidWitEncodingTypeError(param.type, {
77
+ docsPath: "tk",
78
+ });
79
+ // tuples
80
+ case "option<tuple>":
81
+ // TODO: OptionCodecFactory.create(TupleCodec) once it exists
82
+ throw new InvalidWitEncodingTypeError(param.type, {
83
+ docsPath: "tk",
84
+ });
85
+ default: {
86
+ // exhaustiveness guard – if WitOption ever gains a new member,
87
+ // this will start failing at compile time until you add a case.
88
+ // @ts-ignore
89
+ const _exhaustive = type;
90
+ throw new InvalidWitEncodingTypeError(param.type, {
91
+ docsPath: "tk",
92
+ });
93
+ }
94
+ }
95
+ }
96
+ const isList = getListComponents(param.type);
97
+ if (isList) {
98
+ const type = param.type;
99
+ switch (type) {
100
+ case "list<bool>":
101
+ // No BoolCodec yet – fail loudly for now.
102
+ // TODO: change to list speci,fic error
103
+ throw new InvalidWitEncodingTypeError(param.type, {
104
+ docsPath: "tk",
105
+ });
106
+ case "list<string>": {
107
+ return {
108
+ encoded: ListCodecFactory.create(StringCodec)
109
+ .fromJs(value)
110
+ .toWave(),
111
+ };
112
+ }
113
+ case "list<integer>": {
114
+ return {
115
+ encoded: ListCodecFactory.create(IntegerCodec)
116
+ .fromJs(value)
117
+ .toWave(),
118
+ };
119
+ }
120
+ case "list<decimal>": {
121
+ return {
122
+ encoded: ListCodecFactory.create(DecimalCodec)
123
+ .fromJs(value)
124
+ .toWave(),
125
+ };
126
+ }
127
+ // signed ints
128
+ case "list<s8>":
129
+ case "list<s16>":
130
+ case "list<s32>":
131
+ case "list<s64>":
132
+ // TODO: wire up once you have a signed-int codec
133
+ throw new InvalidWitEncodingTypeError(param.type, {
134
+ docsPath: "tk",
135
+ });
136
+ // unsigned ints
137
+ case "list<u8>":
138
+ case "list<u16>":
139
+ case "list<u32>":
140
+ case "list<u64>":
141
+ // TODO: wire up once you have an unsigned-int codec
142
+ throw new InvalidWitEncodingTypeError(param.type, {
143
+ docsPath: "tk",
144
+ });
145
+ // tuples
146
+ case "list<tuple>":
147
+ // TODO: ListCodecFactory.create(TupleCodec) once it exists
148
+ throw new InvalidWitEncodingTypeError(param.type, {
149
+ docsPath: "tk",
150
+ });
151
+ default: {
152
+ // exhaustiveness guard – if WitList ever gains a new member,
153
+ // this will start failing at compile time until you add a case.
154
+ // @ts-ignore
155
+ const _exhaustive = type;
156
+ throw new InvalidWitEncodingTypeError(param.type, {
157
+ docsPath: "tk",
158
+ });
159
+ }
160
+ }
161
+ }
162
+ // if (arrayComponents) {
163
+ // const [length, type] = arrayComponents;
164
+ // return encodeArray(value, { length, param: { ...param, type } });
165
+ // }
166
+ // if (param.type === "tuple") {
167
+ // return encodeTuple(value as unknown as Tuple, {
168
+ // param: param as TupleAbiParameter,
169
+ // });
170
+ // }
171
+ // if (param.type === "address") {
172
+ // return encodeAddress(value as unknown as Hex);
173
+ // }
174
+ // if (param.type === "bool") {
175
+ // return encodeBool(value as unknown as boolean);
176
+ // }
177
+ // if (param.type.startsWith("uint") || param.type.startsWith("int")) {
178
+ // const signed = param.type.startsWith("int");
179
+ // const [, , size = "256"] = integerRegex.exec(param.type) ?? [];
180
+ // return encodeNumber(value as unknown as number, {
181
+ // signed,
182
+ // size: Number(size),
183
+ // });
184
+ // }
185
+ // if (param.type.startsWith("bytes")) {
186
+ // return encodeBytes(value as unknown as Hex, { param });
187
+ // }
188
+ //
189
+ console.log(param);
190
+ if (param.type === "u64") {
191
+ return encodeU64(value);
192
+ }
193
+ if (param.type === "integer") {
194
+ return encodeInteger(value);
195
+ }
196
+ if (param.type === "decimal") {
197
+ return encodeDecimal(value);
198
+ }
199
+ if (param.type === "string") {
200
+ return encodeString(value);
201
+ }
202
+ throw new InvalidWitEncodingTypeError(param.type, {
203
+ docsPath: "tk",
204
+ });
205
+ }
206
+ export function getListComponents(type) {
207
+ // TODO: add error when nothing inside
208
+ // Matches things like:
209
+ // - "list<integer>"
210
+ // - "list<result<string, integer>>"
211
+ // - "list< list<decimal> >"
212
+ const matches = type.match(/^list<(.*)>$/);
213
+ return matches ? matches[1]?.trim() : undefined;
214
+ }
215
+ export function getOptionComponent(type) {
216
+ // Matches:
217
+ // - "option<integer>"
218
+ // - "option<list<decimal>>"
219
+ // - "option< result<string, error> >"
220
+ const matches = type.match(/^option<(.*)>$/);
221
+ return matches ? matches[1]?.trim() : undefined;
222
+ }
223
+ export class InvalidResultTypeError extends Error {
224
+ constructor(type) {
225
+ super(`Invalid result type "${type}". The error channel must be "error".`);
226
+ }
227
+ }
228
+ export function getResultComponentsStrict(type) {
229
+ const matches = type.match(/^result<(.*?),(.*?)>$/);
230
+ if (!matches)
231
+ return undefined;
232
+ const okType = matches[1].trim();
233
+ const errType = matches[2].trim();
234
+ if (errType !== "error")
235
+ throw new InvalidResultTypeError(errType);
236
+ return [okType, "error"];
237
+ }
238
+ function encodeU64(value) {
239
+ return {
240
+ encoded: U64Codec.fromJs(value).toWave(),
241
+ };
242
+ }
243
+ function encodeInteger(value) {
244
+ return {
245
+ encoded: IntegerCodec.fromJs(value).toWave(),
246
+ };
247
+ }
248
+ function encodeDecimal(value) {
249
+ return {
250
+ encoded: DecimalCodec.fromJs(value).toWave(),
251
+ };
252
+ }
253
+ function encodeString(value) {
254
+ return {
255
+ encoded: StringCodec.fromJs(value).toWave(),
256
+ };
257
+ }
258
+ function encodeParams(preparedParams) {
259
+ return preparedParams.map((p) => p.encoded).join(", ");
260
+ }
261
+ //# sourceMappingURL=encode-wit-parameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-wit-parameters.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/wit/encode-wit-parameters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { getWitItem } from "./get-wit-item.js";
3
+ import { parseWit } from "../../../wit/wit-parser/parse-wit.js";
4
+ export const nativeToken = parseWit([
5
+ "record balance { key: string, value: decimal }",
6
+ "export mint: func(ctx: borrow<proc-context>, n: decimal) -> result<_, error>;",
7
+ "export burn: func(ctx: borrow<proc-context>, n: decimal) -> result<_, error>;",
8
+ "export transfer: func(ctx: borrow<proc-context>, to: string, n: decimal) -> result<_, error>;",
9
+ "export balance: func(ctx: borrow<view-context>, acc: string) -> option<decimal>;",
10
+ "export balances: func(ctx: borrow<view-context>) -> list<balance>;",
11
+ "export total-supply: func(ctx: borrow<view-context>) -> decimal;",
12
+ ]);
13
+ describe("getWitItem", () => {
14
+ test("returns undefined for missing item", () => {
15
+ const item = getWitItem({
16
+ wit: nativeToken,
17
+ // @ts-expect-error - "does-not-exist" is not a valid WitItemName
18
+ name: "does-not-exist",
19
+ });
20
+ expect(item).toBeUndefined();
21
+ });
22
+ test("selects mint function by name", () => {
23
+ const item = getWitItem({
24
+ wit: nativeToken,
25
+ name: "mint",
26
+ });
27
+ expect(item).toStrictEqual({
28
+ name: "mint",
29
+ type: "function",
30
+ context: "proc",
31
+ inputs: [
32
+ {
33
+ internalType: "decimal",
34
+ type: "decimal",
35
+ name: "n",
36
+ },
37
+ ],
38
+ outputs: [
39
+ {
40
+ internalType: "result<_, error>",
41
+ type: "result<_, error>",
42
+ },
43
+ ],
44
+ });
45
+ });
46
+ test("selects burn function by name", () => {
47
+ const item = getWitItem({
48
+ wit: nativeToken,
49
+ name: "burn",
50
+ });
51
+ expect(item).toStrictEqual({
52
+ name: "burn",
53
+ type: "function",
54
+ context: "proc",
55
+ inputs: [
56
+ {
57
+ internalType: "decimal",
58
+ type: "decimal",
59
+ name: "n",
60
+ },
61
+ ],
62
+ outputs: [
63
+ {
64
+ internalType: "result<_, error>",
65
+ type: "result<_, error>",
66
+ },
67
+ ],
68
+ });
69
+ });
70
+ test("selects transfer function by name", () => {
71
+ const item = getWitItem({
72
+ wit: nativeToken,
73
+ name: "transfer",
74
+ });
75
+ expect(item).toStrictEqual({
76
+ name: "transfer",
77
+ type: "function",
78
+ context: "proc",
79
+ inputs: [
80
+ {
81
+ internalType: "string",
82
+ type: "string",
83
+ name: "to",
84
+ },
85
+ {
86
+ internalType: "decimal",
87
+ type: "decimal",
88
+ name: "n",
89
+ },
90
+ ],
91
+ outputs: [
92
+ {
93
+ internalType: "result<_, error>",
94
+ type: "result<_, error>",
95
+ },
96
+ ],
97
+ });
98
+ });
99
+ test("selects balance function by name", () => {
100
+ const item = getWitItem({
101
+ wit: nativeToken,
102
+ name: "balance",
103
+ });
104
+ expect(item).toStrictEqual({
105
+ name: "balance",
106
+ type: "function",
107
+ context: "view",
108
+ inputs: [
109
+ {
110
+ internalType: "string",
111
+ type: "string",
112
+ name: "acc",
113
+ },
114
+ ],
115
+ outputs: [
116
+ {
117
+ internalType: "option<decimal>",
118
+ type: "option<decimal>",
119
+ },
120
+ ],
121
+ });
122
+ });
123
+ test("selects balances function by name", () => {
124
+ const item = getWitItem({
125
+ wit: nativeToken,
126
+ name: "balances",
127
+ });
128
+ expect(item).toStrictEqual({
129
+ name: "balances",
130
+ type: "function",
131
+ context: "view",
132
+ inputs: [],
133
+ outputs: [
134
+ {
135
+ type: "list<tuple>",
136
+ internalType: "list<balance>",
137
+ components: [
138
+ {
139
+ internalType: "string",
140
+ name: "key",
141
+ type: "string",
142
+ },
143
+ {
144
+ internalType: "decimal",
145
+ name: "value",
146
+ type: "decimal",
147
+ },
148
+ ],
149
+ },
150
+ ],
151
+ });
152
+ });
153
+ test("selects total-supply function by name (kebab case)", () => {
154
+ const item = getWitItem({
155
+ wit: nativeToken,
156
+ name: "total-supply",
157
+ });
158
+ expect(item).toBeDefined();
159
+ expect(item.name).toBe("total-supply");
160
+ const inputs = item.inputs ?? [];
161
+ expect(inputs.map((p) => p.name)).toEqual([]);
162
+ expect(inputs.map((p) => p.type)).toEqual([]);
163
+ // Optional: assert output type
164
+ // expect((item as any).outputs?.[0]?.type).toBe("decimal");
165
+ });
166
+ });
167
+ //# sourceMappingURL=get-wit-item.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-wit-item.test.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/wit/get-wit-item.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { expect, test } from "vitest";
2
+ import { parseRecords } from "./records.js";
3
+ test("parse records", () => {
4
+ expect(parseRecords([
5
+ "record contract-address { name: string, height: s64, tx-index: s64 }",
6
+ "record token-pair { a: contract-address, b: contract-address }",
7
+ ])).toEqual({
8
+ "contract-address": [
9
+ { name: "name", type: "string", internalType: "string" },
10
+ { name: "height", type: "s64", internalType: "s64" },
11
+ { name: "tx-index", type: "s64", internalType: "s64" },
12
+ ],
13
+ "token-pair": [
14
+ {
15
+ type: "tuple",
16
+ name: "a",
17
+ internalType: "contract-address",
18
+ components: [
19
+ { name: "name", type: "string", internalType: "string" },
20
+ { name: "height", type: "s64", internalType: "s64" },
21
+ { name: "tx-index", type: "s64", internalType: "s64" },
22
+ ],
23
+ },
24
+ {
25
+ type: "tuple",
26
+ name: "b",
27
+ internalType: "contract-address",
28
+ components: [
29
+ { name: "name", type: "string", internalType: "string" },
30
+ { name: "height", type: "s64", internalType: "s64" },
31
+ { name: "tx-index", type: "s64", internalType: "s64" },
32
+ ],
33
+ },
34
+ ],
35
+ });
36
+ });
37
+ test("generic", () => {
38
+ expect(parseRecords(["record generic { values: list<string> }"])).toEqual({
39
+ generic: [
40
+ { name: "values", type: "list<string>", internalType: "list<string>" },
41
+ ],
42
+ });
43
+ });
44
+ test("generic", () => {
45
+ expect(parseRecords([
46
+ "record contract-address { name: string, height: s64, tx-index: s64 }",
47
+ "record generic { values: list<contract-address> }",
48
+ ])).toEqual({
49
+ "contract-address": [
50
+ { name: "name", type: "string", internalType: "string" },
51
+ { name: "height", type: "s64", internalType: "s64" },
52
+ { name: "tx-index", type: "s64", internalType: "s64" },
53
+ ],
54
+ generic: [
55
+ {
56
+ name: "values",
57
+ type: "list<contract-address>",
58
+ internalType: "list<contract-address>",
59
+ },
60
+ ],
61
+ });
62
+ });
63
+ //# sourceMappingURL=records.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.test.js","sourceRoot":"","sources":["../../../../../src/wit/wit-parser/core/records.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;IACzB,MAAM,CACJ,YAAY,CAAC;QACX,uEAAuE;QACvE,iEAAiE;KAClE,CAAC,CACH,CAAC,OAAO,CAAC;QACR,kBAAkB,EAAE;YAClB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;YACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;YACpD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;SACvD;QACD,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,YAAY,EAAE,kBAAkB;gBAChC,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;oBACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;oBACpD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;iBACvD;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,YAAY,EAAE,kBAAkB;gBAChC,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;oBACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;oBACpD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;iBACvD;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,MAAM,CAAC,YAAY,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACzE,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE;SACvE;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,MAAM,CACJ,YAAY,CAAC;QACX,uEAAuE;QACvE,oDAAoD;KACrD,CAAC,CACH,CAAC,OAAO,CAAC;QACR,kBAAkB,EAAE;YAClB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;YACxD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;YACpD,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;SACvD;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,YAAY,EAAE,wBAAwB;aACvC;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { expectTypeOf, test } from "vitest";
2
+ test("ParseRecords", () => {
3
+ expectTypeOf().toEqualTypeOf();
4
+ expectTypeOf().toEqualTypeOf();
5
+ expectTypeOf().toEqualTypeOf();
6
+ });
7
+ test("ParseRecord", () => {
8
+ expectTypeOf().toEqualTypeOf();
9
+ expectTypeOf().toEqualTypeOf();
10
+ expectTypeOf().toEqualTypeOf();
11
+ });
12
+ test("ParseRecordProperties", () => {
13
+ expectTypeOf().toEqualTypeOf();
14
+ expectTypeOf().toEqualTypeOf();
15
+ expectTypeOf().toEqualTypeOf();
16
+ expectTypeOf().toEqualTypeOf();
17
+ expectTypeOf().toEqualTypeOf();
18
+ });
19
+ //# sourceMappingURL=records.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.test-d.js","sourceRoot":"","sources":["../../../../../../src/wit/wit-parser/core/types/records.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAkB5C,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,YAAY,EAOT,CAAC,aAAa,EAgEb,CAAC;IACL,YAAY,EAOT,CAAC,aAAa,EAyBb,CAAC;IACL,YAAY,EAET,CAAC,aAAa,EAYb,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IACvB,YAAY,EAET,CAAC,aAAa,EAmBb,CAAC;IAEL,YAAY,EAET,CAAC,aAAa,EAcb,CAAC;IAEL,YAAY,EAKT,CAAC,aAAa,EA2Cb,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,YAAY,EAET,CAAC,aAAa,EAkBd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAad,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAuBd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAOd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAYd,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../src/wit/wit-parser/core/types/utils.ts"],"names":[],"mappings":""}