codecrypto-cli 1.0.7 → 1.0.8

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 (255) hide show
  1. package/dist/commands/deploy.d.ts.map +1 -1
  2. package/dist/commands/deploy.js +239 -10
  3. package/dist/commands/deploy.js.map +1 -1
  4. package/docker-build/Dockerfile +14 -0
  5. package/docker-build/standalone/.next/BUILD_ID +1 -0
  6. package/docker-build/standalone/.next/app-path-routes-manifest.json +13 -0
  7. package/docker-build/standalone/.next/build-manifest.json +20 -0
  8. package/docker-build/standalone/.next/package.json +1 -0
  9. package/docker-build/standalone/.next/prerender-manifest.json +186 -0
  10. package/docker-build/standalone/.next/required-server-files.json +164 -0
  11. package/docker-build/standalone/.next/routes-manifest.json +110 -0
  12. package/docker-build/standalone/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  13. package/docker-build/standalone/.next/server/app/_global-error/page/build-manifest.json +17 -0
  14. package/docker-build/standalone/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  15. package/docker-build/standalone/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  16. package/docker-build/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  17. package/docker-build/standalone/.next/server/app/_global-error/page.js +11 -0
  18. package/docker-build/standalone/.next/server/app/_global-error/page.js.map +5 -0
  19. package/docker-build/standalone/.next/server/app/_global-error/page.js.nft.json +1 -0
  20. package/docker-build/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
  21. package/docker-build/standalone/.next/server/app/_global-error.html +2 -0
  22. package/docker-build/standalone/.next/server/app/_global-error.meta +15 -0
  23. package/docker-build/standalone/.next/server/app/_global-error.rsc +13 -0
  24. package/docker-build/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  25. package/docker-build/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +13 -0
  26. package/docker-build/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
  27. package/docker-build/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
  28. package/docker-build/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  29. package/docker-build/standalone/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  30. package/docker-build/standalone/.next/server/app/_not-found/page/build-manifest.json +17 -0
  31. package/docker-build/standalone/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  32. package/docker-build/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  33. package/docker-build/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  34. package/docker-build/standalone/.next/server/app/_not-found/page.js +14 -0
  35. package/docker-build/standalone/.next/server/app/_not-found/page.js.map +5 -0
  36. package/docker-build/standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
  37. package/docker-build/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
  38. package/docker-build/standalone/.next/server/app/_not-found.html +1 -0
  39. package/docker-build/standalone/.next/server/app/_not-found.meta +16 -0
  40. package/docker-build/standalone/.next/server/app/_not-found.rsc +14 -0
  41. package/docker-build/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -0
  42. package/docker-build/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  43. package/docker-build/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -0
  44. package/docker-build/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  45. package/docker-build/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
  46. package/docker-build/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  47. package/docker-build/standalone/.next/server/app/api/deploy/route/app-paths-manifest.json +3 -0
  48. package/docker-build/standalone/.next/server/app/api/deploy/route/build-manifest.json +11 -0
  49. package/docker-build/standalone/.next/server/app/api/deploy/route/server-reference-manifest.json +4 -0
  50. package/docker-build/standalone/.next/server/app/api/deploy/route.js +7 -0
  51. package/docker-build/standalone/.next/server/app/api/deploy/route.js.map +5 -0
  52. package/docker-build/standalone/.next/server/app/api/deploy/route.js.nft.json +1 -0
  53. package/docker-build/standalone/.next/server/app/api/deploy/route_client-reference-manifest.js +2 -0
  54. package/docker-build/standalone/.next/server/app/api/deploy-image/route/app-paths-manifest.json +3 -0
  55. package/docker-build/standalone/.next/server/app/api/deploy-image/route/build-manifest.json +11 -0
  56. package/docker-build/standalone/.next/server/app/api/deploy-image/route/server-reference-manifest.json +4 -0
  57. package/docker-build/standalone/.next/server/app/api/deploy-image/route.js +6 -0
  58. package/docker-build/standalone/.next/server/app/api/deploy-image/route.js.map +5 -0
  59. package/docker-build/standalone/.next/server/app/api/deploy-image/route.js.nft.json +1 -0
  60. package/docker-build/standalone/.next/server/app/api/deploy-image/route_client-reference-manifest.js +2 -0
  61. package/docker-build/standalone/.next/server/app/api/docker-images/route/app-paths-manifest.json +3 -0
  62. package/docker-build/standalone/.next/server/app/api/docker-images/route/build-manifest.json +11 -0
  63. package/docker-build/standalone/.next/server/app/api/docker-images/route/server-reference-manifest.json +4 -0
  64. package/docker-build/standalone/.next/server/app/api/docker-images/route.js +6 -0
  65. package/docker-build/standalone/.next/server/app/api/docker-images/route.js.map +5 -0
  66. package/docker-build/standalone/.next/server/app/api/docker-images/route.js.nft.json +1 -0
  67. package/docker-build/standalone/.next/server/app/api/docker-images/route_client-reference-manifest.js +2 -0
  68. package/docker-build/standalone/.next/server/app/api/faucet/route/app-paths-manifest.json +3 -0
  69. package/docker-build/standalone/.next/server/app/api/faucet/route/build-manifest.json +11 -0
  70. package/docker-build/standalone/.next/server/app/api/faucet/route/server-reference-manifest.json +4 -0
  71. package/docker-build/standalone/.next/server/app/api/faucet/route.js +9 -0
  72. package/docker-build/standalone/.next/server/app/api/faucet/route.js.map +5 -0
  73. package/docker-build/standalone/.next/server/app/api/faucet/route.js.nft.json +1 -0
  74. package/docker-build/standalone/.next/server/app/api/faucet/route_client-reference-manifest.js +2 -0
  75. package/docker-build/standalone/.next/server/app/deploy/page/app-paths-manifest.json +3 -0
  76. package/docker-build/standalone/.next/server/app/deploy/page/build-manifest.json +17 -0
  77. package/docker-build/standalone/.next/server/app/deploy/page/next-font-manifest.json +11 -0
  78. package/docker-build/standalone/.next/server/app/deploy/page/react-loadable-manifest.json +1 -0
  79. package/docker-build/standalone/.next/server/app/deploy/page/server-reference-manifest.json +4 -0
  80. package/docker-build/standalone/.next/server/app/deploy/page.js +16 -0
  81. package/docker-build/standalone/.next/server/app/deploy/page.js.map +5 -0
  82. package/docker-build/standalone/.next/server/app/deploy/page.js.nft.json +1 -0
  83. package/docker-build/standalone/.next/server/app/deploy/page_client-reference-manifest.js +2 -0
  84. package/docker-build/standalone/.next/server/app/deploy.html +1 -0
  85. package/docker-build/standalone/.next/server/app/deploy.meta +15 -0
  86. package/docker-build/standalone/.next/server/app/deploy.rsc +20 -0
  87. package/docker-build/standalone/.next/server/app/deploy.segments/_full.segment.rsc +20 -0
  88. package/docker-build/standalone/.next/server/app/deploy.segments/_head.segment.rsc +6 -0
  89. package/docker-build/standalone/.next/server/app/deploy.segments/_index.segment.rsc +5 -0
  90. package/docker-build/standalone/.next/server/app/deploy.segments/_tree.segment.rsc +4 -0
  91. package/docker-build/standalone/.next/server/app/deploy.segments/deploy/__PAGE__.segment.rsc +9 -0
  92. package/docker-build/standalone/.next/server/app/deploy.segments/deploy.segment.rsc +4 -0
  93. package/docker-build/standalone/.next/server/app/faucet/page/app-paths-manifest.json +3 -0
  94. package/docker-build/standalone/.next/server/app/faucet/page/build-manifest.json +17 -0
  95. package/docker-build/standalone/.next/server/app/faucet/page/next-font-manifest.json +11 -0
  96. package/docker-build/standalone/.next/server/app/faucet/page/react-loadable-manifest.json +1 -0
  97. package/docker-build/standalone/.next/server/app/faucet/page/server-reference-manifest.json +4 -0
  98. package/docker-build/standalone/.next/server/app/faucet/page.js +16 -0
  99. package/docker-build/standalone/.next/server/app/faucet/page.js.map +5 -0
  100. package/docker-build/standalone/.next/server/app/faucet/page.js.nft.json +1 -0
  101. package/docker-build/standalone/.next/server/app/faucet/page_client-reference-manifest.js +2 -0
  102. package/docker-build/standalone/.next/server/app/faucet.html +1 -0
  103. package/docker-build/standalone/.next/server/app/faucet.meta +15 -0
  104. package/docker-build/standalone/.next/server/app/faucet.rsc +20 -0
  105. package/docker-build/standalone/.next/server/app/faucet.segments/_full.segment.rsc +20 -0
  106. package/docker-build/standalone/.next/server/app/faucet.segments/_head.segment.rsc +6 -0
  107. package/docker-build/standalone/.next/server/app/faucet.segments/_index.segment.rsc +5 -0
  108. package/docker-build/standalone/.next/server/app/faucet.segments/_tree.segment.rsc +4 -0
  109. package/docker-build/standalone/.next/server/app/faucet.segments/faucet/__PAGE__.segment.rsc +9 -0
  110. package/docker-build/standalone/.next/server/app/faucet.segments/faucet.segment.rsc +4 -0
  111. package/docker-build/standalone/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  112. package/docker-build/standalone/.next/server/app/favicon.ico/route/build-manifest.json +11 -0
  113. package/docker-build/standalone/.next/server/app/favicon.ico/route.js +7 -0
  114. package/docker-build/standalone/.next/server/app/favicon.ico/route.js.map +5 -0
  115. package/docker-build/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  116. package/docker-build/standalone/.next/server/app/favicon.ico.body +0 -0
  117. package/docker-build/standalone/.next/server/app/favicon.ico.meta +1 -0
  118. package/docker-build/standalone/.next/server/app/images/page/app-paths-manifest.json +3 -0
  119. package/docker-build/standalone/.next/server/app/images/page/build-manifest.json +17 -0
  120. package/docker-build/standalone/.next/server/app/images/page/next-font-manifest.json +11 -0
  121. package/docker-build/standalone/.next/server/app/images/page/react-loadable-manifest.json +1 -0
  122. package/docker-build/standalone/.next/server/app/images/page/server-reference-manifest.json +4 -0
  123. package/docker-build/standalone/.next/server/app/images/page.js +16 -0
  124. package/docker-build/standalone/.next/server/app/images/page.js.map +5 -0
  125. package/docker-build/standalone/.next/server/app/images/page.js.nft.json +1 -0
  126. package/docker-build/standalone/.next/server/app/images/page_client-reference-manifest.js +2 -0
  127. package/docker-build/standalone/.next/server/app/images.html +1 -0
  128. package/docker-build/standalone/.next/server/app/images.meta +15 -0
  129. package/docker-build/standalone/.next/server/app/images.rsc +20 -0
  130. package/docker-build/standalone/.next/server/app/images.segments/_full.segment.rsc +20 -0
  131. package/docker-build/standalone/.next/server/app/images.segments/_head.segment.rsc +6 -0
  132. package/docker-build/standalone/.next/server/app/images.segments/_index.segment.rsc +5 -0
  133. package/docker-build/standalone/.next/server/app/images.segments/_tree.segment.rsc +4 -0
  134. package/docker-build/standalone/.next/server/app/images.segments/images/__PAGE__.segment.rsc +9 -0
  135. package/docker-build/standalone/.next/server/app/images.segments/images.segment.rsc +4 -0
  136. package/docker-build/standalone/.next/server/app/index.html +1 -0
  137. package/docker-build/standalone/.next/server/app/index.meta +14 -0
  138. package/docker-build/standalone/.next/server/app/index.rsc +25 -0
  139. package/docker-build/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +8 -0
  140. package/docker-build/standalone/.next/server/app/index.segments/_full.segment.rsc +25 -0
  141. package/docker-build/standalone/.next/server/app/index.segments/_head.segment.rsc +6 -0
  142. package/docker-build/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -0
  143. package/docker-build/standalone/.next/server/app/index.segments/_tree.segment.rsc +4 -0
  144. package/docker-build/standalone/.next/server/app/page/app-paths-manifest.json +3 -0
  145. package/docker-build/standalone/.next/server/app/page/build-manifest.json +17 -0
  146. package/docker-build/standalone/.next/server/app/page/next-font-manifest.json +11 -0
  147. package/docker-build/standalone/.next/server/app/page/react-loadable-manifest.json +1 -0
  148. package/docker-build/standalone/.next/server/app/page/server-reference-manifest.json +4 -0
  149. package/docker-build/standalone/.next/server/app/page.js +16 -0
  150. package/docker-build/standalone/.next/server/app/page.js.map +5 -0
  151. package/docker-build/standalone/.next/server/app/page.js.nft.json +1 -0
  152. package/docker-build/standalone/.next/server/app/page_client-reference-manifest.js +2 -0
  153. package/docker-build/standalone/.next/server/app-paths-manifest.json +13 -0
  154. package/docker-build/standalone/.next/server/chunks/10072_infra_server-cc__next-internal_server_app_api_deploy_route_actions_6cdc6432.js +3 -0
  155. package/docker-build/standalone/.next/server/chunks/10072_infra_server-cc__next-internal_server_app_api_faucet_route_actions_f54ec975.js +3 -0
  156. package/docker-build/standalone/.next/server/chunks/10072_infra_server-cc__next-internal_server_app_favicon_ico_route_actions_d73715d1.js +3 -0
  157. package/docker-build/standalone/.next/server/chunks/66d90_server-cc__next-internal_server_app_api_deploy-image_route_actions_b340a7f4.js +3 -0
  158. package/docker-build/standalone/.next/server/chunks/66d90_server-cc__next-internal_server_app_api_docker-images_route_actions_4adcb030.js +3 -0
  159. package/docker-build/standalone/.next/server/chunks/6f6aa_4d460f49._.js +30 -0
  160. package/docker-build/standalone/.next/server/chunks/6f6aa_@noble_curves_esm_secp256k1_c7f9b58b.js +3 -0
  161. package/docker-build/standalone/.next/server/chunks/6f6aa_next_dist_esm_build_templates_app-route_1a9ee783.js +6 -0
  162. package/docker-build/standalone/.next/server/chunks/6f6aa_next_dist_esm_build_templates_app-route_8d132e6a.js +3 -0
  163. package/docker-build/standalone/.next/server/chunks/6f6aa_viem__esm_utils_ccip_bb7bf310.js +3 -0
  164. package/docker-build/standalone/.next/server/chunks/[externals]_next_dist_b01ab6e1._.js +3 -0
  165. package/docker-build/standalone/.next/server/chunks/[root-of-the-server]__0928cca7._.js +3 -0
  166. package/docker-build/standalone/.next/server/chunks/[root-of-the-server]__0c6b3bd9._.js +3 -0
  167. package/docker-build/standalone/.next/server/chunks/[root-of-the-server]__1846bb23._.js +3 -0
  168. package/docker-build/standalone/.next/server/chunks/[root-of-the-server]__8f8a2ff9._.js +3 -0
  169. package/docker-build/standalone/.next/server/chunks/[root-of-the-server]__90ea784b._.js +21 -0
  170. package/docker-build/standalone/.next/server/chunks/[root-of-the-server]__f6379956._.js +39 -0
  171. package/docker-build/standalone/.next/server/chunks/[turbopack]_runtime.js +795 -0
  172. package/docker-build/standalone/.next/server/chunks/ssr/10072_infra_server-cc__next-internal_server_app__global-error_page_actions_bdbde336.js +3 -0
  173. package/docker-build/standalone/.next/server/chunks/ssr/10072_infra_server-cc__next-internal_server_app__not-found_page_actions_41269af3.js +3 -0
  174. package/docker-build/standalone/.next/server/chunks/ssr/10072_infra_server-cc__next-internal_server_app_deploy_page_actions_3988cfb8.js +3 -0
  175. package/docker-build/standalone/.next/server/chunks/ssr/10072_infra_server-cc__next-internal_server_app_faucet_page_actions_e5e8dd8a.js +3 -0
  176. package/docker-build/standalone/.next/server/chunks/ssr/10072_infra_server-cc__next-internal_server_app_images_page_actions_bcdfd86b.js +3 -0
  177. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_293382c4._.js +4 -0
  178. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_55723634._.js +4 -0
  179. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_821445df._.js +3 -0
  180. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_8545ebc7._.js +4 -0
  181. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_acad38a1._.js +6 -0
  182. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_app_b373a582._.js +3 -0
  183. package/docker-build/standalone/.next/server/chunks/ssr/2025_cc_CODECRYPTO_infra_server-cc_d03dcb7a._.js +4 -0
  184. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_7c51ed4c._.js +3 -0
  185. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_05cd73d5._.js +3 -0
  186. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_3e60adb5._.js +6 -0
  187. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_5002976b._.js +4 -0
  188. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_client_components_a432b2d3._.js +3 -0
  189. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_client_components_builtin_forbidden_b4e63d3a.js +3 -0
  190. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_client_components_builtin_global-error_edcabd66.js +3 -0
  191. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_client_components_builtin_unauthorized_f08488ad.js +3 -0
  192. package/docker-build/standalone/.next/server/chunks/ssr/6f6aa_next_dist_esm_build_templates_app-page_c7a8656a.js +4 -0
  193. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__0e0d983d._.js +3 -0
  194. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__0f25bf3b._.js +3 -0
  195. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__10dae68a._.js +3 -0
  196. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__1ebd727b._.js +3 -0
  197. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__30996048._.js +3 -0
  198. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__587c95dd._.js +3 -0
  199. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__5ecc39a2._.js +3 -0
  200. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__6382fff8._.js +3 -0
  201. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__8ed1042a._.js +3 -0
  202. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__91644c56._.js +3 -0
  203. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__a2833bcd._.js +10 -0
  204. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__acf31a1c._.js +3 -0
  205. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__ae009f46._.js +3 -0
  206. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__daca67ae._.js +3 -0
  207. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2372d3f._.js +4 -0
  208. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__f2ed834a._.js +3 -0
  209. package/docker-build/standalone/.next/server/chunks/ssr/[root-of-the-server]__ff0dddf3._.js +3 -0
  210. package/docker-build/standalone/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
  211. package/docker-build/standalone/.next/server/chunks/ssr/e6d68_cc_CODECRYPTO_infra_server-cc__next-internal_server_app_page_actions_12ae3ff1.js +3 -0
  212. package/docker-build/standalone/.next/server/functions-config-manifest.json +4 -0
  213. package/docker-build/standalone/.next/server/middleware-build-manifest.js +21 -0
  214. package/docker-build/standalone/.next/server/middleware-manifest.json +6 -0
  215. package/docker-build/standalone/.next/server/next-font-manifest.js +1 -0
  216. package/docker-build/standalone/.next/server/next-font-manifest.json +27 -0
  217. package/docker-build/standalone/.next/server/pages/404.html +1 -0
  218. package/docker-build/standalone/.next/server/pages/500.html +2 -0
  219. package/docker-build/standalone/.next/server/pages-manifest.json +4 -0
  220. package/docker-build/standalone/.next/server/server-reference-manifest.js +1 -0
  221. package/docker-build/standalone/.next/server/server-reference-manifest.json +5 -0
  222. package/docker-build/standalone/.next/static/ZrQJjBH5oznRmy8xN4NKX/_buildManifest.js +11 -0
  223. package/docker-build/standalone/.next/static/ZrQJjBH5oznRmy8xN4NKX/_clientMiddlewareManifest.json +1 -0
  224. package/docker-build/standalone/.next/static/ZrQJjBH5oznRmy8xN4NKX/_ssgManifest.js +1 -0
  225. package/docker-build/standalone/.next/static/chunks/0c03a563297c48f4.js +1 -0
  226. package/docker-build/standalone/.next/static/chunks/3142ddfdb448fd24.js +1 -0
  227. package/docker-build/standalone/.next/static/chunks/35b2ae0057b43b20.js +1 -0
  228. package/docker-build/standalone/.next/static/chunks/5a1aef391fd12242.js +1 -0
  229. package/docker-build/standalone/.next/static/chunks/66401b6fc62891de.js +4 -0
  230. package/docker-build/standalone/.next/static/chunks/782a67ca986fb1bd.js +1 -0
  231. package/docker-build/standalone/.next/static/chunks/8b27abf6cb0fca62.js +2 -0
  232. package/docker-build/standalone/.next/static/chunks/8dba80aa68873762.css +3 -0
  233. package/docker-build/standalone/.next/static/chunks/902797f337bf356c.js +1 -0
  234. package/docker-build/standalone/.next/static/chunks/9706b17cfd50df01.js +1 -0
  235. package/docker-build/standalone/.next/static/chunks/a6dad97d9634a72d.js +1 -0
  236. package/docker-build/standalone/.next/static/chunks/a6dad97d9634a72d.js.map +1 -0
  237. package/docker-build/standalone/.next/static/chunks/df3b8eb181fde7c2.js +1 -0
  238. package/docker-build/standalone/.next/static/chunks/turbopack-237950634fd3a365.js +4 -0
  239. package/docker-build/standalone/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  240. package/docker-build/standalone/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  241. package/docker-build/standalone/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  242. package/docker-build/standalone/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  243. package/docker-build/standalone/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  244. package/docker-build/standalone/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  245. package/docker-build/standalone/.next/static/media/favicon.0b3bf435.ico +0 -0
  246. package/docker-build/standalone/package.json +35 -0
  247. package/docker-build/standalone/public/deploy-test.html +276 -0
  248. package/docker-build/standalone/public/file.svg +1 -0
  249. package/docker-build/standalone/public/globe.svg +1 -0
  250. package/docker-build/standalone/public/next.svg +1 -0
  251. package/docker-build/standalone/public/vercel.svg +1 -0
  252. package/docker-build/standalone/public/window.svg +1 -0
  253. package/docker-build/standalone/server.js +38 -0
  254. package/package.json +1 -1
  255. package/src/commands/deploy.ts +264 -11
@@ -4,13 +4,19 @@ import ora from 'ora';
4
4
  import { execSync } from 'child_process';
5
5
  import * as fs from 'fs';
6
6
  import * as path from 'path';
7
+ import * as os from 'os';
7
8
 
8
9
  export const deployCommand = new Command('deploy')
9
10
  .description('Build and deploy Docker image for Next.js standalone application')
10
11
  .argument('<project-path>', 'Path to the Next.js project directory')
11
12
  .argument('[dest-folder]', 'Destination folder for Docker build context', './docker-build')
12
13
  .option('--skip-build', 'Skip npm run build (assume already built)', false)
13
- .option('--no-push', 'Build image but do not push to registry', false)
14
+ .option('--no-push', 'Build image but do not push to registry')
15
+ .option('--deploy', 'Deploy to remote server after building', false)
16
+ .option('--service-name <name>', 'Service name for remote deployment')
17
+ .option('--env-file <path>', 'Path to .env file with environment variables')
18
+ .option('--port <port>', 'Application port', '3000')
19
+ .option('--domain-base <domain>', 'Domain base for deployment', 'proyectos.codecrypto.academy')
14
20
  .action(async (projectPath: string, destFolder: string, options) => {
15
21
  console.log(chalk.blue('\n🐳 CodeCrypto Docker Deployment\n'));
16
22
 
@@ -37,12 +43,18 @@ export const deployCommand = new Command('deploy')
37
43
  const imageName = `${imageBase}:${version}`;
38
44
  const imageLatest = `${imageBase}:latest`;
39
45
 
40
- console.log(chalk.gray('Deployment Configuration:'));
46
+ // Determinar si hacer push
47
+ // En Commander.js, cuando defines .option('--no-push', ...) sin tercer parámetro:
48
+ // - Por defecto (sin flags): options.push = true (hace push)
49
+ // - Con --no-push: options.push = false (no hace push)
50
+ const shouldPush = options.push !== false;
51
+
52
+ console.log(chalk.gray('Deployment Configuration:'));
41
53
  console.log(chalk.white(` Project: ${chalk.green(projectName)}`));
42
54
  console.log(chalk.white(` Version: ${chalk.green(version)}`));
43
55
  console.log(chalk.white(` Image: ${chalk.green(imageName)}`));
44
56
  console.log(chalk.white(` Latest: ${chalk.green(imageLatest)}`));
45
- console.log(chalk.white(` Push to Registry: ${options.push ? chalk.green('Yes') : chalk.yellow('No')}\n`));
57
+ console.log(chalk.white(` Push to Registry: ${shouldPush ? chalk.green('Yes') : chalk.yellow('No')}\n`));
46
58
 
47
59
  // Paso 1: Build del proyecto si es necesario
48
60
  if (!options.skipBuild) {
@@ -112,14 +124,62 @@ export const deployCommand = new Command('deploy')
112
124
 
113
125
  copySpinner.succeed('Files copied successfully');
114
126
 
115
- // Paso 3: Crear Dockerfile
127
+ // Leer y procesar archivo .env si existe
128
+ let nextPublicEnvVars: string[] = [];
129
+ let runtimeEnvVars: string[] = [];
130
+ const envFilePath = options.envFile
131
+ ? path.resolve(options.envFile)
132
+ : path.join(resolvedProjectPath, '.env');
133
+
134
+ if (fs.existsSync(envFilePath)) {
135
+ const envContent = fs.readFileSync(envFilePath, 'utf-8');
136
+ const envLines = envContent.split('\n');
137
+
138
+ for (const line of envLines) {
139
+ const trimmed = line.trim();
140
+ // Ignorar comentarios y líneas vacías
141
+ if (!trimmed || trimmed.startsWith('#')) continue;
142
+
143
+ const equalIndex = trimmed.indexOf('=');
144
+ if (equalIndex === -1) continue;
145
+
146
+ const key = trimmed.substring(0, equalIndex).trim();
147
+ const value = trimmed.substring(equalIndex + 1).trim();
148
+
149
+ if (key.startsWith('NEXT_PUBLIC_')) {
150
+ nextPublicEnvVars.push(`${key}=${value}`);
151
+ } else {
152
+ runtimeEnvVars.push(`${key}=${value}`);
153
+ }
154
+ }
155
+ }
156
+
157
+ // Paso 3: Crear Dockerfile con variables NEXT_PUBLIC_*
116
158
  const dockerfilePath = path.join(resolvedDestFolder, 'Dockerfile');
159
+
160
+ // Construir ARG y ENV para NEXT_PUBLIC_*
161
+ const buildArgs = nextPublicEnvVars.map(env => {
162
+ const [key, ...valueParts] = env.split('=');
163
+ const value = valueParts.join('=');
164
+ return `ARG ${key}=${value}`;
165
+ }).join('\n');
166
+
167
+ const buildEnvs = nextPublicEnvVars.map(env => {
168
+ const [key, ...valueParts] = env.split('=');
169
+ const value = valueParts.join('=');
170
+ return `ENV ${key}=${value}`;
171
+ }).join('\n');
172
+
117
173
  const dockerfileContent = `FROM node:20-alpine
118
174
  WORKDIR /app
119
175
 
120
176
  ENV NODE_ENV=production
121
177
  ENV PORT=3000
122
178
 
179
+ ${buildArgs}
180
+
181
+ ${buildEnvs}
182
+
123
183
  # Copiamos el contenido de standalone
124
184
  COPY standalone/ .
125
185
 
@@ -148,10 +208,32 @@ CMD ["node", "server.js"]
148
208
  process.exit(1);
149
209
  }
150
210
 
211
+ // Verificar autenticación de Docker si se va a hacer push
212
+ if (shouldPush) {
213
+ const authSpinner = ora('Verifying Docker authentication...').start();
214
+ try {
215
+ // Verificar si hay credenciales de Docker configuradas
216
+ execSync('docker info', { stdio: 'pipe' });
217
+ // Intentar verificar login en Docker Hub
218
+ try {
219
+ execSync('docker pull hello-world:latest', { stdio: 'pipe' });
220
+ authSpinner.succeed('Docker authentication verified');
221
+ } catch {
222
+ // Si no puede hacer pull, verificar al menos que docker está funcionando
223
+ authSpinner.warn('Could not verify Docker Hub authentication. Make sure you are logged in with: docker login');
224
+ }
225
+ } catch (error) {
226
+ authSpinner.fail('Docker authentication failed');
227
+ console.error(chalk.yellow('\n⚠️ Warning: Docker authentication may be required for push'));
228
+ console.error(chalk.yellow(' Run: docker login'));
229
+ console.error(chalk.yellow(' Or use --no-push to skip pushing to registry\n'));
230
+ }
231
+ }
232
+
151
233
  // Paso 5: Construir y hacer push
152
234
  const buildDockerSpinner = ora('Building Docker image for multiple platforms...').start();
153
235
  try {
154
- const tags = options.push
236
+ const tags = shouldPush
155
237
  ? [`--tag ${imageName}`, `--tag ${imageLatest}`, '--push']
156
238
  : [`--tag ${imageName}`, `--tag ${imageLatest}`, '--load'];
157
239
 
@@ -175,25 +257,173 @@ CMD ["node", "server.js"]
175
257
  console.log(chalk.white(` Tags:`));
176
258
  console.log(chalk.white(` - ${chalk.cyan(imageName)}`));
177
259
  console.log(chalk.white(` - ${chalk.cyan(imageLatest)}`));
178
- if (options.push) {
260
+ if (shouldPush) {
179
261
  console.log(chalk.white(` Registry: ${chalk.cyan('Docker Hub')}`));
180
262
  console.log(chalk.white(` URL: ${chalk.cyan(`https://hub.docker.com/r/${imageBase}`)}`));
181
263
  }
182
264
  } catch (error) {
183
265
  buildDockerSpinner.fail('Docker build failed');
184
266
  console.error(chalk.red('\n❌ Error building Docker image'));
185
- if (options.push) {
267
+ if (shouldPush) {
186
268
  console.error(chalk.yellow('Make sure you are authenticated: docker login'));
187
269
  }
188
270
  process.exit(1);
189
271
  }
190
272
 
273
+ // Paso 6: Desplegar en servidor remoto si se solicita
274
+ if (options.deploy) {
275
+ await deployToRemoteServer({
276
+ imageName: shouldPush ? imageName : imageLatest,
277
+ serviceName: options.serviceName || projectName,
278
+ domainBase: options.domainBase,
279
+ port: options.port,
280
+ envVars: runtimeEnvVars,
281
+ envFilePath: runtimeEnvVars.length > 0 ? envFilePath : undefined,
282
+ });
283
+ }
284
+
191
285
  } catch (error: any) {
192
286
  console.error(chalk.red(`\n❌ Error: ${error.message}`));
193
287
  process.exit(1);
194
288
  }
195
289
  });
196
290
 
291
+ // Función para desplegar en servidor remoto
292
+ async function deployToRemoteServer(config: {
293
+ imageName: string;
294
+ serviceName: string;
295
+ domainBase: string;
296
+ port: string;
297
+ envVars: string[];
298
+ envFilePath?: string;
299
+ }) {
300
+ const deploySpinner = ora('Configuring remote Docker connection...').start();
301
+
302
+ try {
303
+ // Configurar variables de entorno para Docker remoto
304
+ const dockerCertPath = path.join(os.homedir(), '.codecrypto', 'docker-client');
305
+
306
+ if (!fs.existsSync(dockerCertPath)) {
307
+ deploySpinner.fail('Docker certificates not found');
308
+ console.error(chalk.red(`❌ Error: Docker certificates not found at ${dockerCertPath}`));
309
+ console.error(chalk.yellow(' Make sure you have the certificates in ~/.codecrypto/docker-client'));
310
+ process.exit(1);
311
+ }
312
+
313
+ // Verificar que existen los certificados necesarios
314
+ const requiredCerts = ['ca.pem', 'cert.pem', 'key.pem'];
315
+ for (const cert of requiredCerts) {
316
+ const certPath = path.join(dockerCertPath, cert);
317
+ if (!fs.existsSync(certPath)) {
318
+ deploySpinner.fail(`Certificate ${cert} not found`);
319
+ console.error(chalk.red(`❌ Error: Certificate ${cert} not found at ${certPath}`));
320
+ process.exit(1);
321
+ }
322
+ }
323
+
324
+ // Configurar variables de entorno para Docker
325
+ const dockerEnv: Record<string, string> = {
326
+ ...process.env,
327
+ DOCKER_HOST: 'https://server.codecrypto.academy:2376',
328
+ DOCKER_TLS_VERIFY: '1',
329
+ DOCKER_CERT_PATH: dockerCertPath,
330
+ };
331
+
332
+ deploySpinner.succeed('Docker connection configured');
333
+
334
+ // Construir nombre completo del dominio
335
+ const fullDomain = `${config.serviceName}.${config.domainBase}`;
336
+ const serviceName = config.serviceName.toLowerCase().replace(/[^a-z0-9-]/g, '-');
337
+
338
+ // Detener y eliminar contenedor existente si existe
339
+ const stopSpinner = ora('Checking for existing container...').start();
340
+ try {
341
+ execSync(`docker ps -a --filter name=^${fullDomain}$ --format "{{.Names}}"`, {
342
+ env: dockerEnv,
343
+ stdio: 'pipe',
344
+ encoding: 'utf-8',
345
+ });
346
+
347
+ // Si existe, detenerlo y eliminarlo
348
+ try {
349
+ execSync(`docker stop ${fullDomain}`, { env: dockerEnv, stdio: 'pipe' });
350
+ } catch {
351
+ // Container might not be running
352
+ }
353
+
354
+ try {
355
+ execSync(`docker rm ${fullDomain}`, { env: dockerEnv, stdio: 'pipe' });
356
+ stopSpinner.succeed('Existing container removed');
357
+ } catch {
358
+ stopSpinner.warn('No existing container found');
359
+ }
360
+ } catch (error) {
361
+ stopSpinner.warn('Could not check for existing container');
362
+ }
363
+
364
+ // Preparar opciones de entorno
365
+ // Para despliegue remoto, pasamos las variables directamente con -e
366
+ // ya que --env-file requiere que el archivo esté en el servidor remoto
367
+ const envOpts: string[] = [];
368
+ if (config.envVars.length > 0) {
369
+ config.envVars.forEach(env => {
370
+ // Escapar comillas y caracteres especiales en el valor
371
+ const [key, ...valueParts] = env.split('=');
372
+ const value = valueParts.join('=');
373
+ // Escapar comillas dobles en el valor
374
+ const escapedValue = value.replace(/"/g, '\\"');
375
+ envOpts.push(`-e "${key}=${escapedValue}"`);
376
+ });
377
+ }
378
+
379
+ // Construir comando docker run
380
+ const dockerRunCmd = `docker run -d \\
381
+ --name ${fullDomain} \\
382
+ --network academy-network \\
383
+ --restart unless-stopped \\
384
+ ${envOpts.join(' \\\n ')} \\
385
+ -l traefik.enable=true \\
386
+ -l "traefik.http.routers.${serviceName}-router.rule=Host(\\\`${fullDomain}\\\`)" \\
387
+ -l traefik.http.routers.${serviceName}-router.entrypoints=websecure \\
388
+ -l traefik.http.routers.${serviceName}-router.tls=true \\
389
+ -l traefik.http.services.${serviceName}-service.loadbalancer.server.port=${config.port} \\
390
+ ${config.imageName}`;
391
+
392
+ const runSpinner = ora('Deploying container to remote server...').start();
393
+
394
+ try {
395
+ execSync(dockerRunCmd, {
396
+ env: dockerEnv,
397
+ stdio: 'inherit',
398
+ shell: '/bin/sh',
399
+ });
400
+
401
+ runSpinner.succeed('Container deployed successfully');
402
+
403
+ console.log(chalk.green('\n✅ Remote deployment completed successfully!'));
404
+ console.log(chalk.gray('Deployment details:'));
405
+ console.log(chalk.white(` Service: ${chalk.cyan(config.serviceName)}`));
406
+ console.log(chalk.white(` Domain: ${chalk.cyan(fullDomain)}`));
407
+ console.log(chalk.white(` URL: ${chalk.cyan(`https://${fullDomain}`)}`));
408
+ console.log(chalk.white(` Image: ${chalk.cyan(config.imageName)}`));
409
+ console.log(chalk.white(` Port: ${chalk.cyan(config.port)}`));
410
+ } catch (error) {
411
+ runSpinner.fail('Failed to deploy container');
412
+ console.error(chalk.red('\n❌ Error deploying container to remote server'));
413
+ console.error(chalk.yellow(' Make sure:'));
414
+ console.error(chalk.yellow(' - The image is available on the remote server'));
415
+ console.error(chalk.yellow(' - You have push the image to Docker Hub (or use --no-push and ensure image exists)'));
416
+ console.error(chalk.yellow(' - The network "academy-network" exists on the remote server'));
417
+ process.exit(1);
418
+ }
419
+
420
+ } catch (error: any) {
421
+ deploySpinner.fail('Failed to configure remote deployment');
422
+ console.error(chalk.red(`\n❌ Error: ${error.message}`));
423
+ process.exit(1);
424
+ }
425
+ }
426
+
197
427
  // Helper functions
198
428
  function findDirectory(root: string, name: string): string | null {
199
429
  try {
@@ -224,10 +454,33 @@ function copyDirectory(src: string, dest: string): void {
224
454
  const srcPath = path.join(src, entry.name);
225
455
  const destPath = path.join(dest, entry.name);
226
456
 
227
- if (entry.isDirectory()) {
228
- copyDirectory(srcPath, destPath);
229
- } else {
230
- fs.copyFileSync(srcPath, destPath);
457
+ try {
458
+ // Obtener información detallada del archivo para detectar tipos especiales
459
+ const stats = fs.lstatSync(srcPath);
460
+
461
+ if (stats.isDirectory()) {
462
+ copyDirectory(srcPath, destPath);
463
+ } else if (stats.isFile()) {
464
+ // Solo copiar archivos regulares
465
+ fs.copyFileSync(srcPath, destPath);
466
+ } else if (stats.isSymbolicLink()) {
467
+ // Copiar symlinks preservando el target
468
+ const linkTarget = fs.readlinkSync(srcPath);
469
+ fs.symlinkSync(linkTarget, destPath);
470
+ } else {
471
+ // Saltar sockets, FIFOs, y otros tipos especiales
472
+ // Estos no son necesarios para el build de Docker
473
+ continue;
474
+ }
475
+ } catch (error: any) {
476
+ // Si hay un error al copiar (por ejemplo, socket), simplemente saltarlo
477
+ // Los sockets y otros archivos especiales no son necesarios para el build
478
+ if (error.code === 'ENOTSUP' || error.code === 'EINVAL' || error.code === 'EOPNOTSUPP') {
479
+ // Saltar silenciosamente sockets y otros archivos especiales
480
+ continue;
481
+ }
482
+ // Para otros errores, lanzar el error
483
+ throw error;
231
484
  }
232
485
  }
233
486
  }