@geekmidas/cli 10.0.0-alpha.12 → 10.0.0-alpha.120

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 (517) hide show
  1. package/README.md +310 -377
  2. package/bin/adjacent-tsconfig.mjs +46 -8
  3. package/bin/gkm.mjs +11 -3
  4. package/bin/owning-tsconfig-jsx-register.mjs +18 -0
  5. package/bin/owning-tsconfig-jsx.mjs +108 -0
  6. package/dist/EndpointGenerator-BDa6pPgE.cjs +1090 -0
  7. package/dist/EndpointGenerator-BDa6pPgE.cjs.map +1 -0
  8. package/dist/EndpointGenerator-CP_z_E3e.mjs +1031 -0
  9. package/dist/EndpointGenerator-CP_z_E3e.mjs.map +1 -0
  10. package/dist/GoDaddyProvider-3C8U_tVu.cjs +388 -0
  11. package/dist/GoDaddyProvider-3C8U_tVu.cjs.map +1 -0
  12. package/dist/GoDaddyProvider-D0MQoOM4.mjs +388 -0
  13. package/dist/GoDaddyProvider-D0MQoOM4.mjs.map +1 -0
  14. package/dist/{HostingerProvider-BcyFRbqV.mjs → HostingerProvider-BNpS9aRJ.mjs} +29 -25
  15. package/dist/HostingerProvider-BNpS9aRJ.mjs.map +1 -0
  16. package/dist/{HostingerProvider-BOvsgATO.cjs → HostingerProvider-DR1iws1P.cjs} +29 -25
  17. package/dist/HostingerProvider-DR1iws1P.cjs.map +1 -0
  18. package/dist/LegacyStateStore-CRi7TosX.mjs +124 -0
  19. package/dist/LegacyStateStore-CRi7TosX.mjs.map +1 -0
  20. package/dist/LegacyStateStore-DHsoQGOo.cjs +124 -0
  21. package/dist/LegacyStateStore-DHsoQGOo.cjs.map +1 -0
  22. package/dist/LocalStateStore-BQXTkeoS.cjs +178 -0
  23. package/dist/LocalStateStore-BQXTkeoS.cjs.map +1 -0
  24. package/dist/LocalStateStore-Dkth0jXX.mjs +167 -0
  25. package/dist/LocalStateStore-Dkth0jXX.mjs.map +1 -0
  26. package/dist/OpenApiTsGenerator-CsrukCE-.mjs +536 -0
  27. package/dist/OpenApiTsGenerator-CsrukCE-.mjs.map +1 -0
  28. package/dist/OpenApiTsGenerator-FNhY7Ssz.cjs +541 -0
  29. package/dist/OpenApiTsGenerator-FNhY7Ssz.cjs.map +1 -0
  30. package/dist/{Route53Provider-CH9XH7bz.cjs → Route53Provider-Bllus2NR.cjs} +21 -22
  31. package/dist/Route53Provider-Bllus2NR.cjs.map +1 -0
  32. package/dist/{Route53Provider-C0xmer8U.mjs → Route53Provider-QXxjkZO1.mjs} +13 -13
  33. package/dist/Route53Provider-QXxjkZO1.mjs.map +1 -0
  34. package/dist/S3StateStore-DGKZgyKz.cjs +222 -0
  35. package/dist/S3StateStore-DGKZgyKz.cjs.map +1 -0
  36. package/dist/S3StateStore-pZZnLLBd.mjs +223 -0
  37. package/dist/S3StateStore-pZZnLLBd.mjs.map +1 -0
  38. package/dist/SSMStateStore-CZRMERDA.mjs +205 -0
  39. package/dist/SSMStateStore-CZRMERDA.mjs.map +1 -0
  40. package/dist/SSMStateStore-DzkyjQ5D.cjs +204 -0
  41. package/dist/SSMStateStore-DzkyjQ5D.cjs.map +1 -0
  42. package/dist/SubscriberGenerator-C8CPxrCK.cjs +592 -0
  43. package/dist/SubscriberGenerator-C8CPxrCK.cjs.map +1 -0
  44. package/dist/SubscriberGenerator-y3pncae_.mjs +533 -0
  45. package/dist/SubscriberGenerator-y3pncae_.mjs.map +1 -0
  46. package/dist/add-C0kXOsWS.mjs +717 -0
  47. package/dist/add-C0kXOsWS.mjs.map +1 -0
  48. package/dist/add-Df8cmz0H.cjs +719 -0
  49. package/dist/add-Df8cmz0H.cjs.map +1 -0
  50. package/dist/appPorts-BoXMwolc.mjs +249 -0
  51. package/dist/appPorts-BoXMwolc.mjs.map +1 -0
  52. package/dist/appPorts-IW-OZmRi.cjs +296 -0
  53. package/dist/appPorts-IW-OZmRi.cjs.map +1 -0
  54. package/dist/aws-8QQ8n-t6.mjs +89 -0
  55. package/dist/aws-8QQ8n-t6.mjs.map +1 -0
  56. package/dist/aws-DY9NqQIT.cjs +100 -0
  57. package/dist/aws-DY9NqQIT.cjs.map +1 -0
  58. package/dist/awsStore-Bx5nCFnS.mjs +121 -0
  59. package/dist/awsStore-Bx5nCFnS.mjs.map +1 -0
  60. package/dist/awsStore-u3ehhMoY.cjs +138 -0
  61. package/dist/awsStore-u3ehhMoY.cjs.map +1 -0
  62. package/dist/{backup-provisioner-DXXg6FIL.mjs → backup-provisioner-C8DnCmxK.mjs} +11 -8
  63. package/dist/backup-provisioner-C8DnCmxK.mjs.map +1 -0
  64. package/dist/{backup-provisioner-cE2PuCTb.cjs → backup-provisioner-oDEsPj02.cjs} +22 -20
  65. package/dist/backup-provisioner-oDEsPj02.cjs.map +1 -0
  66. package/dist/backups/runner.cjs +519 -0
  67. package/dist/backups/runner.cjs.map +1 -0
  68. package/dist/backups/runner.d.cts +102 -0
  69. package/dist/backups/runner.d.cts.map +1 -0
  70. package/dist/backups/runner.d.mts +102 -0
  71. package/dist/backups/runner.d.mts.map +1 -0
  72. package/dist/backups/runner.mjs +506 -0
  73. package/dist/backups/runner.mjs.map +1 -0
  74. package/dist/{bundler-Bux2iF-v.mjs → bundler-B-I4Du99.mjs} +35 -16
  75. package/dist/bundler-B-I4Du99.mjs.map +1 -0
  76. package/dist/{bundler-BMekgx7a.cjs → bundler-Dx_grUmc.cjs} +37 -19
  77. package/dist/bundler-Dx_grUmc.cjs.map +1 -0
  78. package/dist/cli-Cd9exatJ.cjs +71 -0
  79. package/dist/cli-Cd9exatJ.cjs.map +1 -0
  80. package/dist/cli-DL7GxGAe.mjs +71 -0
  81. package/dist/cli-DL7GxGAe.mjs.map +1 -0
  82. package/dist/compose-C43c03WZ.mjs +3284 -0
  83. package/dist/compose-C43c03WZ.mjs.map +1 -0
  84. package/dist/compose-Mdgea4Yt.cjs +3427 -0
  85. package/dist/compose-Mdgea4Yt.cjs.map +1 -0
  86. package/dist/config-D48erO2j.d.mts +269 -0
  87. package/dist/config-D48erO2j.d.mts.map +1 -0
  88. package/dist/config-DHDtsQrB.d.cts +269 -0
  89. package/dist/config-DHDtsQrB.d.cts.map +1 -0
  90. package/dist/config.cjs +421 -11
  91. package/dist/config.cjs.map +1 -0
  92. package/dist/config.d.cts +4 -120
  93. package/dist/config.d.mts +4 -120
  94. package/dist/config.mjs +405 -4
  95. package/dist/config.mjs.map +1 -0
  96. package/dist/credentialSchemas-B67WJOOm.cjs +272 -0
  97. package/dist/credentialSchemas-B67WJOOm.cjs.map +1 -0
  98. package/dist/credentialSchemas-DDOLRCLF.mjs +237 -0
  99. package/dist/credentialSchemas-DDOLRCLF.mjs.map +1 -0
  100. package/dist/credentials-B5N5yKk6.mjs +267 -0
  101. package/dist/credentials-B5N5yKk6.mjs.map +1 -0
  102. package/dist/credentials-Zqr3QQYB.cjs +350 -0
  103. package/dist/credentials-Zqr3QQYB.cjs.map +1 -0
  104. package/dist/databases-BPOgTn1u.mjs +522 -0
  105. package/dist/databases-BPOgTn1u.mjs.map +1 -0
  106. package/dist/databases-fOaoBInm.cjs +625 -0
  107. package/dist/databases-fOaoBInm.cjs.map +1 -0
  108. package/dist/define-6poNqm5O.mjs +106 -0
  109. package/dist/define-6poNqm5O.mjs.map +1 -0
  110. package/dist/define-crmMcXFS.cjs +153 -0
  111. package/dist/define-crmMcXFS.cjs.map +1 -0
  112. package/dist/deploy/public.cjs +212 -0
  113. package/dist/deploy/public.cjs.map +1 -0
  114. package/dist/deploy/public.d.cts +654 -0
  115. package/dist/deploy/public.d.cts.map +1 -0
  116. package/dist/deploy/public.d.mts +654 -0
  117. package/dist/deploy/public.d.mts.map +1 -0
  118. package/dist/deploy/public.mjs +145 -0
  119. package/dist/deploy/public.mjs.map +1 -0
  120. package/dist/deploy/sniffer-envkit-patch.cjs +18 -10
  121. package/dist/deploy/sniffer-envkit-patch.cjs.map +1 -1
  122. package/dist/deploy/sniffer-envkit-patch.d.cts +0 -2
  123. package/dist/deploy/sniffer-envkit-patch.d.cts.map +1 -1
  124. package/dist/deploy/sniffer-envkit-patch.d.mts +0 -2
  125. package/dist/deploy/sniffer-envkit-patch.d.mts.map +1 -1
  126. package/dist/deploy/sniffer-envkit-patch.mjs +10 -2
  127. package/dist/deploy/sniffer-envkit-patch.mjs.map +1 -1
  128. package/dist/deploy/sniffer-envparser-worker.cjs +54 -0
  129. package/dist/deploy/sniffer-envparser-worker.cjs.map +1 -0
  130. package/dist/deploy/sniffer-envparser-worker.d.cts +1 -0
  131. package/dist/deploy/sniffer-envparser-worker.d.mts +1 -0
  132. package/dist/deploy/sniffer-envparser-worker.mjs +55 -0
  133. package/dist/deploy/sniffer-envparser-worker.mjs.map +1 -0
  134. package/dist/deploy/sniffer-hooks.cjs +13 -7
  135. package/dist/deploy/sniffer-hooks.cjs.map +1 -1
  136. package/dist/deploy/sniffer-hooks.d.cts +1 -2
  137. package/dist/deploy/sniffer-hooks.d.cts.map +1 -1
  138. package/dist/deploy/sniffer-hooks.d.mts +1 -2
  139. package/dist/deploy/sniffer-hooks.d.mts.map +1 -1
  140. package/dist/deploy/sniffer-hooks.mjs +10 -3
  141. package/dist/deploy/sniffer-hooks.mjs.map +1 -1
  142. package/dist/deploy/sniffer-loader.cjs +16 -7
  143. package/dist/deploy/sniffer-loader.cjs.map +1 -1
  144. package/dist/deploy/sniffer-loader.d.cts +1 -1
  145. package/dist/deploy/sniffer-loader.d.mts +1 -1
  146. package/dist/deploy/sniffer-loader.mjs +14 -3
  147. package/dist/deploy/sniffer-loader.mjs.map +1 -1
  148. package/dist/deploy/sniffer-routes-worker.cjs +11 -11
  149. package/dist/deploy/sniffer-routes-worker.cjs.map +1 -1
  150. package/dist/deploy/sniffer-routes-worker.d.cts +1 -1
  151. package/dist/deploy/sniffer-routes-worker.d.mts +1 -1
  152. package/dist/deploy/sniffer-routes-worker.mjs +4 -4
  153. package/dist/deploy/sniffer-routes-worker.mjs.map +1 -1
  154. package/dist/deploy/sniffer-worker.cjs +15 -6
  155. package/dist/deploy/sniffer-worker.cjs.map +1 -1
  156. package/dist/deploy/sniffer-worker.d.cts +1 -3
  157. package/dist/deploy/sniffer-worker.d.cts.map +1 -1
  158. package/dist/deploy/sniffer-worker.d.mts +1 -3
  159. package/dist/deploy/sniffer-worker.d.mts.map +1 -1
  160. package/dist/deploy/sniffer-worker.mjs +15 -4
  161. package/dist/deploy/sniffer-worker.mjs.map +1 -1
  162. package/dist/deploy-BMM2hx-K.cjs +2401 -0
  163. package/dist/deploy-BMM2hx-K.cjs.map +1 -0
  164. package/dist/deploy-D5YhwDng.mjs +2328 -0
  165. package/dist/deploy-D5YhwDng.mjs.map +1 -0
  166. package/dist/derive-B4vDpzgP.mjs +150 -0
  167. package/dist/derive-B4vDpzgP.mjs.map +1 -0
  168. package/dist/derive-DAbo49sm.cjs +161 -0
  169. package/dist/derive-DAbo49sm.cjs.map +1 -0
  170. package/dist/discover-C5roJuc9.mjs +560 -0
  171. package/dist/discover-C5roJuc9.mjs.map +1 -0
  172. package/dist/discover-CSW_BMWa.d.cts +125 -0
  173. package/dist/discover-CSW_BMWa.d.cts.map +1 -0
  174. package/dist/discover-DozUKs8f.cjs +639 -0
  175. package/dist/discover-DozUKs8f.cjs.map +1 -0
  176. package/dist/discover-xtT7fgWg.d.mts +125 -0
  177. package/dist/discover-xtT7fgWg.d.mts.map +1 -0
  178. package/dist/dns-BIYf20p7.cjs +1057 -0
  179. package/dist/dns-BIYf20p7.cjs.map +1 -0
  180. package/dist/dns-agf2VCdV.mjs +926 -0
  181. package/dist/dns-agf2VCdV.mjs.map +1 -0
  182. package/dist/dokploy-2p4PK6ej.mjs +38 -0
  183. package/dist/dokploy-2p4PK6ej.mjs.map +1 -0
  184. package/dist/dokploy-BANMTroy.cjs +38 -0
  185. package/dist/dokploy-BANMTroy.cjs.map +1 -0
  186. package/dist/drivers-BjGDYfnC.mjs +195 -0
  187. package/dist/drivers-BjGDYfnC.mjs.map +1 -0
  188. package/dist/drivers-DbjiYpW6.cjs +224 -0
  189. package/dist/drivers-DbjiYpW6.cjs.map +1 -0
  190. package/dist/eas-CNi16SoO.cjs +337 -0
  191. package/dist/eas-CNi16SoO.cjs.map +1 -0
  192. package/dist/eas-iT2JDHCh.mjs +334 -0
  193. package/dist/eas-iT2JDHCh.mjs.map +1 -0
  194. package/dist/{emit-CIlvnDvV.mjs → emit-C1e8qD08.mjs} +13 -26
  195. package/dist/emit-C1e8qD08.mjs.map +1 -0
  196. package/dist/{emit-CUD1BWls.cjs → emit-Dmc1nvdS.cjs} +31 -57
  197. package/dist/emit-Dmc1nvdS.cjs.map +1 -0
  198. package/dist/encryption-DkXVbyZc.mjs +89 -0
  199. package/dist/encryption-DkXVbyZc.mjs.map +1 -0
  200. package/dist/encryption-d2lLtkYx.cjs +90 -0
  201. package/dist/encryption-d2lLtkYx.cjs.map +1 -0
  202. package/dist/engine-CatKW6E-.mjs +3089 -0
  203. package/dist/engine-CatKW6E-.mjs.map +1 -0
  204. package/dist/engine-DlEHexED.cjs +3202 -0
  205. package/dist/engine-DlEHexED.cjs.map +1 -0
  206. package/dist/errors-D8Gwp5kU.mjs +23 -0
  207. package/dist/errors-D8Gwp5kU.mjs.map +1 -0
  208. package/dist/errors-DMC4Umsb.cjs +34 -0
  209. package/dist/errors-DMC4Umsb.cjs.map +1 -0
  210. package/dist/github-BAeaC1Pl.cjs +833 -0
  211. package/dist/github-BAeaC1Pl.cjs.map +1 -0
  212. package/dist/github-DErsqKGN.mjs +832 -0
  213. package/dist/github-DErsqKGN.mjs.map +1 -0
  214. package/dist/googlePlay-BVcfFWRO.cjs +931 -0
  215. package/dist/googlePlay-BVcfFWRO.cjs.map +1 -0
  216. package/dist/googlePlay-BXJ5ZjMK.mjs +931 -0
  217. package/dist/googlePlay-BXJ5ZjMK.mjs.map +1 -0
  218. package/dist/identity-CBXr4wNi.mjs +129 -0
  219. package/dist/identity-CBXr4wNi.mjs.map +1 -0
  220. package/dist/identity-CbLfgQNT.cjs +182 -0
  221. package/dist/identity-CbLfgQNT.cjs.map +1 -0
  222. package/dist/{index-BzJ7QJ9c.d.mts → index-8OfpOtSI.d.cts} +39 -20
  223. package/dist/index-8OfpOtSI.d.cts.map +1 -0
  224. package/dist/{index-CfMjtdVC.d.cts → index-Dpji6Bxq.d.mts} +39 -20
  225. package/dist/index-Dpji6Bxq.d.mts.map +1 -0
  226. package/dist/index.cjs +14291 -11898
  227. package/dist/index.cjs.map +1 -1
  228. package/dist/index.d.cts +1 -1
  229. package/dist/index.d.mts +1 -1
  230. package/dist/index.mjs +13938 -11560
  231. package/dist/index.mjs.map +1 -1
  232. package/dist/local-BwC2v2Y8.mjs +224 -0
  233. package/dist/local-BwC2v2Y8.mjs.map +1 -0
  234. package/dist/local-DNhnkugT.cjs +241 -0
  235. package/dist/local-DNhnkugT.cjs.map +1 -0
  236. package/dist/migrate-Bb1MmGHl.mjs +181 -0
  237. package/dist/migrate-Bb1MmGHl.mjs.map +1 -0
  238. package/dist/migrate-D79GI0XM.cjs +271 -0
  239. package/dist/migrate-D79GI0XM.cjs.map +1 -0
  240. package/dist/migrate-L4a273dY.cjs +181 -0
  241. package/dist/migrate-L4a273dY.cjs.map +1 -0
  242. package/dist/migrate-s4QizIoM.mjs +266 -0
  243. package/dist/migrate-s4QizIoM.mjs.map +1 -0
  244. package/dist/openapi.cjs +214 -10
  245. package/dist/openapi.cjs.map +1 -0
  246. package/dist/openapi.d.cts +38 -17
  247. package/dist/openapi.d.cts.map +1 -1
  248. package/dist/openapi.d.mts +38 -17
  249. package/dist/openapi.d.mts.map +1 -1
  250. package/dist/openapi.mjs +208 -5
  251. package/dist/openapi.mjs.map +1 -0
  252. package/dist/projectBucket-BBbQ1lHF.cjs +263 -0
  253. package/dist/projectBucket-BBbQ1lHF.cjs.map +1 -0
  254. package/dist/projectBucket-C_DN4WzF.mjs +222 -0
  255. package/dist/projectBucket-C_DN4WzF.mjs.map +1 -0
  256. package/dist/provider-BqpjG9QM.cjs +57 -0
  257. package/dist/provider-BqpjG9QM.cjs.map +1 -0
  258. package/dist/provider-CEOKk8NS.mjs +46 -0
  259. package/dist/provider-CEOKk8NS.mjs.map +1 -0
  260. package/dist/publish-CcTlmJT6.mjs +123 -0
  261. package/dist/publish-CcTlmJT6.mjs.map +1 -0
  262. package/dist/publish-ydscCYsW.cjs +124 -0
  263. package/dist/publish-ydscCYsW.cjs.map +1 -0
  264. package/dist/ready-BFFP838V.cjs +404 -0
  265. package/dist/ready-BFFP838V.cjs.map +1 -0
  266. package/dist/ready-BOfogqzr.mjs +375 -0
  267. package/dist/ready-BOfogqzr.mjs.map +1 -0
  268. package/dist/reconcile/public.cjs +3 -5
  269. package/dist/reconcile/public.d.cts +11 -87
  270. package/dist/reconcile/public.d.cts.map +1 -1
  271. package/dist/reconcile/public.d.mts +11 -87
  272. package/dist/reconcile/public.d.mts.map +1 -1
  273. package/dist/reconcile/public.mjs +3 -4
  274. package/dist/{reconcile-BI0tWkwz.mjs → reconcile--I7V4Klj.mjs} +4 -7
  275. package/dist/reconcile--I7V4Klj.mjs.map +1 -0
  276. package/dist/{reconcile-Bhw5fmKu.cjs → reconcile-CuCQBa5-.cjs} +5 -8
  277. package/dist/reconcile-CuCQBa5-.cjs.map +1 -0
  278. package/dist/resolve-BLp2trep.mjs +263 -0
  279. package/dist/resolve-BLp2trep.mjs.map +1 -0
  280. package/dist/resolve-BgL-brF9.cjs +316 -0
  281. package/dist/resolve-BgL-brF9.cjs.map +1 -0
  282. package/dist/rollback-2cyLXEH1.cjs +165 -0
  283. package/dist/rollback-2cyLXEH1.cjs.map +1 -0
  284. package/dist/rollback-DwqZ8zzj.mjs +136 -0
  285. package/dist/rollback-DwqZ8zzj.mjs.map +1 -0
  286. package/dist/rolldown-runtime-BhDjJH2R.mjs +15 -0
  287. package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-C0BPl7ul.cjs} +23 -10
  288. package/dist/run-BJLIerMM.mjs +133 -0
  289. package/dist/run-BJLIerMM.mjs.map +1 -0
  290. package/dist/run-fVZ-rLnc.cjs +174 -0
  291. package/dist/run-fVZ-rLnc.cjs.map +1 -0
  292. package/dist/runtime-ACdfK59n.d.cts +82 -0
  293. package/dist/runtime-ACdfK59n.d.cts.map +1 -0
  294. package/dist/runtime-YyQuekxi.d.mts +82 -0
  295. package/dist/runtime-YyQuekxi.d.mts.map +1 -0
  296. package/dist/s3-CrPoA89T.cjs +215 -0
  297. package/dist/s3-CrPoA89T.cjs.map +1 -0
  298. package/dist/s3-DQXZdmCM.mjs +215 -0
  299. package/dist/s3-DQXZdmCM.mjs.map +1 -0
  300. package/dist/sandbox/config-worker.cjs +43 -0
  301. package/dist/sandbox/config-worker.cjs.map +1 -0
  302. package/dist/sandbox/config-worker.d.cts +1 -0
  303. package/dist/sandbox/config-worker.d.mts +1 -0
  304. package/dist/sandbox/config-worker.mjs +44 -0
  305. package/dist/sandbox/config-worker.mjs.map +1 -0
  306. package/dist/sandbox/credentials-worker.cjs +54 -0
  307. package/dist/sandbox/credentials-worker.cjs.map +1 -0
  308. package/dist/sandbox/credentials-worker.d.cts +1 -0
  309. package/dist/sandbox/credentials-worker.d.mts +1 -0
  310. package/dist/sandbox/credentials-worker.mjs +55 -0
  311. package/dist/sandbox/credentials-worker.mjs.map +1 -0
  312. package/dist/sandbox/discover-worker.cjs +50 -0
  313. package/dist/sandbox/discover-worker.cjs.map +1 -0
  314. package/dist/sandbox/discover-worker.d.cts +1 -0
  315. package/dist/sandbox/discover-worker.d.mts +1 -0
  316. package/dist/sandbox/discover-worker.mjs +51 -0
  317. package/dist/sandbox/discover-worker.mjs.map +1 -0
  318. package/dist/sandbox/migrate-worker.cjs +75 -0
  319. package/dist/sandbox/migrate-worker.cjs.map +1 -0
  320. package/dist/sandbox/migrate-worker.d.cts +1 -0
  321. package/dist/sandbox/migrate-worker.d.mts +1 -0
  322. package/dist/sandbox/migrate-worker.mjs +76 -0
  323. package/dist/sandbox/migrate-worker.mjs.map +1 -0
  324. package/dist/sandbox-C4g1eG31.d.mts +104 -0
  325. package/dist/sandbox-C4g1eG31.d.mts.map +1 -0
  326. package/dist/sandbox-CHv3OYXg.cjs +165 -0
  327. package/dist/sandbox-CHv3OYXg.cjs.map +1 -0
  328. package/dist/sandbox-CbVB7uOD.mjs +118 -0
  329. package/dist/sandbox-CbVB7uOD.mjs.map +1 -0
  330. package/dist/sandbox-CdKgQ3XU.d.cts +104 -0
  331. package/dist/sandbox-CdKgQ3XU.d.cts.map +1 -0
  332. package/dist/{workspace-DPV7FtAv.cjs → schemas-BCwKKA42.mjs} +958 -1816
  333. package/dist/schemas-BCwKKA42.mjs.map +1 -0
  334. package/dist/{workspace-CtnZnWsa.mjs → schemas-BQ_v0lEX.cjs} +1048 -1626
  335. package/dist/schemas-BQ_v0lEX.cjs.map +1 -0
  336. package/dist/secretsManager-CQORubp9.mjs +97 -0
  337. package/dist/secretsManager-CQORubp9.mjs.map +1 -0
  338. package/dist/secretsManager-RAGcEDX1.cjs +108 -0
  339. package/dist/secretsManager-RAGcEDX1.cjs.map +1 -0
  340. package/dist/seeds-C2w4UqVP.cjs +9347 -0
  341. package/dist/seeds-C2w4UqVP.cjs.map +1 -0
  342. package/dist/seeds-Cwtv-U9-.mjs +8350 -0
  343. package/dist/seeds-Cwtv-U9-.mjs.map +1 -0
  344. package/dist/serverSetup-CKs4K9gD.cjs +630 -0
  345. package/dist/serverSetup-CKs4K9gD.cjs.map +1 -0
  346. package/dist/serverSetup-P68H5Lal.mjs +630 -0
  347. package/dist/serverSetup-P68H5Lal.mjs.map +1 -0
  348. package/dist/sniffer-8C4q6Szd.mjs +1825 -0
  349. package/dist/sniffer-8C4q6Szd.mjs.map +1 -0
  350. package/dist/sniffer-CF7wNxMo.cjs +1998 -0
  351. package/dist/sniffer-CF7wNxMo.cjs.map +1 -0
  352. package/dist/sst-B-Uz4cvm.cjs +464 -0
  353. package/dist/sst-B-Uz4cvm.cjs.map +1 -0
  354. package/dist/sst-C1pxbFEd.mjs +441 -0
  355. package/dist/sst-C1pxbFEd.mjs.map +1 -0
  356. package/dist/stage-BvM_u2z4.mjs +302 -0
  357. package/dist/stage-BvM_u2z4.mjs.map +1 -0
  358. package/dist/stage-DEQJGW3r.cjs +313 -0
  359. package/dist/stage-DEQJGW3r.cjs.map +1 -0
  360. package/dist/stages-Cb9rqRbN.mjs +190 -0
  361. package/dist/stages-Cb9rqRbN.mjs.map +1 -0
  362. package/dist/stages-D4SnG5yl.cjs +190 -0
  363. package/dist/stages-D4SnG5yl.cjs.map +1 -0
  364. package/dist/target/public.cjs +15 -0
  365. package/dist/target/public.d.cts +28 -0
  366. package/dist/target/public.d.cts.map +1 -0
  367. package/dist/target/public.d.mts +28 -0
  368. package/dist/target/public.d.mts.map +1 -0
  369. package/dist/target/public.mjs +4 -0
  370. package/dist/terminal-CW_dWeTe.mjs +85 -0
  371. package/dist/terminal-CW_dWeTe.mjs.map +1 -0
  372. package/dist/terminal-DJlqcW_U.cjs +85 -0
  373. package/dist/terminal-DJlqcW_U.cjs.map +1 -0
  374. package/dist/types-B6UXlEkf.d.cts +7650 -0
  375. package/dist/types-B6UXlEkf.d.cts.map +1 -0
  376. package/dist/types-HqVPddRK.d.mts +7649 -0
  377. package/dist/types-HqVPddRK.d.mts.map +1 -0
  378. package/dist/utils-D2Nk1Nv2.cjs +205 -0
  379. package/dist/utils-D2Nk1Nv2.cjs.map +1 -0
  380. package/dist/utils-D_fxUqvU.mjs +156 -0
  381. package/dist/utils-D_fxUqvU.mjs.map +1 -0
  382. package/dist/vitest.cjs +65 -0
  383. package/dist/vitest.cjs.map +1 -0
  384. package/dist/vitest.d.cts +29 -0
  385. package/dist/vitest.d.cts.map +1 -0
  386. package/dist/vitest.d.mts +29 -0
  387. package/dist/vitest.d.mts.map +1 -0
  388. package/dist/vitest.mjs +65 -0
  389. package/dist/vitest.mjs.map +1 -0
  390. package/dist/workerRuntime-BXfhbe13.cjs +108 -0
  391. package/dist/workerRuntime-BXfhbe13.cjs.map +1 -0
  392. package/dist/workerRuntime-CsOyBRx2.mjs +79 -0
  393. package/dist/workerRuntime-CsOyBRx2.mjs.map +1 -0
  394. package/dist/workspace/index.cjs +8 -4
  395. package/dist/workspace/index.d.cts +3 -3
  396. package/dist/workspace/index.d.mts +3 -3
  397. package/dist/workspace/index.mjs +2 -3
  398. package/dist/workspace-BwqQnool.cjs +2806 -0
  399. package/dist/workspace-BwqQnool.cjs.map +1 -0
  400. package/dist/workspace-D1QbNd55.mjs +2394 -0
  401. package/dist/workspace-D1QbNd55.mjs.map +1 -0
  402. package/package.json +54 -22
  403. package/dist/CachedStateProvider-BEBl2wQT.cjs +0 -60
  404. package/dist/CachedStateProvider-BEBl2wQT.cjs.map +0 -1
  405. package/dist/CachedStateProvider-C-8wtlto.mjs +0 -3
  406. package/dist/CachedStateProvider-Co4n5Wvs.mjs +0 -54
  407. package/dist/CachedStateProvider-Co4n5Wvs.mjs.map +0 -1
  408. package/dist/CachedStateProvider-DqhGpzsm.cjs +0 -3
  409. package/dist/HostingerProvider-BOvsgATO.cjs.map +0 -1
  410. package/dist/HostingerProvider-BcyFRbqV.mjs.map +0 -1
  411. package/dist/LocalStateProvider-Bq-0C0sg.mjs +0 -42
  412. package/dist/LocalStateProvider-Bq-0C0sg.mjs.map +0 -1
  413. package/dist/LocalStateProvider-yjXZXZDM.cjs +0 -43
  414. package/dist/LocalStateProvider-yjXZXZDM.cjs.map +0 -1
  415. package/dist/Route53Provider-C0xmer8U.mjs.map +0 -1
  416. package/dist/Route53Provider-CH9XH7bz.cjs.map +0 -1
  417. package/dist/SSMStateProvider-CXtNgPfy.cjs +0 -66
  418. package/dist/SSMStateProvider-CXtNgPfy.cjs.map +0 -1
  419. package/dist/SSMStateProvider-DOZifZfE.mjs +0 -66
  420. package/dist/SSMStateProvider-DOZifZfE.mjs.map +0 -1
  421. package/dist/backup-provisioner-DXXg6FIL.mjs.map +0 -1
  422. package/dist/backup-provisioner-cE2PuCTb.cjs.map +0 -1
  423. package/dist/bundler-BMekgx7a.cjs.map +0 -1
  424. package/dist/bundler-Bux2iF-v.mjs.map +0 -1
  425. package/dist/chunk-Duj1WY3L.mjs +0 -7
  426. package/dist/config-DTsVjKZD.mjs +0 -402
  427. package/dist/config-DTsVjKZD.mjs.map +0 -1
  428. package/dist/config-RYR9j6EF.cjs +0 -462
  429. package/dist/config-RYR9j6EF.cjs.map +0 -1
  430. package/dist/config.d.cts.map +0 -1
  431. package/dist/config.d.mts.map +0 -1
  432. package/dist/credentials-B5zRHdAl.mjs +0 -141
  433. package/dist/credentials-B5zRHdAl.mjs.map +0 -1
  434. package/dist/credentials-BapzjyV5.cjs +0 -195
  435. package/dist/credentials-BapzjyV5.cjs.map +0 -1
  436. package/dist/credentials-DQRvPz2S.cjs +0 -2769
  437. package/dist/credentials-DQRvPz2S.cjs.map +0 -1
  438. package/dist/credentials-jMJC63qs.mjs +0 -2625
  439. package/dist/credentials-jMJC63qs.mjs.map +0 -1
  440. package/dist/discover-BYHQwQqu.mjs +0 -242
  441. package/dist/discover-BYHQwQqu.mjs.map +0 -1
  442. package/dist/discover-DmW9Bscc.cjs +0 -290
  443. package/dist/discover-DmW9Bscc.cjs.map +0 -1
  444. package/dist/dokploy-api-5cK2InBm.cjs +0 -3
  445. package/dist/dokploy-api-D2Ny4Jrc.mjs +0 -3
  446. package/dist/dokploy-api-pdaBryoY.mjs +0 -706
  447. package/dist/dokploy-api-pdaBryoY.mjs.map +0 -1
  448. package/dist/dokploy-api-zqKe9lHH.cjs +0 -718
  449. package/dist/dokploy-api-zqKe9lHH.cjs.map +0 -1
  450. package/dist/emit-CIlvnDvV.mjs.map +0 -1
  451. package/dist/emit-CUD1BWls.cjs.map +0 -1
  452. package/dist/encryption-D2pL3tHH.cjs +0 -54
  453. package/dist/encryption-D2pL3tHH.cjs.map +0 -1
  454. package/dist/encryption-YDsXXi6w.mjs +0 -3
  455. package/dist/encryption-_4zwjOAR.mjs +0 -42
  456. package/dist/encryption-_4zwjOAR.mjs.map +0 -1
  457. package/dist/encryption-sQ2Oxx0d.cjs +0 -4
  458. package/dist/fullstack-secrets-B6KBHf-g.mjs +0 -87
  459. package/dist/fullstack-secrets-B6KBHf-g.mjs.map +0 -1
  460. package/dist/fullstack-secrets-DL8v0y4D.cjs +0 -99
  461. package/dist/fullstack-secrets-DL8v0y4D.cjs.map +0 -1
  462. package/dist/generator-CNzBw7g5.cjs +0 -289
  463. package/dist/generator-CNzBw7g5.cjs.map +0 -1
  464. package/dist/generator-VE2JrFlY.mjs +0 -253
  465. package/dist/generator-VE2JrFlY.mjs.map +0 -1
  466. package/dist/github-BThvbf2W.cjs +0 -197
  467. package/dist/github-BThvbf2W.cjs.map +0 -1
  468. package/dist/github-DpMZurEK.mjs +0 -196
  469. package/dist/github-DpMZurEK.mjs.map +0 -1
  470. package/dist/index-BzJ7QJ9c.d.mts.map +0 -1
  471. package/dist/index-CfMjtdVC.d.cts.map +0 -1
  472. package/dist/keystore-C9rint2E.cjs +0 -101
  473. package/dist/keystore-C9rint2E.cjs.map +0 -1
  474. package/dist/keystore-TxeYM7an.mjs +0 -83
  475. package/dist/keystore-TxeYM7an.mjs.map +0 -1
  476. package/dist/openapi-Bs3-5q_r.mjs +0 -2021
  477. package/dist/openapi-Bs3-5q_r.mjs.map +0 -1
  478. package/dist/openapi-DWLTsYLL.cjs +0 -2075
  479. package/dist/openapi-DWLTsYLL.cjs.map +0 -1
  480. package/dist/openapi-react-query-Byltvm_7.mjs +0 -167
  481. package/dist/openapi-react-query-Byltvm_7.mjs.map +0 -1
  482. package/dist/openapi-react-query-CmJ1xDbn.cjs +0 -173
  483. package/dist/openapi-react-query-CmJ1xDbn.cjs.map +0 -1
  484. package/dist/openapi-react-query.cjs +0 -4
  485. package/dist/openapi-react-query.d.cts +0 -11
  486. package/dist/openapi-react-query.d.cts.map +0 -1
  487. package/dist/openapi-react-query.d.mts +0 -11
  488. package/dist/openapi-react-query.d.mts.map +0 -1
  489. package/dist/openapi-react-query.mjs +0 -4
  490. package/dist/reconcile-BI0tWkwz.mjs.map +0 -1
  491. package/dist/reconcile-Bhw5fmKu.cjs.map +0 -1
  492. package/dist/setup-BmLoNrDX.mjs +0 -12
  493. package/dist/setup-BrR1_xGy.cjs +0 -12
  494. package/dist/setup-BsNR2LBG.cjs +0 -467
  495. package/dist/setup-BsNR2LBG.cjs.map +0 -1
  496. package/dist/setup-D5-JMknk.mjs +0 -437
  497. package/dist/setup-D5-JMknk.mjs.map +0 -1
  498. package/dist/storage-B020InPW.mjs +0 -222
  499. package/dist/storage-B020InPW.mjs.map +0 -1
  500. package/dist/storage-CSNplaJn.cjs +0 -282
  501. package/dist/storage-CSNplaJn.cjs.map +0 -1
  502. package/dist/storage-DGBzMLZa.mjs +0 -4
  503. package/dist/storage-DlVol_oj.cjs +0 -8
  504. package/dist/sync-0ILCb-1S.cjs +0 -93
  505. package/dist/sync-0ILCb-1S.cjs.map +0 -1
  506. package/dist/sync-CzHXiR9c.mjs +0 -76
  507. package/dist/sync-CzHXiR9c.mjs.map +0 -1
  508. package/dist/sync-DYENfOt4.cjs +0 -4
  509. package/dist/sync-HAau6h_R.mjs +0 -3
  510. package/dist/types-DVIx8I1N.d.mts +0 -1950
  511. package/dist/types-DVIx8I1N.d.mts.map +0 -1
  512. package/dist/types-PMP_qXRY.d.cts +0 -1950
  513. package/dist/types-PMP_qXRY.d.cts.map +0 -1
  514. package/dist/workspace-Cji6lE8E.cjs +0 -10
  515. package/dist/workspace-CkJAtRIX.mjs +0 -9
  516. package/dist/workspace-CtnZnWsa.mjs.map +0 -1
  517. package/dist/workspace-DPV7FtAv.cjs.map +0 -1
@@ -1,15 +1,26 @@
1
1
  import { register } from "node:module";
2
- import { existsSync } from "node:fs";
3
2
  import { dirname, join } from "node:path";
3
+ import { existsSync } from "node:fs";
4
4
  import { fileURLToPath, pathToFileURL } from "node:url";
5
-
6
5
  //#region src/deploy/sniffer-loader.ts
6
+ /**
7
+ * Node.js module loader registration for entry app sniffing.
8
+ *
9
+ * This module registers a custom loader hook that intercepts imports of
10
+ * '@geekmidas/envkit' and replaces the EnvironmentParser with
11
+ * SnifferEnvironmentParser, allowing us to capture which environment
12
+ * variables an entry app accesses.
13
+ *
14
+ * Usage:
15
+ * node --import tsx --import ./sniffer-loader.mjs ./sniffer-worker.mjs /path/to/entry.ts
16
+ */
7
17
  const __filename = fileURLToPath(import.meta.url);
8
18
  const __dirname = dirname(__filename);
9
19
  const mjsPath = join(__dirname, "sniffer-hooks.mjs");
10
20
  const tsPath = join(__dirname, "sniffer-hooks.ts");
11
21
  const hooksPath = existsSync(mjsPath) ? mjsPath : tsPath;
12
22
  register(pathToFileURL(hooksPath).href, import.meta.url);
13
-
14
23
  //#endregion
24
+ export {};
25
+
15
26
  //# sourceMappingURL=sniffer-loader.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-loader.mjs","names":[],"sources":["../../src/deploy/sniffer-loader.ts"],"sourcesContent":["/**\n * Node.js module loader registration for entry app sniffing.\n *\n * This module registers a custom loader hook that intercepts imports of\n * '@geekmidas/envkit' and replaces the EnvironmentParser with\n * SnifferEnvironmentParser, allowing us to capture which environment\n * variables an entry app accesses.\n *\n * Usage:\n * node --import tsx --import ./sniffer-loader.mjs ./sniffer-worker.mjs /path/to/entry.ts\n */\n\nimport { existsSync } from 'node:fs';\nimport { register } from 'node:module';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\n\n// Resolve path to the loader hooks module\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Try .mjs first (production dist), then .ts (development)\nconst mjsPath = join(__dirname, 'sniffer-hooks.mjs');\nconst tsPath = join(__dirname, 'sniffer-hooks.ts');\nconst hooksPath = existsSync(mjsPath) ? mjsPath : tsPath;\n\n// Register the loader hooks\nregister(pathToFileURL(hooksPath).href, import.meta.url);\n"],"mappings":";;;;;;AAkBA,MAAM,aAAa,cAAc,OAAO,KAAK,IAAI;AACjD,MAAM,YAAY,QAAQ,WAAW;AAGrC,MAAM,UAAU,KAAK,WAAW,oBAAoB;AACpD,MAAM,SAAS,KAAK,WAAW,mBAAmB;AAClD,MAAM,YAAY,WAAW,QAAQ,GAAG,UAAU;AAGlD,SAAS,cAAc,UAAU,CAAC,MAAM,OAAO,KAAK,IAAI"}
1
+ {"version":3,"file":"sniffer-loader.mjs","names":[],"sources":["../../src/deploy/sniffer-loader.ts"],"sourcesContent":["/**\n * Node.js module loader registration for entry app sniffing.\n *\n * This module registers a custom loader hook that intercepts imports of\n * '@geekmidas/envkit' and replaces the EnvironmentParser with\n * SnifferEnvironmentParser, allowing us to capture which environment\n * variables an entry app accesses.\n *\n * Usage:\n * node --import tsx --import ./sniffer-loader.mjs ./sniffer-worker.mjs /path/to/entry.ts\n */\n\nimport { existsSync } from 'node:fs';\nimport { register } from 'node:module';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\n\n// Resolve path to the loader hooks module\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Try .mjs first (production dist), then .ts (development)\nconst mjsPath = join(__dirname, 'sniffer-hooks.mjs');\nconst tsPath = join(__dirname, 'sniffer-hooks.ts');\nconst hooksPath = existsSync(mjsPath) ? mjsPath : tsPath;\n\n// Register the loader hooks\nregister(pathToFileURL(hooksPath).href, import.meta.url);\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,MAAM,aAAa,cAAc,YAAY,GAAG;AAChD,MAAM,YAAY,QAAQ,UAAU;AAGpC,MAAM,UAAU,KAAK,WAAW,mBAAmB;AACnD,MAAM,SAAS,KAAK,WAAW,kBAAkB;AACjD,MAAM,YAAY,WAAW,OAAO,IAAI,UAAU;AAGlD,SAAS,cAAc,SAAS,CAAC,CAAC,MAAM,YAAY,GAAG"}
@@ -1,10 +1,10 @@
1
- const require_chunk = require('../chunk-CUT6urMc.cjs');
2
- const fast_glob = require_chunk.__toESM(require("fast-glob"));
3
- const __geekmidas_constructs_crons = require_chunk.__toESM(require("@geekmidas/constructs/crons"));
4
- const __geekmidas_constructs_endpoints = require_chunk.__toESM(require("@geekmidas/constructs/endpoints"));
5
- const __geekmidas_constructs_functions = require_chunk.__toESM(require("@geekmidas/constructs/functions"));
6
- const __geekmidas_constructs_subscribers = require_chunk.__toESM(require("@geekmidas/constructs/subscribers"));
7
-
1
+ const require_rolldown_runtime = require("../rolldown-runtime-C0BPl7ul.cjs");
2
+ let _geekmidas_constructs_crons = require("@geekmidas/constructs/crons");
3
+ let _geekmidas_constructs_subscribers = require("@geekmidas/constructs/subscribers");
4
+ let fast_glob = require("fast-glob");
5
+ fast_glob = require_rolldown_runtime.__toESM(fast_glob, 1);
6
+ let _geekmidas_constructs_endpoints = require("@geekmidas/constructs/endpoints");
7
+ let _geekmidas_constructs_functions = require("@geekmidas/constructs/functions");
8
8
  //#region src/deploy/sniffer-routes-worker.ts
9
9
  const appPathArg = process.argv[2];
10
10
  const routesPatternArg = process.argv[3];
@@ -21,7 +21,7 @@ const routesPattern = routesPatternArg;
21
21
  * Check if a value is a gkm construct.
22
22
  */
23
23
  function isConstruct(value) {
24
- return __geekmidas_constructs_endpoints.Endpoint.isEndpoint(value) || __geekmidas_constructs_functions.Function.isFunction(value) || __geekmidas_constructs_crons.Cron.isCron(value) || __geekmidas_constructs_subscribers.Subscriber.isSubscriber(value);
24
+ return _geekmidas_constructs_endpoints.Endpoint.isEndpoint(value) || _geekmidas_constructs_functions.Function.isFunction(value) || _geekmidas_constructs_crons.Cron.isCron(value) || _geekmidas_constructs_subscribers.Subscriber.isSubscriber(value);
25
25
  }
26
26
  /**
27
27
  * Main sniffing function
@@ -36,8 +36,8 @@ async function sniff() {
36
36
  absolute: true
37
37
  });
38
38
  for (const file of files) try {
39
- const module$1 = await import(file);
40
- for (const [, exportValue] of Object.entries(module$1)) if (isConstruct(exportValue)) try {
39
+ const module = await import(file);
40
+ for (const [, exportValue] of Object.entries(module)) if (isConstruct(exportValue)) try {
41
41
  const constructEnvVars = await exportValue.getEnvironment({ markOptional: true });
42
42
  for (const name of constructEnvVars) if (name.endsWith("?")) optionalEnvVars.add(name.slice(0, -1));
43
43
  else envVars.add(name);
@@ -64,6 +64,6 @@ sniff().catch((e) => {
64
64
  }));
65
65
  process.exit(1);
66
66
  });
67
-
68
67
  //#endregion
68
+
69
69
  //# sourceMappingURL=sniffer-routes-worker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-routes-worker.cjs","names":["appPath: string","routesPattern: string","value: unknown","error: string | null","module"],"sources":["../../src/deploy/sniffer-routes-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for route-based app sniffing.\n *\n * This script is executed in a subprocess with tsx loader,\n * which handles TypeScript compilation and path alias resolution.\n *\n * Usage:\n * node --import tsx ./sniffer-routes-worker.ts \"/path/to/app\" \"./src/endpoints/**\\/*.ts\"\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport type { Construct } from '@geekmidas/constructs';\nimport { Cron } from '@geekmidas/constructs/crons';\nimport { Endpoint } from '@geekmidas/constructs/endpoints';\nimport { Function as GkmFunction } from '@geekmidas/constructs/functions';\nimport { Subscriber } from '@geekmidas/constructs/subscribers';\nimport fg from 'fast-glob';\n\n// Get args from command line\nconst appPathArg = process.argv[2];\nconst routesPatternArg = process.argv[3];\n\nif (!appPathArg || !routesPatternArg) {\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: [],\n\t\t\terror: 'App path and routes pattern are required',\n\t\t}),\n\t);\n\tprocess.exit(1);\n}\n\n// After validation, these are guaranteed to be strings\nconst appPath: string = appPathArg;\nconst routesPattern: string = routesPatternArg;\n\n/**\n * Check if a value is a gkm construct.\n */\nfunction isConstruct(value: unknown): value is Construct {\n\treturn (\n\t\tEndpoint.isEndpoint(value) ||\n\t\tGkmFunction.isFunction(value) ||\n\t\tCron.isCron(value) ||\n\t\tSubscriber.isSubscriber(value)\n\t);\n}\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tconst envVars = new Set<string>();\n\tconst optionalEnvVars = new Set<string>();\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Find all route files matching the pattern\n\t\tconst files = await fg(routesPattern, {\n\t\t\tcwd: appPath,\n\t\t\tabsolute: true,\n\t\t});\n\n\t\t// Import each route file and find constructs\n\t\tfor (const file of files) {\n\t\t\ttry {\n\t\t\t\tconst module = await import(file);\n\n\t\t\t\t// Check all exports for constructs\n\t\t\t\tfor (const [, exportValue] of Object.entries(module)) {\n\t\t\t\t\tif (isConstruct(exportValue)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// `markOptional`, so a key read through `.optional()` or\n\t\t\t\t\t\t\t// `.default()` comes back suffixed `?` and is reported\n\t\t\t\t\t\t\t// apart from the rest. Without it every sniffed read\n\t\t\t\t\t\t\t// looked required, and a key that is *absent by design*\n\t\t\t\t\t\t\t// — `AUTH_COOKIE_DOMAIN`, published only when a surface\n\t\t\t\t\t\t\t// has a domain to widen a cookie to — failed the deploy\n\t\t\t\t\t\t\t// as though it were a missing secret.\n\t\t\t\t\t\t\tconst constructEnvVars = await exportValue.getEnvironment({\n\t\t\t\t\t\t\t\tmarkOptional: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const name of constructEnvVars) {\n\t\t\t\t\t\t\t\tif (name.endsWith('?')) optionalEnvVars.add(name.slice(0, -1));\n\t\t\t\t\t\t\t\telse envVars.add(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Individual construct may fail, continue with others\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Log import errors but continue with other files\n\t\t\t\tconst msg = e instanceof Error ? e.message : String(e);\n\t\t\t\tconsole.error(`[sniffer] Failed to import ${file}: ${msg}`);\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Output result as JSON (last line of stdout)\n\t// A key required by one construct and optional in another is required: the\n\t// strictest read is the one that fails at runtime.\n\tfor (const name of envVars) optionalEnvVars.delete(name);\n\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: Array.from(envVars).sort(),\n\t\t\toptionalEnvVars: Array.from(optionalEnvVars).sort(),\n\t\t\terror,\n\t\t}),\n\t);\n}\n\n// Handle unhandled rejections\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;;;;;AAqBA,MAAM,aAAa,QAAQ,KAAK;AAChC,MAAM,mBAAmB,QAAQ,KAAK;AAEtC,KAAK,eAAe,kBAAkB;AACrC,SAAQ,IACP,KAAK,UAAU;EACd,SAAS,CAAE;EACX,OAAO;CACP,EAAC,CACF;AACD,SAAQ,KAAK,EAAE;AACf;AAGD,MAAMA,UAAkB;AACxB,MAAMC,gBAAwB;;;;AAK9B,SAAS,YAAYC,OAAoC;AACxD,QACC,0CAAS,WAAW,MAAM,IAC1B,0CAAY,WAAW,MAAM,IAC7B,kCAAK,OAAO,MAAM,IAClB,8CAAW,aAAa,MAAM;AAE/B;;;;AAKD,eAAe,QAAuB;CACrC,MAAM,0BAAU,IAAI;CACpB,MAAM,kCAAkB,IAAI;CAC5B,IAAIC,QAAuB;AAE3B,KAAI;EAEH,MAAM,QAAQ,MAAM,uBAAG,eAAe;GACrC,KAAK;GACL,UAAU;EACV,EAAC;AAGF,OAAK,MAAM,QAAQ,MAClB,KAAI;GACH,MAAMC,WAAS,MAAM,OAAO;AAG5B,QAAK,MAAM,GAAG,YAAY,IAAI,OAAO,QAAQA,SAAO,CACnD,KAAI,YAAY,YAAY,CAC3B,KAAI;IAQH,MAAM,mBAAmB,MAAM,YAAY,eAAe,EACzD,cAAc,KACd,EAAC;AACF,SAAK,MAAM,QAAQ,iBAClB,KAAI,KAAK,SAAS,IAAI,CAAE,iBAAgB,IAAI,KAAK,MAAM,GAAG,GAAG,CAAC;QACzD,SAAQ,IAAI,KAAK;GAEvB,QAAO,CAEP;EAGH,SAAQ,GAAG;GAEX,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,WAAQ,OAAO,6BAA6B,KAAK,IAAI,IAAI,EAAE;EAC3D;CAEF,SAAQ,GAAG;AACX,UAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;CAClD;AAKD,MAAK,MAAM,QAAQ,QAAS,iBAAgB,OAAO,KAAK;AAExD,SAAQ,IACP,KAAK,UAAU;EACd,SAAS,MAAM,KAAK,QAAQ,CAAC,MAAM;EACnC,iBAAiB,MAAM,KAAK,gBAAgB,CAAC,MAAM;EACnD;CACA,EAAC,CACF;AACD;AAGD,QAAQ,GAAG,sBAAsB,MAAM,CAEtC,EAAC;AAGF,OAAO,CAAC,MAAM,CAAC,MAAM;AACpB,SAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAE;EAAE,OAAO,EAAE,WAAW,OAAO,EAAE;CAAE,EAAC,CAAC;AAC3E,SAAQ,KAAK,EAAE;AACf,EAAC"}
1
+ {"version":3,"file":"sniffer-routes-worker.cjs","names":["Endpoint","GkmFunction","Cron","Subscriber","fg"],"sources":["../../src/deploy/sniffer-routes-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for route-based app sniffing.\n *\n * This script is executed in a subprocess with tsx loader,\n * which handles TypeScript compilation and path alias resolution.\n *\n * Usage:\n * node --import tsx ./sniffer-routes-worker.ts \"/path/to/app\" \"./src/endpoints/**\\/*.ts\"\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport type { Construct } from '@geekmidas/constructs';\nimport { Cron } from '@geekmidas/constructs/crons';\nimport { Endpoint } from '@geekmidas/constructs/endpoints';\nimport { Function as GkmFunction } from '@geekmidas/constructs/functions';\nimport { Subscriber } from '@geekmidas/constructs/subscribers';\nimport fg from 'fast-glob';\n\n// Get args from command line\nconst appPathArg = process.argv[2];\nconst routesPatternArg = process.argv[3];\n\nif (!appPathArg || !routesPatternArg) {\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: [],\n\t\t\terror: 'App path and routes pattern are required',\n\t\t}),\n\t);\n\tprocess.exit(1);\n}\n\n// After validation, these are guaranteed to be strings\nconst appPath: string = appPathArg;\nconst routesPattern: string = routesPatternArg;\n\n/**\n * Check if a value is a gkm construct.\n */\nfunction isConstruct(value: unknown): value is Construct {\n\treturn (\n\t\tEndpoint.isEndpoint(value) ||\n\t\tGkmFunction.isFunction(value) ||\n\t\tCron.isCron(value) ||\n\t\tSubscriber.isSubscriber(value)\n\t);\n}\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tconst envVars = new Set<string>();\n\tconst optionalEnvVars = new Set<string>();\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Find all route files matching the pattern\n\t\tconst files = await fg(routesPattern, {\n\t\t\tcwd: appPath,\n\t\t\tabsolute: true,\n\t\t});\n\n\t\t// Import each route file and find constructs\n\t\tfor (const file of files) {\n\t\t\ttry {\n\t\t\t\tconst module = await import(file);\n\n\t\t\t\t// Check all exports for constructs\n\t\t\t\tfor (const [, exportValue] of Object.entries(module)) {\n\t\t\t\t\tif (isConstruct(exportValue)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// `markOptional`, so a key read through `.optional()` or\n\t\t\t\t\t\t\t// `.default()` comes back suffixed `?` and is reported\n\t\t\t\t\t\t\t// apart from the rest. Without it every sniffed read\n\t\t\t\t\t\t\t// looked required, and a key that is *absent by design*\n\t\t\t\t\t\t\t// — `AUTH_COOKIE_DOMAIN`, published only when a surface\n\t\t\t\t\t\t\t// has a domain to widen a cookie to — failed the deploy\n\t\t\t\t\t\t\t// as though it were a missing secret.\n\t\t\t\t\t\t\tconst constructEnvVars = await exportValue.getEnvironment({\n\t\t\t\t\t\t\t\tmarkOptional: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const name of constructEnvVars) {\n\t\t\t\t\t\t\t\tif (name.endsWith('?')) optionalEnvVars.add(name.slice(0, -1));\n\t\t\t\t\t\t\t\telse envVars.add(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Individual construct may fail, continue with others\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Log import errors but continue with other files\n\t\t\t\tconst msg = e instanceof Error ? e.message : String(e);\n\t\t\t\tconsole.error(`[sniffer] Failed to import ${file}: ${msg}`);\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Output result as JSON (last line of stdout)\n\t// A key required by one construct and optional in another is required: the\n\t// strictest read is the one that fails at runtime.\n\tfor (const name of envVars) optionalEnvVars.delete(name);\n\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: Array.from(envVars).sort(),\n\t\t\toptionalEnvVars: Array.from(optionalEnvVars).sort(),\n\t\t\terror,\n\t\t}),\n\t);\n}\n\n// Handle unhandled rejections\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;;;;;AAqBA,MAAM,aAAa,QAAQ,KAAK;AAChC,MAAM,mBAAmB,QAAQ,KAAK;AAEtC,IAAI,CAAC,cAAc,CAAC,kBAAkB;CACrC,QAAQ,IACP,KAAK,UAAU;EACd,SAAS,CAAC;EACV,OAAO;CACR,CAAC,CACF;CACA,QAAQ,KAAK,CAAC;AACf;AAGA,MAAM,UAAkB;AACxB,MAAM,gBAAwB;;;;AAK9B,SAAS,YAAY,OAAoC;CACxD,OACCA,gCAAAA,SAAS,WAAW,KAAK,KACzBC,gCAAAA,SAAY,WAAW,KAAK,KAC5BC,4BAAAA,KAAK,OAAO,KAAK,KACjBC,kCAAAA,WAAW,aAAa,KAAK;AAE/B;;;;AAKA,eAAe,QAAuB;CACrC,MAAM,0BAAU,IAAI,IAAY;CAChC,MAAM,kCAAkB,IAAI,IAAY;CACxC,IAAI,QAAuB;CAE3B,IAAI;EAEH,MAAM,QAAQ,OAAA,GAAMC,UAAAA,QAAAA,CAAG,eAAe;GACrC,KAAK;GACL,UAAU;EACX,CAAC;EAGD,KAAK,MAAM,QAAQ,OAClB,IAAI;GACH,MAAM,SAAS,MAAM,OAAO;GAG5B,KAAK,MAAM,GAAG,gBAAgB,OAAO,QAAQ,MAAM,GAClD,IAAI,YAAY,WAAW,GAC1B,IAAI;IAQH,MAAM,mBAAmB,MAAM,YAAY,eAAe,EACzD,cAAc,KACf,CAAC;IACD,KAAK,MAAM,QAAQ,kBAClB,IAAI,KAAK,SAAS,GAAG,GAAG,gBAAgB,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;SACxD,QAAQ,IAAI,IAAI;GAEvB,QAAQ,CAER;EAGH,SAAS,GAAG;GAEX,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;GACrD,QAAQ,MAAM,8BAA8B,KAAK,IAAI,KAAK;EAC3D;CAEF,SAAS,GAAG;EACX,QAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;CAClD;CAKA,KAAK,MAAM,QAAQ,SAAS,gBAAgB,OAAO,IAAI;CAEvD,QAAQ,IACP,KAAK,UAAU;EACd,SAAS,MAAM,KAAK,OAAO,CAAC,CAAC,KAAK;EAClC,iBAAiB,MAAM,KAAK,eAAe,CAAC,CAAC,KAAK;EAClD;CACD,CAAC,CACF;AACD;AAGA,QAAQ,GAAG,4BAA4B,CAEvC,CAAC;AAGD,MAAM,CAAC,CAAC,OAAO,MAAM;CACpB,QAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAC;EAAG,OAAO,EAAE,WAAW,OAAO,CAAC;CAAE,CAAC,CAAC;CAC1E,QAAQ,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1 +1 @@
1
- export { };
1
+ export {}
@@ -1,9 +1,8 @@
1
- import fg from "fast-glob";
2
1
  import { Cron } from "@geekmidas/constructs/crons";
2
+ import { Subscriber } from "@geekmidas/constructs/subscribers";
3
+ import fg from "fast-glob";
3
4
  import { Endpoint } from "@geekmidas/constructs/endpoints";
4
5
  import { Function } from "@geekmidas/constructs/functions";
5
- import { Subscriber } from "@geekmidas/constructs/subscribers";
6
-
7
6
  //#region src/deploy/sniffer-routes-worker.ts
8
7
  const appPathArg = process.argv[2];
9
8
  const routesPatternArg = process.argv[3];
@@ -63,6 +62,7 @@ sniff().catch((e) => {
63
62
  }));
64
63
  process.exit(1);
65
64
  });
66
-
67
65
  //#endregion
66
+ export {};
67
+
68
68
  //# sourceMappingURL=sniffer-routes-worker.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-routes-worker.mjs","names":["appPath: string","routesPattern: string","value: unknown","error: string | null"],"sources":["../../src/deploy/sniffer-routes-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for route-based app sniffing.\n *\n * This script is executed in a subprocess with tsx loader,\n * which handles TypeScript compilation and path alias resolution.\n *\n * Usage:\n * node --import tsx ./sniffer-routes-worker.ts \"/path/to/app\" \"./src/endpoints/**\\/*.ts\"\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport type { Construct } from '@geekmidas/constructs';\nimport { Cron } from '@geekmidas/constructs/crons';\nimport { Endpoint } from '@geekmidas/constructs/endpoints';\nimport { Function as GkmFunction } from '@geekmidas/constructs/functions';\nimport { Subscriber } from '@geekmidas/constructs/subscribers';\nimport fg from 'fast-glob';\n\n// Get args from command line\nconst appPathArg = process.argv[2];\nconst routesPatternArg = process.argv[3];\n\nif (!appPathArg || !routesPatternArg) {\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: [],\n\t\t\terror: 'App path and routes pattern are required',\n\t\t}),\n\t);\n\tprocess.exit(1);\n}\n\n// After validation, these are guaranteed to be strings\nconst appPath: string = appPathArg;\nconst routesPattern: string = routesPatternArg;\n\n/**\n * Check if a value is a gkm construct.\n */\nfunction isConstruct(value: unknown): value is Construct {\n\treturn (\n\t\tEndpoint.isEndpoint(value) ||\n\t\tGkmFunction.isFunction(value) ||\n\t\tCron.isCron(value) ||\n\t\tSubscriber.isSubscriber(value)\n\t);\n}\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tconst envVars = new Set<string>();\n\tconst optionalEnvVars = new Set<string>();\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Find all route files matching the pattern\n\t\tconst files = await fg(routesPattern, {\n\t\t\tcwd: appPath,\n\t\t\tabsolute: true,\n\t\t});\n\n\t\t// Import each route file and find constructs\n\t\tfor (const file of files) {\n\t\t\ttry {\n\t\t\t\tconst module = await import(file);\n\n\t\t\t\t// Check all exports for constructs\n\t\t\t\tfor (const [, exportValue] of Object.entries(module)) {\n\t\t\t\t\tif (isConstruct(exportValue)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// `markOptional`, so a key read through `.optional()` or\n\t\t\t\t\t\t\t// `.default()` comes back suffixed `?` and is reported\n\t\t\t\t\t\t\t// apart from the rest. Without it every sniffed read\n\t\t\t\t\t\t\t// looked required, and a key that is *absent by design*\n\t\t\t\t\t\t\t// — `AUTH_COOKIE_DOMAIN`, published only when a surface\n\t\t\t\t\t\t\t// has a domain to widen a cookie to — failed the deploy\n\t\t\t\t\t\t\t// as though it were a missing secret.\n\t\t\t\t\t\t\tconst constructEnvVars = await exportValue.getEnvironment({\n\t\t\t\t\t\t\t\tmarkOptional: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const name of constructEnvVars) {\n\t\t\t\t\t\t\t\tif (name.endsWith('?')) optionalEnvVars.add(name.slice(0, -1));\n\t\t\t\t\t\t\t\telse envVars.add(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Individual construct may fail, continue with others\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Log import errors but continue with other files\n\t\t\t\tconst msg = e instanceof Error ? e.message : String(e);\n\t\t\t\tconsole.error(`[sniffer] Failed to import ${file}: ${msg}`);\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Output result as JSON (last line of stdout)\n\t// A key required by one construct and optional in another is required: the\n\t// strictest read is the one that fails at runtime.\n\tfor (const name of envVars) optionalEnvVars.delete(name);\n\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: Array.from(envVars).sort(),\n\t\t\toptionalEnvVars: Array.from(optionalEnvVars).sort(),\n\t\t\terror,\n\t\t}),\n\t);\n}\n\n// Handle unhandled rejections\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;;;;AAqBA,MAAM,aAAa,QAAQ,KAAK;AAChC,MAAM,mBAAmB,QAAQ,KAAK;AAEtC,KAAK,eAAe,kBAAkB;AACrC,SAAQ,IACP,KAAK,UAAU;EACd,SAAS,CAAE;EACX,OAAO;CACP,EAAC,CACF;AACD,SAAQ,KAAK,EAAE;AACf;AAGD,MAAMA,UAAkB;AACxB,MAAMC,gBAAwB;;;;AAK9B,SAAS,YAAYC,OAAoC;AACxD,QACC,SAAS,WAAW,MAAM,IAC1B,SAAY,WAAW,MAAM,IAC7B,KAAK,OAAO,MAAM,IAClB,WAAW,aAAa,MAAM;AAE/B;;;;AAKD,eAAe,QAAuB;CACrC,MAAM,0BAAU,IAAI;CACpB,MAAM,kCAAkB,IAAI;CAC5B,IAAIC,QAAuB;AAE3B,KAAI;EAEH,MAAM,QAAQ,MAAM,GAAG,eAAe;GACrC,KAAK;GACL,UAAU;EACV,EAAC;AAGF,OAAK,MAAM,QAAQ,MAClB,KAAI;GACH,MAAM,SAAS,MAAM,OAAO;AAG5B,QAAK,MAAM,GAAG,YAAY,IAAI,OAAO,QAAQ,OAAO,CACnD,KAAI,YAAY,YAAY,CAC3B,KAAI;IAQH,MAAM,mBAAmB,MAAM,YAAY,eAAe,EACzD,cAAc,KACd,EAAC;AACF,SAAK,MAAM,QAAQ,iBAClB,KAAI,KAAK,SAAS,IAAI,CAAE,iBAAgB,IAAI,KAAK,MAAM,GAAG,GAAG,CAAC;QACzD,SAAQ,IAAI,KAAK;GAEvB,QAAO,CAEP;EAGH,SAAQ,GAAG;GAEX,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,WAAQ,OAAO,6BAA6B,KAAK,IAAI,IAAI,EAAE;EAC3D;CAEF,SAAQ,GAAG;AACX,UAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;CAClD;AAKD,MAAK,MAAM,QAAQ,QAAS,iBAAgB,OAAO,KAAK;AAExD,SAAQ,IACP,KAAK,UAAU;EACd,SAAS,MAAM,KAAK,QAAQ,CAAC,MAAM;EACnC,iBAAiB,MAAM,KAAK,gBAAgB,CAAC,MAAM;EACnD;CACA,EAAC,CACF;AACD;AAGD,QAAQ,GAAG,sBAAsB,MAAM,CAEtC,EAAC;AAGF,OAAO,CAAC,MAAM,CAAC,MAAM;AACpB,SAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAE;EAAE,OAAO,EAAE,WAAW,OAAO,EAAE;CAAE,EAAC,CAAC;AAC3E,SAAQ,KAAK,EAAE;AACf,EAAC"}
1
+ {"version":3,"file":"sniffer-routes-worker.mjs","names":["GkmFunction"],"sources":["../../src/deploy/sniffer-routes-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for route-based app sniffing.\n *\n * This script is executed in a subprocess with tsx loader,\n * which handles TypeScript compilation and path alias resolution.\n *\n * Usage:\n * node --import tsx ./sniffer-routes-worker.ts \"/path/to/app\" \"./src/endpoints/**\\/*.ts\"\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport type { Construct } from '@geekmidas/constructs';\nimport { Cron } from '@geekmidas/constructs/crons';\nimport { Endpoint } from '@geekmidas/constructs/endpoints';\nimport { Function as GkmFunction } from '@geekmidas/constructs/functions';\nimport { Subscriber } from '@geekmidas/constructs/subscribers';\nimport fg from 'fast-glob';\n\n// Get args from command line\nconst appPathArg = process.argv[2];\nconst routesPatternArg = process.argv[3];\n\nif (!appPathArg || !routesPatternArg) {\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: [],\n\t\t\terror: 'App path and routes pattern are required',\n\t\t}),\n\t);\n\tprocess.exit(1);\n}\n\n// After validation, these are guaranteed to be strings\nconst appPath: string = appPathArg;\nconst routesPattern: string = routesPatternArg;\n\n/**\n * Check if a value is a gkm construct.\n */\nfunction isConstruct(value: unknown): value is Construct {\n\treturn (\n\t\tEndpoint.isEndpoint(value) ||\n\t\tGkmFunction.isFunction(value) ||\n\t\tCron.isCron(value) ||\n\t\tSubscriber.isSubscriber(value)\n\t);\n}\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tconst envVars = new Set<string>();\n\tconst optionalEnvVars = new Set<string>();\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Find all route files matching the pattern\n\t\tconst files = await fg(routesPattern, {\n\t\t\tcwd: appPath,\n\t\t\tabsolute: true,\n\t\t});\n\n\t\t// Import each route file and find constructs\n\t\tfor (const file of files) {\n\t\t\ttry {\n\t\t\t\tconst module = await import(file);\n\n\t\t\t\t// Check all exports for constructs\n\t\t\t\tfor (const [, exportValue] of Object.entries(module)) {\n\t\t\t\t\tif (isConstruct(exportValue)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// `markOptional`, so a key read through `.optional()` or\n\t\t\t\t\t\t\t// `.default()` comes back suffixed `?` and is reported\n\t\t\t\t\t\t\t// apart from the rest. Without it every sniffed read\n\t\t\t\t\t\t\t// looked required, and a key that is *absent by design*\n\t\t\t\t\t\t\t// — `AUTH_COOKIE_DOMAIN`, published only when a surface\n\t\t\t\t\t\t\t// has a domain to widen a cookie to — failed the deploy\n\t\t\t\t\t\t\t// as though it were a missing secret.\n\t\t\t\t\t\t\tconst constructEnvVars = await exportValue.getEnvironment({\n\t\t\t\t\t\t\t\tmarkOptional: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const name of constructEnvVars) {\n\t\t\t\t\t\t\t\tif (name.endsWith('?')) optionalEnvVars.add(name.slice(0, -1));\n\t\t\t\t\t\t\t\telse envVars.add(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// Individual construct may fail, continue with others\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Log import errors but continue with other files\n\t\t\t\tconst msg = e instanceof Error ? e.message : String(e);\n\t\t\t\tconsole.error(`[sniffer] Failed to import ${file}: ${msg}`);\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Output result as JSON (last line of stdout)\n\t// A key required by one construct and optional in another is required: the\n\t// strictest read is the one that fails at runtime.\n\tfor (const name of envVars) optionalEnvVars.delete(name);\n\n\tconsole.log(\n\t\tJSON.stringify({\n\t\t\tenvVars: Array.from(envVars).sort(),\n\t\t\toptionalEnvVars: Array.from(optionalEnvVars).sort(),\n\t\t\terror,\n\t\t}),\n\t);\n}\n\n// Handle unhandled rejections\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;;;AAqBA,MAAM,aAAa,QAAQ,KAAK;AAChC,MAAM,mBAAmB,QAAQ,KAAK;AAEtC,IAAI,CAAC,cAAc,CAAC,kBAAkB;CACrC,QAAQ,IACP,KAAK,UAAU;EACd,SAAS,CAAC;EACV,OAAO;CACR,CAAC,CACF;CACA,QAAQ,KAAK,CAAC;AACf;AAGA,MAAM,UAAkB;AACxB,MAAM,gBAAwB;;;;AAK9B,SAAS,YAAY,OAAoC;CACxD,OACC,SAAS,WAAW,KAAK,KACzBA,SAAY,WAAW,KAAK,KAC5B,KAAK,OAAO,KAAK,KACjB,WAAW,aAAa,KAAK;AAE/B;;;;AAKA,eAAe,QAAuB;CACrC,MAAM,0BAAU,IAAI,IAAY;CAChC,MAAM,kCAAkB,IAAI,IAAY;CACxC,IAAI,QAAuB;CAE3B,IAAI;EAEH,MAAM,QAAQ,MAAM,GAAG,eAAe;GACrC,KAAK;GACL,UAAU;EACX,CAAC;EAGD,KAAK,MAAM,QAAQ,OAClB,IAAI;GACH,MAAM,SAAS,MAAM,OAAO;GAG5B,KAAK,MAAM,GAAG,gBAAgB,OAAO,QAAQ,MAAM,GAClD,IAAI,YAAY,WAAW,GAC1B,IAAI;IAQH,MAAM,mBAAmB,MAAM,YAAY,eAAe,EACzD,cAAc,KACf,CAAC;IACD,KAAK,MAAM,QAAQ,kBAClB,IAAI,KAAK,SAAS,GAAG,GAAG,gBAAgB,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;SACxD,QAAQ,IAAI,IAAI;GAEvB,QAAQ,CAER;EAGH,SAAS,GAAG;GAEX,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;GACrD,QAAQ,MAAM,8BAA8B,KAAK,IAAI,KAAK;EAC3D;CAEF,SAAS,GAAG;EACX,QAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;CAClD;CAKA,KAAK,MAAM,QAAQ,SAAS,gBAAgB,OAAO,IAAI;CAEvD,QAAQ,IACP,KAAK,UAAU;EACd,SAAS,MAAM,KAAK,OAAO,CAAC,CAAC,KAAK;EAClC,iBAAiB,MAAM,KAAK,eAAe,CAAC,CAAC,KAAK;EAClD;CACD,CAAC,CACF;AACD;AAGA,QAAQ,GAAG,4BAA4B,CAEvC,CAAC;AAGD,MAAM,CAAC,CAAC,OAAO,MAAM;CACpB,QAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAC;EAAG,OAAO,EAAE,WAAW,OAAO,CAAC;CAAE,CAAC,CAAC;CAC1E,QAAQ,KAAK,CAAC;AACf,CAAC"}
@@ -1,7 +1,17 @@
1
- const require_chunk = require('../chunk-CUT6urMc.cjs');
2
- const node_url = require_chunk.__toESM(require("node:url"));
3
-
1
+ let node_url = require("node:url");
4
2
  //#region src/deploy/sniffer-worker.ts
3
+ /**
4
+ * Subprocess worker for entry app sniffing.
5
+ *
6
+ * This script is executed in a subprocess with the sniffer-loader.ts
7
+ * registered, which intercepts @geekmidas/envkit imports.
8
+ *
9
+ * Usage:
10
+ * node --import tsx --import ./sniffer-loader.ts ./sniffer-worker.ts /path/to/entry.ts
11
+ *
12
+ * Output (JSON to stdout):
13
+ * { "envVars": ["PORT", "DATABASE_URL", ...], "error": null }
14
+ */
5
15
  const entryPath = process.argv[2];
6
16
  if (!entryPath) {
7
17
  console.log(JSON.stringify({
@@ -17,8 +27,7 @@ const validEntryPath = entryPath;
17
27
  async function sniff() {
18
28
  let error = null;
19
29
  try {
20
- const entryUrl = (0, node_url.pathToFileURL)(validEntryPath).href;
21
- await import(entryUrl);
30
+ await import((0, node_url.pathToFileURL)(validEntryPath).href);
22
31
  } catch (e) {
23
32
  error = e instanceof Error ? e.message : String(e);
24
33
  }
@@ -39,6 +48,6 @@ sniff().catch((e) => {
39
48
  }));
40
49
  process.exit(1);
41
50
  });
42
-
43
51
  //#endregion
52
+
44
53
  //# sourceMappingURL=sniffer-worker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-worker.cjs","names":["validEntryPath: string","error: string | null"],"sources":["../../src/deploy/sniffer-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for entry app sniffing.\n *\n * This script is executed in a subprocess with the sniffer-loader.ts\n * registered, which intercepts @geekmidas/envkit imports.\n *\n * Usage:\n * node --import tsx --import ./sniffer-loader.ts ./sniffer-worker.ts /path/to/entry.ts\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport { pathToFileURL } from 'node:url';\nimport type { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\n\n// Extend globalThis type for the sniffer instance\ndeclare global {\n\t// eslint-disable-next-line no-var\n\tvar __envSniffer: SnifferEnvironmentParser | undefined;\n}\n\n// Get the entry file path from command line args\nconst entryPath = process.argv[2] as string | undefined;\n\nif (!entryPath) {\n\tconsole.log(\n\t\tJSON.stringify({ envVars: [], error: 'No entry file path provided' }),\n\t);\n\tprocess.exit(1);\n}\n\n// entryPath is guaranteed to be defined after the check above\nconst validEntryPath: string = entryPath;\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Import the entry file - this triggers:\n\t\t// 1. Entry imports config module\n\t\t// 2. Config module imports @geekmidas/envkit (intercepted by loader)\n\t\t// 3. Config creates EnvironmentParser (actually SnifferEnvironmentParser)\n\t\t// 4. Config calls .create() and .parse()\n\t\t// 5. Sniffer captures all accessed env var names\n\t\tconst entryUrl = pathToFileURL(validEntryPath).href;\n\t\tawait import(entryUrl);\n\t} catch (e) {\n\t\t// Entry may fail due to missing env vars or other runtime issues.\n\t\t// This is expected - we still capture the env vars that were accessed.\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Retrieve captured env vars from the global sniffer\n\tconst sniffer = globalThis.__envSniffer;\n\tconst envVars = sniffer ? sniffer.getEnvironmentVariables() : [];\n\tconst optionalEnvVars = sniffer ? sniffer.getOptionalVariables() : [];\n\n\t// Output result as JSON\n\tconsole.log(JSON.stringify({ envVars, optionalEnvVars, error }));\n}\n\n// Handle unhandled rejections (fire-and-forget promises)\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;AAuBA,MAAM,YAAY,QAAQ,KAAK;AAE/B,KAAK,WAAW;AACf,SAAQ,IACP,KAAK,UAAU;EAAE,SAAS,CAAE;EAAE,OAAO;CAA+B,EAAC,CACrE;AACD,SAAQ,KAAK,EAAE;AACf;AAGD,MAAMA,iBAAyB;;;;AAK/B,eAAe,QAAuB;CACrC,IAAIC,QAAuB;AAE3B,KAAI;EAOH,MAAM,WAAW,4BAAc,eAAe,CAAC;AAC/C,QAAM,OAAO;CACb,SAAQ,GAAG;AAGX,UAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;CAClD;CAGD,MAAM,UAAU,WAAW;CAC3B,MAAM,UAAU,UAAU,QAAQ,yBAAyB,GAAG,CAAE;CAChE,MAAM,kBAAkB,UAAU,QAAQ,sBAAsB,GAAG,CAAE;AAGrE,SAAQ,IAAI,KAAK,UAAU;EAAE;EAAS;EAAiB;CAAO,EAAC,CAAC;AAChE;AAGD,QAAQ,GAAG,sBAAsB,MAAM,CAEtC,EAAC;AAGF,OAAO,CAAC,MAAM,CAAC,MAAM;AACpB,SAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAE;EAAE,OAAO,EAAE,WAAW,OAAO,EAAE;CAAE,EAAC,CAAC;AAC3E,SAAQ,KAAK,EAAE;AACf,EAAC"}
1
+ {"version":3,"file":"sniffer-worker.cjs","names":["pathToFileURL"],"sources":["../../src/deploy/sniffer-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for entry app sniffing.\n *\n * This script is executed in a subprocess with the sniffer-loader.ts\n * registered, which intercepts @geekmidas/envkit imports.\n *\n * Usage:\n * node --import tsx --import ./sniffer-loader.ts ./sniffer-worker.ts /path/to/entry.ts\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport { pathToFileURL } from 'node:url';\nimport type { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\n\n// Extend globalThis type for the sniffer instance\ndeclare global {\n\t// eslint-disable-next-line no-var\n\tvar __envSniffer: SnifferEnvironmentParser | undefined;\n}\n\n// Get the entry file path from command line args\nconst entryPath = process.argv[2] as string | undefined;\n\nif (!entryPath) {\n\tconsole.log(\n\t\tJSON.stringify({ envVars: [], error: 'No entry file path provided' }),\n\t);\n\tprocess.exit(1);\n}\n\n// entryPath is guaranteed to be defined after the check above\nconst validEntryPath: string = entryPath;\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Import the entry file - this triggers:\n\t\t// 1. Entry imports config module\n\t\t// 2. Config module imports @geekmidas/envkit (intercepted by loader)\n\t\t// 3. Config creates EnvironmentParser (actually SnifferEnvironmentParser)\n\t\t// 4. Config calls .create() and .parse()\n\t\t// 5. Sniffer captures all accessed env var names\n\t\tconst entryUrl = pathToFileURL(validEntryPath).href;\n\t\tawait import(entryUrl);\n\t} catch (e) {\n\t\t// Entry may fail due to missing env vars or other runtime issues.\n\t\t// This is expected - we still capture the env vars that were accessed.\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Retrieve captured env vars from the global sniffer\n\tconst sniffer = globalThis.__envSniffer;\n\tconst envVars = sniffer ? sniffer.getEnvironmentVariables() : [];\n\tconst optionalEnvVars = sniffer ? sniffer.getOptionalVariables() : [];\n\n\t// Output result as JSON\n\tconsole.log(JSON.stringify({ envVars, optionalEnvVars, error }));\n}\n\n// Handle unhandled rejections (fire-and-forget promises)\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,YAAY,QAAQ,KAAK;AAE/B,IAAI,CAAC,WAAW;CACf,QAAQ,IACP,KAAK,UAAU;EAAE,SAAS,CAAC;EAAG,OAAO;CAA8B,CAAC,CACrE;CACA,QAAQ,KAAK,CAAC;AACf;AAGA,MAAM,iBAAyB;;;;AAK/B,eAAe,QAAuB;CACrC,IAAI,QAAuB;CAE3B,IAAI;EAQH,MAAM,QAAA,GADWA,SAAAA,cAAAA,CAAc,cAAc,CAAC,CAAC;CAEhD,SAAS,GAAG;EAGX,QAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;CAClD;CAGA,MAAM,UAAU,WAAW;CAC3B,MAAM,UAAU,UAAU,QAAQ,wBAAwB,IAAI,CAAC;CAC/D,MAAM,kBAAkB,UAAU,QAAQ,qBAAqB,IAAI,CAAC;CAGpE,QAAQ,IAAI,KAAK,UAAU;EAAE;EAAS;EAAiB;CAAM,CAAC,CAAC;AAChE;AAGA,QAAQ,GAAG,4BAA4B,CAEvC,CAAC;AAGD,MAAM,CAAC,CAAC,OAAO,MAAM;CACpB,QAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAC;EAAG,OAAO,EAAE,WAAW,OAAO,CAAC;CAAE,CAAC,CAAC;CAC1E,QAAQ,KAAK,CAAC;AACf,CAAC"}
@@ -1,9 +1,7 @@
1
1
  import { SnifferEnvironmentParser } from "@geekmidas/envkit/sniffer";
2
-
3
2
  //#region src/deploy/sniffer-worker.d.ts
4
-
5
3
  declare global {
6
4
  var __envSniffer: SnifferEnvironmentParser | undefined;
7
5
  }
8
- //# sourceMappingURL=sniffer-worker.d.ts.map
6
+ //#endregion
9
7
  //# sourceMappingURL=sniffer-worker.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-worker.d.cts","names":[],"sources":["../../src/deploy/sniffer-worker.ts"],"sourcesContent":[],"mappings":";;;;;oBAmBmB"}
1
+ {"version":3,"file":"sniffer-worker.d.cts","names":[],"sources":["../../src/deploy/sniffer-worker.ts"],"mappings":";;QAiBQ;MAEH,cAAc"}
@@ -1,9 +1,7 @@
1
1
  import { SnifferEnvironmentParser } from "@geekmidas/envkit/sniffer";
2
-
3
2
  //#region src/deploy/sniffer-worker.d.ts
4
-
5
3
  declare global {
6
4
  var __envSniffer: SnifferEnvironmentParser | undefined;
7
5
  }
8
- //# sourceMappingURL=sniffer-worker.d.ts.map
6
+ //#endregion
9
7
  //# sourceMappingURL=sniffer-worker.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-worker.d.mts","names":[],"sources":["../../src/deploy/sniffer-worker.ts"],"sourcesContent":[],"mappings":";;;;;oBAmBmB"}
1
+ {"version":3,"file":"sniffer-worker.d.mts","names":[],"sources":["../../src/deploy/sniffer-worker.ts"],"mappings":";;QAiBQ;MAEH,cAAc"}
@@ -1,6 +1,17 @@
1
1
  import { pathToFileURL } from "node:url";
2
-
3
2
  //#region src/deploy/sniffer-worker.ts
3
+ /**
4
+ * Subprocess worker for entry app sniffing.
5
+ *
6
+ * This script is executed in a subprocess with the sniffer-loader.ts
7
+ * registered, which intercepts @geekmidas/envkit imports.
8
+ *
9
+ * Usage:
10
+ * node --import tsx --import ./sniffer-loader.ts ./sniffer-worker.ts /path/to/entry.ts
11
+ *
12
+ * Output (JSON to stdout):
13
+ * { "envVars": ["PORT", "DATABASE_URL", ...], "error": null }
14
+ */
4
15
  const entryPath = process.argv[2];
5
16
  if (!entryPath) {
6
17
  console.log(JSON.stringify({
@@ -16,8 +27,7 @@ const validEntryPath = entryPath;
16
27
  async function sniff() {
17
28
  let error = null;
18
29
  try {
19
- const entryUrl = pathToFileURL(validEntryPath).href;
20
- await import(entryUrl);
30
+ await import(pathToFileURL(validEntryPath).href);
21
31
  } catch (e) {
22
32
  error = e instanceof Error ? e.message : String(e);
23
33
  }
@@ -38,6 +48,7 @@ sniff().catch((e) => {
38
48
  }));
39
49
  process.exit(1);
40
50
  });
41
-
42
51
  //#endregion
52
+ export {};
53
+
43
54
  //# sourceMappingURL=sniffer-worker.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sniffer-worker.mjs","names":["validEntryPath: string","error: string | null"],"sources":["../../src/deploy/sniffer-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for entry app sniffing.\n *\n * This script is executed in a subprocess with the sniffer-loader.ts\n * registered, which intercepts @geekmidas/envkit imports.\n *\n * Usage:\n * node --import tsx --import ./sniffer-loader.ts ./sniffer-worker.ts /path/to/entry.ts\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport { pathToFileURL } from 'node:url';\nimport type { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\n\n// Extend globalThis type for the sniffer instance\ndeclare global {\n\t// eslint-disable-next-line no-var\n\tvar __envSniffer: SnifferEnvironmentParser | undefined;\n}\n\n// Get the entry file path from command line args\nconst entryPath = process.argv[2] as string | undefined;\n\nif (!entryPath) {\n\tconsole.log(\n\t\tJSON.stringify({ envVars: [], error: 'No entry file path provided' }),\n\t);\n\tprocess.exit(1);\n}\n\n// entryPath is guaranteed to be defined after the check above\nconst validEntryPath: string = entryPath;\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Import the entry file - this triggers:\n\t\t// 1. Entry imports config module\n\t\t// 2. Config module imports @geekmidas/envkit (intercepted by loader)\n\t\t// 3. Config creates EnvironmentParser (actually SnifferEnvironmentParser)\n\t\t// 4. Config calls .create() and .parse()\n\t\t// 5. Sniffer captures all accessed env var names\n\t\tconst entryUrl = pathToFileURL(validEntryPath).href;\n\t\tawait import(entryUrl);\n\t} catch (e) {\n\t\t// Entry may fail due to missing env vars or other runtime issues.\n\t\t// This is expected - we still capture the env vars that were accessed.\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Retrieve captured env vars from the global sniffer\n\tconst sniffer = globalThis.__envSniffer;\n\tconst envVars = sniffer ? sniffer.getEnvironmentVariables() : [];\n\tconst optionalEnvVars = sniffer ? sniffer.getOptionalVariables() : [];\n\n\t// Output result as JSON\n\tconsole.log(JSON.stringify({ envVars, optionalEnvVars, error }));\n}\n\n// Handle unhandled rejections (fire-and-forget promises)\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;AAuBA,MAAM,YAAY,QAAQ,KAAK;AAE/B,KAAK,WAAW;AACf,SAAQ,IACP,KAAK,UAAU;EAAE,SAAS,CAAE;EAAE,OAAO;CAA+B,EAAC,CACrE;AACD,SAAQ,KAAK,EAAE;AACf;AAGD,MAAMA,iBAAyB;;;;AAK/B,eAAe,QAAuB;CACrC,IAAIC,QAAuB;AAE3B,KAAI;EAOH,MAAM,WAAW,cAAc,eAAe,CAAC;AAC/C,QAAM,OAAO;CACb,SAAQ,GAAG;AAGX,UAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;CAClD;CAGD,MAAM,UAAU,WAAW;CAC3B,MAAM,UAAU,UAAU,QAAQ,yBAAyB,GAAG,CAAE;CAChE,MAAM,kBAAkB,UAAU,QAAQ,sBAAsB,GAAG,CAAE;AAGrE,SAAQ,IAAI,KAAK,UAAU;EAAE;EAAS;EAAiB;CAAO,EAAC,CAAC;AAChE;AAGD,QAAQ,GAAG,sBAAsB,MAAM,CAEtC,EAAC;AAGF,OAAO,CAAC,MAAM,CAAC,MAAM;AACpB,SAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAE;EAAE,OAAO,EAAE,WAAW,OAAO,EAAE;CAAE,EAAC,CAAC;AAC3E,SAAQ,KAAK,EAAE;AACf,EAAC"}
1
+ {"version":3,"file":"sniffer-worker.mjs","names":[],"sources":["../../src/deploy/sniffer-worker.ts"],"sourcesContent":["/**\n * Subprocess worker for entry app sniffing.\n *\n * This script is executed in a subprocess with the sniffer-loader.ts\n * registered, which intercepts @geekmidas/envkit imports.\n *\n * Usage:\n * node --import tsx --import ./sniffer-loader.ts ./sniffer-worker.ts /path/to/entry.ts\n *\n * Output (JSON to stdout):\n * { \"envVars\": [\"PORT\", \"DATABASE_URL\", ...], \"error\": null }\n */\n\nimport { pathToFileURL } from 'node:url';\nimport type { SnifferEnvironmentParser } from '@geekmidas/envkit/sniffer';\n\n// Extend globalThis type for the sniffer instance\ndeclare global {\n\t// eslint-disable-next-line no-var\n\tvar __envSniffer: SnifferEnvironmentParser | undefined;\n}\n\n// Get the entry file path from command line args\nconst entryPath = process.argv[2] as string | undefined;\n\nif (!entryPath) {\n\tconsole.log(\n\t\tJSON.stringify({ envVars: [], error: 'No entry file path provided' }),\n\t);\n\tprocess.exit(1);\n}\n\n// entryPath is guaranteed to be defined after the check above\nconst validEntryPath: string = entryPath;\n\n/**\n * Main sniffing function\n */\nasync function sniff(): Promise<void> {\n\tlet error: string | null = null;\n\n\ttry {\n\t\t// Import the entry file - this triggers:\n\t\t// 1. Entry imports config module\n\t\t// 2. Config module imports @geekmidas/envkit (intercepted by loader)\n\t\t// 3. Config creates EnvironmentParser (actually SnifferEnvironmentParser)\n\t\t// 4. Config calls .create() and .parse()\n\t\t// 5. Sniffer captures all accessed env var names\n\t\tconst entryUrl = pathToFileURL(validEntryPath).href;\n\t\tawait import(entryUrl);\n\t} catch (e) {\n\t\t// Entry may fail due to missing env vars or other runtime issues.\n\t\t// This is expected - we still capture the env vars that were accessed.\n\t\terror = e instanceof Error ? e.message : String(e);\n\t}\n\n\t// Retrieve captured env vars from the global sniffer\n\tconst sniffer = globalThis.__envSniffer;\n\tconst envVars = sniffer ? sniffer.getEnvironmentVariables() : [];\n\tconst optionalEnvVars = sniffer ? sniffer.getOptionalVariables() : [];\n\n\t// Output result as JSON\n\tconsole.log(JSON.stringify({ envVars, optionalEnvVars, error }));\n}\n\n// Handle unhandled rejections (fire-and-forget promises)\nprocess.on('unhandledRejection', () => {\n\t// Silently ignore - we only care about env var capture\n});\n\n// Run the sniffer\nsniff().catch((e) => {\n\tconsole.log(JSON.stringify({ envVars: [], error: e.message || String(e) }));\n\tprocess.exit(1);\n});\n"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,YAAY,QAAQ,KAAK;AAE/B,IAAI,CAAC,WAAW;CACf,QAAQ,IACP,KAAK,UAAU;EAAE,SAAS,CAAC;EAAG,OAAO;CAA8B,CAAC,CACrE;CACA,QAAQ,KAAK,CAAC;AACf;AAGA,MAAM,iBAAyB;;;;AAK/B,eAAe,QAAuB;CACrC,IAAI,QAAuB;CAE3B,IAAI;EAQH,MAAM,OADW,cAAc,cAAc,CAAC,CAAC;CAEhD,SAAS,GAAG;EAGX,QAAQ,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;CAClD;CAGA,MAAM,UAAU,WAAW;CAC3B,MAAM,UAAU,UAAU,QAAQ,wBAAwB,IAAI,CAAC;CAC/D,MAAM,kBAAkB,UAAU,QAAQ,qBAAqB,IAAI,CAAC;CAGpE,QAAQ,IAAI,KAAK,UAAU;EAAE;EAAS;EAAiB;CAAM,CAAC,CAAC;AAChE;AAGA,QAAQ,GAAG,4BAA4B,CAEvC,CAAC;AAGD,MAAM,CAAC,CAAC,OAAO,MAAM;CACpB,QAAQ,IAAI,KAAK,UAAU;EAAE,SAAS,CAAC;EAAG,OAAO,EAAE,WAAW,OAAO,CAAC;CAAE,CAAC,CAAC;CAC1E,QAAQ,KAAK,CAAC;AACf,CAAC"}