@sbugallo/pokecode 0.0.0-stage → 0.2.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 (463) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +331 -2
  3. package/dist/adapters/opencode/rpc/contract.d.ts +813 -0
  4. package/dist/adapters/opencode/rpc/contract.d.ts.map +1 -0
  5. package/dist/adapters/opencode/rpc/contract.js +254 -0
  6. package/dist/adapters/opencode/rpc/contract.js.map +1 -0
  7. package/dist/adapters/opencode/server/handlers.d.ts +20 -0
  8. package/dist/adapters/opencode/server/handlers.d.ts.map +1 -0
  9. package/dist/adapters/opencode/server/handlers.js +41 -0
  10. package/dist/adapters/opencode/server/handlers.js.map +1 -0
  11. package/dist/adapters/opencode/server/plugin.d.ts +19 -0
  12. package/dist/adapters/opencode/server/plugin.d.ts.map +1 -0
  13. package/dist/adapters/opencode/server/plugin.js +101 -0
  14. package/dist/adapters/opencode/server/plugin.js.map +1 -0
  15. package/dist/adapters/opencode/server/usage-reconciliation.d.ts +24 -0
  16. package/dist/adapters/opencode/server/usage-reconciliation.d.ts.map +1 -0
  17. package/dist/adapters/opencode/server/usage-reconciliation.js +60 -0
  18. package/dist/adapters/opencode/server/usage-reconciliation.js.map +1 -0
  19. package/dist/adapters/opencode/tui/choices/cards.d.ts +32 -0
  20. package/dist/adapters/opencode/tui/choices/cards.d.ts.map +1 -0
  21. package/dist/adapters/opencode/tui/choices/cards.jsx +114 -0
  22. package/dist/adapters/opencode/tui/choices/cards.jsx.map +1 -0
  23. package/dist/adapters/opencode/tui/choices/encounter.d.ts +13 -0
  24. package/dist/adapters/opencode/tui/choices/encounter.d.ts.map +1 -0
  25. package/dist/adapters/opencode/tui/choices/encounter.jsx +30 -0
  26. package/dist/adapters/opencode/tui/choices/encounter.jsx.map +1 -0
  27. package/dist/adapters/opencode/tui/client.d.ts +164 -0
  28. package/dist/adapters/opencode/tui/client.d.ts.map +1 -0
  29. package/dist/adapters/opencode/tui/client.js +30 -0
  30. package/dist/adapters/opencode/tui/client.js.map +1 -0
  31. package/dist/adapters/opencode/tui/commands/commands.d.ts +21 -0
  32. package/dist/adapters/opencode/tui/commands/commands.d.ts.map +1 -0
  33. package/dist/adapters/opencode/tui/commands/commands.jsx +78 -0
  34. package/dist/adapters/opencode/tui/commands/commands.jsx.map +1 -0
  35. package/dist/adapters/opencode/tui/components/action-button.d.ts +12 -0
  36. package/dist/adapters/opencode/tui/components/action-button.d.ts.map +1 -0
  37. package/dist/adapters/opencode/tui/components/action-button.jsx +13 -0
  38. package/dist/adapters/opencode/tui/components/action-button.jsx.map +1 -0
  39. package/dist/adapters/opencode/tui/components/move-list.d.ts +13 -0
  40. package/dist/adapters/opencode/tui/components/move-list.d.ts.map +1 -0
  41. package/dist/adapters/opencode/tui/components/move-list.jsx +91 -0
  42. package/dist/adapters/opencode/tui/components/move-list.jsx.map +1 -0
  43. package/dist/adapters/opencode/tui/components/owner.d.ts +3 -0
  44. package/dist/adapters/opencode/tui/components/owner.d.ts.map +1 -0
  45. package/dist/adapters/opencode/tui/components/owner.js +16 -0
  46. package/dist/adapters/opencode/tui/components/owner.js.map +1 -0
  47. package/dist/adapters/opencode/tui/components/sprite.d.ts +13 -0
  48. package/dist/adapters/opencode/tui/components/sprite.d.ts.map +1 -0
  49. package/dist/adapters/opencode/tui/components/sprite.jsx +30 -0
  50. package/dist/adapters/opencode/tui/components/sprite.jsx.map +1 -0
  51. package/dist/adapters/opencode/tui/controls/native.d.ts +2 -0
  52. package/dist/adapters/opencode/tui/controls/native.d.ts.map +1 -0
  53. package/dist/adapters/opencode/tui/controls/native.js +22 -0
  54. package/dist/adapters/opencode/tui/controls/native.js.map +1 -0
  55. package/dist/adapters/opencode/tui/dex/actions.d.ts +12 -0
  56. package/dist/adapters/opencode/tui/dex/actions.d.ts.map +1 -0
  57. package/dist/adapters/opencode/tui/dex/actions.jsx +15 -0
  58. package/dist/adapters/opencode/tui/dex/actions.jsx.map +1 -0
  59. package/dist/adapters/opencode/tui/dex/dialog.d.ts +12 -0
  60. package/dist/adapters/opencode/tui/dex/dialog.d.ts.map +1 -0
  61. package/dist/adapters/opencode/tui/dex/dialog.jsx +79 -0
  62. package/dist/adapters/opencode/tui/dex/dialog.jsx.map +1 -0
  63. package/dist/adapters/opencode/tui/export/actions.d.ts +14 -0
  64. package/dist/adapters/opencode/tui/export/actions.d.ts.map +1 -0
  65. package/dist/adapters/opencode/tui/export/actions.js +25 -0
  66. package/dist/adapters/opencode/tui/export/actions.js.map +1 -0
  67. package/dist/adapters/opencode/tui/export/presentation.d.ts +16 -0
  68. package/dist/adapters/opencode/tui/export/presentation.d.ts.map +1 -0
  69. package/dist/adapters/opencode/tui/export/presentation.js +15 -0
  70. package/dist/adapters/opencode/tui/export/presentation.js.map +1 -0
  71. package/dist/adapters/opencode/tui/pc/actions.d.ts +22 -0
  72. package/dist/adapters/opencode/tui/pc/actions.d.ts.map +1 -0
  73. package/dist/adapters/opencode/tui/pc/actions.jsx +47 -0
  74. package/dist/adapters/opencode/tui/pc/actions.jsx.map +1 -0
  75. package/dist/adapters/opencode/tui/pc/details.d.ts +10 -0
  76. package/dist/adapters/opencode/tui/pc/details.d.ts.map +1 -0
  77. package/dist/adapters/opencode/tui/pc/details.jsx +51 -0
  78. package/dist/adapters/opencode/tui/pc/details.jsx.map +1 -0
  79. package/dist/adapters/opencode/tui/pc/dialog.d.ts +19 -0
  80. package/dist/adapters/opencode/tui/pc/dialog.d.ts.map +1 -0
  81. package/dist/adapters/opencode/tui/pc/dialog.jsx +263 -0
  82. package/dist/adapters/opencode/tui/pc/dialog.jsx.map +1 -0
  83. package/dist/adapters/opencode/tui/plugin.d.ts +14 -0
  84. package/dist/adapters/opencode/tui/plugin.d.ts.map +1 -0
  85. package/dist/adapters/opencode/tui/plugin.jsx +103 -0
  86. package/dist/adapters/opencode/tui/plugin.jsx.map +1 -0
  87. package/dist/adapters/opencode/tui/sidebar/actions.d.ts +21 -0
  88. package/dist/adapters/opencode/tui/sidebar/actions.d.ts.map +1 -0
  89. package/dist/adapters/opencode/tui/sidebar/actions.js +54 -0
  90. package/dist/adapters/opencode/tui/sidebar/actions.js.map +1 -0
  91. package/dist/adapters/opencode/tui/sidebar/register.d.ts +30 -0
  92. package/dist/adapters/opencode/tui/sidebar/register.d.ts.map +1 -0
  93. package/dist/adapters/opencode/tui/sidebar/register.jsx +21 -0
  94. package/dist/adapters/opencode/tui/sidebar/register.jsx.map +1 -0
  95. package/dist/adapters/opencode/tui/sidebar/view.d.ts +43 -0
  96. package/dist/adapters/opencode/tui/sidebar/view.d.ts.map +1 -0
  97. package/dist/adapters/opencode/tui/sidebar/view.jsx +166 -0
  98. package/dist/adapters/opencode/tui/sidebar/view.jsx.map +1 -0
  99. package/dist/adapters/opencode/tui/state/cleanup.d.ts +8 -0
  100. package/dist/adapters/opencode/tui/state/cleanup.d.ts.map +1 -0
  101. package/dist/adapters/opencode/tui/state/cleanup.js +68 -0
  102. package/dist/adapters/opencode/tui/state/cleanup.js.map +1 -0
  103. package/dist/adapters/opencode/tui/state/coordinator.d.ts +122 -0
  104. package/dist/adapters/opencode/tui/state/coordinator.d.ts.map +1 -0
  105. package/dist/adapters/opencode/tui/state/coordinator.js +40 -0
  106. package/dist/adapters/opencode/tui/state/coordinator.js.map +1 -0
  107. package/dist/adapters/opencode/tui/state/setup-failure.d.ts +2 -0
  108. package/dist/adapters/opencode/tui/state/setup-failure.d.ts.map +1 -0
  109. package/dist/adapters/opencode/tui/state/setup-failure.js +10 -0
  110. package/dist/adapters/opencode/tui/state/setup-failure.js.map +1 -0
  111. package/dist/adapters/opencode/tui/travel/actions.d.ts +16 -0
  112. package/dist/adapters/opencode/tui/travel/actions.d.ts.map +1 -0
  113. package/dist/adapters/opencode/tui/travel/actions.jsx +31 -0
  114. package/dist/adapters/opencode/tui/travel/actions.jsx.map +1 -0
  115. package/dist/adapters/opencode/tui/travel/dialog.d.ts +29 -0
  116. package/dist/adapters/opencode/tui/travel/dialog.d.ts.map +1 -0
  117. package/dist/adapters/opencode/tui/travel/dialog.jsx +128 -0
  118. package/dist/adapters/opencode/tui/travel/dialog.jsx.map +1 -0
  119. package/dist/adapters/opencode/tui/travel/projection.d.ts +29 -0
  120. package/dist/adapters/opencode/tui/travel/projection.d.ts.map +1 -0
  121. package/dist/adapters/opencode/tui/travel/projection.js +44 -0
  122. package/dist/adapters/opencode/tui/travel/projection.js.map +1 -0
  123. package/dist/adapters/presentation/game-notifications.d.ts +13 -0
  124. package/dist/adapters/presentation/game-notifications.d.ts.map +1 -0
  125. package/dist/adapters/presentation/game-notifications.js +111 -0
  126. package/dist/adapters/presentation/game-notifications.js.map +1 -0
  127. package/dist/adapters/presentation/localization.d.ts +12 -0
  128. package/dist/adapters/presentation/localization.d.ts.map +1 -0
  129. package/dist/adapters/presentation/localization.js +65 -0
  130. package/dist/adapters/presentation/localization.js.map +1 -0
  131. package/dist/adapters/presentation/move-details.d.ts +11 -0
  132. package/dist/adapters/presentation/move-details.d.ts.map +1 -0
  133. package/dist/adapters/presentation/move-details.js +47 -0
  134. package/dist/adapters/presentation/move-details.js.map +1 -0
  135. package/dist/adapters/presentation/pc-copy.d.ts +31 -0
  136. package/dist/adapters/presentation/pc-copy.d.ts.map +1 -0
  137. package/dist/adapters/presentation/pc-copy.js +56 -0
  138. package/dist/adapters/presentation/pc-copy.js.map +1 -0
  139. package/dist/adapters/presentation/ui-copy.d.ts +49 -0
  140. package/dist/adapters/presentation/ui-copy.d.ts.map +1 -0
  141. package/dist/adapters/presentation/ui-copy.js +81 -0
  142. package/dist/adapters/presentation/ui-copy.js.map +1 -0
  143. package/dist/adapters/showdown/format-team.d.ts +3 -0
  144. package/dist/adapters/showdown/format-team.d.ts.map +1 -0
  145. package/dist/adapters/showdown/format-team.js +23 -0
  146. package/dist/adapters/showdown/format-team.js.map +1 -0
  147. package/dist/adapters/sprites/cache.d.ts +12 -0
  148. package/dist/adapters/sprites/cache.d.ts.map +1 -0
  149. package/dist/adapters/sprites/cache.js +43 -0
  150. package/dist/adapters/sprites/cache.js.map +1 -0
  151. package/dist/adapters/sprites/contracts.d.ts +20 -0
  152. package/dist/adapters/sprites/contracts.d.ts.map +1 -0
  153. package/dist/adapters/sprites/contracts.js +12 -0
  154. package/dist/adapters/sprites/contracts.js.map +1 -0
  155. package/dist/adapters/sqlite/game-repository.d.ts +14 -0
  156. package/dist/adapters/sqlite/game-repository.d.ts.map +1 -0
  157. package/dist/adapters/sqlite/game-repository.js +48 -0
  158. package/dist/adapters/sqlite/game-repository.js.map +1 -0
  159. package/dist/adapters/sqlite/game-transaction.d.ts +5 -0
  160. package/dist/adapters/sqlite/game-transaction.d.ts.map +1 -0
  161. package/dist/adapters/sqlite/game-transaction.js +35 -0
  162. package/dist/adapters/sqlite/game-transaction.js.map +1 -0
  163. package/dist/adapters/sqlite/initialize-database.d.ts +6 -0
  164. package/dist/adapters/sqlite/initialize-database.d.ts.map +1 -0
  165. package/dist/adapters/sqlite/initialize-database.js +15 -0
  166. package/dist/adapters/sqlite/initialize-database.js.map +1 -0
  167. package/dist/adapters/sqlite/pokemon-mapper.d.ts +23 -0
  168. package/dist/adapters/sqlite/pokemon-mapper.d.ts.map +1 -0
  169. package/dist/adapters/sqlite/pokemon-mapper.js +41 -0
  170. package/dist/adapters/sqlite/pokemon-mapper.js.map +1 -0
  171. package/dist/adapters/sqlite/queries/collection.d.ts +8 -0
  172. package/dist/adapters/sqlite/queries/collection.d.ts.map +1 -0
  173. package/dist/adapters/sqlite/queries/collection.js +58 -0
  174. package/dist/adapters/sqlite/queries/collection.js.map +1 -0
  175. package/dist/adapters/sqlite/queries/game-state.d.ts +4 -0
  176. package/dist/adapters/sqlite/queries/game-state.d.ts.map +1 -0
  177. package/dist/adapters/sqlite/queries/game-state.js +165 -0
  178. package/dist/adapters/sqlite/queries/game-state.js.map +1 -0
  179. package/dist/adapters/sqlite/schema.d.ts +4 -0
  180. package/dist/adapters/sqlite/schema.d.ts.map +1 -0
  181. package/dist/adapters/sqlite/schema.js +284 -0
  182. package/dist/adapters/sqlite/schema.js.map +1 -0
  183. package/dist/adapters/sqlite/starter-selection-store.d.ts +4 -0
  184. package/dist/adapters/sqlite/starter-selection-store.d.ts.map +1 -0
  185. package/dist/adapters/sqlite/starter-selection-store.js +55 -0
  186. package/dist/adapters/sqlite/starter-selection-store.js.map +1 -0
  187. package/dist/adapters/sqlite/transaction-stores/choices.d.ts +7 -0
  188. package/dist/adapters/sqlite/transaction-stores/choices.d.ts.map +1 -0
  189. package/dist/adapters/sqlite/transaction-stores/choices.js +54 -0
  190. package/dist/adapters/sqlite/transaction-stores/choices.js.map +1 -0
  191. package/dist/adapters/sqlite/transaction-stores/encounters.d.ts +7 -0
  192. package/dist/adapters/sqlite/transaction-stores/encounters.d.ts.map +1 -0
  193. package/dist/adapters/sqlite/transaction-stores/encounters.js +59 -0
  194. package/dist/adapters/sqlite/transaction-stores/encounters.js.map +1 -0
  195. package/dist/adapters/sqlite/transaction-stores/exploration.d.ts +7 -0
  196. package/dist/adapters/sqlite/transaction-stores/exploration.d.ts.map +1 -0
  197. package/dist/adapters/sqlite/transaction-stores/exploration.js +65 -0
  198. package/dist/adapters/sqlite/transaction-stores/exploration.js.map +1 -0
  199. package/dist/adapters/sqlite/transaction-stores/pokemon.d.ts +7 -0
  200. package/dist/adapters/sqlite/transaction-stores/pokemon.d.ts.map +1 -0
  201. package/dist/adapters/sqlite/transaction-stores/pokemon.js +160 -0
  202. package/dist/adapters/sqlite/transaction-stores/pokemon.js.map +1 -0
  203. package/dist/adapters/sqlite/transaction-stores/queue-order.d.ts +5 -0
  204. package/dist/adapters/sqlite/transaction-stores/queue-order.d.ts.map +1 -0
  205. package/dist/adapters/sqlite/transaction-stores/queue-order.js +15 -0
  206. package/dist/adapters/sqlite/transaction-stores/queue-order.js.map +1 -0
  207. package/dist/adapters/sqlite/transaction-stores/receipts.d.ts +4 -0
  208. package/dist/adapters/sqlite/transaction-stores/receipts.d.ts.map +1 -0
  209. package/dist/adapters/sqlite/transaction-stores/receipts.js +11 -0
  210. package/dist/adapters/sqlite/transaction-stores/receipts.js.map +1 -0
  211. package/dist/adapters/sqlite/transaction-stores/trainers.d.ts +4 -0
  212. package/dist/adapters/sqlite/transaction-stores/trainers.d.ts.map +1 -0
  213. package/dist/adapters/sqlite/transaction-stores/trainers.js +11 -0
  214. package/dist/adapters/sqlite/transaction-stores/trainers.js.map +1 -0
  215. package/dist/application/contracts/game.d.ts +1412 -0
  216. package/dist/application/contracts/game.d.ts.map +1 -0
  217. package/dist/application/contracts/game.js +126 -0
  218. package/dist/application/contracts/game.js.map +1 -0
  219. package/dist/application/contracts/starter-choice.d.ts +6 -0
  220. package/dist/application/contracts/starter-choice.d.ts.map +1 -0
  221. package/dist/application/contracts/starter-choice.js +2 -0
  222. package/dist/application/contracts/starter-choice.js.map +1 -0
  223. package/dist/application/game.d.ts +34 -0
  224. package/dist/application/game.d.ts.map +1 -0
  225. package/dist/application/game.js +67 -0
  226. package/dist/application/game.js.map +1 -0
  227. package/dist/application/ports/game-transaction.d.ts +172 -0
  228. package/dist/application/ports/game-transaction.d.ts.map +1 -0
  229. package/dist/application/ports/game-transaction.js +2 -0
  230. package/dist/application/ports/game-transaction.js.map +1 -0
  231. package/dist/application/ports/game.d.ts +11 -0
  232. package/dist/application/ports/game.d.ts.map +1 -0
  233. package/dist/application/ports/game.js +2 -0
  234. package/dist/application/ports/game.js.map +1 -0
  235. package/dist/application/ports/starter-selection-store.d.ts +23 -0
  236. package/dist/application/ports/starter-selection-store.d.ts.map +1 -0
  237. package/dist/application/ports/starter-selection-store.js +2 -0
  238. package/dist/application/ports/starter-selection-store.js.map +1 -0
  239. package/dist/application/use-cases/choices.d.ts +9 -0
  240. package/dist/application/use-cases/choices.d.ts.map +1 -0
  241. package/dist/application/use-cases/choices.js +111 -0
  242. package/dist/application/use-cases/choices.js.map +1 -0
  243. package/dist/application/use-cases/choose-regional-starter.d.ts +4 -0
  244. package/dist/application/use-cases/choose-regional-starter.d.ts.map +1 -0
  245. package/dist/application/use-cases/choose-regional-starter.js +37 -0
  246. package/dist/application/use-cases/choose-regional-starter.js.map +1 -0
  247. package/dist/application/use-cases/choose-starter.d.ts +15 -0
  248. package/dist/application/use-cases/choose-starter.d.ts.map +1 -0
  249. package/dist/application/use-cases/choose-starter.js +26 -0
  250. package/dist/application/use-cases/choose-starter.js.map +1 -0
  251. package/dist/application/use-cases/encounters.d.ts +234 -0
  252. package/dist/application/use-cases/encounters.d.ts.map +1 -0
  253. package/dist/application/use-cases/encounters.js +39 -0
  254. package/dist/application/use-cases/encounters.js.map +1 -0
  255. package/dist/application/use-cases/game-command-support.d.ts +16 -0
  256. package/dist/application/use-cases/game-command-support.d.ts.map +1 -0
  257. package/dist/application/use-cases/game-command-support.js +16 -0
  258. package/dist/application/use-cases/game-command-support.js.map +1 -0
  259. package/dist/application/use-cases/game-commands.d.ts +244 -0
  260. package/dist/application/use-cases/game-commands.d.ts.map +1 -0
  261. package/dist/application/use-cases/game-commands.js +14 -0
  262. package/dist/application/use-cases/game-commands.js.map +1 -0
  263. package/dist/application/use-cases/learn-move.d.ts +22 -0
  264. package/dist/application/use-cases/learn-move.d.ts.map +1 -0
  265. package/dist/application/use-cases/learn-move.js +24 -0
  266. package/dist/application/use-cases/learn-move.js.map +1 -0
  267. package/dist/application/use-cases/party.d.ts +8 -0
  268. package/dist/application/use-cases/party.d.ts.map +1 -0
  269. package/dist/application/use-cases/party.js +44 -0
  270. package/dist/application/use-cases/party.js.map +1 -0
  271. package/dist/application/use-cases/record-usage.d.ts +10 -0
  272. package/dist/application/use-cases/record-usage.d.ts.map +1 -0
  273. package/dist/application/use-cases/record-usage.js +145 -0
  274. package/dist/application/use-cases/record-usage.js.map +1 -0
  275. package/dist/application/use-cases/resolve-progression.d.ts +9 -0
  276. package/dist/application/use-cases/resolve-progression.d.ts.map +1 -0
  277. package/dist/application/use-cases/resolve-progression.js +80 -0
  278. package/dist/application/use-cases/resolve-progression.js.map +1 -0
  279. package/dist/application/use-cases/travel.d.ts +7 -0
  280. package/dist/application/use-cases/travel.d.ts.map +1 -0
  281. package/dist/application/use-cases/travel.js +58 -0
  282. package/dist/application/use-cases/travel.js.map +1 -0
  283. package/dist/cli/command.d.ts +16 -0
  284. package/dist/cli/command.d.ts.map +1 -0
  285. package/dist/cli/command.js +73 -0
  286. package/dist/cli/command.js.map +1 -0
  287. package/dist/cli/install.d.ts +9 -0
  288. package/dist/cli/install.d.ts.map +1 -0
  289. package/dist/cli/install.js +23 -0
  290. package/dist/cli/install.js.map +1 -0
  291. package/dist/cli.d.ts +3 -0
  292. package/dist/cli.d.ts.map +1 -0
  293. package/dist/cli.js +124 -0
  294. package/dist/cli.js.map +1 -0
  295. package/dist/domain/choices/choices.d.ts +79 -0
  296. package/dist/domain/choices/choices.d.ts.map +1 -0
  297. package/dist/domain/choices/choices.js +54 -0
  298. package/dist/domain/choices/choices.js.map +1 -0
  299. package/dist/domain/content/catalog.d.ts +241 -0
  300. package/dist/domain/content/catalog.d.ts.map +1 -0
  301. package/dist/domain/content/catalog.js +286 -0
  302. package/dist/domain/content/catalog.js.map +1 -0
  303. package/dist/domain/content/catalogs/abilities-catalog.d.ts +8 -0
  304. package/dist/domain/content/catalogs/abilities-catalog.d.ts.map +1 -0
  305. package/dist/domain/content/catalogs/abilities-catalog.js +2054 -0
  306. package/dist/domain/content/catalogs/abilities-catalog.js.map +1 -0
  307. package/dist/domain/content/catalogs/alola-locations-catalog.d.ts +4949 -0
  308. package/dist/domain/content/catalogs/alola-locations-catalog.d.ts.map +1 -0
  309. package/dist/domain/content/catalogs/alola-locations-catalog.js +5994 -0
  310. package/dist/domain/content/catalogs/alola-locations-catalog.js.map +1 -0
  311. package/dist/domain/content/catalogs/encouter-methods.d.ts +2 -0
  312. package/dist/domain/content/catalogs/encouter-methods.d.ts.map +1 -0
  313. package/dist/domain/content/catalogs/encouter-methods.js +69 -0
  314. package/dist/domain/content/catalogs/encouter-methods.js.map +1 -0
  315. package/dist/domain/content/catalogs/galar-locations-catalog.d.ts +6707 -0
  316. package/dist/domain/content/catalogs/galar-locations-catalog.d.ts.map +1 -0
  317. package/dist/domain/content/catalogs/galar-locations-catalog.js +8089 -0
  318. package/dist/domain/content/catalogs/galar-locations-catalog.js.map +1 -0
  319. package/dist/domain/content/catalogs/hoenn-locations-catalog.d.ts +2922 -0
  320. package/dist/domain/content/catalogs/hoenn-locations-catalog.d.ts.map +1 -0
  321. package/dist/domain/content/catalogs/hoenn-locations-catalog.js +3541 -0
  322. package/dist/domain/content/catalogs/hoenn-locations-catalog.js.map +1 -0
  323. package/dist/domain/content/catalogs/johto-locations-catalog.d.ts +29 -0
  324. package/dist/domain/content/catalogs/johto-locations-catalog.d.ts.map +1 -0
  325. package/dist/domain/content/catalogs/johto-locations-catalog.js +4151 -0
  326. package/dist/domain/content/catalogs/johto-locations-catalog.js.map +1 -0
  327. package/dist/domain/content/catalogs/kalos-locations-catalog.d.ts +29 -0
  328. package/dist/domain/content/catalogs/kalos-locations-catalog.d.ts.map +1 -0
  329. package/dist/domain/content/catalogs/kalos-locations-catalog.js +4346 -0
  330. package/dist/domain/content/catalogs/kalos-locations-catalog.js.map +1 -0
  331. package/dist/domain/content/catalogs/kanto-locations-catalog.d.ts +2304 -0
  332. package/dist/domain/content/catalogs/kanto-locations-catalog.d.ts.map +1 -0
  333. package/dist/domain/content/catalogs/kanto-locations-catalog.js +2796 -0
  334. package/dist/domain/content/catalogs/kanto-locations-catalog.js.map +1 -0
  335. package/dist/domain/content/catalogs/moves-catalog.d.ts +62 -0
  336. package/dist/domain/content/catalogs/moves-catalog.d.ts.map +1 -0
  337. package/dist/domain/content/catalogs/moves-catalog.js +12883 -0
  338. package/dist/domain/content/catalogs/moves-catalog.js.map +1 -0
  339. package/dist/domain/content/catalogs/natures-catalog.d.ts +202 -0
  340. package/dist/domain/content/catalogs/natures-catalog.d.ts.map +1 -0
  341. package/dist/domain/content/catalogs/natures-catalog.js +228 -0
  342. package/dist/domain/content/catalogs/natures-catalog.js.map +1 -0
  343. package/dist/domain/content/catalogs/paldea-locations-catalog.d.ts +14756 -0
  344. package/dist/domain/content/catalogs/paldea-locations-catalog.d.ts.map +1 -0
  345. package/dist/domain/content/catalogs/paldea-locations-catalog.js +17762 -0
  346. package/dist/domain/content/catalogs/paldea-locations-catalog.js.map +1 -0
  347. package/dist/domain/content/catalogs/pokemon-catalog.d.ts +75 -0
  348. package/dist/domain/content/catalogs/pokemon-catalog.d.ts.map +1 -0
  349. package/dist/domain/content/catalogs/pokemon-catalog.js +100649 -0
  350. package/dist/domain/content/catalogs/pokemon-catalog.js.map +1 -0
  351. package/dist/domain/content/catalogs/regional-forms-catalog.d.ts +3033 -0
  352. package/dist/domain/content/catalogs/regional-forms-catalog.d.ts.map +1 -0
  353. package/dist/domain/content/catalogs/regional-forms-catalog.js +4358 -0
  354. package/dist/domain/content/catalogs/regional-forms-catalog.js.map +1 -0
  355. package/dist/domain/content/catalogs/regions-catalog.d.ts +8 -0
  356. package/dist/domain/content/catalogs/regions-catalog.d.ts.map +1 -0
  357. package/dist/domain/content/catalogs/regions-catalog.js +66 -0
  358. package/dist/domain/content/catalogs/regions-catalog.js.map +1 -0
  359. package/dist/domain/content/catalogs/sinnoh-locations-catalog.d.ts +5955 -0
  360. package/dist/domain/content/catalogs/sinnoh-locations-catalog.d.ts.map +1 -0
  361. package/dist/domain/content/catalogs/sinnoh-locations-catalog.js +7184 -0
  362. package/dist/domain/content/catalogs/sinnoh-locations-catalog.js.map +1 -0
  363. package/dist/domain/content/catalogs/stats-catalog.d.ts +38 -0
  364. package/dist/domain/content/catalogs/stats-catalog.d.ts.map +1 -0
  365. package/dist/domain/content/catalogs/stats-catalog.js +45 -0
  366. package/dist/domain/content/catalogs/stats-catalog.js.map +1 -0
  367. package/dist/domain/content/catalogs/types-catalog.d.ts +8 -0
  368. package/dist/domain/content/catalogs/types-catalog.d.ts.map +1 -0
  369. package/dist/domain/content/catalogs/types-catalog.js +129 -0
  370. package/dist/domain/content/catalogs/types-catalog.js.map +1 -0
  371. package/dist/domain/content/catalogs/unova-locations-catalog.d.ts +29 -0
  372. package/dist/domain/content/catalogs/unova-locations-catalog.d.ts.map +1 -0
  373. package/dist/domain/content/catalogs/unova-locations-catalog.js +6552 -0
  374. package/dist/domain/content/catalogs/unova-locations-catalog.js.map +1 -0
  375. package/dist/domain/content/encounter-catalog.d.ts +27 -0
  376. package/dist/domain/content/encounter-catalog.d.ts.map +1 -0
  377. package/dist/domain/content/encounter-catalog.js +75 -0
  378. package/dist/domain/content/encounter-catalog.js.map +1 -0
  379. package/dist/domain/content/names.d.ts +6 -0
  380. package/dist/domain/content/names.d.ts.map +1 -0
  381. package/dist/domain/content/names.js +7 -0
  382. package/dist/domain/content/names.js.map +1 -0
  383. package/dist/domain/content/schema.d.ts +153 -0
  384. package/dist/domain/content/schema.d.ts.map +1 -0
  385. package/dist/domain/content/schema.js +81 -0
  386. package/dist/domain/content/schema.js.map +1 -0
  387. package/dist/domain/content/sprites.d.ts +5 -0
  388. package/dist/domain/content/sprites.d.ts.map +1 -0
  389. package/dist/domain/content/sprites.js +22 -0
  390. package/dist/domain/content/sprites.js.map +1 -0
  391. package/dist/domain/encounters/encounter.d.ts +56 -0
  392. package/dist/domain/encounters/encounter.d.ts.map +1 -0
  393. package/dist/domain/encounters/encounter.js +74 -0
  394. package/dist/domain/encounters/encounter.js.map +1 -0
  395. package/dist/domain/exploration/exploration.d.ts +63 -0
  396. package/dist/domain/exploration/exploration.d.ts.map +1 -0
  397. package/dist/domain/exploration/exploration.js +48 -0
  398. package/dist/domain/exploration/exploration.js.map +1 -0
  399. package/dist/domain/party/party.d.ts +59 -0
  400. package/dist/domain/party/party.d.ts.map +1 -0
  401. package/dist/domain/party/party.js +19 -0
  402. package/dist/domain/party/party.js.map +1 -0
  403. package/dist/domain/pokemon/model.d.ts +43 -0
  404. package/dist/domain/pokemon/model.d.ts.map +1 -0
  405. package/dist/domain/pokemon/model.js +18 -0
  406. package/dist/domain/pokemon/model.js.map +1 -0
  407. package/dist/domain/pokemon/nature.d.ts +10 -0
  408. package/dist/domain/pokemon/nature.d.ts.map +1 -0
  409. package/dist/domain/pokemon/nature.js +23 -0
  410. package/dist/domain/pokemon/nature.js.map +1 -0
  411. package/dist/domain/pokemon/starter.d.ts +23 -0
  412. package/dist/domain/pokemon/starter.d.ts.map +1 -0
  413. package/dist/domain/pokemon/starter.js +59 -0
  414. package/dist/domain/pokemon/starter.js.map +1 -0
  415. package/dist/domain/pokemon/stats.d.ts +6 -0
  416. package/dist/domain/pokemon/stats.d.ts.map +1 -0
  417. package/dist/domain/pokemon/stats.js +35 -0
  418. package/dist/domain/pokemon/stats.js.map +1 -0
  419. package/dist/domain/pokemon/types.d.ts +37 -0
  420. package/dist/domain/pokemon/types.d.ts.map +1 -0
  421. package/dist/domain/pokemon/types.js +30 -0
  422. package/dist/domain/pokemon/types.js.map +1 -0
  423. package/dist/domain/progression/catalog.d.ts +34 -0
  424. package/dist/domain/progression/catalog.d.ts.map +1 -0
  425. package/dist/domain/progression/catalog.js +258 -0
  426. package/dist/domain/progression/catalog.js.map +1 -0
  427. package/dist/domain/progression/level-evolution.d.ts +13 -0
  428. package/dist/domain/progression/level-evolution.d.ts.map +1 -0
  429. package/dist/domain/progression/level-evolution.js +245 -0
  430. package/dist/domain/progression/level-evolution.js.map +1 -0
  431. package/dist/domain/progression/policies.d.ts +38 -0
  432. package/dist/domain/progression/policies.d.ts.map +1 -0
  433. package/dist/domain/progression/policies.js +78 -0
  434. package/dist/domain/progression/policies.js.map +1 -0
  435. package/dist/domain/shared/identifiers.d.ts +12 -0
  436. package/dist/domain/shared/identifiers.d.ts.map +1 -0
  437. package/dist/domain/shared/identifiers.js +7 -0
  438. package/dist/domain/shared/identifiers.js.map +1 -0
  439. package/dist/domain/shared/language.d.ts +7 -0
  440. package/dist/domain/shared/language.d.ts.map +1 -0
  441. package/dist/domain/shared/language.js +3 -0
  442. package/dist/domain/shared/language.js.map +1 -0
  443. package/dist/domain/trainer/trainer.d.ts +7 -0
  444. package/dist/domain/trainer/trainer.d.ts.map +1 -0
  445. package/dist/domain/trainer/trainer.js +2 -0
  446. package/dist/domain/trainer/trainer.js.map +1 -0
  447. package/dist/domain/usage/usage.d.ts +21 -0
  448. package/dist/domain/usage/usage.d.ts.map +1 -0
  449. package/dist/domain/usage/usage.js +23 -0
  450. package/dist/domain/usage/usage.js.map +1 -0
  451. package/dist/index.d.ts +2 -0
  452. package/dist/index.d.ts.map +1 -0
  453. package/dist/index.js +183817 -0
  454. package/dist/index.js.map +1 -0
  455. package/dist/package.json +10 -0
  456. package/dist/rpc.d.ts +2 -0
  457. package/dist/rpc.d.ts.map +1 -0
  458. package/dist/rpc.js +568 -0
  459. package/dist/rpc.js.map +1 -0
  460. package/dist/tui.d.ts +2 -0
  461. package/dist/tui.d.ts.map +1 -0
  462. package/dist/tui.js +184828 -0
  463. package/package.json +83 -4
@@ -0,0 +1,56 @@
1
+ const english = {
2
+ title: "Pokemon PC",
3
+ nature: "Nature",
4
+ ability: "Ability",
5
+ moves: "Moves",
6
+ stats: { name: "Stat", value: "Value" },
7
+ statNames: ["HP", "Attack", "Defense", "Sp. Atk", "Sp. Def", "Speed"],
8
+ empty: "No Pokemon in storage.",
9
+ minimum: "Select at least one Pokemon.",
10
+ maximum: "Your team can contain at most six Pokemon.",
11
+ saving: "Saving team...",
12
+ failed: "Team could not be saved. Please try again.",
13
+ navigation: "Up/Down: Inspect | Space: Toggle",
14
+ actions: "Enter: Save team | Esc: Cancel",
15
+ rename: "Rename",
16
+ release: "Free Pokemon",
17
+ renamePrompt: "New name (1–30 characters):",
18
+ releasePrompt: "Free this Pokemon permanently? This cannot be undone.",
19
+ editActions: "Enter: Confirm | Esc: Back",
20
+ invalidName: "Use 1–30 characters, without control characters.",
21
+ lastPartyPokemon: "You cannot free your last party Pokemon. Save a different team first.",
22
+ managing: "Saving Pokemon...",
23
+ managementFailed: "Pokemon could not be updated. Please try again.",
24
+ renamed: "Pokemon renamed.",
25
+ released: "Pokemon freed.",
26
+ };
27
+ const spanish = {
28
+ title: "PC Pokémon",
29
+ nature: "Naturaleza",
30
+ ability: "Habilidad",
31
+ moves: "Movimientos",
32
+ stats: { name: "Estad.", value: "Valor" },
33
+ statNames: ["PS", "Ataque", "Defensa", "At. Esp", "Def. Esp", "Velocidad"],
34
+ empty: "No hay Pokémon almacenados.",
35
+ minimum: "Selecciona al menos un Pokémon.",
36
+ maximum: "El equipo puede tener hasta seis Pokémon.",
37
+ saving: "Guardando equipo...",
38
+ failed: "No se pudo guardar el equipo. Inténtalo de nuevo.",
39
+ navigation: "Arriba/Abajo: Ver | Espacio: Elegir",
40
+ actions: "Enter: Guardar | Esc: Cancelar",
41
+ rename: "Renombrar",
42
+ release: "Liberar Pokémon",
43
+ renamePrompt: "Nuevo nombre (1–30 caracteres):",
44
+ releasePrompt: "¿Liberar este Pokémon para siempre? No se puede deshacer.",
45
+ editActions: "Enter: Confirmar | Esc: Volver",
46
+ invalidName: "Usa entre 1 y 30 caracteres, sin caracteres de control.",
47
+ lastPartyPokemon: "No puedes liberar tu último Pokémon del equipo. Guarda otro equipo primero.",
48
+ managing: "Guardando Pokémon...",
49
+ managementFailed: "No se pudo actualizar el Pokémon. Inténtalo de nuevo.",
50
+ renamed: "Pokémon renombrado.",
51
+ released: "Pokémon liberado.",
52
+ };
53
+ export function pcCopy(language) {
54
+ return language === "es" ? spanish : english;
55
+ }
56
+ //# sourceMappingURL=pc-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pc-copy.js","sourceRoot":"","sources":["../../../src/adapters/presentation/pc-copy.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG;IACd,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;IACrE,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,4CAA4C;IACpD,UAAU,EAAE,kCAAkC;IAC9C,OAAO,EAAE,gCAAgC;IACzC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,cAAc;IACvB,YAAY,EAAE,6BAA6B;IAC3C,aAAa,EAAE,uDAAuD;IACtE,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,kDAAkD;IAC/D,gBAAgB,EAAE,uEAAuE;IACzF,QAAQ,EAAE,mBAAmB;IAC7B,gBAAgB,EAAE,iDAAiD;IACnE,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,gBAAgB;CAC3B,CAAA;AAED,MAAM,OAAO,GAAmB;IAC9B,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;IACzC,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;IAC1E,KAAK,EAAE,6BAA6B;IACpC,OAAO,EAAE,iCAAiC;IAC1C,OAAO,EAAE,2CAA2C;IACpD,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,mDAAmD;IAC3D,UAAU,EAAE,qCAAqC;IACjD,OAAO,EAAE,gCAAgC;IACzC,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,iBAAiB;IAC1B,YAAY,EAAE,iCAAiC;IAC/C,aAAa,EAAE,2DAA2D;IAC1E,WAAW,EAAE,gCAAgC;IAC7C,WAAW,EAAE,yDAAyD;IACtE,gBAAgB,EAAE,6EAA6E;IAC/F,QAAQ,EAAE,sBAAsB;IAChC,gBAAgB,EAAE,uDAAuD;IACzE,OAAO,EAAE,qBAAqB;IAC9B,QAAQ,EAAE,mBAAmB;CAC9B,CAAA;AAED,MAAM,UAAU,MAAM,CAAC,QAAkB;IACvC,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { Language } from "../../domain/shared/language.js";
2
+ type EncounterCopy = {
3
+ readonly genderSymbol: string;
4
+ readonly kind: "ordinary" | "special";
5
+ readonly level: number;
6
+ readonly name: string;
7
+ readonly shiny: boolean;
8
+ };
9
+ export type UiCopy = {
10
+ readonly title: string;
11
+ readonly locationsCommand: string;
12
+ readonly pcCommand: string;
13
+ readonly dexCommand: string;
14
+ readonly exportCommand: string;
15
+ readonly commandGroup: string;
16
+ readonly locationsDialog: string;
17
+ readonly noLocationPokemon: string;
18
+ readonly dexDialog: string;
19
+ readonly selectParty: (count: number) => string;
20
+ readonly confirmParty: string;
21
+ readonly exportInactiveTitle: string;
22
+ readonly exportInactiveMessage: string;
23
+ readonly exportTitle: string;
24
+ readonly exportSuccessMessage: string;
25
+ readonly exportFailedTitle: string;
26
+ readonly clipboardUnavailable: string;
27
+ readonly chooseStarter: string;
28
+ readonly movePrompt: (pokemon: string) => string;
29
+ readonly moveDescription: string;
30
+ readonly travel: string;
31
+ readonly chooseEvolution: string;
32
+ readonly evolutionPrompt: (pokemon: string) => string;
33
+ readonly regionComplete: (region: string) => string;
34
+ readonly allRegionsComplete: string;
35
+ readonly chooseNextRegion: string;
36
+ readonly dismiss: string;
37
+ readonly location: string;
38
+ readonly nextLocation: string;
39
+ readonly unknown: string;
40
+ readonly encounter: (input: EncounterCopy) => string;
41
+ readonly catch: string;
42
+ readonly run: string;
43
+ readonly loadingSprite: string;
44
+ readonly spriteUnavailable: string;
45
+ readonly queueCounts: (decisions: number, encounters: number) => string;
46
+ };
47
+ export declare function uiCopy(language: Language): UiCopy;
48
+ export {};
49
+ //# sourceMappingURL=ui-copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-copy.d.ts","sourceRoot":"","sources":["../../../src/adapters/presentation/ui-copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE/D,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;IACrD,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;IACnD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAA;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;CACxE,CAAA;AAsFD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,81 @@
1
+ const english = {
2
+ title: "PokéCode",
3
+ locationsCommand: "Pokemon locations",
4
+ pcCommand: "Pokemon PC",
5
+ dexCommand: "Pokemon Dex",
6
+ exportCommand: "Pokemon export",
7
+ commandGroup: "PokéCode",
8
+ locationsDialog: "Pokemon locations",
9
+ noLocationPokemon: "No catalogued Pokémon appear here.",
10
+ dexDialog: "National Dex",
11
+ selectParty: (count) => `Select party (${count}/6)`,
12
+ confirmParty: "Confirm party",
13
+ exportInactiveTitle: "Pokemon export",
14
+ exportInactiveMessage: "Choose a starter before exporting a team.",
15
+ exportTitle: "Pokemon export",
16
+ exportSuccessMessage: "Team copied as a Gen 9 National Dex Showdown paste.",
17
+ exportFailedTitle: "Pokemon export failed",
18
+ clipboardUnavailable: "Clipboard access is unavailable in this environment.",
19
+ chooseStarter: "Choose a regional starter",
20
+ movePrompt: (pokemon) => `${pokemon} wants to learn\na new move`,
21
+ moveDescription: "Choose a move to forget:",
22
+ travel: "Travel",
23
+ chooseEvolution: "Choose an evolution",
24
+ evolutionPrompt: (pokemon) => `${pokemon} is evolving!`,
25
+ regionComplete: (region) => `You've completed ${region}!`,
26
+ allRegionsComplete: "You've completed all nine regions! Keep exploring your unlocked locations.",
27
+ chooseNextRegion: "Choose your next region.",
28
+ dismiss: "Dismiss",
29
+ location: "Location",
30
+ nextLocation: "Next location",
31
+ unknown: "Unknown",
32
+ encounter: ({ genderSymbol, level, name, shiny }) => `${shiny ? "✨ " : ""}Wild ${name} ${genderSymbol} Lv.${level}`,
33
+ catch: "Catch",
34
+ run: "Run",
35
+ loadingSprite: "Loading sprite...",
36
+ spriteUnavailable: "Sprite unavailable offline",
37
+ queueCounts: (decisions, encounters) => `Pending: ${decisions} decision${decisions === 1 ? "" : "s"} · ${encounters} encounter${encounters === 1 ? "" : "s"}`,
38
+ };
39
+ const spanish = {
40
+ ...english,
41
+ title: "PokéCode",
42
+ locationsCommand: "Ubicaciones Pokémon",
43
+ pcCommand: "PC Pokémon",
44
+ dexCommand: "Pokédex",
45
+ exportCommand: "Exportar Pokémon",
46
+ commandGroup: "PokéCode",
47
+ locationsDialog: "Ubicaciones Pokémon",
48
+ noLocationPokemon: "No hay Pokémon catalogados aquí.",
49
+ dexDialog: "Pokédex Nacional",
50
+ selectParty: (count) => `Selecciona el equipo (${count}/6)`,
51
+ confirmParty: "Confirmar equipo",
52
+ exportInactiveTitle: "Exportar Pokémon",
53
+ exportInactiveMessage: "Elige un inicial antes de exportar un equipo.",
54
+ exportTitle: "Exportar Pokémon",
55
+ exportSuccessMessage: "Equipo copiado como formato de Showdown Nacional Dex de Gen 9.",
56
+ exportFailedTitle: "Error al exportar Pokémon",
57
+ clipboardUnavailable: "El portapapeles no está disponible en este entorno.",
58
+ chooseStarter: "Elige un inicial regional",
59
+ movePrompt: (pokemon) => `${pokemon} quiere aprender\nun nuevo movimiento`,
60
+ moveDescription: "Elige un movimiento que olvidar:",
61
+ travel: "Viajar",
62
+ chooseEvolution: "Elige una evolución",
63
+ evolutionPrompt: (pokemon) => `¡${pokemon} está evolucionando!`,
64
+ regionComplete: (region) => `¡Has completado ${region}!`,
65
+ allRegionsComplete: "¡Has completado las nueve regiones! Sigue explorando las ubicaciones desbloqueadas.",
66
+ chooseNextRegion: "Elige tu próxima región.",
67
+ dismiss: "Cerrar",
68
+ location: "Ubicación",
69
+ nextLocation: "Siguiente ubicación",
70
+ unknown: "Desconocido",
71
+ encounter: ({ genderSymbol, level, name, shiny }) => `${shiny ? "✨ " : ""}${name} salvaje ${genderSymbol} Nv.${level}`,
72
+ catch: "Capturar",
73
+ run: "Huir",
74
+ loadingSprite: "Cargando sprite...",
75
+ spriteUnavailable: "Sprite no disponible sin conexión",
76
+ queueCounts: (decisions, encounters) => `Pendientes: ${decisions} ${decisions === 1 ? "decisión" : "decisiones"} · ${encounters} encuentro${encounters === 1 ? "" : "s"}`,
77
+ };
78
+ export function uiCopy(language) {
79
+ return language === "es" ? spanish : english;
80
+ }
81
+ //# sourceMappingURL=ui-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-copy.js","sourceRoot":"","sources":["../../../src/adapters/presentation/ui-copy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PokemonInstance } from "../../domain/pokemon/model.js";
2
+ export declare function formatShowdownTeam(party: readonly PokemonInstance[]): string;
3
+ //# sourceMappingURL=format-team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-team.d.ts","sourceRoot":"","sources":["../../../src/adapters/showdown/format-team.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAMpE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAE5E"}
@@ -0,0 +1,23 @@
1
+ import { localizedSpeciesName } from "../../domain/content/catalog.js";
2
+ import { regionalFormsCatalog } from "../../domain/content/catalogs/regional-forms-catalog.js";
3
+ const showdownNameBySpeciesId = new Map(regionalFormsCatalog.map((form) => [form.id, form.showdownName]));
4
+ export function formatShowdownTeam(party) {
5
+ return party.map(formatPokemon).join("\n\n");
6
+ }
7
+ function formatPokemon(pokemon) {
8
+ const ivs = pokemon.ivs;
9
+ const speciesName = localizedSpeciesName(pokemon.speciesId);
10
+ const showdownName = showdownNameBySpeciesId.get(pokemon.speciesId) ?? speciesName;
11
+ const name = pokemon.name === speciesName ? showdownName : `${pokemon.name} (${showdownName})`;
12
+ return [
13
+ `${name}${pokemon.shiny ? " (Shiny)" : ""}`,
14
+ `Ability: ${pokemon.ability}`,
15
+ `Level: ${pokemon.level}`,
16
+ `Shiny: ${pokemon.shiny ? "Yes" : "No"}`,
17
+ "EVs: 0 HP / 0 Atk / 0 Def / 0 SpA / 0 SpD / 0 Spe",
18
+ `IVs: ${ivs.hp} HP / ${ivs.attack} Atk / ${ivs.defense} Def / ${ivs.specialAttack} SpA / ${ivs.specialDefense} SpD / ${ivs.speed} Spe`,
19
+ `${pokemon.nature} Nature`,
20
+ ...pokemon.moves.map((move) => `- ${move.name}`),
21
+ ].join("\n");
22
+ }
23
+ //# sourceMappingURL=format-team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-team.js","sourceRoot":"","sources":["../../../src/adapters/showdown/format-team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yDAAyD,CAAA;AAG9F,MAAM,uBAAuB,GAAgC,IAAI,GAAG,CAClE,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CACjE,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAiC;IAClE,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,aAAa,CAAC,OAAwB;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;IACvB,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,WAAW,CAAA;IAClF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,YAAY,GAAG,CAAA;IAC9F,OAAO;QACL,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,YAAY,OAAO,CAAC,OAAO,EAAE;QAC7B,UAAU,OAAO,CAAC,KAAK,EAAE;QACzB,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACxC,mDAAmD;QACnD,QAAQ,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,GAAG,CAAC,aAAa,UAAU,GAAG,CAAC,cAAc,UAAU,GAAG,CAAC,KAAK,MAAM;QACtI,GAAG,OAAO,CAAC,MAAM,SAAS;QAC1B,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SpriteInput, SpriteResolution } from "./contracts.js";
2
+ export type { SpriteResolution } from "./contracts.js";
3
+ export type SpriteCache = {
4
+ resolve(input: SpriteInput): Promise<SpriteResolution>;
5
+ };
6
+ type SpriteCacheDependencies = {
7
+ readonly cacheDirectory: string;
8
+ readonly fetch: typeof fetch;
9
+ };
10
+ export declare function globalSpriteCacheDirectory(environment?: NodeJS.ProcessEnv): string;
11
+ export declare function createSpriteCache(dependencies: SpriteCacheDependencies): SpriteCache;
12
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/adapters/sprites/cache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACvD,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAA;CAC7B,CAAA;AAED,wBAAgB,0BAA0B,CAAC,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG/F;AAED,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,uBAAuB,GAAG,WAAW,CAiBpF"}
@@ -0,0 +1,43 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, renameSync, writeFileSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { dirname, join } from "node:path";
5
+ import { spriteSourcesForSpecies } from "../../domain/content/sprites.js";
6
+ export function globalSpriteCacheDirectory(environment = process.env) {
7
+ const { XDG_CACHE_HOME: cacheHome, HOME: home } = environment;
8
+ return join(cacheHome ?? join(home ?? homedir(), ".cache"), "pokecode", "sprites");
9
+ }
10
+ export function createSpriteCache(dependencies) {
11
+ const resolve = async (input) => {
12
+ for (const source of spriteSourcesForSpecies(input.speciesId, input.shiny, input.gender)) {
13
+ const destination = cachePathFor(source, dependencies.cacheDirectory);
14
+ if (existsSync(destination))
15
+ return { kind: "cached", source: destination };
16
+ const response = await downloadSprite(source, dependencies.fetch);
17
+ if (response === null)
18
+ continue;
19
+ mkdirSync(dirname(destination), { recursive: true });
20
+ const temporary = `${destination}.${crypto.randomUUID()}.tmp`;
21
+ writeFileSync(temporary, new Uint8Array(await response.arrayBuffer()));
22
+ renameSync(temporary, destination);
23
+ return { kind: "cached", source: destination };
24
+ }
25
+ return { kind: "placeholder" };
26
+ };
27
+ return { resolve };
28
+ }
29
+ function cachePathFor(source, cacheDirectory) {
30
+ return join(cacheDirectory, `${createHash("sha256").update(source).digest("hex")}.png`);
31
+ }
32
+ async function downloadSprite(source, request) {
33
+ try {
34
+ const response = await request(source, { signal: AbortSignal.timeout(5_000) });
35
+ return response.ok ? response : null;
36
+ }
37
+ catch (error) {
38
+ if (error instanceof TypeError || error instanceof DOMException)
39
+ return null;
40
+ throw error;
41
+ }
42
+ }
43
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/adapters/sprites/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAczE,MAAM,UAAU,0BAA0B,CAAC,cAAiC,OAAO,CAAC,GAAG;IACrF,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,WAAW,CAAA;IAC7D,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,YAAqC;IACrE,MAAM,OAAO,GAAG,KAAK,EAAE,KAAkB,EAA6B,EAAE;QACtE,KAAK,MAAM,MAAM,IAAI,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACzF,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,CAAA;YACrE,IAAI,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAC3E,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YACjE,IAAI,QAAQ,KAAK,IAAI;gBAAE,SAAQ;YAC/B,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAA;YAC7D,aAAa,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACtE,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;YAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;QAChD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAChC,CAAC,CAAA;IAED,OAAO,EAAE,OAAO,EAAE,CAAA;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,cAAsB;IAC1D,OAAO,IAAI,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AACzF,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,OAAqB;IACjE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC9E,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,YAAY,YAAY;YAAE,OAAO,IAAI,CAAA;QAC5E,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from "zod";
2
+ export declare const spriteInputSchema: z.ZodObject<{
3
+ speciesId: z.ZodString;
4
+ shiny: z.ZodBoolean;
5
+ gender: z.ZodEnum<{
6
+ male: "male";
7
+ female: "female";
8
+ genderless: "genderless";
9
+ }>;
10
+ }, z.core.$strip>;
11
+ export type SpriteInput = z.infer<typeof spriteInputSchema>;
12
+ export type SpriteResolver = (speciesId: string, shiny: boolean, gender: SpriteInput["gender"]) => Promise<SpriteResolution>;
13
+ export declare const spriteResolutionSchema: z.ZodUnion<readonly [z.ZodObject<{
14
+ kind: z.ZodLiteral<"cached">;
15
+ source: z.ZodString;
16
+ }, z.core.$strip>, z.ZodObject<{
17
+ kind: z.ZodLiteral<"placeholder">;
18
+ }, z.core.$strip>]>;
19
+ export type SpriteResolution = z.infer<typeof spriteResolutionSchema>;
20
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/adapters/sprites/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,iBAAiB;;;;;;;;iBAI5B,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,MAAM,MAAM,cAAc,GAAG,CAC3B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,KAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE9B,eAAO,MAAM,sBAAsB;;;;;mBAGjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { z } from "zod";
2
+ import { pokemonGenderSchema } from "../../domain/pokemon/types.js";
3
+ export const spriteInputSchema = z.object({
4
+ speciesId: z.string().min(1),
5
+ shiny: z.boolean(),
6
+ gender: pokemonGenderSchema,
7
+ });
8
+ export const spriteResolutionSchema = z.union([
9
+ z.object({ kind: z.literal("cached"), source: z.string().min(1) }),
10
+ z.object({ kind: z.literal("placeholder") }),
11
+ ]);
12
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/adapters/sprites/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,MAAM,EAAE,mBAAmB;CAC5B,CAAC,CAAA;AASF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { type GameState, type PokemonCollection, type PokemonDex } from "../../application/contracts/game.js";
2
+ import type { GameTransactionRunner } from "../../application/ports/game-transaction.js";
3
+ import type { StarterCreationCommand, StarterIdGenerator } from "../../application/ports/starter-selection-store.js";
4
+ export type GameRepository = {
5
+ readonly transactions: GameTransactionRunner;
6
+ readState(locationUnlockThreshold?: number): GameState;
7
+ createStarterAtomically(selection: StarterCreationCommand, createIds: StarterIdGenerator): boolean;
8
+ collection(): PokemonCollection;
9
+ dex(): PokemonDex;
10
+ close(): void;
11
+ };
12
+ export declare function globalDatabasePath(environment?: NodeJS.ProcessEnv): string;
13
+ export declare function openGameRepository(path?: string): GameRepository;
14
+ //# sourceMappingURL=game-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-repository.d.ts","sourceRoot":"","sources":["../../../src/adapters/sqlite/game-repository.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAChB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AACxF,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,oDAAoD,CAAA;AAa3D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAA;IAC5C,SAAS,CAAC,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtD,uBAAuB,CAAC,SAAS,EAAE,sBAAsB,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAA;IAClG,UAAU,IAAI,iBAAiB,CAAA;IAC/B,GAAG,IAAI,UAAU,CAAA;IACjB,KAAK,IAAI,IAAI,CAAA;CACd,CAAA;AAED,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKvF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAuB,GAAG,cAAc,CA+B9E"}
@@ -0,0 +1,48 @@
1
+ import { Database } from "bun:sqlite";
2
+ import { mkdirSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { gameplayConfigSchema, } from "../../application/contracts/game.js";
5
+ import { createSqliteGameTransactionRunner } from "./game-transaction.js";
6
+ import { initializeSqliteDatabase } from "./initialize-database.js";
7
+ import { createSqliteCollectionQueries, trainerIdForQueries } from "./queries/collection.js";
8
+ import { createSqliteGameStateQuery } from "./queries/game-state.js";
9
+ import { initializeGameSchema } from "./schema.js";
10
+ import { createSqliteStarterSelectionStore } from "./starter-selection-store.js";
11
+ const environmentKeys = {
12
+ dataHome: "XDG_DATA_HOME",
13
+ home: "HOME",
14
+ };
15
+ export function globalDatabasePath(environment = process.env) {
16
+ const dataHome = environment[environmentKeys.dataHome] ??
17
+ join(environment[environmentKeys.home] ?? "~", ".local", "share");
18
+ return join(dataHome, "pokecode", "game.sqlite");
19
+ }
20
+ export function openGameRepository(path = globalDatabasePath()) {
21
+ if (path !== ":memory:")
22
+ mkdirSync(dirname(path), { recursive: true });
23
+ const database = new Database(path, { create: true, strict: true });
24
+ initializeSqliteDatabase(database, () => {
25
+ database.run("PRAGMA foreign_keys = ON");
26
+ initializeGameSchema(database);
27
+ database.run("PRAGMA journal_mode = WAL");
28
+ });
29
+ const queryState = createSqliteGameStateQuery(database);
30
+ const readState = (locationUnlockThreshold = gameplayConfigSchema.parse({}).locationUnlockTokens) => queryState(locationUnlockThreshold);
31
+ const starterSelectionStore = createSqliteStarterSelectionStore(database, readState);
32
+ const collectionQueries = createSqliteCollectionQueries(database);
33
+ const collection = () => {
34
+ const trainerId = trainerIdForQueries(database);
35
+ return trainerId === null ? { pokemon: [] } : collectionQueries.list(trainerId);
36
+ };
37
+ const dex = () => collectionQueries.dex(trainerIdForQueries(database));
38
+ const transactions = createSqliteGameTransactionRunner(database);
39
+ return {
40
+ transactions,
41
+ readState,
42
+ createStarterAtomically: starterSelectionStore.createStarterAtomically,
43
+ collection,
44
+ dex,
45
+ close: () => database.close(true),
46
+ };
47
+ }
48
+ //# sourceMappingURL=game-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-repository.js","sourceRoot":"","sources":["../../../src/adapters/sqlite/game-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { GameTransactionRunner, GameTransactionStores } from "../../application/ports/game-transaction.js";
3
+ export declare function createSqliteGameTransactionStores(database: Database): GameTransactionStores;
4
+ export declare function createSqliteGameTransactionRunner(database: Database): GameTransactionRunner;
5
+ //# sourceMappingURL=game-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-transaction.d.ts","sourceRoot":"","sources":["../../../src/adapters/sqlite/game-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,6CAA6C,CAAA;AAQpD,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,GAAG,qBAAqB,CAoB3F;AAED,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,GAAG,qBAAqB,CAS3F"}
@@ -0,0 +1,35 @@
1
+ import { createChoiceTransactionStore } from "./transaction-stores/choices.js";
2
+ import { createEncounterTransactionStore } from "./transaction-stores/encounters.js";
3
+ import { createExplorationTransactionStore } from "./transaction-stores/exploration.js";
4
+ import { createPokemonTransactionStore } from "./transaction-stores/pokemon.js";
5
+ import { createReceiptStore } from "./transaction-stores/receipts.js";
6
+ import { createTrainerTransactionStore } from "./transaction-stores/trainers.js";
7
+ export function createSqliteGameTransactionStores(database) {
8
+ const choices = createChoiceTransactionStore(database);
9
+ const pokemon = createPokemonTransactionStore(database);
10
+ const exploration = createExplorationTransactionStore(database);
11
+ const encounters = createEncounterTransactionStore(database);
12
+ return {
13
+ receipts: createReceiptStore(database),
14
+ trainers: createTrainerTransactionStore(database),
15
+ choices: choices.usage,
16
+ pokemon: pokemon.usage,
17
+ exploration: exploration.usage,
18
+ encounters: encounters.usage,
19
+ commands: {
20
+ choices: choices.commands,
21
+ pokemon: pokemon.commands,
22
+ exploration: exploration.commands,
23
+ encounters: encounters.commands,
24
+ },
25
+ };
26
+ }
27
+ export function createSqliteGameTransactionRunner(database) {
28
+ return {
29
+ withTransaction: (work) => {
30
+ const transaction = database.transaction(() => work(createSqliteGameTransactionStores(database)));
31
+ return transaction.immediate();
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=game-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-transaction.js","sourceRoot":"","sources":["../../../src/adapters/sqlite/game-transaction.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAA;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAA;AACpF,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAA;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAA;AAEhF,MAAM,UAAU,iCAAiC,CAAC,QAAkB;IAClE,MAAM,OAAO,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAA;IACvD,MAAM,WAAW,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAA;IAC/D,MAAM,UAAU,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAA;IAE5D,OAAO;QACL,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QACtC,QAAQ,EAAE,6BAA6B,CAAC,QAAQ,CAAC;QACjD,OAAO,EAAE,OAAO,CAAC,KAAK;QACtB,OAAO,EAAE,OAAO,CAAC,KAAK;QACtB,WAAW,EAAE,WAAW,CAAC,KAAK;QAC9B,UAAU,EAAE,UAAU,CAAC,KAAK;QAC5B,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,OAAO,EAAE,OAAO,CAAC,QAAQ;YACzB,WAAW,EAAE,WAAW,CAAC,QAAQ;YACjC,UAAU,EAAE,UAAU,CAAC,QAAQ;SAChC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,QAAkB;IAClE,OAAO;QACL,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,CAC5C,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC,CAClD,CAAA;YACD,OAAO,WAAW,CAAC,SAAS,EAAE,CAAA;QAChC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ type ClosableDatabase = {
2
+ close(force?: boolean): void;
3
+ };
4
+ export declare function initializeSqliteDatabase(database: ClosableDatabase, initialize: () => void): void;
5
+ export {};
6
+ //# sourceMappingURL=initialize-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize-database.d.ts","sourceRoot":"","sources":["../../../src/adapters/sqlite/initialize-database.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,GAAG;IACtB,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAC7B,CAAA;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,IAAI,GAAG,IAAI,CAcjG"}
@@ -0,0 +1,15 @@
1
+ export function initializeSqliteDatabase(database, initialize) {
2
+ try {
3
+ initialize();
4
+ }
5
+ catch (initializationFailure) {
6
+ try {
7
+ database.close(true);
8
+ }
9
+ catch (closeFailure) {
10
+ throw new AggregateError([initializationFailure, closeFailure], "SQLite initialization and cleanup failed.");
11
+ }
12
+ throw initializationFailure;
13
+ }
14
+ }
15
+ //# sourceMappingURL=initialize-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize-database.js","sourceRoot":"","sources":["../../../src/adapters/sqlite/initialize-database.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,wBAAwB,CAAC,QAA0B,EAAE,UAAsB;IACzF,IAAI,CAAC;QACH,UAAU,EAAE,CAAA;IACd,CAAC;IAAC,OAAO,qBAAqB,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,cAAc,CACtB,CAAC,qBAAqB,EAAE,YAAY,CAAC,EACrC,2CAA2C,CAC5C,CAAA;QACH,CAAC;QACD,MAAM,qBAAqB,CAAA;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { PokemonInstance } from "../../domain/pokemon/model.js";
3
+ import type { Move } from "../../domain/pokemon/types.js";
4
+ export type PokemonRow = {
5
+ readonly id: string;
6
+ readonly speciesId: string;
7
+ readonly name: string;
8
+ readonly gender: string;
9
+ readonly level: number;
10
+ readonly experience: number;
11
+ readonly ability: string;
12
+ readonly nature: string;
13
+ readonly shiny: number;
14
+ readonly hpIv: number;
15
+ readonly attackIv: number;
16
+ readonly defenseIv: number;
17
+ readonly specialAttackIv: number;
18
+ readonly specialDefenseIv: number;
19
+ readonly speedIv: number;
20
+ };
21
+ export declare function toPokemon(row: PokemonRow, database: Database): PokemonInstance;
22
+ export declare function pokemonFromRow(row: PokemonRow, moves: readonly Move[]): PokemonInstance;
23
+ //# sourceMappingURL=pokemon-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon-mapper.d.ts","sourceRoot":"","sources":["../../../src/adapters/sqlite/pokemon-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAA;AAIzD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAQ9E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,eAAe,CA8BvF"}
@@ -0,0 +1,41 @@
1
+ import { pokemonGenderSchema } from "../../domain/pokemon/types.js";
2
+ import { pokemonIdSchema, speciesIdSchema } from "../../domain/shared/identifiers.js";
3
+ export function toPokemon(row, database) {
4
+ const moves = database
5
+ .query("SELECT position, move_id AS id, move_name AS name FROM pokemon_moves WHERE pokemon_id = ?1 ORDER BY position")
6
+ .all(row.id)
7
+ .map(({ id, name }) => ({ id, name }));
8
+ return pokemonFromRow(row, moves);
9
+ }
10
+ export function pokemonFromRow(row, moves) {
11
+ return {
12
+ id: pokemonIdSchema.parse(row.id),
13
+ speciesId: speciesIdSchema.parse(row.speciesId),
14
+ name: row.name,
15
+ gender: pokemonGenderSchema.parse(row.gender),
16
+ level: row.level,
17
+ experience: row.experience,
18
+ ability: row.ability,
19
+ nature: row.nature,
20
+ shiny: row.shiny === 1,
21
+ ivs: {
22
+ hp: row.hpIv,
23
+ attack: row.attackIv,
24
+ defense: row.defenseIv,
25
+ specialAttack: row.specialAttackIv,
26
+ specialDefense: row.specialDefenseIv,
27
+ speed: row.speedIv,
28
+ },
29
+ evs: {
30
+ hp: 0,
31
+ attack: 0,
32
+ defense: 0,
33
+ specialAttack: 0,
34
+ specialDefense: 0,
35
+ speed: 0,
36
+ },
37
+ // SQL rows can include `position`; the application model exposes only Move fields.
38
+ moves: moves.map(({ id, name }) => ({ id, name })),
39
+ };
40
+ }
41
+ //# sourceMappingURL=pokemon-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon-mapper.js","sourceRoot":"","sources":["../../../src/adapters/sqlite/pokemon-mapper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAoBrF,MAAM,UAAU,SAAS,CAAC,GAAe,EAAE,QAAkB;IAC3D,MAAM,KAAK,GAAG,QAAQ;SACnB,KAAK,CACJ,8GAA8G,CAC/G;SACA,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;SACX,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxC,OAAO,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAe,EAAE,KAAsB;IACpE,OAAO;QACL,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/C,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7C,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC;QACtB,GAAG,EAAE;YACH,EAAE,EAAE,GAAG,CAAC,IAAI;YACZ,MAAM,EAAE,GAAG,CAAC,QAAQ;YACpB,OAAO,EAAE,GAAG,CAAC,SAAS;YACtB,aAAa,EAAE,GAAG,CAAC,eAAe;YAClC,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB;QACD,GAAG,EAAE;YACH,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,KAAK,EAAE,CAAC;SACT;QACD,mFAAmF;QACnF,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KACnD,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Database } from "bun:sqlite";
2
+ import type { PokemonCollection, PokemonDex } from "../../../application/contracts/game.js";
3
+ export declare function createSqliteCollectionQueries(database: Database): {
4
+ list: (trainerId: string) => PokemonCollection;
5
+ dex: (trainerId: string | null) => PokemonDex;
6
+ };
7
+ export declare function trainerIdForQueries(database: Database): string | null;
8
+ //# sourceMappingURL=collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../../../src/adapters/sqlite/queries/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAA;AAK3F,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,QAAQ;sBACrC,MAAM,KAAG,iBAAiB;qBAuB3B,MAAM,GAAG,IAAI,KAAG,UAAU;EAwCnD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAIrE"}