@geekmidas/cli 9.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 -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
|
@@ -1,80 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConstructGenerator, isPartitionedRoutes } from "./discover-CAlFgYec.mjs";
|
|
2
|
+
import { loadWorkspaceConfig } from "./config-D8o6I_7Z.mjs";
|
|
2
3
|
import { dirname, join, relative } from "node:path";
|
|
3
4
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
4
5
|
import { spawn } from "node:child_process";
|
|
5
|
-
import fg from "fast-glob";
|
|
6
|
-
import kebabCase from "lodash.kebabcase";
|
|
7
6
|
import { Endpoint } from "@geekmidas/constructs/endpoints";
|
|
8
7
|
import { fileURLToPath } from "node:url";
|
|
9
8
|
import { StandardSchemaJsonSchema, getRegisteredZodJsonSchemas, getSchemaMetadata } from "@geekmidas/schema/conversion";
|
|
10
9
|
|
|
11
|
-
//#region src/types.ts
|
|
12
|
-
function isPartitionedRoutes(routes) {
|
|
13
|
-
return typeof routes === "object" && routes !== null && !Array.isArray(routes) && "paths" in routes;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/generators/Generator.ts
|
|
18
|
-
/**
|
|
19
|
-
* Zod v4 maintains a process-wide registry of schemas registered via
|
|
20
|
-
* `.meta({ id })`. When we cache-bust user module imports (by appending a
|
|
21
|
-
* `?t=timestamp` query), those modules re-execute and try to register the
|
|
22
|
-
* same ids again, which throws `ID X already exists in the registry`.
|
|
23
|
-
*
|
|
24
|
-
* Clearing the registry in the CLI process is safe: the user's running
|
|
25
|
-
* server lives in a subprocess and has its own isolated registry.
|
|
26
|
-
*
|
|
27
|
-
* Exported for tests.
|
|
28
|
-
*/
|
|
29
|
-
function clearZodGlobalRegistry() {
|
|
30
|
-
const registry = globalThis.__zod_globalRegistry;
|
|
31
|
-
if (registry && typeof registry.clear === "function") registry.clear();
|
|
32
|
-
}
|
|
33
|
-
var ConstructGenerator = class {
|
|
34
|
-
static async build(context, outputDir, generator, patterns, options) {
|
|
35
|
-
const constructs = await generator.load(patterns);
|
|
36
|
-
return generator.build(context, constructs, outputDir, options);
|
|
37
|
-
}
|
|
38
|
-
async load(patterns, cwd = process.cwd(), bustCache = false) {
|
|
39
|
-
const logger = console;
|
|
40
|
-
let globPatterns;
|
|
41
|
-
let partitionFn;
|
|
42
|
-
if (isPartitionedRoutes(patterns)) {
|
|
43
|
-
globPatterns = Array.isArray(patterns.paths) ? patterns.paths : [patterns.paths];
|
|
44
|
-
partitionFn = patterns.partition;
|
|
45
|
-
} else globPatterns = Array.isArray(patterns) ? patterns : patterns ? [patterns] : [];
|
|
46
|
-
const files = fg.stream(globPatterns, {
|
|
47
|
-
cwd,
|
|
48
|
-
absolute: true
|
|
49
|
-
});
|
|
50
|
-
if (bustCache) clearZodGlobalRegistry();
|
|
51
|
-
const constructs = [];
|
|
52
|
-
for await (const f of files) try {
|
|
53
|
-
const file = f.toString();
|
|
54
|
-
const importPath = bustCache ? `${file}?t=${Date.now()}` : file;
|
|
55
|
-
const module = await import(importPath);
|
|
56
|
-
const partition = partitionFn ? partitionFn(file) : void 0;
|
|
57
|
-
for (const [key, construct] of Object.entries(module)) if (this.isConstruct(construct)) constructs.push({
|
|
58
|
-
key,
|
|
59
|
-
name: kebabCase(key),
|
|
60
|
-
construct,
|
|
61
|
-
path: {
|
|
62
|
-
absolute: file,
|
|
63
|
-
relative: relative(process.cwd(), file)
|
|
64
|
-
},
|
|
65
|
-
partition
|
|
66
|
-
});
|
|
67
|
-
} catch (error) {
|
|
68
|
-
const err = error;
|
|
69
|
-
logger.error(`Failed to load ${f}: ${err.message}`);
|
|
70
|
-
if (err.stack) logger.error(err.stack);
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
73
|
-
return constructs;
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
//#endregion
|
|
78
10
|
//#region src/build/endpoint-analyzer.ts
|
|
79
11
|
/**
|
|
80
12
|
* Analyze an endpoint to extract its features
|
|
@@ -656,6 +588,94 @@ export async function setupEndpoints(
|
|
|
656
588
|
|
|
657
589
|
//#endregion
|
|
658
590
|
//#region src/generators/EndpointGenerator.ts
|
|
591
|
+
/**
|
|
592
|
+
* How a generated entry gets its logger and environment parser.
|
|
593
|
+
*
|
|
594
|
+
* From the surface it serves, when there is one: the surface holds both as
|
|
595
|
+
* *objects*, and discovery already recorded which module declares it, so the
|
|
596
|
+
* entry imports that module and reads them off it.
|
|
597
|
+
*
|
|
598
|
+
* The alternative — the shape this replaces — was naming both in config as
|
|
599
|
+
* module paths, `envParser: './config/env#envParser'`, and printing an import
|
|
600
|
+
* for each. Two strings per app, checked by nothing, describing files the
|
|
601
|
+
* surface was already holding the contents of.
|
|
602
|
+
*
|
|
603
|
+
* Falls back to the configured paths for an app that declares no surface.
|
|
604
|
+
*/
|
|
605
|
+
function runtimeFor(context, fromDir) {
|
|
606
|
+
const module = context.surface?.module;
|
|
607
|
+
if (module) {
|
|
608
|
+
const specifier = importSpecifier(fromDir, module.specifier);
|
|
609
|
+
return {
|
|
610
|
+
imports: `import { ${module.exportName} as __surface } from '${specifier}';`,
|
|
611
|
+
bindings: [
|
|
612
|
+
"// What this surface was declared with. Objects, not module paths:",
|
|
613
|
+
"// the entry imports the surface, so there is nothing to print.",
|
|
614
|
+
"const envParser = __surface.envParser;",
|
|
615
|
+
"const logger = __surface.logger;"
|
|
616
|
+
].join("\n")
|
|
617
|
+
};
|
|
618
|
+
}
|
|
619
|
+
return {
|
|
620
|
+
imports: [`import ${context.envParserImportPattern} from '${importSpecifier(fromDir, context.envParserPath)}';`, `import ${context.loggerImportPattern} from '${importSpecifier(fromDir, context.loggerPath)}';`].join("\n"),
|
|
621
|
+
bindings: ""
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
/** A relative specifier ESM will accept: always prefixed, never bare. */
|
|
625
|
+
function importSpecifier(fromDir, target) {
|
|
626
|
+
const rel = relative(fromDir, target).replace(/\.ts$/, ".js");
|
|
627
|
+
return rel.startsWith(".") ? rel : `./${rel}`;
|
|
628
|
+
}
|
|
629
|
+
/**
|
|
630
|
+
* CORS for a surface, derived rather than hand-written.
|
|
631
|
+
*
|
|
632
|
+
* Who may call a surface is already in the graph — every construct that
|
|
633
|
+
* declared an edge to it — and reaches the process as one comma-separated
|
|
634
|
+
* value. An application that maintained this by hand maintained a list that was
|
|
635
|
+
* wrong in two directions at once: it trusted origins nothing was serving, and
|
|
636
|
+
* it could not name hosts a deploy had not chosen yet.
|
|
637
|
+
*
|
|
638
|
+
* Only the parts a graph cannot answer are configurable, and every one has a
|
|
639
|
+
* default: a surface that says nothing about CORS still gets it.
|
|
640
|
+
*/
|
|
641
|
+
function corsFor(surface) {
|
|
642
|
+
if (!surface) return {
|
|
643
|
+
imports: "",
|
|
644
|
+
setup: ""
|
|
645
|
+
};
|
|
646
|
+
const cors = surface.cors ?? {};
|
|
647
|
+
const allowHeaders = [
|
|
648
|
+
"content-type",
|
|
649
|
+
"authorization",
|
|
650
|
+
...cors.allowHeaders ?? []
|
|
651
|
+
];
|
|
652
|
+
return {
|
|
653
|
+
imports: `import { cors } from 'hono/cors';`,
|
|
654
|
+
setup: `
|
|
655
|
+
// Who may call ${surface.id}, read off the graph rather than listed here.
|
|
656
|
+
{
|
|
657
|
+
const { origins } = envParser
|
|
658
|
+
.create((get) => ({
|
|
659
|
+
origins: get('${surface.trustedOriginsKey}')
|
|
660
|
+
.string()
|
|
661
|
+
.default('')
|
|
662
|
+
.transform((value: string) =>
|
|
663
|
+
value.split(',').map((origin) => origin.trim()).filter(Boolean),
|
|
664
|
+
),
|
|
665
|
+
}))
|
|
666
|
+
.parse();
|
|
667
|
+
|
|
668
|
+
honoApp.use('*', cors({
|
|
669
|
+
origin: origins,
|
|
670
|
+
allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
|
|
671
|
+
allowHeaders: ${JSON.stringify(allowHeaders)},${cors.exposeHeaders ? `\n exposeHeaders: ${JSON.stringify(cors.exposeHeaders)},` : ""}
|
|
672
|
+
credentials: ${cors.credentials ?? true},
|
|
673
|
+
maxAge: ${cors.maxAge ?? 86400},
|
|
674
|
+
}));
|
|
675
|
+
}
|
|
676
|
+
`
|
|
677
|
+
};
|
|
678
|
+
}
|
|
659
679
|
var EndpointGenerator = class extends ConstructGenerator {
|
|
660
680
|
isConstruct(value) {
|
|
661
681
|
return Endpoint.isEndpoint(value);
|
|
@@ -688,6 +708,7 @@ var EndpointGenerator = class extends ConstructGenerator {
|
|
|
688
708
|
timeout: construct.timeout,
|
|
689
709
|
memorySize: construct.memorySize,
|
|
690
710
|
environment: await construct.getEnvironment({ markOptional: context.markOptional }),
|
|
711
|
+
dependencies: construct.constructs,
|
|
691
712
|
authorizer: construct.authorizer?.name ?? "none"
|
|
692
713
|
};
|
|
693
714
|
routes.push(routeInfo);
|
|
@@ -702,6 +723,7 @@ var EndpointGenerator = class extends ConstructGenerator {
|
|
|
702
723
|
timeout: construct.timeout,
|
|
703
724
|
memorySize: construct.memorySize,
|
|
704
725
|
environment: await construct.getEnvironment({ markOptional: context.markOptional }),
|
|
726
|
+
dependencies: construct.constructs,
|
|
705
727
|
authorizer: construct.authorizer?.name ?? "none"
|
|
706
728
|
};
|
|
707
729
|
routes.push(routeInfo);
|
|
@@ -714,14 +736,13 @@ var EndpointGenerator = class extends ConstructGenerator {
|
|
|
714
736
|
const handlerPath = join(outputDir, handlerFileName);
|
|
715
737
|
const relativePath = relative(dirname(handlerPath), sourceFile);
|
|
716
738
|
const importPath = relativePath.replace(/\.ts$/, ".js");
|
|
717
|
-
const relativeEnvParserPath = relative(dirname(handlerPath), context.envParserPath);
|
|
718
739
|
let content;
|
|
719
740
|
switch (provider) {
|
|
720
741
|
case "aws-apigatewayv1":
|
|
721
|
-
content = this.generateAWSApiGatewayV1Handler(importPath, exportName,
|
|
742
|
+
content = this.generateAWSApiGatewayV1Handler(importPath, exportName, context.storageDrivers);
|
|
722
743
|
break;
|
|
723
744
|
case "aws-apigatewayv2":
|
|
724
|
-
content = this.generateAWSApiGatewayV2Handler(importPath, exportName,
|
|
745
|
+
content = this.generateAWSApiGatewayV2Handler(importPath, exportName, context.storageDrivers);
|
|
725
746
|
break;
|
|
726
747
|
case "server":
|
|
727
748
|
content = this.generateServerHandler(importPath, exportName);
|
|
@@ -831,15 +852,17 @@ export async function setupEndpoints(
|
|
|
831
852
|
if (context.production?.enabled) return this.generateProductionAppFile(outputDir, context);
|
|
832
853
|
const appFileName = "app.ts";
|
|
833
854
|
const appPath = join(outputDir, appFileName);
|
|
834
|
-
const
|
|
835
|
-
const relativeEnvParserPath = relative(dirname(appPath), context.envParserPath);
|
|
855
|
+
const runtime = runtimeFor(context, dirname(appPath));
|
|
836
856
|
const telescopeEnabled = context.telescope?.enabled;
|
|
837
857
|
const telescopeWebSocketEnabled = context.telescope?.websocket;
|
|
838
858
|
const usesExternalTelescope = !!context.telescope?.telescopePath;
|
|
839
859
|
const studioEnabled = context.studio?.enabled;
|
|
840
860
|
const usesExternalStudio = !!context.studio?.studioPath;
|
|
861
|
+
const studioFromDatabase = !usesExternalStudio && !!context.studio?.database;
|
|
862
|
+
const telescopeFromSurface = !!context.surface?.module && !usesExternalTelescope;
|
|
841
863
|
let telescopeImports = "";
|
|
842
|
-
if (telescopeEnabled) if (
|
|
864
|
+
if (telescopeEnabled) if (telescopeFromSurface) telescopeImports = "import { createMiddleware, createUI } from '@geekmidas/telescope/hono';";
|
|
865
|
+
else if (usesExternalTelescope) {
|
|
843
866
|
const relativeTelescopePath = relative(dirname(appPath), context.telescope?.telescopePath);
|
|
844
867
|
telescopeImports = `import ${context.telescope?.telescopeImportPattern} from '${relativeTelescopePath}';
|
|
845
868
|
import { createMiddleware, createUI } from '@geekmidas/telescope/hono';`;
|
|
@@ -850,8 +873,14 @@ import { createMiddleware, createUI } from '@geekmidas/telescope/hono';`;
|
|
|
850
873
|
const relativeStudioPath = relative(dirname(appPath), context.studio?.studioPath);
|
|
851
874
|
studioImports = `import ${context.studio?.studioImportPattern} from '${relativeStudioPath}';
|
|
852
875
|
import { createStudioApp } from '@geekmidas/studio/server/hono';`;
|
|
853
|
-
} else
|
|
854
|
-
|
|
876
|
+
} else if (studioFromDatabase) {
|
|
877
|
+
const dbSpecifier = importSpecifier(dirname(appPath), context.studio.database.specifier);
|
|
878
|
+
studioImports = `import { snifferContext } from '@geekmidas/constructs';
|
|
879
|
+
import { Direction, InMemoryMonitoringStorage, Studio } from '@geekmidas/studio';
|
|
880
|
+
import { ${context.studio.database.exportName} as __studioDb } from '${dbSpecifier}';
|
|
881
|
+
import { createStudioApp } from '@geekmidas/studio/server/hono';`;
|
|
882
|
+
} else studioImports = "";
|
|
883
|
+
const cors = corsFor(context.surface);
|
|
855
884
|
let hooksImports = "";
|
|
856
885
|
let beforeSetupCall = "";
|
|
857
886
|
let afterSetupCall = "";
|
|
@@ -903,7 +932,7 @@ import { createStudioApp } from '@geekmidas/studio/server/hono';`;
|
|
|
903
932
|
}
|
|
904
933
|
` : "";
|
|
905
934
|
let telescopeSetup = "";
|
|
906
|
-
if (telescopeEnabled) if (usesExternalTelescope) telescopeSetup = `
|
|
935
|
+
if (telescopeEnabled) if (telescopeFromSurface || usesExternalTelescope) telescopeSetup = `
|
|
907
936
|
${telescopeWebSocketSetupCode}
|
|
908
937
|
// Add telescope middleware (before endpoints to capture all requests)
|
|
909
938
|
honoApp.use('*', createMiddleware(telescope));
|
|
@@ -931,7 +960,22 @@ ${telescopeWebSocketSetupCode}
|
|
|
931
960
|
honoApp.route('${context.telescope?.path}', telescopeUI);
|
|
932
961
|
`;
|
|
933
962
|
let studioSetup = "";
|
|
934
|
-
if (studioEnabled &&
|
|
963
|
+
if (studioEnabled && studioFromDatabase) studioSetup = `
|
|
964
|
+
// Studio, built from the declared database. The client comes from the
|
|
965
|
+
// construct, so what you inspect is by definition what the handlers write to.
|
|
966
|
+
const studio = new Studio({
|
|
967
|
+
monitoring: { storage: new InMemoryMonitoringStorage({ maxEntries: 100 }) },
|
|
968
|
+
data: {
|
|
969
|
+
db: await __studioDb.service.register({ envParser, context: snifferContext }),
|
|
970
|
+
cursor: { field: 'id', direction: Direction.Desc },
|
|
971
|
+
},
|
|
972
|
+
enabled: true,
|
|
973
|
+
});
|
|
974
|
+
|
|
975
|
+
const studioApp = createStudioApp(studio);
|
|
976
|
+
honoApp.route('${context.studio?.path}', studioApp);
|
|
977
|
+
`;
|
|
978
|
+
else if (studioEnabled && usesExternalStudio) studioSetup = `
|
|
935
979
|
// Mount Studio data browser UI
|
|
936
980
|
const studioApp = createStudioApp(studio);
|
|
937
981
|
honoApp.route('${context.studio?.path}', studioApp);
|
|
@@ -948,12 +992,21 @@ import type { Hono as HonoType } from 'hono';
|
|
|
948
992
|
import { setupEndpoints } from './endpoints.js';
|
|
949
993
|
import { setupSubscribers } from './subscribers.js';
|
|
950
994
|
import { setupQueues } from './queues.js';
|
|
951
|
-
|
|
952
|
-
import ${context.loggerImportPattern} from '${relativeLoggerPath}';
|
|
995
|
+
${runtime.imports}
|
|
953
996
|
${telescopeImports}
|
|
954
997
|
${studioImports}
|
|
955
998
|
${hooksImports}
|
|
999
|
+
${cors.imports}
|
|
1000
|
+
${context.storageDrivers?.imports ?? ""}
|
|
1001
|
+
|
|
1002
|
+
${runtime.bindings}
|
|
1003
|
+
${telescopeFromSurface ? "const telescope = __surface.telescope;" : ""}
|
|
956
1004
|
|
|
1005
|
+
${context.storageDrivers?.setup ? `// Which storage drivers exist is the entry point's decision: the scheme in
|
|
1006
|
+
// each injected URL picks one, so no construct and no application module names
|
|
1007
|
+
// a provider.
|
|
1008
|
+
${context.storageDrivers.setup}
|
|
1009
|
+
` : ""}
|
|
957
1010
|
export interface ServerApp {
|
|
958
1011
|
app: HonoType;
|
|
959
1012
|
start: (options?: {
|
|
@@ -998,7 +1051,7 @@ export interface ServerApp {
|
|
|
998
1051
|
*/
|
|
999
1052
|
export async function createApp(app?: HonoType, enableOpenApi: boolean = true): Promise<ServerApp> {
|
|
1000
1053
|
const honoApp = app || new Hono();
|
|
1001
|
-
${telescopeSetup}${beforeSetupCall}${studioSetup}
|
|
1054
|
+
${telescopeSetup}${cors.setup}${beforeSetupCall}${studioSetup}
|
|
1002
1055
|
// Setup HTTP endpoints
|
|
1003
1056
|
await setupEndpoints(honoApp, envParser, logger, enableOpenApi);
|
|
1004
1057
|
${afterSetupCall}
|
|
@@ -1042,22 +1095,42 @@ export default createApp;
|
|
|
1042
1095
|
await writeFile(appPath, content);
|
|
1043
1096
|
return appPath;
|
|
1044
1097
|
}
|
|
1045
|
-
|
|
1098
|
+
/**
|
|
1099
|
+
* One Lambda, one endpoint — and no environment import.
|
|
1100
|
+
*
|
|
1101
|
+
* The endpoint was built from its surface, so it carries the parser the
|
|
1102
|
+
* adaptor needs. This used to read
|
|
1103
|
+
* `import { envParser } from '../../config/env'`, a line the build wrote
|
|
1104
|
+
* because a generator can print a module specifier and cannot print an
|
|
1105
|
+
* object. Nothing has to be printed now, which is also why nothing has to be
|
|
1106
|
+
* named in config.
|
|
1107
|
+
*/
|
|
1108
|
+
generateAWSApiGatewayV1Handler(importPath, exportName, drivers) {
|
|
1046
1109
|
return `import { AmazonApiGatewayV1Endpoint } from '@geekmidas/constructs/aws';
|
|
1047
1110
|
import { ${exportName} } from '${importPath}';
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
const adapter = new AmazonApiGatewayV1Endpoint(
|
|
1111
|
+
${drivers?.imports ?? ""}
|
|
1112
|
+
${drivers?.setup ? `\n// The handler registers the drivers its target needs.\n${drivers.setup}\n` : ""}
|
|
1113
|
+
const adapter = new AmazonApiGatewayV1Endpoint(${exportName});
|
|
1051
1114
|
|
|
1052
1115
|
export const handler = adapter.handler;
|
|
1053
1116
|
`;
|
|
1054
1117
|
}
|
|
1055
|
-
|
|
1118
|
+
/**
|
|
1119
|
+
* One Lambda, one endpoint — and no environment import.
|
|
1120
|
+
*
|
|
1121
|
+
* The endpoint was built from its surface, so it carries the parser the
|
|
1122
|
+
* adaptor needs. This used to read
|
|
1123
|
+
* `import { envParser } from '../../config/env'`, a line the build wrote
|
|
1124
|
+
* because a generator can print a module specifier and cannot print an
|
|
1125
|
+
* object. Nothing has to be printed now, which is also why nothing has to be
|
|
1126
|
+
* named in config.
|
|
1127
|
+
*/
|
|
1128
|
+
generateAWSApiGatewayV2Handler(importPath, exportName, drivers) {
|
|
1056
1129
|
return `import { AmazonApiGatewayV2Endpoint } from '@geekmidas/constructs/aws';
|
|
1057
1130
|
import { ${exportName} } from '${importPath}';
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
const adapter = new AmazonApiGatewayV2Endpoint(
|
|
1131
|
+
${drivers?.imports ?? ""}
|
|
1132
|
+
${drivers?.setup ? `\n// The handler registers the drivers its target needs.\n${drivers.setup}\n` : ""}
|
|
1133
|
+
const adapter = new AmazonApiGatewayV2Endpoint(${exportName});
|
|
1061
1134
|
|
|
1062
1135
|
export const handler = adapter.handler;
|
|
1063
1136
|
`;
|
|
@@ -1083,6 +1156,7 @@ export const handler = ${exportName};
|
|
|
1083
1156
|
const enableGracefulShutdown = production.gracefulShutdown;
|
|
1084
1157
|
const enableOpenApi = production.openapi;
|
|
1085
1158
|
const includeSubscribers = production.subscribers === "include";
|
|
1159
|
+
const cors = corsFor(context.surface);
|
|
1086
1160
|
let hooksImports = "";
|
|
1087
1161
|
let beforeSetupCall = "";
|
|
1088
1162
|
let afterSetupCall = "";
|
|
@@ -1147,7 +1221,12 @@ ${subscriberImport}
|
|
|
1147
1221
|
import ${context.envParserImportPattern} from '${relativeEnvParserPath}';
|
|
1148
1222
|
import ${context.loggerImportPattern} from '${relativeLoggerPath}';
|
|
1149
1223
|
${hooksImports}
|
|
1224
|
+
${cors.imports}
|
|
1225
|
+
${context.storageDrivers?.imports ?? ""}
|
|
1150
1226
|
|
|
1227
|
+
${context.storageDrivers?.setup ? `// The entry point registers the drivers its target needs.
|
|
1228
|
+
${context.storageDrivers.setup}
|
|
1229
|
+
` : ""}
|
|
1151
1230
|
export interface ServerApp {
|
|
1152
1231
|
app: HonoType;
|
|
1153
1232
|
start: (options?: {
|
|
@@ -1165,7 +1244,7 @@ export async function createApp(app?: HonoType): Promise<ServerApp> {
|
|
|
1165
1244
|
// Health check endpoint (always first)
|
|
1166
1245
|
honoApp.get('${healthCheckPath}', (c) => c.json({ status: 'ok', timestamp: Date.now() }));
|
|
1167
1246
|
honoApp.get('/ready', (c) => c.json({ ready: true }));
|
|
1168
|
-
${beforeSetupCall}
|
|
1247
|
+
${cors.setup}${beforeSetupCall}
|
|
1169
1248
|
// Setup HTTP endpoints (OpenAPI: ${enableOpenApi})
|
|
1170
1249
|
await setupEndpoints(honoApp, envParser, logger, ${enableOpenApi});
|
|
1171
1250
|
${afterSetupCall}
|
|
@@ -1802,7 +1881,7 @@ async function openapiCommand(options = {}) {
|
|
|
1802
1881
|
} else {
|
|
1803
1882
|
const { workspace } = loadedConfig;
|
|
1804
1883
|
const workspaceRoot = workspace.root;
|
|
1805
|
-
const backendApps = Object.entries(workspace.apps).filter(([_, app]) => app.type === "backend" &&
|
|
1884
|
+
const backendApps = Object.entries(workspace.apps).filter(([_, app]) => app.type === "backend" && app.routes !== void 0 && app.openapi !== false && (typeof app.openapi !== "object" || app.openapi.enabled !== false));
|
|
1806
1885
|
if (backendApps.length === 0) {
|
|
1807
1886
|
logger.log("No backend apps with OpenAPI enabled found");
|
|
1808
1887
|
return;
|
|
@@ -1879,5 +1958,5 @@ async function runOpenApiInSubprocess(appCwd, appName) {
|
|
|
1879
1958
|
}
|
|
1880
1959
|
|
|
1881
1960
|
//#endregion
|
|
1882
|
-
export {
|
|
1883
|
-
//# sourceMappingURL=openapi-
|
|
1961
|
+
export { EndpointGenerator, OPENAPI_OUTPUT_PATH, generateOpenApi, normalizeRoutes, openapiCommand, resolveOpenApiConfig };
|
|
1962
|
+
//# sourceMappingURL=openapi-CgpMWMmM.mjs.map
|