@geekmidas/cli 9.0.2 → 10.0.0-alpha.1
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 +66 -122
- 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 +2530 -1810
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2506 -1786
- 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 -650
- 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
package/src/build/manifests.ts
DELETED
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
-
import { join, relative } from 'node:path';
|
|
3
|
-
import type {
|
|
4
|
-
CronInfo,
|
|
5
|
-
FunctionInfo,
|
|
6
|
-
QueueInfo,
|
|
7
|
-
RouteInfo,
|
|
8
|
-
SubscriberInfo,
|
|
9
|
-
TopicInfo,
|
|
10
|
-
} from '../types';
|
|
11
|
-
|
|
12
|
-
const logger = console;
|
|
13
|
-
|
|
14
|
-
export type ManifestProvider = 'aws' | 'server';
|
|
15
|
-
|
|
16
|
-
export interface ServerAppInfo {
|
|
17
|
-
handler: string;
|
|
18
|
-
endpoints: string;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* A manifest field is either a flat array (no partition) or
|
|
23
|
-
* an object keyed by partition name (partitioned).
|
|
24
|
-
*/
|
|
25
|
-
export type ManifestField<T> = T[] | Record<string, T[]>;
|
|
26
|
-
|
|
27
|
-
function isPartitioned<T>(
|
|
28
|
-
field: ManifestField<T>,
|
|
29
|
-
): field is Record<string, T[]> {
|
|
30
|
-
return !Array.isArray(field);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Serialize a manifest field to a TypeScript string.
|
|
35
|
-
* Flat arrays serialize as JSON arrays, partitioned fields as objects of arrays.
|
|
36
|
-
*/
|
|
37
|
-
function serializeField<T>(field: ManifestField<T>, indent = 2): string {
|
|
38
|
-
if (Array.isArray(field)) {
|
|
39
|
-
return JSON.stringify(field, null, indent);
|
|
40
|
-
}
|
|
41
|
-
// Partitioned: { admin: [...], default: [...] }
|
|
42
|
-
const entries = Object.entries(field)
|
|
43
|
-
.map(
|
|
44
|
-
([key, value]) =>
|
|
45
|
-
` ${JSON.stringify(key)}: ${JSON.stringify(value, null, indent)}`,
|
|
46
|
-
)
|
|
47
|
-
.join(',\n');
|
|
48
|
-
return `{\n${entries},\n }`;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Count total items across a manifest field (flat or partitioned).
|
|
53
|
-
*/
|
|
54
|
-
function countItems<T>(field: ManifestField<T>): number {
|
|
55
|
-
if (Array.isArray(field)) return field.length;
|
|
56
|
-
return Object.values(field).reduce((sum, arr) => sum + arr.length, 0);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Generate derived types for a construct field.
|
|
61
|
-
* @param fieldName - The field name in the manifest (e.g., 'routes')
|
|
62
|
-
* @param typeName - The exported type name (e.g., 'Route')
|
|
63
|
-
* @param partitioned - Whether this field is partitioned
|
|
64
|
-
*/
|
|
65
|
-
function generateDerivedType(
|
|
66
|
-
fieldName: string,
|
|
67
|
-
typeName: string,
|
|
68
|
-
partitioned: boolean,
|
|
69
|
-
): string {
|
|
70
|
-
if (partitioned) {
|
|
71
|
-
const partitionTypeName = `${typeName}Partition`;
|
|
72
|
-
return [
|
|
73
|
-
`export type ${partitionTypeName} = keyof typeof manifest.${fieldName};`,
|
|
74
|
-
`export type ${typeName}<P extends ${partitionTypeName} = ${partitionTypeName}> = (typeof manifest.${fieldName})[P][number];`,
|
|
75
|
-
].join('\n');
|
|
76
|
-
}
|
|
77
|
-
return `export type ${typeName} = (typeof manifest.${fieldName})[number];`;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export async function generateAwsManifest(
|
|
81
|
-
outputDir: string,
|
|
82
|
-
routes: ManifestField<RouteInfo>,
|
|
83
|
-
functions: ManifestField<FunctionInfo>,
|
|
84
|
-
crons: ManifestField<CronInfo>,
|
|
85
|
-
subscribers: ManifestField<SubscriberInfo>,
|
|
86
|
-
queues: ManifestField<QueueInfo> = [],
|
|
87
|
-
topics: ManifestField<TopicInfo> = [],
|
|
88
|
-
): Promise<void> {
|
|
89
|
-
const manifestDir = join(outputDir, 'manifest');
|
|
90
|
-
await mkdir(manifestDir, { recursive: true });
|
|
91
|
-
|
|
92
|
-
// Filter out 'ALL' method routes (server-specific)
|
|
93
|
-
const awsRoutes = filterAllRoutes(routes);
|
|
94
|
-
|
|
95
|
-
const routesPartitioned = isPartitioned(awsRoutes);
|
|
96
|
-
const functionsPartitioned = isPartitioned(functions);
|
|
97
|
-
const cronsPartitioned = isPartitioned(crons);
|
|
98
|
-
const subscribersPartitioned = isPartitioned(subscribers);
|
|
99
|
-
const queuesPartitioned = isPartitioned(queues);
|
|
100
|
-
const topicsPartitioned = isPartitioned(topics);
|
|
101
|
-
|
|
102
|
-
const content = `export const manifest = {
|
|
103
|
-
routes: ${serializeField(awsRoutes)},
|
|
104
|
-
functions: ${serializeField(functions)},
|
|
105
|
-
crons: ${serializeField(crons)},
|
|
106
|
-
subscribers: ${serializeField(subscribers)},
|
|
107
|
-
queues: ${serializeField(queues)},
|
|
108
|
-
topics: ${serializeField(topics)},
|
|
109
|
-
} as const;
|
|
110
|
-
|
|
111
|
-
// Derived types
|
|
112
|
-
${generateDerivedType('routes', 'Route', routesPartitioned)}
|
|
113
|
-
${generateDerivedType('functions', 'Function', functionsPartitioned)}
|
|
114
|
-
${generateDerivedType('crons', 'Cron', cronsPartitioned)}
|
|
115
|
-
${generateDerivedType('subscribers', 'Subscriber', subscribersPartitioned)}
|
|
116
|
-
${generateDerivedType('queues', 'Queue', queuesPartitioned)}
|
|
117
|
-
${generateDerivedType('topics', 'Topic', topicsPartitioned)}
|
|
118
|
-
|
|
119
|
-
// Useful union types
|
|
120
|
-
export type Authorizer = Route['authorizer'];
|
|
121
|
-
export type HttpMethod = Route['method'];
|
|
122
|
-
export type RoutePath = Route['path'];
|
|
123
|
-
`;
|
|
124
|
-
|
|
125
|
-
const manifestPath = join(manifestDir, 'aws.ts');
|
|
126
|
-
await writeFile(manifestPath, content);
|
|
127
|
-
|
|
128
|
-
logger.log(
|
|
129
|
-
`Generated AWS manifest with ${countItems(awsRoutes)} routes, ${countItems(functions)} functions, ${countItems(crons)} crons, ${countItems(subscribers)} subscribers, ${countItems(queues)} queues, ${countItems(topics)} topics`,
|
|
130
|
-
);
|
|
131
|
-
logger.log(`Manifest: ${relative(process.cwd(), manifestPath)}`);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export async function generateServerManifest(
|
|
135
|
-
outputDir: string,
|
|
136
|
-
appInfo: ServerAppInfo,
|
|
137
|
-
routes: ManifestField<RouteInfo>,
|
|
138
|
-
subscribers: ManifestField<SubscriberInfo>,
|
|
139
|
-
queues: ManifestField<QueueInfo> = [],
|
|
140
|
-
topics: ManifestField<TopicInfo> = [],
|
|
141
|
-
): Promise<void> {
|
|
142
|
-
const manifestDir = join(outputDir, 'manifest');
|
|
143
|
-
await mkdir(manifestDir, { recursive: true });
|
|
144
|
-
|
|
145
|
-
// For server, extract route metadata (path, method, authorizer)
|
|
146
|
-
const serverRoutes = mapRouteMetadata(filterAllRoutes(routes));
|
|
147
|
-
|
|
148
|
-
// Server subscribers only need name and events
|
|
149
|
-
const serverSubscribers = mapSubscriberMetadata(subscribers);
|
|
150
|
-
|
|
151
|
-
// Server queues only need their name (the worker is wired by setupQueues)
|
|
152
|
-
const serverQueues = mapQueueMetadata(queues);
|
|
153
|
-
|
|
154
|
-
// Server topics only need name + events (pg-boss routes by event name locally)
|
|
155
|
-
const serverTopics = mapTopicMetadata(topics);
|
|
156
|
-
|
|
157
|
-
const routesPartitioned = isPartitioned(serverRoutes);
|
|
158
|
-
const subscribersPartitioned = isPartitioned(serverSubscribers);
|
|
159
|
-
const queuesPartitioned = isPartitioned(serverQueues);
|
|
160
|
-
const topicsPartitioned = isPartitioned(serverTopics);
|
|
161
|
-
|
|
162
|
-
const content = `export const manifest = {
|
|
163
|
-
app: ${JSON.stringify(appInfo, null, 2)},
|
|
164
|
-
routes: ${serializeField(serverRoutes)},
|
|
165
|
-
subscribers: ${serializeField(serverSubscribers)},
|
|
166
|
-
queues: ${serializeField(serverQueues)},
|
|
167
|
-
topics: ${serializeField(serverTopics)},
|
|
168
|
-
} as const;
|
|
169
|
-
|
|
170
|
-
// Derived types
|
|
171
|
-
${generateDerivedType('routes', 'Route', routesPartitioned)}
|
|
172
|
-
${generateDerivedType('subscribers', 'Subscriber', subscribersPartitioned)}
|
|
173
|
-
${generateDerivedType('queues', 'Queue', queuesPartitioned)}
|
|
174
|
-
${generateDerivedType('topics', 'Topic', topicsPartitioned)}
|
|
175
|
-
|
|
176
|
-
// Useful union types
|
|
177
|
-
export type Authorizer = Route['authorizer'];
|
|
178
|
-
export type HttpMethod = Route['method'];
|
|
179
|
-
export type RoutePath = Route['path'];
|
|
180
|
-
`;
|
|
181
|
-
|
|
182
|
-
const manifestPath = join(manifestDir, 'server.ts');
|
|
183
|
-
await writeFile(manifestPath, content);
|
|
184
|
-
|
|
185
|
-
logger.log(
|
|
186
|
-
`Generated server manifest with ${countItems(serverRoutes)} routes, ${countItems(serverSubscribers)} subscribers, ${countItems(serverQueues)} queues, ${countItems(serverTopics)} topics`,
|
|
187
|
-
);
|
|
188
|
-
logger.log(`Manifest: ${relative(process.cwd(), manifestPath)}`);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Filter out 'ALL' method routes from a manifest field (flat or partitioned).
|
|
193
|
-
*/
|
|
194
|
-
function filterAllRoutes(
|
|
195
|
-
routes: ManifestField<RouteInfo>,
|
|
196
|
-
): ManifestField<RouteInfo> {
|
|
197
|
-
if (Array.isArray(routes)) {
|
|
198
|
-
return routes.filter((r) => r.method !== 'ALL');
|
|
199
|
-
}
|
|
200
|
-
const result: Record<string, RouteInfo[]> = {};
|
|
201
|
-
for (const [partition, partitionRoutes] of Object.entries(routes)) {
|
|
202
|
-
result[partition] = partitionRoutes.filter((r) => r.method !== 'ALL');
|
|
203
|
-
}
|
|
204
|
-
return result;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Map routes to server metadata (path, method, authorizer only).
|
|
209
|
-
*/
|
|
210
|
-
function mapRouteMetadata(
|
|
211
|
-
routes: ManifestField<RouteInfo>,
|
|
212
|
-
): ManifestField<{ path: string; method: string; authorizer: string }> {
|
|
213
|
-
const mapFn = (r: RouteInfo) => ({
|
|
214
|
-
path: r.path,
|
|
215
|
-
method: r.method,
|
|
216
|
-
authorizer: r.authorizer,
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
if (Array.isArray(routes)) {
|
|
220
|
-
return routes.map(mapFn);
|
|
221
|
-
}
|
|
222
|
-
const result: Record<
|
|
223
|
-
string,
|
|
224
|
-
{ path: string; method: string; authorizer: string }[]
|
|
225
|
-
> = {};
|
|
226
|
-
for (const [partition, partitionRoutes] of Object.entries(routes)) {
|
|
227
|
-
result[partition] = partitionRoutes.map(mapFn);
|
|
228
|
-
}
|
|
229
|
-
return result;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Map subscribers to server metadata (name, subscribedEvents only).
|
|
234
|
-
*/
|
|
235
|
-
function mapSubscriberMetadata(
|
|
236
|
-
subscribers: ManifestField<SubscriberInfo>,
|
|
237
|
-
): ManifestField<{ name: string; subscribedEvents: readonly string[] }> {
|
|
238
|
-
const mapFn = (s: SubscriberInfo) => ({
|
|
239
|
-
name: s.name,
|
|
240
|
-
subscribedEvents: s.subscribedEvents,
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
if (Array.isArray(subscribers)) {
|
|
244
|
-
return subscribers.map(mapFn);
|
|
245
|
-
}
|
|
246
|
-
const result: Record<
|
|
247
|
-
string,
|
|
248
|
-
{ name: string; subscribedEvents: readonly string[] }[]
|
|
249
|
-
> = {};
|
|
250
|
-
for (const [partition, partitionSubs] of Object.entries(subscribers)) {
|
|
251
|
-
result[partition] = partitionSubs.map(mapFn);
|
|
252
|
-
}
|
|
253
|
-
return result;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
function mapQueueMetadata(
|
|
257
|
-
queues: ManifestField<QueueInfo>,
|
|
258
|
-
): ManifestField<{ name: string }> {
|
|
259
|
-
const mapFn = (q: QueueInfo) => ({ name: q.name });
|
|
260
|
-
|
|
261
|
-
if (Array.isArray(queues)) {
|
|
262
|
-
return queues.map(mapFn);
|
|
263
|
-
}
|
|
264
|
-
const result: Record<string, { name: string }[]> = {};
|
|
265
|
-
for (const [partition, partitionQueues] of Object.entries(queues)) {
|
|
266
|
-
result[partition] = partitionQueues.map(mapFn);
|
|
267
|
-
}
|
|
268
|
-
return result;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
function mapTopicMetadata(
|
|
272
|
-
topics: ManifestField<TopicInfo>,
|
|
273
|
-
): ManifestField<{ name: string; events: readonly string[] }> {
|
|
274
|
-
const mapFn = (t: TopicInfo) => ({ name: t.name, events: t.events });
|
|
275
|
-
|
|
276
|
-
if (Array.isArray(topics)) {
|
|
277
|
-
return topics.map(mapFn);
|
|
278
|
-
}
|
|
279
|
-
const result: Record<string, { name: string; events: readonly string[] }[]> =
|
|
280
|
-
{};
|
|
281
|
-
for (const [partition, partitionTopics] of Object.entries(topics)) {
|
|
282
|
-
result[partition] = partitionTopics.map(mapFn);
|
|
283
|
-
}
|
|
284
|
-
return result;
|
|
285
|
-
}
|
package/src/build/partitions.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { Construct } from '@geekmidas/constructs';
|
|
2
|
-
import type { GeneratedConstruct } from '../generators/Generator';
|
|
3
|
-
|
|
4
|
-
export const DEFAULT_PARTITION = 'default';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Group constructs by their partition field.
|
|
8
|
-
* Constructs without a partition are placed in the 'default' group.
|
|
9
|
-
*/
|
|
10
|
-
export function groupByPartition<T extends Construct>(
|
|
11
|
-
constructs: GeneratedConstruct<T>[],
|
|
12
|
-
): Map<string, GeneratedConstruct<T>[]> {
|
|
13
|
-
const groups = new Map<string, GeneratedConstruct<T>[]>();
|
|
14
|
-
|
|
15
|
-
for (const construct of constructs) {
|
|
16
|
-
const partition = construct.partition ?? DEFAULT_PARTITION;
|
|
17
|
-
const group = groups.get(partition);
|
|
18
|
-
if (group) {
|
|
19
|
-
group.push(construct);
|
|
20
|
-
} else {
|
|
21
|
-
groups.set(partition, [construct]);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return groups;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Check if any construct across the given arrays has a non-undefined partition.
|
|
30
|
-
* When true, the manifest should use the partitioned shape for that construct type.
|
|
31
|
-
*/
|
|
32
|
-
export function hasPartitions<T extends Construct>(
|
|
33
|
-
constructs: GeneratedConstruct<T>[],
|
|
34
|
-
): boolean {
|
|
35
|
-
return constructs.some((c) => c.partition !== undefined);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Group an info array by partition, using the partition values from
|
|
40
|
-
* the corresponding construct array. Both arrays must be the same length
|
|
41
|
-
* and in the same order.
|
|
42
|
-
*/
|
|
43
|
-
export function groupInfosByPartition<T>(
|
|
44
|
-
infos: T[],
|
|
45
|
-
constructs: GeneratedConstruct<any>[],
|
|
46
|
-
): Record<string, T[]> {
|
|
47
|
-
const groups: Record<string, T[]> = {};
|
|
48
|
-
|
|
49
|
-
for (let i = 0; i < infos.length; i++) {
|
|
50
|
-
const partition = constructs[i]?.partition ?? DEFAULT_PARTITION;
|
|
51
|
-
if (!groups[partition]) {
|
|
52
|
-
groups[partition] = [];
|
|
53
|
-
}
|
|
54
|
-
groups[partition].push(infos[i]!);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return groups;
|
|
58
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AWSApiGatewayConfig,
|
|
3
|
-
AWSLambdaConfig,
|
|
4
|
-
BuildOptions,
|
|
5
|
-
GkmConfig,
|
|
6
|
-
LegacyProvider,
|
|
7
|
-
MainProvider,
|
|
8
|
-
ProvidersConfig,
|
|
9
|
-
ServerConfig,
|
|
10
|
-
} from '../types';
|
|
11
|
-
|
|
12
|
-
export interface ResolvedProviders {
|
|
13
|
-
providers: LegacyProvider[];
|
|
14
|
-
enableOpenApi: boolean;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Resolves provider configuration from the new simplified system
|
|
19
|
-
* to the internal legacy format for backward compatibility
|
|
20
|
-
*/
|
|
21
|
-
export function resolveProviders(
|
|
22
|
-
config: GkmConfig,
|
|
23
|
-
options: BuildOptions,
|
|
24
|
-
): ResolvedProviders {
|
|
25
|
-
const providers: LegacyProvider[] = [];
|
|
26
|
-
let enableOpenApi = options.enableOpenApi || false;
|
|
27
|
-
|
|
28
|
-
// Handle legacy providers option (deprecated)
|
|
29
|
-
if (options.providers) {
|
|
30
|
-
return {
|
|
31
|
-
providers: options.providers,
|
|
32
|
-
enableOpenApi,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Handle new provider option
|
|
37
|
-
if (options.provider) {
|
|
38
|
-
const resolvedProviders = resolveMainProvider(
|
|
39
|
-
options.provider,
|
|
40
|
-
config.providers,
|
|
41
|
-
);
|
|
42
|
-
providers.push(...resolvedProviders.providers);
|
|
43
|
-
enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;
|
|
44
|
-
}
|
|
45
|
-
// Default: build all configured providers
|
|
46
|
-
else if (config.providers) {
|
|
47
|
-
const resolvedProviders = resolveAllConfiguredProviders(config.providers);
|
|
48
|
-
providers.push(...resolvedProviders.providers);
|
|
49
|
-
enableOpenApi = resolvedProviders.enableOpenApi || enableOpenApi;
|
|
50
|
-
}
|
|
51
|
-
// Fallback: use default AWS configuration
|
|
52
|
-
else {
|
|
53
|
-
providers.push('aws-apigatewayv2', 'aws-lambda');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
providers: [...new Set(providers)], // Remove duplicates
|
|
58
|
-
enableOpenApi,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function resolveMainProvider(
|
|
63
|
-
mainProvider: MainProvider,
|
|
64
|
-
providersConfig?: ProvidersConfig,
|
|
65
|
-
): ResolvedProviders {
|
|
66
|
-
const providers: LegacyProvider[] = [];
|
|
67
|
-
let enableOpenApi = false;
|
|
68
|
-
|
|
69
|
-
if (mainProvider === 'aws') {
|
|
70
|
-
const awsConfig = providersConfig?.aws;
|
|
71
|
-
|
|
72
|
-
// Resolve API Gateway providers
|
|
73
|
-
if (awsConfig?.apiGateway) {
|
|
74
|
-
if (isEnabled(awsConfig.apiGateway.v1)) {
|
|
75
|
-
providers.push('aws-apigatewayv1');
|
|
76
|
-
}
|
|
77
|
-
if (isEnabled(awsConfig.apiGateway.v2)) {
|
|
78
|
-
providers.push('aws-apigatewayv2');
|
|
79
|
-
}
|
|
80
|
-
} else {
|
|
81
|
-
// Default: enable v2 if no specific config
|
|
82
|
-
providers.push('aws-apigatewayv2');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Resolve Lambda providers
|
|
86
|
-
if (awsConfig?.lambda) {
|
|
87
|
-
if (
|
|
88
|
-
isEnabled(awsConfig.lambda.functions) ||
|
|
89
|
-
isEnabled(awsConfig.lambda.crons)
|
|
90
|
-
) {
|
|
91
|
-
providers.push('aws-lambda');
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
// Default: enable lambda if no specific config
|
|
95
|
-
providers.push('aws-lambda');
|
|
96
|
-
}
|
|
97
|
-
} else if (mainProvider === 'server') {
|
|
98
|
-
providers.push('server');
|
|
99
|
-
const serverConfig = providersConfig?.server;
|
|
100
|
-
|
|
101
|
-
if (typeof serverConfig === 'object' && serverConfig?.enableOpenApi) {
|
|
102
|
-
enableOpenApi = true;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return { providers, enableOpenApi };
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function resolveAllConfiguredProviders(
|
|
110
|
-
providersConfig: ProvidersConfig,
|
|
111
|
-
): ResolvedProviders {
|
|
112
|
-
const providers: LegacyProvider[] = [];
|
|
113
|
-
let enableOpenApi = false;
|
|
114
|
-
|
|
115
|
-
// AWS providers
|
|
116
|
-
if (providersConfig.aws) {
|
|
117
|
-
const awsProviders = resolveMainProvider('aws', providersConfig);
|
|
118
|
-
providers.push(...awsProviders.providers);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Server provider
|
|
122
|
-
if (providersConfig.server && isEnabled(providersConfig.server)) {
|
|
123
|
-
providers.push('server');
|
|
124
|
-
if (
|
|
125
|
-
typeof providersConfig.server === 'object' &&
|
|
126
|
-
providersConfig.server.enableOpenApi
|
|
127
|
-
) {
|
|
128
|
-
enableOpenApi = true;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return { providers, enableOpenApi };
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function isEnabled(
|
|
136
|
-
config:
|
|
137
|
-
| boolean
|
|
138
|
-
| AWSApiGatewayConfig
|
|
139
|
-
| AWSLambdaConfig
|
|
140
|
-
| ServerConfig
|
|
141
|
-
| undefined,
|
|
142
|
-
): boolean {
|
|
143
|
-
if (config === undefined) return false;
|
|
144
|
-
if (typeof config === 'boolean') return config;
|
|
145
|
-
return config.enabled !== false; // Default to true if enabled is not explicitly false
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Gets configuration for a specific AWS service
|
|
150
|
-
*/
|
|
151
|
-
export function getAWSServiceConfig<
|
|
152
|
-
T extends AWSApiGatewayConfig | AWSLambdaConfig,
|
|
153
|
-
>(
|
|
154
|
-
config: GkmConfig,
|
|
155
|
-
service: 'apiGateway' | 'lambda',
|
|
156
|
-
subService?: 'v1' | 'v2' | 'functions' | 'crons',
|
|
157
|
-
): T | undefined {
|
|
158
|
-
const awsConfig = config.providers?.aws;
|
|
159
|
-
if (!awsConfig) return undefined;
|
|
160
|
-
|
|
161
|
-
if (service === 'apiGateway' && awsConfig.apiGateway) {
|
|
162
|
-
const apiConfig = subService
|
|
163
|
-
? awsConfig.apiGateway[subService as 'v1' | 'v2']
|
|
164
|
-
: undefined;
|
|
165
|
-
return typeof apiConfig === 'object' ? (apiConfig as T) : undefined;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (service === 'lambda' && awsConfig.lambda) {
|
|
169
|
-
const lambdaConfig = subService
|
|
170
|
-
? awsConfig.lambda[subService as 'functions' | 'crons']
|
|
171
|
-
: undefined;
|
|
172
|
-
return typeof lambdaConfig === 'object' ? (lambdaConfig as T) : undefined;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return undefined;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Gets server configuration
|
|
180
|
-
*/
|
|
181
|
-
export function getServerConfig(config: GkmConfig): ServerConfig | undefined {
|
|
182
|
-
const serverConfig = config.providers?.server;
|
|
183
|
-
return typeof serverConfig === 'object' ? serverConfig : undefined;
|
|
184
|
-
}
|
package/src/build/types.ts
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import type { Cron } from '@geekmidas/constructs/crons';
|
|
2
|
-
import type { Endpoint } from '@geekmidas/constructs/endpoints';
|
|
3
|
-
import type { Function } from '@geekmidas/constructs/functions';
|
|
4
|
-
|
|
5
|
-
import type { CronInfo, FunctionInfo, RouteInfo } from '../types';
|
|
6
|
-
|
|
7
|
-
export interface ProcessedEndpoint {
|
|
8
|
-
file: string;
|
|
9
|
-
exportName: string;
|
|
10
|
-
endpoint: Endpoint<any, any, any, any, any, any>;
|
|
11
|
-
routeInfo: RouteInfo;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface ProcessedFunction {
|
|
15
|
-
file: string;
|
|
16
|
-
exportName: string;
|
|
17
|
-
fn: Function<any, any, any, any, any>;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface ProcessedCron {
|
|
21
|
-
file: string;
|
|
22
|
-
exportName: string;
|
|
23
|
-
cron: Cron<any, any, any, any>;
|
|
24
|
-
schedule?: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface NormalizedTelescopeConfig {
|
|
28
|
-
enabled: boolean;
|
|
29
|
-
/** Path to user's telescope module (if provided) */
|
|
30
|
-
telescopePath?: string;
|
|
31
|
-
/** Import pattern for telescope (e.g., '{ telescope }' or 'telescope') */
|
|
32
|
-
telescopeImportPattern?: string;
|
|
33
|
-
/** UI path for telescope dashboard */
|
|
34
|
-
path: string;
|
|
35
|
-
ignore: string[];
|
|
36
|
-
recordBody: boolean;
|
|
37
|
-
maxEntries: number;
|
|
38
|
-
websocket: boolean;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface NormalizedStudioConfig {
|
|
42
|
-
enabled: boolean;
|
|
43
|
-
/** Path to user's studio module (if provided) */
|
|
44
|
-
studioPath?: string;
|
|
45
|
-
/** Import pattern for studio (e.g., '{ studio }' or 'studio') */
|
|
46
|
-
studioImportPattern?: string;
|
|
47
|
-
/** UI path for studio dashboard */
|
|
48
|
-
path: string;
|
|
49
|
-
/** Database schema to introspect */
|
|
50
|
-
schema: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface NormalizedHooksConfig {
|
|
54
|
-
/** Path to server hooks module */
|
|
55
|
-
serverHooksPath: string;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface NormalizedProductionConfig {
|
|
59
|
-
enabled: boolean;
|
|
60
|
-
bundle: boolean;
|
|
61
|
-
minify: boolean;
|
|
62
|
-
healthCheck: string;
|
|
63
|
-
gracefulShutdown: boolean;
|
|
64
|
-
external: string[];
|
|
65
|
-
subscribers: 'include' | 'exclude';
|
|
66
|
-
openapi: boolean;
|
|
67
|
-
/**
|
|
68
|
-
* Enable build-time optimized handler generation
|
|
69
|
-
* When true, generates specialized handlers based on endpoint tier:
|
|
70
|
-
* - minimal: Near-raw-Hono performance for simple endpoints
|
|
71
|
-
* - standard: Optimized handlers for auth/services
|
|
72
|
-
* - full: Uses HonoEndpoint.addRoutes for complex endpoints
|
|
73
|
-
*/
|
|
74
|
-
optimizedHandlers: boolean;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export interface BuildContext {
|
|
78
|
-
envParserPath: string;
|
|
79
|
-
envParserImportPattern: string;
|
|
80
|
-
loggerPath: string;
|
|
81
|
-
loggerImportPattern: string;
|
|
82
|
-
telescope?: NormalizedTelescopeConfig;
|
|
83
|
-
studio?: NormalizedStudioConfig;
|
|
84
|
-
hooks?: NormalizedHooksConfig;
|
|
85
|
-
/** Production build configuration */
|
|
86
|
-
production?: NormalizedProductionConfig;
|
|
87
|
-
/** Docker compose services for auto-populating env vars */
|
|
88
|
-
dockerServices?: {
|
|
89
|
-
postgres?: boolean;
|
|
90
|
-
redis?: boolean;
|
|
91
|
-
rabbitmq?: boolean;
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* When true, optional env vars get a `?` suffix in each construct's
|
|
95
|
-
* environment array (e.g. `PORT?` instead of `PORT`).
|
|
96
|
-
*/
|
|
97
|
-
markOptional?: boolean;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export interface ProviderBuildResult {
|
|
101
|
-
routes: RouteInfo[];
|
|
102
|
-
functions: FunctionInfo[];
|
|
103
|
-
crons: CronInfo[];
|
|
104
|
-
}
|