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

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 (241) hide show
  1. package/dist/{HostingerProvider-BcyFRbqV.mjs → HostingerProvider-BY26bWwB.mjs} +20 -21
  2. package/dist/HostingerProvider-BY26bWwB.mjs.map +1 -0
  3. package/dist/{HostingerProvider-BOvsgATO.cjs → HostingerProvider-BZFGYYVA.cjs} +21 -22
  4. package/dist/HostingerProvider-BZFGYYVA.cjs.map +1 -0
  5. package/dist/{LocalStateProvider-yjXZXZDM.cjs → LocalStateProvider-7HR6SS2t.cjs} +11 -6
  6. package/dist/LocalStateProvider-7HR6SS2t.cjs.map +1 -0
  7. package/dist/{LocalStateProvider-Bq-0C0sg.mjs → LocalStateProvider-D7QyJoLM.mjs} +10 -4
  8. package/dist/LocalStateProvider-D7QyJoLM.mjs.map +1 -0
  9. package/dist/{Route53Provider-C0xmer8U.mjs → Route53Provider-Cvj40A8I.mjs} +12 -12
  10. package/dist/Route53Provider-Cvj40A8I.mjs.map +1 -0
  11. package/dist/{Route53Provider-CH9XH7bz.cjs → Route53Provider-DVILBsvV.cjs} +20 -21
  12. package/dist/Route53Provider-DVILBsvV.cjs.map +1 -0
  13. package/dist/{SSMStateProvider-DOZifZfE.mjs → SSMStateProvider-B0Hu1MKZ.mjs} +13 -4
  14. package/dist/SSMStateProvider-B0Hu1MKZ.mjs.map +1 -0
  15. package/dist/{SSMStateProvider-CXtNgPfy.cjs → SSMStateProvider-VrQ-yeqd.cjs} +17 -9
  16. package/dist/SSMStateProvider-VrQ-yeqd.cjs.map +1 -0
  17. package/dist/{backup-provisioner-cE2PuCTb.cjs → backup-provisioner-BmhIO_Yr.cjs} +21 -19
  18. package/dist/backup-provisioner-BmhIO_Yr.cjs.map +1 -0
  19. package/dist/{backup-provisioner-DXXg6FIL.mjs → backup-provisioner-DIVCbfee.mjs} +10 -7
  20. package/dist/backup-provisioner-DIVCbfee.mjs.map +1 -0
  21. package/dist/{bundler-BMekgx7a.cjs → bundler-BeNDZdHQ.cjs} +9 -12
  22. package/dist/bundler-BeNDZdHQ.cjs.map +1 -0
  23. package/dist/{bundler-Bux2iF-v.mjs → bundler-BodTL4kf.mjs} +8 -10
  24. package/dist/bundler-BodTL4kf.mjs.map +1 -0
  25. package/dist/{config-RYR9j6EF.cjs → config-Q1rvKHvw.cjs} +74 -69
  26. package/dist/config-Q1rvKHvw.cjs.map +1 -0
  27. package/dist/{config-DTsVjKZD.mjs → config-pqGD3hF9.mjs} +26 -14
  28. package/dist/config-pqGD3hF9.mjs.map +1 -0
  29. package/dist/config.cjs +4 -5
  30. package/dist/config.d.cts +14 -17
  31. package/dist/config.d.cts.map +1 -1
  32. package/dist/config.d.mts +14 -17
  33. package/dist/config.d.mts.map +1 -1
  34. package/dist/config.mjs +3 -5
  35. package/dist/{credentials-jMJC63qs.mjs → credentials-BekkKtY_.mjs} +234 -79
  36. package/dist/credentials-BekkKtY_.mjs.map +1 -0
  37. package/dist/{credentials-DQRvPz2S.cjs → credentials-Q6F0uqJq.cjs} +384 -236
  38. package/dist/credentials-Q6F0uqJq.cjs.map +1 -0
  39. package/dist/deploy/sniffer-envkit-patch.cjs +18 -10
  40. package/dist/deploy/sniffer-envkit-patch.cjs.map +1 -1
  41. package/dist/deploy/sniffer-envkit-patch.d.cts +0 -2
  42. package/dist/deploy/sniffer-envkit-patch.d.cts.map +1 -1
  43. package/dist/deploy/sniffer-envkit-patch.d.mts +0 -2
  44. package/dist/deploy/sniffer-envkit-patch.d.mts.map +1 -1
  45. package/dist/deploy/sniffer-envkit-patch.mjs +10 -2
  46. package/dist/deploy/sniffer-envkit-patch.mjs.map +1 -1
  47. package/dist/deploy/sniffer-hooks.cjs +13 -7
  48. package/dist/deploy/sniffer-hooks.cjs.map +1 -1
  49. package/dist/deploy/sniffer-hooks.d.cts +1 -2
  50. package/dist/deploy/sniffer-hooks.d.cts.map +1 -1
  51. package/dist/deploy/sniffer-hooks.d.mts +1 -2
  52. package/dist/deploy/sniffer-hooks.d.mts.map +1 -1
  53. package/dist/deploy/sniffer-hooks.mjs +9 -2
  54. package/dist/deploy/sniffer-hooks.mjs.map +1 -1
  55. package/dist/deploy/sniffer-loader.cjs +16 -7
  56. package/dist/deploy/sniffer-loader.cjs.map +1 -1
  57. package/dist/deploy/sniffer-loader.d.cts +1 -1
  58. package/dist/deploy/sniffer-loader.d.mts +1 -1
  59. package/dist/deploy/sniffer-loader.mjs +13 -2
  60. package/dist/deploy/sniffer-loader.mjs.map +1 -1
  61. package/dist/deploy/sniffer-routes-worker.cjs +11 -11
  62. package/dist/deploy/sniffer-routes-worker.cjs.map +1 -1
  63. package/dist/deploy/sniffer-routes-worker.d.cts +1 -1
  64. package/dist/deploy/sniffer-routes-worker.d.mts +1 -1
  65. package/dist/deploy/sniffer-routes-worker.mjs +2 -2
  66. package/dist/deploy/sniffer-routes-worker.mjs.map +1 -1
  67. package/dist/deploy/sniffer-worker.cjs +15 -6
  68. package/dist/deploy/sniffer-worker.cjs.map +1 -1
  69. package/dist/deploy/sniffer-worker.d.cts +1 -3
  70. package/dist/deploy/sniffer-worker.d.cts.map +1 -1
  71. package/dist/deploy/sniffer-worker.d.mts +1 -3
  72. package/dist/deploy/sniffer-worker.d.mts.map +1 -1
  73. package/dist/deploy/sniffer-worker.mjs +15 -4
  74. package/dist/deploy/sniffer-worker.mjs.map +1 -1
  75. package/dist/{discover-DmW9Bscc.cjs → discover-BERGFg8v.cjs} +68 -70
  76. package/dist/discover-BERGFg8v.cjs.map +1 -0
  77. package/dist/{discover-BYHQwQqu.mjs → discover-CK-n3w6b.mjs} +22 -20
  78. package/dist/discover-CK-n3w6b.mjs.map +1 -0
  79. package/dist/{emit-CUD1BWls.cjs → emit-BdoPFjZf.cjs} +53 -36
  80. package/dist/emit-BdoPFjZf.cjs.map +1 -0
  81. package/dist/{emit-CIlvnDvV.mjs → emit-Bzq7JsMP.mjs} +24 -6
  82. package/dist/emit-Bzq7JsMP.mjs.map +1 -0
  83. package/dist/{fullstack-secrets-B6KBHf-g.mjs → fullstack-secrets-BET8gqwK.mjs} +9 -15
  84. package/dist/fullstack-secrets-BET8gqwK.mjs.map +1 -0
  85. package/dist/{fullstack-secrets-DL8v0y4D.cjs → fullstack-secrets-DXsWO-5m.cjs} +19 -26
  86. package/dist/fullstack-secrets-DXsWO-5m.cjs.map +1 -0
  87. package/dist/{generator-VE2JrFlY.mjs → generator-LfZU7NlU.mjs} +8 -14
  88. package/dist/generator-LfZU7NlU.mjs.map +1 -0
  89. package/dist/{generator-CNzBw7g5.cjs → generator-Wdfp0jCS.cjs} +38 -45
  90. package/dist/generator-Wdfp0jCS.cjs.map +1 -0
  91. package/dist/{github-BThvbf2W.cjs → github-BfflNPVe.cjs} +36 -30
  92. package/dist/{github-BThvbf2W.cjs.map → github-BfflNPVe.cjs.map} +1 -1
  93. package/dist/{github-DpMZurEK.mjs → github-CRwnxKmD.mjs} +27 -20
  94. package/dist/github-CRwnxKmD.mjs.map +1 -0
  95. package/dist/{index-BzJ7QJ9c.d.mts → index-Cd-qeOam.d.mts} +3 -8
  96. package/dist/index-Cd-qeOam.d.mts.map +1 -0
  97. package/dist/{index-CfMjtdVC.d.cts → index-D-iAVHx-.d.cts} +3 -8
  98. package/dist/index-D-iAVHx-.d.cts.map +1 -0
  99. package/dist/index.cjs +2894 -1582
  100. package/dist/index.cjs.map +1 -1
  101. package/dist/index.d.cts +1 -1
  102. package/dist/index.d.mts +1 -1
  103. package/dist/index.mjs +2765 -1470
  104. package/dist/index.mjs.map +1 -1
  105. package/dist/{keystore-TxeYM7an.mjs → keystore-B4PRlbgE.mjs} +5 -7
  106. package/dist/keystore-B4PRlbgE.mjs.map +1 -0
  107. package/dist/{keystore-C9rint2E.cjs → keystore-DgGRj2Yy.cjs} +23 -26
  108. package/dist/keystore-DgGRj2Yy.cjs.map +1 -0
  109. package/dist/{openapi-DWLTsYLL.cjs → openapi-Dcbme-Us.cjs} +134 -171
  110. package/dist/openapi-Dcbme-Us.cjs.map +1 -0
  111. package/dist/openapi-react-query.cjs +156 -2
  112. package/dist/openapi-react-query.cjs.map +1 -0
  113. package/dist/openapi-react-query.d.cts +1 -3
  114. package/dist/openapi-react-query.d.cts.map +1 -1
  115. package/dist/openapi-react-query.d.mts +1 -3
  116. package/dist/openapi-react-query.d.mts.map +1 -1
  117. package/dist/openapi-react-query.mjs +156 -2
  118. package/dist/openapi-react-query.mjs.map +1 -0
  119. package/dist/{openapi-Bs3-5q_r.mjs → openapi-vy4JzhUv.mjs} +76 -106
  120. package/dist/openapi-vy4JzhUv.mjs.map +1 -0
  121. package/dist/openapi.cjs +3 -6
  122. package/dist/openapi.d.cts +8 -11
  123. package/dist/openapi.d.cts.map +1 -1
  124. package/dist/openapi.d.mts +8 -11
  125. package/dist/openapi.d.mts.map +1 -1
  126. package/dist/openapi.mjs +2 -6
  127. package/dist/reconcile/public.cjs +4 -4
  128. package/dist/reconcile/public.d.cts +8 -26
  129. package/dist/reconcile/public.d.cts.map +1 -1
  130. package/dist/reconcile/public.d.mts +8 -26
  131. package/dist/reconcile/public.d.mts.map +1 -1
  132. package/dist/reconcile/public.mjs +3 -4
  133. package/dist/{reconcile-Bhw5fmKu.cjs → reconcile-Dd2iyILf.cjs} +4 -7
  134. package/dist/reconcile-Dd2iyILf.cjs.map +1 -0
  135. package/dist/{reconcile-BI0tWkwz.mjs → reconcile-DhQ00DpU.mjs} +4 -7
  136. package/dist/reconcile-DhQ00DpU.mjs.map +1 -0
  137. package/dist/rolldown-runtime-BhDjJH2R.mjs +15 -0
  138. package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-C0BPl7ul.cjs} +23 -10
  139. package/dist/{storage-CSNplaJn.cjs → storage-C-30BD1e.cjs} +59 -69
  140. package/dist/storage-C-30BD1e.cjs.map +1 -0
  141. package/dist/{storage-B020InPW.mjs → storage-P_b3w7uj.mjs} +22 -13
  142. package/dist/storage-P_b3w7uj.mjs.map +1 -0
  143. package/dist/{sync-CzHXiR9c.mjs → sync-B3xxXtJT.mjs} +18 -6
  144. package/dist/sync-B3xxXtJT.mjs.map +1 -0
  145. package/dist/{sync-0ILCb-1S.cjs → sync-D7uTIIEi.cjs} +43 -25
  146. package/dist/sync-D7uTIIEi.cjs.map +1 -0
  147. package/dist/types-BGo5TaNE.d.mts +6164 -0
  148. package/dist/types-BGo5TaNE.d.mts.map +1 -0
  149. package/dist/types-C5ZNpUad.d.cts +6165 -0
  150. package/dist/types-C5ZNpUad.d.cts.map +1 -0
  151. package/dist/workspace/index.cjs +3 -3
  152. package/dist/workspace/index.d.cts +3 -3
  153. package/dist/workspace/index.d.mts +3 -3
  154. package/dist/workspace/index.mjs +2 -3
  155. package/dist/{workspace-CtnZnWsa.mjs → workspace-CgwmXEtc.mjs} +712 -806
  156. package/dist/workspace-CgwmXEtc.mjs.map +1 -0
  157. package/dist/{workspace-DPV7FtAv.cjs → workspace-mFpI_ky_.cjs} +881 -976
  158. package/dist/workspace-mFpI_ky_.cjs.map +1 -0
  159. package/package.json +14 -14
  160. package/dist/CachedStateProvider-BEBl2wQT.cjs +0 -60
  161. package/dist/CachedStateProvider-BEBl2wQT.cjs.map +0 -1
  162. package/dist/CachedStateProvider-C-8wtlto.mjs +0 -3
  163. package/dist/CachedStateProvider-Co4n5Wvs.mjs +0 -54
  164. package/dist/CachedStateProvider-Co4n5Wvs.mjs.map +0 -1
  165. package/dist/CachedStateProvider-DqhGpzsm.cjs +0 -3
  166. package/dist/HostingerProvider-BOvsgATO.cjs.map +0 -1
  167. package/dist/HostingerProvider-BcyFRbqV.mjs.map +0 -1
  168. package/dist/LocalStateProvider-Bq-0C0sg.mjs.map +0 -1
  169. package/dist/LocalStateProvider-yjXZXZDM.cjs.map +0 -1
  170. package/dist/Route53Provider-C0xmer8U.mjs.map +0 -1
  171. package/dist/Route53Provider-CH9XH7bz.cjs.map +0 -1
  172. package/dist/SSMStateProvider-CXtNgPfy.cjs.map +0 -1
  173. package/dist/SSMStateProvider-DOZifZfE.mjs.map +0 -1
  174. package/dist/backup-provisioner-DXXg6FIL.mjs.map +0 -1
  175. package/dist/backup-provisioner-cE2PuCTb.cjs.map +0 -1
  176. package/dist/bundler-BMekgx7a.cjs.map +0 -1
  177. package/dist/bundler-Bux2iF-v.mjs.map +0 -1
  178. package/dist/chunk-Duj1WY3L.mjs +0 -7
  179. package/dist/config-DTsVjKZD.mjs.map +0 -1
  180. package/dist/config-RYR9j6EF.cjs.map +0 -1
  181. package/dist/credentials-B5zRHdAl.mjs +0 -141
  182. package/dist/credentials-B5zRHdAl.mjs.map +0 -1
  183. package/dist/credentials-BapzjyV5.cjs +0 -195
  184. package/dist/credentials-BapzjyV5.cjs.map +0 -1
  185. package/dist/credentials-DQRvPz2S.cjs.map +0 -1
  186. package/dist/credentials-jMJC63qs.mjs.map +0 -1
  187. package/dist/discover-BYHQwQqu.mjs.map +0 -1
  188. package/dist/discover-DmW9Bscc.cjs.map +0 -1
  189. package/dist/dokploy-api-5cK2InBm.cjs +0 -3
  190. package/dist/dokploy-api-D2Ny4Jrc.mjs +0 -3
  191. package/dist/dokploy-api-pdaBryoY.mjs +0 -706
  192. package/dist/dokploy-api-pdaBryoY.mjs.map +0 -1
  193. package/dist/dokploy-api-zqKe9lHH.cjs +0 -718
  194. package/dist/dokploy-api-zqKe9lHH.cjs.map +0 -1
  195. package/dist/emit-CIlvnDvV.mjs.map +0 -1
  196. package/dist/emit-CUD1BWls.cjs.map +0 -1
  197. package/dist/encryption-D2pL3tHH.cjs +0 -54
  198. package/dist/encryption-D2pL3tHH.cjs.map +0 -1
  199. package/dist/encryption-YDsXXi6w.mjs +0 -3
  200. package/dist/encryption-_4zwjOAR.mjs +0 -42
  201. package/dist/encryption-_4zwjOAR.mjs.map +0 -1
  202. package/dist/encryption-sQ2Oxx0d.cjs +0 -4
  203. package/dist/fullstack-secrets-B6KBHf-g.mjs.map +0 -1
  204. package/dist/fullstack-secrets-DL8v0y4D.cjs.map +0 -1
  205. package/dist/generator-CNzBw7g5.cjs.map +0 -1
  206. package/dist/generator-VE2JrFlY.mjs.map +0 -1
  207. package/dist/github-DpMZurEK.mjs.map +0 -1
  208. package/dist/index-BzJ7QJ9c.d.mts.map +0 -1
  209. package/dist/index-CfMjtdVC.d.cts.map +0 -1
  210. package/dist/keystore-C9rint2E.cjs.map +0 -1
  211. package/dist/keystore-TxeYM7an.mjs.map +0 -1
  212. package/dist/openapi-Bs3-5q_r.mjs.map +0 -1
  213. package/dist/openapi-DWLTsYLL.cjs.map +0 -1
  214. package/dist/openapi-react-query-Byltvm_7.mjs +0 -167
  215. package/dist/openapi-react-query-Byltvm_7.mjs.map +0 -1
  216. package/dist/openapi-react-query-CmJ1xDbn.cjs +0 -173
  217. package/dist/openapi-react-query-CmJ1xDbn.cjs.map +0 -1
  218. package/dist/reconcile-BI0tWkwz.mjs.map +0 -1
  219. package/dist/reconcile-Bhw5fmKu.cjs.map +0 -1
  220. package/dist/setup-BmLoNrDX.mjs +0 -12
  221. package/dist/setup-BrR1_xGy.cjs +0 -12
  222. package/dist/setup-BsNR2LBG.cjs +0 -467
  223. package/dist/setup-BsNR2LBG.cjs.map +0 -1
  224. package/dist/setup-D5-JMknk.mjs +0 -437
  225. package/dist/setup-D5-JMknk.mjs.map +0 -1
  226. package/dist/storage-B020InPW.mjs.map +0 -1
  227. package/dist/storage-CSNplaJn.cjs.map +0 -1
  228. package/dist/storage-DGBzMLZa.mjs +0 -4
  229. package/dist/storage-DlVol_oj.cjs +0 -8
  230. package/dist/sync-0ILCb-1S.cjs.map +0 -1
  231. package/dist/sync-CzHXiR9c.mjs.map +0 -1
  232. package/dist/sync-DYENfOt4.cjs +0 -4
  233. package/dist/sync-HAau6h_R.mjs +0 -3
  234. package/dist/types-DVIx8I1N.d.mts +0 -1950
  235. package/dist/types-DVIx8I1N.d.mts.map +0 -1
  236. package/dist/types-PMP_qXRY.d.cts +0 -1950
  237. package/dist/types-PMP_qXRY.d.cts.map +0 -1
  238. package/dist/workspace-Cji6lE8E.cjs +0 -10
  239. package/dist/workspace-CkJAtRIX.mjs +0 -9
  240. package/dist/workspace-CtnZnWsa.mjs.map +0 -1
  241. package/dist/workspace-DPV7FtAv.cjs.map +0 -1
@@ -1,9 +1,8 @@
1
1
  import { existsSync } from "node:fs";
2
- import { basename, join } from "node:path";
3
2
  import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
4
3
  import { homedir } from "node:os";
4
+ import { basename, join } from "node:path";
5
5
  import { randomBytes } from "node:crypto";
6
-
7
6
  //#region src/secrets/keystore.ts
8
7
  /** Key length for AES-256 encryption */
9
8
  const KEY_LENGTH = 32;
@@ -61,8 +60,7 @@ async function generateKey(stage, projectName) {
61
60
  async function readKey(stage, projectName) {
62
61
  const keyPath = getKeyPath(stage, projectName);
63
62
  if (!existsSync(keyPath)) return null;
64
- const key = await readFile(keyPath, "utf-8");
65
- return key.trim();
63
+ return (await readFile(keyPath, "utf-8")).trim();
66
64
  }
67
65
  /**
68
66
  * Get or create a key for a stage.
@@ -77,7 +75,7 @@ async function getOrCreateKey(stage, projectName) {
77
75
  if (existingKey) return existingKey;
78
76
  return generateKey(stage, projectName);
79
77
  }
80
-
81
78
  //#endregion
82
- export { getKeyPath, getOrCreateKey, readKey };
83
- //# sourceMappingURL=keystore-TxeYM7an.mjs.map
79
+ export { getOrCreateKey as n, readKey as r, getKeyPath as t };
80
+
81
+ //# sourceMappingURL=keystore-B4PRlbgE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore-B4PRlbgE.mjs","names":[],"sources":["../src/secrets/keystore.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { chmod, mkdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { basename, join } from 'node:path';\n\n/** Key length for AES-256 encryption */\nconst KEY_LENGTH = 32; // 256 bits\n\n/**\n * Get the keystore directory for a project.\n * Keys are stored at ~/.gkm/{project-name}/\n *\n * @param projectName - Name of the project (defaults to current directory name)\n * @returns Path to the keystore directory\n */\nexport function getKeystoreDir(projectName?: string): string {\n\tconst name = projectName ?? basename(process.cwd());\n\treturn join(homedir(), '.gkm', name);\n}\n\n/**\n * Get the path to a stage's encryption key.\n *\n * @param stage - Stage name (e.g., 'development', 'production')\n * @param projectName - Name of the project (defaults to current directory name)\n * @returns Path to the key file\n */\nexport function getKeyPath(stage: string, projectName?: string): string {\n\treturn join(getKeystoreDir(projectName), `${stage}.key`);\n}\n\n/**\n * Check if a key exists for a stage.\n */\nexport function keyExists(stage: string, projectName?: string): boolean {\n\treturn existsSync(getKeyPath(stage, projectName));\n}\n\n/**\n * Generate a new encryption key for a stage.\n * The key is stored at ~/.gkm/{project-name}/{stage}.key with restricted permissions.\n *\n * @param stage - Stage name\n * @param projectName - Project name (defaults to current directory name)\n * @returns The generated key as a hex string\n */\nexport async function generateKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string> {\n\tconst keyDir = getKeystoreDir(projectName);\n\tconst keyPath = getKeyPath(stage, projectName);\n\n\t// Ensure keystore directory exists with restricted permissions\n\tawait mkdir(keyDir, { recursive: true, mode: 0o700 });\n\n\t// Generate random key\n\tconst key = randomBytes(KEY_LENGTH).toString('hex');\n\n\t// Write key with restricted permissions (owner read/write only)\n\tawait writeFile(keyPath, key, { mode: 0o600, encoding: 'utf-8' });\n\n\t// Ensure permissions are set correctly (in case file existed)\n\tawait chmod(keyPath, 0o600);\n\n\treturn key;\n}\n\n/**\n * Read an encryption key for a stage.\n *\n * @param stage - Stage name\n * @param projectName - Project name (defaults to current directory name)\n * @returns The key as a hex string, or null if not found\n */\nexport async function readKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string | null> {\n\tconst keyPath = getKeyPath(stage, projectName);\n\n\tif (!existsSync(keyPath)) {\n\t\treturn null;\n\t}\n\n\tconst key = await readFile(keyPath, 'utf-8');\n\treturn key.trim();\n}\n\n/**\n * Read an encryption key for a stage, throwing if not found.\n */\nexport async function requireKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string> {\n\tconst key = await readKey(stage, projectName);\n\n\tif (!key) {\n\t\tconst name = projectName ?? basename(process.cwd());\n\t\tthrow new Error(\n\t\t\t`Encryption key not found for stage \"${stage}\" in project \"${name}\". ` +\n\t\t\t\t`Expected key at: ${getKeyPath(stage, projectName)}`,\n\t\t);\n\t}\n\n\treturn key;\n}\n\n/**\n * Delete a key for a stage.\n */\nexport async function deleteKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<void> {\n\tconst keyPath = getKeyPath(stage, projectName);\n\n\tif (existsSync(keyPath)) {\n\t\tawait rm(keyPath);\n\t}\n}\n\n/**\n * Get or create a key for a stage.\n * If the key already exists, it is returned. Otherwise, a new key is generated.\n *\n * @param stage - Stage name\n * @param projectName - Project name (defaults to current directory name)\n * @returns The key as a hex string\n */\nexport async function getOrCreateKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string> {\n\tconst existingKey = await readKey(stage, projectName);\n\n\tif (existingKey) {\n\t\treturn existingKey;\n\t}\n\n\treturn generateKey(stage, projectName);\n}\n"],"mappings":";;;;;;;AAOA,MAAM,aAAa;;;;;;;;AASnB,SAAgB,eAAe,aAA8B;CAC5D,MAAM,OAAO,eAAe,SAAS,QAAQ,IAAI,CAAC;CAClD,OAAO,KAAK,QAAQ,GAAG,QAAQ,IAAI;AACpC;;;;;;;;AASA,SAAgB,WAAW,OAAe,aAA8B;CACvE,OAAO,KAAK,eAAe,WAAW,GAAG,GAAG,MAAM,KAAK;AACxD;;;;;;;;;AAiBA,eAAsB,YACrB,OACA,aACkB;CAClB,MAAM,SAAS,eAAe,WAAW;CACzC,MAAM,UAAU,WAAW,OAAO,WAAW;CAG7C,MAAM,MAAM,QAAQ;EAAE,WAAW;EAAM,MAAM;CAAM,CAAC;CAGpD,MAAM,MAAM,YAAY,UAAU,CAAC,CAAC,SAAS,KAAK;CAGlD,MAAM,UAAU,SAAS,KAAK;EAAE,MAAM;EAAO,UAAU;CAAQ,CAAC;CAGhE,MAAM,MAAM,SAAS,GAAK;CAE1B,OAAO;AACR;;;;;;;;AASA,eAAsB,QACrB,OACA,aACyB;CACzB,MAAM,UAAU,WAAW,OAAO,WAAW;CAE7C,IAAI,CAAC,WAAW,OAAO,GACtB,OAAO;CAIR,QAAO,MADW,SAAS,SAAS,OAAO,EAAA,CAChC,KAAK;AACjB;;;;;;;;;AA4CA,eAAsB,eACrB,OACA,aACkB;CAClB,MAAM,cAAc,MAAM,QAAQ,OAAO,WAAW;CAEpD,IAAI,aACH,OAAO;CAGR,OAAO,YAAY,OAAO,WAAW;AACtC"}
@@ -1,10 +1,8 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const node_fs = require_chunk.__toESM(require("node:fs"));
3
- const node_path = require_chunk.__toESM(require("node:path"));
4
- const node_fs_promises = require_chunk.__toESM(require("node:fs/promises"));
5
- const node_os = require_chunk.__toESM(require("node:os"));
6
- const node_crypto = require_chunk.__toESM(require("node:crypto"));
7
-
1
+ let node_fs = require("node:fs");
2
+ let node_fs_promises = require("node:fs/promises");
3
+ let node_os = require("node:os");
4
+ let node_path = require("node:path");
5
+ let node_crypto = require("node:crypto");
8
6
  //#region src/secrets/keystore.ts
9
7
  /** Key length for AES-256 encryption */
10
8
  const KEY_LENGTH = 32;
@@ -62,8 +60,7 @@ async function generateKey(stage, projectName) {
62
60
  async function readKey(stage, projectName) {
63
61
  const keyPath = getKeyPath(stage, projectName);
64
62
  if (!(0, node_fs.existsSync)(keyPath)) return null;
65
- const key = await (0, node_fs_promises.readFile)(keyPath, "utf-8");
66
- return key.trim();
63
+ return (await (0, node_fs_promises.readFile)(keyPath, "utf-8")).trim();
67
64
  }
68
65
  /**
69
66
  * Get or create a key for a stage.
@@ -78,24 +75,24 @@ async function getOrCreateKey(stage, projectName) {
78
75
  if (existingKey) return existingKey;
79
76
  return generateKey(stage, projectName);
80
77
  }
81
-
82
78
  //#endregion
83
- Object.defineProperty(exports, 'getKeyPath', {
84
- enumerable: true,
85
- get: function () {
86
- return getKeyPath;
87
- }
79
+ Object.defineProperty(exports, "getKeyPath", {
80
+ enumerable: true,
81
+ get: function() {
82
+ return getKeyPath;
83
+ }
88
84
  });
89
- Object.defineProperty(exports, 'getOrCreateKey', {
90
- enumerable: true,
91
- get: function () {
92
- return getOrCreateKey;
93
- }
85
+ Object.defineProperty(exports, "getOrCreateKey", {
86
+ enumerable: true,
87
+ get: function() {
88
+ return getOrCreateKey;
89
+ }
94
90
  });
95
- Object.defineProperty(exports, 'readKey', {
96
- enumerable: true,
97
- get: function () {
98
- return readKey;
99
- }
91
+ Object.defineProperty(exports, "readKey", {
92
+ enumerable: true,
93
+ get: function() {
94
+ return readKey;
95
+ }
100
96
  });
101
- //# sourceMappingURL=keystore-C9rint2E.cjs.map
97
+
98
+ //# sourceMappingURL=keystore-DgGRj2Yy.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore-DgGRj2Yy.cjs","names":["basename","join","homedir","mkdir","randomBytes","writeFile","chmod","existsSync","readFile"],"sources":["../src/secrets/keystore.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { existsSync } from 'node:fs';\nimport { chmod, mkdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { basename, join } from 'node:path';\n\n/** Key length for AES-256 encryption */\nconst KEY_LENGTH = 32; // 256 bits\n\n/**\n * Get the keystore directory for a project.\n * Keys are stored at ~/.gkm/{project-name}/\n *\n * @param projectName - Name of the project (defaults to current directory name)\n * @returns Path to the keystore directory\n */\nexport function getKeystoreDir(projectName?: string): string {\n\tconst name = projectName ?? basename(process.cwd());\n\treturn join(homedir(), '.gkm', name);\n}\n\n/**\n * Get the path to a stage's encryption key.\n *\n * @param stage - Stage name (e.g., 'development', 'production')\n * @param projectName - Name of the project (defaults to current directory name)\n * @returns Path to the key file\n */\nexport function getKeyPath(stage: string, projectName?: string): string {\n\treturn join(getKeystoreDir(projectName), `${stage}.key`);\n}\n\n/**\n * Check if a key exists for a stage.\n */\nexport function keyExists(stage: string, projectName?: string): boolean {\n\treturn existsSync(getKeyPath(stage, projectName));\n}\n\n/**\n * Generate a new encryption key for a stage.\n * The key is stored at ~/.gkm/{project-name}/{stage}.key with restricted permissions.\n *\n * @param stage - Stage name\n * @param projectName - Project name (defaults to current directory name)\n * @returns The generated key as a hex string\n */\nexport async function generateKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string> {\n\tconst keyDir = getKeystoreDir(projectName);\n\tconst keyPath = getKeyPath(stage, projectName);\n\n\t// Ensure keystore directory exists with restricted permissions\n\tawait mkdir(keyDir, { recursive: true, mode: 0o700 });\n\n\t// Generate random key\n\tconst key = randomBytes(KEY_LENGTH).toString('hex');\n\n\t// Write key with restricted permissions (owner read/write only)\n\tawait writeFile(keyPath, key, { mode: 0o600, encoding: 'utf-8' });\n\n\t// Ensure permissions are set correctly (in case file existed)\n\tawait chmod(keyPath, 0o600);\n\n\treturn key;\n}\n\n/**\n * Read an encryption key for a stage.\n *\n * @param stage - Stage name\n * @param projectName - Project name (defaults to current directory name)\n * @returns The key as a hex string, or null if not found\n */\nexport async function readKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string | null> {\n\tconst keyPath = getKeyPath(stage, projectName);\n\n\tif (!existsSync(keyPath)) {\n\t\treturn null;\n\t}\n\n\tconst key = await readFile(keyPath, 'utf-8');\n\treturn key.trim();\n}\n\n/**\n * Read an encryption key for a stage, throwing if not found.\n */\nexport async function requireKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string> {\n\tconst key = await readKey(stage, projectName);\n\n\tif (!key) {\n\t\tconst name = projectName ?? basename(process.cwd());\n\t\tthrow new Error(\n\t\t\t`Encryption key not found for stage \"${stage}\" in project \"${name}\". ` +\n\t\t\t\t`Expected key at: ${getKeyPath(stage, projectName)}`,\n\t\t);\n\t}\n\n\treturn key;\n}\n\n/**\n * Delete a key for a stage.\n */\nexport async function deleteKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<void> {\n\tconst keyPath = getKeyPath(stage, projectName);\n\n\tif (existsSync(keyPath)) {\n\t\tawait rm(keyPath);\n\t}\n}\n\n/**\n * Get or create a key for a stage.\n * If the key already exists, it is returned. Otherwise, a new key is generated.\n *\n * @param stage - Stage name\n * @param projectName - Project name (defaults to current directory name)\n * @returns The key as a hex string\n */\nexport async function getOrCreateKey(\n\tstage: string,\n\tprojectName?: string,\n): Promise<string> {\n\tconst existingKey = await readKey(stage, projectName);\n\n\tif (existingKey) {\n\t\treturn existingKey;\n\t}\n\n\treturn generateKey(stage, projectName);\n}\n"],"mappings":";;;;;;;AAOA,MAAM,aAAa;;;;;;;;AASnB,SAAgB,eAAe,aAA8B;CAC5D,MAAM,OAAO,gBAAA,GAAeA,UAAAA,SAAAA,CAAS,QAAQ,IAAI,CAAC;CAClD,QAAA,GAAOC,UAAAA,KAAAA,EAAAA,GAAKC,QAAAA,QAAAA,CAAQ,GAAG,QAAQ,IAAI;AACpC;;;;;;;;AASA,SAAgB,WAAW,OAAe,aAA8B;CACvE,QAAA,GAAOD,UAAAA,KAAAA,CAAK,eAAe,WAAW,GAAG,GAAG,MAAM,KAAK;AACxD;;;;;;;;;AAiBA,eAAsB,YACrB,OACA,aACkB;CAClB,MAAM,SAAS,eAAe,WAAW;CACzC,MAAM,UAAU,WAAW,OAAO,WAAW;CAG7C,OAAA,GAAME,iBAAAA,MAAAA,CAAM,QAAQ;EAAE,WAAW;EAAM,MAAM;CAAM,CAAC;CAGpD,MAAM,OAAA,GAAMC,YAAAA,YAAAA,CAAY,UAAU,CAAC,CAAC,SAAS,KAAK;CAGlD,OAAA,GAAMC,iBAAAA,UAAAA,CAAU,SAAS,KAAK;EAAE,MAAM;EAAO,UAAU;CAAQ,CAAC;CAGhE,OAAA,GAAMC,iBAAAA,MAAAA,CAAM,SAAS,GAAK;CAE1B,OAAO;AACR;;;;;;;;AASA,eAAsB,QACrB,OACA,aACyB;CACzB,MAAM,UAAU,WAAW,OAAO,WAAW;CAE7C,IAAI,EAAA,GAACC,QAAAA,WAAAA,CAAW,OAAO,GACtB,OAAO;CAIR,QAAO,OAAA,GADWC,iBAAAA,SAAAA,CAAS,SAAS,OAAO,EAAA,CAChC,KAAK;AACjB;;;;;;;;;AA4CA,eAAsB,eACrB,OACA,aACkB;CAClB,MAAM,cAAc,MAAM,QAAQ,OAAO,WAAW;CAEpD,IAAI,aACH,OAAO;CAGR,OAAO,YAAY,OAAO,WAAW;AACtC"}