@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,59 @@
1
+ import { version } from "./version.js";
2
+ export class BaseError extends Error {
3
+ constructor(shortMessage, args = {}) {
4
+ const details = args.cause instanceof BaseError
5
+ ? args.cause.details
6
+ : args.cause?.message
7
+ ? args.cause.message
8
+ : args.details;
9
+ const docsPath = args.cause instanceof BaseError
10
+ ? args.cause.docsPath || args.docsPath
11
+ : args.docsPath;
12
+ const message = [
13
+ shortMessage || "An error occurred.",
14
+ "",
15
+ ...(args.metaMessages ? [...args.metaMessages, ""] : []),
16
+ ...(docsPath ? [`Docs: https://abitype.dev${docsPath}`] : []),
17
+ ...(details ? [`Details: ${details}`] : []),
18
+ `Version: kwittype@${version}`,
19
+ ].join("\n");
20
+ super(message);
21
+ Object.defineProperty(this, "details", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ Object.defineProperty(this, "docsPath", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: void 0
32
+ });
33
+ Object.defineProperty(this, "metaMessages", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: void 0
38
+ });
39
+ Object.defineProperty(this, "shortMessage", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: void 0
44
+ });
45
+ Object.defineProperty(this, "name", {
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true,
49
+ value: "KwitTypeError"
50
+ });
51
+ if (args.cause)
52
+ this.cause = args.cause;
53
+ this.details = details;
54
+ this.docsPath = docsPath;
55
+ this.metaMessages = args.metaMessages;
56
+ this.shortMessage = shortMessage;
57
+ }
58
+ }
59
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/kwit/error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AASvC,MAAM,OAAO,SAAU,SAAQ,KAAK;IAQlC,YAAY,YAAoB,EAAE,OAAsB,EAAE;QACxD,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,YAAY,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;YACpB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;gBACnB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;gBACpB,CAAC,CAAC,IAAI,CAAC,OAAQ,CAAC;QACtB,MAAM,QAAQ,GACZ,IAAI,CAAC,KAAK,YAAY,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YACtC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpB,MAAM,OAAO,GAAG;YACd,YAAY,IAAI,oBAAoB;YACpC,EAAE;YACF,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,qBAAqB,OAAO,EAAE;SAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,KAAK,CAAC,OAAO,CAAC,CAAC;QA3BjB;;;;;WAAgB;QAChB;;;;;WAA8B;QAC9B;;;;;WAAoC;QACpC;;;;;WAAqB;QAEZ;;;;mBAAO,eAAe;WAAC;QAwB9B,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import { BaseError } from "../../../error.js";
2
+ export class InvalidKwitParameterError extends BaseError {
3
+ constructor({ param }) {
4
+ super("Failed to parse Kwit parameter.", {
5
+ details: `parseKwitParameter(${JSON.stringify(param, null, 2)})`,
6
+ });
7
+ Object.defineProperty(this, "name", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: "InvalidKwitParameterError"
12
+ });
13
+ }
14
+ }
15
+ export class KwitProtectedKeywordError extends BaseError {
16
+ constructor({ param, name }) {
17
+ super("Invalid Kwit parameter.", {
18
+ details: param,
19
+ metaMessages: [`"${name}" is a protected Kwit keyword`],
20
+ });
21
+ Object.defineProperty(this, "name", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: "KwitProtectedKeywordError"
26
+ });
27
+ }
28
+ }
29
+ //# sourceMappingURL=kwit-parameter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kwit-parameter.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/errors/kwit-parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IAGtD,YAAY,EAAE,KAAK,EAA8B;QAC/C,KAAK,CAAC,iCAAiC,EAAE;YACvC,OAAO,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG;SACjE,CAAC,CAAC;QALI;;;;mBAAO,2BAA2B;WAAC;IAM5C,CAAC;CACF;AACD,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IAGtD,YAAY,EAAE,KAAK,EAAE,IAAI,EAAmC;QAC1D,KAAK,CAAC,yBAAyB,EAAE;YAC/B,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,CAAC,IAAI,IAAI,+BAA+B,CAAC;SACxD,CAAC,CAAC;QANI;;;;mBAAO,2BAA2B;WAAC;IAO5C,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ import { BaseError } from "../../../error.js";
2
+ export class InvalidSignatureError extends BaseError {
3
+ constructor({ signature, type, }) {
4
+ super(`Invalid ${type} signature.`, {
5
+ details: signature,
6
+ });
7
+ Object.defineProperty(this, "name", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: "InvalidSignatureError"
12
+ });
13
+ }
14
+ }
15
+ export class UnknownSignatureError extends BaseError {
16
+ constructor({ signature }) {
17
+ super("Unknown signature.", {
18
+ details: signature,
19
+ });
20
+ Object.defineProperty(this, "name", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: "UnknownSignatureError"
25
+ });
26
+ }
27
+ }
28
+ export class InvalidRecordSignatureError extends BaseError {
29
+ constructor({ signature }) {
30
+ super("Invalid record signature.", {
31
+ details: signature,
32
+ metaMessages: ["No properties exist."],
33
+ });
34
+ Object.defineProperty(this, "name", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: "InvalidStructSignatureError"
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/errors/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IAGlD,YAAY,EACV,SAAS,EACT,IAAI,GAIL;QACC,KAAK,CAAC,WAAW,IAAI,aAAa,EAAE;YAClC,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QAXI;;;;mBAAO,uBAAuB;WAAC;IAYxC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IAGlD,YAAY,EAAE,SAAS,EAAyB;QAC9C,KAAK,CAAC,oBAAoB,EAAE;YAC1B,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QALI;;;;mBAAO,uBAAuB;WAAC;IAMxC,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,SAAS;IAGxD,YAAY,EAAE,SAAS,EAAyB;QAC9C,KAAK,CAAC,2BAA2B,EAAE;YACjC,OAAO,EAAE,SAAS;YAClB,YAAY,EAAE,CAAC,sBAAsB,CAAC;SACvC,CAAC,CAAC;QANI;;;;mBAAO,6BAA6B;WAAC;IAO9C,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { BaseError } from "../../../error.js";
2
+ export class InvalidGenericDepthError extends BaseError {
3
+ constructor({ current, depth }) {
4
+ super("Unbalanced angle brackets.", {
5
+ metaMessages: [
6
+ `"${current.trim()}" has too many ${depth > 0 ? "opening" : "closing"} brackets.`,
7
+ ],
8
+ details: `Depth "${depth}"`,
9
+ });
10
+ Object.defineProperty(this, "name", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: "InvalidGenericDepthError"
15
+ });
16
+ }
17
+ }
18
+ //# sourceMappingURL=splitParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splitParameters.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/errors/splitParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAO,wBAAyB,SAAQ,SAAS;IAGrD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAsC;QAChE,KAAK,CAAC,4BAA4B,EAAE;YAClC,YAAY,EAAE;gBACZ,IAAI,OAAO,CAAC,IAAI,EAAE,kBAChB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAC1B,YAAY;aACb;YACD,OAAO,EAAE,UAAU,KAAK,GAAG;SAC5B,CAAC,CAAC;QAVI;;;;mBAAO,0BAA0B;WAAC;IAW3C,CAAC;CACF"}
@@ -0,0 +1,73 @@
1
+ import { execTyped, isGenericRegex } from "../../regex.js";
2
+ import { InvalidRecordSignatureError, InvalidSignatureError, } from "./errors/signature.js";
3
+ import { execRecordSignature, isRecordSignature } from "./signatures.js";
4
+ import { parseKwitParameter } from "./utils.js";
5
+ export function parseRecords(signatures) {
6
+ const shallowRecords = {};
7
+ const signaturesLength = signatures.length;
8
+ for (let i = 0; i < signaturesLength; i++) {
9
+ const signature = signatures[i];
10
+ if (!isRecordSignature(signature))
11
+ continue;
12
+ const match = execRecordSignature(signature);
13
+ if (!match)
14
+ throw new InvalidSignatureError({ signature, type: "record" });
15
+ const properties = match.properties.split(",");
16
+ const components = [];
17
+ const propertiesLength = properties.length;
18
+ for (let k = 0; k < propertiesLength; k++) {
19
+ const property = properties[k];
20
+ const trimmed = property.trim();
21
+ if (!trimmed)
22
+ continue;
23
+ const kwitParameter = parseKwitParameter(trimmed, {
24
+ type: "record",
25
+ });
26
+ components.push(kwitParameter);
27
+ }
28
+ if (!components.length)
29
+ throw new InvalidRecordSignatureError({ signature });
30
+ shallowRecords[match.name] = components;
31
+ }
32
+ const resolvedRecords = {};
33
+ const entries = Object.entries(shallowRecords);
34
+ const entriesLength = entries.length;
35
+ for (let i = 0; i < entriesLength; i++) {
36
+ const [name, parameters] = entries[i];
37
+ resolvedRecords[name] = resolveRecords(parameters, shallowRecords);
38
+ }
39
+ return resolvedRecords;
40
+ }
41
+ // TODO: move?
42
+ // e.g. "list<u8>", "option<signer>", "result<integer, error>", "borrow<proc-context>"
43
+ export function isGeneric(type) {
44
+ return isGenericRegex.test(type.trim());
45
+ }
46
+ // e.g. "string", "list<u8>", "option<signer>", "result<integer, error>", "borrow<proc-context>"
47
+ const witTypeRegex = /^(?:(?<wrapper>borrow|own)\s*<\s*)?(?<base>[a-zA-Z$_][a-zA-Z0-9$_-]*)(?:\s*<(?<inner>[\s\S]+)>)?\s*(?:>)?$/;
48
+ function resolveRecords(kwitParameters, records, ancestors = new Set()) {
49
+ const components = [];
50
+ for (const kwitParameter of kwitParameters) {
51
+ const m = execTyped(witTypeRegex, kwitParameter.type);
52
+ // TODO: add custom error
53
+ if (!m?.base)
54
+ throw new Error(`Invalid WIT type: ${kwitParameter.type}`);
55
+ const base = m.base;
56
+ // If it's a named record, expand it into a tuple of its fields.
57
+ if (base in records) {
58
+ // TODO: add custom error
59
+ if (ancestors.has(base))
60
+ throw new Error("Circular reference detected.");
61
+ components.push({
62
+ ...kwitParameter,
63
+ type: "tuple", // normalize records -> tuple
64
+ components: resolveRecords(records[base] ?? [], records, new Set([...ancestors, base])),
65
+ });
66
+ continue;
67
+ }
68
+ // Otherwise, just pass it through (builtins, generics, etc.)
69
+ components.push(kwitParameter);
70
+ }
71
+ return components;
72
+ }
73
+ //# sourceMappingURL=records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../../../../../src/kwit/kwit-parser/core/records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
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" },
10
+ { name: "height", type: "s64" },
11
+ { name: "tx-index", type: "s64" },
12
+ ],
13
+ "token-pair": [
14
+ {
15
+ type: "tuple",
16
+ name: "a",
17
+ components: [
18
+ { name: "name", type: "string" },
19
+ { name: "height", type: "s64" },
20
+ { name: "tx-index", type: "s64" },
21
+ ],
22
+ },
23
+ {
24
+ type: "tuple",
25
+ name: "b",
26
+ components: [
27
+ { name: "name", type: "string" },
28
+ { name: "height", type: "s64" },
29
+ { name: "tx-index", type: "s64" },
30
+ ],
31
+ },
32
+ ],
33
+ });
34
+ });
35
+ test("generic", () => {
36
+ expect(parseRecords(["record generic { values: list<string> }"])).toEqual({
37
+ generic: [{ name: "values", type: "list<string>" }],
38
+ });
39
+ });
40
+ test("generic", () => {
41
+ expect(parseRecords([
42
+ "record contract-address { name: string, height: s64, tx-index: s64 }",
43
+ "record generic { values: list<contract-address> }",
44
+ ])).toEqual({
45
+ "contract-address": [
46
+ { type: "string", name: "name" },
47
+ { type: "s64", name: "height" },
48
+ { type: "s64", name: "tx-index" },
49
+ ],
50
+ generic: [{ name: "values", type: "list<contract-address>" }],
51
+ });
52
+ });
53
+ //# sourceMappingURL=records.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.test.js","sourceRoot":"","sources":["../../../../../src/kwit/kwit-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;YAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;YAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;SAClC;QACD,YAAY,EAAE;YACZ;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;oBAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;iBAClC;aACF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;oBAC/B,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;iBAClC;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,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;KACpD,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,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;YAChC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;SAClC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ // import type { KwitFuncContext } from "../../kwit.ts";
2
+ import { execTyped } from "../../regex.js";
3
+ const errorSignatureRegex = /^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;
4
+ export function isErrorSignature(signature) {
5
+ return errorSignatureRegex.test(signature);
6
+ }
7
+ export function execErrorSignature(signature) {
8
+ return execTyped(errorSignatureRegex, signature);
9
+ }
10
+ const kwitFnSignatureRegex = /^export\s+(?<name>[a-z][a-z0-9-]*)\s*:\s*func\s*\(\s*ctx\s*:\s*borrow<(?<ctx>proc-context|view-context|core-context)>\s*(?:,\s*(?<rest>.*?))?\)\s*(?:->\s*(?<returns>[^;]+))?;\s*$/;
11
+ export function isFunctionSignature(signature) {
12
+ return kwitFnSignatureRegex.test(signature);
13
+ }
14
+ export function execFunctionSignature(signature) {
15
+ const m = kwitFnSignatureRegex.exec(signature);
16
+ if (!m || !m.groups)
17
+ return null;
18
+ const name = m.groups.name;
19
+ const ctx = m.groups.ctx;
20
+ const type = ctx === "proc-context" ? "proc" : ctx == "view-context" ? "view" : "core";
21
+ const rest = (m.groups.rest ?? "").trim();
22
+ const parameters = rest.length > 0 ? `ctx: borrow<${ctx}>, ${rest}` : `ctx: borrow<${ctx}>`;
23
+ const returns = (m.groups.returns ?? "").trim() || undefined;
24
+ return { name, type, parameters, returns };
25
+ }
26
+ const kwitRecordSignatureRegex = /^record\s+(?<name>[a-zA-Z$_][a-zA-Z0-9$_-]*)\s*\{(?<properties>[\s\S]*?)\}$/;
27
+ export function isRecordSignature(signature) {
28
+ return kwitRecordSignatureRegex.test(signature);
29
+ }
30
+ export function execRecordSignature(signature) {
31
+ return execTyped(kwitRecordSignatureRegex, signature);
32
+ }
33
+ //# sourceMappingURL=signatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.js","sourceRoot":"","sources":["../../../../../src/kwit/kwit-parser/core/signatures.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,mBAAmB,GACvB,iEAAiE,CAAC;AACpE,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,SAAS,CACd,mBAAmB,EACnB,SAAS,CACV,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GACxB,oLAAoL,CAAC;AAEvL,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAK,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAuD,CAAC;IAC7E,MAAM,IAAI,GACR,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAE5E,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC;IAE3E,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAE7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,wBAAwB,GAC5B,6EAA6E,CAAC;AAEhF,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,SAAS,CAGb,wBAAwB,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { expect, test, describe } from "vitest";
2
+ import { execFunctionSignature, isFunctionSignature } from "./signatures.js";
3
+ describe("isFunctionSignature", () => {
4
+ test.each([
5
+ "export fib: func(ctx: borrow<proc-context>, arith-address: contract-address, n: u64) -> u64;",
6
+ "export fib-of-sub: func(ctx: borrow<proc-context>, arith-address: contract-address, x: string, y: string) -> result<u64, error>;",
7
+ "export cached-values: func(ctx: borrow<view-context>) -> list<u64>;",
8
+ ])("%s -> %s", (input) => {
9
+ expect(isFunctionSignature(input)).toBe(true);
10
+ });
11
+ });
12
+ describe("execFunctionSignature", () => {
13
+ test.each([
14
+ {
15
+ input: "export fib: func(ctx: borrow<proc-context>, arith-address: contract-address, n: u64) -> u64;",
16
+ expected: {
17
+ name: "fib",
18
+ type: "proc",
19
+ parameters: "ctx: borrow<proc-context>, arith-address: contract-address, n: u64",
20
+ returns: "u64",
21
+ },
22
+ },
23
+ {
24
+ input: "export fib-of-sub: func(ctx: borrow<proc-context>, arith-address: contract-address, x: string, y: string) -> result<u64, error>;",
25
+ expected: {
26
+ name: "fib-of-sub",
27
+ type: "proc",
28
+ parameters: "ctx: borrow<proc-context>, arith-address: contract-address, x: string, y: string",
29
+ returns: "result<u64, error>",
30
+ },
31
+ },
32
+ {
33
+ input: "export cached-values: func(ctx: borrow<view-context>) -> list<u64>;",
34
+ expected: {
35
+ name: "cached-values",
36
+ type: "view",
37
+ parameters: "ctx: borrow<view-context>",
38
+ returns: "list<u64>",
39
+ },
40
+ },
41
+ {
42
+ input: "export cached-values: func(ctx: borrow<core-context>) -> list<u64>;",
43
+ expected: {
44
+ name: "cached-values",
45
+ type: "core",
46
+ parameters: "ctx: borrow<core-context>",
47
+ returns: "list<u64>",
48
+ },
49
+ },
50
+ ])("%s", ({ input, expected }) => {
51
+ expect(execFunctionSignature(input)).toStrictEqual(expected);
52
+ });
53
+ });
54
+ //# sourceMappingURL=signatures.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.test.js","sourceRoot":"","sources":["../../../../../src/kwit/kwit-parser/core/signatures.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,IAAI,CAAC;QACR,8FAA8F;QAE9F,kIAAkI;QAElI,qEAAqE;KACtE,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,IAAI,CAAC;QACR;YACE,KAAK,EACH,8FAA8F;YAChG,QAAQ,EAAE;gBACR,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,MAAM;gBACZ,UAAU,EACR,oEAAoE;gBACtE,OAAO,EAAE,KAAK;aACf;SACF;QACD;YACE,KAAK,EACH,kIAAkI;YACpI,QAAQ,EAAE;gBACR,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,MAAM;gBACZ,UAAU,EACR,kFAAkF;gBACpF,OAAO,EAAE,oBAAoB;aAC9B;SACF;QACD;YACE,KAAK,EACH,qEAAqE;YACvE,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,2BAA2B;gBACvC,OAAO,EAAE,WAAW;aACrB;SACF;QACD;YACE,KAAK,EACH,qEAAqE;YACvE,QAAQ,EAAE;gBACR,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,2BAA2B;gBACvC,OAAO,EAAE,WAAW;aACrB;SACF;KACF,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/B,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/types/records.ts"],"names":[],"mappings":""}
@@ -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/kwit/kwit-parser/core/types/records.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiB5C,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,YAAY,EAOT,CAAC,aAAa,EA2Bb,CAAC;IACL,YAAY,EAOT,CAAC,aAAa,EAab,CAAC;IACL,YAAY,EAET,CAAC,aAAa,EAYb,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IACvB,YAAY,EAET,CAAC,aAAa,EAOb,CAAC;IAEL,YAAY,EAET,CAAC,aAAa,EAMb,CAAC;IAEL,YAAY,EAKT,CAAC,aAAa,EAsBb,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,YAAY,EAET,CAAC,aAAa,EAMd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAKd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAqBd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAOd,CAAC;IAEJ,YAAY,EAET,CAAC,aAAa,EAYd,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export {};
2
+ // Single
3
+ //# sourceMappingURL=signatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/types/signatures.ts"],"names":[],"mappings":";AAmLA,SAAS"}
@@ -0,0 +1,18 @@
1
+ import { assertType, test } from "vitest";
2
+ test("IsFunctionSignature", () => {
3
+ assertType(true);
4
+ assertType(true);
5
+ assertType(true);
6
+ });
7
+ test("IsRecordSignature", () => {
8
+ assertType(true);
9
+ assertType(true);
10
+ });
11
+ test("IsSignature", () => {
12
+ assertType(true);
13
+ assertType(true);
14
+ assertType(true);
15
+ assertType(true);
16
+ assertType(true);
17
+ });
18
+ //# sourceMappingURL=signatures.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatures.test-d.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/types/signatures.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAY1C,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;AACV,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC7B,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;AACV,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IACvB,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;IAER,UAAU,CAER,IAAI,CAAC,CAAC;AACV,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/kwit/kwit-parser/core/types/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,159 @@
1
+ import { assertType, test } from "vitest";
2
+ test("ParseKwitParameter", () => {
3
+ // everything in fib contrct
4
+ assertType({
5
+ name: "ctx",
6
+ type: "borrow<proc-context>",
7
+ });
8
+ assertType({
9
+ name: "arith-address",
10
+ type: "contract-address",
11
+ });
12
+ assertType({
13
+ name: "n",
14
+ type: "u64",
15
+ });
16
+ assertType({
17
+ type: "u64",
18
+ });
19
+ assertType({
20
+ name: "x",
21
+ type: "string",
22
+ });
23
+ assertType({
24
+ name: "y",
25
+ type: "string",
26
+ });
27
+ assertType({
28
+ name: "option-string",
29
+ type: "option<string>",
30
+ });
31
+ assertType({
32
+ name: "option-list-string",
33
+ type: "option<list<string>>",
34
+ });
35
+ assertType({
36
+ name: "option-list-result-string-contract-address",
37
+ type: "option<list<result<string, contract-address>>>",
38
+ });
39
+ // assertType<
40
+ // ParseKwitParameter<
41
+ // "option-list-result-string-contract-address: option<list<result<string, contract-address>>>",
42
+ // OptionsWithRecords
43
+ // >
44
+ // >({
45
+ // name: "option-list-result-string-contract-address",
46
+ // type: "option<list<result<string, tuple>>>",
47
+ // components: [
48
+ // { type: "string", name: "left" },
49
+ // {
50
+ // name: "right",
51
+ // type: "tuple",
52
+ // components: [
53
+ // { type: "string", name: "name" },
54
+ // { name: "height", type: "s64" },
55
+ // { name: "tx-index", type: "s64" },
56
+ // ],
57
+ // },
58
+ // ],
59
+ // });
60
+ assertType({
61
+ type: "contract-address",
62
+ });
63
+ assertType({
64
+ name: "ctx",
65
+ type: "borrow<view-context>",
66
+ });
67
+ assertType({
68
+ name: "arith-address",
69
+ type: "contract-address",
70
+ });
71
+ });
72
+ test("_ParseFunctionParametersAndContext", () => {
73
+ assertType({
74
+ Inputs: "arith-address: contract-address, n: u64",
75
+ Context: "proc",
76
+ });
77
+ assertType({
78
+ Inputs: "",
79
+ Context: "view",
80
+ });
81
+ assertType({
82
+ Inputs: "",
83
+ Context: "view",
84
+ });
85
+ assertType({
86
+ Inputs: "",
87
+ Context: "core",
88
+ });
89
+ });
90
+ test("SplitParameters", () => {
91
+ assertType(["u64"]);
92
+ assertType([
93
+ "arith-address: contract-address",
94
+ "n: list<u64>",
95
+ ]);
96
+ });
97
+ test("Parse Signature", () => {
98
+ assertType({
99
+ type: "function",
100
+ name: "fib",
101
+ context: "proc",
102
+ inputs: [
103
+ { name: "arith-address", type: "contract-address" },
104
+ { name: "n", type: "list<u64>" },
105
+ ],
106
+ outputs: [
107
+ {
108
+ type: "u64",
109
+ },
110
+ ],
111
+ });
112
+ assertType({
113
+ type: "function",
114
+ name: "fib",
115
+ context: "proc",
116
+ inputs: [
117
+ { name: "arith-address", type: "contract-address" },
118
+ { name: "n", type: "list<u64>" },
119
+ ],
120
+ outputs: [
121
+ {
122
+ type: "contract-address",
123
+ },
124
+ ],
125
+ });
126
+ assertType({
127
+ type: "function",
128
+ name: "fib",
129
+ context: "proc",
130
+ inputs: [
131
+ {
132
+ name: "arith-address",
133
+ type: "contract-address",
134
+ },
135
+ { name: "n", type: "list<u64>" },
136
+ ],
137
+ outputs: [
138
+ {
139
+ type: "contract-address",
140
+ },
141
+ ],
142
+ });
143
+ assertType({
144
+ type: "function",
145
+ name: "get-dogs",
146
+ context: "proc",
147
+ inputs: [],
148
+ outputs: [
149
+ {
150
+ type: "list<tuple>",
151
+ components: [
152
+ { type: "string", name: "name" },
153
+ { type: "string", name: "breed" },
154
+ ],
155
+ },
156
+ ],
157
+ });
158
+ });
159
+ //# sourceMappingURL=utils.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test-d.js","sourceRoot":"","sources":["../../../../../../src/kwit/kwit-parser/core/types/utils.test-d.ts"],"names":[],"mappings":"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"}