@sundaeswap/sprinkles 0.6.1 → 0.8.0

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 (197) hide show
  1. package/README.md +178 -181
  2. package/dist/cjs/Sprinkle/__tests__/action-integration.test.js +590 -0
  3. package/dist/cjs/Sprinkle/__tests__/action-integration.test.js.map +1 -0
  4. package/dist/cjs/Sprinkle/__tests__/action-registry.test.js +193 -0
  5. package/dist/cjs/Sprinkle/__tests__/action-registry.test.js.map +1 -0
  6. package/dist/cjs/Sprinkle/__tests__/action-runner.test.js +304 -0
  7. package/dist/cjs/Sprinkle/__tests__/action-runner.test.js.map +1 -0
  8. package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js +1110 -0
  9. package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js.map +1 -0
  10. package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js +744 -0
  11. package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js.map +1 -0
  12. package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
  13. package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
  14. package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js +711 -0
  15. package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -0
  16. package/dist/cjs/Sprinkle/__tests__/native-script.test.js +390 -0
  17. package/dist/cjs/Sprinkle/__tests__/native-script.test.js.map +1 -0
  18. package/dist/cjs/Sprinkle/__tests__/tui-helpers.test.js +334 -0
  19. package/dist/cjs/Sprinkle/__tests__/tui-helpers.test.js.map +1 -0
  20. package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js +367 -0
  21. package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
  22. package/dist/cjs/Sprinkle/__tests__/wallet-transaction-actions.test.js +749 -0
  23. package/dist/cjs/Sprinkle/__tests__/wallet-transaction-actions.test.js.map +1 -0
  24. package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js +164 -0
  25. package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
  26. package/dist/cjs/Sprinkle/actions/builtin/blaze-helper.js +61 -0
  27. package/dist/cjs/Sprinkle/actions/builtin/blaze-helper.js.map +1 -0
  28. package/dist/cjs/Sprinkle/actions/builtin/index.js +174 -0
  29. package/dist/cjs/Sprinkle/actions/builtin/index.js.map +1 -0
  30. package/dist/cjs/Sprinkle/actions/builtin/native-script.js +139 -0
  31. package/dist/cjs/Sprinkle/actions/builtin/native-script.js.map +1 -0
  32. package/dist/cjs/Sprinkle/actions/builtin/profile-actions.js +202 -0
  33. package/dist/cjs/Sprinkle/actions/builtin/profile-actions.js.map +1 -0
  34. package/dist/cjs/Sprinkle/actions/builtin/settings-actions.js +87 -0
  35. package/dist/cjs/Sprinkle/actions/builtin/settings-actions.js.map +1 -0
  36. package/dist/cjs/Sprinkle/actions/builtin/transaction-actions.js +345 -0
  37. package/dist/cjs/Sprinkle/actions/builtin/transaction-actions.js.map +1 -0
  38. package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js +218 -0
  39. package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
  40. package/dist/cjs/Sprinkle/actions/builtin/wallet-actions.js +212 -0
  41. package/dist/cjs/Sprinkle/actions/builtin/wallet-actions.js.map +1 -0
  42. package/dist/cjs/Sprinkle/actions/cli-adapter.js +390 -0
  43. package/dist/cjs/Sprinkle/actions/cli-adapter.js.map +1 -0
  44. package/dist/cjs/Sprinkle/actions/index.js +139 -0
  45. package/dist/cjs/Sprinkle/actions/index.js.map +1 -0
  46. package/dist/cjs/Sprinkle/actions/mcp-adapter.js +557 -0
  47. package/dist/cjs/Sprinkle/actions/mcp-adapter.js.map +1 -0
  48. package/dist/cjs/Sprinkle/actions/registry.js +92 -0
  49. package/dist/cjs/Sprinkle/actions/registry.js.map +1 -0
  50. package/dist/cjs/Sprinkle/actions/runner.js +190 -0
  51. package/dist/cjs/Sprinkle/actions/runner.js.map +1 -0
  52. package/dist/cjs/Sprinkle/actions/tui-helpers.js +96 -0
  53. package/dist/cjs/Sprinkle/actions/tui-helpers.js.map +1 -0
  54. package/dist/cjs/Sprinkle/actions/types.js +68 -0
  55. package/dist/cjs/Sprinkle/actions/types.js.map +1 -0
  56. package/dist/cjs/Sprinkle/index.js +678 -5
  57. package/dist/cjs/Sprinkle/index.js.map +1 -1
  58. package/dist/cjs/Sprinkle/prompts.js +12 -7
  59. package/dist/cjs/Sprinkle/prompts.js.map +1 -1
  60. package/dist/cjs/Sprinkle/schemas.js +17 -1
  61. package/dist/cjs/Sprinkle/schemas.js.map +1 -1
  62. package/dist/cjs/Sprinkle/type-guards.js +7 -1
  63. package/dist/cjs/Sprinkle/type-guards.js.map +1 -1
  64. package/dist/esm/Sprinkle/__tests__/action-integration.test.js +588 -0
  65. package/dist/esm/Sprinkle/__tests__/action-integration.test.js.map +1 -0
  66. package/dist/esm/Sprinkle/__tests__/action-registry.test.js +192 -0
  67. package/dist/esm/Sprinkle/__tests__/action-registry.test.js.map +1 -0
  68. package/dist/esm/Sprinkle/__tests__/action-runner.test.js +302 -0
  69. package/dist/esm/Sprinkle/__tests__/action-runner.test.js.map +1 -0
  70. package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js +1107 -0
  71. package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js.map +1 -0
  72. package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js +742 -0
  73. package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js.map +1 -0
  74. package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
  75. package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
  76. package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js +710 -0
  77. package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -0
  78. package/dist/esm/Sprinkle/__tests__/native-script.test.js +388 -0
  79. package/dist/esm/Sprinkle/__tests__/native-script.test.js.map +1 -0
  80. package/dist/esm/Sprinkle/__tests__/tui-helpers.test.js +332 -0
  81. package/dist/esm/Sprinkle/__tests__/tui-helpers.test.js.map +1 -0
  82. package/dist/esm/Sprinkle/__tests__/utility-actions.test.js +365 -0
  83. package/dist/esm/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
  84. package/dist/esm/Sprinkle/__tests__/wallet-transaction-actions.test.js +747 -0
  85. package/dist/esm/Sprinkle/__tests__/wallet-transaction-actions.test.js.map +1 -0
  86. package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js +159 -0
  87. package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
  88. package/dist/esm/Sprinkle/actions/builtin/blaze-helper.js +55 -0
  89. package/dist/esm/Sprinkle/actions/builtin/blaze-helper.js.map +1 -0
  90. package/dist/esm/Sprinkle/actions/builtin/index.js +37 -0
  91. package/dist/esm/Sprinkle/actions/builtin/index.js.map +1 -0
  92. package/dist/esm/Sprinkle/actions/builtin/native-script.js +133 -0
  93. package/dist/esm/Sprinkle/actions/builtin/native-script.js.map +1 -0
  94. package/dist/esm/Sprinkle/actions/builtin/profile-actions.js +197 -0
  95. package/dist/esm/Sprinkle/actions/builtin/profile-actions.js.map +1 -0
  96. package/dist/esm/Sprinkle/actions/builtin/settings-actions.js +81 -0
  97. package/dist/esm/Sprinkle/actions/builtin/settings-actions.js.map +1 -0
  98. package/dist/esm/Sprinkle/actions/builtin/transaction-actions.js +340 -0
  99. package/dist/esm/Sprinkle/actions/builtin/transaction-actions.js.map +1 -0
  100. package/dist/esm/Sprinkle/actions/builtin/utility-actions.js +213 -0
  101. package/dist/esm/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
  102. package/dist/esm/Sprinkle/actions/builtin/wallet-actions.js +207 -0
  103. package/dist/esm/Sprinkle/actions/builtin/wallet-actions.js.map +1 -0
  104. package/dist/esm/Sprinkle/actions/cli-adapter.js +379 -0
  105. package/dist/esm/Sprinkle/actions/cli-adapter.js.map +1 -0
  106. package/dist/esm/Sprinkle/actions/index.js +12 -0
  107. package/dist/esm/Sprinkle/actions/index.js.map +1 -0
  108. package/dist/esm/Sprinkle/actions/mcp-adapter.js +547 -0
  109. package/dist/esm/Sprinkle/actions/mcp-adapter.js.map +1 -0
  110. package/dist/esm/Sprinkle/actions/registry.js +85 -0
  111. package/dist/esm/Sprinkle/actions/registry.js.map +1 -0
  112. package/dist/esm/Sprinkle/actions/runner.js +182 -0
  113. package/dist/esm/Sprinkle/actions/runner.js.map +1 -0
  114. package/dist/esm/Sprinkle/actions/tui-helpers.js +91 -0
  115. package/dist/esm/Sprinkle/actions/tui-helpers.js.map +1 -0
  116. package/dist/esm/Sprinkle/actions/types.js +61 -0
  117. package/dist/esm/Sprinkle/actions/types.js.map +1 -0
  118. package/dist/esm/Sprinkle/index.js +517 -7
  119. package/dist/esm/Sprinkle/index.js.map +1 -1
  120. package/dist/esm/Sprinkle/prompts.js +12 -7
  121. package/dist/esm/Sprinkle/prompts.js.map +1 -1
  122. package/dist/esm/Sprinkle/schemas.js +16 -0
  123. package/dist/esm/Sprinkle/schemas.js.map +1 -1
  124. package/dist/esm/Sprinkle/type-guards.js +3 -0
  125. package/dist/esm/Sprinkle/type-guards.js.map +1 -1
  126. package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts +50 -0
  127. package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts.map +1 -0
  128. package/dist/types/Sprinkle/actions/builtin/blaze-helper.d.ts +39 -0
  129. package/dist/types/Sprinkle/actions/builtin/blaze-helper.d.ts.map +1 -0
  130. package/dist/types/Sprinkle/actions/builtin/index.d.ts +30 -0
  131. package/dist/types/Sprinkle/actions/builtin/index.d.ts.map +1 -0
  132. package/dist/types/Sprinkle/actions/builtin/native-script.d.ts +27 -0
  133. package/dist/types/Sprinkle/actions/builtin/native-script.d.ts.map +1 -0
  134. package/dist/types/Sprinkle/actions/builtin/profile-actions.d.ts +55 -0
  135. package/dist/types/Sprinkle/actions/builtin/profile-actions.d.ts.map +1 -0
  136. package/dist/types/Sprinkle/actions/builtin/settings-actions.d.ts +32 -0
  137. package/dist/types/Sprinkle/actions/builtin/settings-actions.d.ts.map +1 -0
  138. package/dist/types/Sprinkle/actions/builtin/transaction-actions.d.ts +70 -0
  139. package/dist/types/Sprinkle/actions/builtin/transaction-actions.d.ts.map +1 -0
  140. package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts +48 -0
  141. package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts.map +1 -0
  142. package/dist/types/Sprinkle/actions/builtin/wallet-actions.d.ts +50 -0
  143. package/dist/types/Sprinkle/actions/builtin/wallet-actions.d.ts.map +1 -0
  144. package/dist/types/Sprinkle/actions/cli-adapter.d.ts +104 -0
  145. package/dist/types/Sprinkle/actions/cli-adapter.d.ts.map +1 -0
  146. package/dist/types/Sprinkle/actions/index.d.ts +13 -0
  147. package/dist/types/Sprinkle/actions/index.d.ts.map +1 -0
  148. package/dist/types/Sprinkle/actions/mcp-adapter.d.ts +116 -0
  149. package/dist/types/Sprinkle/actions/mcp-adapter.d.ts.map +1 -0
  150. package/dist/types/Sprinkle/actions/registry.d.ts +42 -0
  151. package/dist/types/Sprinkle/actions/registry.d.ts.map +1 -0
  152. package/dist/types/Sprinkle/actions/runner.d.ts +45 -0
  153. package/dist/types/Sprinkle/actions/runner.d.ts.map +1 -0
  154. package/dist/types/Sprinkle/actions/tui-helpers.d.ts +53 -0
  155. package/dist/types/Sprinkle/actions/tui-helpers.d.ts.map +1 -0
  156. package/dist/types/Sprinkle/actions/types.d.ts +76 -0
  157. package/dist/types/Sprinkle/actions/types.d.ts.map +1 -0
  158. package/dist/types/Sprinkle/index.d.ts +84 -2
  159. package/dist/types/Sprinkle/index.d.ts.map +1 -1
  160. package/dist/types/Sprinkle/prompts.d.ts.map +1 -1
  161. package/dist/types/Sprinkle/schemas.d.ts +72 -0
  162. package/dist/types/Sprinkle/schemas.d.ts.map +1 -1
  163. package/dist/types/Sprinkle/type-guards.d.ts +4 -1
  164. package/dist/types/Sprinkle/type-guards.d.ts.map +1 -1
  165. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  166. package/package.json +9 -2
  167. package/src/Sprinkle/__tests__/action-integration.test.ts +558 -0
  168. package/src/Sprinkle/__tests__/action-registry.test.ts +187 -0
  169. package/src/Sprinkle/__tests__/action-runner.test.ts +324 -0
  170. package/src/Sprinkle/__tests__/builtin-actions.test.ts +1022 -0
  171. package/src/Sprinkle/__tests__/cli-adapter.test.ts +736 -0
  172. package/src/Sprinkle/__tests__/fill-in-struct.test.ts +23 -1
  173. package/src/Sprinkle/__tests__/mcp-adapter.test.ts +720 -0
  174. package/src/Sprinkle/__tests__/native-script.test.ts +341 -0
  175. package/src/Sprinkle/__tests__/tui-helpers.test.ts +325 -0
  176. package/src/Sprinkle/__tests__/utility-actions.test.ts +348 -0
  177. package/src/Sprinkle/__tests__/wallet-transaction-actions.test.ts +695 -0
  178. package/src/Sprinkle/actions/builtin/addressbook-actions.ts +168 -0
  179. package/src/Sprinkle/actions/builtin/blaze-helper.ts +89 -0
  180. package/src/Sprinkle/actions/builtin/index.ts +125 -0
  181. package/src/Sprinkle/actions/builtin/native-script.ts +165 -0
  182. package/src/Sprinkle/actions/builtin/profile-actions.ts +229 -0
  183. package/src/Sprinkle/actions/builtin/settings-actions.ts +99 -0
  184. package/src/Sprinkle/actions/builtin/transaction-actions.ts +381 -0
  185. package/src/Sprinkle/actions/builtin/utility-actions.ts +285 -0
  186. package/src/Sprinkle/actions/builtin/wallet-actions.ts +233 -0
  187. package/src/Sprinkle/actions/cli-adapter.ts +446 -0
  188. package/src/Sprinkle/actions/index.ts +33 -0
  189. package/src/Sprinkle/actions/mcp-adapter.ts +638 -0
  190. package/src/Sprinkle/actions/registry.ts +97 -0
  191. package/src/Sprinkle/actions/runner.ts +200 -0
  192. package/src/Sprinkle/actions/tui-helpers.ts +114 -0
  193. package/src/Sprinkle/actions/types.ts +91 -0
  194. package/src/Sprinkle/index.ts +612 -3
  195. package/src/Sprinkle/prompts.ts +118 -72
  196. package/src/Sprinkle/schemas.ts +20 -0
  197. package/src/Sprinkle/type-guards.ts +9 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-adapter.test.js","names":["_bunTest","require","_typebox","_index","makeMockSprinkle","actions","map","Map","a","name","getAction","get","listActions","fakeContext","describe","test","expect","camelToKebab","toBe","kebabToCamel","original","coerceValue","Type","Number","Integer","Boolean","BigInt","String","Array","toEqual","result","Object","id","count","x","obj","schema","reserve_assets","asset","numerator","denominator","raw","toBeNull","undefined","toBeUndefined","Optional","Union","active","parseArgvWithSchema","s","myFlag","retries","default","extra","foo","amount","tags","ids","action","description","inputSchema","recipient","memo","outputSchema","txId","execute","help","generateActionHelp","toContain","myValue","dryRun","opts","category","generateAppHelp","uncategorized","not","logSpy","errorSpy","exitSpy","echoAction","message","input","beforeEach","spyOn","console","mockImplementation","process","afterEach","mockRestore","sprinkle","runCli","toHaveBeenCalledTimes","output","JSON","parse","mock","calls","success","data","toHaveBeenCalled","Error","rejects","toThrow","error","code","toHaveBeenCalledWith","bigIntAction","rawOutput","failAction","captured","intAction"],"sources":["../../../../src/Sprinkle/__tests__/cli-adapter.test.ts"],"sourcesContent":["import { describe, expect, test, spyOn, beforeEach, afterEach } from \"bun:test\";\nimport { Type } from \"@sinclair/typebox\";\nimport {\n camelToKebab,\n kebabToCamel,\n coerceValue,\n parseArgvWithSchema,\n generateActionHelp,\n generateAppHelp,\n runCli,\n} from \"../actions/index.js\";\nimport type { IActionContext } from \"../actions/index.js\";\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// Minimal Sprinkle-shaped mock for runCli tests\nfunction makeMockSprinkle(actions: any[]): any {\n const map = new Map(actions.map((a) => [a.name, a]));\n return {\n getAction: (name: string) => map.get(name),\n listActions: () => actions,\n };\n}\n\n// Lightweight stub context (runCli forwards it to executeAction)\nconst fakeContext = {} as IActionContext<any>;\n\n// ---------------------------------------------------------------------------\n// camelToKebab\n// ---------------------------------------------------------------------------\n\ndescribe(\"camelToKebab\", () => {\n test(\"converts simple camelCase to kebab-case\", () => {\n expect(camelToKebab(\"myFlagName\")).toBe(\"my-flag-name\");\n });\n\n test(\"converts single transition\", () => {\n expect(camelToKebab(\"getBalance\")).toBe(\"get-balance\");\n });\n\n test(\"leaves already-lowercase string unchanged\", () => {\n expect(camelToKebab(\"transfer\")).toBe(\"transfer\");\n });\n\n test(\"returns empty string unchanged\", () => {\n expect(camelToKebab(\"\")).toBe(\"\");\n });\n\n test(\"handles a single uppercase letter at start\", () => {\n // Leading dash is stripped\n expect(camelToKebab(\"X\")).toBe(\"x\");\n });\n\n test(\"handles consecutive uppercase letters\", () => {\n // Each uppercase letter gets its own dash\n expect(camelToKebab(\"URL\")).toBe(\"u-r-l\");\n });\n\n test(\"handles single lowercase character\", () => {\n expect(camelToKebab(\"a\")).toBe(\"a\");\n });\n\n test(\"handles string with digit (no conversion on digits)\", () => {\n expect(camelToKebab(\"action2Name\")).toBe(\"action2-name\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// kebabToCamel\n// ---------------------------------------------------------------------------\n\ndescribe(\"kebabToCamel\", () => {\n test(\"converts simple kebab-case to camelCase\", () => {\n expect(kebabToCamel(\"my-flag-name\")).toBe(\"myFlagName\");\n });\n\n test(\"converts single segment\", () => {\n expect(kebabToCamel(\"transfer\")).toBe(\"transfer\");\n });\n\n test(\"returns empty string unchanged\", () => {\n expect(kebabToCamel(\"\")).toBe(\"\");\n });\n\n test(\"converts digit after dash to uppercase... no: digit stays\", () => {\n // Digits after dash: char stays as-is (toUpperCase of a digit is itself)\n expect(kebabToCamel(\"action-2-name\")).toBe(\"action2Name\");\n });\n\n test(\"is inverse of camelToKebab for simple identifiers\", () => {\n const original = \"myFlagName\";\n expect(kebabToCamel(camelToKebab(original))).toBe(original);\n });\n});\n\n// ---------------------------------------------------------------------------\n// coerceValue\n// ---------------------------------------------------------------------------\n\ndescribe(\"coerceValue\", () => {\n // Number\n test(\"coerces string to number\", () => {\n expect(coerceValue(\"3.14\", Type.Number())).toBe(3.14);\n });\n\n test(\"passes through numeric value unchanged\", () => {\n expect(coerceValue(42, Type.Number())).toBe(42);\n });\n\n test(\"returns non-numeric string as-is for Number schema\", () => {\n expect(coerceValue(\"abc\", Type.Number())).toBe(\"abc\");\n });\n\n // Integer\n test(\"coerces string to integer via parseInt\", () => {\n expect(coerceValue(\"7\", Type.Integer())).toBe(7);\n });\n\n test(\"truncates float number to integer\", () => {\n expect(coerceValue(3.9, Type.Integer())).toBe(3);\n });\n\n test(\"returns non-numeric string as-is for Integer schema\", () => {\n expect(coerceValue(\"xyz\", Type.Integer())).toBe(\"xyz\");\n });\n\n // Boolean\n test(\"coerces string 'true' to boolean true\", () => {\n expect(coerceValue(\"true\", Type.Boolean())).toBe(true);\n });\n\n test(\"coerces string 'false' to boolean false\", () => {\n expect(coerceValue(\"false\", Type.Boolean())).toBe(false);\n });\n\n test(\"passes through boolean true unchanged\", () => {\n expect(coerceValue(true, Type.Boolean())).toBe(true);\n });\n\n test(\"passes through boolean false unchanged\", () => {\n expect(coerceValue(false, Type.Boolean())).toBe(false);\n });\n\n test(\"returns non-boolean string as-is for Boolean schema\", () => {\n expect(coerceValue(\"yes\", Type.Boolean())).toBe(\"yes\");\n });\n\n // BigInt\n test(\"coerces string to BigInt\", () => {\n expect(coerceValue(\"12345\", Type.BigInt())).toBe(BigInt(\"12345\"));\n });\n\n test(\"coerces number to BigInt\", () => {\n expect(coerceValue(99, Type.BigInt())).toBe(BigInt(99));\n });\n\n test(\"passes through BigInt unchanged\", () => {\n expect(coerceValue(BigInt(42), Type.BigInt())).toBe(BigInt(42));\n });\n\n test(\"returns invalid BigInt string as-is\", () => {\n expect(coerceValue(\"not-a-number\", Type.BigInt())).toBe(\"not-a-number\");\n });\n\n // String\n test(\"passes through string value unchanged\", () => {\n expect(coerceValue(\"hello\", Type.String())).toBe(\"hello\");\n });\n\n test(\"converts number to string for String schema\", () => {\n expect(coerceValue(42, Type.String())).toBe(\"42\");\n });\n\n // Array\n test(\"wraps single value in array\", () => {\n expect(coerceValue(\"a\", Type.Array(Type.String()))).toEqual([\"a\"]);\n });\n\n test(\"passes through existing array\", () => {\n expect(coerceValue([\"a\", \"b\"], Type.Array(Type.String()))).toEqual([\"a\", \"b\"]);\n });\n\n test(\"coerces items in existing array against item schema\", () => {\n const result = coerceValue([\"1\", \"2\"], Type.Array(Type.Integer()));\n expect(result).toEqual([1, 2]);\n });\n\n test(\"coerces single value and applies item schema\", () => {\n const result = coerceValue(\"5\", Type.Array(Type.Number()));\n expect(result).toEqual([5]);\n });\n\n // Object\n test(\"parses JSON string for Object schema\", () => {\n const result = coerceValue('{\"id\":\"abc\",\"count\":3}', Type.Object({\n id: Type.String(),\n count: Type.Number(),\n }));\n expect(result).toEqual({ id: \"abc\", count: 3 });\n });\n\n test(\"passes through non-JSON string for Object schema\", () => {\n expect(coerceValue(\"not-json\", Type.Object({ x: Type.String() }))).toBe(\"not-json\");\n });\n\n test(\"coerces properties of already-parsed object for Object schema\", () => {\n const obj = { x: \"1\" };\n expect(coerceValue(obj, Type.Object({ x: Type.Number() }))).toEqual({ x: 1 });\n });\n\n test(\"recursively coerces nested BigInt values inside parsed JSON\", () => {\n const schema = Type.Object({\n name: Type.String(),\n reserve_assets: Type.Array(Type.Object({\n asset: Type.Array(Type.String()),\n numerator: Type.BigInt(),\n denominator: Type.BigInt(),\n })),\n });\n const raw = '{\"name\":\"test\",\"reserve_assets\":[{\"asset\":[\"policy\",\"name\"],\"numerator\":\"1\",\"denominator\":\"2\"}]}';\n const result = coerceValue(raw, schema);\n expect(result).toEqual({\n name: \"test\",\n reserve_assets: [{\n asset: [\"policy\", \"name\"],\n numerator: BigInt(1),\n denominator: BigInt(2),\n }],\n });\n });\n\n test(\"returns malformed JSON string as-is for Object schema\", () => {\n expect(coerceValue(\"{bad\", Type.Object({ x: Type.String() }))).toBe(\"{bad\");\n });\n\n // Null / undefined passthrough\n test(\"returns null as-is regardless of schema\", () => {\n expect(coerceValue(null, Type.String())).toBeNull();\n });\n\n test(\"returns undefined as-is regardless of schema\", () => {\n expect(coerceValue(undefined, Type.Number())).toBeUndefined();\n });\n\n // Optional wrapper: TypeBox Optional<T> does not change Kind\n test(\"coerces value correctly for Optional-wrapped schema\", () => {\n expect(coerceValue(\"42\", Type.Optional(Type.Integer()))).toBe(42);\n });\n\n // Union: passthrough\n test(\"passes through value for Union schema\", () => {\n const result = coerceValue(\"hello\", Type.Union([Type.String(), Type.Number()]));\n expect(result).toBe(\"hello\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// parseArgvWithSchema\n// ---------------------------------------------------------------------------\n\ndescribe(\"parseArgvWithSchema\", () => {\n const schema = Type.Object({\n name: Type.String(),\n count: Type.Integer(),\n active: Type.Boolean(),\n });\n\n test(\"coerces string args according to schema types\", () => {\n const result = parseArgvWithSchema(\n { name: \"alice\", count: \"5\", active: \"true\" },\n schema,\n );\n expect(result.name).toBe(\"alice\");\n expect(result.count).toBe(5);\n expect(result.active).toBe(true);\n });\n\n test(\"maps kebab-case arg names to camelCase property names\", () => {\n const s = Type.Object({ myFlag: Type.String() });\n const result = parseArgvWithSchema({ \"my-flag\": \"hello\" }, s);\n expect(result.myFlag).toBe(\"hello\");\n });\n\n test(\"prefers camelCase lookup over kebab-case when both present\", () => {\n const s = Type.Object({ myFlag: Type.String() });\n const result = parseArgvWithSchema(\n { myFlag: \"camel\", \"my-flag\": \"kebab\" },\n s,\n );\n expect(result.myFlag).toBe(\"camel\");\n });\n\n test(\"applies TypeBox defaults for omitted optional fields\", () => {\n const s = Type.Object({\n name: Type.String(),\n retries: Type.Optional(Type.Integer({ default: 3 })),\n });\n const result = parseArgvWithSchema({ name: \"test\" }, s);\n expect(result.retries).toBe(3);\n });\n\n test(\"omits field with no default when not supplied\", () => {\n const s = Type.Object({\n name: Type.String(),\n extra: Type.Optional(Type.String()),\n });\n const result = parseArgvWithSchema({ name: \"hello\" }, s);\n expect(\"extra\" in result).toBe(false);\n });\n\n test(\"returns raw args unchanged for non-object schema\", () => {\n const raw = { foo: \"bar\" };\n const result = parseArgvWithSchema(raw, Type.String());\n expect(result).toBe(raw);\n });\n\n test(\"coerces BigInt field from string\", () => {\n const s = Type.Object({ amount: Type.BigInt() });\n const result = parseArgvWithSchema({ amount: \"999\" }, s);\n expect(result.amount).toBe(BigInt(999));\n });\n\n test(\"coerces array field from single string value\", () => {\n const s = Type.Object({ tags: Type.Array(Type.String()) });\n const result = parseArgvWithSchema({ tags: \"alpha\" }, s);\n expect(result.tags).toEqual([\"alpha\"]);\n });\n\n test(\"passes through already-array value\", () => {\n const s = Type.Object({ ids: Type.Array(Type.String()) });\n const result = parseArgvWithSchema({ ids: [\"a\", \"b\"] }, s);\n expect(result.ids).toEqual([\"a\", \"b\"]);\n });\n});\n\n// ---------------------------------------------------------------------------\n// generateActionHelp\n// ---------------------------------------------------------------------------\n\ndescribe(\"generateActionHelp\", () => {\n const action = {\n name: \"send-tx\",\n description: \"Send a transaction\",\n inputSchema: Type.Object({\n recipient: Type.String({ description: \"Target address\" }),\n amount: Type.Integer(),\n memo: Type.Optional(Type.String({ default: \"\" })),\n }),\n outputSchema: Type.Object({ txId: Type.String() }),\n execute: async () => ({ txId: \"abc\" }),\n };\n\n test(\"includes usage line with action name\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"Usage: app send-tx [options]\");\n });\n\n test(\"uses custom appName in usage line when provided\", () => {\n const help = generateActionHelp(action, \"my-cli\");\n expect(help).toContain(\"Usage: my-cli send-tx [options]\");\n });\n\n test(\"includes action description\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"Send a transaction\");\n });\n\n test(\"lists required field as --flag-name with required label\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"--recipient\");\n expect(help).toContain(\"(required)\");\n });\n\n test(\"lists optional field with optional label\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"--memo\");\n expect(help).toContain(\"(optional)\");\n });\n\n test(\"converts camelCase property names to kebab-case flags\", () => {\n const a = {\n ...action,\n inputSchema: Type.Object({ myValue: Type.String() }),\n };\n const help = generateActionHelp(a);\n expect(help).toContain(\"--my-value\");\n });\n\n test(\"includes type labels for each flag\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"<string>\");\n expect(help).toContain(\"<integer>\");\n });\n\n test(\"includes --help at the end\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"--help\");\n });\n\n test(\"shows field description when provided\", () => {\n const help = generateActionHelp(action);\n expect(help).toContain(\"Target address\");\n });\n\n test(\"includes BigInt type label\", () => {\n const a = {\n ...action,\n inputSchema: Type.Object({ amount: Type.BigInt() }),\n };\n expect(generateActionHelp(a)).toContain(\"<bigint>\");\n });\n\n test(\"includes boolean type label\", () => {\n const a = {\n ...action,\n inputSchema: Type.Object({ dryRun: Type.Boolean() }),\n };\n expect(generateActionHelp(a)).toContain(\"<boolean>\");\n });\n\n test(\"array type label mentions repeatable\", () => {\n const a = {\n ...action,\n inputSchema: Type.Object({ tags: Type.Array(Type.String()) }),\n };\n expect(generateActionHelp(a)).toContain(\"repeatable\");\n });\n\n test(\"object type label shows <json>\", () => {\n const a = {\n ...action,\n inputSchema: Type.Object({ opts: Type.Object({ x: Type.String() }) }),\n };\n expect(generateActionHelp(a)).toContain(\"<json>\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// generateAppHelp\n// ---------------------------------------------------------------------------\n\ndescribe(\"generateAppHelp\", () => {\n const actions = [\n {\n name: \"send-tx\",\n description: \"Send a transaction\",\n category: \"wallet\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({}),\n execute: async () => ({}),\n },\n {\n name: \"get-balance\",\n description: \"Get balance\",\n category: \"wallet\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({}),\n execute: async () => ({}),\n },\n {\n name: \"list-pools\",\n description: \"List pools\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({}),\n execute: async () => ({}),\n },\n ];\n\n test(\"includes usage line with app name\", () => {\n const help = generateAppHelp(actions);\n expect(help).toContain(\"Usage: app <action> [options]\");\n });\n\n test(\"uses custom appName in usage line\", () => {\n const help = generateAppHelp(actions, \"my-app\");\n expect(help).toContain(\"Usage: my-app <action> [options]\");\n });\n\n test(\"lists all action names\", () => {\n const help = generateAppHelp(actions);\n expect(help).toContain(\"send-tx\");\n expect(help).toContain(\"get-balance\");\n expect(help).toContain(\"list-pools\");\n });\n\n test(\"lists all action descriptions\", () => {\n const help = generateAppHelp(actions);\n expect(help).toContain(\"Send a transaction\");\n expect(help).toContain(\"Get balance\");\n expect(help).toContain(\"List pools\");\n });\n\n test(\"includes global options section\", () => {\n const help = generateAppHelp(actions);\n expect(help).toContain(\"Global options:\");\n expect(help).toContain(\"--help\");\n expect(help).toContain(\"--profile\");\n });\n\n test(\"groups categorized actions under category heading\", () => {\n const help = generateAppHelp(actions);\n expect(help).toContain(\"wallet:\");\n });\n\n test(\"shows 'No actions registered.' for empty actions list\", () => {\n const help = generateAppHelp([]);\n expect(help).toContain(\"No actions registered.\");\n });\n\n test(\"does not show a category heading for 'default' category\", () => {\n const uncategorized = [\n {\n name: \"do-thing\",\n description: \"Does a thing\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({}),\n execute: async () => ({}),\n },\n ];\n const help = generateAppHelp(uncategorized);\n expect(help).not.toContain(\"default:\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// runCli\n// ---------------------------------------------------------------------------\n\ndescribe(\"runCli\", () => {\n let logSpy: ReturnType<typeof spyOn>;\n let errorSpy: ReturnType<typeof spyOn>;\n let exitSpy: ReturnType<typeof spyOn>;\n\n const echoAction = {\n name: \"echo\",\n description: \"Echoes input\",\n inputSchema: Type.Object({ message: Type.String() }),\n outputSchema: Type.Object({ message: Type.String() }),\n execute: async (input: { message: string }) => ({ message: input.message }),\n };\n\n beforeEach(() => {\n logSpy = spyOn(console, \"log\").mockImplementation(() => {});\n errorSpy = spyOn(console, \"error\").mockImplementation(() => {});\n exitSpy = spyOn(process, \"exit\").mockImplementation((() => {}) as any);\n });\n\n afterEach(() => {\n logSpy.mockRestore();\n errorSpy.mockRestore();\n exitSpy.mockRestore();\n });\n\n // Success path\n test(\"logs JSON success output to stdout on valid input\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", { message: \"hello\" }, fakeContext);\n\n expect(logSpy).toHaveBeenCalledTimes(1);\n const output = JSON.parse(String(logSpy.mock.calls[0]![0]));\n expect(output.success).toBe(true);\n expect(output.data).toEqual({ message: \"hello\" });\n });\n\n test(\"does not call process.exit on success\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", { message: \"hi\" }, fakeContext);\n expect(exitSpy).not.toHaveBeenCalled();\n });\n\n // Failure path: action not found\n // Note: process.exit() is mocked to throw a sentinel error so that execution\n // does not continue past the exit call (matching real runtime behaviour).\n test(\"logs JSON error to stderr when action not found\", async () => {\n exitSpy.mockImplementation((() => { throw new Error(\"process.exit called\"); }) as any);\n const sprinkle = makeMockSprinkle([]);\n await expect(runCli(sprinkle, \"unknown-action\", {}, fakeContext)).rejects.toThrow(\"process.exit called\");\n\n expect(errorSpy).toHaveBeenCalledTimes(1);\n const output = JSON.parse(String(errorSpy.mock.calls[0]![0]));\n expect(output.success).toBe(false);\n expect(output.error.code).toBe(\"ACTION_NOT_FOUND\");\n });\n\n test(\"calls process.exit(1) when action not found\", async () => {\n exitSpy.mockImplementation((() => { throw new Error(\"process.exit called\"); }) as any);\n const sprinkle = makeMockSprinkle([]);\n await expect(runCli(sprinkle, \"ghost\", {}, fakeContext)).rejects.toThrow(\"process.exit called\");\n expect(exitSpy).toHaveBeenCalledWith(1);\n });\n\n test(\"error message lists available actions when action not found\", async () => {\n exitSpy.mockImplementation((() => { throw new Error(\"process.exit called\"); }) as any);\n const sprinkle = makeMockSprinkle([echoAction]);\n await expect(runCli(sprinkle, \"nope\", {}, fakeContext)).rejects.toThrow(\"process.exit called\");\n\n const output = JSON.parse(String(errorSpy.mock.calls[0]![0]));\n expect(output.error.message).toContain(\"echo\");\n });\n\n test(\"error message shows (none) when no actions registered\", async () => {\n exitSpy.mockImplementation((() => { throw new Error(\"process.exit called\"); }) as any);\n const sprinkle = makeMockSprinkle([]);\n await expect(runCli(sprinkle, \"ghost\", {}, fakeContext)).rejects.toThrow(\"process.exit called\");\n\n const output = JSON.parse(String(errorSpy.mock.calls[0]![0]));\n expect(output.error.message).toContain(\"(none)\");\n });\n\n // Failure path: validation error\n test(\"logs JSON error to stderr and exits on validation failure\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n // Missing required 'message' field\n await runCli(sprinkle, \"echo\", {}, fakeContext);\n\n expect(errorSpy).toHaveBeenCalledTimes(1);\n const output = JSON.parse(String(errorSpy.mock.calls[0]![0]));\n expect(output.success).toBe(false);\n expect(output.error.code).toBe(\"VALIDATION_ERROR\");\n expect(exitSpy).toHaveBeenCalledWith(1);\n });\n\n test(\"does not write to stdout on validation failure\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", {}, fakeContext);\n expect(logSpy).not.toHaveBeenCalled();\n });\n\n // Help flag\n test(\"prints action help to stdout when --help is in rawArgs\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", { help: true }, fakeContext);\n\n expect(logSpy).toHaveBeenCalledTimes(1);\n const output = String(logSpy.mock.calls[0]![0]);\n expect(output).toContain(\"Usage:\");\n expect(output).toContain(\"echo\");\n });\n\n test(\"does not exit when --help flag is set\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", { help: true }, fakeContext);\n expect(exitSpy).not.toHaveBeenCalled();\n });\n\n test(\"does not call stderr when --help flag is set\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", { help: true }, fakeContext);\n expect(errorSpy).not.toHaveBeenCalled();\n });\n\n // BigInt in output\n test(\"serializes BigInt values in output using bigIntReplacer\", async () => {\n const bigIntAction = {\n name: \"big-action\",\n description: \"Returns a BigInt\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({ amount: Type.BigInt() }),\n execute: async () => ({ amount: BigInt(\"9007199254740993\") }),\n };\n const sprinkle = makeMockSprinkle([bigIntAction]);\n await runCli(sprinkle, \"big-action\", {}, fakeContext);\n\n expect(logSpy).toHaveBeenCalledTimes(1);\n const rawOutput = String(logSpy.mock.calls[0]![0]);\n // BigInt should appear as a string in JSON (bigIntReplacer converts it)\n expect(rawOutput).toContain(\"9007199254740993\");\n });\n\n // Custom appName in help\n test(\"uses custom appName in action help output\", async () => {\n const sprinkle = makeMockSprinkle([echoAction]);\n await runCli(sprinkle, \"echo\", { help: true }, fakeContext, \"my-cli\");\n\n const output = String(logSpy.mock.calls[0]![0]);\n expect(output).toContain(\"my-cli\");\n });\n\n // Execution error from action\n test(\"logs JSON error to stderr when action execute throws\", async () => {\n const failAction = {\n name: \"fail-action\",\n description: \"Always fails\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({}),\n execute: async () => { throw new Error(\"something broke\"); },\n };\n const sprinkle = makeMockSprinkle([failAction]);\n await runCli(sprinkle, \"fail-action\", {}, fakeContext);\n\n expect(errorSpy).toHaveBeenCalledTimes(1);\n const output = JSON.parse(String(errorSpy.mock.calls[0]![0]));\n expect(output.success).toBe(false);\n expect(output.error.code).toBe(\"EXECUTION_ERROR\");\n expect(output.error.message).toContain(\"something broke\");\n expect(exitSpy).toHaveBeenCalledWith(1);\n });\n\n // Schema-driven coercion through runCli\n test(\"coerces string args to correct types via schema before execution\", async () => {\n let captured: any;\n const intAction = {\n name: \"int-action\",\n description: \"Takes an integer\",\n inputSchema: Type.Object({ count: Type.Integer() }),\n outputSchema: Type.Object({ count: Type.Integer() }),\n execute: async (input: any) => { captured = input; return input; },\n };\n const sprinkle = makeMockSprinkle([intAction]);\n await runCli(sprinkle, \"int-action\", { count: \"7\" }, fakeContext);\n\n expect(captured.count).toBe(7);\n });\n});\n\n// ---------------------------------------------------------------------------\n// parseCliArgs repeated flag support (tested via action-runner, but verifying\n// that the repeated-flag array output integrates with coerceValue)\n// ---------------------------------------------------------------------------\n\ndescribe(\"coerceValue with repeated flag arrays\", () => {\n test(\"passes already-array through Array schema and coerces each item\", () => {\n // Simulates what parseCliArgs produces for --tag a --tag b\n const raw = [\"a\", \"b\", \"c\"];\n const result = coerceValue(raw, Type.Array(Type.String()));\n expect(result).toEqual([\"a\", \"b\", \"c\"]);\n });\n\n test(\"coerces repeated numeric string flags to integer array\", () => {\n const raw = [\"1\", \"2\", \"3\"];\n const result = coerceValue(raw, Type.Array(Type.Integer()));\n expect(result).toEqual([1, 2, 3]);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -79,8 +79,22 @@ _bunTest.mock.module("../prompts.js", () => ({
79
79
  await sprinkle.FillInStruct(_index.Type.BigInt(), 99n);
80
80
  (0, _bunTest.expect)(mockInputCancellable.mock.calls[0][0].default).toBe("99");
81
81
  });
82
+ (0, _bunTest.test)("fills a boolean field with select", async () => {
83
+ mockSelectCancellable.mockResolvedValueOnce(true);
84
+ const result = await sprinkle.FillInStruct(_index.Type.Boolean());
85
+ (0, _bunTest.expect)(result).toBe(true);
86
+ });
87
+ (0, _bunTest.test)("boolean field respects default value", async () => {
88
+ mockSelectCancellable.mockResolvedValueOnce(false);
89
+ await sprinkle.FillInStruct(_index.Type.Boolean(), false);
90
+ (0, _bunTest.expect)(mockSelectCancellable.mock.calls[0][0].default).toBe(false);
91
+ });
92
+ (0, _bunTest.test)("boolean field throws on cancel", async () => {
93
+ mockSelectCancellable.mockResolvedValueOnce(null);
94
+ (0, _bunTest.expect)(sprinkle.FillInStruct(_index.Type.Boolean())).rejects.toThrow(_types.UserCancelledError);
95
+ });
82
96
  (0, _bunTest.test)("throws for unsupported types", async () => {
83
- (0, _bunTest.expect)(sprinkle.FillInStruct(_index.Type.Boolean())).rejects.toThrow("Unable to fill in struct");
97
+ (0, _bunTest.expect)(sprinkle.FillInStruct(_index.Type.Null())).rejects.toThrow("Unable to fill in struct");
84
98
  });
85
99
  (0, _bunTest.test)("remembers last string input as default", async () => {
86
100
  mockInputCancellable.mockResolvedValueOnce("first-input").mockResolvedValueOnce("second-input");
@@ -1 +1 @@
1
- {"version":3,"file":"fill-in-struct.test.js","names":["_bunTest","require","_index","_types","mockSelect","mock","mockInput","mockPassword","mockConfirm","mockSelectCancellable","mockInputCancellable","mockPasswordCancellable","mockConfirmCancellable","module","select","input","password","confirm","selectCancellable","inputCancellable","passwordCancellable","confirmCancellable","searchCancellable","describe","sprinkle","beforeEach","schema","Type","Object","placeholder","String","Sprinkle","mockReset","test","mockResolvedValueOnce","result","FillInStruct","expect","toBe","title","calls","message","BigInt","Literal","not","toHaveBeenCalled","default","Boolean","rejects","toThrow","defaults","Union","type","value","count","mockImplementationOnce","opts","choices","toEqual","UserCancelledError","defaultValue","settings","timeout","retries","name","toBeUndefined","age","outer","inner","required","optional","Optional","nickname","a","b","Array","Tuple","asset","toHaveBeenCalledWith"],"sources":["../../../../src/Sprinkle/__tests__/fill-in-struct.test.ts"],"sourcesContent":["import { describe, expect, test, mock, beforeEach, spyOn } from \"bun:test\";\nimport { Sprinkle, Type, WalletSettingsSchema } from \"../index.js\";\nimport { UserCancelledError } from \"../types.js\";\n\n// Mock @inquirer/prompts\nconst mockSelect = mock();\nconst mockInput = mock();\nconst mockPassword = mock();\nconst mockConfirm = mock();\nconst mockSelectCancellable = mock();\nconst mockInputCancellable = mock();\nconst mockPasswordCancellable = mock();\nconst mockConfirmCancellable = mock();\n\nmock.module(\"@inquirer/prompts\", () => ({\n select: mockSelect,\n input: mockInput,\n password: mockPassword,\n confirm: mockConfirm,\n}));\n\nmock.module(\"../prompts.js\", () => ({\n selectCancellable: mockSelectCancellable,\n inputCancellable: mockInputCancellable,\n passwordCancellable: mockPasswordCancellable,\n confirmCancellable: mockConfirmCancellable,\n searchCancellable: mock(),\n select: mockSelectCancellable,\n}));\n\ndescribe(\"FillInStruct\", () => {\n let sprinkle: Sprinkle<any>;\n\n beforeEach(() => {\n const schema = Type.Object({ placeholder: Type.String() });\n sprinkle = new Sprinkle(schema, \"/tmp/test\");\n // Use mockReset to clear both call history and queued responses\n mockSelect.mockReset();\n mockInput.mockReset();\n mockPassword.mockReset();\n mockConfirm.mockReset();\n mockSelectCancellable.mockReset();\n mockInputCancellable.mockReset();\n mockPasswordCancellable.mockReset();\n mockConfirmCancellable.mockReset();\n });\n\n // --- Primitive types (unchanged behavior) ---\n\n test(\"fills a simple string field\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"hello\");\n\n const result = await sprinkle.FillInStruct(Type.String());\n expect(result).toBe(\"hello\");\n });\n\n test(\"fills a string with title as prompt\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"world\");\n\n await sprinkle.FillInStruct(Type.String({ title: \"Enter name\" }));\n expect(mockInputCancellable.mock.calls[0][0].message).toBe(\"Enter name\");\n });\n\n test(\"fills a bigint field\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"42\");\n\n const result = await sprinkle.FillInStruct(Type.BigInt());\n expect(result).toBe(42n);\n });\n\n test(\"fills a literal field without prompting\", async () => {\n const result = await sprinkle.FillInStruct(Type.Literal(\"fixed\"));\n expect(result).toBe(\"fixed\");\n expect(mockInputCancellable).not.toHaveBeenCalled();\n expect(mockSelectCancellable).not.toHaveBeenCalled();\n });\n\n test(\"uses default value for string\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"used-default\");\n\n await sprinkle.FillInStruct(Type.String(), \"my-default\" as any);\n\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"my-default\");\n });\n\n test(\"uses default value for bigint\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"99\");\n\n await sprinkle.FillInStruct(Type.BigInt(), 99n as any);\n\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"99\");\n });\n\n test(\"throws for unsupported types\", async () => {\n expect(sprinkle.FillInStruct(Type.Boolean() as any)).rejects.toThrow(\n \"Unable to fill in struct\",\n );\n });\n\n test(\"remembers last string input as default\", async () => {\n mockInputCancellable\n .mockResolvedValueOnce(\"first-input\")\n .mockResolvedValueOnce(\"second-input\");\n\n await sprinkle.FillInStruct(Type.String());\n expect(sprinkle.defaults[\"string\"]).toBe(\"first-input\");\n\n await sprinkle.FillInStruct(Type.String());\n // Second call should have the first input as default\n expect(mockInputCancellable.mock.calls[1][0].default).toBe(\"first-input\");\n });\n\n // --- Union types ---\n\n test(\"fills a union type by selecting variant then filling\", async () => {\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"a\"),\n value: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"b\"),\n count: Type.BigInt(),\n }),\n ]);\n\n // Select first variant (the Object with type \"a\")\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n // Object menu: select \"value\" field, then Submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:value\");\n mockInputCancellable.mockResolvedValueOnce(\"test-value\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ type: \"a\", value: \"test-value\" });\n });\n\n test(\"throws UserCancelledError when select prompt is cancelled\", async () => {\n const schema = Type.Union([\n Type.Object({ type: Type.Literal(\"a\") }),\n Type.Object({ type: Type.Literal(\"b\") }),\n ]);\n\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"discriminated union propagates default when variant matches\", async () => {\n // When default has type \"a\" and user selects variant A, the default values\n // for non-literal fields should be pre-populated (field starts as \"set\" status).\n // Submitting without editing should return the default values.\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"a\"),\n value: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"b\"),\n count: Type.BigInt(),\n }),\n ]);\n\n const defaultValue = { type: \"a\" as const, value: \"existing-value\" };\n\n // Select the first variant (type \"a\") - matches the default\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n // Both fields are \"set\" (type auto-filled, value pre-populated from default).\n // allRequiredFieldsFilled is true so Submit is enabled. Submit immediately.\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n // The default value for the \"value\" field should be included in the result\n expect(result).toEqual({ type: \"a\", value: \"existing-value\" });\n });\n\n test(\"discriminated union with nested object propagates nested defaults\", async () => {\n // When a discriminated union default has a nested settings object, the nested\n // fields should also be pre-populated from the default.\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"config\"),\n settings: Type.Object({\n timeout: Type.BigInt(),\n retries: Type.BigInt(),\n }),\n }),\n Type.Object({\n type: Type.Literal(\"other\"),\n name: Type.String(),\n }),\n ]);\n\n const defaultValue = {\n type: \"config\" as const,\n settings: { timeout: 30n, retries: 3n },\n };\n\n // Select the first variant (type \"config\") - matches the default\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n // Outer object: \"type\" is auto-filled literal, \"settings\" is pre-populated from default.\n // Both required fields are \"set\", so Submit is available.\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n // Both the outer and nested default values should be returned\n expect(result).toEqual({\n type: \"config\",\n settings: { timeout: 30n, retries: 3n },\n });\n });\n\n test(\"discriminated union does not propagate default when variant does not match\", async () => {\n // When default has type \"a\" but user selects variant B, no default should be passed.\n // The variant B field should start as \"unset\" and require user input.\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"a\"),\n value: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"b\"),\n name: Type.String(),\n }),\n ]);\n\n // Default has type \"a\" but user selects variant \"b\"\n const defaultValue = { type: \"a\" as const, value: \"should-not-appear\" };\n\n // Select the second variant (type \"b\") - does NOT match the default\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[1].value;\n });\n // Variant B: \"type\" is auto-filled, \"name\" starts as unset (no default propagated).\n // Select \"name\" field and fill it in.\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"new-name\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n expect(result).toEqual({ type: \"b\", name: \"new-name\" });\n // The input prompt for \"name\" should have no default (default from variant A was not passed)\n expect(mockInputCancellable.mock.calls[0][0].default).toBeUndefined();\n });\n\n test(\"non-discriminated union propagates default when value structurally matches selected variant\", async () => {\n // For a union of simple types, when the default matches the selected variant\n // structurally (via Value.Check), it should be passed through.\n const schema = Type.Union([Type.String(), Type.BigInt()]);\n\n const defaultValue = \"default-string\";\n\n // Select the first variant (String)\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n mockInputCancellable.mockResolvedValueOnce(\"new-value\");\n\n await sprinkle.FillInStruct(schema, defaultValue as any);\n\n // The input prompt should show the string default\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"default-string\");\n });\n\n test(\"non-discriminated union does not propagate default when value does not match selected variant\", async () => {\n // When a string default is provided but BigInt variant is selected,\n // the default must not be passed (it would fail structural validation).\n const schema = Type.Union([Type.String(), Type.BigInt()]);\n\n // Default is a string but user selects BigInt variant\n const defaultValue = \"not-a-bigint\";\n\n // Select the second variant (BigInt)\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[1].value;\n });\n mockInputCancellable.mockResolvedValueOnce(\"42\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n expect(result).toBe(42n);\n // The string default must not be passed to the BigInt prompt\n expect(mockInputCancellable.mock.calls[0][0].default).toBeUndefined();\n });\n\n // --- Object types (menu-based) ---\n\n test(\"fills an object with multiple fields\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Menu flow: select name -> fill -> select age -> fill -> submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n mockSelectCancellable.mockResolvedValueOnce(\"field:age\");\n mockInputCancellable.mockResolvedValueOnce(\"30\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"Alice\", age: 30n });\n });\n\n test(\"fills nested objects\", async () => {\n const schema = Type.Object({\n outer: Type.Object({\n inner: Type.String(),\n }),\n });\n\n // Outer menu: select \"outer\" field\n mockSelectCancellable.mockResolvedValueOnce(\"field:outer\");\n // Inner menu: select \"inner\" field, fill, submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:inner\");\n mockInputCancellable.mockResolvedValueOnce(\"deep-value\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n // Back to outer menu: submit\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ outer: { inner: \"deep-value\" } });\n });\n\n test(\"single required field skips menu\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n });\n\n // No menu - directly prompts for the field\n mockInputCancellable.mockResolvedValueOnce(\"direct-value\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"direct-value\" });\n // Verify no select menu was shown\n expect(mockSelectCancellable).not.toHaveBeenCalled();\n });\n\n test(\"throws UserCancelledError when object menu is cancelled\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Cancel at menu (no values set)\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"cancel with values prompts confirmation\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Fill one field\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n // Escape at menu\n mockSelectCancellable.mockResolvedValueOnce(null);\n // Confirm discard\n mockConfirmCancellable.mockResolvedValueOnce(true);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n // --- Optional fields in object menu ---\n\n test(\"optional field shows without asterisk in menu\", async () => {\n const schema = Type.Object({\n required: Type.String(),\n optional: Type.Optional(Type.String()),\n });\n\n // Menu flow: select required -> fill -> submit (leaving optional unset)\n mockSelectCancellable.mockResolvedValueOnce(\"field:required\");\n mockInputCancellable.mockResolvedValueOnce(\"value\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ required: \"value\" });\n // Optional field should be omitted from result\n expect(\"optional\" in result).toBe(false);\n });\n\n test(\"selecting optional field prompts Yes/Skip\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n nickname: Type.Optional(Type.String()),\n });\n\n // Menu flow: select name -> fill -> select nickname -> Yes -> fill -> submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n mockSelectCancellable.mockResolvedValueOnce(\"field:nickname\");\n // Prompt: \"Set value for nickname? Yes/Skip\"\n mockSelectCancellable.mockResolvedValueOnce(true); // Yes\n mockInputCancellable.mockResolvedValueOnce(\"Ali\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"Alice\", nickname: \"Ali\" });\n });\n\n test(\"skipping optional field leaves it undefined\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n nickname: Type.Optional(Type.String()),\n });\n\n // Menu flow: select name -> fill -> select nickname -> Skip -> submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n mockSelectCancellable.mockResolvedValueOnce(\"field:nickname\");\n // Prompt: \"Set value for nickname? Yes/Skip\"\n mockSelectCancellable.mockResolvedValueOnce(false); // Skip\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"Alice\" });\n expect(\"nickname\" in result).toBe(false);\n });\n\n test(\"all-optional object can be submitted empty\", async () => {\n const schema = Type.Object({\n a: Type.Optional(Type.String()),\n b: Type.Optional(Type.String()),\n });\n\n // Submit immediately without setting any fields\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({});\n });\n\n // --- Array types (menu-based) ---\n\n test(\"fills an array with items\", async () => {\n const schema = Type.Array(Type.String());\n\n // Menu: Add -> fill -> Add -> fill -> Done\n mockSelectCancellable.mockResolvedValueOnce(\"add\");\n mockInputCancellable.mockResolvedValueOnce(\"first\");\n mockSelectCancellable.mockResolvedValueOnce(\"add\");\n mockInputCancellable.mockResolvedValueOnce(\"second\");\n mockSelectCancellable.mockResolvedValueOnce(\"done\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"first\", \"second\"]);\n });\n\n test(\"fills an array with single item\", async () => {\n const schema = Type.Array(Type.String());\n\n // Menu: Add -> fill -> Done\n mockSelectCancellable.mockResolvedValueOnce(\"add\");\n mockInputCancellable.mockResolvedValueOnce(\"only\");\n mockSelectCancellable.mockResolvedValueOnce(\"done\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"only\"]);\n });\n\n test(\"fills empty array by selecting Done immediately\", async () => {\n const schema = Type.Array(Type.String());\n\n mockSelectCancellable.mockResolvedValueOnce(\"done\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([]);\n });\n\n test(\"array Back throws UserCancelledError\", async () => {\n const schema = Type.Array(Type.String());\n\n mockSelectCancellable.mockResolvedValueOnce(\"back\");\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n // --- Tuple types (unchanged - sequential) ---\n\n test(\"fills a tuple with same-type elements\", async () => {\n const schema = Type.Tuple([Type.String(), Type.String()]);\n\n mockInputCancellable\n .mockResolvedValueOnce(\"policyId\")\n .mockResolvedValueOnce(\"assetName\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"policyId\", \"assetName\"]);\n });\n\n test(\"fills a tuple with mixed types\", async () => {\n const schema = Type.Tuple([Type.String(), Type.BigInt()]);\n\n mockInputCancellable\n .mockResolvedValueOnce(\"label\")\n .mockResolvedValueOnce(\"42\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"label\", 42n]);\n });\n\n test(\"fills a tuple with default values\", async () => {\n const schema = Type.Tuple([Type.String(), Type.BigInt()]);\n\n mockInputCancellable\n .mockResolvedValueOnce(\"new-label\")\n .mockResolvedValueOnce(\"99\");\n\n await sprinkle.FillInStruct(schema, [\"default-label\", 50n] as any);\n\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"default-label\");\n expect(mockInputCancellable.mock.calls[1][0].default).toBe(\"50\");\n });\n\n test(\"fills a tuple nested in an object\", async () => {\n const schema = Type.Object({\n asset: Type.Tuple([Type.String(), Type.String()]),\n });\n\n // Single required field skips menu\n mockInputCancellable\n .mockResolvedValueOnce(\"policy123\")\n .mockResolvedValueOnce(\"token456\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ asset: [\"policy123\", \"token456\"] });\n });\n\n // --- Hot wallet special handling ---\n\n test(\"hot wallet private key shows setup choice\", async () => {\n const schema = Type.String({ title: \"Hot Wallet Private Key\" });\n\n // Select \"existing\" option\n mockSelectCancellable.mockResolvedValueOnce(\"existing\");\n mockPasswordCancellable.mockResolvedValueOnce(\"my-private-key\");\n\n const result = await sprinkle.FillInStruct(schema);\n\n // Verify select was called with correct options\n expect(mockSelectCancellable.mock.calls[0][0].message).toBe(\n \"Hot wallet setup:\",\n );\n expect(mockSelectCancellable.mock.calls[0][0].choices).toEqual([\n { name: \"Enter existing private key\", value: \"existing\" },\n { name: \"Generate new wallet\", value: \"generate\" },\n ]);\n expect(result).toBe(\"my-private-key\");\n });\n\n test(\"hot wallet existing key prompts for password\", async () => {\n const schema = Type.String({ title: \"Hot Wallet Private Key\" });\n\n mockSelectCancellable.mockResolvedValueOnce(\"existing\");\n mockPasswordCancellable.mockResolvedValueOnce(\"deadbeef1234\");\n\n const result = await sprinkle.FillInStruct(schema);\n\n expect(mockPasswordCancellable).toHaveBeenCalledWith({\n message: \"Enter your private key:\",\n });\n expect(result).toBe(\"deadbeef1234\");\n });\n\n // Note: Full wallet settings test removed due to mock complexity.\n // The individual components (union selection, single-field optimization,\n // hot wallet key handling) are tested separately above.\n\n // --- Cancel/escape behavior ---\n\n test(\"throws UserCancelledError when input prompt is cancelled\", async () => {\n mockInputCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(Type.String())).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"throws UserCancelledError when field input cancelled in object menu\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Select name field\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n // Cancel during input\n mockInputCancellable.mockResolvedValueOnce(null);\n // Return to menu (field unchanged)\n // Then cancel at menu\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fill-in-struct.test.js","names":["_bunTest","require","_index","_types","mockSelect","mock","mockInput","mockPassword","mockConfirm","mockSelectCancellable","mockInputCancellable","mockPasswordCancellable","mockConfirmCancellable","module","select","input","password","confirm","selectCancellable","inputCancellable","passwordCancellable","confirmCancellable","searchCancellable","describe","sprinkle","beforeEach","schema","Type","Object","placeholder","String","Sprinkle","mockReset","test","mockResolvedValueOnce","result","FillInStruct","expect","toBe","title","calls","message","BigInt","Literal","not","toHaveBeenCalled","default","Boolean","rejects","toThrow","UserCancelledError","Null","defaults","Union","type","value","count","mockImplementationOnce","opts","choices","toEqual","defaultValue","settings","timeout","retries","name","toBeUndefined","age","outer","inner","required","optional","Optional","nickname","a","b","Array","Tuple","asset","toHaveBeenCalledWith"],"sources":["../../../../src/Sprinkle/__tests__/fill-in-struct.test.ts"],"sourcesContent":["import { describe, expect, test, mock, beforeEach, spyOn } from \"bun:test\";\nimport { Sprinkle, Type, WalletSettingsSchema } from \"../index.js\";\nimport { UserCancelledError } from \"../types.js\";\n\n// Mock @inquirer/prompts\nconst mockSelect = mock();\nconst mockInput = mock();\nconst mockPassword = mock();\nconst mockConfirm = mock();\nconst mockSelectCancellable = mock();\nconst mockInputCancellable = mock();\nconst mockPasswordCancellable = mock();\nconst mockConfirmCancellable = mock();\n\nmock.module(\"@inquirer/prompts\", () => ({\n select: mockSelect,\n input: mockInput,\n password: mockPassword,\n confirm: mockConfirm,\n}));\n\nmock.module(\"../prompts.js\", () => ({\n selectCancellable: mockSelectCancellable,\n inputCancellable: mockInputCancellable,\n passwordCancellable: mockPasswordCancellable,\n confirmCancellable: mockConfirmCancellable,\n searchCancellable: mock(),\n select: mockSelectCancellable,\n}));\n\ndescribe(\"FillInStruct\", () => {\n let sprinkle: Sprinkle<any>;\n\n beforeEach(() => {\n const schema = Type.Object({ placeholder: Type.String() });\n sprinkle = new Sprinkle(schema, \"/tmp/test\");\n // Use mockReset to clear both call history and queued responses\n mockSelect.mockReset();\n mockInput.mockReset();\n mockPassword.mockReset();\n mockConfirm.mockReset();\n mockSelectCancellable.mockReset();\n mockInputCancellable.mockReset();\n mockPasswordCancellable.mockReset();\n mockConfirmCancellable.mockReset();\n });\n\n // --- Primitive types (unchanged behavior) ---\n\n test(\"fills a simple string field\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"hello\");\n\n const result = await sprinkle.FillInStruct(Type.String());\n expect(result).toBe(\"hello\");\n });\n\n test(\"fills a string with title as prompt\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"world\");\n\n await sprinkle.FillInStruct(Type.String({ title: \"Enter name\" }));\n expect(mockInputCancellable.mock.calls[0][0].message).toBe(\"Enter name\");\n });\n\n test(\"fills a bigint field\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"42\");\n\n const result = await sprinkle.FillInStruct(Type.BigInt());\n expect(result).toBe(42n);\n });\n\n test(\"fills a literal field without prompting\", async () => {\n const result = await sprinkle.FillInStruct(Type.Literal(\"fixed\"));\n expect(result).toBe(\"fixed\");\n expect(mockInputCancellable).not.toHaveBeenCalled();\n expect(mockSelectCancellable).not.toHaveBeenCalled();\n });\n\n test(\"uses default value for string\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"used-default\");\n\n await sprinkle.FillInStruct(Type.String(), \"my-default\" as any);\n\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"my-default\");\n });\n\n test(\"uses default value for bigint\", async () => {\n mockInputCancellable.mockResolvedValueOnce(\"99\");\n\n await sprinkle.FillInStruct(Type.BigInt(), 99n as any);\n\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"99\");\n });\n\n test(\"fills a boolean field with select\", async () => {\n mockSelectCancellable.mockResolvedValueOnce(true);\n\n const result = await sprinkle.FillInStruct(Type.Boolean() as any);\n expect(result).toBe(true);\n });\n\n test(\"boolean field respects default value\", async () => {\n mockSelectCancellable.mockResolvedValueOnce(false);\n\n await sprinkle.FillInStruct(Type.Boolean() as any, false as any);\n expect(mockSelectCancellable.mock.calls[0][0].default).toBe(false);\n });\n\n test(\"boolean field throws on cancel\", async () => {\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n expect(sprinkle.FillInStruct(Type.Boolean() as any)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"throws for unsupported types\", async () => {\n expect(sprinkle.FillInStruct(Type.Null() as any)).rejects.toThrow(\n \"Unable to fill in struct\",\n );\n });\n\n test(\"remembers last string input as default\", async () => {\n mockInputCancellable\n .mockResolvedValueOnce(\"first-input\")\n .mockResolvedValueOnce(\"second-input\");\n\n await sprinkle.FillInStruct(Type.String());\n expect(sprinkle.defaults[\"string\"]).toBe(\"first-input\");\n\n await sprinkle.FillInStruct(Type.String());\n // Second call should have the first input as default\n expect(mockInputCancellable.mock.calls[1][0].default).toBe(\"first-input\");\n });\n\n // --- Union types ---\n\n test(\"fills a union type by selecting variant then filling\", async () => {\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"a\"),\n value: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"b\"),\n count: Type.BigInt(),\n }),\n ]);\n\n // Select first variant (the Object with type \"a\")\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n // Object menu: select \"value\" field, then Submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:value\");\n mockInputCancellable.mockResolvedValueOnce(\"test-value\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ type: \"a\", value: \"test-value\" });\n });\n\n test(\"throws UserCancelledError when select prompt is cancelled\", async () => {\n const schema = Type.Union([\n Type.Object({ type: Type.Literal(\"a\") }),\n Type.Object({ type: Type.Literal(\"b\") }),\n ]);\n\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"discriminated union propagates default when variant matches\", async () => {\n // When default has type \"a\" and user selects variant A, the default values\n // for non-literal fields should be pre-populated (field starts as \"set\" status).\n // Submitting without editing should return the default values.\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"a\"),\n value: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"b\"),\n count: Type.BigInt(),\n }),\n ]);\n\n const defaultValue = { type: \"a\" as const, value: \"existing-value\" };\n\n // Select the first variant (type \"a\") - matches the default\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n // Both fields are \"set\" (type auto-filled, value pre-populated from default).\n // allRequiredFieldsFilled is true so Submit is enabled. Submit immediately.\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n // The default value for the \"value\" field should be included in the result\n expect(result).toEqual({ type: \"a\", value: \"existing-value\" });\n });\n\n test(\"discriminated union with nested object propagates nested defaults\", async () => {\n // When a discriminated union default has a nested settings object, the nested\n // fields should also be pre-populated from the default.\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"config\"),\n settings: Type.Object({\n timeout: Type.BigInt(),\n retries: Type.BigInt(),\n }),\n }),\n Type.Object({\n type: Type.Literal(\"other\"),\n name: Type.String(),\n }),\n ]);\n\n const defaultValue = {\n type: \"config\" as const,\n settings: { timeout: 30n, retries: 3n },\n };\n\n // Select the first variant (type \"config\") - matches the default\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n // Outer object: \"type\" is auto-filled literal, \"settings\" is pre-populated from default.\n // Both required fields are \"set\", so Submit is available.\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n // Both the outer and nested default values should be returned\n expect(result).toEqual({\n type: \"config\",\n settings: { timeout: 30n, retries: 3n },\n });\n });\n\n test(\"discriminated union does not propagate default when variant does not match\", async () => {\n // When default has type \"a\" but user selects variant B, no default should be passed.\n // The variant B field should start as \"unset\" and require user input.\n const schema = Type.Union([\n Type.Object({\n type: Type.Literal(\"a\"),\n value: Type.String(),\n }),\n Type.Object({\n type: Type.Literal(\"b\"),\n name: Type.String(),\n }),\n ]);\n\n // Default has type \"a\" but user selects variant \"b\"\n const defaultValue = { type: \"a\" as const, value: \"should-not-appear\" };\n\n // Select the second variant (type \"b\") - does NOT match the default\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[1].value;\n });\n // Variant B: \"type\" is auto-filled, \"name\" starts as unset (no default propagated).\n // Select \"name\" field and fill it in.\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"new-name\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n expect(result).toEqual({ type: \"b\", name: \"new-name\" });\n // The input prompt for \"name\" should have no default (default from variant A was not passed)\n expect(mockInputCancellable.mock.calls[0][0].default).toBeUndefined();\n });\n\n test(\"non-discriminated union propagates default when value structurally matches selected variant\", async () => {\n // For a union of simple types, when the default matches the selected variant\n // structurally (via Value.Check), it should be passed through.\n const schema = Type.Union([Type.String(), Type.BigInt()]);\n\n const defaultValue = \"default-string\";\n\n // Select the first variant (String)\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[0].value;\n });\n mockInputCancellable.mockResolvedValueOnce(\"new-value\");\n\n await sprinkle.FillInStruct(schema, defaultValue as any);\n\n // The input prompt should show the string default\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"default-string\");\n });\n\n test(\"non-discriminated union does not propagate default when value does not match selected variant\", async () => {\n // When a string default is provided but BigInt variant is selected,\n // the default must not be passed (it would fail structural validation).\n const schema = Type.Union([Type.String(), Type.BigInt()]);\n\n // Default is a string but user selects BigInt variant\n const defaultValue = \"not-a-bigint\";\n\n // Select the second variant (BigInt)\n mockSelectCancellable.mockImplementationOnce(async (opts: any) => {\n return opts.choices[1].value;\n });\n mockInputCancellable.mockResolvedValueOnce(\"42\");\n\n const result = await sprinkle.FillInStruct(schema, defaultValue as any);\n\n expect(result).toBe(42n);\n // The string default must not be passed to the BigInt prompt\n expect(mockInputCancellable.mock.calls[0][0].default).toBeUndefined();\n });\n\n // --- Object types (menu-based) ---\n\n test(\"fills an object with multiple fields\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Menu flow: select name -> fill -> select age -> fill -> submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n mockSelectCancellable.mockResolvedValueOnce(\"field:age\");\n mockInputCancellable.mockResolvedValueOnce(\"30\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"Alice\", age: 30n });\n });\n\n test(\"fills nested objects\", async () => {\n const schema = Type.Object({\n outer: Type.Object({\n inner: Type.String(),\n }),\n });\n\n // Outer menu: select \"outer\" field\n mockSelectCancellable.mockResolvedValueOnce(\"field:outer\");\n // Inner menu: select \"inner\" field, fill, submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:inner\");\n mockInputCancellable.mockResolvedValueOnce(\"deep-value\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n // Back to outer menu: submit\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ outer: { inner: \"deep-value\" } });\n });\n\n test(\"single required field skips menu\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n });\n\n // No menu - directly prompts for the field\n mockInputCancellable.mockResolvedValueOnce(\"direct-value\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"direct-value\" });\n // Verify no select menu was shown\n expect(mockSelectCancellable).not.toHaveBeenCalled();\n });\n\n test(\"throws UserCancelledError when object menu is cancelled\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Cancel at menu (no values set)\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"cancel with values prompts confirmation\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Fill one field\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n // Escape at menu\n mockSelectCancellable.mockResolvedValueOnce(null);\n // Confirm discard\n mockConfirmCancellable.mockResolvedValueOnce(true);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n // --- Optional fields in object menu ---\n\n test(\"optional field shows without asterisk in menu\", async () => {\n const schema = Type.Object({\n required: Type.String(),\n optional: Type.Optional(Type.String()),\n });\n\n // Menu flow: select required -> fill -> submit (leaving optional unset)\n mockSelectCancellable.mockResolvedValueOnce(\"field:required\");\n mockInputCancellable.mockResolvedValueOnce(\"value\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ required: \"value\" });\n // Optional field should be omitted from result\n expect(\"optional\" in result).toBe(false);\n });\n\n test(\"selecting optional field prompts Yes/Skip\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n nickname: Type.Optional(Type.String()),\n });\n\n // Menu flow: select name -> fill -> select nickname -> Yes -> fill -> submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n mockSelectCancellable.mockResolvedValueOnce(\"field:nickname\");\n // Prompt: \"Set value for nickname? Yes/Skip\"\n mockSelectCancellable.mockResolvedValueOnce(true); // Yes\n mockInputCancellable.mockResolvedValueOnce(\"Ali\");\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"Alice\", nickname: \"Ali\" });\n });\n\n test(\"skipping optional field leaves it undefined\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n nickname: Type.Optional(Type.String()),\n });\n\n // Menu flow: select name -> fill -> select nickname -> Skip -> submit\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n mockInputCancellable.mockResolvedValueOnce(\"Alice\");\n mockSelectCancellable.mockResolvedValueOnce(\"field:nickname\");\n // Prompt: \"Set value for nickname? Yes/Skip\"\n mockSelectCancellable.mockResolvedValueOnce(false); // Skip\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ name: \"Alice\" });\n expect(\"nickname\" in result).toBe(false);\n });\n\n test(\"all-optional object can be submitted empty\", async () => {\n const schema = Type.Object({\n a: Type.Optional(Type.String()),\n b: Type.Optional(Type.String()),\n });\n\n // Submit immediately without setting any fields\n mockSelectCancellable.mockResolvedValueOnce(\"submit\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({});\n });\n\n // --- Array types (menu-based) ---\n\n test(\"fills an array with items\", async () => {\n const schema = Type.Array(Type.String());\n\n // Menu: Add -> fill -> Add -> fill -> Done\n mockSelectCancellable.mockResolvedValueOnce(\"add\");\n mockInputCancellable.mockResolvedValueOnce(\"first\");\n mockSelectCancellable.mockResolvedValueOnce(\"add\");\n mockInputCancellable.mockResolvedValueOnce(\"second\");\n mockSelectCancellable.mockResolvedValueOnce(\"done\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"first\", \"second\"]);\n });\n\n test(\"fills an array with single item\", async () => {\n const schema = Type.Array(Type.String());\n\n // Menu: Add -> fill -> Done\n mockSelectCancellable.mockResolvedValueOnce(\"add\");\n mockInputCancellable.mockResolvedValueOnce(\"only\");\n mockSelectCancellable.mockResolvedValueOnce(\"done\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"only\"]);\n });\n\n test(\"fills empty array by selecting Done immediately\", async () => {\n const schema = Type.Array(Type.String());\n\n mockSelectCancellable.mockResolvedValueOnce(\"done\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([]);\n });\n\n test(\"array Back throws UserCancelledError\", async () => {\n const schema = Type.Array(Type.String());\n\n mockSelectCancellable.mockResolvedValueOnce(\"back\");\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n // --- Tuple types (unchanged - sequential) ---\n\n test(\"fills a tuple with same-type elements\", async () => {\n const schema = Type.Tuple([Type.String(), Type.String()]);\n\n mockInputCancellable\n .mockResolvedValueOnce(\"policyId\")\n .mockResolvedValueOnce(\"assetName\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"policyId\", \"assetName\"]);\n });\n\n test(\"fills a tuple with mixed types\", async () => {\n const schema = Type.Tuple([Type.String(), Type.BigInt()]);\n\n mockInputCancellable\n .mockResolvedValueOnce(\"label\")\n .mockResolvedValueOnce(\"42\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual([\"label\", 42n]);\n });\n\n test(\"fills a tuple with default values\", async () => {\n const schema = Type.Tuple([Type.String(), Type.BigInt()]);\n\n mockInputCancellable\n .mockResolvedValueOnce(\"new-label\")\n .mockResolvedValueOnce(\"99\");\n\n await sprinkle.FillInStruct(schema, [\"default-label\", 50n] as any);\n\n expect(mockInputCancellable.mock.calls[0][0].default).toBe(\"default-label\");\n expect(mockInputCancellable.mock.calls[1][0].default).toBe(\"50\");\n });\n\n test(\"fills a tuple nested in an object\", async () => {\n const schema = Type.Object({\n asset: Type.Tuple([Type.String(), Type.String()]),\n });\n\n // Single required field skips menu\n mockInputCancellable\n .mockResolvedValueOnce(\"policy123\")\n .mockResolvedValueOnce(\"token456\");\n\n const result = await sprinkle.FillInStruct(schema);\n expect(result).toEqual({ asset: [\"policy123\", \"token456\"] });\n });\n\n // --- Hot wallet special handling ---\n\n test(\"hot wallet private key shows setup choice\", async () => {\n const schema = Type.String({ title: \"Hot Wallet Private Key\" });\n\n // Select \"existing\" option\n mockSelectCancellable.mockResolvedValueOnce(\"existing\");\n mockPasswordCancellable.mockResolvedValueOnce(\"my-private-key\");\n\n const result = await sprinkle.FillInStruct(schema);\n\n // Verify select was called with correct options\n expect(mockSelectCancellable.mock.calls[0][0].message).toBe(\n \"Hot wallet setup:\",\n );\n expect(mockSelectCancellable.mock.calls[0][0].choices).toEqual([\n { name: \"Enter existing private key\", value: \"existing\" },\n { name: \"Generate new wallet\", value: \"generate\" },\n ]);\n expect(result).toBe(\"my-private-key\");\n });\n\n test(\"hot wallet existing key prompts for password\", async () => {\n const schema = Type.String({ title: \"Hot Wallet Private Key\" });\n\n mockSelectCancellable.mockResolvedValueOnce(\"existing\");\n mockPasswordCancellable.mockResolvedValueOnce(\"deadbeef1234\");\n\n const result = await sprinkle.FillInStruct(schema);\n\n expect(mockPasswordCancellable).toHaveBeenCalledWith({\n message: \"Enter your private key:\",\n });\n expect(result).toBe(\"deadbeef1234\");\n });\n\n // Note: Full wallet settings test removed due to mock complexity.\n // The individual components (union selection, single-field optimization,\n // hot wallet key handling) are tested separately above.\n\n // --- Cancel/escape behavior ---\n\n test(\"throws UserCancelledError when input prompt is cancelled\", async () => {\n mockInputCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(Type.String())).rejects.toThrow(\n UserCancelledError,\n );\n });\n\n test(\"throws UserCancelledError when field input cancelled in object menu\", async () => {\n const schema = Type.Object({\n name: Type.String(),\n age: Type.BigInt(),\n });\n\n // Select name field\n mockSelectCancellable.mockResolvedValueOnce(\"field:name\");\n // Cancel during input\n mockInputCancellable.mockResolvedValueOnce(null);\n // Return to menu (field unchanged)\n // Then cancel at menu\n mockSelectCancellable.mockResolvedValueOnce(null);\n\n await expect(sprinkle.FillInStruct(schema)).rejects.toThrow(\n UserCancelledError,\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}