@geekmidas/cli 10.0.0-alpha.11 → 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.
- package/README.md +13 -40
- package/dist/{HostingerProvider-BcyFRbqV.mjs → HostingerProvider-BY26bWwB.mjs} +20 -21
- package/dist/HostingerProvider-BY26bWwB.mjs.map +1 -0
- package/dist/{HostingerProvider-BOvsgATO.cjs → HostingerProvider-BZFGYYVA.cjs} +21 -22
- package/dist/HostingerProvider-BZFGYYVA.cjs.map +1 -0
- package/dist/{LocalStateProvider-yjXZXZDM.cjs → LocalStateProvider-7HR6SS2t.cjs} +11 -6
- package/dist/LocalStateProvider-7HR6SS2t.cjs.map +1 -0
- package/dist/{LocalStateProvider-Bq-0C0sg.mjs → LocalStateProvider-D7QyJoLM.mjs} +10 -4
- package/dist/LocalStateProvider-D7QyJoLM.mjs.map +1 -0
- package/dist/{Route53Provider-C0xmer8U.mjs → Route53Provider-Cvj40A8I.mjs} +12 -12
- package/dist/Route53Provider-Cvj40A8I.mjs.map +1 -0
- package/dist/{Route53Provider-CH9XH7bz.cjs → Route53Provider-DVILBsvV.cjs} +20 -21
- package/dist/Route53Provider-DVILBsvV.cjs.map +1 -0
- package/dist/{SSMStateProvider-DOZifZfE.mjs → SSMStateProvider-B0Hu1MKZ.mjs} +13 -4
- package/dist/SSMStateProvider-B0Hu1MKZ.mjs.map +1 -0
- package/dist/{SSMStateProvider-CXtNgPfy.cjs → SSMStateProvider-VrQ-yeqd.cjs} +17 -9
- package/dist/SSMStateProvider-VrQ-yeqd.cjs.map +1 -0
- package/dist/{backup-provisioner-cE2PuCTb.cjs → backup-provisioner-BmhIO_Yr.cjs} +21 -19
- package/dist/backup-provisioner-BmhIO_Yr.cjs.map +1 -0
- package/dist/{backup-provisioner-DXXg6FIL.mjs → backup-provisioner-DIVCbfee.mjs} +10 -7
- package/dist/backup-provisioner-DIVCbfee.mjs.map +1 -0
- package/dist/{bundler-CaTGtiaO.cjs → bundler-BeNDZdHQ.cjs} +10 -28
- package/dist/bundler-BeNDZdHQ.cjs.map +1 -0
- package/dist/{bundler-S3ek7ea-.mjs → bundler-BodTL4kf.mjs} +9 -26
- package/dist/bundler-BodTL4kf.mjs.map +1 -0
- package/dist/{config-HhDpJmLO.cjs → config-Q1rvKHvw.cjs} +74 -69
- package/dist/config-Q1rvKHvw.cjs.map +1 -0
- package/dist/{config-B0L2tvvC.mjs → config-pqGD3hF9.mjs} +26 -14
- package/dist/config-pqGD3hF9.mjs.map +1 -0
- package/dist/config.cjs +4 -5
- package/dist/config.d.cts +14 -17
- package/dist/config.d.cts.map +1 -1
- package/dist/config.d.mts +14 -17
- package/dist/config.d.mts.map +1 -1
- package/dist/config.mjs +3 -5
- package/dist/{credentials-CZrys9C5.mjs → credentials-BekkKtY_.mjs} +1331 -1100
- package/dist/credentials-BekkKtY_.mjs.map +1 -0
- package/dist/{credentials-B2Pyh3bJ.cjs → credentials-Q6F0uqJq.cjs} +1468 -1232
- package/dist/credentials-Q6F0uqJq.cjs.map +1 -0
- package/dist/deploy/sniffer-envkit-patch.cjs +18 -10
- package/dist/deploy/sniffer-envkit-patch.cjs.map +1 -1
- package/dist/deploy/sniffer-envkit-patch.d.cts +0 -2
- package/dist/deploy/sniffer-envkit-patch.d.cts.map +1 -1
- package/dist/deploy/sniffer-envkit-patch.d.mts +0 -2
- package/dist/deploy/sniffer-envkit-patch.d.mts.map +1 -1
- package/dist/deploy/sniffer-envkit-patch.mjs +10 -2
- package/dist/deploy/sniffer-envkit-patch.mjs.map +1 -1
- package/dist/deploy/sniffer-hooks.cjs +13 -7
- package/dist/deploy/sniffer-hooks.cjs.map +1 -1
- package/dist/deploy/sniffer-hooks.d.cts +1 -2
- package/dist/deploy/sniffer-hooks.d.cts.map +1 -1
- package/dist/deploy/sniffer-hooks.d.mts +1 -2
- package/dist/deploy/sniffer-hooks.d.mts.map +1 -1
- package/dist/deploy/sniffer-hooks.mjs +9 -2
- package/dist/deploy/sniffer-hooks.mjs.map +1 -1
- package/dist/deploy/sniffer-loader.cjs +16 -7
- package/dist/deploy/sniffer-loader.cjs.map +1 -1
- package/dist/deploy/sniffer-loader.d.cts +1 -1
- package/dist/deploy/sniffer-loader.d.mts +1 -1
- package/dist/deploy/sniffer-loader.mjs +13 -2
- package/dist/deploy/sniffer-loader.mjs.map +1 -1
- package/dist/deploy/sniffer-routes-worker.cjs +11 -11
- package/dist/deploy/sniffer-routes-worker.cjs.map +1 -1
- package/dist/deploy/sniffer-routes-worker.d.cts +1 -1
- package/dist/deploy/sniffer-routes-worker.d.mts +1 -1
- package/dist/deploy/sniffer-routes-worker.mjs +2 -2
- package/dist/deploy/sniffer-routes-worker.mjs.map +1 -1
- package/dist/deploy/sniffer-worker.cjs +15 -6
- package/dist/deploy/sniffer-worker.cjs.map +1 -1
- package/dist/deploy/sniffer-worker.d.cts +1 -3
- package/dist/deploy/sniffer-worker.d.cts.map +1 -1
- package/dist/deploy/sniffer-worker.d.mts +1 -3
- package/dist/deploy/sniffer-worker.d.mts.map +1 -1
- package/dist/deploy/sniffer-worker.mjs +15 -4
- package/dist/deploy/sniffer-worker.mjs.map +1 -1
- package/dist/{discover-DTmFeloL.cjs → discover-BERGFg8v.cjs} +81 -64
- package/dist/discover-BERGFg8v.cjs.map +1 -0
- package/dist/{discover-CAlFgYec.mjs → discover-CK-n3w6b.mjs} +35 -20
- package/dist/discover-CK-n3w6b.mjs.map +1 -0
- package/dist/{emit-CUD1BWls.cjs → emit-BdoPFjZf.cjs} +53 -36
- package/dist/emit-BdoPFjZf.cjs.map +1 -0
- package/dist/{emit-CIlvnDvV.mjs → emit-Bzq7JsMP.mjs} +24 -6
- package/dist/emit-Bzq7JsMP.mjs.map +1 -0
- package/dist/{fullstack-secrets-METaRLS1.mjs → fullstack-secrets-BET8gqwK.mjs} +9 -15
- package/dist/fullstack-secrets-BET8gqwK.mjs.map +1 -0
- package/dist/{fullstack-secrets-D6MyHhQP.cjs → fullstack-secrets-DXsWO-5m.cjs} +19 -38
- package/dist/fullstack-secrets-DXsWO-5m.cjs.map +1 -0
- package/dist/{generator-VE2JrFlY.mjs → generator-LfZU7NlU.mjs} +8 -14
- package/dist/generator-LfZU7NlU.mjs.map +1 -0
- package/dist/{generator-CNzBw7g5.cjs → generator-Wdfp0jCS.cjs} +38 -45
- package/dist/generator-Wdfp0jCS.cjs.map +1 -0
- package/dist/{github-BrvaPkFf.cjs → github-BfflNPVe.cjs} +36 -30
- package/dist/{github-BrvaPkFf.cjs.map → github-BfflNPVe.cjs.map} +1 -1
- package/dist/{github-CrpsXSfV.mjs → github-CRwnxKmD.mjs} +27 -20
- package/dist/github-CRwnxKmD.mjs.map +1 -0
- package/dist/{index-CR5urhWX.d.cts → index-Cd-qeOam.d.mts} +3 -12
- package/dist/index-Cd-qeOam.d.mts.map +1 -0
- package/dist/{index-Ayxg_DQY.d.mts → index-D-iAVHx-.d.cts} +3 -12
- package/dist/index-D-iAVHx-.d.cts.map +1 -0
- package/dist/index.cjs +3320 -2961
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +3200 -2858
- package/dist/index.mjs.map +1 -1
- package/dist/{keystore-TxeYM7an.mjs → keystore-B4PRlbgE.mjs} +5 -7
- package/dist/keystore-B4PRlbgE.mjs.map +1 -0
- package/dist/{keystore-C9rint2E.cjs → keystore-DgGRj2Yy.cjs} +23 -26
- package/dist/keystore-DgGRj2Yy.cjs.map +1 -0
- package/dist/{openapi-DaKlTKxz.cjs → openapi-Dcbme-Us.cjs} +134 -171
- package/dist/openapi-Dcbme-Us.cjs.map +1 -0
- package/dist/openapi-react-query.cjs +156 -2
- package/dist/openapi-react-query.cjs.map +1 -0
- package/dist/openapi-react-query.d.cts +1 -3
- package/dist/openapi-react-query.d.cts.map +1 -1
- package/dist/openapi-react-query.d.mts +1 -3
- package/dist/openapi-react-query.d.mts.map +1 -1
- package/dist/openapi-react-query.mjs +156 -2
- package/dist/openapi-react-query.mjs.map +1 -0
- package/dist/{openapi-y1d7Kalt.mjs → openapi-vy4JzhUv.mjs} +76 -106
- package/dist/openapi-vy4JzhUv.mjs.map +1 -0
- package/dist/openapi.cjs +3 -6
- package/dist/openapi.d.cts +8 -11
- package/dist/openapi.d.cts.map +1 -1
- package/dist/openapi.d.mts +8 -11
- package/dist/openapi.d.mts.map +1 -1
- package/dist/openapi.mjs +2 -6
- package/dist/reconcile/public.cjs +4 -4
- package/dist/reconcile/public.d.cts +8 -26
- package/dist/reconcile/public.d.cts.map +1 -1
- package/dist/reconcile/public.d.mts +8 -26
- package/dist/reconcile/public.d.mts.map +1 -1
- package/dist/reconcile/public.mjs +3 -4
- package/dist/{reconcile-CYMhFSYy.cjs → reconcile-Dd2iyILf.cjs} +4 -7
- package/dist/reconcile-Dd2iyILf.cjs.map +1 -0
- package/dist/{reconcile-C13ERt1U.mjs → reconcile-DhQ00DpU.mjs} +4 -7
- package/dist/reconcile-DhQ00DpU.mjs.map +1 -0
- package/dist/rolldown-runtime-BhDjJH2R.mjs +15 -0
- package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-C0BPl7ul.cjs} +23 -10
- package/dist/{storage-CSNplaJn.cjs → storage-C-30BD1e.cjs} +59 -69
- package/dist/storage-C-30BD1e.cjs.map +1 -0
- package/dist/{storage-B020InPW.mjs → storage-P_b3w7uj.mjs} +22 -13
- package/dist/storage-P_b3w7uj.mjs.map +1 -0
- package/dist/{sync-CzHXiR9c.mjs → sync-B3xxXtJT.mjs} +18 -6
- package/dist/sync-B3xxXtJT.mjs.map +1 -0
- package/dist/{sync-0ILCb-1S.cjs → sync-D7uTIIEi.cjs} +43 -25
- package/dist/sync-D7uTIIEi.cjs.map +1 -0
- package/dist/types-BGo5TaNE.d.mts +6164 -0
- package/dist/types-BGo5TaNE.d.mts.map +1 -0
- package/dist/types-C5ZNpUad.d.cts +6165 -0
- package/dist/types-C5ZNpUad.d.cts.map +1 -0
- package/dist/workspace/index.cjs +3 -3
- package/dist/workspace/index.d.cts +3 -3
- package/dist/workspace/index.d.mts +3 -3
- package/dist/workspace/index.mjs +2 -3
- package/dist/{workspace-DaEX7FEg.mjs → workspace-CgwmXEtc.mjs} +725 -871
- package/dist/workspace-CgwmXEtc.mjs.map +1 -0
- package/dist/{workspace-C-a3G_U0.cjs → workspace-mFpI_ky_.cjs} +894 -1041
- package/dist/workspace-mFpI_ky_.cjs.map +1 -0
- package/package.json +14 -14
- package/dist/CachedStateProvider-BEBl2wQT.cjs +0 -60
- package/dist/CachedStateProvider-BEBl2wQT.cjs.map +0 -1
- package/dist/CachedStateProvider-C-8wtlto.mjs +0 -3
- package/dist/CachedStateProvider-Co4n5Wvs.mjs +0 -54
- package/dist/CachedStateProvider-Co4n5Wvs.mjs.map +0 -1
- package/dist/CachedStateProvider-DqhGpzsm.cjs +0 -3
- package/dist/HostingerProvider-BOvsgATO.cjs.map +0 -1
- package/dist/HostingerProvider-BcyFRbqV.mjs.map +0 -1
- package/dist/LocalStateProvider-Bq-0C0sg.mjs.map +0 -1
- package/dist/LocalStateProvider-yjXZXZDM.cjs.map +0 -1
- package/dist/Route53Provider-C0xmer8U.mjs.map +0 -1
- package/dist/Route53Provider-CH9XH7bz.cjs.map +0 -1
- package/dist/SSMStateProvider-CXtNgPfy.cjs.map +0 -1
- package/dist/SSMStateProvider-DOZifZfE.mjs.map +0 -1
- package/dist/backup-provisioner-DXXg6FIL.mjs.map +0 -1
- package/dist/backup-provisioner-cE2PuCTb.cjs.map +0 -1
- package/dist/bundler-CaTGtiaO.cjs.map +0 -1
- package/dist/bundler-S3ek7ea-.mjs.map +0 -1
- package/dist/chunk-Duj1WY3L.mjs +0 -7
- package/dist/config-B0L2tvvC.mjs.map +0 -1
- package/dist/config-HhDpJmLO.cjs.map +0 -1
- package/dist/credentials-B2Pyh3bJ.cjs.map +0 -1
- package/dist/credentials-B5zRHdAl.mjs +0 -141
- package/dist/credentials-B5zRHdAl.mjs.map +0 -1
- package/dist/credentials-BapzjyV5.cjs +0 -195
- package/dist/credentials-BapzjyV5.cjs.map +0 -1
- package/dist/credentials-CZrys9C5.mjs.map +0 -1
- package/dist/discover-CAlFgYec.mjs.map +0 -1
- package/dist/discover-DTmFeloL.cjs.map +0 -1
- package/dist/dokploy-api-5cK2InBm.cjs +0 -3
- package/dist/dokploy-api-D2Ny4Jrc.mjs +0 -3
- package/dist/dokploy-api-pdaBryoY.mjs +0 -706
- package/dist/dokploy-api-pdaBryoY.mjs.map +0 -1
- package/dist/dokploy-api-zqKe9lHH.cjs +0 -718
- package/dist/dokploy-api-zqKe9lHH.cjs.map +0 -1
- package/dist/emit-CIlvnDvV.mjs.map +0 -1
- package/dist/emit-CUD1BWls.cjs.map +0 -1
- package/dist/encryption-D2pL3tHH.cjs +0 -54
- package/dist/encryption-D2pL3tHH.cjs.map +0 -1
- package/dist/encryption-YDsXXi6w.mjs +0 -3
- package/dist/encryption-_4zwjOAR.mjs +0 -42
- package/dist/encryption-_4zwjOAR.mjs.map +0 -1
- package/dist/encryption-sQ2Oxx0d.cjs +0 -4
- package/dist/fullstack-secrets-D6MyHhQP.cjs.map +0 -1
- package/dist/fullstack-secrets-METaRLS1.mjs.map +0 -1
- package/dist/generator-CNzBw7g5.cjs.map +0 -1
- package/dist/generator-VE2JrFlY.mjs.map +0 -1
- package/dist/github-CrpsXSfV.mjs.map +0 -1
- package/dist/index-Ayxg_DQY.d.mts.map +0 -1
- package/dist/index-CR5urhWX.d.cts.map +0 -1
- package/dist/keystore-C9rint2E.cjs.map +0 -1
- package/dist/keystore-TxeYM7an.mjs.map +0 -1
- package/dist/openapi-DaKlTKxz.cjs.map +0 -1
- package/dist/openapi-react-query-BKH334Ug.cjs +0 -173
- package/dist/openapi-react-query-BKH334Ug.cjs.map +0 -1
- package/dist/openapi-react-query-DoR5CmzQ.mjs +0 -167
- package/dist/openapi-react-query-DoR5CmzQ.mjs.map +0 -1
- package/dist/openapi-y1d7Kalt.mjs.map +0 -1
- package/dist/reconcile-C13ERt1U.mjs.map +0 -1
- package/dist/reconcile-CYMhFSYy.cjs.map +0 -1
- package/dist/setup-BWgMs4gg.mjs +0 -12
- package/dist/setup-DOv92pIu.cjs +0 -473
- package/dist/setup-DOv92pIu.cjs.map +0 -1
- package/dist/setup-DQo_h_yK.mjs +0 -443
- package/dist/setup-DQo_h_yK.mjs.map +0 -1
- package/dist/setup-lCx_DcUo.cjs +0 -12
- package/dist/storage-B020InPW.mjs.map +0 -1
- package/dist/storage-CSNplaJn.cjs.map +0 -1
- package/dist/storage-DGBzMLZa.mjs +0 -4
- package/dist/storage-DlVol_oj.cjs +0 -8
- package/dist/sync-0ILCb-1S.cjs.map +0 -1
- package/dist/sync-CzHXiR9c.mjs.map +0 -1
- package/dist/sync-DYENfOt4.cjs +0 -4
- package/dist/sync-HAau6h_R.mjs +0 -3
- package/dist/types-CL7jPFM2.d.mts +0 -2220
- package/dist/types-CL7jPFM2.d.mts.map +0 -1
- package/dist/types-Y3fKQSAK.d.cts +0 -2220
- package/dist/types-Y3fKQSAK.d.cts.map +0 -1
- package/dist/workspace-C-a3G_U0.cjs.map +0 -1
- package/dist/workspace-DQxxs7Jk.cjs +0 -10
- package/dist/workspace-DaEX7FEg.mjs.map +0 -1
- package/dist/workspace-DbI580qS.mjs +0 -9
|
@@ -1,8 +1,20 @@
|
|
|
1
|
-
import { __require } from "./
|
|
1
|
+
import { n as __require, t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
|
|
2
2
|
import { GetParameterCommand, ParameterNotFound, PutParameterCommand, SSMClient } from "@aws-sdk/client-ssm";
|
|
3
|
-
|
|
4
3
|
//#region src/secrets/sync.ts
|
|
5
4
|
/**
|
|
5
|
+
* Secrets Sync via AWS SSM Parameter Store
|
|
6
|
+
*
|
|
7
|
+
* Stores and retrieves encrypted StageSecrets as SecureString parameters.
|
|
8
|
+
* Reuses the SSM infrastructure from the state provider.
|
|
9
|
+
*
|
|
10
|
+
* Parameter naming: /gkm/{workspaceName}/{stage}/secrets
|
|
11
|
+
*/
|
|
12
|
+
var sync_exports = /* @__PURE__ */ __exportAll({
|
|
13
|
+
isSSMConfigured: () => isSSMConfigured,
|
|
14
|
+
pullSecrets: () => pullSecrets,
|
|
15
|
+
pushSecrets: () => pushSecrets
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
6
18
|
* Get the SSM parameter name for secrets.
|
|
7
19
|
*/
|
|
8
20
|
function getSecretsParameterName(workspaceName, stage) {
|
|
@@ -30,7 +42,7 @@ async function pushSecrets(stage, workspace) {
|
|
|
30
42
|
if (!workspace.name) throw new Error("Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.");
|
|
31
43
|
const client = createSSMClient(config);
|
|
32
44
|
const parameterName = getSecretsParameterName(workspace.name, stage);
|
|
33
|
-
const { readStageSecrets } = await import("./storage-
|
|
45
|
+
const { readStageSecrets } = await import("./storage-P_b3w7uj.mjs").then((n) => n.a);
|
|
34
46
|
const secrets = await readStageSecrets(stage, workspace.root);
|
|
35
47
|
if (!secrets) throw new Error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
|
|
36
48
|
await client.send(new PutParameterCommand({
|
|
@@ -70,7 +82,7 @@ async function pullSecrets(stage, workspace) {
|
|
|
70
82
|
function isSSMConfigured(workspace) {
|
|
71
83
|
return !!workspace.state && workspace.state.provider === "ssm";
|
|
72
84
|
}
|
|
73
|
-
|
|
74
85
|
//#endregion
|
|
75
|
-
export {
|
|
76
|
-
|
|
86
|
+
export { sync_exports as i, pullSecrets as n, pushSecrets as r, isSSMConfigured as t };
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=sync-B3xxXtJT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-B3xxXtJT.mjs","names":[],"sources":["../src/secrets/sync.ts"],"sourcesContent":["/**\n * Secrets Sync via AWS SSM Parameter Store\n *\n * Stores and retrieves encrypted StageSecrets as SecureString parameters.\n * Reuses the SSM infrastructure from the state provider.\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/secrets\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { SSMStateConfig } from '../deploy/StateProvider.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\n/**\n * Get the SSM parameter name for secrets.\n */\nfunction getSecretsParameterName(workspaceName: string, stage: string): string {\n\treturn `/gkm/${workspaceName}/${stage}/secrets`;\n}\n\n/**\n * Create an SSM client from workspace state config.\n */\nfunction createSSMClient(config: SSMStateConfig): SSMClient {\n\tconst clientConfig: SSMClientConfig = {\n\t\tregion: config.region,\n\t};\n\n\tif (config.profile) {\n\t\tconst { fromIni } = require('@aws-sdk/credential-providers');\n\t\tclientConfig.credentials = fromIni({ profile: config.profile });\n\t}\n\n\treturn new SSMClient(clientConfig);\n}\n\n/**\n * Push secrets to SSM Parameter Store.\n *\n * Stores the full StageSecrets object as a SecureString parameter.\n */\nexport async function pushSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<void> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\tthrow new Error(\n\t\t\t'SSM state provider not configured. Add state: { provider: \"ssm\", region: \"...\" } to gkm.config.ts.',\n\t\t);\n\t}\n\n\tif (!workspace.name) {\n\t\tthrow new Error(\n\t\t\t'Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.',\n\t\t);\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\tconst { readStageSecrets } = await import('./storage.js');\n\tconst secrets = await readStageSecrets(stage, workspace.root);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`No secrets found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tawait client.send(\n\t\tnew PutParameterCommand({\n\t\t\tName: parameterName,\n\t\t\tValue: JSON.stringify(secrets),\n\t\t\tType: 'SecureString',\n\t\t\tOverwrite: true,\n\t\t\tDescription: `GKM secrets for ${workspace.name}/${stage}`,\n\t\t}),\n\t);\n}\n\n/**\n * Pull secrets from SSM Parameter Store.\n *\n * @returns StageSecrets or null if no secrets are stored remotely\n */\nexport async function pullSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<StageSecrets | null> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\treturn null;\n\t}\n\n\tif (!workspace.name) {\n\t\treturn null;\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\ttry {\n\t\tconst response = await client.send(\n\t\t\tnew GetParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tWithDecryption: true,\n\t\t\t}),\n\t\t);\n\n\t\tif (!response.Parameter?.Value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn JSON.parse(response.Parameter.Value) as StageSecrets;\n\t} catch (error) {\n\t\tif (error instanceof ParameterNotFound) {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if SSM is configured for the workspace.\n */\nexport function isSSMConfigured(workspace: NormalizedWorkspace): boolean {\n\treturn !!workspace.state && workspace.state.provider === 'ssm';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAuBA,SAAS,wBAAwB,eAAuB,OAAuB;CAC9E,OAAO,QAAQ,cAAc,GAAG,MAAM;AACvC;;;;AAKA,SAAS,gBAAgB,QAAmC;CAC3D,MAAM,eAAgC,EACrC,QAAQ,OAAO,OAChB;CAEA,IAAI,OAAO,SAAS;EACnB,MAAM,EAAE,YAAA,UAAoB,+BAA+B;EAC3D,aAAa,cAAc,QAAQ,EAAE,SAAS,OAAO,QAAQ,CAAC;CAC/D;CAEA,OAAO,IAAI,UAAU,YAAY;AAClC;;;;;;AAOA,eAAsB,YACrB,OACA,WACgB;CAChB,MAAM,SAAS,UAAU;CACzB,IAAI,CAAC,UAAU,OAAO,aAAa,OAClC,MAAM,IAAI,MACT,wGACD;CAGD,IAAI,CAAC,UAAU,MACd,MAAM,IAAI,MACT,iFACD;CAGD,MAAM,SAAS,gBAAgB,MAAwB;CACvD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,KAAK;CAEnE,MAAM,EAAE,qBAAqB,MAAM,OAAO,yBAAe,CAAA,MAAA,MAAA,EAAA,CAAA;CACzD,MAAM,UAAU,MAAM,iBAAiB,OAAO,UAAU,IAAI;CAE5D,IAAI,CAAC,SACJ,MAAM,IAAI,MACT,+BAA+B,MAAM,mCAAmC,MAAM,SAC/E;CAGD,MAAM,OAAO,KACZ,IAAI,oBAAoB;EACvB,MAAM;EACN,OAAO,KAAK,UAAU,OAAO;EAC7B,MAAM;EACN,WAAW;EACX,aAAa,mBAAmB,UAAU,KAAK,GAAG;CACnD,CAAC,CACF;AACD;;;;;;AAOA,eAAsB,YACrB,OACA,WAC+B;CAC/B,MAAM,SAAS,UAAU;CACzB,IAAI,CAAC,UAAU,OAAO,aAAa,OAClC,OAAO;CAGR,IAAI,CAAC,UAAU,MACd,OAAO;CAGR,MAAM,SAAS,gBAAgB,MAAwB;CACvD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,KAAK;CAEnE,IAAI;EACH,MAAM,WAAW,MAAM,OAAO,KAC7B,IAAI,oBAAoB;GACvB,MAAM;GACN,gBAAgB;EACjB,CAAC,CACF;EAEA,IAAI,CAAC,SAAS,WAAW,OACxB,OAAO;EAGR,OAAO,KAAK,MAAM,SAAS,UAAU,KAAK;CAC3C,SAAS,OAAO;EACf,IAAI,iBAAiB,mBACpB,OAAO;EAER,MAAM;CACP;AACD;;;;AAKA,SAAgB,gBAAgB,WAAyC;CACxE,OAAO,CAAC,CAAC,UAAU,SAAS,UAAU,MAAM,aAAa;AAC1D"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
|
|
2
|
+
let _aws_sdk_client_ssm = require("@aws-sdk/client-ssm");
|
|
4
3
|
//#region src/secrets/sync.ts
|
|
5
4
|
/**
|
|
5
|
+
* Secrets Sync via AWS SSM Parameter Store
|
|
6
|
+
*
|
|
7
|
+
* Stores and retrieves encrypted StageSecrets as SecureString parameters.
|
|
8
|
+
* Reuses the SSM infrastructure from the state provider.
|
|
9
|
+
*
|
|
10
|
+
* Parameter naming: /gkm/{workspaceName}/{stage}/secrets
|
|
11
|
+
*/
|
|
12
|
+
var sync_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
13
|
+
isSSMConfigured: () => isSSMConfigured,
|
|
14
|
+
pullSecrets: () => pullSecrets,
|
|
15
|
+
pushSecrets: () => pushSecrets
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
6
18
|
* Get the SSM parameter name for secrets.
|
|
7
19
|
*/
|
|
8
20
|
function getSecretsParameterName(workspaceName, stage) {
|
|
@@ -17,7 +29,7 @@ function createSSMClient(config) {
|
|
|
17
29
|
const { fromIni } = require("@aws-sdk/credential-providers");
|
|
18
30
|
clientConfig.credentials = fromIni({ profile: config.profile });
|
|
19
31
|
}
|
|
20
|
-
return new
|
|
32
|
+
return new _aws_sdk_client_ssm.SSMClient(clientConfig);
|
|
21
33
|
}
|
|
22
34
|
/**
|
|
23
35
|
* Push secrets to SSM Parameter Store.
|
|
@@ -30,10 +42,10 @@ async function pushSecrets(stage, workspace) {
|
|
|
30
42
|
if (!workspace.name) throw new Error("Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.");
|
|
31
43
|
const client = createSSMClient(config);
|
|
32
44
|
const parameterName = getSecretsParameterName(workspace.name, stage);
|
|
33
|
-
const { readStageSecrets } = await Promise.resolve().then(() => require("./storage-
|
|
45
|
+
const { readStageSecrets } = await Promise.resolve().then(() => require("./storage-C-30BD1e.cjs")).then((n) => n.storage_exports);
|
|
34
46
|
const secrets = await readStageSecrets(stage, workspace.root);
|
|
35
47
|
if (!secrets) throw new Error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
|
|
36
|
-
await client.send(new
|
|
48
|
+
await client.send(new _aws_sdk_client_ssm.PutParameterCommand({
|
|
37
49
|
Name: parameterName,
|
|
38
50
|
Value: JSON.stringify(secrets),
|
|
39
51
|
Type: "SecureString",
|
|
@@ -53,14 +65,14 @@ async function pullSecrets(stage, workspace) {
|
|
|
53
65
|
const client = createSSMClient(config);
|
|
54
66
|
const parameterName = getSecretsParameterName(workspace.name, stage);
|
|
55
67
|
try {
|
|
56
|
-
const response = await client.send(new
|
|
68
|
+
const response = await client.send(new _aws_sdk_client_ssm.GetParameterCommand({
|
|
57
69
|
Name: parameterName,
|
|
58
70
|
WithDecryption: true
|
|
59
71
|
}));
|
|
60
72
|
if (!response.Parameter?.Value) return null;
|
|
61
73
|
return JSON.parse(response.Parameter.Value);
|
|
62
74
|
} catch (error) {
|
|
63
|
-
if (error instanceof
|
|
75
|
+
if (error instanceof _aws_sdk_client_ssm.ParameterNotFound) return null;
|
|
64
76
|
throw error;
|
|
65
77
|
}
|
|
66
78
|
}
|
|
@@ -70,24 +82,30 @@ async function pullSecrets(stage, workspace) {
|
|
|
70
82
|
function isSSMConfigured(workspace) {
|
|
71
83
|
return !!workspace.state && workspace.state.provider === "ssm";
|
|
72
84
|
}
|
|
73
|
-
|
|
74
85
|
//#endregion
|
|
75
|
-
Object.defineProperty(exports,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
86
|
+
Object.defineProperty(exports, "isSSMConfigured", {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
get: function() {
|
|
89
|
+
return isSSMConfigured;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
Object.defineProperty(exports, "pullSecrets", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
get: function() {
|
|
95
|
+
return pullSecrets;
|
|
96
|
+
}
|
|
80
97
|
});
|
|
81
|
-
Object.defineProperty(exports,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
98
|
+
Object.defineProperty(exports, "pushSecrets", {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
get: function() {
|
|
101
|
+
return pushSecrets;
|
|
102
|
+
}
|
|
86
103
|
});
|
|
87
|
-
Object.defineProperty(exports,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
Object.defineProperty(exports, "sync_exports", {
|
|
105
|
+
enumerable: true,
|
|
106
|
+
get: function() {
|
|
107
|
+
return sync_exports;
|
|
108
|
+
}
|
|
92
109
|
});
|
|
93
|
-
|
|
110
|
+
|
|
111
|
+
//# sourceMappingURL=sync-D7uTIIEi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-D7uTIIEi.cjs","names":["SSMClient","PutParameterCommand","GetParameterCommand","ParameterNotFound"],"sources":["../src/secrets/sync.ts"],"sourcesContent":["/**\n * Secrets Sync via AWS SSM Parameter Store\n *\n * Stores and retrieves encrypted StageSecrets as SecureString parameters.\n * Reuses the SSM infrastructure from the state provider.\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/secrets\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { SSMStateConfig } from '../deploy/StateProvider.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\nimport type { StageSecrets } from './types.js';\n\n/**\n * Get the SSM parameter name for secrets.\n */\nfunction getSecretsParameterName(workspaceName: string, stage: string): string {\n\treturn `/gkm/${workspaceName}/${stage}/secrets`;\n}\n\n/**\n * Create an SSM client from workspace state config.\n */\nfunction createSSMClient(config: SSMStateConfig): SSMClient {\n\tconst clientConfig: SSMClientConfig = {\n\t\tregion: config.region,\n\t};\n\n\tif (config.profile) {\n\t\tconst { fromIni } = require('@aws-sdk/credential-providers');\n\t\tclientConfig.credentials = fromIni({ profile: config.profile });\n\t}\n\n\treturn new SSMClient(clientConfig);\n}\n\n/**\n * Push secrets to SSM Parameter Store.\n *\n * Stores the full StageSecrets object as a SecureString parameter.\n */\nexport async function pushSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<void> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\tthrow new Error(\n\t\t\t'SSM state provider not configured. Add state: { provider: \"ssm\", region: \"...\" } to gkm.config.ts.',\n\t\t);\n\t}\n\n\tif (!workspace.name) {\n\t\tthrow new Error(\n\t\t\t'Workspace name is required for SSM secrets sync. Set \"name\" in gkm.config.ts.',\n\t\t);\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\tconst { readStageSecrets } = await import('./storage.js');\n\tconst secrets = await readStageSecrets(stage, workspace.root);\n\n\tif (!secrets) {\n\t\tthrow new Error(\n\t\t\t`No secrets found for stage \"${stage}\". Run \"gkm secrets:init --stage ${stage}\" first.`,\n\t\t);\n\t}\n\n\tawait client.send(\n\t\tnew PutParameterCommand({\n\t\t\tName: parameterName,\n\t\t\tValue: JSON.stringify(secrets),\n\t\t\tType: 'SecureString',\n\t\t\tOverwrite: true,\n\t\t\tDescription: `GKM secrets for ${workspace.name}/${stage}`,\n\t\t}),\n\t);\n}\n\n/**\n * Pull secrets from SSM Parameter Store.\n *\n * @returns StageSecrets or null if no secrets are stored remotely\n */\nexport async function pullSecrets(\n\tstage: string,\n\tworkspace: NormalizedWorkspace,\n): Promise<StageSecrets | null> {\n\tconst config = workspace.state;\n\tif (!config || config.provider !== 'ssm') {\n\t\treturn null;\n\t}\n\n\tif (!workspace.name) {\n\t\treturn null;\n\t}\n\n\tconst client = createSSMClient(config as SSMStateConfig);\n\tconst parameterName = getSecretsParameterName(workspace.name, stage);\n\n\ttry {\n\t\tconst response = await client.send(\n\t\t\tnew GetParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tWithDecryption: true,\n\t\t\t}),\n\t\t);\n\n\t\tif (!response.Parameter?.Value) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn JSON.parse(response.Parameter.Value) as StageSecrets;\n\t} catch (error) {\n\t\tif (error instanceof ParameterNotFound) {\n\t\t\treturn null;\n\t\t}\n\t\tthrow error;\n\t}\n}\n\n/**\n * Check if SSM is configured for the workspace.\n */\nexport function isSSMConfigured(workspace: NormalizedWorkspace): boolean {\n\treturn !!workspace.state && workspace.state.provider === 'ssm';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAuBA,SAAS,wBAAwB,eAAuB,OAAuB;CAC9E,OAAO,QAAQ,cAAc,GAAG,MAAM;AACvC;;;;AAKA,SAAS,gBAAgB,QAAmC;CAC3D,MAAM,eAAgC,EACrC,QAAQ,OAAO,OAChB;CAEA,IAAI,OAAO,SAAS;EACnB,MAAM,EAAE,YAAY,QAAQ,+BAA+B;EAC3D,aAAa,cAAc,QAAQ,EAAE,SAAS,OAAO,QAAQ,CAAC;CAC/D;CAEA,OAAO,IAAIA,oBAAAA,UAAU,YAAY;AAClC;;;;;;AAOA,eAAsB,YACrB,OACA,WACgB;CAChB,MAAM,SAAS,UAAU;CACzB,IAAI,CAAC,UAAU,OAAO,aAAa,OAClC,MAAM,IAAI,MACT,wGACD;CAGD,IAAI,CAAC,UAAU,MACd,MAAM,IAAI,MACT,iFACD;CAGD,MAAM,SAAS,gBAAgB,MAAwB;CACvD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,KAAK;CAEnE,MAAM,EAAE,qBAAqB,MAAA,QAAA,QAAA,CAAA,CAAA,WAAA,QAAM,wBAAA,CAAA,CAAA,CAAA,MAAA,MAAA,EAAA,eAAA;CACnC,MAAM,UAAU,MAAM,iBAAiB,OAAO,UAAU,IAAI;CAE5D,IAAI,CAAC,SACJ,MAAM,IAAI,MACT,+BAA+B,MAAM,mCAAmC,MAAM,SAC/E;CAGD,MAAM,OAAO,KACZ,IAAIC,oBAAAA,oBAAoB;EACvB,MAAM;EACN,OAAO,KAAK,UAAU,OAAO;EAC7B,MAAM;EACN,WAAW;EACX,aAAa,mBAAmB,UAAU,KAAK,GAAG;CACnD,CAAC,CACF;AACD;;;;;;AAOA,eAAsB,YACrB,OACA,WAC+B;CAC/B,MAAM,SAAS,UAAU;CACzB,IAAI,CAAC,UAAU,OAAO,aAAa,OAClC,OAAO;CAGR,IAAI,CAAC,UAAU,MACd,OAAO;CAGR,MAAM,SAAS,gBAAgB,MAAwB;CACvD,MAAM,gBAAgB,wBAAwB,UAAU,MAAM,KAAK;CAEnE,IAAI;EACH,MAAM,WAAW,MAAM,OAAO,KAC7B,IAAIC,oBAAAA,oBAAoB;GACvB,MAAM;GACN,gBAAgB;EACjB,CAAC,CACF;EAEA,IAAI,CAAC,SAAS,WAAW,OACxB,OAAO;EAGR,OAAO,KAAK,MAAM,SAAS,UAAU,KAAK;CAC3C,SAAS,OAAO;EACf,IAAI,iBAAiBC,oBAAAA,mBACpB,OAAO;EAER,MAAM;CACP;AACD;;;;AAKA,SAAgB,gBAAgB,WAAyC;CACxE,OAAO,CAAC,CAAC,UAAU,SAAS,UAAU,MAAM,aAAa;AAC1D"}
|