@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,173 +0,0 @@
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_child_process = require_chunk.__toESM(require("node:child_process"));
6
- const node_util = require_chunk.__toESM(require("node:util"));
7
-
8
- //#region src/openapi-react-query.ts
9
- const execAsync = (0, node_util.promisify)(node_child_process.exec);
10
- async function generateReactQueryCommand(options = {}) {
11
- const logger = console;
12
- try {
13
- const inputPath = options.input || (0, node_path.join)(process.cwd(), "openapi.json");
14
- if (!(0, node_fs.existsSync)(inputPath)) throw new Error(`OpenAPI spec not found at ${inputPath}. Run 'npx @geekmidas/cli openapi' first.`);
15
- const specContent = await (0, node_fs_promises.readFile)(inputPath, "utf-8");
16
- const spec = JSON.parse(specContent);
17
- const outputDir = (0, node_path.dirname)(options.output || (0, node_path.join)(process.cwd(), "src", "api", "hooks.ts"));
18
- const typesPath = (0, node_path.join)(outputDir, "openapi-types.d.ts");
19
- logger.log("Generating TypeScript types from OpenAPI spec...");
20
- try {
21
- await execAsync(`npx openapi-typescript "${inputPath}" -o "${typesPath}"`, { cwd: process.cwd() });
22
- logger.log(`TypeScript types generated: ${typesPath}`);
23
- } catch (_error) {
24
- logger.warn("Could not generate types with openapi-typescript. Install it for better type inference.");
25
- logger.warn("Run: npm install -D openapi-typescript");
26
- await (0, node_fs_promises.mkdir)((0, node_path.dirname)(typesPath), { recursive: true });
27
- await (0, node_fs_promises.writeFile)(typesPath, `// Auto-generated placeholder types
28
- export interface paths {
29
- [path: string]: {
30
- [method: string]: {
31
- operationId?: string;
32
- parameters?: any;
33
- requestBody?: any;
34
- responses?: any;
35
- };
36
- };
37
- }
38
- `);
39
- }
40
- const operations = extractOperations(spec);
41
- const code = generateReactQueryCode(spec, operations, options.name || "API");
42
- const outputPath = options.output || (0, node_path.join)(process.cwd(), "src", "api", "hooks.ts");
43
- await (0, node_fs_promises.mkdir)((0, node_path.dirname)(outputPath), { recursive: true });
44
- await (0, node_fs_promises.writeFile)(outputPath, code);
45
- logger.log(`React Query hooks generated: ${outputPath}`);
46
- logger.log(`Generated ${operations.length} hooks`);
47
- } catch (error) {
48
- throw new Error(`React Query generation failed: ${error.message}`);
49
- }
50
- }
51
- function extractOperations(spec) {
52
- const operations = [];
53
- Object.entries(spec.paths).forEach(([path, methods]) => {
54
- Object.entries(methods).forEach(([method, operation]) => {
55
- if (operation.operationId) operations.push({
56
- operationId: operation.operationId,
57
- path,
58
- method: method.toUpperCase(),
59
- endpoint: `${method.toUpperCase()} ${path}`,
60
- parameters: operation.parameters,
61
- requestBody: !!operation.requestBody,
62
- responseType: extractResponseType(operation)
63
- });
64
- });
65
- });
66
- return operations;
67
- }
68
- function extractResponseType(operation) {
69
- const responses = operation.responses;
70
- if (!responses) return "unknown";
71
- const successResponse = responses["200"] || responses["201"];
72
- if (!successResponse?.content?.["application/json"]?.schema) return "unknown";
73
- const schema = successResponse.content["application/json"].schema;
74
- return schemaToTypeString(schema);
75
- }
76
- function schemaToTypeString(schema) {
77
- if (!schema) return "unknown";
78
- switch (schema.type) {
79
- case "string": return "string";
80
- case "number":
81
- case "integer": return "number";
82
- case "boolean": return "boolean";
83
- case "array": return `Array<${schemaToTypeString(schema.items)}>`;
84
- case "object":
85
- if (schema.properties) {
86
- const props = Object.entries(schema.properties).map(([key, value]) => `${key}: ${schemaToTypeString(value)}`).join("; ");
87
- return `{ ${props} }`;
88
- }
89
- return "Record<string, unknown>";
90
- default: return "unknown";
91
- }
92
- }
93
- function generateReactQueryCode(_spec, operations, apiName) {
94
- const imports = `import { createTypedQueryClient } from '@geekmidas/client/react-query';
95
- import type { paths } from './openapi-types';
96
-
97
- // Create typed query client
98
- export const ${apiName.toLowerCase()} = createTypedQueryClient<paths>({
99
- baseURL: process.env.NEXT_PUBLIC_API_URL || '/api',
100
- });
101
-
102
- // Export individual hooks for better DX
103
- `;
104
- const queryHooks = operations.filter((op) => op.method === "GET").map((op) => generateQueryHook(op, apiName)).join("\n\n");
105
- const mutationHooks = operations.filter((op) => op.method !== "GET").map((op) => generateMutationHook(op, apiName)).join("\n\n");
106
- const typeExports = generateTypeExports(operations);
107
- return `${imports}
108
- // Query Hooks
109
- ${queryHooks}
110
-
111
- // Mutation Hooks
112
- ${mutationHooks}
113
-
114
- // Type exports for convenience
115
- ${typeExports}
116
-
117
- // Re-export the api for advanced usage
118
- export { ${apiName.toLowerCase()} };
119
- `;
120
- }
121
- function generateQueryHook(op, apiName) {
122
- const hookName = `use${capitalize(op.operationId)}`;
123
- const endpoint = op.endpoint;
124
- const hasParams = op.parameters?.some((p) => p.in === "path");
125
- const hasQuery = op.parameters?.some((p) => p.in === "query");
126
- let params = "";
127
- let args = "";
128
- if (hasParams || hasQuery) {
129
- const paramParts = [];
130
- if (hasParams) {
131
- const pathParams = op.parameters?.filter((p) => p.in === "path").map((p) => p.name) || [];
132
- paramParts.push(`params: { ${pathParams.map((p) => `${p}: string`).join("; ")} }`);
133
- }
134
- if (hasQuery) paramParts.push(`query?: Record<string, any>`);
135
- params = `config: { ${paramParts.join("; ")} }, `;
136
- args = ", config";
137
- }
138
- return `export const ${hookName} = (
139
- ${params}options?: Parameters<typeof ${apiName.toLowerCase()}.useQuery>[2]
140
- ) => {
141
- return ${apiName.toLowerCase()}.useQuery('${endpoint}' as any${args}, options);
142
- };`;
143
- }
144
- function generateMutationHook(op, apiName) {
145
- const hookName = `use${capitalize(op.operationId)}`;
146
- const endpoint = op.endpoint;
147
- return `export const ${hookName} = (
148
- options?: Parameters<typeof ${apiName.toLowerCase()}.useMutation>[1]
149
- ) => {
150
- return ${apiName.toLowerCase()}.useMutation('${endpoint}' as any, options);
151
- };`;
152
- }
153
- function generateTypeExports(operations) {
154
- const exports$1 = operations.map((op) => {
155
- const typeName = capitalize(op.operationId);
156
- const isQuery = op.method === "GET";
157
- if (isQuery) return `export type ${typeName}Response = Awaited<ReturnType<ReturnType<typeof use${typeName}>['data']>>;`;
158
- else return `export type ${typeName}Response = Awaited<ReturnType<ReturnType<typeof use${typeName}>['mutateAsync']>>;`;
159
- });
160
- return exports$1.join("\n");
161
- }
162
- function capitalize(str) {
163
- return str.charAt(0).toUpperCase() + str.slice(1);
164
- }
165
-
166
- //#endregion
167
- Object.defineProperty(exports, 'generateReactQueryCommand', {
168
- enumerable: true,
169
- get: function () {
170
- return generateReactQueryCommand;
171
- }
172
- });
173
- //# sourceMappingURL=openapi-react-query-CmJ1xDbn.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi-react-query-CmJ1xDbn.cjs","names":["exec","options: ReactQueryOptions","spec: OpenAPISpec","operations: OperationInfo[]","operation: any","schema: any","_spec: OpenAPISpec","apiName: string","op: OperationInfo","paramParts: string[]","exports","str: string"],"sources":["../src/openapi-react-query.ts"],"sourcesContent":["#!/usr/bin/env -S npx tsx\n\nimport { exec } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { promisify } from 'node:util';\n\nconst execAsync = promisify(exec);\n\ninterface ReactQueryOptions {\n\tinput?: string;\n\toutput?: string;\n\tname?: string;\n}\n\ninterface OpenAPISpec {\n\topenapi: string;\n\tinfo?: {\n\t\ttitle?: string;\n\t\tversion?: string;\n\t};\n\tpaths: Record<string, Record<string, any>>;\n}\n\nexport async function generateReactQueryCommand(\n\toptions: ReactQueryOptions = {},\n): Promise<void> {\n\tconst logger = console;\n\n\ttry {\n\t\t// Read OpenAPI spec\n\t\tconst inputPath = options.input || join(process.cwd(), 'openapi.json');\n\n\t\tif (!existsSync(inputPath)) {\n\t\t\tthrow new Error(\n\t\t\t\t`OpenAPI spec not found at ${inputPath}. Run 'npx @geekmidas/cli openapi' first.`,\n\t\t\t);\n\t\t}\n\n\t\tconst specContent = await readFile(inputPath, 'utf-8');\n\t\tconst spec: OpenAPISpec = JSON.parse(specContent);\n\n\t\t// Generate TypeScript types from OpenAPI spec\n\t\tconst outputDir = dirname(\n\t\t\toptions.output || join(process.cwd(), 'src', 'api', 'hooks.ts'),\n\t\t);\n\t\tconst typesPath = join(outputDir, 'openapi-types.d.ts');\n\n\t\tlogger.log('Generating TypeScript types from OpenAPI spec...');\n\n\t\ttry {\n\t\t\t// Use npx to run openapi-typescript\n\t\t\tawait execAsync(\n\t\t\t\t`npx openapi-typescript \"${inputPath}\" -o \"${typesPath}\"`,\n\t\t\t\t{ cwd: process.cwd() },\n\t\t\t);\n\t\t\tlogger.log(`TypeScript types generated: ${typesPath}`);\n\t\t} catch (_error) {\n\t\t\tlogger.warn(\n\t\t\t\t'Could not generate types with openapi-typescript. Install it for better type inference.',\n\t\t\t);\n\t\t\tlogger.warn('Run: npm install -D openapi-typescript');\n\n\t\t\t// Generate basic types file\n\t\t\tawait mkdir(dirname(typesPath), { recursive: true });\n\t\t\tawait writeFile(\n\t\t\t\ttypesPath,\n\t\t\t\t`// Auto-generated placeholder types\nexport interface paths {\n [path: string]: {\n [method: string]: {\n operationId?: string;\n parameters?: any;\n requestBody?: any;\n responses?: any;\n };\n };\n}\n`,\n\t\t\t);\n\t\t}\n\n\t\t// Extract operation info\n\t\tconst operations = extractOperations(spec);\n\n\t\t// Generate TypeScript code\n\t\tconst code = generateReactQueryCode(\n\t\t\tspec,\n\t\t\toperations,\n\t\t\toptions.name || 'API',\n\t\t);\n\n\t\t// Write output\n\t\tconst outputPath =\n\t\t\toptions.output || join(process.cwd(), 'src', 'api', 'hooks.ts');\n\t\tawait mkdir(dirname(outputPath), { recursive: true });\n\t\tawait writeFile(outputPath, code);\n\n\t\tlogger.log(`React Query hooks generated: ${outputPath}`);\n\t\tlogger.log(`Generated ${operations.length} hooks`);\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`React Query generation failed: ${(error as Error).message}`,\n\t\t);\n\t}\n}\n\ninterface OperationInfo {\n\toperationId: string;\n\tpath: string;\n\tmethod: string;\n\tendpoint: string; // Full endpoint like 'GET /users/{id}'\n\tparameters?: Array<{ name: string; in: string; required?: boolean }>;\n\trequestBody?: boolean;\n\tresponseType?: string;\n}\n\nfunction extractOperations(spec: OpenAPISpec): OperationInfo[] {\n\tconst operations: OperationInfo[] = [];\n\n\tObject.entries(spec.paths).forEach(([path, methods]) => {\n\t\tObject.entries(methods).forEach(([method, operation]) => {\n\t\t\tif (operation.operationId) {\n\t\t\t\toperations.push({\n\t\t\t\t\toperationId: operation.operationId,\n\t\t\t\t\tpath,\n\t\t\t\t\tmethod: method.toUpperCase(),\n\t\t\t\t\tendpoint: `${method.toUpperCase()} ${path}`,\n\t\t\t\t\tparameters: operation.parameters,\n\t\t\t\t\trequestBody: !!operation.requestBody,\n\t\t\t\t\tresponseType: extractResponseType(operation),\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t});\n\n\treturn operations;\n}\n\nfunction extractResponseType(operation: any): string {\n\tconst responses = operation.responses;\n\tif (!responses) return 'unknown';\n\n\tconst successResponse = responses['200'] || responses['201'];\n\tif (!successResponse?.content?.['application/json']?.schema) {\n\t\treturn 'unknown';\n\t}\n\n\t// Basic type inference from schema\n\tconst schema = successResponse.content['application/json'].schema;\n\treturn schemaToTypeString(schema);\n}\n\nfunction schemaToTypeString(schema: any): string {\n\tif (!schema) return 'unknown';\n\n\tswitch (schema.type) {\n\t\tcase 'string':\n\t\t\treturn 'string';\n\t\tcase 'number':\n\t\tcase 'integer':\n\t\t\treturn 'number';\n\t\tcase 'boolean':\n\t\t\treturn 'boolean';\n\t\tcase 'array':\n\t\t\treturn `Array<${schemaToTypeString(schema.items)}>`;\n\t\tcase 'object':\n\t\t\tif (schema.properties) {\n\t\t\t\tconst props = Object.entries(schema.properties)\n\t\t\t\t\t.map(\n\t\t\t\t\t\t([key, value]: [string, any]) =>\n\t\t\t\t\t\t\t`${key}: ${schemaToTypeString(value)}`,\n\t\t\t\t\t)\n\t\t\t\t\t.join('; ');\n\t\t\t\treturn `{ ${props} }`;\n\t\t\t}\n\t\t\treturn 'Record<string, unknown>';\n\t\tdefault:\n\t\t\treturn 'unknown';\n\t}\n}\n\nfunction generateReactQueryCode(\n\t_spec: OpenAPISpec,\n\toperations: OperationInfo[],\n\tapiName: string,\n): string {\n\tconst imports = `import { createTypedQueryClient } from '@geekmidas/client/react-query';\nimport type { paths } from './openapi-types';\n\n// Create typed query client\nexport const ${apiName.toLowerCase()} = createTypedQueryClient<paths>({\n baseURL: process.env.NEXT_PUBLIC_API_URL || '/api',\n});\n\n// Export individual hooks for better DX\n`;\n\n\tconst queryHooks = operations\n\t\t.filter((op) => op.method === 'GET')\n\t\t.map((op) => generateQueryHook(op, apiName))\n\t\t.join('\\n\\n');\n\n\tconst mutationHooks = operations\n\t\t.filter((op) => op.method !== 'GET')\n\t\t.map((op) => generateMutationHook(op, apiName))\n\t\t.join('\\n\\n');\n\n\tconst typeExports = generateTypeExports(operations);\n\n\treturn `${imports}\n// Query Hooks\n${queryHooks}\n\n// Mutation Hooks\n${mutationHooks}\n\n// Type exports for convenience\n${typeExports}\n\n// Re-export the api for advanced usage\nexport { ${apiName.toLowerCase()} };\n`;\n}\n\nfunction generateQueryHook(op: OperationInfo, apiName: string): string {\n\tconst hookName = `use${capitalize(op.operationId)}`;\n\tconst endpoint = op.endpoint;\n\tconst hasParams = op.parameters?.some((p) => p.in === 'path');\n\tconst hasQuery = op.parameters?.some((p) => p.in === 'query');\n\n\t// Generate properly typed hook\n\tlet params = '';\n\tlet args = '';\n\n\tif (hasParams || hasQuery) {\n\t\tconst paramParts: string[] = [];\n\t\tif (hasParams) {\n\t\t\tconst pathParams =\n\t\t\t\top.parameters?.filter((p) => p.in === 'path').map((p) => p.name) || [];\n\t\t\tparamParts.push(\n\t\t\t\t`params: { ${pathParams.map((p) => `${p}: string`).join('; ')} }`,\n\t\t\t);\n\t\t}\n\t\tif (hasQuery) {\n\t\t\tparamParts.push(`query?: Record<string, any>`);\n\t\t}\n\t\tparams = `config: { ${paramParts.join('; ')} }, `;\n\t\targs = ', config';\n\t}\n\n\treturn `export const ${hookName} = (\n ${params}options?: Parameters<typeof ${apiName.toLowerCase()}.useQuery>[2]\n) => {\n return ${apiName.toLowerCase()}.useQuery('${endpoint}' as any${args}, options);\n};`;\n}\n\nfunction generateMutationHook(op: OperationInfo, apiName: string): string {\n\tconst hookName = `use${capitalize(op.operationId)}`;\n\tconst endpoint = op.endpoint;\n\n\treturn `export const ${hookName} = (\n options?: Parameters<typeof ${apiName.toLowerCase()}.useMutation>[1]\n) => {\n return ${apiName.toLowerCase()}.useMutation('${endpoint}' as any, options);\n};`;\n}\n\nfunction generateTypeExports(operations: OperationInfo[]): string {\n\tconst exports = operations.map((op) => {\n\t\tconst typeName = capitalize(op.operationId);\n\t\tconst isQuery = op.method === 'GET';\n\n\t\tif (isQuery) {\n\t\t\treturn `export type ${typeName}Response = Awaited<ReturnType<ReturnType<typeof use${typeName}>['data']>>;`;\n\t\t} else {\n\t\t\treturn `export type ${typeName}Response = Awaited<ReturnType<ReturnType<typeof use${typeName}>['mutateAsync']>>;`;\n\t\t}\n\t});\n\n\treturn exports.join('\\n');\n}\n\nfunction capitalize(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-BI0tWkwz.mjs","names":["secrets: StageSecrets","workspace: NormalizedWorkspace","containers: readonly string[]","addedKeys: string[]"],"sources":["../src/secrets/reconcile.ts"],"sourcesContent":["import { generateFullstackCustomSecrets } from '../setup/fullstack-secrets.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\nexport interface ReconcileResult {\n\t/** The updated secrets with missing keys backfilled */\n\tsecrets: StageSecrets;\n\t/** Keys that were added */\n\taddedKeys: string[];\n}\n\n/**\n * Reconcile missing custom secrets for a workspace.\n *\n * Compares current secrets against what generateFullstackCustomSecrets()\n * would produce and backfills any missing keys without overwriting\n * existing values.\n *\n * @returns ReconcileResult if keys were added, null if secrets are up-to-date\n */\nexport function reconcileMissingSecrets(\n\tsecrets: StageSecrets,\n\tworkspace: NormalizedWorkspace,\n\tcontainers: readonly string[] = [],\n): ReconcileResult | null {\n\tconst isMultiApp = Object.keys(workspace.apps).length > 1;\n\tif (!isMultiApp) {\n\t\treturn null;\n\t}\n\n\tconst expectedCustom = generateFullstackCustomSecrets(workspace, containers);\n\tconst addedKeys: string[] = [];\n\tconst mergedCustom = { ...secrets.custom };\n\n\tfor (const [key, value] of Object.entries(expectedCustom)) {\n\t\tif (!(key in mergedCustom)) {\n\t\t\tmergedCustom[key] = value;\n\t\t\taddedKeys.push(key);\n\t\t}\n\t}\n\n\tif (addedKeys.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsecrets: {\n\t\t\t...secrets,\n\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\tcustom: mergedCustom,\n\t\t},\n\t\taddedKeys,\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;AAoBA,SAAgB,wBACfA,SACAC,WACAC,aAAgC,CAAE,GACT;CACzB,MAAM,aAAa,OAAO,KAAK,UAAU,KAAK,CAAC,SAAS;AACxD,MAAK,WACJ,QAAO;CAGR,MAAM,iBAAiB,+BAA+B,WAAW,WAAW;CAC5E,MAAMC,YAAsB,CAAE;CAC9B,MAAM,eAAe,EAAE,GAAG,QAAQ,OAAQ;AAE1C,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,eAAe,CACxD,OAAM,OAAO,eAAe;AAC3B,eAAa,OAAO;AACpB,YAAU,KAAK,IAAI;CACnB;AAGF,KAAI,UAAU,WAAW,EACxB,QAAO;AAGR,QAAO;EACN,SAAS;GACR,GAAG;GACH,WAAW,qBAAI,QAAO,aAAa;GACnC,QAAQ;EACR;EACD;CACA;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-Bhw5fmKu.cjs","names":["secrets: StageSecrets","workspace: NormalizedWorkspace","containers: readonly string[]","addedKeys: string[]"],"sources":["../src/secrets/reconcile.ts"],"sourcesContent":["import { generateFullstackCustomSecrets } from '../setup/fullstack-secrets.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\nexport interface ReconcileResult {\n\t/** The updated secrets with missing keys backfilled */\n\tsecrets: StageSecrets;\n\t/** Keys that were added */\n\taddedKeys: string[];\n}\n\n/**\n * Reconcile missing custom secrets for a workspace.\n *\n * Compares current secrets against what generateFullstackCustomSecrets()\n * would produce and backfills any missing keys without overwriting\n * existing values.\n *\n * @returns ReconcileResult if keys were added, null if secrets are up-to-date\n */\nexport function reconcileMissingSecrets(\n\tsecrets: StageSecrets,\n\tworkspace: NormalizedWorkspace,\n\tcontainers: readonly string[] = [],\n): ReconcileResult | null {\n\tconst isMultiApp = Object.keys(workspace.apps).length > 1;\n\tif (!isMultiApp) {\n\t\treturn null;\n\t}\n\n\tconst expectedCustom = generateFullstackCustomSecrets(workspace, containers);\n\tconst addedKeys: string[] = [];\n\tconst mergedCustom = { ...secrets.custom };\n\n\tfor (const [key, value] of Object.entries(expectedCustom)) {\n\t\tif (!(key in mergedCustom)) {\n\t\t\tmergedCustom[key] = value;\n\t\t\taddedKeys.push(key);\n\t\t}\n\t}\n\n\tif (addedKeys.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsecrets: {\n\t\t\t...secrets,\n\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\tcustom: mergedCustom,\n\t\t},\n\t\taddedKeys,\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;AAoBA,SAAgB,wBACfA,SACAC,WACAC,aAAgC,CAAE,GACT;CACzB,MAAM,aAAa,OAAO,KAAK,UAAU,KAAK,CAAC,SAAS;AACxD,MAAK,WACJ,QAAO;CAGR,MAAM,iBAAiB,yDAA+B,WAAW,WAAW;CAC5E,MAAMC,YAAsB,CAAE;CAC9B,MAAM,eAAe,EAAE,GAAG,QAAQ,OAAQ;AAE1C,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,eAAe,CACxD,OAAM,OAAO,eAAe;AAC3B,eAAa,OAAO;AACpB,YAAU,KAAK,IAAI;CACnB;AAGF,KAAI,UAAU,WAAW,EACxB,QAAO;AAGR,QAAO;EACN,SAAS;GACR,GAAG;GACH,WAAW,qBAAI,QAAO,aAAa;GACnC,QAAQ;EACR;EACD;CACA;AACD"}
@@ -1,12 +0,0 @@
1
- import "./discover-BYHQwQqu.mjs";
2
- import "./config-DTsVjKZD.mjs";
3
- import "./workspace-CtnZnWsa.mjs";
4
- import "./credentials-jMJC63qs.mjs";
5
- import "./generator-VE2JrFlY.mjs";
6
- import "./keystore-TxeYM7an.mjs";
7
- import "./storage-B020InPW.mjs";
8
- import "./fullstack-secrets-B6KBHf-g.mjs";
9
- import "./sync-CzHXiR9c.mjs";
10
- import { createFreshWorkspaceSecrets, ensureStageSecrets, reconcileSecrets, setupCommand } from "./setup-D5-JMknk.mjs";
11
-
12
- export { ensureStageSecrets };
@@ -1,12 +0,0 @@
1
- require('./discover-DmW9Bscc.cjs');
2
- require('./config-RYR9j6EF.cjs');
3
- require('./workspace-DPV7FtAv.cjs');
4
- require('./credentials-DQRvPz2S.cjs');
5
- require('./generator-CNzBw7g5.cjs');
6
- require('./keystore-C9rint2E.cjs');
7
- require('./storage-CSNplaJn.cjs');
8
- require('./fullstack-secrets-DL8v0y4D.cjs');
9
- require('./sync-0ILCb-1S.cjs');
10
- const require_setup = require('./setup-BsNR2LBG.cjs');
11
-
12
- exports.ensureStageSecrets = require_setup.ensureStageSecrets;