@takumi-stack/core 1.0.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/common/coordinator.d.ts +28 -0
- package/common/coordinator.d.ts.map +1 -0
- package/common/coordinator.js +94 -0
- package/common/coordinator.js.map +1 -0
- package/common/index.d.ts +6 -0
- package/common/index.d.ts.map +1 -0
- package/common/index.js +22 -0
- package/common/index.js.map +1 -0
- package/common/modifier.d.ts +5 -0
- package/common/modifier.d.ts.map +1 -0
- package/common/modifier.js +12 -0
- package/common/modifier.js.map +1 -0
- package/common/naming/get-deploy-config.d.ts +9 -0
- package/common/naming/get-deploy-config.d.ts.map +1 -0
- package/common/naming/get-deploy-config.js +8 -0
- package/common/naming/get-deploy-config.js.map +1 -0
- package/common/naming/get-domain.d.ts +9 -0
- package/common/naming/get-domain.d.ts.map +1 -0
- package/common/naming/get-domain.js +13 -0
- package/common/naming/get-domain.js.map +1 -0
- package/common/naming/get-function-entry.d.ts +4 -0
- package/common/naming/get-function-entry.d.ts.map +1 -0
- package/common/naming/get-function-entry.js +14 -0
- package/common/naming/get-function-entry.js.map +1 -0
- package/common/naming/get-logical-name.d.ts +2 -0
- package/common/naming/get-logical-name.d.ts.map +1 -0
- package/common/naming/get-logical-name.js +8 -0
- package/common/naming/get-logical-name.js.map +1 -0
- package/common/naming/get-resource-name.d.ts +47 -0
- package/common/naming/get-resource-name.d.ts.map +1 -0
- package/common/naming/get-resource-name.js +38 -0
- package/common/naming/get-resource-name.js.map +1 -0
- package/common/naming/get-service-name.d.ts +10 -0
- package/common/naming/get-service-name.d.ts.map +1 -0
- package/common/naming/get-service-name.js +10 -0
- package/common/naming/get-service-name.js.map +1 -0
- package/common/naming/index.d.ts +8 -0
- package/common/naming/index.d.ts.map +1 -0
- package/common/naming/index.js +24 -0
- package/common/naming/index.js.map +1 -0
- package/common/naming/string-parser.d.ts +4 -0
- package/common/naming/string-parser.d.ts.map +1 -0
- package/common/naming/string-parser.js +22 -0
- package/common/naming/string-parser.js.map +1 -0
- package/common/service.d.ts +29 -0
- package/common/service.d.ts.map +1 -0
- package/common/service.js +28 -0
- package/common/service.js.map +1 -0
- package/common/synth/account-mapping.d.ts +2 -0
- package/common/synth/account-mapping.d.ts.map +1 -0
- package/common/synth/account-mapping.js +18 -0
- package/common/synth/account-mapping.js.map +1 -0
- package/common/synth/assume-role.d.ts +18 -0
- package/common/synth/assume-role.d.ts.map +1 -0
- package/common/synth/assume-role.js +25 -0
- package/common/synth/assume-role.js.map +1 -0
- package/common/synth/get-global-props.d.ts +16 -0
- package/common/synth/get-global-props.d.ts.map +1 -0
- package/common/synth/get-global-props.js +34 -0
- package/common/synth/get-global-props.js.map +1 -0
- package/common/synth/get-service-props.d.ts +11 -0
- package/common/synth/get-service-props.d.ts.map +1 -0
- package/common/synth/get-service-props.js +12 -0
- package/common/synth/get-service-props.js.map +1 -0
- package/common/synth/index.d.ts +8 -0
- package/common/synth/index.d.ts.map +1 -0
- package/common/synth/index.js +24 -0
- package/common/synth/index.js.map +1 -0
- package/common/synth/pre-script.d.ts +32 -0
- package/common/synth/pre-script.d.ts.map +1 -0
- package/common/synth/pre-script.js +74 -0
- package/common/synth/pre-script.js.map +1 -0
- package/common/synth/props-types.d.ts +60 -0
- package/common/synth/props-types.d.ts.map +1 -0
- package/common/synth/props-types.js +3 -0
- package/common/synth/props-types.js.map +1 -0
- package/common/synth/synth-error.d.ts +8 -0
- package/common/synth/synth-error.d.ts.map +1 -0
- package/common/synth/synth-error.js +17 -0
- package/common/synth/synth-error.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.d.ts.map +1 -0
- package/index.js +20 -0
- package/index.js.map +1 -0
- package/package.json +43 -0
- package/prefab/analytics/events/handlers/ingestion-transform/handler.d.ts +4 -0
- package/prefab/analytics/events/handlers/ingestion-transform/handler.d.ts.map +1 -0
- package/prefab/analytics/events/handlers/ingestion-transform/handler.js +34 -0
- package/prefab/analytics/events/handlers/ingestion-transform/handler.js.map +1 -0
- package/prefab/analytics/events/index.d.ts +31 -0
- package/prefab/analytics/events/index.d.ts.map +1 -0
- package/prefab/analytics/events/index.js +163 -0
- package/prefab/analytics/events/index.js.map +1 -0
- package/prefab/analytics/index.d.ts +2 -0
- package/prefab/analytics/index.d.ts.map +1 -0
- package/prefab/analytics/index.js +18 -0
- package/prefab/analytics/index.js.map +1 -0
- package/prefab/auth/cognito-pool/index.d.ts +65 -0
- package/prefab/auth/cognito-pool/index.d.ts.map +1 -0
- package/prefab/auth/cognito-pool/index.js +240 -0
- package/prefab/auth/cognito-pool/index.js.map +1 -0
- package/prefab/auth/index.d.ts +2 -0
- package/prefab/auth/index.d.ts.map +1 -0
- package/prefab/auth/index.js +18 -0
- package/prefab/auth/index.js.map +1 -0
- package/prefab/cdn/cdn-api/index.d.ts +38 -0
- package/prefab/cdn/cdn-api/index.d.ts.map +1 -0
- package/prefab/cdn/cdn-api/index.js +153 -0
- package/prefab/cdn/cdn-api/index.js.map +1 -0
- package/prefab/cdn/cdn-asset/index.d.ts +27 -0
- package/prefab/cdn/cdn-asset/index.d.ts.map +1 -0
- package/prefab/cdn/cdn-asset/index.js +96 -0
- package/prefab/cdn/cdn-asset/index.js.map +1 -0
- package/prefab/cdn/cdn-spa/index.d.ts +27 -0
- package/prefab/cdn/cdn-spa/index.d.ts.map +1 -0
- package/prefab/cdn/cdn-spa/index.js +138 -0
- package/prefab/cdn/cdn-spa/index.js.map +1 -0
- package/prefab/cdn/cdn-ssr/index.d.ts +36 -0
- package/prefab/cdn/cdn-ssr/index.d.ts.map +1 -0
- package/prefab/cdn/cdn-ssr/index.js +271 -0
- package/prefab/cdn/cdn-ssr/index.js.map +1 -0
- package/prefab/cdn/index.d.ts +5 -0
- package/prefab/cdn/index.d.ts.map +1 -0
- package/prefab/cdn/index.js +21 -0
- package/prefab/cdn/index.js.map +1 -0
- package/prefab/compute/fargate/cluster.d.ts +16 -0
- package/prefab/compute/fargate/cluster.d.ts.map +1 -0
- package/prefab/compute/fargate/cluster.js +42 -0
- package/prefab/compute/fargate/cluster.js.map +1 -0
- package/prefab/compute/fargate/index.d.ts +3 -0
- package/prefab/compute/fargate/index.d.ts.map +1 -0
- package/prefab/compute/fargate/index.js +19 -0
- package/prefab/compute/fargate/index.js.map +1 -0
- package/prefab/compute/fargate/service.d.ts +49 -0
- package/prefab/compute/fargate/service.d.ts.map +1 -0
- package/prefab/compute/fargate/service.js +109 -0
- package/prefab/compute/fargate/service.js.map +1 -0
- package/prefab/compute/function/api-function/api-aggregate.d.ts +32 -0
- package/prefab/compute/function/api-function/api-aggregate.d.ts.map +1 -0
- package/prefab/compute/function/api-function/api-aggregate.js +54 -0
- package/prefab/compute/function/api-function/api-aggregate.js.map +1 -0
- package/prefab/compute/function/api-function/api-function.d.ts +22 -0
- package/prefab/compute/function/api-function/api-function.d.ts.map +1 -0
- package/prefab/compute/function/api-function/api-function.js +45 -0
- package/prefab/compute/function/api-function/api-function.js.map +1 -0
- package/prefab/compute/function/api-function/index.d.ts +3 -0
- package/prefab/compute/function/api-function/index.d.ts.map +1 -0
- package/prefab/compute/function/api-function/index.js +19 -0
- package/prefab/compute/function/api-function/index.js.map +1 -0
- package/prefab/compute/function/base-function/index.d.ts +33 -0
- package/prefab/compute/function/base-function/index.d.ts.map +1 -0
- package/prefab/compute/function/base-function/index.js +70 -0
- package/prefab/compute/function/base-function/index.js.map +1 -0
- package/prefab/compute/function/cognito-function/cognito-aggregate.d.ts +18 -0
- package/prefab/compute/function/cognito-function/cognito-aggregate.d.ts.map +1 -0
- package/prefab/compute/function/cognito-function/cognito-aggregate.js +22 -0
- package/prefab/compute/function/cognito-function/cognito-aggregate.js.map +1 -0
- package/prefab/compute/function/cognito-function/cognito-function.d.ts +19 -0
- package/prefab/compute/function/cognito-function/cognito-function.d.ts.map +1 -0
- package/prefab/compute/function/cognito-function/cognito-function.js +24 -0
- package/prefab/compute/function/cognito-function/cognito-function.js.map +1 -0
- package/prefab/compute/function/cognito-function/index.d.ts +3 -0
- package/prefab/compute/function/cognito-function/index.d.ts.map +1 -0
- package/prefab/compute/function/cognito-function/index.js +19 -0
- package/prefab/compute/function/cognito-function/index.js.map +1 -0
- package/prefab/compute/function/cron-function/cron-aggregate.d.ts +17 -0
- package/prefab/compute/function/cron-function/cron-aggregate.d.ts.map +1 -0
- package/prefab/compute/function/cron-function/cron-aggregate.js +22 -0
- package/prefab/compute/function/cron-function/cron-aggregate.js.map +1 -0
- package/prefab/compute/function/cron-function/cron-function.d.ts +17 -0
- package/prefab/compute/function/cron-function/cron-function.d.ts.map +1 -0
- package/prefab/compute/function/cron-function/cron-function.js +24 -0
- package/prefab/compute/function/cron-function/cron-function.js.map +1 -0
- package/prefab/compute/function/cron-function/index.d.ts +3 -0
- package/prefab/compute/function/cron-function/index.d.ts.map +1 -0
- package/prefab/compute/function/cron-function/index.js +19 -0
- package/prefab/compute/function/cron-function/index.js.map +1 -0
- package/prefab/compute/function/event-function/event-aggregate.d.ts +20 -0
- package/prefab/compute/function/event-function/event-aggregate.d.ts.map +1 -0
- package/prefab/compute/function/event-function/event-aggregate.js +25 -0
- package/prefab/compute/function/event-function/event-aggregate.js.map +1 -0
- package/prefab/compute/function/event-function/event-function.d.ts +14 -0
- package/prefab/compute/function/event-function/event-function.d.ts.map +1 -0
- package/prefab/compute/function/event-function/event-function.js +33 -0
- package/prefab/compute/function/event-function/event-function.js.map +1 -0
- package/prefab/compute/function/event-function/index.d.ts +3 -0
- package/prefab/compute/function/event-function/index.d.ts.map +1 -0
- package/prefab/compute/function/event-function/index.js +19 -0
- package/prefab/compute/function/event-function/index.js.map +1 -0
- package/prefab/compute/function/index.d.ts +8 -0
- package/prefab/compute/function/index.d.ts.map +1 -0
- package/prefab/compute/function/index.js +24 -0
- package/prefab/compute/function/index.js.map +1 -0
- package/prefab/compute/function/queue-function/index.d.ts +25 -0
- package/prefab/compute/function/queue-function/index.d.ts.map +1 -0
- package/prefab/compute/function/queue-function/index.js +46 -0
- package/prefab/compute/function/queue-function/index.js.map +1 -0
- package/prefab/compute/function/topic-function/index.d.ts +23 -0
- package/prefab/compute/function/topic-function/index.d.ts.map +1 -0
- package/prefab/compute/function/topic-function/index.js +23 -0
- package/prefab/compute/function/topic-function/index.js.map +1 -0
- package/prefab/compute/index.d.ts +3 -0
- package/prefab/compute/index.d.ts.map +1 -0
- package/prefab/compute/index.js +19 -0
- package/prefab/compute/index.js.map +1 -0
- package/prefab/database/dynamo/index.d.ts +14 -0
- package/prefab/database/dynamo/index.d.ts.map +1 -0
- package/prefab/database/dynamo/index.js +106 -0
- package/prefab/database/dynamo/index.js.map +1 -0
- package/prefab/database/index.d.ts +4 -0
- package/prefab/database/index.d.ts.map +1 -0
- package/prefab/database/index.js +20 -0
- package/prefab/database/index.js.map +1 -0
- package/prefab/database/rds/handlers/start-cluster/handler.d.ts +2 -0
- package/prefab/database/rds/handlers/start-cluster/handler.d.ts.map +1 -0
- package/prefab/database/rds/handlers/start-cluster/handler.js +10 -0
- package/prefab/database/rds/handlers/start-cluster/handler.js.map +1 -0
- package/prefab/database/rds/handlers/stop-cluster/handler.d.ts +2 -0
- package/prefab/database/rds/handlers/stop-cluster/handler.d.ts.map +1 -0
- package/prefab/database/rds/handlers/stop-cluster/handler.js +10 -0
- package/prefab/database/rds/handlers/stop-cluster/handler.js.map +1 -0
- package/prefab/database/rds/index.d.ts +54 -0
- package/prefab/database/rds/index.d.ts.map +1 -0
- package/prefab/database/rds/index.js +223 -0
- package/prefab/database/rds/index.js.map +1 -0
- package/prefab/database/timestream/index.d.ts +3 -0
- package/prefab/database/timestream/index.d.ts.map +1 -0
- package/prefab/database/timestream/index.js +19 -0
- package/prefab/database/timestream/index.js.map +1 -0
- package/prefab/database/timestream/timestream-database.d.ts +13 -0
- package/prefab/database/timestream/timestream-database.d.ts.map +1 -0
- package/prefab/database/timestream/timestream-database.js +21 -0
- package/prefab/database/timestream/timestream-database.js.map +1 -0
- package/prefab/database/timestream/timestream-table.d.ts +23 -0
- package/prefab/database/timestream/timestream-table.d.ts.map +1 -0
- package/prefab/database/timestream/timestream-table.js +62 -0
- package/prefab/database/timestream/timestream-table.js.map +1 -0
- package/prefab/gateway/alb-public/index.d.ts +44 -0
- package/prefab/gateway/alb-public/index.d.ts.map +1 -0
- package/prefab/gateway/alb-public/index.js +116 -0
- package/prefab/gateway/alb-public/index.js.map +1 -0
- package/prefab/gateway/api-gateway/api-http.d.ts +27 -0
- package/prefab/gateway/api-gateway/api-http.d.ts.map +1 -0
- package/prefab/gateway/api-gateway/api-http.js +48 -0
- package/prefab/gateway/api-gateway/api-http.js.map +1 -0
- package/prefab/gateway/api-gateway/api-rest.d.ts +26 -0
- package/prefab/gateway/api-gateway/api-rest.d.ts.map +1 -0
- package/prefab/gateway/api-gateway/api-rest.js +90 -0
- package/prefab/gateway/api-gateway/api-rest.js.map +1 -0
- package/prefab/gateway/api-gateway/index.d.ts +3 -0
- package/prefab/gateway/api-gateway/index.d.ts.map +1 -0
- package/prefab/gateway/api-gateway/index.js +19 -0
- package/prefab/gateway/api-gateway/index.js.map +1 -0
- package/prefab/gateway/app-sync/index.d.ts +36 -0
- package/prefab/gateway/app-sync/index.d.ts.map +1 -0
- package/prefab/gateway/app-sync/index.js +114 -0
- package/prefab/gateway/app-sync/index.js.map +1 -0
- package/prefab/gateway/app-sync/resolver-aggregate.d.ts +33 -0
- package/prefab/gateway/app-sync/resolver-aggregate.d.ts.map +1 -0
- package/prefab/gateway/app-sync/resolver-aggregate.js +125 -0
- package/prefab/gateway/app-sync/resolver-aggregate.js.map +1 -0
- package/prefab/gateway/app-sync/types.d.ts +29 -0
- package/prefab/gateway/app-sync/types.d.ts.map +1 -0
- package/prefab/gateway/app-sync/types.js +3 -0
- package/prefab/gateway/app-sync/types.js.map +1 -0
- package/prefab/gateway/index.d.ts +4 -0
- package/prefab/gateway/index.d.ts.map +1 -0
- package/prefab/gateway/index.js +20 -0
- package/prefab/gateway/index.js.map +1 -0
- package/prefab/index.d.ts +11 -0
- package/prefab/index.d.ts.map +1 -0
- package/prefab/index.js +27 -0
- package/prefab/index.js.map +1 -0
- package/prefab/integration/event-bus/index.d.ts +20 -0
- package/prefab/integration/event-bus/index.d.ts.map +1 -0
- package/prefab/integration/event-bus/index.js +46 -0
- package/prefab/integration/event-bus/index.js.map +1 -0
- package/prefab/integration/index.d.ts +4 -0
- package/prefab/integration/index.d.ts.map +1 -0
- package/prefab/integration/index.js +20 -0
- package/prefab/integration/index.js.map +1 -0
- package/prefab/integration/queue/index.d.ts +29 -0
- package/prefab/integration/queue/index.d.ts.map +1 -0
- package/prefab/integration/queue/index.js +70 -0
- package/prefab/integration/queue/index.js.map +1 -0
- package/prefab/integration/topic/index.d.ts +21 -0
- package/prefab/integration/topic/index.d.ts.map +1 -0
- package/prefab/integration/topic/index.js +48 -0
- package/prefab/integration/topic/index.js.map +1 -0
- package/prefab/networking/dns-domain-ref/index.d.ts +16 -0
- package/prefab/networking/dns-domain-ref/index.d.ts.map +1 -0
- package/prefab/networking/dns-domain-ref/index.js +28 -0
- package/prefab/networking/dns-domain-ref/index.js.map +1 -0
- package/prefab/networking/dns-subdomain-certificate/index.d.ts +13 -0
- package/prefab/networking/dns-subdomain-certificate/index.d.ts.map +1 -0
- package/prefab/networking/dns-subdomain-certificate/index.js +28 -0
- package/prefab/networking/dns-subdomain-certificate/index.js.map +1 -0
- package/prefab/networking/dns-subdomain-hosted-zone/index.d.ts +12 -0
- package/prefab/networking/dns-subdomain-hosted-zone/index.d.ts.map +1 -0
- package/prefab/networking/dns-subdomain-hosted-zone/index.js +27 -0
- package/prefab/networking/dns-subdomain-hosted-zone/index.js.map +1 -0
- package/prefab/networking/index.d.ts +6 -0
- package/prefab/networking/index.d.ts.map +1 -0
- package/prefab/networking/index.js +22 -0
- package/prefab/networking/index.js.map +1 -0
- package/prefab/networking/vpc/index.d.ts +20 -0
- package/prefab/networking/vpc/index.d.ts.map +1 -0
- package/prefab/networking/vpc/index.js +28 -0
- package/prefab/networking/vpc/index.js.map +1 -0
- package/prefab/networking/waf/index.d.ts +14 -0
- package/prefab/networking/waf/index.d.ts.map +1 -0
- package/prefab/networking/waf/index.js +45 -0
- package/prefab/networking/waf/index.js.map +1 -0
- package/prefab/storage/bucket/asset-bucket.d.ts +12 -0
- package/prefab/storage/bucket/asset-bucket.d.ts.map +1 -0
- package/prefab/storage/bucket/asset-bucket.js +19 -0
- package/prefab/storage/bucket/asset-bucket.js.map +1 -0
- package/prefab/storage/bucket/index.d.ts +3 -0
- package/prefab/storage/bucket/index.d.ts.map +1 -0
- package/prefab/storage/bucket/index.js +19 -0
- package/prefab/storage/bucket/index.js.map +1 -0
- package/prefab/storage/bucket/private-bucket.d.ts +26 -0
- package/prefab/storage/bucket/private-bucket.d.ts.map +1 -0
- package/prefab/storage/bucket/private-bucket.js +82 -0
- package/prefab/storage/bucket/private-bucket.js.map +1 -0
- package/prefab/storage/index.d.ts +2 -0
- package/prefab/storage/index.d.ts.map +1 -0
- package/prefab/storage/index.js +18 -0
- package/prefab/storage/index.js.map +1 -0
- package/prefab/utils/config/frontend-env-builder.d.ts +14 -0
- package/prefab/utils/config/frontend-env-builder.d.ts.map +1 -0
- package/prefab/utils/config/frontend-env-builder.js +25 -0
- package/prefab/utils/config/frontend-env-builder.js.map +1 -0
- package/prefab/utils/config/index.d.ts +4 -0
- package/prefab/utils/config/index.d.ts.map +1 -0
- package/prefab/utils/config/index.js +20 -0
- package/prefab/utils/config/index.js.map +1 -0
- package/prefab/utils/config/parameter-secret.d.ts +21 -0
- package/prefab/utils/config/parameter-secret.d.ts.map +1 -0
- package/prefab/utils/config/parameter-secret.js +42 -0
- package/prefab/utils/config/parameter-secret.js.map +1 -0
- package/prefab/utils/config/runtime-secret.d.ts +20 -0
- package/prefab/utils/config/runtime-secret.d.ts.map +1 -0
- package/prefab/utils/config/runtime-secret.js +37 -0
- package/prefab/utils/config/runtime-secret.js.map +1 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/index.d.ts +2 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/index.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/index.js +28 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/index.js.map +1 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/slack.d.ts +28 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/slack.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/slack.js +8 -0
- package/prefab/utils/deploy-pipeline/catalog/integrations/slack.js.map +1 -0
- package/prefab/utils/deploy-pipeline/entities/index.d.ts +29 -0
- package/prefab/utils/deploy-pipeline/entities/index.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/entities/index.js +3 -0
- package/prefab/utils/deploy-pipeline/entities/index.js.map +1 -0
- package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.d.ts +3 -0
- package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.js +28 -0
- package/prefab/utils/deploy-pipeline/handlers/send-to-slack/handler.js.map +1 -0
- package/prefab/utils/deploy-pipeline/index.d.ts +15 -0
- package/prefab/utils/deploy-pipeline/index.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/index.js +173 -0
- package/prefab/utils/deploy-pipeline/index.js.map +1 -0
- package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.d.ts +6 -0
- package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.js +26 -0
- package/prefab/utils/deploy-pipeline/platform/get-pipeline-detail.js.map +1 -0
- package/prefab/utils/deploy-pipeline/platform/get-slack-payload.d.ts +4 -0
- package/prefab/utils/deploy-pipeline/platform/get-slack-payload.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/platform/get-slack-payload.js +39 -0
- package/prefab/utils/deploy-pipeline/platform/get-slack-payload.js.map +1 -0
- package/prefab/utils/deploy-pipeline/platform/send-to-slack.d.ts +3 -0
- package/prefab/utils/deploy-pipeline/platform/send-to-slack.d.ts.map +1 -0
- package/prefab/utils/deploy-pipeline/platform/send-to-slack.js +14 -0
- package/prefab/utils/deploy-pipeline/platform/send-to-slack.js.map +1 -0
- package/prefab/utils/duration.d.ts +2 -0
- package/prefab/utils/duration.d.ts.map +1 -0
- package/prefab/utils/duration.js +6 -0
- package/prefab/utils/duration.js.map +1 -0
- package/prefab/utils/index.d.ts +5 -0
- package/prefab/utils/index.d.ts.map +1 -0
- package/prefab/utils/index.js +21 -0
- package/prefab/utils/index.js.map +1 -0
- package/prefab/utils/ses/index.d.ts +22 -0
- package/prefab/utils/ses/index.d.ts.map +1 -0
- package/prefab/utils/ses/index.js +124 -0
- package/prefab/utils/ses/index.js.map +1 -0
- package/script/config-command/bootstrap.d.ts +4 -0
- package/script/config-command/bootstrap.d.ts.map +1 -0
- package/script/config-command/bootstrap.js +66 -0
- package/script/config-command/bootstrap.js.map +1 -0
- package/script/config-command/deploy-spa.d.ts +4 -0
- package/script/config-command/deploy-spa.d.ts.map +1 -0
- package/script/config-command/deploy-spa.js +84 -0
- package/script/config-command/deploy-spa.js.map +1 -0
- package/script/config-command/deploy.d.ts +4 -0
- package/script/config-command/deploy.d.ts.map +1 -0
- package/script/config-command/deploy.js +26 -0
- package/script/config-command/deploy.js.map +1 -0
- package/script/config-command/destroy.d.ts +4 -0
- package/script/config-command/destroy.d.ts.map +1 -0
- package/script/config-command/destroy.js +26 -0
- package/script/config-command/destroy.js.map +1 -0
- package/script/config-command/env-ssr.d.ts +4 -0
- package/script/config-command/env-ssr.d.ts.map +1 -0
- package/script/config-command/env-ssr.js +51 -0
- package/script/config-command/env-ssr.js.map +1 -0
- package/script/config-command/invalidation-ssr.d.ts +4 -0
- package/script/config-command/invalidation-ssr.d.ts.map +1 -0
- package/script/config-command/invalidation-ssr.js +55 -0
- package/script/config-command/invalidation-ssr.js.map +1 -0
- package/script/config-command/rds-migration.d.ts +7 -0
- package/script/config-command/rds-migration.d.ts.map +1 -0
- package/script/config-command/rds-migration.js +125 -0
- package/script/config-command/rds-migration.js.map +1 -0
- package/script/config-command/rds-sync.d.ts +4 -0
- package/script/config-command/rds-sync.d.ts.map +1 -0
- package/script/config-command/rds-sync.js +66 -0
- package/script/config-command/rds-sync.js.map +1 -0
- package/script/config-command/ssm-connect.d.ts +4 -0
- package/script/config-command/ssm-connect.d.ts.map +1 -0
- package/script/config-command/ssm-connect.js +86 -0
- package/script/config-command/ssm-connect.js.map +1 -0
- package/script/config-command/start-spa.d.ts +4 -0
- package/script/config-command/start-spa.d.ts.map +1 -0
- package/script/config-command/start-spa.js +55 -0
- package/script/config-command/start-spa.js.map +1 -0
- package/script/config-command/start-ssr.d.ts +4 -0
- package/script/config-command/start-ssr.d.ts.map +1 -0
- package/script/config-command/start-ssr.js +55 -0
- package/script/config-command/start-ssr.js.map +1 -0
- package/script/config-command/synth.d.ts +4 -0
- package/script/config-command/synth.d.ts.map +1 -0
- package/script/config-command/synth.js +26 -0
- package/script/config-command/synth.js.map +1 -0
- package/script/index.d.ts +25 -0
- package/script/index.d.ts.map +1 -0
- package/script/index.js +70 -0
- package/script/index.js.map +1 -0
- package/script/output-command/create-user.d.ts +9 -0
- package/script/output-command/create-user.d.ts.map +1 -0
- package/script/output-command/create-user.js +61 -0
- package/script/output-command/create-user.js.map +1 -0
- package/script/output-command/gen-postman-env.d.ts +28 -0
- package/script/output-command/gen-postman-env.d.ts.map +1 -0
- package/script/output-command/gen-postman-env.js +56 -0
- package/script/output-command/gen-postman-env.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.CdnApiPrefab = void 0;
|
|
27
|
+
const awsCloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
|
|
30
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
31
|
+
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
32
|
+
const constructs_1 = require("constructs");
|
|
33
|
+
const common_1 = require("../../../common");
|
|
34
|
+
const private_bucket_1 = require("../../../prefab/storage/bucket/private-bucket");
|
|
35
|
+
class CdnApiPrefab extends constructs_1.Construct {
|
|
36
|
+
domain;
|
|
37
|
+
baseUrl;
|
|
38
|
+
service;
|
|
39
|
+
distribution;
|
|
40
|
+
apiGatewayRequestPolicy;
|
|
41
|
+
apiGatewayCachePolicy;
|
|
42
|
+
apiGatewayBehaviorOptions;
|
|
43
|
+
unrestrictedBehaviorOptions;
|
|
44
|
+
constructor(service, params) {
|
|
45
|
+
super(service, (0, common_1.getLogicalName)(CdnApiPrefab.name, params.subDomain));
|
|
46
|
+
this.service = service;
|
|
47
|
+
this.domain = (0, common_1.getDomain)(params.subDomain, service.props);
|
|
48
|
+
this.baseUrl = `https://${this.domain}/`;
|
|
49
|
+
if (params.albDefaultBehavior && params.restApiDefaultBehavior)
|
|
50
|
+
throw new common_1.SynthError('Only alb or api can be default behavior', service.props);
|
|
51
|
+
// Api Gateway Policies
|
|
52
|
+
this.apiGatewayCachePolicy = new awsCloudfront.CachePolicy(this, 'CachePolicy', {
|
|
53
|
+
cachePolicyName: (0, common_1.getCloudFrontName)('ApiGateway', 'CachePolicy', this.service.props),
|
|
54
|
+
queryStringBehavior: awsCloudfront.CacheQueryStringBehavior.all(),
|
|
55
|
+
headerBehavior: {
|
|
56
|
+
behavior: 'whitelist',
|
|
57
|
+
headers: [...(params.headersWhitelist || []), 'Authorization'],
|
|
58
|
+
},
|
|
59
|
+
...params.cachePolicyProps,
|
|
60
|
+
});
|
|
61
|
+
this.apiGatewayRequestPolicy = new awsCloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
|
|
62
|
+
originRequestPolicyName: (0, common_1.getCloudFrontName)('ApiGateway', 'RequestPolicy', this.service.props),
|
|
63
|
+
headerBehavior: {
|
|
64
|
+
behavior: 'whitelist',
|
|
65
|
+
headers: [
|
|
66
|
+
...(params.headersWhitelist || []),
|
|
67
|
+
'Access-Control-Allow-Origin',
|
|
68
|
+
'Access-Control-Request-Method',
|
|
69
|
+
'Access-Control-Allow-Headers',
|
|
70
|
+
'Access-Control-Request-Headers',
|
|
71
|
+
'Origin',
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
queryStringBehavior: awsCloudfront.OriginRequestQueryStringBehavior.all(),
|
|
75
|
+
});
|
|
76
|
+
this.apiGatewayBehaviorOptions = {
|
|
77
|
+
compress: true,
|
|
78
|
+
cachePolicy: this.apiGatewayCachePolicy,
|
|
79
|
+
originRequestPolicy: this.apiGatewayRequestPolicy,
|
|
80
|
+
allowedMethods: awsCloudfront.AllowedMethods.ALLOW_ALL,
|
|
81
|
+
viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
82
|
+
};
|
|
83
|
+
// Integrations Policies
|
|
84
|
+
this.unrestrictedBehaviorOptions = {
|
|
85
|
+
compress: true,
|
|
86
|
+
cachePolicy: awsCloudfront.CachePolicy.CACHING_DISABLED,
|
|
87
|
+
originRequestPolicy: awsCloudfront.OriginRequestPolicy.ALL_VIEWER,
|
|
88
|
+
allowedMethods: awsCloudfront.AllowedMethods.ALLOW_ALL,
|
|
89
|
+
viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
90
|
+
};
|
|
91
|
+
// Default Behavior
|
|
92
|
+
let defaultBehavior = {
|
|
93
|
+
origin: new aws_cloudfront_origins_1.HttpOrigin(new private_bucket_1.PrivateBucketPrefab(service, { bucketName: 'default-origin' }).bucket.bucketDomainName, {
|
|
94
|
+
originId: (0, common_1.getCloudFrontName)('Origin', 'Default', this.service.props),
|
|
95
|
+
}),
|
|
96
|
+
...this.apiGatewayBehaviorOptions,
|
|
97
|
+
};
|
|
98
|
+
if (params.albDefaultBehavior) {
|
|
99
|
+
defaultBehavior = {
|
|
100
|
+
origin: new aws_cloudfront_origins_1.LoadBalancerV2Origin(params.albDefaultBehavior.alb, {
|
|
101
|
+
originId: (0, common_1.getCloudFrontName)('Origin', 'Default', this.service.props),
|
|
102
|
+
}),
|
|
103
|
+
...this.unrestrictedBehaviorOptions,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (params.restApiDefaultBehavior) {
|
|
107
|
+
defaultBehavior = {
|
|
108
|
+
origin: new aws_cloudfront_origins_1.RestApiOrigin(params.restApiDefaultBehavior.api, {
|
|
109
|
+
originId: (0, common_1.getCloudFrontName)('Origin', 'Default', this.service.props),
|
|
110
|
+
}),
|
|
111
|
+
...this.unrestrictedBehaviorOptions,
|
|
112
|
+
originRequestPolicy: awsCloudfront.OriginRequestPolicy.ALL_VIEWER_EXCEPT_HOST_HEADER,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Distribution
|
|
116
|
+
this.distribution = new awsCloudfront.Distribution(this, 'Distribution', {
|
|
117
|
+
enabled: true,
|
|
118
|
+
comment: (0, common_1.getResourceName)('cdn', service.props),
|
|
119
|
+
certificate: params.certificate,
|
|
120
|
+
domainNames: params.explicitDomains ?? [this.domain],
|
|
121
|
+
defaultBehavior,
|
|
122
|
+
...(service.props.envName !== 'prod' ? { priceClass: awsCloudfront.PriceClass.PRICE_CLASS_100 } : {}),
|
|
123
|
+
webAclId: params.waf?.webACL?.attrArn,
|
|
124
|
+
});
|
|
125
|
+
// Route53
|
|
126
|
+
if (!params.explicitDomains && !params.skipRecord) {
|
|
127
|
+
const hostedZone = aws_route53_1.HostedZone.fromLookup(this, 'HostedZoneEnvDns', { domainName: (0, common_1.getDomain)('', service.props) });
|
|
128
|
+
new aws_route53_1.ARecord(service, 'Record', {
|
|
129
|
+
zone: hostedZone,
|
|
130
|
+
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(this.distribution)),
|
|
131
|
+
recordName: this.domain,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
new aws_cdk_lib_1.CfnOutput(this, 'Domain', { value: params.explicitDomains ? params.explicitDomains[0] : this.domain });
|
|
135
|
+
new aws_cdk_lib_1.CfnOutput(this, 'BaseUrl', {
|
|
136
|
+
value: params.explicitDomains ? `https://${params.explicitDomains[0]}/` : this.baseUrl,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
addApiGateway(basePath, apiUrl, originOptions) {
|
|
140
|
+
this.distribution.addBehavior(`/${basePath}*`, new aws_cloudfront_origins_1.HttpOrigin(apiUrl, { originId: (0, common_1.getCloudFrontName)('Origin', basePath, this.service.props), ...originOptions }), this.apiGatewayBehaviorOptions);
|
|
141
|
+
}
|
|
142
|
+
addAppSync(apiUrl, originOptions) {
|
|
143
|
+
this.distribution.addBehavior('/graphql*', new aws_cloudfront_origins_1.HttpOrigin(aws_cdk_lib_1.Fn.select(2, aws_cdk_lib_1.Fn.split('/', apiUrl)), {
|
|
144
|
+
originId: (0, common_1.getCloudFrontName)('Origin', 'graphql', this.service.props),
|
|
145
|
+
...originOptions,
|
|
146
|
+
}), this.apiGatewayBehaviorOptions);
|
|
147
|
+
}
|
|
148
|
+
addAlb(basePath, alb) {
|
|
149
|
+
this.distribution.addBehavior(`/${basePath}/*`, new aws_cloudfront_origins_1.LoadBalancerV2Origin(alb, { originId: (0, common_1.getCloudFrontName)('Origin', basePath, this.service.props) }), this.unrestrictedBehaviorOptions);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.CdnApiPrefab = CdnApiPrefab;
|
|
153
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as awsCloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
2
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
3
|
+
import { Construct } from 'constructs';
|
|
4
|
+
|
|
5
|
+
import { ServiceStack } from '../../../common';
|
|
6
|
+
|
|
7
|
+
import { WafPrefab } from '../../../prefab/networking/waf';
|
|
8
|
+
import { AssetBucketParams, AssetBucketPrefab } from '../../../prefab/storage/bucket/asset-bucket';
|
|
9
|
+
|
|
10
|
+
export type CdnAssetConstructProps = {
|
|
11
|
+
subDomain: string;
|
|
12
|
+
certificate: ICertificate;
|
|
13
|
+
assetBucketProps: AssetBucketParams;
|
|
14
|
+
waf?: WafPrefab;
|
|
15
|
+
skipRecord?: true;
|
|
16
|
+
explicitDomains?: string[];
|
|
17
|
+
distributionProps?: Partial<awsCloudfront.DistributionProps>;
|
|
18
|
+
};
|
|
19
|
+
export declare class CdnAssetPrefab extends Construct {
|
|
20
|
+
readonly bucketPrefab: AssetBucketPrefab;
|
|
21
|
+
readonly domain: string;
|
|
22
|
+
readonly baseUrl: string;
|
|
23
|
+
readonly distribution: awsCloudfront.Distribution;
|
|
24
|
+
readonly behaviorOptions: Omit<awsCloudfront.BehaviorOptions, 'origin'>;
|
|
25
|
+
constructor(service: ServiceStack, params: CdnAssetConstructProps);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-asset/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKlE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAiE,MAAM,QAAQ,CAAC;AAErG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE1F,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC9D,CAAC;AAEF,qBAAa,cAAe,SAAQ,SAAS;IAC3C,SAAgB,YAAY,EAAE,iBAAiB,CAAC;IAChD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;IACzD,SAAgB,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,sBAAsB;CA0DlE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.CdnAssetPrefab = void 0;
|
|
27
|
+
const awsCloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
|
|
30
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
31
|
+
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
32
|
+
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
33
|
+
const constructs_1 = require("constructs");
|
|
34
|
+
const common_1 = require("../../../common");
|
|
35
|
+
const asset_bucket_1 = require("../../../prefab/storage/bucket/asset-bucket");
|
|
36
|
+
class CdnAssetPrefab extends constructs_1.Construct {
|
|
37
|
+
bucketPrefab;
|
|
38
|
+
domain;
|
|
39
|
+
baseUrl;
|
|
40
|
+
distribution;
|
|
41
|
+
behaviorOptions;
|
|
42
|
+
constructor(service, params) {
|
|
43
|
+
super(service, (0, common_1.getLogicalName)(CdnAssetPrefab.name, params.subDomain));
|
|
44
|
+
this.domain = (0, common_1.getDomain)(params.subDomain, service.props);
|
|
45
|
+
this.baseUrl = `https://${this.domain}/`;
|
|
46
|
+
this.bucketPrefab = new asset_bucket_1.AssetBucketPrefab(service, {
|
|
47
|
+
...params.assetBucketProps,
|
|
48
|
+
bucketProps: {
|
|
49
|
+
cors: [{ allowedMethods: [aws_s3_1.HttpMethods.GET, aws_s3_1.HttpMethods.POST], allowedOrigins: ['*'], allowedHeaders: ['*'] }],
|
|
50
|
+
...params.assetBucketProps?.bucketProps,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
this.behaviorOptions = {
|
|
54
|
+
compress: true,
|
|
55
|
+
originRequestPolicy: new awsCloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
|
|
56
|
+
originRequestPolicyName: (0, common_1.getCloudFrontName)('Bucket', 'RequestPolicy', service.props),
|
|
57
|
+
headerBehavior: {
|
|
58
|
+
behavior: 'whitelist',
|
|
59
|
+
headers: ['Access-Control-Allow-Origin', 'Access-Control-Allow-Headers', 'Origin'],
|
|
60
|
+
},
|
|
61
|
+
}),
|
|
62
|
+
cachePolicy: awsCloudfront.CachePolicy.CACHING_OPTIMIZED,
|
|
63
|
+
allowedMethods: awsCloudfront.AllowedMethods.ALLOW_ALL,
|
|
64
|
+
viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
65
|
+
};
|
|
66
|
+
this.distribution = new awsCloudfront.Distribution(this, 'Distribution', {
|
|
67
|
+
enabled: true,
|
|
68
|
+
comment: (0, common_1.getResourceName)('cdn', service.props),
|
|
69
|
+
certificate: params.certificate,
|
|
70
|
+
domainNames: params.explicitDomains ?? [this.domain],
|
|
71
|
+
defaultBehavior: {
|
|
72
|
+
origin: new aws_cloudfront_origins_1.S3Origin(this.bucketPrefab.bucket, {
|
|
73
|
+
originId: (0, common_1.getCloudFrontName)('Origin', 'Default', service.props),
|
|
74
|
+
}),
|
|
75
|
+
...this.behaviorOptions,
|
|
76
|
+
},
|
|
77
|
+
...(service.props.envName !== 'prod' ? { priceClass: awsCloudfront.PriceClass.PRICE_CLASS_100 } : {}),
|
|
78
|
+
webAclId: params.waf?.webACL?.attrArn,
|
|
79
|
+
...params.distributionProps,
|
|
80
|
+
});
|
|
81
|
+
if (!params.explicitDomains || !params.skipRecord) {
|
|
82
|
+
const hostedZone = aws_route53_1.HostedZone.fromLookup(this, 'HostedZoneEnvDns', { domainName: (0, common_1.getDomain)('', service.props) });
|
|
83
|
+
new aws_route53_1.ARecord(service, 'Record', {
|
|
84
|
+
zone: hostedZone,
|
|
85
|
+
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(this.distribution)),
|
|
86
|
+
recordName: this.domain,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
new aws_cdk_lib_1.CfnOutput(this, 'Domain', { value: params.explicitDomains ? params.explicitDomains[0] : this.domain });
|
|
90
|
+
new aws_cdk_lib_1.CfnOutput(this, 'BaseUrl', {
|
|
91
|
+
value: params.explicitDomains ? `https://${params.explicitDomains[0]}/` : this.baseUrl,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.CdnAssetPrefab = CdnAssetPrefab;
|
|
96
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-asset/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
|
|
4
|
+
import { ServiceStack } from '../../../common';
|
|
5
|
+
|
|
6
|
+
import { WafPrefab } from '../../../prefab/networking/waf';
|
|
7
|
+
|
|
8
|
+
export type SpaPrefabParams = {
|
|
9
|
+
subDomain: string;
|
|
10
|
+
certificate: ICertificate;
|
|
11
|
+
assetMaxAge?: string;
|
|
12
|
+
indexMaxAge?: string;
|
|
13
|
+
baseDir?: string;
|
|
14
|
+
distDir?: string;
|
|
15
|
+
calculatedSecrets?: Record<string, string>;
|
|
16
|
+
waf?: WafPrefab;
|
|
17
|
+
skipRecord?: true;
|
|
18
|
+
wwwRedirectEnabled?: true;
|
|
19
|
+
explicitDomains?: string[];
|
|
20
|
+
};
|
|
21
|
+
export declare class SpaPrefab extends Construct {
|
|
22
|
+
private readonly domain;
|
|
23
|
+
private readonly baseUrl;
|
|
24
|
+
private readonly distribution;
|
|
25
|
+
constructor(service: ServiceStack, params: SpaPrefabParams);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-spa/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAMlE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,YAAY,EAA6E,MAAM,QAAQ,CAAC;AAEjH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;gBAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe;CAqG3D"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.SpaPrefab = void 0;
|
|
27
|
+
const awsCloudfront = __importStar(require("aws-cdk-lib/aws-cloudfront"));
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
|
|
30
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
31
|
+
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
32
|
+
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
33
|
+
const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
|
|
34
|
+
const constructs_1 = require("constructs");
|
|
35
|
+
const common_1 = require("../../../common");
|
|
36
|
+
const private_bucket_1 = require("../../../prefab/storage/bucket/private-bucket");
|
|
37
|
+
const frontend_env_builder_1 = require("../../../prefab/utils/config/frontend-env-builder");
|
|
38
|
+
class SpaPrefab extends constructs_1.Construct {
|
|
39
|
+
domain;
|
|
40
|
+
baseUrl;
|
|
41
|
+
distribution;
|
|
42
|
+
constructor(service, params) {
|
|
43
|
+
super(service, (0, common_1.getLogicalName)(SpaPrefab.name, params.subDomain));
|
|
44
|
+
this.domain = (0, common_1.getDomain)(params.subDomain, service.props);
|
|
45
|
+
this.baseUrl = `https://${this.domain}/`;
|
|
46
|
+
const privateBucketPrefab = new private_bucket_1.PrivateBucketPrefab(service, {
|
|
47
|
+
bucketName: 'spawebapp',
|
|
48
|
+
bucketProps: {
|
|
49
|
+
autoDeleteObjects: true,
|
|
50
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
51
|
+
cors: [
|
|
52
|
+
{
|
|
53
|
+
allowedMethods: [aws_s3_1.HttpMethods.GET, aws_s3_1.HttpMethods.HEAD],
|
|
54
|
+
allowedOrigins: ['*'],
|
|
55
|
+
allowedHeaders: ['*'],
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
const behaviorOptions = {
|
|
61
|
+
compress: true,
|
|
62
|
+
origin: new aws_cloudfront_origins_1.S3Origin(privateBucketPrefab.bucket, {
|
|
63
|
+
originId: (0, common_1.getCloudFrontName)('Origin', 'Default', service.props),
|
|
64
|
+
}),
|
|
65
|
+
originRequestPolicy: new awsCloudfront.OriginRequestPolicy(this, 'OriginRequestPolicy', {
|
|
66
|
+
originRequestPolicyName: (0, common_1.getCloudFrontName)('Bucket', 'RequestPolicy', service.props),
|
|
67
|
+
headerBehavior: {
|
|
68
|
+
behavior: 'whitelist',
|
|
69
|
+
headers: ['Access-Control-Allow-Origin', 'Access-Control-Allow-Headers', 'Origin'],
|
|
70
|
+
},
|
|
71
|
+
}),
|
|
72
|
+
cachePolicy: awsCloudfront.CachePolicy.CACHING_OPTIMIZED,
|
|
73
|
+
cachedMethods: awsCloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
|
|
74
|
+
allowedMethods: awsCloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
|
|
75
|
+
viewerProtocolPolicy: awsCloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
76
|
+
};
|
|
77
|
+
const domains = [this.domain];
|
|
78
|
+
if (params.wwwRedirectEnabled) {
|
|
79
|
+
if (params.subDomain)
|
|
80
|
+
throw new common_1.SynthError('wwwRedirectEnabled is only allowed in the root domain', service.props);
|
|
81
|
+
domains.push(`www.${this.domain}`);
|
|
82
|
+
}
|
|
83
|
+
this.distribution = new awsCloudfront.Distribution(this, 'Distribution', {
|
|
84
|
+
enabled: true,
|
|
85
|
+
comment: (0, common_1.getResourceName)('cdn', service.props),
|
|
86
|
+
certificate: params.certificate,
|
|
87
|
+
domainNames: params.explicitDomains ?? domains,
|
|
88
|
+
defaultRootObject: 'index.html',
|
|
89
|
+
errorResponses: [
|
|
90
|
+
{
|
|
91
|
+
httpStatus: 403,
|
|
92
|
+
responseHttpStatus: 200,
|
|
93
|
+
ttl: aws_cdk_lib_1.Duration.seconds(86400),
|
|
94
|
+
responsePagePath: '/index.html',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
httpStatus: 404,
|
|
98
|
+
responseHttpStatus: 200,
|
|
99
|
+
responsePagePath: '/index.html',
|
|
100
|
+
ttl: aws_cdk_lib_1.Duration.seconds(86400),
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
defaultBehavior: behaviorOptions,
|
|
104
|
+
...(service.props.envName !== 'prod' ? { priceClass: awsCloudfront.PriceClass.PRICE_CLASS_100 } : {}),
|
|
105
|
+
webAclId: params.waf?.webACL?.attrArn,
|
|
106
|
+
});
|
|
107
|
+
if (!params.explicitDomains && !params.skipRecord) {
|
|
108
|
+
const hostedZone = aws_route53_1.HostedZone.fromLookup(this, 'HostedZoneEnvDns', { domainName: (0, common_1.getDomain)('', service.props) });
|
|
109
|
+
domains.map((d) => {
|
|
110
|
+
new aws_route53_1.ARecord(service, d.split('.')[0], {
|
|
111
|
+
zone: hostedZone,
|
|
112
|
+
target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(this.distribution)),
|
|
113
|
+
recordName: d,
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
new frontend_env_builder_1.FrontendEnvBuilder(service, { ...params, name: params.subDomain });
|
|
118
|
+
new aws_ssm_1.StringParameter(this, 'Config', {
|
|
119
|
+
simpleName: true,
|
|
120
|
+
parameterName: (0, common_1.getResourceName)('config', service.props),
|
|
121
|
+
stringValue: JSON.stringify({
|
|
122
|
+
domain: params.explicitDomains ? params.explicitDomains[0] : this.domain,
|
|
123
|
+
bucketName: privateBucketPrefab.bucket.bucketName,
|
|
124
|
+
distributionId: this.distribution.distributionId,
|
|
125
|
+
assetMaxAge: params.assetMaxAge || '604800',
|
|
126
|
+
indexMaxAge: params.indexMaxAge || '1800',
|
|
127
|
+
baseDir: params.baseDir || `frontend/${service.props.serviceName}`,
|
|
128
|
+
distDir: params.distDir || 'build',
|
|
129
|
+
}),
|
|
130
|
+
});
|
|
131
|
+
new aws_cdk_lib_1.CfnOutput(this, 'Domain', { value: params.explicitDomains ? params.explicitDomains[0] : this.domain });
|
|
132
|
+
new aws_cdk_lib_1.CfnOutput(this, 'BaseUrl', {
|
|
133
|
+
value: params.explicitDomains ? `https://${params.explicitDomains[0]}/` : this.baseUrl,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.SpaPrefab = SpaPrefab;
|
|
138
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-spa/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as awsCloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
2
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
3
|
+
import { ICertificate } from 'aws-cdk-lib/aws-certificatemanager';
|
|
4
|
+
import { Construct } from 'constructs';
|
|
5
|
+
|
|
6
|
+
import { ServiceStack } from '../../../common';
|
|
7
|
+
|
|
8
|
+
import { WafPrefab } from '../../../prefab/networking/waf';
|
|
9
|
+
import { PrivateBucketPrefab } from '../../../prefab/storage/bucket/private-bucket';
|
|
10
|
+
|
|
11
|
+
export type SsrPrefabParams = {
|
|
12
|
+
subDomain: string;
|
|
13
|
+
certificate: ICertificate;
|
|
14
|
+
assetMaxAge?: string;
|
|
15
|
+
indexMaxAge?: string;
|
|
16
|
+
baseDir?: string;
|
|
17
|
+
distDir?: string;
|
|
18
|
+
calculatedSecrets?: Record<string, string>;
|
|
19
|
+
waf?: WafPrefab;
|
|
20
|
+
skipRecord?: true;
|
|
21
|
+
wwwRedirectEnabled?: true;
|
|
22
|
+
filesPathAssets: string;
|
|
23
|
+
filesPathNextFunction: string;
|
|
24
|
+
filesPathImageFunction: string;
|
|
25
|
+
};
|
|
26
|
+
export declare class SsrPrefab extends Construct {
|
|
27
|
+
readonly domain: string;
|
|
28
|
+
readonly baseUrl: string;
|
|
29
|
+
readonly distribution: awsCloudfront.Distribution;
|
|
30
|
+
readonly bucket: PrivateBucketPrefab;
|
|
31
|
+
readonly serverFunction: lambda.Function;
|
|
32
|
+
readonly imageFunction: lambda.Function;
|
|
33
|
+
constructor(service: ServiceStack, params: SsrPrefabParams);
|
|
34
|
+
protected createCloudFrontServerCachePolicy(): awsCloudfront.CachePolicy;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../prefab/cdn/cdn-ssr/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AASlE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMvC,OAAO,EAAE,YAAY,EAAgF,MAAM,QAAQ,CAAC;AAEpH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,qBAAa,SAAU,SAAQ,SAAS;IACtC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;IACzD,SAAgB,MAAM,EAAE,mBAAmB,CAAC;IAC5C,SAAgB,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;IAChD,SAAgB,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe;IAuN1D,SAAS,CAAC,iCAAiC,IAAI,aAAa,CAAC,WAAW;CAyBzE"}
|