@geekmidas/cli 2.0.2 → 10.0.0-alpha.0
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 +71 -120
- package/dist/{CachedStateProvider-BdX7klRc.cjs → CachedStateProvider-BLo7zv7S.cjs} +1 -1
- package/dist/CachedStateProvider-BxoAm-B2.mjs +3 -0
- package/dist/{CachedStateProvider-klLWZXWF.cjs → CachedStateProvider-CqPdW7CB.cjs} +1 -1
- package/dist/{CachedStateProvider-klLWZXWF.cjs.map → CachedStateProvider-CqPdW7CB.cjs.map} +1 -1
- package/dist/{CachedStateProvider-CzyFct42.mjs → CachedStateProvider-DTniehMP.mjs} +1 -1
- package/dist/{CachedStateProvider-CzyFct42.mjs.map → CachedStateProvider-DTniehMP.mjs.map} +1 -1
- package/dist/{HostingerProvider-B2ZYz7Yc.mjs → HostingerProvider-Cft7lEYr.mjs} +4 -3
- package/dist/HostingerProvider-Cft7lEYr.mjs.map +1 -0
- package/dist/{HostingerProvider-CrHfsgz9.cjs → HostingerProvider-h3EbEp-Z.cjs} +4 -3
- package/dist/HostingerProvider-h3EbEp-Z.cjs.map +1 -0
- package/dist/{LocalStateProvider-CP49rjzt.mjs → LocalStateProvider-Bn6tS-oL.mjs} +1 -1
- package/dist/{LocalStateProvider-CP49rjzt.mjs.map → LocalStateProvider-Bn6tS-oL.mjs.map} +1 -1
- package/dist/{LocalStateProvider-CalzNfNA.cjs → LocalStateProvider-Db9SEjyH.cjs} +1 -1
- package/dist/{LocalStateProvider-CalzNfNA.cjs.map → LocalStateProvider-Db9SEjyH.cjs.map} +1 -1
- package/dist/{Route53Provider-tlgBzrRQ.mjs → Route53Provider-RdpUDJQk.mjs} +1 -1
- package/dist/{Route53Provider-tlgBzrRQ.mjs.map → Route53Provider-RdpUDJQk.mjs.map} +1 -1
- package/dist/{Route53Provider-DwgXiLxt.cjs → Route53Provider-di2fMM5N.cjs} +1 -1
- package/dist/{Route53Provider-DwgXiLxt.cjs.map → Route53Provider-di2fMM5N.cjs.map} +1 -1
- package/dist/{SSMStateProvider-BlrTiV5m.mjs → SSMStateProvider-BRt2py-A.mjs} +1 -1
- package/dist/{SSMStateProvider-BlrTiV5m.mjs.map → SSMStateProvider-BRt2py-A.mjs.map} +1 -1
- package/dist/{SSMStateProvider-Bt6r8CTL.cjs → SSMStateProvider-DyX8s9HI.cjs} +1 -1
- package/dist/{SSMStateProvider-Bt6r8CTL.cjs.map → SSMStateProvider-DyX8s9HI.cjs.map} +1 -1
- package/dist/{backup-provisioner-Xunq-p_8.mjs → backup-provisioner-Bgj5Vi_L.mjs} +2 -2
- package/dist/{backup-provisioner-Xunq-p_8.mjs.map → backup-provisioner-Bgj5Vi_L.mjs.map} +1 -1
- package/dist/{backup-provisioner-B3HBN-2k.cjs → backup-provisioner-BrsHwYG0.cjs} +2 -2
- package/dist/{backup-provisioner-B3HBN-2k.cjs.map → backup-provisioner-BrsHwYG0.cjs.map} +1 -1
- package/dist/{bundler-Dufq3uvI.cjs → bundler-BY1OmV1e.cjs} +44 -14
- package/dist/bundler-BY1OmV1e.cjs.map +1 -0
- package/dist/{bundler-DkA4qzUD.mjs → bundler-Be8Zg4Wd.mjs} +45 -15
- package/dist/bundler-Be8Zg4Wd.mjs.map +1 -0
- package/dist/config-D8o6I_7Z.mjs +469 -0
- package/dist/config-D8o6I_7Z.mjs.map +1 -0
- package/dist/config-DbPE1KXF.cjs +535 -0
- package/dist/config-DbPE1KXF.cjs.map +1 -0
- package/dist/config.cjs +3 -2
- package/dist/config.d.cts +2 -2
- package/dist/config.d.cts.map +1 -1
- package/dist/config.d.mts +2 -2
- package/dist/config.d.mts.map +1 -1
- package/dist/config.mjs +3 -2
- package/dist/{credentials-s1kLcIzK.mjs → credentials-B5zRHdAl.mjs} +21 -6
- package/dist/credentials-B5zRHdAl.mjs.map +1 -0
- package/dist/{credentials-C8DWtnMY.cjs → credentials-BapzjyV5.cjs} +26 -5
- package/dist/credentials-BapzjyV5.cjs.map +1 -0
- package/dist/credentials-Dh0Q6HzY.mjs +2548 -0
- package/dist/credentials-Dh0Q6HzY.mjs.map +1 -0
- package/dist/credentials-K961ThG3.cjs +2680 -0
- package/dist/credentials-K961ThG3.cjs.map +1 -0
- package/dist/deploy/sniffer-routes-worker.cjs +6 -2
- package/dist/deploy/sniffer-routes-worker.cjs.map +1 -1
- package/dist/deploy/sniffer-routes-worker.mjs +6 -2
- package/dist/deploy/sniffer-routes-worker.mjs.map +1 -1
- package/dist/discover-CAlFgYec.mjs +229 -0
- package/dist/discover-CAlFgYec.mjs.map +1 -0
- package/dist/discover-DTmFeloL.cjs +271 -0
- package/dist/discover-DTmFeloL.cjs.map +1 -0
- package/dist/dokploy-api-BS2xnJLZ.mjs +3 -0
- package/dist/{dokploy-api-CqOIKHme.cjs → dokploy-api-BsVH0y_s.cjs} +141 -32
- package/dist/dokploy-api-BsVH0y_s.cjs.map +1 -0
- package/dist/dokploy-api-BuxDRo3l.cjs +3 -0
- package/dist/{dokploy-api-sfZFlWuE.mjs → dokploy-api-aTFPz7_4.mjs} +141 -32
- package/dist/dokploy-api-aTFPz7_4.mjs.map +1 -0
- package/dist/emit-CbcRolsa.cjs +236 -0
- package/dist/emit-CbcRolsa.cjs.map +1 -0
- package/dist/emit-CiZS_5Ub.mjs +206 -0
- package/dist/emit-CiZS_5Ub.mjs.map +1 -0
- package/dist/{encryption-MfXAiFTm.cjs → encryption-C6jaU0hE.cjs} +1 -1
- package/dist/{encryption-MfXAiFTm.cjs.map → encryption-C6jaU0hE.cjs.map} +1 -1
- package/dist/{encryption-BVS7Vmzs.cjs → encryption-CHzzeR8a.cjs} +1 -1
- package/dist/encryption-CQUncu7v.mjs +3 -0
- package/dist/{encryption-CO5Q4Bhf.mjs → encryption-D-abyhZx.mjs} +1 -1
- package/dist/{encryption-CO5Q4Bhf.mjs.map → encryption-D-abyhZx.mjs.map} +1 -1
- package/dist/fullstack-secrets-C-GGohke.cjs +111 -0
- package/dist/fullstack-secrets-C-GGohke.cjs.map +1 -0
- package/dist/fullstack-secrets-D1o9-G5l.mjs +87 -0
- package/dist/fullstack-secrets-D1o9-G5l.mjs.map +1 -0
- package/dist/{fullstack-secrets-BYzi6Hwl.cjs → generator-CNzBw7g5.cjs} +1 -114
- package/dist/generator-CNzBw7g5.cjs.map +1 -0
- package/dist/{fullstack-secrets-l8s3II_H.mjs → generator-VE2JrFlY.mjs} +2 -85
- package/dist/generator-VE2JrFlY.mjs.map +1 -0
- package/dist/index-BThUzEIp.d.mts +175 -0
- package/dist/index-BThUzEIp.d.mts.map +1 -0
- package/dist/index-CHB4tSzX.d.cts +175 -0
- package/dist/index-CHB4tSzX.d.cts.map +1 -0
- package/dist/index.cjs +2329 -1584
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2306 -1561
- package/dist/index.mjs.map +1 -1
- package/dist/{openapi-Cfwi0fqF.mjs → openapi-CgpMWMmM.mjs} +174 -95
- package/dist/openapi-CgpMWMmM.mjs.map +1 -0
- package/dist/{openapi-BzNOC7_i.cjs → openapi-CljONd_M.cjs} +175 -108
- package/dist/openapi-CljONd_M.cjs.map +1 -0
- package/dist/{openapi-react-query-C4iIvpPf.mjs → openapi-react-query-Byltvm_7.mjs} +2 -2
- package/dist/openapi-react-query-Byltvm_7.mjs.map +1 -0
- package/dist/{openapi-react-query-CYWik72n.cjs → openapi-react-query-CmJ1xDbn.cjs} +2 -2
- package/dist/openapi-react-query-CmJ1xDbn.cjs.map +1 -0
- package/dist/openapi-react-query.cjs +1 -1
- package/dist/openapi-react-query.mjs +1 -1
- package/dist/openapi.cjs +4 -3
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/openapi.mjs +4 -3
- package/dist/reconcile/public.cjs +9 -0
- package/dist/reconcile/public.d.cts +125 -0
- package/dist/reconcile/public.d.cts.map +1 -0
- package/dist/reconcile/public.d.mts +125 -0
- package/dist/reconcile/public.d.mts.map +1 -0
- package/dist/reconcile/public.mjs +4 -0
- package/dist/{reconcile-B2FoJE0a.mjs → reconcile-CFs8C_1a.mjs} +5 -4
- package/dist/reconcile-CFs8C_1a.mjs.map +1 -0
- package/dist/{reconcile-BzqKJ2Rt.cjs → reconcile-D0pimNiy.cjs} +5 -4
- package/dist/reconcile-D0pimNiy.cjs.map +1 -0
- package/dist/setup-CJiQM2pX.cjs +473 -0
- package/dist/setup-CJiQM2pX.cjs.map +1 -0
- package/dist/setup-DMtU3p41.cjs +11 -0
- package/dist/setup-DOsYueeQ.mjs +443 -0
- package/dist/setup-DOsYueeQ.mjs.map +1 -0
- package/dist/setup-DSutDAlt.mjs +11 -0
- package/dist/{storage-B1wvztiJ.cjs → storage-BJmzYxt8.cjs} +1 -1
- package/dist/{storage-B1wvztiJ.cjs.map → storage-BJmzYxt8.cjs.map} +1 -1
- package/dist/{storage-DOEtT2Hr.cjs → storage-BM9hGpgv.cjs} +1 -1
- package/dist/{storage-dbb9RyBl.mjs → storage-Bi24WfoW.mjs} +1 -1
- package/dist/{storage-dbb9RyBl.mjs.map → storage-Bi24WfoW.mjs.map} +1 -1
- package/dist/{storage-Cs4WBsc4.mjs → storage-CYlGwWTj.mjs} +1 -1
- package/dist/{sync-CSooqRQ8.mjs → sync-CmEuNZsB.mjs} +2 -2
- package/dist/{sync-CSooqRQ8.mjs.map → sync-CmEuNZsB.mjs.map} +1 -1
- package/dist/sync-D306yOWu.cjs +4 -0
- package/dist/{sync-o_CtEbvR.cjs → sync-SizaChmC.cjs} +2 -2
- package/dist/{sync-o_CtEbvR.cjs.map → sync-SizaChmC.cjs.map} +1 -1
- package/dist/{sync-B5UHXwRM.mjs → sync-hOqAWHR6.mjs} +1 -1
- package/dist/{index-Bw548Bta.d.mts → types-C-arnQ1r.d.mts} +590 -143
- package/dist/types-C-arnQ1r.d.mts.map +1 -0
- package/dist/{index-DTpkeFb8.d.cts → types-abJQuk7m.d.cts} +590 -143
- package/dist/types-abJQuk7m.d.cts.map +1 -0
- package/dist/workspace/index.cjs +5 -1
- package/dist/workspace/index.d.cts +3 -3
- package/dist/workspace/index.d.mts +3 -3
- package/dist/workspace/index.mjs +2 -2
- package/dist/{workspace-D-37Ylqo.mjs → workspace-7FqprxuJ.mjs} +117 -30
- package/dist/workspace-7FqprxuJ.mjs.map +1 -0
- package/dist/workspace-8acupeaI.cjs +9 -0
- package/dist/{workspace-CQTT7HJQ.cjs → workspace-XvqO9jIv.cjs} +139 -28
- package/dist/workspace-XvqO9jIv.cjs.map +1 -0
- package/dist/workspace-yP5AHnrn.mjs +8 -0
- package/package.json +26 -9
- package/CHANGELOG.md +0 -623
- package/FUNCTION_CRON_SUPPORT.md +0 -266
- package/dist/CachedStateProvider-GcGziXh1.mjs +0 -3
- package/dist/HostingerProvider-B2ZYz7Yc.mjs.map +0 -1
- package/dist/HostingerProvider-CrHfsgz9.cjs.map +0 -1
- package/dist/bundler-DkA4qzUD.mjs.map +0 -1
- package/dist/bundler-Dufq3uvI.cjs.map +0 -1
- package/dist/config-Bbu1JKvf.mjs +0 -211
- package/dist/config-Bbu1JKvf.mjs.map +0 -1
- package/dist/config-DujV8DbR.cjs +0 -253
- package/dist/config-DujV8DbR.cjs.map +0 -1
- package/dist/credentials-C8DWtnMY.cjs.map +0 -1
- package/dist/credentials-s1kLcIzK.mjs.map +0 -1
- package/dist/dokploy-api-BPYkG-ZZ.cjs +0 -3
- package/dist/dokploy-api-BiSzWM4v.mjs +0 -3
- package/dist/dokploy-api-CqOIKHme.cjs.map +0 -1
- package/dist/dokploy-api-sfZFlWuE.mjs.map +0 -1
- package/dist/encryption-Bd_m4q3g.mjs +0 -3
- package/dist/fullstack-secrets-BYzi6Hwl.cjs.map +0 -1
- package/dist/fullstack-secrets-l8s3II_H.mjs.map +0 -1
- package/dist/index-Bw548Bta.d.mts.map +0 -1
- package/dist/index-DTpkeFb8.d.cts.map +0 -1
- package/dist/openapi-BzNOC7_i.cjs.map +0 -1
- package/dist/openapi-Cfwi0fqF.mjs.map +0 -1
- package/dist/openapi-react-query-C4iIvpPf.mjs.map +0 -1
- package/dist/openapi-react-query-CYWik72n.cjs.map +0 -1
- package/dist/reconcile-B2FoJE0a.mjs.map +0 -1
- package/dist/reconcile-BzqKJ2Rt.cjs.map +0 -1
- package/dist/setup-DDXUXzzl.mjs +0 -765
- package/dist/setup-DDXUXzzl.mjs.map +0 -1
- package/dist/setup-DLwhfyt-.cjs +0 -8
- package/dist/setup-Dh-B7YTX.mjs +0 -8
- package/dist/setup-WZ-xqAQO.cjs +0 -849
- package/dist/setup-WZ-xqAQO.cjs.map +0 -1
- package/dist/sync-BLA94rgC.cjs +0 -4
- package/dist/types-B3GQUg3k.d.mts +0 -280
- package/dist/types-B3GQUg3k.d.mts.map +0 -1
- package/dist/types-BWQDiooe.d.cts +0 -280
- package/dist/types-BWQDiooe.d.cts.map +0 -1
- package/dist/workspace-CQTT7HJQ.cjs.map +0 -1
- package/dist/workspace-D-37Ylqo.mjs.map +0 -1
- package/docs/OPENAPI_TYPESCRIPT_DESIGN.md +0 -408
- package/docs/dev-server-resilience-design.md +0 -189
- package/docs/manifest-refactor-design.md +0 -287
- package/examples/cron-example.ts +0 -45
- package/examples/env.ts +0 -33
- package/examples/function-example.ts +0 -40
- package/examples/gkm.config.json +0 -22
- package/examples/gkm.config.ts +0 -14
- package/examples/gkm.minimal.config.json +0 -7
- package/examples/gkm.production.config.json +0 -27
- package/examples/logger.ts +0 -10
- package/scripts/sync-versions.ts +0 -108
- package/src/__tests__/EndpointGenerator.hooks.spec.ts +0 -204
- package/src/__tests__/config.spec.ts +0 -422
- package/src/__tests__/loadEnvFiles.spec.ts +0 -131
- package/src/__tests__/normalizeHooksConfig.spec.ts +0 -63
- package/src/__tests__/openapi-react-query.spec.ts +0 -506
- package/src/__tests__/openapi.spec.ts +0 -625
- package/src/__tests__/test-helpers.ts +0 -181
- package/src/auth/__tests__/credentials.spec.ts +0 -331
- package/src/auth/__tests__/index.spec.ts +0 -237
- package/src/auth/credentials.ts +0 -286
- package/src/auth/index.ts +0 -233
- package/src/build/__tests__/bundler.spec.ts +0 -446
- package/src/build/__tests__/endpoint-analyzer.spec.ts +0 -623
- package/src/build/__tests__/handler-templates.spec.ts +0 -1287
- package/src/build/__tests__/index-new.spec.ts +0 -550
- package/src/build/__tests__/manifests.spec.ts +0 -583
- package/src/build/__tests__/partitions.spec.ts +0 -110
- package/src/build/__tests__/workspace-build.spec.ts +0 -215
- package/src/build/bundler.ts +0 -256
- package/src/build/endpoint-analyzer.ts +0 -236
- package/src/build/handler-templates.ts +0 -1253
- package/src/build/index.ts +0 -616
- package/src/build/manifests.ts +0 -285
- package/src/build/partitions.ts +0 -58
- package/src/build/providerResolver.ts +0 -184
- package/src/build/types.ts +0 -104
- package/src/config.ts +0 -330
- package/src/credentials/__tests__/fullDockerPorts.spec.ts +0 -144
- package/src/credentials/__tests__/helpers.ts +0 -112
- package/src/credentials/__tests__/prepareEntryCredentials.spec.ts +0 -125
- package/src/credentials/__tests__/readonlyDockerPorts.spec.ts +0 -190
- package/src/credentials/__tests__/workspaceCredentials.spec.ts +0 -209
- package/src/credentials/index.ts +0 -843
- package/src/debug.ts +0 -68
- package/src/deploy/CachedStateProvider.ts +0 -86
- package/src/deploy/LocalStateProvider.ts +0 -57
- package/src/deploy/SSMStateProvider.ts +0 -117
- package/src/deploy/StateProvider.ts +0 -175
- package/src/deploy/__tests__/CachedStateProvider.spec.ts +0 -235
- package/src/deploy/__tests__/HostingerProvider.spec.ts +0 -347
- package/src/deploy/__tests__/LocalStateProvider.spec.ts +0 -130
- package/src/deploy/__tests__/Route53Provider.spec.ts +0 -425
- package/src/deploy/__tests__/SSMStateProvider.spec.ts +0 -201
- package/src/deploy/__tests__/__fixtures__/entry-apps/async-entry.ts +0 -24
- package/src/deploy/__tests__/__fixtures__/entry-apps/nested-config-entry.ts +0 -24
- package/src/deploy/__tests__/__fixtures__/entry-apps/no-env-entry.ts +0 -12
- package/src/deploy/__tests__/__fixtures__/entry-apps/simple-entry.ts +0 -14
- package/src/deploy/__tests__/__fixtures__/entry-apps/throwing-entry.ts +0 -16
- package/src/deploy/__tests__/__fixtures__/env-parsers/non-function-export.ts +0 -10
- package/src/deploy/__tests__/__fixtures__/env-parsers/optional-env-parser.ts +0 -21
- package/src/deploy/__tests__/__fixtures__/env-parsers/parseable-env-parser.ts +0 -18
- package/src/deploy/__tests__/__fixtures__/env-parsers/throwing-env-parser.ts +0 -16
- package/src/deploy/__tests__/__fixtures__/env-parsers/valid-env-parser.ts +0 -16
- package/src/deploy/__tests__/__fixtures__/route-apps/endpoints/auth.ts +0 -16
- package/src/deploy/__tests__/__fixtures__/route-apps/endpoints/health.ts +0 -13
- package/src/deploy/__tests__/__fixtures__/route-apps/endpoints/users.ts +0 -15
- package/src/deploy/__tests__/__fixtures__/route-apps/services.ts +0 -55
- package/src/deploy/__tests__/backup-provisioner.spec.ts +0 -428
- package/src/deploy/__tests__/createDnsProvider.spec.ts +0 -195
- package/src/deploy/__tests__/createStateProvider.spec.ts +0 -126
- package/src/deploy/__tests__/dns-orchestration.spec.ts +0 -192
- package/src/deploy/__tests__/dns-verification.spec.ts +0 -229
- package/src/deploy/__tests__/docker.spec.ts +0 -149
- package/src/deploy/__tests__/dokploy-api.spec.ts +0 -697
- package/src/deploy/__tests__/dokploy.spec.ts +0 -435
- package/src/deploy/__tests__/domain.spec.ts +0 -235
- package/src/deploy/__tests__/env-resolver.spec.ts +0 -903
- package/src/deploy/__tests__/index.spec.ts +0 -1091
- package/src/deploy/__tests__/init.spec.ts +0 -793
- package/src/deploy/__tests__/secrets.spec.ts +0 -303
- package/src/deploy/__tests__/sniffer.spec.ts +0 -838
- package/src/deploy/__tests__/state-e2e.spec.ts +0 -387
- package/src/deploy/__tests__/state.spec.ts +0 -876
- package/src/deploy/__tests__/undeploy.spec.ts +0 -758
- package/src/deploy/backup-provisioner.ts +0 -316
- package/src/deploy/dns/DnsProvider.ts +0 -201
- package/src/deploy/dns/HostingerProvider.ts +0 -174
- package/src/deploy/dns/Route53Provider.ts +0 -340
- package/src/deploy/dns/hostinger-api.ts +0 -261
- package/src/deploy/dns/index.ts +0 -627
- package/src/deploy/docker.ts +0 -260
- package/src/deploy/dokploy-api.ts +0 -1101
- package/src/deploy/dokploy.ts +0 -177
- package/src/deploy/domain.ts +0 -134
- package/src/deploy/env-resolver.ts +0 -305
- package/src/deploy/index.ts +0 -2094
- package/src/deploy/init.ts +0 -427
- package/src/deploy/secrets.ts +0 -187
- package/src/deploy/sniffer-envkit-patch.ts +0 -61
- package/src/deploy/sniffer-hooks.ts +0 -57
- package/src/deploy/sniffer-loader.ts +0 -28
- package/src/deploy/sniffer-routes-worker.ts +0 -104
- package/src/deploy/sniffer-worker.ts +0 -75
- package/src/deploy/sniffer.ts +0 -578
- package/src/deploy/state-commands.ts +0 -274
- package/src/deploy/state.ts +0 -482
- package/src/deploy/types.ts +0 -102
- package/src/deploy/undeploy.ts +0 -407
- package/src/dev/__tests__/entry-integration.spec.ts +0 -347
- package/src/dev/__tests__/entry.spec.ts +0 -144
- package/src/dev/__tests__/index.spec.ts +0 -2084
- package/src/dev/index.ts +0 -1649
- package/src/docker/__tests__/compose.spec.ts +0 -1142
- package/src/docker/__tests__/templates.spec.ts +0 -694
- package/src/docker/compose.ts +0 -808
- package/src/docker/index.ts +0 -523
- package/src/docker/templates.ts +0 -1067
- package/src/exec/index.ts +0 -118
- package/src/generators/CronGenerator.ts +0 -105
- package/src/generators/EndpointGenerator.ts +0 -954
- package/src/generators/FunctionGenerator.ts +0 -117
- package/src/generators/Generator.ts +0 -147
- package/src/generators/OpenApiTsGenerator.ts +0 -821
- package/src/generators/QueueGenerator.ts +0 -245
- package/src/generators/SubscriberGenerator.ts +0 -282
- package/src/generators/TopicGenerator.ts +0 -45
- package/src/generators/__tests__/CronGenerator.spec.ts +0 -445
- package/src/generators/__tests__/EndpointGenerator.spec.ts +0 -544
- package/src/generators/__tests__/FunctionGenerator.spec.ts +0 -256
- package/src/generators/__tests__/Generator.bustCache.spec.ts +0 -72
- package/src/generators/__tests__/OpenApiTsGenerator.registry.spec.ts +0 -98
- package/src/generators/__tests__/OpenApiTsGenerator.responseType.spec.ts +0 -56
- package/src/generators/__tests__/QueueGenerator.spec.ts +0 -141
- package/src/generators/__tests__/SubscriberGenerator.spec.ts +0 -410
- package/src/generators/index.ts +0 -11
- package/src/index.ts +0 -972
- package/src/init/__tests__/generators.spec.ts +0 -1070
- package/src/init/__tests__/init.spec.ts +0 -577
- package/src/init/__tests__/utils.spec.ts +0 -104
- package/src/init/generators/auth.ts +0 -225
- package/src/init/generators/config.ts +0 -316
- package/src/init/generators/docker.ts +0 -388
- package/src/init/generators/env.ts +0 -62
- package/src/init/generators/index.ts +0 -6
- package/src/init/generators/mobile-expo.ts +0 -576
- package/src/init/generators/models.ts +0 -153
- package/src/init/generators/monorepo.ts +0 -475
- package/src/init/generators/package.ts +0 -95
- package/src/init/generators/source.ts +0 -15
- package/src/init/generators/test.ts +0 -178
- package/src/init/generators/ui.ts +0 -1473
- package/src/init/generators/web-tanstack.ts +0 -348
- package/src/init/generators/web.ts +0 -363
- package/src/init/index.ts +0 -542
- package/src/init/templates/api.ts +0 -404
- package/src/init/templates/index.ts +0 -342
- package/src/init/templates/minimal.ts +0 -207
- package/src/init/templates/serverless.ts +0 -148
- package/src/init/templates/worker.ts +0 -216
- package/src/init/utils.ts +0 -197
- package/src/init/versions.ts +0 -52
- package/src/openapi-react-query.ts +0 -288
- package/src/openapi.ts +0 -259
- package/src/secrets/__tests__/encryption.spec.ts +0 -226
- package/src/secrets/__tests__/generator.spec.ts +0 -575
- package/src/secrets/__tests__/index.spec.ts +0 -91
- package/src/secrets/__tests__/reconcile.spec.ts +0 -123
- package/src/secrets/__tests__/storage.spec.ts +0 -645
- package/src/secrets/encryption.ts +0 -91
- package/src/secrets/generator.ts +0 -329
- package/src/secrets/index.ts +0 -417
- package/src/secrets/keystore.ts +0 -144
- package/src/secrets/reconcile.ts +0 -53
- package/src/secrets/storage.ts +0 -337
- package/src/secrets/sync.ts +0 -136
- package/src/secrets/types.ts +0 -70
- package/src/setup/__tests__/auto-setup.spec.ts +0 -147
- package/src/setup/__tests__/reconcile-secrets.spec.ts +0 -439
- package/src/setup/fullstack-secrets.ts +0 -140
- package/src/setup/index.ts +0 -411
- package/src/test/__tests__/__fixtures__/workspace.ts +0 -104
- package/src/test/__tests__/api.spec.ts +0 -199
- package/src/test/__tests__/auth.spec.ts +0 -162
- package/src/test/__tests__/index.spec.ts +0 -502
- package/src/test/__tests__/web.spec.ts +0 -210
- package/src/test/index.ts +0 -198
- package/src/types.ts +0 -363
- package/src/upgrade/__tests__/index.spec.ts +0 -354
- package/src/upgrade/index.ts +0 -253
- package/src/workspace/__tests__/client-generator.spec.ts +0 -326
- package/src/workspace/__tests__/index.spec.ts +0 -766
- package/src/workspace/__tests__/publicEnv.spec.ts +0 -64
- package/src/workspace/__tests__/schema.spec.ts +0 -737
- package/src/workspace/__tests__/type-inference.spec.ts +0 -251
- package/src/workspace/client-generator.ts +0 -109
- package/src/workspace/index.ts +0 -433
- package/src/workspace/publicEnv.ts +0 -57
- package/src/workspace/schema.ts +0 -861
- package/src/workspace/types.ts +0 -943
- package/tsconfig.json +0 -9
- package/tsdown.config.ts +0 -22
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
import type { EventsBackend } from '../../types.js';
|
|
2
|
-
import type {
|
|
3
|
-
GeneratedFile,
|
|
4
|
-
TemplateConfig,
|
|
5
|
-
TemplateOptions,
|
|
6
|
-
} from '../templates/index.js';
|
|
7
|
-
|
|
8
|
-
export interface DatabaseAppConfig {
|
|
9
|
-
name: string;
|
|
10
|
-
password: string;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Generate docker-compose.yml based on template and options
|
|
15
|
-
*/
|
|
16
|
-
export function generateDockerFiles(
|
|
17
|
-
options: TemplateOptions,
|
|
18
|
-
template: TemplateConfig,
|
|
19
|
-
dbApps?: DatabaseAppConfig[],
|
|
20
|
-
): GeneratedFile[] {
|
|
21
|
-
const { database } = options;
|
|
22
|
-
const isServerless = template.name === 'serverless';
|
|
23
|
-
const hasWorker = template.name === 'worker';
|
|
24
|
-
const isFullstack = options.template === 'fullstack';
|
|
25
|
-
|
|
26
|
-
const services: string[] = [];
|
|
27
|
-
const volumes: string[] = [];
|
|
28
|
-
const files: GeneratedFile[] = [];
|
|
29
|
-
|
|
30
|
-
// PostgreSQL database
|
|
31
|
-
if (database) {
|
|
32
|
-
const initVolume =
|
|
33
|
-
isFullstack && dbApps?.length
|
|
34
|
-
? `
|
|
35
|
-
- ./docker/postgres/init.sh:/docker-entrypoint-initdb.d/init.sh:ro`
|
|
36
|
-
: '';
|
|
37
|
-
|
|
38
|
-
const envFile =
|
|
39
|
-
isFullstack && dbApps?.length
|
|
40
|
-
? `
|
|
41
|
-
env_file:
|
|
42
|
-
- ./docker/.env`
|
|
43
|
-
: '';
|
|
44
|
-
|
|
45
|
-
services.push(` postgres:
|
|
46
|
-
image: postgres:18-alpine
|
|
47
|
-
container_name: ${options.name}-postgres
|
|
48
|
-
restart: unless-stopped${envFile}
|
|
49
|
-
environment:
|
|
50
|
-
POSTGRES_USER: \${POSTGRES_USER:-postgres}
|
|
51
|
-
POSTGRES_PASSWORD: \${POSTGRES_PASSWORD:-postgres}
|
|
52
|
-
POSTGRES_DB: \${POSTGRES_DB:-${options.name.replace(/-/g, '_')}_dev}
|
|
53
|
-
ports:
|
|
54
|
-
- '\${POSTGRES_HOST_PORT:-5432}:5432'
|
|
55
|
-
volumes:
|
|
56
|
-
- dbdata:/var/lib/postgresql/18/data${initVolume}
|
|
57
|
-
healthcheck:
|
|
58
|
-
test: ['CMD-SHELL', 'pg_isready -U $$POSTGRES_USER']
|
|
59
|
-
interval: 5s
|
|
60
|
-
timeout: 5s
|
|
61
|
-
retries: 5`);
|
|
62
|
-
volumes.push(' dbdata:');
|
|
63
|
-
|
|
64
|
-
// Generate PostgreSQL init script and .env for fullstack template
|
|
65
|
-
if (isFullstack && dbApps?.length) {
|
|
66
|
-
files.push({
|
|
67
|
-
path: 'docker/postgres/init.sh',
|
|
68
|
-
content: generatePostgresInitScript(dbApps, options.services?.events),
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
// Generate .env file for docker-compose (contains db passwords)
|
|
72
|
-
files.push({
|
|
73
|
-
path: 'docker/.env',
|
|
74
|
-
content: generateDockerEnv(dbApps, options.services?.events),
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Redis - different setup for serverless vs standard
|
|
80
|
-
if (isServerless) {
|
|
81
|
-
// Use serverless-redis-http for Lambda compatibility
|
|
82
|
-
services.push(` redis:
|
|
83
|
-
image: redis:7-alpine
|
|
84
|
-
container_name: ${options.name}-redis
|
|
85
|
-
restart: unless-stopped
|
|
86
|
-
ports:
|
|
87
|
-
- '\${REDIS_HOST_PORT:-6379}:6379'
|
|
88
|
-
volumes:
|
|
89
|
-
- redis_data:/data
|
|
90
|
-
healthcheck:
|
|
91
|
-
test: ['CMD', 'redis-cli', 'ping']
|
|
92
|
-
interval: 5s
|
|
93
|
-
timeout: 5s
|
|
94
|
-
retries: 5
|
|
95
|
-
|
|
96
|
-
serverless-redis:
|
|
97
|
-
image: hiett/serverless-redis-http:latest
|
|
98
|
-
container_name: ${options.name}-serverless-redis
|
|
99
|
-
restart: unless-stopped
|
|
100
|
-
ports:
|
|
101
|
-
- '\${SRH_HOST_PORT:-8079}:80'
|
|
102
|
-
environment:
|
|
103
|
-
SRH_MODE: env
|
|
104
|
-
SRH_TOKEN: local_dev_token
|
|
105
|
-
SRH_CONNECTION_STRING: redis://redis:6379
|
|
106
|
-
depends_on:
|
|
107
|
-
redis:
|
|
108
|
-
condition: service_healthy`);
|
|
109
|
-
volumes.push(' redis_data:');
|
|
110
|
-
} else {
|
|
111
|
-
// Standard Redis for non-serverless templates
|
|
112
|
-
services.push(` redis:
|
|
113
|
-
image: redis:7-alpine
|
|
114
|
-
container_name: ${options.name}-redis
|
|
115
|
-
restart: unless-stopped
|
|
116
|
-
ports:
|
|
117
|
-
- '\${REDIS_HOST_PORT:-6379}:6379'
|
|
118
|
-
volumes:
|
|
119
|
-
- redis_data:/data
|
|
120
|
-
healthcheck:
|
|
121
|
-
test: ['CMD', 'redis-cli', 'ping']
|
|
122
|
-
interval: 5s
|
|
123
|
-
timeout: 5s
|
|
124
|
-
retries: 5`);
|
|
125
|
-
volumes.push(' redis_data:');
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// RabbitMQ for worker template
|
|
129
|
-
if (hasWorker) {
|
|
130
|
-
services.push(` rabbitmq:
|
|
131
|
-
image: rabbitmq:3-management-alpine
|
|
132
|
-
container_name: ${options.name}-rabbitmq
|
|
133
|
-
restart: unless-stopped
|
|
134
|
-
ports:
|
|
135
|
-
- '\${RABBITMQ_HOST_PORT:-5672}:5672'
|
|
136
|
-
- '\${RABBITMQ_MGMT_HOST_PORT:-15672}:15672'
|
|
137
|
-
environment:
|
|
138
|
-
RABBITMQ_DEFAULT_USER: guest
|
|
139
|
-
RABBITMQ_DEFAULT_PASS: guest
|
|
140
|
-
volumes:
|
|
141
|
-
- rabbitmq_data:/var/lib/rabbitmq
|
|
142
|
-
healthcheck:
|
|
143
|
-
test: ['CMD', 'rabbitmq-diagnostics', 'check_running']
|
|
144
|
-
interval: 10s
|
|
145
|
-
timeout: 5s
|
|
146
|
-
retries: 5`);
|
|
147
|
-
volumes.push(' rabbitmq_data:');
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Mailpit for email testing
|
|
151
|
-
if (options.services?.mail) {
|
|
152
|
-
services.push(` mailpit:
|
|
153
|
-
image: axllent/mailpit:latest
|
|
154
|
-
container_name: ${options.name}-mailpit
|
|
155
|
-
restart: unless-stopped
|
|
156
|
-
ports:
|
|
157
|
-
- '\${SMTP_PORT:-1025}:1025'
|
|
158
|
-
- '\${MAILPIT_PORT:-8025}:8025'
|
|
159
|
-
environment:
|
|
160
|
-
MP_SMTP_AUTH: \${SMTP_USER:-${options.name}}:\${SMTP_PASS:-${options.name}}`);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// MinIO for S3-compatible object storage
|
|
164
|
-
if (options.services?.storage) {
|
|
165
|
-
services.push(` minio:
|
|
166
|
-
image: minio/minio:latest
|
|
167
|
-
container_name: ${options.name}-minio
|
|
168
|
-
restart: unless-stopped
|
|
169
|
-
entrypoint: sh
|
|
170
|
-
command: -c 'mkdir -p /data/\${STORAGE_BUCKET:-${options.name}} && /usr/bin/docker-entrypoint.sh server --console-address ":9001" /data'
|
|
171
|
-
environment:
|
|
172
|
-
MINIO_ROOT_USER: \${STORAGE_ACCESS_KEY_ID:-${options.name}}
|
|
173
|
-
MINIO_ROOT_PASSWORD: \${STORAGE_SECRET_ACCESS_KEY:-${options.name}}
|
|
174
|
-
ports:
|
|
175
|
-
- '\${MINIO_API_HOST_PORT:-9000}:9000'
|
|
176
|
-
- '\${MINIO_CONSOLE_HOST_PORT:-9001}:9001'
|
|
177
|
-
volumes:
|
|
178
|
-
- minio_data:/data
|
|
179
|
-
healthcheck:
|
|
180
|
-
test: ['CMD', 'mc', 'ready', 'local']
|
|
181
|
-
interval: 10s
|
|
182
|
-
timeout: 5s
|
|
183
|
-
retries: 5`);
|
|
184
|
-
volumes.push(' minio_data:');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// LocalStack for SNS events
|
|
188
|
-
if (options.services?.events === 'sns') {
|
|
189
|
-
services.push(` localstack:
|
|
190
|
-
image: localstack/localstack:latest
|
|
191
|
-
container_name: ${options.name}-localstack
|
|
192
|
-
restart: unless-stopped
|
|
193
|
-
environment:
|
|
194
|
-
SERVICES: sns,sqs
|
|
195
|
-
AWS_DEFAULT_REGION: \${AWS_REGION:-us-east-1}
|
|
196
|
-
AWS_ACCESS_KEY_ID: \${AWS_ACCESS_KEY_ID:-localstack}
|
|
197
|
-
AWS_SECRET_ACCESS_KEY: \${AWS_SECRET_ACCESS_KEY:-localstack}
|
|
198
|
-
ports:
|
|
199
|
-
- '\${LOCALSTACK_PORT:-4566}:4566'
|
|
200
|
-
volumes:
|
|
201
|
-
- localstack_data:/var/lib/localstack
|
|
202
|
-
healthcheck:
|
|
203
|
-
test: ['CMD', 'curl', '-f', 'http://localhost:4566/_localstack/health']
|
|
204
|
-
interval: 10s
|
|
205
|
-
timeout: 5s
|
|
206
|
-
retries: 5`);
|
|
207
|
-
volumes.push(' localstack_data:');
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// RabbitMQ for rabbitmq events (when not already added by worker template)
|
|
211
|
-
if (options.services?.events === 'rabbitmq' && !hasWorker) {
|
|
212
|
-
services.push(` rabbitmq:
|
|
213
|
-
image: rabbitmq:3-management-alpine
|
|
214
|
-
container_name: ${options.name}-rabbitmq
|
|
215
|
-
restart: unless-stopped
|
|
216
|
-
ports:
|
|
217
|
-
- '\${RABBITMQ_HOST_PORT:-5672}:5672'
|
|
218
|
-
- '\${RABBITMQ_MGMT_HOST_PORT:-15672}:15672'
|
|
219
|
-
environment:
|
|
220
|
-
RABBITMQ_DEFAULT_USER: guest
|
|
221
|
-
RABBITMQ_DEFAULT_PASS: guest
|
|
222
|
-
volumes:
|
|
223
|
-
- rabbitmq_data:/var/lib/rabbitmq
|
|
224
|
-
healthcheck:
|
|
225
|
-
test: ['CMD', 'rabbitmq-diagnostics', 'check_running']
|
|
226
|
-
interval: 10s
|
|
227
|
-
timeout: 5s
|
|
228
|
-
retries: 5`);
|
|
229
|
-
if (!volumes.includes(' rabbitmq_data:')) {
|
|
230
|
-
volumes.push(' rabbitmq_data:');
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Build docker-compose.yml
|
|
235
|
-
let dockerCompose = `# Use "gkm dev" or "gkm test" to start services.
|
|
236
|
-
# Running "docker compose up" directly will not inject secrets or resolve ports.
|
|
237
|
-
services:
|
|
238
|
-
${services.join('\n\n')}
|
|
239
|
-
`;
|
|
240
|
-
|
|
241
|
-
if (volumes.length > 0) {
|
|
242
|
-
dockerCompose += `
|
|
243
|
-
volumes:
|
|
244
|
-
${volumes.join('\n')}
|
|
245
|
-
`;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// Add docker-compose.yml to files
|
|
249
|
-
files.push({
|
|
250
|
-
path: 'docker-compose.yml',
|
|
251
|
-
content: dockerCompose,
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
return files;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Generate .env file for docker-compose with database passwords
|
|
259
|
-
*/
|
|
260
|
-
function generateDockerEnv(
|
|
261
|
-
apps: DatabaseAppConfig[],
|
|
262
|
-
_eventsBackend?: EventsBackend,
|
|
263
|
-
): string {
|
|
264
|
-
const envVars = apps.map((app) => {
|
|
265
|
-
const envVar = `${app.name.toUpperCase()}_DB_PASSWORD`;
|
|
266
|
-
return `${envVar}=${app.password}`;
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
// Always include pgboss password for the dedicated pgboss user
|
|
270
|
-
envVars.push(`PGBOSS_DB_PASSWORD=pgboss-dev-password`);
|
|
271
|
-
|
|
272
|
-
return `# Auto-generated docker environment file
|
|
273
|
-
# Contains database passwords for docker-compose postgres init
|
|
274
|
-
# This file is gitignored - do not commit to version control
|
|
275
|
-
${envVars.join('\n')}
|
|
276
|
-
`;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/**
|
|
280
|
-
* Generate PostgreSQL init shell script that creates per-app users with separate schemas.
|
|
281
|
-
* Uses idempotent DO blocks so the script can be re-run safely.
|
|
282
|
-
* - api user: uses public schema
|
|
283
|
-
* - auth user: uses auth schema with search_path=auth
|
|
284
|
-
* - pgboss user: uses pgboss schema (when events === 'pgboss')
|
|
285
|
-
*/
|
|
286
|
-
function generatePostgresInitScript(
|
|
287
|
-
apps: DatabaseAppConfig[],
|
|
288
|
-
_eventsBackend?: EventsBackend,
|
|
289
|
-
): string {
|
|
290
|
-
const userCreations = apps.map((app) => {
|
|
291
|
-
const userName = app.name.replace(/-/g, '_');
|
|
292
|
-
const envVar = `${app.name.toUpperCase()}_DB_PASSWORD`;
|
|
293
|
-
const isApi = app.name === 'api';
|
|
294
|
-
const schemaName = isApi ? 'public' : userName;
|
|
295
|
-
|
|
296
|
-
if (isApi) {
|
|
297
|
-
return `
|
|
298
|
-
# Create ${app.name} user (uses public schema) - idempotent
|
|
299
|
-
echo "Creating user ${userName}..."
|
|
300
|
-
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
301
|
-
DO \\$\\$
|
|
302
|
-
BEGIN
|
|
303
|
-
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${userName}') THEN
|
|
304
|
-
CREATE USER ${userName} WITH PASSWORD '$${envVar}';
|
|
305
|
-
ELSE
|
|
306
|
-
ALTER USER ${userName} WITH PASSWORD '$${envVar}';
|
|
307
|
-
END IF;
|
|
308
|
-
END
|
|
309
|
-
\\$\\$;
|
|
310
|
-
GRANT ALL ON SCHEMA public TO ${userName};
|
|
311
|
-
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO ${userName};
|
|
312
|
-
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO ${userName};
|
|
313
|
-
EOSQL
|
|
314
|
-
`;
|
|
315
|
-
}
|
|
316
|
-
return `
|
|
317
|
-
# Create ${app.name} user with dedicated schema - idempotent
|
|
318
|
-
echo "Creating user ${userName} with schema ${schemaName}..."
|
|
319
|
-
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
320
|
-
DO \\$\\$
|
|
321
|
-
BEGIN
|
|
322
|
-
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${userName}') THEN
|
|
323
|
-
CREATE USER ${userName} WITH PASSWORD '$${envVar}';
|
|
324
|
-
ELSE
|
|
325
|
-
ALTER USER ${userName} WITH PASSWORD '$${envVar}';
|
|
326
|
-
END IF;
|
|
327
|
-
END
|
|
328
|
-
\\$\\$;
|
|
329
|
-
CREATE SCHEMA IF NOT EXISTS ${schemaName} AUTHORIZATION ${userName};
|
|
330
|
-
ALTER USER ${userName} SET search_path TO ${schemaName};
|
|
331
|
-
GRANT USAGE ON SCHEMA ${schemaName} TO ${userName};
|
|
332
|
-
GRANT ALL ON ALL TABLES IN SCHEMA ${schemaName} TO ${userName};
|
|
333
|
-
GRANT ALL ON ALL SEQUENCES IN SCHEMA ${schemaName} TO ${userName};
|
|
334
|
-
ALTER DEFAULT PRIVILEGES IN SCHEMA ${schemaName} GRANT ALL ON TABLES TO ${userName};
|
|
335
|
-
ALTER DEFAULT PRIVILEGES IN SCHEMA ${schemaName} GRANT ALL ON SEQUENCES TO ${userName};
|
|
336
|
-
EOSQL
|
|
337
|
-
`;
|
|
338
|
-
});
|
|
339
|
-
|
|
340
|
-
// Always add pgboss user and schema.
|
|
341
|
-
// pgboss reuses the same database with a dedicated user/schema,
|
|
342
|
-
// so subscribers work out of the box without explicit events config.
|
|
343
|
-
const pgbossBlock = `
|
|
344
|
-
# Create pgboss user with dedicated schema - idempotent
|
|
345
|
-
echo "Creating pgboss user and schema..."
|
|
346
|
-
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
347
|
-
DO \\$\\$
|
|
348
|
-
BEGIN
|
|
349
|
-
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = 'pgboss') THEN
|
|
350
|
-
CREATE USER pgboss WITH PASSWORD '$PGBOSS_DB_PASSWORD';
|
|
351
|
-
ELSE
|
|
352
|
-
ALTER USER pgboss WITH PASSWORD '$PGBOSS_DB_PASSWORD';
|
|
353
|
-
END IF;
|
|
354
|
-
END
|
|
355
|
-
\\$\\$;
|
|
356
|
-
CREATE SCHEMA IF NOT EXISTS pgboss AUTHORIZATION pgboss;
|
|
357
|
-
ALTER USER pgboss SET search_path TO pgboss;
|
|
358
|
-
GRANT USAGE ON SCHEMA pgboss TO pgboss;
|
|
359
|
-
GRANT ALL ON ALL TABLES IN SCHEMA pgboss TO pgboss;
|
|
360
|
-
GRANT ALL ON ALL SEQUENCES IN SCHEMA pgboss TO pgboss;
|
|
361
|
-
ALTER DEFAULT PRIVILEGES IN SCHEMA pgboss GRANT ALL ON TABLES TO pgboss;
|
|
362
|
-
ALTER DEFAULT PRIVILEGES IN SCHEMA pgboss GRANT ALL ON SEQUENCES TO pgboss;
|
|
363
|
-
EOSQL
|
|
364
|
-
`;
|
|
365
|
-
|
|
366
|
-
// Add extensions
|
|
367
|
-
const extensions = `
|
|
368
|
-
# Create extensions
|
|
369
|
-
echo "Creating extensions..."
|
|
370
|
-
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
|
371
|
-
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
|
372
|
-
CREATE EXTENSION IF NOT EXISTS citext;
|
|
373
|
-
EOSQL
|
|
374
|
-
`;
|
|
375
|
-
|
|
376
|
-
return `#!/bin/bash
|
|
377
|
-
set -e
|
|
378
|
-
|
|
379
|
-
# Auto-generated PostgreSQL init script (idempotent - safe to re-run)
|
|
380
|
-
# Creates per-app users with separate schemas in a single database
|
|
381
|
-
# - api: uses public schema
|
|
382
|
-
# - auth: uses auth schema (search_path=auth)
|
|
383
|
-
# - pgboss: uses pgboss schema for event processing
|
|
384
|
-
${extensions}
|
|
385
|
-
${userCreations.join('\n')}${pgbossBlock}
|
|
386
|
-
echo "Database initialization complete!"
|
|
387
|
-
`;
|
|
388
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
GeneratedFile,
|
|
3
|
-
TemplateConfig,
|
|
4
|
-
TemplateOptions,
|
|
5
|
-
} from '../templates/index.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Generate environment-related files (.gitignore only).
|
|
9
|
-
* Note: .env files are no longer generated. Use `gkm secrets:init` to initialize
|
|
10
|
-
* encrypted secrets stored in `.gkm/secrets/{stage}.json` with keys stored at
|
|
11
|
-
* `~/.gkm/{project-name}/{stage}.key`.
|
|
12
|
-
*/
|
|
13
|
-
export function generateEnvFiles(
|
|
14
|
-
options: TemplateOptions,
|
|
15
|
-
_template: TemplateConfig,
|
|
16
|
-
): GeneratedFile[] {
|
|
17
|
-
const files: GeneratedFile[] = [];
|
|
18
|
-
|
|
19
|
-
// Only add .gitignore for non-monorepo (monorepo has it at root)
|
|
20
|
-
if (!options.monorepo) {
|
|
21
|
-
const gitignore = `# Dependencies
|
|
22
|
-
node_modules/
|
|
23
|
-
|
|
24
|
-
# Build output
|
|
25
|
-
dist/
|
|
26
|
-
.gkm/
|
|
27
|
-
|
|
28
|
-
# Environment (legacy - use gkm secrets instead)
|
|
29
|
-
.env
|
|
30
|
-
.env.local
|
|
31
|
-
.env.*.local
|
|
32
|
-
|
|
33
|
-
# IDE
|
|
34
|
-
.idea/
|
|
35
|
-
.vscode/
|
|
36
|
-
*.swp
|
|
37
|
-
*.swo
|
|
38
|
-
|
|
39
|
-
# OS
|
|
40
|
-
.DS_Store
|
|
41
|
-
Thumbs.db
|
|
42
|
-
|
|
43
|
-
# Logs
|
|
44
|
-
*.log
|
|
45
|
-
npm-debug.log*
|
|
46
|
-
yarn-debug.log*
|
|
47
|
-
pnpm-debug.log*
|
|
48
|
-
|
|
49
|
-
# Test coverage
|
|
50
|
-
coverage/
|
|
51
|
-
|
|
52
|
-
# TypeScript cache
|
|
53
|
-
*.tsbuildinfo
|
|
54
|
-
`;
|
|
55
|
-
files.push({
|
|
56
|
-
path: '.gitignore',
|
|
57
|
-
content: gitignore,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return files;
|
|
62
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { generateAuthAppFiles } from './auth.js';
|
|
2
|
-
export { generateConfigFiles } from './config.js';
|
|
3
|
-
export { generateEnvFiles } from './env.js';
|
|
4
|
-
export { generatePackageJson } from './package.js';
|
|
5
|
-
export { generateSourceFiles } from './source.js';
|
|
6
|
-
export { generateTestFiles } from './test.js';
|