@kontor/kontor-sdk 1.0.0-alpha.3 → 1.0.0-alpha.4

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 (113) hide show
  1. package/dist/src/kwit/error.js +59 -0
  2. package/dist/src/kwit/error.js.map +1 -0
  3. package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js +29 -0
  4. package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js.map +1 -0
  5. package/dist/src/kwit/kwit-parser/core/errors/signature.js +42 -0
  6. package/dist/src/kwit/kwit-parser/core/errors/signature.js.map +1 -0
  7. package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js +18 -0
  8. package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js.map +1 -0
  9. package/dist/src/kwit/kwit-parser/core/records.js +73 -0
  10. package/dist/src/kwit/kwit-parser/core/records.js.map +1 -0
  11. package/dist/src/kwit/kwit-parser/core/records.test.js +53 -0
  12. package/dist/src/kwit/kwit-parser/core/records.test.js.map +1 -0
  13. package/dist/src/kwit/kwit-parser/core/signatures.js +33 -0
  14. package/dist/src/kwit/kwit-parser/core/signatures.js.map +1 -0
  15. package/dist/src/kwit/kwit-parser/core/signatures.test.js +54 -0
  16. package/dist/src/kwit/kwit-parser/core/signatures.test.js.map +1 -0
  17. package/dist/src/kwit/kwit-parser/core/types/records.js +2 -0
  18. package/dist/src/kwit/kwit-parser/core/types/records.js.map +1 -0
  19. package/dist/src/kwit/kwit-parser/core/types/records.test-d.js +19 -0
  20. package/dist/src/kwit/kwit-parser/core/types/records.test-d.js.map +1 -0
  21. package/dist/src/kwit/kwit-parser/core/types/signatures.js +3 -0
  22. package/dist/src/kwit/kwit-parser/core/types/signatures.js.map +1 -0
  23. package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js +18 -0
  24. package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js.map +1 -0
  25. package/dist/src/kwit/kwit-parser/core/types/utils.js +2 -0
  26. package/dist/src/kwit/kwit-parser/core/types/utils.js.map +1 -0
  27. package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js +159 -0
  28. package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js.map +1 -0
  29. package/dist/src/kwit/kwit-parser/core/utils.js +212 -0
  30. package/dist/src/kwit/kwit-parser/core/utils.js.map +1 -0
  31. package/dist/src/kwit/kwit-parser/core/utils.test.js +302 -0
  32. package/dist/src/kwit/kwit-parser/core/utils.test.js.map +1 -0
  33. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js +26 -0
  34. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js.map +1 -0
  35. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js +83 -0
  36. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js.map +1 -0
  37. package/dist/src/kwit/kwit-parser/parse-kwit.js +16 -0
  38. package/dist/src/kwit/kwit-parser/parse-kwit.js.map +1 -0
  39. package/dist/src/kwit/kwit-parser/parse-kwit.test.js +78 -0
  40. package/dist/src/kwit/kwit-parser/parse-kwit.test.js.map +1 -0
  41. package/dist/src/kwit/kwit.js +2 -0
  42. package/dist/src/kwit/kwit.js.map +1 -0
  43. package/dist/src/kwit/kwit.test.js +9 -0
  44. package/dist/src/kwit/kwit.test.js.map +1 -0
  45. package/dist/src/kwit/narrow.js +14 -0
  46. package/dist/src/kwit/narrow.js.map +1 -0
  47. package/dist/src/kwit/regex.js +6 -0
  48. package/dist/src/kwit/regex.js.map +1 -0
  49. package/dist/src/kwit/register.js +2 -0
  50. package/dist/src/kwit/register.js.map +1 -0
  51. package/dist/src/kwit/type-utils.js +2 -0
  52. package/dist/src/kwit/type-utils.js.map +1 -0
  53. package/dist/src/kwit/utils.js +2 -0
  54. package/dist/src/kwit/utils.js.map +1 -0
  55. package/dist/src/kwit/utils.test-d.js +17 -0
  56. package/dist/src/kwit/utils.test-d.js.map +1 -0
  57. package/dist/src/kwit/version.js +2 -0
  58. package/dist/src/kwit/version.js.map +1 -0
  59. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js +12 -13
  60. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js.map +1 -1
  61. package/dist/src/sdk/actions/public/test-mempool-accept.js +1 -1
  62. package/dist/src/sdk/actions/public/test-mempool-accept.js.map +1 -1
  63. package/dist/src/sdk/clients/decorators/public.js +2 -0
  64. package/dist/src/sdk/clients/decorators/public.js.map +1 -1
  65. package/dist/src/sdk/errors/kwit.js +19 -0
  66. package/dist/src/sdk/errors/kwit.js.map +1 -0
  67. package/dist/src/sdk/test/e2e.test.js +27 -6
  68. package/dist/src/sdk/test/e2e.test.js.map +1 -1
  69. package/dist/src/sdk/utils/kwit/codecs/decimal.js +165 -0
  70. package/dist/src/sdk/utils/kwit/codecs/decimal.js.map +1 -0
  71. package/dist/src/sdk/utils/kwit/codecs/enum.js +104 -0
  72. package/dist/src/sdk/utils/kwit/codecs/enum.js.map +1 -0
  73. package/dist/src/sdk/utils/kwit/codecs/integer.js +167 -0
  74. package/dist/src/sdk/utils/kwit/codecs/integer.js.map +1 -0
  75. package/dist/src/sdk/utils/kwit/codecs/list.js +117 -0
  76. package/dist/src/sdk/utils/kwit/codecs/list.js.map +1 -0
  77. package/dist/src/sdk/utils/kwit/codecs/option.js +91 -0
  78. package/dist/src/sdk/utils/kwit/codecs/option.js.map +1 -0
  79. package/dist/src/sdk/utils/kwit/codecs/string.js +27 -0
  80. package/dist/src/sdk/utils/kwit/codecs/string.js.map +1 -0
  81. package/dist/src/sdk/utils/kwit/codecs/types.js +45 -0
  82. package/dist/src/sdk/utils/kwit/codecs/types.js.map +1 -0
  83. package/dist/src/sdk/utils/kwit/codecs/unit.js +22 -0
  84. package/dist/src/sdk/utils/kwit/codecs/unit.js.map +1 -0
  85. package/dist/src/sdk/utils/kwit/decode-function-result.js +36 -0
  86. package/dist/src/sdk/utils/kwit/decode-function-result.js.map +1 -0
  87. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js +286 -0
  88. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js.map +1 -0
  89. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js +75 -0
  90. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js.map +1 -0
  91. package/dist/src/sdk/utils/kwit/encode-function-data.js +17 -0
  92. package/dist/src/sdk/utils/kwit/encode-function-data.js.map +1 -0
  93. package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js +21 -0
  94. package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js.map +1 -0
  95. package/dist/src/sdk/utils/kwit/encode-function-data.test.js +91 -0
  96. package/dist/src/sdk/utils/kwit/encode-function-data.test.js.map +1 -0
  97. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js +250 -0
  98. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js.map +1 -0
  99. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js +62 -0
  100. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js.map +1 -0
  101. package/dist/src/sdk/utils/kwit/get-kwit-item.js +186 -0
  102. package/dist/src/sdk/utils/kwit/get-kwit-item.js.map +1 -0
  103. package/dist/src/sdk/utils/kwit/get-kwit-item.test.js +119 -0
  104. package/dist/src/sdk/utils/kwit/get-kwit-item.test.js.map +1 -0
  105. package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js +24 -0
  106. package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js.map +1 -0
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +1 -1
  109. package/src/sdk/actions/kontor/wallet/sign-reveal.ts +12 -14
  110. package/src/sdk/actions/public/test-mempool-accept.ts +2 -3
  111. package/src/sdk/clients/decorators/public.ts +11 -0
  112. package/src/sdk/test/e2e.test.ts +31 -6
  113. package/src/sdk/types/btc-rpc.ts +1 -1
@@ -0,0 +1,104 @@
1
+ import * as z from "zod";
2
+ export var Enum;
3
+ (function (Enum) {
4
+ let Parens;
5
+ (function (Parens) {
6
+ Parens.schema = z.templateLiteral([
7
+ z.literal("("),
8
+ z.string(),
9
+ z.literal(")"),
10
+ ]);
11
+ })(Parens = Enum.Parens || (Enum.Parens = {}));
12
+ let Option;
13
+ (function (Option) {
14
+ // some(foo) or some( foo bar ) or even some()
15
+ // also allow just "some" ??? we'll decide below.
16
+ Option.waveRegex = /^(?<kind>some)(?:\((?<value>[\s\S]*?)\))$|^(?<none>none)$/;
17
+ // We'll keep these tiny sub-schemas because they're readable elsewhere.
18
+ let None;
19
+ (function (None) {
20
+ None.schema = z.literal("none");
21
+ })(None = Option.None || (Option.None = {}));
22
+ let Some;
23
+ (function (Some) {
24
+ // NOTE: we REQUIRE parens for "some(...)"
25
+ // If you want plain "some" to be valid, we could relax later.
26
+ Some.schema = z.templateLiteral([
27
+ z.literal("some"),
28
+ Parens.schema,
29
+ ]);
30
+ })(Some = Option.Some || (Option.Some = {}));
31
+ // Raw union of the spellings we accept as input
32
+ // e.g. "none" or "some(<stuff>)"
33
+ const rawSchema = z.union([None.schema, Some.schema]);
34
+ // Transform raw string -> { kind: "none" | "some"; value: string | null }
35
+ // Then pipe into a discriminated union so .infer<> is nice & strict.
36
+ Option.schema = rawSchema
37
+ .transform((expr) => {
38
+ const trimmed = expr.trim();
39
+ // Fast path for "none"
40
+ if (trimmed === "none") {
41
+ return {
42
+ kind: "none",
43
+ };
44
+ }
45
+ // else parse "some(...)"
46
+ const match = /^some\((?<value>[\s\S]*?)\)$/.exec(trimmed);
47
+ if (!match?.groups) {
48
+ throw new Error(`invariant: invalid wave option expression: ${expr}`);
49
+ }
50
+ const value = match.groups.value?.trim() ?? "";
51
+ return {
52
+ kind: "some",
53
+ value: value === "" ? null : value,
54
+ };
55
+ })
56
+ .pipe(z.discriminatedUnion("kind", [
57
+ z.object({
58
+ kind: z.literal("none"),
59
+ }),
60
+ z.object({
61
+ kind: z.literal("some"),
62
+ value: z.string().nullable(), // raw value contents or null (for `some()`)
63
+ }),
64
+ ]));
65
+ })(Option = Enum.Option || (Enum.Option = {}));
66
+ let Result;
67
+ (function (Result) {
68
+ Result.waveRegex = /^(?<_tag>ok|err)(?:\((?<value>[\s\S]*?)\))?$/;
69
+ let Ok;
70
+ (function (Ok) {
71
+ Ok.schema = z.literal("ok");
72
+ })(Ok = Result.Ok || (Result.Ok = {}));
73
+ let Err;
74
+ (function (Err) {
75
+ Err.schema = z.literal("err");
76
+ })(Err = Result.Err || (Result.Err = {}));
77
+ Result.schema = z
78
+ .templateLiteral([
79
+ z.union([Ok.schema, Err.schema]),
80
+ Parens.schema.optional(),
81
+ ])
82
+ .transform((expr) => {
83
+ const match = Result.waveRegex.exec(expr.trim());
84
+ if (!match?.groups) {
85
+ throw new Error(`invariant: invalid wave expression: ${expr}`);
86
+ }
87
+ const { _tag, value } = match.groups;
88
+ return { _tag, value: value?.trim() || null };
89
+ })
90
+ .pipe(
91
+ // lock the output into a discriminated union so z.infer<> is nice
92
+ z.discriminatedUnion("_tag", [
93
+ z.object({
94
+ _tag: Ok.schema, // "ok"
95
+ value: z.string().nullable(), // raw value text (we haven't parsed r0..sign here)
96
+ }),
97
+ z.object({
98
+ _tag: Err.schema, // "err"
99
+ value: z.string().nullable(), // err(message("...")) -> 'message("...")' or null
100
+ }),
101
+ ]));
102
+ })(Result = Enum.Result || (Enum.Result = {}));
103
+ })(Enum || (Enum = {}));
104
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/enum.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ // integer.ts
2
+ // TODO: i may want to simplify this later
3
+ //
4
+ import * as z from "zod";
5
+ const U64_MAX = (1n << 64n) - 1n;
6
+ export const U64 = z
7
+ .bigint()
8
+ .min(0n, { message: "must be ≥ 0" })
9
+ .max(U64_MAX, { message: "must be ≤ 2^64-1" });
10
+ export function parseIntegerWaveExpr(expr) {
11
+ const inner = expr
12
+ .trim()
13
+ .replace(/^\{\s*/, "")
14
+ .replace(/\s*\}$/, "");
15
+ if (!inner)
16
+ throw new Error("empty integer expression");
17
+ const parts = inner
18
+ .split(",")
19
+ .map((p) => p.trim())
20
+ .filter(Boolean);
21
+ const seen = new Set();
22
+ // Default middle limbs to 0 for ergonomics; require r0 + sign.
23
+ let out = {
24
+ r1: 0n,
25
+ r2: 0n,
26
+ r3: 0n,
27
+ };
28
+ for (const part of parts) {
29
+ const idx = part.indexOf(":");
30
+ if (idx === -1) {
31
+ throw new Error(`expected "key: value", got "${part}"`);
32
+ }
33
+ const keyRaw = part.slice(0, idx).trim();
34
+ const valRaw = part.slice(idx + 1).trim();
35
+ if (seen.has(keyRaw))
36
+ throw new Error(`duplicate key "${keyRaw}"`);
37
+ seen.add(keyRaw);
38
+ switch (keyRaw) {
39
+ case "r0":
40
+ case "r1":
41
+ case "r2":
42
+ case "r3": {
43
+ const normalized = valRaw.replace(/_/g, "");
44
+ if (!/^[+-]?\d+$/.test(normalized)) {
45
+ throw new Error(`invalid integer for ${keyRaw}: "${valRaw}"`);
46
+ }
47
+ const limb = BigInt(normalized);
48
+ if (limb < 0n || limb > U64_MAX) {
49
+ throw new Error(`value for ${keyRaw} out of u64 range: ${valRaw}`);
50
+ }
51
+ out[keyRaw] = limb;
52
+ break;
53
+ }
54
+ case "sign": {
55
+ if (valRaw !== "plus" && valRaw !== "minus") {
56
+ throw new Error(`invalid sign "${valRaw}" (expected plus|minus)`);
57
+ }
58
+ out.sign = valRaw;
59
+ break;
60
+ }
61
+ default:
62
+ throw new Error(`unexpected key "${keyRaw}"`);
63
+ }
64
+ }
65
+ if (out.r0 === undefined)
66
+ throw new Error(`missing required key "r0"`);
67
+ if (!out.sign)
68
+ throw new Error(`missing required key "sign"`);
69
+ return _Integer.schema.parse(out);
70
+ }
71
+ // function parseIntegerWaveExpr(expr: string): _IntegerRaw.T {
72
+ // // strip { ... }
73
+ // const inner = expr.trim().replace(/^\{|\}$/g, "");
74
+ //
75
+ // // split at commas at top level
76
+ // // e.g. ["r0: 1337", "r1: 0", "r2: 0", "r3: 0", "sign: Plus"]
77
+ // const parts = inner.split(",").map((p) => p.trim());
78
+ //
79
+ // const out: any = {};
80
+ // for (const part of parts) {
81
+ // const [keyRaw, valRaw] = part.split(":").map((s) => s.trim());
82
+ //
83
+ // if (
84
+ // keyRaw === "r0" ||
85
+ // keyRaw === "r1" ||
86
+ // keyRaw === "r2" ||
87
+ // keyRaw === "r3"
88
+ // ) {
89
+ // out[keyRaw] = Number(valRaw);
90
+ // continue;
91
+ // }
92
+ //
93
+ // if (keyRaw === "sign") {
94
+ // if (valRaw !== "Plus" && valRaw !== "Minus") {
95
+ // throw new Error(`invalid sign '${valRaw}' in ${expr}`);
96
+ // }
97
+ // out.sign = valRaw;
98
+ // continue;
99
+ // }
100
+ //
101
+ // throw new Error(`unexpected key '${keyRaw}' in ${expr}`);
102
+ // }
103
+ //
104
+ // // validate with zod, return typed
105
+ // return _IntegerRaw.schema.parse(out);
106
+ // }
107
+ export var _Integer;
108
+ (function (_Integer) {
109
+ let Sign;
110
+ (function (Sign) {
111
+ Sign.schema = z.enum(["plus", "minus"]);
112
+ })(Sign = _Integer.Sign || (_Integer.Sign = {}));
113
+ _Integer.schema = z.object({
114
+ r0: U64,
115
+ r1: U64,
116
+ r2: U64,
117
+ r3: U64,
118
+ sign: Sign.schema,
119
+ });
120
+ })(_Integer || (_Integer = {}));
121
+ // --- IntegerCodec ------------------------------------------------
122
+ // Instance class: represents one integer value in limb/sign form,
123
+ // and can render toWave() / toJs().
124
+ class _IntegerCodec {
125
+ constructor(data) {
126
+ Object.defineProperty(this, "data", {
127
+ enumerable: true,
128
+ configurable: true,
129
+ writable: true,
130
+ value: void 0
131
+ });
132
+ this.data = data;
133
+ }
134
+ static fromJs(value) {
135
+ let v = BigInt(value);
136
+ const sign = v < 0n ? "minus" : "plus";
137
+ if (v < 0n)
138
+ v = -v;
139
+ // break absolute value into four 32-bit limbs (little-endian style)
140
+ const mask32 = (1n << 32n) - 1n;
141
+ const r0 = v & mask32;
142
+ const r1 = (v >> 32n) & mask32;
143
+ const r2 = (v >> 64n) & mask32;
144
+ const r3 = (v >> 96n) & mask32;
145
+ return new _IntegerCodec({ r0, r1, r2, r3, sign });
146
+ }
147
+ static fromKontor(data) {
148
+ return new _IntegerCodec(data);
149
+ }
150
+ static parseWave(expr) {
151
+ return _Integer.schema.parse(parseIntegerWaveExpr(expr));
152
+ }
153
+ // instance -> WaveExpr
154
+ toWave() {
155
+ return `{r0: ${this.data.r0}, r1: ${this.data.r1}, r2: ${this.data.r2}, r3: ${this.data.r3}, sign: ${this.data.sign}}`;
156
+ }
157
+ // instance -> JS bigint
158
+ toJs() {
159
+ const value = (BigInt(this.data.r3) << 96n) |
160
+ (BigInt(this.data.r2) << 64n) |
161
+ (BigInt(this.data.r1) << 32n) |
162
+ BigInt(this.data.r0);
163
+ return this.data.sign === "minus" ? -value : value;
164
+ }
165
+ }
166
+ export const IntegerCodec = _IntegerCodec;
167
+ //# sourceMappingURL=integer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integer.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/integer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Instance that represents a decoded list<Inner> value.
3
+ *
4
+ * Generic parameterization is on the *inner codec constructor* so that
5
+ * the JS type of this list instance is always ListJs<CodecJs<InnerC>>.
6
+ */
7
+ export class ListCodecFactory {
8
+ constructor(innerCodec, data) {
9
+ Object.defineProperty(this, "innerCodec", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: innerCodec
14
+ });
15
+ Object.defineProperty(this, "data", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: data
20
+ });
21
+ }
22
+ toWave() {
23
+ // Convert array of inner wave expressions back to array syntax
24
+ const innerWaves = this.data.join(", ");
25
+ return `[${innerWaves}]`;
26
+ }
27
+ toJs() {
28
+ // Decode each element using the inner codec
29
+ return this.data.map((innerWave) => {
30
+ // 1) parse inner WaveExpr → inner WaveData
31
+ const innerWaveData = this.innerCodec.parseWave(innerWave);
32
+ // 2) WaveData → inner instance
33
+ const innerInst = this.innerCodec.fromKontor(innerWaveData);
34
+ // 3) instance → JS
35
+ return innerInst.toJs();
36
+ });
37
+ }
38
+ // ----- Static factory to build a typed list<T> codec constructor -----
39
+ static create(innerCodec) {
40
+ // Class expression implements the static methods required by CodecConstructor
41
+ class ListCodecClass {
42
+ constructor(data) {
43
+ // Internally forward all instance behavior to ListCodecFactory
44
+ Object.defineProperty(this, "_impl", {
45
+ enumerable: true,
46
+ configurable: true,
47
+ writable: true,
48
+ value: void 0
49
+ });
50
+ this._impl = new ListCodecFactory(innerCodec, data);
51
+ }
52
+ toWave() {
53
+ return this._impl.toWave();
54
+ }
55
+ toJs() {
56
+ return this._impl.toJs();
57
+ }
58
+ // ----- Static methods required by CodecConstructor -----
59
+ static fromJs(value) {
60
+ // Convert JS array to array of wave expressions
61
+ const waveArray = value.map((item) => {
62
+ const innerInst = innerCodec.fromJs(item);
63
+ return innerInst.toWave();
64
+ });
65
+ return new ListCodecClass(waveArray);
66
+ }
67
+ static fromKontor(data) {
68
+ return new ListCodecClass(data);
69
+ }
70
+ static parseWave(expr) {
71
+ // Parse array syntax: "[item1, item2, ...]"
72
+ const trimmed = expr.trim();
73
+ // Empty array
74
+ if (trimmed === "[]") {
75
+ return [];
76
+ }
77
+ // Remove brackets
78
+ if (!trimmed.startsWith("[") || !trimmed.endsWith("]")) {
79
+ throw new Error(`Expected array syntax [...], got: ${expr}`);
80
+ }
81
+ const inner = trimmed.slice(1, -1).trim();
82
+ if (inner === "") {
83
+ return [];
84
+ }
85
+ // Split by commas at the top level (respecting nested structures)
86
+ const items = [];
87
+ let depth = 0;
88
+ let current = "";
89
+ for (let i = 0; i < inner.length; i++) {
90
+ const char = inner[i];
91
+ if (char === "{" || char === "[" || char === "(") {
92
+ depth++;
93
+ current += char;
94
+ }
95
+ else if (char === "}" || char === "]" || char === ")") {
96
+ depth--;
97
+ current += char;
98
+ }
99
+ else if (char === "," && depth === 0) {
100
+ items.push(current.trim());
101
+ current = "";
102
+ }
103
+ else {
104
+ current += char;
105
+ }
106
+ }
107
+ // Add last item
108
+ if (current.trim()) {
109
+ items.push(current.trim());
110
+ }
111
+ return items;
112
+ }
113
+ }
114
+ return ListCodecClass;
115
+ }
116
+ }
117
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ import { Enum } from "./enum.js";
2
+ export const KontorOption = Enum.Option;
3
+ /**
4
+ * Instance that represents a decoded option<Inner> value.
5
+ *
6
+ * Generic parameterization is on the *inner codec constructor* so that
7
+ * the JS type of this option instance is always OptionJs<CodecJs<InnerC>>.
8
+ */
9
+ export class OptionCodecFactory {
10
+ constructor(innerCodec, data) {
11
+ Object.defineProperty(this, "innerCodec", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: innerCodec
16
+ });
17
+ Object.defineProperty(this, "data", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: data
22
+ });
23
+ }
24
+ toWave() {
25
+ if (this.data.kind === "none") {
26
+ return "none";
27
+ }
28
+ // assume data.value is a WaveExpr string for the inner
29
+ return `some(${this.data.value ?? ""})`;
30
+ }
31
+ toJs() {
32
+ if (this.data.kind === "none") {
33
+ return { kind: "none" };
34
+ }
35
+ if (this.data.value == null) {
36
+ throw new Error("Option some() has no inner value");
37
+ }
38
+ // 1) parse inner WaveExpr → inner WaveData
39
+ const innerWaveData = this.innerCodec.parseWave(this.data.value);
40
+ // 2) WaveData → inner instance
41
+ const innerInst = this.innerCodec.fromKontor(innerWaveData);
42
+ // 3) instance → JS
43
+ return { kind: "some", value: innerInst.toJs() };
44
+ }
45
+ // ----- Static factory to build a typed option<T> codec constructor -----
46
+ static create(innerCodec) {
47
+ // Class expression implements the static methods required by CodecConstructor
48
+ class OptionCodecClass {
49
+ constructor(data) {
50
+ // Internally forward all instance behavior to OptionCodecInstance
51
+ Object.defineProperty(this, "_impl", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: void 0
56
+ });
57
+ this._impl = new OptionCodecFactory(innerCodec, data);
58
+ }
59
+ // ----- CodecConstructor statics -----
60
+ static fromJs(value) {
61
+ if (value.kind === "none") {
62
+ return new OptionCodecFactory(innerCodec, { kind: "none" });
63
+ }
64
+ // encode inner via innerCodec
65
+ const innerInst = innerCodec.fromJs(value.value);
66
+ const innerWave = innerInst.toWave();
67
+ return new OptionCodecFactory(innerCodec, {
68
+ kind: "some",
69
+ value: innerWave,
70
+ });
71
+ }
72
+ static parseWave(expr) {
73
+ // Expect raw "none" or "some(<inner...>)"
74
+ return Enum.Option.schema.parse(expr);
75
+ }
76
+ static fromKontor(data) {
77
+ return new OptionCodecFactory(innerCodec, data);
78
+ }
79
+ // ----- Instance side -----
80
+ toWave() {
81
+ return this._impl.toWave();
82
+ }
83
+ toJs() {
84
+ return this._impl.toJs();
85
+ }
86
+ }
87
+ // Satisfy the CodecConstructor contract with precise generics
88
+ return OptionCodecClass;
89
+ }
90
+ }
91
+ //# sourceMappingURL=option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/option.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AAKxC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAI7B,YACmB,UAAkB,EACnB,IAAmB;QADnC;;;;mBAAiB,UAAU;WAAQ;QACnC;;;;mBAAgB,IAAI;WAAe;IAClC,CAAC;IAEJ,MAAM;QACJ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,MAAkB,CAAC;QAC5B,CAAC;QACD,uDAAuD;QACvD,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAe,CAAC;IACtD,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CACK,CAAC;QAEvB,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAC1C,aAAa,CACO,CAAC;QAEvB,mBAAmB;QACnB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAqB,EAAE,CAAC;IACtE,CAAC;IAED,0EAA0E;IAE1E,MAAM,CAAC,MAAM,CAGX,UAAkB;QASlB,8EAA8E;QAC9E,MAAM,gBAAgB;YAIpB,YAAY,IAAmB;gBAH/B,kEAAkE;gBACjD;;;;;mBAAkC;gBAGjD,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;YAED,uCAAuC;YAEvC,MAAM,CAAC,MAAM,CACX,KAAgC;gBAEhC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,8BAA8B;gBAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAwB,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrC,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE;oBACxC,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,SAAS,CAAC,IAAY;gBAC3B,0CAA0C;gBAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,CAAC,UAAU,CAAC,IAAmB;gBACnC,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;YAED,4BAA4B;YAE5B,MAAM;gBACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC;SACF;QAED,8DAA8D;QAC9D,OAAO,gBAIN,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ export const StringCodec = {
2
+ fromJs(value) {
3
+ return {
4
+ toWave() {
5
+ // Wave syntax for string args: we assume quoted
6
+ return `"${value}"`;
7
+ },
8
+ toJs() {
9
+ return value;
10
+ },
11
+ };
12
+ },
13
+ fromKontor(data) {
14
+ return {
15
+ toWave() {
16
+ return `"${data}"`;
17
+ },
18
+ toJs() {
19
+ return data;
20
+ },
21
+ };
22
+ },
23
+ parseWave(expr) {
24
+ return JSON.parse(expr);
25
+ },
26
+ };
27
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/string.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,KAAa;QAClB,OAAO;YACL,MAAM;gBACJ,gDAAgD;gBAChD,OAAO,IAAI,KAAK,GAAe,CAAC;YAClC,CAAC;YACD,IAAI;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO;YACL,MAAM;gBACJ,OAAO,IAAI,IAAI,GAAe,CAAC;YACjC,CAAC;YACD,IAAI;gBACF,OAAO,IAAc,CAAC;YACxB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACoE,CAAC"}
@@ -0,0 +1,45 @@
1
+ export const unit = { _tag: "Unit" };
2
+ // ---------- Encoder: JS → WaveExpr (fully type-safe) ----------
3
+ export class Encoder {
4
+ constructor(schema) {
5
+ Object.defineProperty(this, "schema", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: schema
10
+ });
11
+ }
12
+ encode(values) {
13
+ const out = {};
14
+ for (const key of Object.keys(this.schema)) {
15
+ const ctor = this.schema[key];
16
+ const inst = ctor.fromJs(values[key]);
17
+ out[key] = inst.toWave();
18
+ }
19
+ return out;
20
+ }
21
+ }
22
+ // ---------- Decoder: WaveExpr → JS (inferred from codec) ----------
23
+ export class Decoder {
24
+ constructor(codec) {
25
+ Object.defineProperty(this, "codec", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: codec
30
+ });
31
+ }
32
+ decode(expr) {
33
+ console.log("in tuple decode");
34
+ const wave = this.codec.parseWave(expr);
35
+ console.log({ wave });
36
+ const inst = this.codec.fromKontor(wave);
37
+ console.log({ inst });
38
+ return inst.toJs();
39
+ }
40
+ }
41
+ // Optional ergonomic helper so callers don't write generics at `new` sites
42
+ export function makeDecoder(codec) {
43
+ return new Decoder(codec);
44
+ }
45
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/types.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,IAAI,GAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAuE3C,iEAAiE;AAEjE,MAAM,OAAO,OAAO;IAClB,YAA6B,MAAS;QAA1B;;;;mBAAiB,MAAM;WAAG;IAAG,CAAC;IAE1C,MAAM,CAAC,MAAkB;QACvB,MAAM,GAAG,GAAG,EAAkC,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAmB,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,qEAAqE;AAErE,MAAM,OAAO,OAAO;IAGlB,YAA6B,KAAQ;QAAzB;;;;mBAAiB,KAAK;WAAG;IAAG,CAAC;IAEzC,MAAM,CAAC,IAAY;QACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAiB,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAiB,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,EAAgB,CAAC;IACnC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAEzB,KAAQ;IACR,OAAO,IAAI,OAAO,CAAI,KAAK,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { unit, } from "./types.js";
2
+ class _UnitCodec {
3
+ constructor() { }
4
+ static fromJs(_value) {
5
+ return new _UnitCodec();
6
+ }
7
+ static fromKontor(_data) {
8
+ return new _UnitCodec();
9
+ }
10
+ static parseWave(_expr) {
11
+ // ok branch payload is conceptually "unit"
12
+ return unit;
13
+ }
14
+ toWave() {
15
+ return "";
16
+ }
17
+ toJs() {
18
+ return unit;
19
+ }
20
+ }
21
+ export const UnitCodec = _UnitCodec;
22
+ //# sourceMappingURL=unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/unit.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,GAEL,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU;IACd,gBAAe,CAAC;IAEhB,MAAM,CAAC,MAAM,CAAC,MAAY;QACxB,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAc;QAC9B,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,EAAc,CAAC;IACxB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,UAIxB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { decodeKwitParameter } from "./decode-kwit-parameter.js";
2
+ import { getKwitItem } from "./get-kwit-item.js";
3
+ export function decodeFunctionResult(parameters) {
4
+ const { kwit, functionName, data } = parameters;
5
+ let kwitItem = kwit[0];
6
+ if (functionName) {
7
+ const item = getKwitItem({ kwit, name: functionName });
8
+ // todo: refine error
9
+ // if (!item) throw new KwitFunctionNotFoundError(functionName, { docsPath })
10
+ if (!item)
11
+ throw new Error("KwitFunctionNotFoundError");
12
+ kwitItem = item;
13
+ }
14
+ if (kwitItem.type !== "function")
15
+ // todo: refine error
16
+ // throw new KwitFunctionNotFoundError(undefined, { docsPath })
17
+ throw new Error("KwitFunctionNotFoundError");
18
+ if (!kwitItem.outputs)
19
+ // todo: refine error
20
+ // throw new KwitFunctionOutputsNotFoundError(kwitItem.name, { docsPath })
21
+ throw new Error("KwitFunctionNotFoundError");
22
+ const value = decodeKwitParameter(data, kwitItem.outputs[0]);
23
+ // TODO: sholdn't have to index on `decoded` here
24
+ return value.decoded;
25
+ //
26
+ // if (values && values.length > 1)
27
+ // return values as DecodeFunctionResultReturnType<kwit, functionName, args>;
28
+ // if (values && values.length === 1)
29
+ // return values[0] as DecodeFunctionResultReturnType<
30
+ // kwit,
31
+ // functionName,
32
+ // args
33
+ // >;
34
+ // return undefined as DecodeFunctionResultReturnType<kwit, functionName, args>;
35
+ }
36
+ //# sourceMappingURL=decode-function-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-function-result.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/decode-function-result.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAA6B,MAAM,oBAAoB,CAAC;AAgD5E,MAAM,UAAU,oBAAoB,CAIlC,UAA8D;IAE9D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAChC,UAA4C,CAAC;IAE/C,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACvD,qBAAqB;QACrB,6EAA6E;QAC7E,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACxD,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,QAAS,CAAC,IAAI,KAAK,UAAU;QAC/B,qBAAqB;QACrB,+DAA+D;QAC/D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAS,CAAC,OAAO;QACpB,qBAAqB;QACrB,0EAA0E;QAC1E,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAS,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;IAC/D,iDAAiD;IACjD,OAAO,KAAK,CAAC,OAA6D,CAAC;IAE3E,EAAE;IACF,mCAAmC;IACnC,+EAA+E;IAC/E,qCAAqC;IACrC,wDAAwD;IACxD,YAAY;IACZ,oBAAoB;IACpB,WAAW;IACX,OAAO;IACP,gFAAgF;AAClF,CAAC"}