@webiny/pulumi-aws 6.0.0-alpha.0 → 6.0.0-alpha.2
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/apps/admin/createAdminPulumiApp.d.ts +3 -2
- package/apps/admin/createAdminPulumiApp.js +1 -0
- package/apps/admin/createAdminPulumiApp.js.map +1 -1
- package/apps/api/ApiApwScheduler.d.ts +1 -1
- package/apps/api/ApiApwScheduler.js.map +1 -1
- package/apps/api/ApiBackgroundTask.d.ts +1 -1
- package/apps/api/ApiBackgroundTask.js.map +1 -1
- package/apps/api/ApiCloudfront.d.ts +1 -1
- package/apps/api/ApiCloudfront.js.map +1 -1
- package/apps/api/ApiFileManager.d.ts +7 -1
- package/apps/api/ApiFileManager.js +6 -0
- package/apps/api/ApiFileManager.js.map +1 -1
- package/apps/api/ApiGateway.d.ts +2 -2
- package/apps/api/ApiGateway.js.map +1 -1
- package/apps/api/ApiGraphql.d.ts +1 -1
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiMigration.d.ts +1 -1
- package/apps/api/ApiMigration.js.map +1 -1
- package/apps/api/ApiOutput.d.ts +11 -1
- package/apps/api/ApiOutput.js +11 -1
- package/apps/api/ApiOutput.js.map +1 -1
- package/apps/api/ApiPageBuilder.d.ts +1 -1
- package/apps/api/ApiPageBuilder.js.map +1 -1
- package/apps/api/ApiScheduler.d.ts +8 -0
- package/apps/api/ApiScheduler.js +105 -0
- package/apps/api/ApiScheduler.js.map +1 -0
- package/apps/api/ApiWebsocket.d.ts +1 -1
- package/apps/api/ApiWebsocket.js.map +1 -1
- package/apps/api/backgroundTask/definition.d.ts +2 -2
- package/apps/api/backgroundTask/definition.js.map +1 -1
- package/apps/api/backgroundTask/policy.d.ts +2 -2
- package/apps/api/backgroundTask/policy.js.map +1 -1
- package/apps/api/backgroundTask/role.d.ts +2 -2
- package/apps/api/backgroundTask/role.js.map +1 -1
- package/apps/api/backgroundTask/types.d.ts +1 -1
- package/apps/api/backgroundTask/types.js.map +1 -1
- package/apps/api/createApiPulumiApp.d.ts +19 -13
- package/apps/api/createApiPulumiApp.js +50 -19
- package/apps/api/createApiPulumiApp.js.map +1 -1
- package/apps/awsUtils.d.ts +2 -2
- package/apps/awsUtils.js.map +1 -1
- package/apps/blueGreen/createBlueGreenPulumiApp.d.ts +7 -1
- package/apps/blueGreen/createBlueGreenPulumiApp.js +2 -2
- package/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -1
- package/apps/blueGreen/domains/attachDomainsToOutput.d.ts +1 -1
- package/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -1
- package/apps/blueGreen/types.d.ts +4 -1
- package/apps/blueGreen/types.js.map +1 -1
- package/apps/common/CoreOutput.d.ts +2 -1
- package/apps/common/CoreOutput.js +1 -0
- package/apps/common/CoreOutput.js.map +1 -1
- package/apps/common/VpcConfig.d.ts +1 -1
- package/apps/common/VpcConfig.js.map +1 -1
- package/apps/core/CoreCognito.d.ts +1 -1
- package/apps/core/CoreCognito.js.map +1 -1
- package/apps/core/CoreDynamo.d.ts +1 -1
- package/apps/core/CoreDynamo.js.map +1 -1
- package/apps/core/CoreElasticSearch.d.ts +1 -1
- package/apps/core/CoreElasticSearch.js +7 -1
- package/apps/core/CoreElasticSearch.js.map +1 -1
- package/apps/core/CoreEventBus.js.map +1 -1
- package/apps/core/CoreFileManager.d.ts +1 -1
- package/apps/core/CoreFileManager.js.map +1 -1
- package/apps/core/CoreOpenSearch.d.ts +1 -1
- package/apps/core/CoreOpenSearch.js +7 -1
- package/apps/core/CoreOpenSearch.js.map +1 -1
- package/apps/core/CoreVpc.d.ts +1 -1
- package/apps/core/CoreVpc.js.map +1 -1
- package/apps/core/LogDynamo.d.ts +1 -1
- package/apps/core/LogDynamo.js.map +1 -1
- package/apps/core/WatchCommand.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/amazon.d.ts +3 -3
- package/apps/core/cognitoIdentityProviders/amazon.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/apple.d.ts +3 -3
- package/apps/core/cognitoIdentityProviders/apple.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/configure.d.ts +3 -3
- package/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/facebook.d.ts +3 -3
- package/apps/core/cognitoIdentityProviders/facebook.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/getIdpConfig.d.ts +2 -2
- package/apps/core/cognitoIdentityProviders/getIdpConfig.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/google.d.ts +3 -3
- package/apps/core/cognitoIdentityProviders/google.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/oidc.d.ts +3 -3
- package/apps/core/cognitoIdentityProviders/oidc.js.map +1 -1
- package/apps/core/createCorePulumiApp.d.ts +1 -1
- package/apps/core/createCorePulumiApp.js +2 -1
- package/apps/core/createCorePulumiApp.js.map +1 -1
- package/apps/createAppBucket.d.ts +1 -1
- package/apps/createAppBucket.js.map +1 -1
- package/apps/customDomain.d.ts +3 -3
- package/apps/customDomain.js.map +1 -1
- package/apps/lambdaUtils.d.ts +3 -2
- package/apps/lambdaUtils.js +21 -3
- package/apps/lambdaUtils.js.map +1 -1
- package/apps/react/createReactPulumiApp.d.ts +2 -2
- package/apps/react/createReactPulumiApp.js.map +1 -1
- package/apps/syncSystem/SyncSystemDynamo.d.ts +1 -1
- package/apps/syncSystem/SyncSystemDynamo.js.map +1 -1
- package/apps/syncSystem/SyncSystemDynamoDb.d.ts +3 -0
- package/apps/syncSystem/SyncSystemDynamoDb.js +55 -0
- package/apps/syncSystem/SyncSystemDynamoDb.js.map +1 -0
- package/apps/syncSystem/SyncSystemEventBus.d.ts +6 -0
- package/apps/syncSystem/SyncSystemEventBus.js +84 -0
- package/apps/syncSystem/SyncSystemEventBus.js.map +1 -0
- package/apps/syncSystem/SyncSystemLambda.d.ts +1 -1
- package/apps/syncSystem/SyncSystemLambda.js.map +1 -1
- package/apps/syncSystem/SyncSystemOutput.d.ts +3 -0
- package/apps/syncSystem/SyncSystemOutput.js +26 -0
- package/apps/syncSystem/SyncSystemOutput.js.map +1 -0
- package/apps/syncSystem/SyncSystemResolverLambda.d.ts +8 -0
- package/apps/syncSystem/SyncSystemResolverLambda.js +78 -0
- package/apps/syncSystem/SyncSystemResolverLambda.js.map +1 -0
- package/apps/syncSystem/SyncSystemSQS.d.ts +3 -4
- package/apps/syncSystem/SyncSystemSQS.js +33 -12
- package/apps/syncSystem/SyncSystemSQS.js.map +1 -1
- package/apps/syncSystem/SyncSystemWorkerLambda.d.ts +7 -0
- package/apps/syncSystem/SyncSystemWorkerLambda.js +57 -0
- package/apps/syncSystem/SyncSystemWorkerLambda.js.map +1 -0
- package/apps/syncSystem/api/addServiceManifest.d.ts +8 -0
- package/apps/syncSystem/api/addServiceManifest.js +25 -0
- package/apps/syncSystem/api/addServiceManifest.js.map +1 -0
- package/apps/syncSystem/api/attachCognitoPermissions.d.ts +14 -0
- package/apps/syncSystem/api/attachCognitoPermissions.js +67 -0
- package/apps/syncSystem/api/attachCognitoPermissions.js.map +1 -0
- package/apps/syncSystem/api/attachDynamoDbPermissions.d.ts +13 -0
- package/apps/syncSystem/api/attachDynamoDbPermissions.js +53 -0
- package/apps/syncSystem/api/attachDynamoDbPermissions.js.map +1 -0
- package/apps/syncSystem/api/attachEventBusPermissions.d.ts +18 -0
- package/apps/syncSystem/api/attachEventBusPermissions.js +66 -0
- package/apps/syncSystem/api/attachEventBusPermissions.js.map +1 -0
- package/apps/syncSystem/api/attachS3Permissions.d.ts +14 -0
- package/apps/syncSystem/api/attachS3Permissions.js +59 -0
- package/apps/syncSystem/api/attachS3Permissions.js.map +1 -0
- package/apps/syncSystem/api/index.d.ts +9 -0
- package/apps/syncSystem/api/index.js +65 -0
- package/apps/syncSystem/api/index.js.map +1 -0
- package/apps/syncSystem/constants.d.ts +1 -0
- package/apps/syncSystem/constants.js +9 -0
- package/apps/syncSystem/constants.js.map +1 -0
- package/apps/syncSystem/createSyncResourceName.d.ts +4 -0
- package/apps/syncSystem/createSyncResourceName.js +17 -0
- package/apps/syncSystem/createSyncResourceName.js.map +1 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.d.ts +19 -10
- package/apps/syncSystem/createSyncSystemPulumiApp.js +107 -34
- package/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -1
- package/apps/syncSystem/customApp.d.ts +6 -0
- package/apps/syncSystem/customApp.js +26 -0
- package/apps/syncSystem/customApp.js.map +1 -0
- package/apps/syncSystem/getSyncSystemOutput.d.ts +6 -0
- package/apps/syncSystem/getSyncSystemOutput.js +28 -0
- package/apps/syncSystem/getSyncSystemOutput.js.map +1 -0
- package/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.d.ts +7 -0
- package/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js +55 -0
- package/apps/syncSystem/lambda/createSyncSystemResolverLambdaPolicy.js.map +1 -0
- package/apps/syncSystem/types.d.ts +55 -0
- package/apps/syncSystem/types.js +7 -0
- package/apps/syncSystem/types.js.map +1 -0
- package/apps/tenantRouter.d.ts +1 -1
- package/apps/tenantRouter.js.map +1 -1
- package/apps/website/WebsitePrerendering.d.ts +1 -1
- package/apps/website/WebsitePrerendering.js.map +1 -1
- package/apps/website/createWebsitePulumiApp.d.ts +2 -2
- package/apps/website/createWebsitePulumiApp.js.map +1 -1
- package/enterprise/api/handleGuardDutyEvents.d.ts +1 -1
- package/enterprise/api/handleGuardDutyEvents.js.map +1 -1
- package/enterprise/createApiPulumiApp.d.ts +13 -2
- package/enterprise/createApiPulumiApp.js.map +1 -1
- package/enterprise/createCorePulumiApp.d.ts +2 -2
- package/enterprise/createCorePulumiApp.js.map +1 -1
- package/enterprise/createSyncSystemPulumiApp.d.ts +13 -8
- package/enterprise/createSyncSystemPulumiApp.js +1 -1
- package/enterprise/createSyncSystemPulumiApp.js.map +1 -1
- package/enterprise/createWebsitePulumiApp.d.ts +2 -2
- package/enterprise/createWebsitePulumiApp.js.map +1 -1
- package/package.json +12 -12
- package/utils/addDomainsUrlsOutputs.d.ts +2 -2
- package/utils/addDomainsUrlsOutputs.js.map +1 -1
- package/utils/addServiceManifestTableItem.d.ts +1 -1
- package/utils/addServiceManifestTableItem.js.map +1 -1
- package/utils/createAssetArchive.d.ts +2 -0
- package/utils/createAssetArchive.js +16 -0
- package/utils/createAssetArchive.js.map +1 -0
- package/utils/getPresignedPost.d.ts +1 -1
- package/utils/getPresignedPost.js.map +1 -1
- package/utils/lambdaEnvVariables.d.ts +1 -1
- package/utils/lambdaEnvVariables.js.map +1 -1
- package/utils/uploadFolderToS3.d.ts +1 -1
- package/utils/uploadFolderToS3.js.map +1 -1
- package/utils/withServiceManifest.d.ts +2 -2
- package/utils/withServiceManifest.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getAppleIdpConfig","userPoolId","config","providerName","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","exports"],"sources":["apple.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\nimport { CognitoIdentityProviderConfig } from \"./configure\";\n\nexport const getAppleIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: \"Apple\",\n providerType: \"SignInWithApple\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"sub\",\n username: \"sub\",\n email: \"email\",\n given_name: \"firstName\",\n family_name: \"lastName\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,iBAAiB,GAAGA,CAC7BC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAE,OAAO;IACrBC,YAAY,EAAE,iBAAiB;IAC/BC,eAAe,EAAEH,MAAM,CAACG,eAAe;IACvCC,cAAc,EAAEJ,MAAM,CAACI,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,KAAK;MAClBC,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,WAAW;MACvBC,WAAW,EAAE,UAAU;MACvB,GAAGT,MAAM,CAACK;IACd;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAZ,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getAppleIdpConfig","userPoolId","config","providerName","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","exports"],"sources":["apple.ts"],"sourcesContent":["import type * as pulumi from \"@pulumi/pulumi\";\nimport type { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\nimport type { CognitoIdentityProviderConfig } from \"./configure\";\n\nexport const getAppleIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: \"Apple\",\n providerType: \"SignInWithApple\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"sub\",\n username: \"sub\",\n email: \"email\",\n given_name: \"firstName\",\n family_name: \"lastName\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,iBAAiB,GAAGA,CAC7BC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAE,OAAO;IACrBC,YAAY,EAAE,iBAAiB;IAC/BC,eAAe,EAAEH,MAAM,CAACG,eAAe;IACvCC,cAAc,EAAEJ,MAAM,CAACI,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,KAAK;MAClBC,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,WAAW;MACvBC,WAAW,EAAE,UAAU;MACvB,GAAGT,MAAM,CAACK;IACd;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAZ,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { UserPoolDomainArgs } from "@pulumi/aws/cognito/userPoolDomain";
|
|
2
|
-
import { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
3
|
-
import { PulumiApp } from "@webiny/pulumi";
|
|
1
|
+
import type { UserPoolDomainArgs } from "@pulumi/aws/cognito/userPoolDomain";
|
|
2
|
+
import type { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
3
|
+
import type { PulumiApp } from "@webiny/pulumi";
|
|
4
4
|
export type IdentityAttributeMapping = {
|
|
5
5
|
"custom:id": string;
|
|
6
6
|
username: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","pulumi","_getIdpConfig","_awsRegion","isString","value","configureAdminCognitoFederation","app","config","region","getEnvVariableAwsRegion","userPool","resources","appClient","userPoolClient","userPoolDomain","addResource","cognito","UserPoolDomain","name","domain","certificateArn","undefined","userPoolId","output","id","addOutput","interpolate","idpConfigs","idp","identityProviders","getIdpConfig","type","providerName","toString","toLowerCase","IdentityProvider","push","supportedIdentityProviders","map","providerType","allowedOauthScopes","allowedOauthFlows","allowedOauthFlowsUserPoolClient","callbackUrls","logoutUrls","exports"],"sources":["configure.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { UserPoolDomainArgs } from \"@pulumi/aws/cognito/userPoolDomain\";\nimport { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { PulumiApp, PulumiAppResource, PulumiAppResourceConstructor } from \"@webiny/pulumi\";\nimport { getIdpConfig } from \"./getIdpConfig\";\nimport { getEnvVariableAwsRegion } from \"~/env/awsRegion\";\n\nexport type IdentityAttributeMapping = {\n \"custom:id\": string;\n username: string;\n email: string;\n family_name: string;\n given_name: string;\n [key: string]: string;\n};\n\nexport interface CognitoIdentityProvidersConfig {\n domain:\n | string\n | {\n name: UserPoolDomainArgs[\"domain\"];\n certificateArn?: UserPoolDomainArgs[\"certificateArn\"];\n };\n identityProviders: CognitoIdentityProviderConfig[];\n callbackUrls: string[];\n logoutUrls?: string[];\n}\n\nexport interface CognitoIdentityProviderConfig {\n name?: string;\n type: \"google\" | \"facebook\" | \"amazon\" | \"apple\" | \"oidc\";\n providerDetails: IdentityProviderArgs[\"providerDetails\"];\n idpIdentifiers?: IdentityProviderArgs[\"idpIdentifiers\"];\n attributeMapping?: IdentityAttributeMapping;\n}\n\nconst isString = (value?: any): value is string => {\n return typeof value === \"string\";\n};\n\nexport const configureAdminCognitoFederation = (\n app: PulumiApp,\n config: CognitoIdentityProvidersConfig\n) => {\n const region = getEnvVariableAwsRegion();\n\n const userPool = app.resources.userPool as PulumiAppResource<\n PulumiAppResourceConstructor<aws.cognito.UserPool>\n >;\n\n const appClient = app.resources.userPoolClient as PulumiAppResource<\n PulumiAppResourceConstructor<aws.cognito.UserPoolClient>\n >;\n\n /**\n * We need to create a user pool domain, which is used to interact with the federated identity providers.\n */\n const userPoolDomain = app.addResource(aws.cognito.UserPoolDomain, {\n name: \"cognitoUserPoolDomain\",\n config: {\n domain: isString(config.domain) ? config.domain : config.domain.name,\n certificateArn: isString(config.domain) ? undefined : config.domain.certificateArn,\n userPoolId: userPool.output.id\n }\n });\n\n app.addOutput(\n \"cognitoUserPoolDomain\",\n pulumi.interpolate`${userPoolDomain.output.domain}.auth.${region}.amazoncognito.com`\n );\n\n const idpConfigs: aws.cognito.IdentityProviderArgs[] = [];\n\n for (const idp of config.identityProviders) {\n const config = getIdpConfig(idp.type, userPool.output.id, idp);\n\n // The idea to lowercase the provider name emerged while working on backwards compatibility issue.\n // Basically, in cases where a user used the OIDC provider and did not specify a name, instead of\n // using `OIDC` as the name, we wanted to ensure `oidc` is used. But, what I soon realized is that\n // by simply lowercasing the name, we can avoid the need to check for the provider type and name.\n // And although this will now happen for all providers, it's not a problem since Pulumi requires\n // names to be all lowercase anyway.\n const name = config.providerName.toString().toLowerCase();\n\n app.addResource(aws.cognito.IdentityProvider, { name, config });\n\n idpConfigs.push(config);\n }\n\n appClient.config.supportedIdentityProviders([\n \"COGNITO\",\n ...idpConfigs.map(config => {\n // For built-in identity providers, we use the type as the name. Only for OIDC,\n // we allow the user to provide a custom name, and we only use the type as a fallback.\n if (config.providerType === \"OIDC\") {\n return config.providerName;\n }\n return config.providerType;\n })\n ]);\n\n appClient.config.allowedOauthScopes([\"profile\", \"email\", \"openid\"]);\n appClient.config.allowedOauthFlows([\"implicit\", \"code\"]);\n appClient.config.allowedOauthFlowsUserPoolClient(true);\n appClient.config.callbackUrls(config.callbackUrls);\n appClient.config.logoutUrls(config.logoutUrls ?? config.callbackUrls);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","pulumi","_getIdpConfig","_awsRegion","isString","value","configureAdminCognitoFederation","app","config","region","getEnvVariableAwsRegion","userPool","resources","appClient","userPoolClient","userPoolDomain","addResource","cognito","UserPoolDomain","name","domain","certificateArn","undefined","userPoolId","output","id","addOutput","interpolate","idpConfigs","idp","identityProviders","getIdpConfig","type","providerName","toString","toLowerCase","IdentityProvider","push","supportedIdentityProviders","map","providerType","allowedOauthScopes","allowedOauthFlows","allowedOauthFlowsUserPoolClient","callbackUrls","logoutUrls","exports"],"sources":["configure.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { UserPoolDomainArgs } from \"@pulumi/aws/cognito/userPoolDomain\";\nimport type { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport type { PulumiApp, PulumiAppResource, PulumiAppResourceConstructor } from \"@webiny/pulumi\";\nimport { getIdpConfig } from \"./getIdpConfig\";\nimport { getEnvVariableAwsRegion } from \"~/env/awsRegion\";\n\nexport type IdentityAttributeMapping = {\n \"custom:id\": string;\n username: string;\n email: string;\n family_name: string;\n given_name: string;\n [key: string]: string;\n};\n\nexport interface CognitoIdentityProvidersConfig {\n domain:\n | string\n | {\n name: UserPoolDomainArgs[\"domain\"];\n certificateArn?: UserPoolDomainArgs[\"certificateArn\"];\n };\n identityProviders: CognitoIdentityProviderConfig[];\n callbackUrls: string[];\n logoutUrls?: string[];\n}\n\nexport interface CognitoIdentityProviderConfig {\n name?: string;\n type: \"google\" | \"facebook\" | \"amazon\" | \"apple\" | \"oidc\";\n providerDetails: IdentityProviderArgs[\"providerDetails\"];\n idpIdentifiers?: IdentityProviderArgs[\"idpIdentifiers\"];\n attributeMapping?: IdentityAttributeMapping;\n}\n\nconst isString = (value?: any): value is string => {\n return typeof value === \"string\";\n};\n\nexport const configureAdminCognitoFederation = (\n app: PulumiApp,\n config: CognitoIdentityProvidersConfig\n) => {\n const region = getEnvVariableAwsRegion();\n\n const userPool = app.resources.userPool as PulumiAppResource<\n PulumiAppResourceConstructor<aws.cognito.UserPool>\n >;\n\n const appClient = app.resources.userPoolClient as PulumiAppResource<\n PulumiAppResourceConstructor<aws.cognito.UserPoolClient>\n >;\n\n /**\n * We need to create a user pool domain, which is used to interact with the federated identity providers.\n */\n const userPoolDomain = app.addResource(aws.cognito.UserPoolDomain, {\n name: \"cognitoUserPoolDomain\",\n config: {\n domain: isString(config.domain) ? config.domain : config.domain.name,\n certificateArn: isString(config.domain) ? undefined : config.domain.certificateArn,\n userPoolId: userPool.output.id\n }\n });\n\n app.addOutput(\n \"cognitoUserPoolDomain\",\n pulumi.interpolate`${userPoolDomain.output.domain}.auth.${region}.amazoncognito.com`\n );\n\n const idpConfigs: aws.cognito.IdentityProviderArgs[] = [];\n\n for (const idp of config.identityProviders) {\n const config = getIdpConfig(idp.type, userPool.output.id, idp);\n\n // The idea to lowercase the provider name emerged while working on backwards compatibility issue.\n // Basically, in cases where a user used the OIDC provider and did not specify a name, instead of\n // using `OIDC` as the name, we wanted to ensure `oidc` is used. But, what I soon realized is that\n // by simply lowercasing the name, we can avoid the need to check for the provider type and name.\n // And although this will now happen for all providers, it's not a problem since Pulumi requires\n // names to be all lowercase anyway.\n const name = config.providerName.toString().toLowerCase();\n\n app.addResource(aws.cognito.IdentityProvider, { name, config });\n\n idpConfigs.push(config);\n }\n\n appClient.config.supportedIdentityProviders([\n \"COGNITO\",\n ...idpConfigs.map(config => {\n // For built-in identity providers, we use the type as the name. Only for OIDC,\n // we allow the user to provide a custom name, and we only use the type as a fallback.\n if (config.providerType === \"OIDC\") {\n return config.providerName;\n }\n return config.providerType;\n })\n ]);\n\n appClient.config.allowedOauthScopes([\"profile\", \"email\", \"openid\"]);\n appClient.config.allowedOauthFlows([\"implicit\", \"code\"]);\n appClient.config.allowedOauthFlowsUserPoolClient(true);\n appClient.config.callbackUrls(config.callbackUrls);\n appClient.config.logoutUrls(config.logoutUrls ?? config.callbackUrls);\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAF,uBAAA,CAAAC,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AA+BA,MAAMI,QAAQ,GAAIC,KAAW,IAAsB;EAC/C,OAAO,OAAOA,KAAK,KAAK,QAAQ;AACpC,CAAC;AAEM,MAAMC,+BAA+B,GAAGA,CAC3CC,GAAc,EACdC,MAAsC,KACrC;EACD,MAAMC,MAAM,GAAG,IAAAC,kCAAuB,EAAC,CAAC;EAExC,MAAMC,QAAQ,GAAGJ,GAAG,CAACK,SAAS,CAACD,QAE9B;EAED,MAAME,SAAS,GAAGN,GAAG,CAACK,SAAS,CAACE,cAE/B;;EAED;AACJ;AACA;EACI,MAAMC,cAAc,GAAGR,GAAG,CAACS,WAAW,CAAClB,GAAG,CAACmB,OAAO,CAACC,cAAc,EAAE;IAC/DC,IAAI,EAAE,uBAAuB;IAC7BX,MAAM,EAAE;MACJY,MAAM,EAAEhB,QAAQ,CAACI,MAAM,CAACY,MAAM,CAAC,GAAGZ,MAAM,CAACY,MAAM,GAAGZ,MAAM,CAACY,MAAM,CAACD,IAAI;MACpEE,cAAc,EAAEjB,QAAQ,CAACI,MAAM,CAACY,MAAM,CAAC,GAAGE,SAAS,GAAGd,MAAM,CAACY,MAAM,CAACC,cAAc;MAClFE,UAAU,EAAEZ,QAAQ,CAACa,MAAM,CAACC;IAChC;EACJ,CAAC,CAAC;EAEFlB,GAAG,CAACmB,SAAS,CACT,uBAAuB,EACvBzB,MAAM,CAAC0B,WAAW,GAAGZ,cAAc,CAACS,MAAM,CAACJ,MAAM,SAASX,MAAM,oBACpE,CAAC;EAED,MAAMmB,UAA8C,GAAG,EAAE;EAEzD,KAAK,MAAMC,GAAG,IAAIrB,MAAM,CAACsB,iBAAiB,EAAE;IACxC,MAAMtB,MAAM,GAAG,IAAAuB,0BAAY,EAACF,GAAG,CAACG,IAAI,EAAErB,QAAQ,CAACa,MAAM,CAACC,EAAE,EAAEI,GAAG,CAAC;;IAE9D;IACA;IACA;IACA;IACA;IACA;IACA,MAAMV,IAAI,GAAGX,MAAM,CAACyB,YAAY,CAACC,QAAQ,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;IAEzD5B,GAAG,CAACS,WAAW,CAAClB,GAAG,CAACmB,OAAO,CAACmB,gBAAgB,EAAE;MAAEjB,IAAI;MAAEX;IAAO,CAAC,CAAC;IAE/DoB,UAAU,CAACS,IAAI,CAAC7B,MAAM,CAAC;EAC3B;EAEAK,SAAS,CAACL,MAAM,CAAC8B,0BAA0B,CAAC,CACxC,SAAS,EACT,GAAGV,UAAU,CAACW,GAAG,CAAC/B,MAAM,IAAI;IACxB;IACA;IACA,IAAIA,MAAM,CAACgC,YAAY,KAAK,MAAM,EAAE;MAChC,OAAOhC,MAAM,CAACyB,YAAY;IAC9B;IACA,OAAOzB,MAAM,CAACgC,YAAY;EAC9B,CAAC,CAAC,CACL,CAAC;EAEF3B,SAAS,CAACL,MAAM,CAACiC,kBAAkB,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;EACnE5B,SAAS,CAACL,MAAM,CAACkC,iBAAiB,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;EACxD7B,SAAS,CAACL,MAAM,CAACmC,+BAA+B,CAAC,IAAI,CAAC;EACtD9B,SAAS,CAACL,MAAM,CAACoC,YAAY,CAACpC,MAAM,CAACoC,YAAY,CAAC;EAClD/B,SAAS,CAACL,MAAM,CAACqC,UAAU,CAACrC,MAAM,CAACqC,UAAU,IAAIrC,MAAM,CAACoC,YAAY,CAAC;AACzE,CAAC;AAACE,OAAA,CAAAxC,+BAAA,GAAAA,+BAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
-
import { CognitoIdentityProviderConfig } from "./configure";
|
|
3
|
-
import { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
1
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import type { CognitoIdentityProviderConfig } from "./configure";
|
|
3
|
+
import type { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
4
4
|
export declare const getFacebookIdpConfig: (userPoolId: pulumi.Input<string>, config: CognitoIdentityProviderConfig) => IdentityProviderArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getFacebookIdpConfig","userPoolId","config","providerName","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","exports"],"sources":["facebook.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport { CognitoIdentityProviderConfig } from \"./configure\";\nimport { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\n\nexport const getFacebookIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: \"Facebook\",\n providerType: \"Facebook\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"id\",\n username: \"id\",\n email: \"email\",\n given_name: \"first_name\",\n family_name: \"last_name\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,oBAAoB,GAAGA,CAChCC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAE,UAAU;IACxBC,YAAY,EAAE,UAAU;IACxBC,eAAe,EAAEH,MAAM,CAACG,eAAe;IACvCC,cAAc,EAAEJ,MAAM,CAACI,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,IAAI;MACdC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,YAAY;MACxBC,WAAW,EAAE,WAAW;MACxB,GAAGT,MAAM,CAACK;IACd;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAZ,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getFacebookIdpConfig","userPoolId","config","providerName","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","exports"],"sources":["facebook.ts"],"sourcesContent":["import type * as pulumi from \"@pulumi/pulumi\";\nimport type { CognitoIdentityProviderConfig } from \"./configure\";\nimport type { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\n\nexport const getFacebookIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: \"Facebook\",\n providerType: \"Facebook\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"id\",\n username: \"id\",\n email: \"email\",\n given_name: \"first_name\",\n family_name: \"last_name\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,oBAAoB,GAAGA,CAChCC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAE,UAAU;IACxBC,YAAY,EAAE,UAAU;IACxBC,eAAe,EAAEH,MAAM,CAACG,eAAe;IACvCC,cAAc,EAAEJ,MAAM,CAACI,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,IAAI;MACdC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,YAAY;MACxBC,WAAW,EAAE,WAAW;MACxB,GAAGT,MAAM,CAACK;IACd;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAZ,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
-
import { CognitoIdentityProviderConfig } from "./configure";
|
|
1
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import type { CognitoIdentityProviderConfig } from "./configure";
|
|
3
3
|
export declare const getIdpConfig: (type: CognitoIdentityProviderConfig["type"], userPoolId: pulumi.Input<string>, config: CognitoIdentityProviderConfig) => import("@pulumi/aws/cognito").IdentityProviderArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_google","require","_facebook","_apple","_amazon","_oidc","idpMap","google","getGoogleIdpConfig","facebook","getFacebookIdpConfig","amazon","getAmazonIdpConfig","apple","getAppleIdpConfig","oidc","getOidcIdpConfig","getIdpConfig","type","userPoolId","config","exports"],"sources":["getIdpConfig.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport { CognitoIdentityProviderConfig } from \"./configure\";\nimport { getGoogleIdpConfig } from \"./google\";\nimport { getFacebookIdpConfig } from \"./facebook\";\nimport { getAppleIdpConfig } from \"./apple\";\nimport { getAmazonIdpConfig } from \"./amazon\";\nimport { getOidcIdpConfig } from \"./oidc\";\n\nconst idpMap = {\n google: getGoogleIdpConfig,\n facebook: getFacebookIdpConfig,\n amazon: getAmazonIdpConfig,\n apple: getAppleIdpConfig,\n oidc: getOidcIdpConfig\n};\n\nexport const getIdpConfig = (\n type: CognitoIdentityProviderConfig[\"type\"],\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n) => {\n return idpMap[type](userPoolId, config);\n};\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAEA,MAAMK,MAAM,GAAG;EACXC,MAAM,EAAEC,0BAAkB;EAC1BC,QAAQ,EAAEC,8BAAoB;EAC9BC,MAAM,EAAEC,0BAAkB;EAC1BC,KAAK,EAAEC,wBAAiB;EACxBC,IAAI,EAAEC;AACV,CAAC;AAEM,MAAMC,YAAY,GAAGA,CACxBC,IAA2C,EAC3CC,UAAgC,EAChCC,MAAqC,KACpC;EACD,OAAOd,MAAM,CAACY,IAAI,CAAC,CAACC,UAAU,EAAEC,MAAM,CAAC;AAC3C,CAAC;AAACC,OAAA,CAAAJ,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_google","require","_facebook","_apple","_amazon","_oidc","idpMap","google","getGoogleIdpConfig","facebook","getFacebookIdpConfig","amazon","getAmazonIdpConfig","apple","getAppleIdpConfig","oidc","getOidcIdpConfig","getIdpConfig","type","userPoolId","config","exports"],"sources":["getIdpConfig.ts"],"sourcesContent":["import type * as pulumi from \"@pulumi/pulumi\";\nimport type { CognitoIdentityProviderConfig } from \"./configure\";\nimport { getGoogleIdpConfig } from \"./google\";\nimport { getFacebookIdpConfig } from \"./facebook\";\nimport { getAppleIdpConfig } from \"./apple\";\nimport { getAmazonIdpConfig } from \"./amazon\";\nimport { getOidcIdpConfig } from \"./oidc\";\n\nconst idpMap = {\n google: getGoogleIdpConfig,\n facebook: getFacebookIdpConfig,\n amazon: getAmazonIdpConfig,\n apple: getAppleIdpConfig,\n oidc: getOidcIdpConfig\n};\n\nexport const getIdpConfig = (\n type: CognitoIdentityProviderConfig[\"type\"],\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n) => {\n return idpMap[type](userPoolId, config);\n};\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAEA,MAAMK,MAAM,GAAG;EACXC,MAAM,EAAEC,0BAAkB;EAC1BC,QAAQ,EAAEC,8BAAoB;EAC9BC,MAAM,EAAEC,0BAAkB;EAC1BC,KAAK,EAAEC,wBAAiB;EACxBC,IAAI,EAAEC;AACV,CAAC;AAEM,MAAMC,YAAY,GAAGA,CACxBC,IAA2C,EAC3CC,UAAgC,EAChCC,MAAqC,KACpC;EACD,OAAOd,MAAM,CAACY,IAAI,CAAC,CAACC,UAAU,EAAEC,MAAM,CAAC;AAC3C,CAAC;AAACC,OAAA,CAAAJ,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
-
import { CognitoIdentityProviderConfig } from "./configure";
|
|
3
|
-
import { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
1
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import type { CognitoIdentityProviderConfig } from "./configure";
|
|
3
|
+
import type { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
4
4
|
export declare const getGoogleIdpConfig: (userPoolId: pulumi.Input<string>, config: CognitoIdentityProviderConfig) => IdentityProviderArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getGoogleIdpConfig","userPoolId","config","providerName","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","exports"],"sources":["google.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport { CognitoIdentityProviderConfig } from \"./configure\";\nimport { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\n\nexport const getGoogleIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: \"Google\",\n providerType: \"Google\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"sub\",\n username: \"sub\",\n email: \"email\",\n given_name: \"given_name\",\n family_name: \"family_name\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,kBAAkB,GAAGA,CAC9BC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAE,QAAQ;IACtBC,YAAY,EAAE,QAAQ;IACtBC,eAAe,EAAEH,MAAM,CAACG,eAAe;IACvCC,cAAc,EAAEJ,MAAM,CAACI,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,KAAK;MAClBC,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,YAAY;MACxBC,WAAW,EAAE,aAAa;MAC1B,GAAGT,MAAM,CAACK;IACd;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAZ,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getGoogleIdpConfig","userPoolId","config","providerName","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","exports"],"sources":["google.ts"],"sourcesContent":["import type * as pulumi from \"@pulumi/pulumi\";\nimport type { CognitoIdentityProviderConfig } from \"./configure\";\nimport type { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\n\nexport const getGoogleIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: \"Google\",\n providerType: \"Google\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"sub\",\n username: \"sub\",\n email: \"email\",\n given_name: \"given_name\",\n family_name: \"family_name\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,kBAAkB,GAAGA,CAC9BC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAE,QAAQ;IACtBC,YAAY,EAAE,QAAQ;IACtBC,eAAe,EAAEH,MAAM,CAACG,eAAe;IACvCC,cAAc,EAAEJ,MAAM,CAACI,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,KAAK;MAClBC,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,YAAY;MACxBC,WAAW,EAAE,aAAa;MAC1B,GAAGT,MAAM,CAACK;IACd;EACJ,CAAC;AACL,CAAC;AAACK,OAAA,CAAAZ,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
-
import { CognitoIdentityProviderConfig } from "./configure";
|
|
3
|
-
import { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
1
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import type { CognitoIdentityProviderConfig } from "./configure";
|
|
3
|
+
import type { IdentityProviderArgs } from "@pulumi/aws/cognito";
|
|
4
4
|
export declare const getOidcIdpConfig: (userPoolId: pulumi.Input<string>, config: CognitoIdentityProviderConfig) => IdentityProviderArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getOidcIdpConfig","userPoolId","config","providerName","name","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","preferred_username","exports"],"sources":["oidc.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport { CognitoIdentityProviderConfig } from \"./configure\";\nimport { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\n\nexport const getOidcIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: config.name || \"OIDC\",\n providerType: \"OIDC\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"sub\",\n username: \"sub\",\n email: \"email\",\n given_name: \"given_name\",\n family_name: \"family_name\",\n preferred_username: \"email\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,gBAAgB,GAAGA,CAC5BC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAED,MAAM,CAACE,IAAI,IAAI,MAAM;IACnCC,YAAY,EAAE,MAAM;IACpBC,eAAe,EAAEJ,MAAM,CAACI,eAAe;IACvCC,cAAc,EAAEL,MAAM,CAACK,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,KAAK;MAClBC,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,YAAY;MACxBC,WAAW,EAAE,aAAa;MAC1BC,kBAAkB,EAAE,OAAO;MAC3B,GAAGX,MAAM,CAACM;IACd;EACJ,CAAC;AACL,CAAC;AAACM,OAAA,CAAAd,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getOidcIdpConfig","userPoolId","config","providerName","name","providerType","providerDetails","idpIdentifiers","attributeMapping","username","email","given_name","family_name","preferred_username","exports"],"sources":["oidc.ts"],"sourcesContent":["import type * as pulumi from \"@pulumi/pulumi\";\nimport type { CognitoIdentityProviderConfig } from \"./configure\";\nimport type { IdentityProviderArgs } from \"@pulumi/aws/cognito\";\n\nexport const getOidcIdpConfig = (\n userPoolId: pulumi.Input<string>,\n config: CognitoIdentityProviderConfig\n): IdentityProviderArgs => {\n return {\n userPoolId,\n providerName: config.name || \"OIDC\",\n providerType: \"OIDC\",\n providerDetails: config.providerDetails,\n idpIdentifiers: config.idpIdentifiers,\n attributeMapping: {\n \"custom:id\": \"sub\",\n username: \"sub\",\n email: \"email\",\n given_name: \"given_name\",\n family_name: \"family_name\",\n preferred_username: \"email\",\n ...config.attributeMapping\n }\n };\n};\n"],"mappings":";;;;;;AAIO,MAAMA,gBAAgB,GAAGA,CAC5BC,UAAgC,EAChCC,MAAqC,KACd;EACvB,OAAO;IACHD,UAAU;IACVE,YAAY,EAAED,MAAM,CAACE,IAAI,IAAI,MAAM;IACnCC,YAAY,EAAE,MAAM;IACpBC,eAAe,EAAEJ,MAAM,CAACI,eAAe;IACvCC,cAAc,EAAEL,MAAM,CAACK,cAAc;IACrCC,gBAAgB,EAAE;MACd,WAAW,EAAE,KAAK;MAClBC,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,OAAO;MACdC,UAAU,EAAE,YAAY;MACxBC,WAAW,EAAE,aAAa;MAC1BC,kBAAkB,EAAE,OAAO;MAC3B,GAAGX,MAAM,CAACM;IACd;EACJ,CAAC;AACL,CAAC;AAACM,OAAA,CAAAd,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as aws from "@pulumi/aws";
|
|
2
|
-
import { PulumiAppParam } from "@webiny/pulumi";
|
|
2
|
+
import type { PulumiAppParam } from "@webiny/pulumi";
|
|
3
3
|
export type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;
|
|
4
4
|
export interface ElasticsearchConfig {
|
|
5
5
|
domainName: string;
|
|
@@ -105,7 +105,7 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
105
105
|
} = app.addModule(_CoreFileManager.CoreFileManger, {
|
|
106
106
|
protect
|
|
107
107
|
});
|
|
108
|
-
let elasticSearch;
|
|
108
|
+
let elasticSearch = undefined;
|
|
109
109
|
if (searchEngineType === "openSearch") {
|
|
110
110
|
elasticSearch = app.addModule(_CoreOpenSearch.OpenSearch, {
|
|
111
111
|
protect
|
|
@@ -124,6 +124,7 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
124
124
|
deploymentId: deploymentId.hex,
|
|
125
125
|
region: aws.config.region,
|
|
126
126
|
fileManagerBucketId: fileManagerBucket.output.id,
|
|
127
|
+
fileManagerBucketArn: fileManagerBucket.output.arn,
|
|
127
128
|
primaryDynamodbTableArn: dynamoDbTable.output.arn,
|
|
128
129
|
primaryDynamodbTableName: dynamoDbTable.output.name,
|
|
129
130
|
primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","_CoreCognito","_CoreDynamo","_CoreElasticSearch","_CoreOpenSearch","_CoreEventBus","_CoreFileManager","_CoreVpc","_WatchCommand","_utils","_withServiceManifest","_addServiceManifestTableItem","_constants","random","_featureFlags","_LogDynamo","_variant","_env","_projectName","createCorePulumiApp","projectAppParams","baseApp","createPulumiApp","name","path","config","program","app","deploymentId","RandomId","byteLength","searchEngineType","searchEngineParams","openSearch","getParam","elasticSearch","params","domainName","process","env","AWS_ELASTIC_SEARCH_DOMAIN_NAME","indexPrefix","ELASTIC_SEARCH_INDEX_PREFIX","sharedIndexes","ELASTICSEARCH_SHARED_INDEXES","pulumiResourceNamePrefix","onResource","resource","startsWith","pulumi","addHandler","productionEnvironments","create","DEFAULT_PROD_ENV_NAMES","isProduction","includes","run","protect","legacyConfig","legacy","dynamoDbTable","addModule","CoreDynamo","logDynamoDbTable","LogDynamo","vpcEnabled","vpc","CoreVpc","cognito","CoreCognito","useEmailAsUsername","eventBus","CoreEventBus","bucket","fileManagerBucket","CoreFileManger","OpenSearch","ElasticSearch","featureFlags","newWatchCommand","WatchCommand","hex","addOutputs","region","fileManagerBucketId","output","id","primaryDynamodbTableArn","arn","primaryDynamodbTableName","primaryDynamodbTableHashKey","hashKey","primaryDynamodbTableRangeKey","rangeKey","logDynamodbTableArn","logDynamodbTableName","logDynamodbTableHashKey","logDynamodbTableRangeKey","cognitoUserPoolId","userPool","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","passwordPolicy","cognitoAppClientId","userPoolClient","eventBusName","eventBusArn","tagResources","WbyProjectName","getEnvVariableWebinyProjectName","WbyEnvironment","getEnvVariableWebinyEnv","WbyEnvironmentVariant","getEnvVariableWebinyVariant","withServiceManifest","manifests","dynamoTable","resources","table","tableName","forEach","manifest","addServiceManifestTableItem","addServiceManifest","dynamodbTable"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { createPulumiApp, PulumiAppParam } from \"@webiny/pulumi\";\nimport { CoreCognito } from \"./CoreCognito\";\nimport { CoreDynamo } from \"./CoreDynamo\";\nimport { ElasticSearch } from \"./CoreElasticSearch\";\nimport { OpenSearch } from \"./CoreOpenSearch\";\nimport { CoreEventBus } from \"./CoreEventBus\";\nimport { CoreFileManger } from \"./CoreFileManager\";\nimport { CoreVpc } from \"./CoreVpc\";\nimport { WatchCommand } from \"./WatchCommand\";\nimport { tagResources } from \"~/utils\";\nimport { withServiceManifest } from \"~/utils/withServiceManifest\";\nimport { addServiceManifestTableItem, TableDefinition } from \"~/utils/addServiceManifestTableItem\";\nimport { DEFAULT_PROD_ENV_NAMES } from \"~/constants\";\nimport * as random from \"@pulumi/random\";\nimport { featureFlags } from \"@webiny/feature-flags\";\nimport { LogDynamo } from \"./LogDynamo\";\nimport { getEnvVariableWebinyVariant } from \"~/env/variant\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env\";\nimport { getEnvVariableWebinyProjectName } from \"~/env/projectName\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport interface ElasticsearchConfig {\n domainName: string;\n indexPrefix: string;\n sharedIndexes: boolean;\n}\n\nexport interface OpenSearchConfig {\n domainName: string;\n indexPrefix: string;\n sharedIndexes: boolean;\n}\n\nexport interface CreateCorePulumiAppParams {\n /**\n * Secures against deleting database by accident.\n * By default enabled in production environments.\n */\n protect?: PulumiAppParam<boolean>;\n\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<boolean | Partial<ElasticsearchConfig>>;\n\n /**\n * Enables OpenSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n openSearch?: PulumiAppParam<boolean | Partial<OpenSearchConfig>>;\n\n /**\n * Enables VPC for the application.\n * By default enabled in production environments.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /**\n * Additional settings for backwards compatibility.\n */\n legacy?: PulumiAppParam<CoreAppLegacyConfig>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: CorePulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport interface CoreAppLegacyConfig {\n useEmailAsUsername?: boolean;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n const baseApp = createPulumiApp({\n name: \"core\",\n path: \"apps/core\",\n config: projectAppParams,\n program: async app => {\n const deploymentId = new random.RandomId(\"deploymentId\", { byteLength: 8 });\n\n let searchEngineType: \"openSearch\" | \"elasticSearch\" | null = null;\n let searchEngineParams:\n | CreateCorePulumiAppParams[\"openSearch\"]\n | CreateCorePulumiAppParams[\"elasticSearch\"]\n | null = null;\n\n if (projectAppParams.openSearch) {\n searchEngineParams = app.getParam(projectAppParams.openSearch);\n searchEngineType = \"openSearch\";\n } else if (projectAppParams.elasticSearch) {\n searchEngineParams = app.getParam(projectAppParams.elasticSearch);\n searchEngineType = \"elasticSearch\";\n }\n\n if (searchEngineParams) {\n const params = app.getParam(searchEngineParams);\n if (typeof params === \"object\") {\n if (params.domainName) {\n process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME = params.domainName;\n }\n\n if (params.indexPrefix) {\n process.env.ELASTIC_SEARCH_INDEX_PREFIX = params.indexPrefix;\n }\n\n if (params.sharedIndexes) {\n process.env.ELASTICSEARCH_SHARED_INDEXES = \"true\";\n }\n }\n }\n\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\n // Overrides must be applied via a handler, registered at the very start of the program.\n // By doing this, we're ensuring user's adjustments are not applied to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as unknown as CorePulumiApp);\n });\n }\n\n const productionEnvironments =\n app.params.create.productionEnvironments || DEFAULT_PROD_ENV_NAMES;\n const isProduction = productionEnvironments.includes(app.params.run.env);\n\n const protect = app.getParam(projectAppParams.protect) ?? isProduction;\n const legacyConfig = app.getParam(projectAppParams.legacy) || {};\n\n // Setup DynamoDB table\n const dynamoDbTable = app.addModule(CoreDynamo, { protect });\n const logDynamoDbTable = app.addModule(LogDynamo, { protect });\n\n // Setup VPC\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n const vpc = vpcEnabled ? app.addModule(CoreVpc) : null;\n\n // Setup Cognito\n const cognito = app.addModule(CoreCognito, {\n protect,\n useEmailAsUsername: legacyConfig.useEmailAsUsername ?? false\n });\n\n // Setup event bus\n const eventBus = app.addModule(CoreEventBus);\n\n // Setup file core bucket\n const { bucket: fileManagerBucket } = app.addModule(CoreFileManger, { protect });\n\n let elasticSearch;\n if (searchEngineType === \"openSearch\") {\n elasticSearch = app.addModule(OpenSearch, { protect });\n } else if (searchEngineType === \"elasticSearch\") {\n elasticSearch = app.addModule(ElasticSearch, { protect });\n }\n\n if (featureFlags.newWatchCommand) {\n app.addModule(WatchCommand, {\n deploymentId: deploymentId.hex\n });\n }\n\n app.addOutputs({\n deploymentId: deploymentId.hex,\n region: aws.config.region,\n fileManagerBucketId: fileManagerBucket.output.id,\n primaryDynamodbTableArn: dynamoDbTable.output.arn,\n primaryDynamodbTableName: dynamoDbTable.output.name,\n primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey,\n primaryDynamodbTableRangeKey: dynamoDbTable.output.rangeKey,\n logDynamodbTableArn: logDynamoDbTable.output.arn,\n logDynamodbTableName: logDynamoDbTable.output.name,\n logDynamodbTableHashKey: logDynamoDbTable.output.hashKey,\n logDynamodbTableRangeKey: logDynamoDbTable.output.rangeKey,\n cognitoUserPoolId: cognito.userPool.output.id,\n cognitoUserPoolArn: cognito.userPool.output.arn,\n cognitoUserPoolPasswordPolicy: cognito.userPool.output.passwordPolicy,\n cognitoAppClientId: cognito.userPoolClient.output.id,\n eventBusName: eventBus.output.name,\n eventBusArn: eventBus.output.arn\n });\n\n tagResources({\n WbyProjectName: getEnvVariableWebinyProjectName(),\n WbyEnvironment: getEnvVariableWebinyEnv(),\n WbyEnvironmentVariant: getEnvVariableWebinyVariant()\n });\n\n return {\n dynamoDbTable,\n logDynamoDbTable,\n vpc,\n ...cognito,\n fileManagerBucket,\n eventBus,\n elasticSearch\n };\n }\n });\n\n const app = withServiceManifest(baseApp, manifests => {\n const dynamoTable = baseApp.resources.dynamoDbTable;\n\n const table: TableDefinition = {\n tableName: dynamoTable.output.name,\n hashKey: dynamoTable.output.hashKey,\n rangeKey: dynamoTable.output.rangeKey\n };\n\n manifests.forEach(manifest => addServiceManifestTableItem(baseApp, table, manifest));\n });\n\n app.addHandler(() => {\n app.addServiceManifest({\n name: \"core\",\n manifest: {\n eventBus: {\n arn: baseApp.resources.eventBus.output.arn,\n name: baseApp.resources.eventBus.output.name\n },\n dynamodbTable: {\n arn: baseApp.resources.dynamoDbTable.output.arn,\n name: baseApp.resources.dynamoDbTable.output.name,\n hashKey: baseApp.resources.dynamoDbTable.output.hashKey,\n rangeKey: baseApp.resources.dynamoDbTable.output.rangeKey\n }\n }\n });\n });\n\n return app;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","_CoreCognito","_CoreDynamo","_CoreElasticSearch","_CoreOpenSearch","_CoreEventBus","_CoreFileManager","_CoreVpc","_WatchCommand","_utils","_withServiceManifest","_addServiceManifestTableItem","_constants","random","_featureFlags","_LogDynamo","_variant","_env","_projectName","createCorePulumiApp","projectAppParams","baseApp","createPulumiApp","name","path","config","program","app","deploymentId","RandomId","byteLength","searchEngineType","searchEngineParams","openSearch","getParam","elasticSearch","params","domainName","process","env","AWS_ELASTIC_SEARCH_DOMAIN_NAME","indexPrefix","ELASTIC_SEARCH_INDEX_PREFIX","sharedIndexes","ELASTICSEARCH_SHARED_INDEXES","pulumiResourceNamePrefix","onResource","resource","startsWith","pulumi","addHandler","productionEnvironments","create","DEFAULT_PROD_ENV_NAMES","isProduction","includes","run","protect","legacyConfig","legacy","dynamoDbTable","addModule","CoreDynamo","logDynamoDbTable","LogDynamo","vpcEnabled","vpc","CoreVpc","cognito","CoreCognito","useEmailAsUsername","eventBus","CoreEventBus","bucket","fileManagerBucket","CoreFileManger","undefined","OpenSearch","ElasticSearch","featureFlags","newWatchCommand","WatchCommand","hex","addOutputs","region","fileManagerBucketId","output","id","fileManagerBucketArn","arn","primaryDynamodbTableArn","primaryDynamodbTableName","primaryDynamodbTableHashKey","hashKey","primaryDynamodbTableRangeKey","rangeKey","logDynamodbTableArn","logDynamodbTableName","logDynamodbTableHashKey","logDynamodbTableRangeKey","cognitoUserPoolId","userPool","cognitoUserPoolArn","cognitoUserPoolPasswordPolicy","passwordPolicy","cognitoAppClientId","userPoolClient","eventBusName","eventBusArn","tagResources","WbyProjectName","getEnvVariableWebinyProjectName","WbyEnvironment","getEnvVariableWebinyEnv","WbyEnvironmentVariant","getEnvVariableWebinyVariant","withServiceManifest","manifests","dynamoTable","resources","table","tableName","forEach","manifest","addServiceManifestTableItem","addServiceManifest","dynamodbTable"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiAppParam } from \"@webiny/pulumi\";\nimport { createPulumiApp } from \"@webiny/pulumi\";\nimport { CoreCognito } from \"./CoreCognito\";\nimport { CoreDynamo } from \"./CoreDynamo\";\nimport { ElasticSearch } from \"./CoreElasticSearch\";\nimport { OpenSearch } from \"./CoreOpenSearch\";\nimport { CoreEventBus } from \"./CoreEventBus\";\nimport { CoreFileManger } from \"./CoreFileManager\";\nimport { CoreVpc } from \"./CoreVpc\";\nimport { WatchCommand } from \"./WatchCommand\";\nimport { tagResources } from \"~/utils\";\nimport { withServiceManifest } from \"~/utils/withServiceManifest\";\nimport type { TableDefinition } from \"~/utils/addServiceManifestTableItem\";\nimport { addServiceManifestTableItem } from \"~/utils/addServiceManifestTableItem\";\nimport { DEFAULT_PROD_ENV_NAMES } from \"~/constants\";\nimport * as random from \"@pulumi/random\";\nimport { featureFlags } from \"@webiny/feature-flags\";\nimport { LogDynamo } from \"./LogDynamo\";\nimport { getEnvVariableWebinyVariant } from \"~/env/variant\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env\";\nimport { getEnvVariableWebinyProjectName } from \"~/env/projectName\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport interface ElasticsearchConfig {\n domainName: string;\n indexPrefix: string;\n sharedIndexes: boolean;\n}\n\nexport interface OpenSearchConfig {\n domainName: string;\n indexPrefix: string;\n sharedIndexes: boolean;\n}\n\nexport interface CreateCorePulumiAppParams {\n /**\n * Secures against deleting database by accident.\n * By default enabled in production environments.\n */\n protect?: PulumiAppParam<boolean>;\n\n /**\n * Enables ElasticSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n elasticSearch?: PulumiAppParam<boolean | Partial<ElasticsearchConfig>>;\n\n /**\n * Enables OpenSearch infrastructure.\n * Note that it requires also changes in application code.\n */\n openSearch?: PulumiAppParam<boolean | Partial<OpenSearchConfig>>;\n\n /**\n * Enables VPC for the application.\n * By default enabled in production environments.\n */\n vpc?: PulumiAppParam<boolean>;\n\n /**\n * Additional settings for backwards compatibility.\n */\n legacy?: PulumiAppParam<CoreAppLegacyConfig>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: CorePulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport interface CoreAppLegacyConfig {\n useEmailAsUsername?: boolean;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n const baseApp = createPulumiApp({\n name: \"core\",\n path: \"apps/core\",\n config: projectAppParams,\n program: async app => {\n const deploymentId = new random.RandomId(\"deploymentId\", { byteLength: 8 });\n\n let searchEngineType: \"openSearch\" | \"elasticSearch\" | null = null;\n let searchEngineParams:\n | CreateCorePulumiAppParams[\"openSearch\"]\n | CreateCorePulumiAppParams[\"elasticSearch\"]\n | null = null;\n\n if (projectAppParams.openSearch) {\n searchEngineParams = app.getParam(projectAppParams.openSearch);\n searchEngineType = \"openSearch\";\n } else if (projectAppParams.elasticSearch) {\n searchEngineParams = app.getParam(projectAppParams.elasticSearch);\n searchEngineType = \"elasticSearch\";\n }\n\n if (searchEngineParams) {\n const params = app.getParam(searchEngineParams);\n if (typeof params === \"object\") {\n if (params.domainName) {\n process.env.AWS_ELASTIC_SEARCH_DOMAIN_NAME = params.domainName;\n }\n\n if (params.indexPrefix) {\n process.env.ELASTIC_SEARCH_INDEX_PREFIX = params.indexPrefix;\n }\n\n if (params.sharedIndexes) {\n process.env.ELASTICSEARCH_SHARED_INDEXES = \"true\";\n }\n }\n }\n\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\n // Overrides must be applied via a handler, registered at the very start of the program.\n // By doing this, we're ensuring user's adjustments are not applied to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as unknown as CorePulumiApp);\n });\n }\n\n const productionEnvironments =\n app.params.create.productionEnvironments || DEFAULT_PROD_ENV_NAMES;\n const isProduction = productionEnvironments.includes(app.params.run.env);\n\n const protect = app.getParam(projectAppParams.protect) ?? isProduction;\n const legacyConfig = app.getParam(projectAppParams.legacy) || {};\n\n // Setup DynamoDB table\n const dynamoDbTable = app.addModule(CoreDynamo, { protect });\n const logDynamoDbTable = app.addModule(LogDynamo, { protect });\n\n // Setup VPC\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n const vpc = vpcEnabled ? app.addModule(CoreVpc) : null;\n\n // Setup Cognito\n const cognito = app.addModule(CoreCognito, {\n protect,\n useEmailAsUsername: legacyConfig.useEmailAsUsername ?? false\n });\n\n // Setup event bus\n const eventBus = app.addModule(CoreEventBus);\n\n // Setup file core bucket\n const { bucket: fileManagerBucket } = app.addModule(CoreFileManger, { protect });\n\n let elasticSearch = undefined;\n if (searchEngineType === \"openSearch\") {\n elasticSearch = app.addModule(OpenSearch, { protect });\n } else if (searchEngineType === \"elasticSearch\") {\n elasticSearch = app.addModule(ElasticSearch, { protect });\n }\n\n if (featureFlags.newWatchCommand) {\n app.addModule(WatchCommand, {\n deploymentId: deploymentId.hex\n });\n }\n\n app.addOutputs({\n deploymentId: deploymentId.hex,\n region: aws.config.region,\n fileManagerBucketId: fileManagerBucket.output.id,\n fileManagerBucketArn: fileManagerBucket.output.arn,\n primaryDynamodbTableArn: dynamoDbTable.output.arn,\n primaryDynamodbTableName: dynamoDbTable.output.name,\n primaryDynamodbTableHashKey: dynamoDbTable.output.hashKey,\n primaryDynamodbTableRangeKey: dynamoDbTable.output.rangeKey,\n logDynamodbTableArn: logDynamoDbTable.output.arn,\n logDynamodbTableName: logDynamoDbTable.output.name,\n logDynamodbTableHashKey: logDynamoDbTable.output.hashKey,\n logDynamodbTableRangeKey: logDynamoDbTable.output.rangeKey,\n cognitoUserPoolId: cognito.userPool.output.id,\n cognitoUserPoolArn: cognito.userPool.output.arn,\n cognitoUserPoolPasswordPolicy: cognito.userPool.output.passwordPolicy,\n cognitoAppClientId: cognito.userPoolClient.output.id,\n eventBusName: eventBus.output.name,\n eventBusArn: eventBus.output.arn\n });\n\n tagResources({\n WbyProjectName: getEnvVariableWebinyProjectName(),\n WbyEnvironment: getEnvVariableWebinyEnv(),\n WbyEnvironmentVariant: getEnvVariableWebinyVariant()\n });\n\n return {\n dynamoDbTable,\n logDynamoDbTable,\n vpc,\n ...cognito,\n fileManagerBucket,\n eventBus,\n elasticSearch\n };\n }\n });\n\n const app = withServiceManifest(baseApp, manifests => {\n const dynamoTable = baseApp.resources.dynamoDbTable;\n\n const table: TableDefinition = {\n tableName: dynamoTable.output.name,\n hashKey: dynamoTable.output.hashKey,\n rangeKey: dynamoTable.output.rangeKey\n };\n\n manifests.forEach(manifest => addServiceManifestTableItem(baseApp, table, manifest));\n });\n\n app.addHandler(() => {\n app.addServiceManifest({\n name: \"core\",\n manifest: {\n eventBus: {\n arn: baseApp.resources.eventBus.output.arn,\n name: baseApp.resources.eventBus.output.name\n },\n dynamodbTable: {\n arn: baseApp.resources.dynamoDbTable.output.arn,\n name: baseApp.resources.dynamoDbTable.output.name,\n hashKey: baseApp.resources.dynamoDbTable.output.hashKey,\n rangeKey: baseApp.resources.dynamoDbTable.output.rangeKey\n }\n }\n });\n });\n\n return app;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as aws from "@pulumi/aws";
|
|
2
|
-
import { PulumiApp } from "@webiny/pulumi";
|
|
2
|
+
import type { PulumiApp } from "@webiny/pulumi";
|
|
3
3
|
export declare function createPublicAppBucket(app: PulumiApp, name: string): {
|
|
4
4
|
bucket: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucket").Bucket>;
|
|
5
5
|
origin: aws.types.input.cloudfront.DistributionOrigin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","_api","_awsRegion","createPublicAppBucket","app","name","bucket","addResource","s3","Bucket","config","acl","CannedAcl","PublicRead","forceDestroy","website","indexDocument","errorDocument","origin","originId","output","arn","domainName","websiteEndpoint","customOriginConfig","originProtocolPolicy","httpPort","httpsPort","originSslProtocols","createPrivateAppBucket","api","getModule","ApiOutput","Private","originIdentity","cloudfront","OriginAccessIdentity","apply","getEnvVariableAwsRegion","s3OriginConfig","originAccessIdentity","cloudfrontAccessIdentityPath","bucketPublicAccessBlock","BucketPublicAccessBlock","id","blockPublicAcls","blockPublicPolicy","ignorePublicAcls","restrictPublicBuckets","bucketPolicy","BucketPolicy","policy","Version","Statement","statements","Effect","Principal","AWS","iamArn","Action","Resource","graphqlLambdaRole"],"sources":["createAppBucket.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport { PulumiApp } from \"@webiny/pulumi\";\nimport { ApiOutput } from \"~/apps/api\";\nimport { getEnvVariableAwsRegion } from \"~/env/awsRegion\";\n\nexport function createPublicAppBucket(app: PulumiApp, name: string) {\n const bucket = app.addResource(aws.s3.Bucket, {\n name: name,\n config: {\n acl: aws.s3.CannedAcl.PublicRead,\n forceDestroy: true,\n website: {\n indexDocument: \"index.html\",\n errorDocument: \"_NOT_FOUND_PAGE_/index.html\"\n }\n }\n });\n\n const origin: aws.types.input.cloudfront.DistributionOrigin = {\n originId: bucket.output.arn,\n domainName: bucket.output.websiteEndpoint,\n customOriginConfig: {\n originProtocolPolicy: \"http-only\",\n httpPort: 80,\n httpsPort: 443,\n originSslProtocols: [\"TLSv1.2\"]\n }\n };\n\n return {\n bucket,\n origin\n };\n}\n\n// Forces S3 buckets to be available only through a cloudfront distribution.\n// Requires `ApiOutput` module to be loaded.\nexport function createPrivateAppBucket(app: PulumiApp, name: string) {\n const api = app.getModule(ApiOutput);\n\n const bucket = app.addResource(aws.s3.Bucket, {\n name: name,\n config: {\n acl: aws.s3.CannedAcl.Private,\n forceDestroy: true\n }\n });\n\n // Origin Identity is a kind of AWS user that represents Cloudfront distribution\n // We can add IAM policies to it later, to allow accessing private S3 bucket\n const originIdentity = app.addResource(aws.cloudfront.OriginAccessIdentity, {\n name: `${name}-origin-identity`,\n config: {}\n });\n\n const origin: aws.types.input.cloudfront.DistributionOrigin = {\n originId: bucket.output.arn,\n domainName: bucket.output.bucket.apply(\n // We need to create a regional domain name. Otherwise, we'll run into the following issue:\n // https://aws.amazon.com/premiumsupport/knowledge-center/s3-http-307-response/\n name => `${name}.s3.${getEnvVariableAwsRegion()}.amazonaws.com`\n ),\n s3OriginConfig: {\n originAccessIdentity: originIdentity.output.cloudfrontAccessIdentityPath\n }\n };\n\n // block any public access\n const bucketPublicAccessBlock = app.addResource(aws.s3.BucketPublicAccessBlock, {\n name: `${name}-bucket-block-access`,\n config: {\n bucket: bucket.output.id,\n blockPublicAcls: true,\n blockPublicPolicy: true,\n ignorePublicAcls: true,\n restrictPublicBuckets: true\n }\n });\n\n // Create an IAM policy to allow access to S3 bucket from cloudfront\n const bucketPolicy = app.addResource(aws.s3.BucketPolicy, {\n name: `${name}-bucket-policy`,\n config: {\n bucket: bucket.output.bucket,\n policy: {\n Version: \"2012-10-17\",\n Statement: bucket.output.arn.apply(arn => {\n const statements: aws.iam.PolicyStatement[] = [\n {\n Effect: \"Allow\",\n Principal: { AWS: originIdentity.output.iamArn },\n // we need GetObject to retrieve objects from S3\n // and ListBucket allows to properly handle non-existing files (404)\n Action: [\"s3:ListBucket\", \"s3:GetObject\"],\n Resource: [`${arn}`, `${arn}/*`]\n },\n {\n Effect: \"Allow\",\n Principal: {\n AWS: api.graphqlLambdaRole\n },\n Action: [\n \"s3:GetObjectAcl\",\n \"s3:DeleteObject\",\n \"s3:PutObjectAcl\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [`${arn}`, `${arn}/*`]\n }\n ];\n\n return statements;\n })\n }\n }\n });\n\n return {\n bucket,\n originIdentity,\n origin,\n bucketPublicAccessBlock,\n bucketPolicy\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","_api","_awsRegion","createPublicAppBucket","app","name","bucket","addResource","s3","Bucket","config","acl","CannedAcl","PublicRead","forceDestroy","website","indexDocument","errorDocument","origin","originId","output","arn","domainName","websiteEndpoint","customOriginConfig","originProtocolPolicy","httpPort","httpsPort","originSslProtocols","createPrivateAppBucket","api","getModule","ApiOutput","Private","originIdentity","cloudfront","OriginAccessIdentity","apply","getEnvVariableAwsRegion","s3OriginConfig","originAccessIdentity","cloudfrontAccessIdentityPath","bucketPublicAccessBlock","BucketPublicAccessBlock","id","blockPublicAcls","blockPublicPolicy","ignorePublicAcls","restrictPublicBuckets","bucketPolicy","BucketPolicy","policy","Version","Statement","statements","Effect","Principal","AWS","iamArn","Action","Resource","graphqlLambdaRole"],"sources":["createAppBucket.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiApp } from \"@webiny/pulumi\";\nimport { ApiOutput } from \"~/apps/api\";\nimport { getEnvVariableAwsRegion } from \"~/env/awsRegion\";\n\nexport function createPublicAppBucket(app: PulumiApp, name: string) {\n const bucket = app.addResource(aws.s3.Bucket, {\n name: name,\n config: {\n acl: aws.s3.CannedAcl.PublicRead,\n forceDestroy: true,\n website: {\n indexDocument: \"index.html\",\n errorDocument: \"_NOT_FOUND_PAGE_/index.html\"\n }\n }\n });\n\n const origin: aws.types.input.cloudfront.DistributionOrigin = {\n originId: bucket.output.arn,\n domainName: bucket.output.websiteEndpoint,\n customOriginConfig: {\n originProtocolPolicy: \"http-only\",\n httpPort: 80,\n httpsPort: 443,\n originSslProtocols: [\"TLSv1.2\"]\n }\n };\n\n return {\n bucket,\n origin\n };\n}\n\n// Forces S3 buckets to be available only through a cloudfront distribution.\n// Requires `ApiOutput` module to be loaded.\nexport function createPrivateAppBucket(app: PulumiApp, name: string) {\n const api = app.getModule(ApiOutput);\n\n const bucket = app.addResource(aws.s3.Bucket, {\n name: name,\n config: {\n acl: aws.s3.CannedAcl.Private,\n forceDestroy: true\n }\n });\n\n // Origin Identity is a kind of AWS user that represents Cloudfront distribution\n // We can add IAM policies to it later, to allow accessing private S3 bucket\n const originIdentity = app.addResource(aws.cloudfront.OriginAccessIdentity, {\n name: `${name}-origin-identity`,\n config: {}\n });\n\n const origin: aws.types.input.cloudfront.DistributionOrigin = {\n originId: bucket.output.arn,\n domainName: bucket.output.bucket.apply(\n // We need to create a regional domain name. Otherwise, we'll run into the following issue:\n // https://aws.amazon.com/premiumsupport/knowledge-center/s3-http-307-response/\n name => `${name}.s3.${getEnvVariableAwsRegion()}.amazonaws.com`\n ),\n s3OriginConfig: {\n originAccessIdentity: originIdentity.output.cloudfrontAccessIdentityPath\n }\n };\n\n // block any public access\n const bucketPublicAccessBlock = app.addResource(aws.s3.BucketPublicAccessBlock, {\n name: `${name}-bucket-block-access`,\n config: {\n bucket: bucket.output.id,\n blockPublicAcls: true,\n blockPublicPolicy: true,\n ignorePublicAcls: true,\n restrictPublicBuckets: true\n }\n });\n\n // Create an IAM policy to allow access to S3 bucket from cloudfront\n const bucketPolicy = app.addResource(aws.s3.BucketPolicy, {\n name: `${name}-bucket-policy`,\n config: {\n bucket: bucket.output.bucket,\n policy: {\n Version: \"2012-10-17\",\n Statement: bucket.output.arn.apply(arn => {\n const statements: aws.iam.PolicyStatement[] = [\n {\n Effect: \"Allow\",\n Principal: { AWS: originIdentity.output.iamArn },\n // we need GetObject to retrieve objects from S3\n // and ListBucket allows to properly handle non-existing files (404)\n Action: [\"s3:ListBucket\", \"s3:GetObject\"],\n Resource: [`${arn}`, `${arn}/*`]\n },\n {\n Effect: \"Allow\",\n Principal: {\n AWS: api.graphqlLambdaRole\n },\n Action: [\n \"s3:GetObjectAcl\",\n \"s3:DeleteObject\",\n \"s3:PutObjectAcl\",\n \"s3:PutObject\",\n \"s3:GetObject\",\n \"s3:ListBucket\"\n ],\n Resource: [`${arn}`, `${arn}/*`]\n }\n ];\n\n return statements;\n })\n }\n }\n });\n\n return {\n bucket,\n originIdentity,\n origin,\n bucketPublicAccessBlock,\n bucketPolicy\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/apps/customDomain.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Input } from "@pulumi/pulumi";
|
|
2
|
-
import * as aws from "@pulumi/aws";
|
|
3
|
-
import { PulumiAppResource } from "@webiny/pulumi";
|
|
1
|
+
import type { Input } from "@pulumi/pulumi";
|
|
2
|
+
import type * as aws from "@pulumi/aws";
|
|
3
|
+
import type { PulumiAppResource } from "@webiny/pulumi";
|
|
4
4
|
export interface CustomDomainParams {
|
|
5
5
|
domains: Input<string[]>;
|
|
6
6
|
acmCertificateArn: Input<string>;
|
package/apps/customDomain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["applyCustomDomain","cloudfront","params","config","aliases","domains","viewerCertificate","acmCertificateArn","sslSupportMethod"],"sources":["customDomain.ts"],"sourcesContent":["import { Input } from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiAppResource } from \"@webiny/pulumi\";\n\nexport interface CustomDomainParams {\n domains: Input<string[]>;\n acmCertificateArn: Input<string>;\n sslSupportMethod?: Input<string>;\n}\n\nexport function applyCustomDomain(\n cloudfront: PulumiAppResource<typeof aws.cloudfront.Distribution>,\n params: CustomDomainParams\n) {\n cloudfront.config.aliases(params.domains);\n\n cloudfront.config.viewerCertificate({\n acmCertificateArn: params.acmCertificateArn,\n sslSupportMethod: params.sslSupportMethod ?? \"sni-only\"\n });\n}\n"],"mappings":";;;;;;AAUO,SAASA,iBAAiBA,CAC7BC,UAAiE,EACjEC,MAA0B,EAC5B;EACED,UAAU,CAACE,MAAM,CAACC,OAAO,CAACF,MAAM,CAACG,OAAO,CAAC;EAEzCJ,UAAU,CAACE,MAAM,CAACG,iBAAiB,CAAC;IAChCC,iBAAiB,EAAEL,MAAM,CAACK,iBAAiB;IAC3CC,gBAAgB,EAAEN,MAAM,CAACM,gBAAgB,IAAI;EACjD,CAAC,CAAC;AACN","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["applyCustomDomain","cloudfront","params","config","aliases","domains","viewerCertificate","acmCertificateArn","sslSupportMethod"],"sources":["customDomain.ts"],"sourcesContent":["import type { Input } from \"@pulumi/pulumi\";\nimport type * as aws from \"@pulumi/aws\";\nimport type { PulumiAppResource } from \"@webiny/pulumi\";\n\nexport interface CustomDomainParams {\n domains: Input<string[]>;\n acmCertificateArn: Input<string>;\n sslSupportMethod?: Input<string>;\n}\n\nexport function applyCustomDomain(\n cloudfront: PulumiAppResource<typeof aws.cloudfront.Distribution>,\n params: CustomDomainParams\n) {\n cloudfront.config.aliases(params.domains);\n\n cloudfront.config.viewerCertificate({\n acmCertificateArn: params.acmCertificateArn,\n sslSupportMethod: params.sslSupportMethod ?? \"sni-only\"\n });\n}\n"],"mappings":";;;;;;AAUO,SAASA,iBAAiBA,CAC7BC,UAAiE,EACjEC,MAA0B,EAC5B;EACED,UAAU,CAACE,MAAM,CAACC,OAAO,CAACF,MAAM,CAACG,OAAO,CAAC;EAEzCJ,UAAU,CAACE,MAAM,CAACG,iBAAiB,CAAC;IAChCC,iBAAiB,EAAEL,MAAM,CAACK,iBAAiB;IAC3CC,gBAAgB,EAAEN,MAAM,CAACM,gBAAgB,IAAI;EACjD,CAAC,CAAC;AACN","ignoreList":[]}
|
package/apps/lambdaUtils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as pulumi from "@pulumi/pulumi";
|
|
1
|
+
import type * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
import * as aws from "@pulumi/aws";
|
|
3
|
-
import { PulumiApp } from "@webiny/pulumi";
|
|
3
|
+
import type { PulumiApp } from "@webiny/pulumi";
|
|
4
4
|
export * from "../utils/lambdaEnvVariables";
|
|
5
5
|
interface LambdaRoleParams {
|
|
6
6
|
name: string;
|
|
@@ -8,3 +8,4 @@ interface LambdaRoleParams {
|
|
|
8
8
|
executionRole?: pulumi.Input<string>;
|
|
9
9
|
}
|
|
10
10
|
export declare function createLambdaRole(app: PulumiApp, params: LambdaRoleParams): import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
|
|
11
|
+
export declare const createLambdaRoleWithoutVpc: (app: PulumiApp, params: LambdaRoleParams) => import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
|
package/apps/lambdaUtils.js
CHANGED
|
@@ -5,10 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
var _exportNames = {
|
|
8
|
-
createLambdaRole: true
|
|
8
|
+
createLambdaRole: true,
|
|
9
|
+
createLambdaRoleWithoutVpc: true
|
|
9
10
|
};
|
|
10
11
|
exports.createLambdaRole = createLambdaRole;
|
|
12
|
+
exports.createLambdaRoleWithoutVpc = void 0;
|
|
11
13
|
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
14
|
+
var _common = require("./common");
|
|
12
15
|
var _lambdaEnvVariables = require("../utils/lambdaEnvVariables");
|
|
13
16
|
Object.keys(_lambdaEnvVariables).forEach(function (key) {
|
|
14
17
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -21,8 +24,7 @@ Object.keys(_lambdaEnvVariables).forEach(function (key) {
|
|
|
21
24
|
}
|
|
22
25
|
});
|
|
23
26
|
});
|
|
24
|
-
|
|
25
|
-
function createLambdaRole(app, params) {
|
|
27
|
+
const createLambdaRoleWithoutExecution = (app, params) => {
|
|
26
28
|
const role = app.addResource(aws.iam.Role, {
|
|
27
29
|
name: params.name,
|
|
28
30
|
config: {
|
|
@@ -60,6 +62,10 @@ function createLambdaRole(app, params) {
|
|
|
60
62
|
}
|
|
61
63
|
});
|
|
62
64
|
}
|
|
65
|
+
return role;
|
|
66
|
+
};
|
|
67
|
+
function createLambdaRole(app, params) {
|
|
68
|
+
const role = createLambdaRoleWithoutExecution(app, params);
|
|
63
69
|
|
|
64
70
|
// Add default execution role.
|
|
65
71
|
const vpc = app.getModule(_common.VpcConfig);
|
|
@@ -72,5 +78,17 @@ function createLambdaRole(app, params) {
|
|
|
72
78
|
});
|
|
73
79
|
return role;
|
|
74
80
|
}
|
|
81
|
+
const createLambdaRoleWithoutVpc = (app, params) => {
|
|
82
|
+
const role = createLambdaRoleWithoutExecution(app, params);
|
|
83
|
+
app.addResource(aws.iam.RolePolicyAttachment, {
|
|
84
|
+
name: `${params.name}-default-execution-role`,
|
|
85
|
+
config: {
|
|
86
|
+
role: role.output,
|
|
87
|
+
policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return role;
|
|
91
|
+
};
|
|
92
|
+
exports.createLambdaRoleWithoutVpc = createLambdaRoleWithoutVpc;
|
|
75
93
|
|
|
76
94
|
//# sourceMappingURL=lambdaUtils.js.map
|
package/apps/lambdaUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","_lambdaEnvVariables","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","_common","_lambdaEnvVariables","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","createLambdaRoleWithoutExecution","app","params","role","addResource","iam","Role","name","config","assumeRolePolicy","Version","Statement","Action","Principal","Service","Effect","meta","isLambdaFunctionRole","policy","RolePolicyAttachment","output","policyArn","arn","executionRole","createLambdaRole","vpc","getModule","VpcConfig","enabled","apply","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","AWSLambdaBasicExecutionRole","createLambdaRoleWithoutVpc"],"sources":["lambdaUtils.ts"],"sourcesContent":["import type * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport type { PulumiApp } from \"@webiny/pulumi\";\nimport { VpcConfig } from \"./common\";\n\nexport * from \"../utils/lambdaEnvVariables\";\n\ninterface LambdaRoleParams {\n name: string;\n policy?: pulumi.Output<aws.iam.Policy>;\n executionRole?: pulumi.Input<string>;\n}\n\nconst createLambdaRoleWithoutExecution = (app: PulumiApp, params: LambdaRoleParams) => {\n const role = app.addResource(aws.iam.Role, {\n name: params.name,\n config: {\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: {\n Service: \"lambda.amazonaws.com\"\n },\n Effect: \"Allow\"\n }\n ]\n }\n },\n meta: { isLambdaFunctionRole: true }\n });\n\n if (params.policy) {\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-policy`,\n config: {\n role: role.output,\n policyArn: params.policy.arn\n }\n });\n }\n\n if (params.executionRole) {\n // If execution role is set, use it.\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-execution-role`,\n config: {\n role: role.output,\n policyArn: params.executionRole\n }\n });\n }\n return role;\n};\n\nexport function createLambdaRole(app: PulumiApp, params: LambdaRoleParams) {\n const role = createLambdaRoleWithoutExecution(app, params);\n\n // Add default execution role.\n const vpc = app.getModule(VpcConfig);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-default-execution-role`,\n config: {\n role: role.output,\n policyArn: vpc.enabled.apply(enabled =>\n enabled\n ? aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n : aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n )\n }\n });\n\n return role;\n}\n\nexport const createLambdaRoleWithoutVpc = (app: PulumiApp, params: LambdaRoleParams) => {\n const role = createLambdaRoleWithoutExecution(app, params);\n\n app.addResource(aws.iam.RolePolicyAttachment, {\n name: `${params.name}-default-execution-role`,\n config: {\n role: role.output,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaBasicExecutionRole\n }\n });\n\n return role;\n};\n"],"mappings":";;;;;;;;;;;;AACA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,mBAAA,GAAAF,OAAA;AAAAG,MAAA,CAAAC,IAAA,CAAAF,mBAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,mBAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,mBAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAQA,MAAMS,gCAAgC,GAAGA,CAACC,GAAc,EAAEC,MAAwB,KAAK;EACnF,MAAMC,IAAI,GAAGF,GAAG,CAACG,WAAW,CAACrB,GAAG,CAACsB,GAAG,CAACC,IAAI,EAAE;IACvCC,IAAI,EAAEL,MAAM,CAACK,IAAI;IACjBC,MAAM,EAAE;MACJC,gBAAgB,EAAE;QACdC,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIC,MAAM,EAAE,gBAAgB;UACxBC,SAAS,EAAE;YACPC,OAAO,EAAE;UACb,CAAC;UACDC,MAAM,EAAE;QACZ,CAAC;MAET;IACJ,CAAC;IACDC,IAAI,EAAE;MAAEC,oBAAoB,EAAE;IAAK;EACvC,CAAC,CAAC;EAEF,IAAIf,MAAM,CAACgB,MAAM,EAAE;IACfjB,GAAG,CAACG,WAAW,CAACrB,GAAG,CAACsB,GAAG,CAACc,oBAAoB,EAAE;MAC1CZ,IAAI,EAAE,GAAGL,MAAM,CAACK,IAAI,SAAS;MAC7BC,MAAM,EAAE;QACJL,IAAI,EAAEA,IAAI,CAACiB,MAAM;QACjBC,SAAS,EAAEnB,MAAM,CAACgB,MAAM,CAACI;MAC7B;IACJ,CAAC,CAAC;EACN;EAEA,IAAIpB,MAAM,CAACqB,aAAa,EAAE;IACtB;IACAtB,GAAG,CAACG,WAAW,CAACrB,GAAG,CAACsB,GAAG,CAACc,oBAAoB,EAAE;MAC1CZ,IAAI,EAAE,GAAGL,MAAM,CAACK,IAAI,iBAAiB;MACrCC,MAAM,EAAE;QACJL,IAAI,EAAEA,IAAI,CAACiB,MAAM;QACjBC,SAAS,EAAEnB,MAAM,CAACqB;MACtB;IACJ,CAAC,CAAC;EACN;EACA,OAAOpB,IAAI;AACf,CAAC;AAEM,SAASqB,gBAAgBA,CAACvB,GAAc,EAAEC,MAAwB,EAAE;EACvE,MAAMC,IAAI,GAAGH,gCAAgC,CAACC,GAAG,EAAEC,MAAM,CAAC;;EAE1D;EACA,MAAMuB,GAAG,GAAGxB,GAAG,CAACyB,SAAS,CAACC,iBAAS,CAAC;EAEpC1B,GAAG,CAACG,WAAW,CAACrB,GAAG,CAACsB,GAAG,CAACc,oBAAoB,EAAE;IAC1CZ,IAAI,EAAE,GAAGL,MAAM,CAACK,IAAI,yBAAyB;IAC7CC,MAAM,EAAE;MACJL,IAAI,EAAEA,IAAI,CAACiB,MAAM;MACjBC,SAAS,EAAEI,GAAG,CAACG,OAAO,CAACC,KAAK,CAACD,OAAO,IAChCA,OAAO,GACD7C,GAAG,CAACsB,GAAG,CAACyB,aAAa,CAACC,+BAA+B,GACrDhD,GAAG,CAACsB,GAAG,CAACyB,aAAa,CAACE,2BAChC;IACJ;EACJ,CAAC,CAAC;EAEF,OAAO7B,IAAI;AACf;AAEO,MAAM8B,0BAA0B,GAAGA,CAAChC,GAAc,EAAEC,MAAwB,KAAK;EACpF,MAAMC,IAAI,GAAGH,gCAAgC,CAACC,GAAG,EAAEC,MAAM,CAAC;EAE1DD,GAAG,CAACG,WAAW,CAACrB,GAAG,CAACsB,GAAG,CAACc,oBAAoB,EAAE;IAC1CZ,IAAI,EAAE,GAAGL,MAAM,CAACK,IAAI,yBAAyB;IAC7CC,MAAM,EAAE;MACJL,IAAI,EAAEA,IAAI,CAACiB,MAAM;MACjBC,SAAS,EAAEtC,GAAG,CAACsB,GAAG,CAACyB,aAAa,CAACE;IACrC;EACJ,CAAC,CAAC;EAEF,OAAO7B,IAAI;AACf,CAAC;AAACP,OAAA,CAAAqC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as aws from "@pulumi/aws";
|
|
2
|
-
import { PulumiAppParam, PulumiAppParamCallback } from "@webiny/pulumi";
|
|
3
|
-
import { CustomDomainParams } from "../customDomain";
|
|
2
|
+
import type { PulumiAppParam, PulumiAppParamCallback } from "@webiny/pulumi";
|
|
3
|
+
import type { CustomDomainParams } from "../customDomain";
|
|
4
4
|
export type ReactPulumiApp = ReturnType<typeof createReactPulumiApp>;
|
|
5
5
|
export interface CreateReactPulumiAppParams {
|
|
6
6
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","pulumi","_pulumi2","_utils","_createAppBucket","_customDomain","_withServiceManifest","_","_variant","_env","_projectName","createReactPulumiApp","projectAppParams","app","createPulumiApp","name","path","folder","config","program","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","core","addModule","CoreOutput","ApiOutput","addHandler","bucket","createPrivateAppBucket","cloudfront","addResource","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","opts","ignoreChanges","domains","applyCustomDomain","addOutput","output","id","addDomainsUrlsOutputs","cloudfrontDistribution","map","distributionDomain","distributionUrl","usedDomain","usedUrl","tagResources","WbyAppName","WbyProjectName","getEnvVariableWebinyProjectName","WbyEnvironment","getEnvVariableWebinyEnv","WbyEnvironmentVariant","getEnvVariableWebinyVariant","dynamodb","TableItem","tableName","primaryDynamodbTableName","hashKey","primaryDynamodbTableHashKey","rangeKey","primaryDynamodbTableRangeKey","apply","key","item","interpolate","domainName","value","withServiceManifest","exports"],"sources":["createReactPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { addDomainsUrlsOutputs, tagResources } from \"~/utils\";\nimport { createPrivateAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { withServiceManifest } from \"~/utils/withServiceManifest\";\nimport { ApiOutput, CoreOutput } from \"~/apps\";\nimport { getEnvVariableWebinyVariant } from \"~/env/variant\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env\";\nimport { getEnvVariableWebinyProjectName } from \"~/env/projectName\";\n\nexport type ReactPulumiApp = ReturnType<typeof createReactPulumiApp>;\n\nexport interface CreateReactPulumiAppParams {\n /**\n * A name of the app, e.g., \"user-area\"\n */\n name: string;\n\n /**\n * A folder where the app is located, e.g., \"apps/user-area\"\n */\n folder: string;\n\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: ReactPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport const createReactPulumiApp = (projectAppParams: CreateReactPulumiAppParams) => {\n const app = createPulumiApp({\n name: projectAppParams.name,\n path: projectAppParams.folder,\n config: projectAppParams,\n program: async app => {\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\n const { name } = projectAppParams;\n\n // Register core output as a module available for all other modules\n const core = app.addModule(CoreOutput);\n app.addModule(ApiOutput);\n\n // Overrides must be applied via a handler, registered at the very start of the program.\n // By doing this, we're ensuring user's adjustments are not applied to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as unknown as ReactPulumiApp);\n });\n }\n\n const bucket = createPrivateAppBucket(app, `${name}-app`);\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: `${name}-app-cdn`,\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n },\n opts: {\n // We are ignoring changes to the \"staging\" property. This is because of the following.\n // With the 5.41.0 release of Webiny, we also upgraded Pulumi to v6. This introduced a change\n // with how Cloudfront distributions are deployed, where Pulumi now also controls the new\n // `staging` property.\n // If not set, Pulumi will default it to `false`. Which is fine, but, the problem is\n // that, because this property did not exist before, it will always be considered as a change\n // upon deployment.\n // We might think this is fine, but, the problem is that a change in this property causes\n // a full replacement of the Cloudfront distribution, which is not acceptable. Especially\n // if a custom domain has already been associated with the distribution. This then would\n // require the user to disassociate the domain, wait for the distribution to be replaced,\n // and then re-associate the domain. This is not a good experience.\n ignoreChanges: [\"staging\"]\n }\n });\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\n }\n\n app.addOutput(\"appStorage\", bucket.bucket.output.id);\n\n app.addHandler(() => {\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: cloudfront,\n map: {\n distributionDomain: \"cloudfrontAppDomain\",\n distributionUrl: \"cloudfrontAppUrl\",\n usedDomain: \"appDomain\",\n usedUrl: \"appUrl\"\n }\n });\n });\n\n tagResources({\n WbyAppName: name,\n WbyProjectName: getEnvVariableWebinyProjectName(),\n WbyEnvironment: getEnvVariableWebinyEnv(),\n WbyEnvironmentVariant: getEnvVariableWebinyVariant()\n });\n\n /**\n * We need to store the appUrl to the admin settings item in the dynamodb\n */\n app.addResource(aws.dynamodb.TableItem, {\n name: \"adminSettings\",\n config: {\n tableName: core.primaryDynamodbTableName,\n hashKey: core.primaryDynamodbTableHashKey,\n rangeKey: pulumi\n .output(core.primaryDynamodbTableRangeKey)\n .apply(key => key || \"SK\"),\n item: pulumi.interpolate`{\n \"PK\": {\"S\": \"ADMIN#SETTINGS\"},\n \"SK\": {\"S\": \"default\"},\n \"data\": {\n \"M\": {\n \"appUrl\": {\n \"S\": \"${cloudfront.output.domainName.apply(\n value => `https://${value}`\n )}\"\n }\n }\n }\n }`\n }\n });\n\n return {\n ...bucket,\n cloudfront\n };\n }\n });\n\n return withServiceManifest(app);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","pulumi","_pulumi2","_utils","_createAppBucket","_customDomain","_withServiceManifest","_","_variant","_env","_projectName","createReactPulumiApp","projectAppParams","app","createPulumiApp","name","path","folder","config","program","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","core","addModule","CoreOutput","ApiOutput","addHandler","bucket","createPrivateAppBucket","cloudfront","addResource","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","opts","ignoreChanges","domains","applyCustomDomain","addOutput","output","id","addDomainsUrlsOutputs","cloudfrontDistribution","map","distributionDomain","distributionUrl","usedDomain","usedUrl","tagResources","WbyAppName","WbyProjectName","getEnvVariableWebinyProjectName","WbyEnvironment","getEnvVariableWebinyEnv","WbyEnvironmentVariant","getEnvVariableWebinyVariant","dynamodb","TableItem","tableName","primaryDynamodbTableName","hashKey","primaryDynamodbTableHashKey","rangeKey","primaryDynamodbTableRangeKey","apply","key","item","interpolate","domainName","value","withServiceManifest","exports"],"sources":["createReactPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport type { PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { createPulumiApp } from \"@webiny/pulumi\";\nimport { addDomainsUrlsOutputs, tagResources } from \"~/utils\";\nimport { createPrivateAppBucket } from \"../createAppBucket\";\nimport type { CustomDomainParams } from \"../customDomain\";\nimport { applyCustomDomain } from \"../customDomain\";\nimport { withServiceManifest } from \"~/utils/withServiceManifest\";\nimport { ApiOutput, CoreOutput } from \"~/apps\";\nimport { getEnvVariableWebinyVariant } from \"~/env/variant\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env\";\nimport { getEnvVariableWebinyProjectName } from \"~/env/projectName\";\n\nexport type ReactPulumiApp = ReturnType<typeof createReactPulumiApp>;\n\nexport interface CreateReactPulumiAppParams {\n /**\n * A name of the app, e.g., \"user-area\"\n */\n name: string;\n\n /**\n * A folder where the app is located, e.g., \"apps/user-area\"\n */\n folder: string;\n\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: ReactPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n\n /**\n * Treats provided environments as production environments, which\n * are deployed in production deployment mode.\n * https://www.webiny.com/docs/architecture/deployment-modes/production\n */\n productionEnvironments?: PulumiAppParam<string[]>;\n}\n\nexport const createReactPulumiApp = (projectAppParams: CreateReactPulumiAppParams) => {\n const app = createPulumiApp({\n name: projectAppParams.name,\n path: projectAppParams.folder,\n config: projectAppParams,\n program: async app => {\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\n const { name } = projectAppParams;\n\n // Register core output as a module available for all other modules\n const core = app.addModule(CoreOutput);\n app.addModule(ApiOutput);\n\n // Overrides must be applied via a handler, registered at the very start of the program.\n // By doing this, we're ensuring user's adjustments are not applied to late.\n if (projectAppParams.pulumi) {\n app.addHandler(() => {\n return projectAppParams.pulumi!(app as unknown as ReactPulumiApp);\n });\n }\n\n const bucket = createPrivateAppBucket(app, `${name}-app`);\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: `${name}-app-cdn`,\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n },\n opts: {\n // We are ignoring changes to the \"staging\" property. This is because of the following.\n // With the 5.41.0 release of Webiny, we also upgraded Pulumi to v6. This introduced a change\n // with how Cloudfront distributions are deployed, where Pulumi now also controls the new\n // `staging` property.\n // If not set, Pulumi will default it to `false`. Which is fine, but, the problem is\n // that, because this property did not exist before, it will always be considered as a change\n // upon deployment.\n // We might think this is fine, but, the problem is that a change in this property causes\n // a full replacement of the Cloudfront distribution, which is not acceptable. Especially\n // if a custom domain has already been associated with the distribution. This then would\n // require the user to disassociate the domain, wait for the distribution to be replaced,\n // and then re-associate the domain. This is not a good experience.\n ignoreChanges: [\"staging\"]\n }\n });\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\n }\n\n app.addOutput(\"appStorage\", bucket.bucket.output.id);\n\n app.addHandler(() => {\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: cloudfront,\n map: {\n distributionDomain: \"cloudfrontAppDomain\",\n distributionUrl: \"cloudfrontAppUrl\",\n usedDomain: \"appDomain\",\n usedUrl: \"appUrl\"\n }\n });\n });\n\n tagResources({\n WbyAppName: name,\n WbyProjectName: getEnvVariableWebinyProjectName(),\n WbyEnvironment: getEnvVariableWebinyEnv(),\n WbyEnvironmentVariant: getEnvVariableWebinyVariant()\n });\n\n /**\n * We need to store the appUrl to the admin settings item in the dynamodb\n */\n app.addResource(aws.dynamodb.TableItem, {\n name: \"adminSettings\",\n config: {\n tableName: core.primaryDynamodbTableName,\n hashKey: core.primaryDynamodbTableHashKey,\n rangeKey: pulumi\n .output(core.primaryDynamodbTableRangeKey)\n .apply(key => key || \"SK\"),\n item: pulumi.interpolate`{\n \"PK\": {\"S\": \"ADMIN#SETTINGS\"},\n \"SK\": {\"S\": \"default\"},\n \"data\": {\n \"M\": {\n \"appUrl\": {\n \"S\": \"${cloudfront.output.domainName.apply(\n value => `https://${value}`\n )}\"\n }\n }\n }\n }`\n }\n });\n\n return {\n ...bucket,\n cloudfront\n };\n }\n });\n\n return withServiceManifest(app);\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAF,uBAAA,CAAAC,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AAEA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAN,OAAA;AACA,IAAAO,CAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AACA,IAAAS,IAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AAqCO,MAAMW,oBAAoB,GAAIC,gBAA4C,IAAK;EAClF,MAAMC,GAAG,GAAG,IAAAC,wBAAe,EAAC;IACxBC,IAAI,EAAEH,gBAAgB,CAACG,IAAI;IAC3BC,IAAI,EAAEJ,gBAAgB,CAACK,MAAM;IAC7BC,MAAM,EAAEN,gBAAgB;IACxBO,OAAO,EAAE,MAAMN,GAAG,IAAI;MAClB,MAAMO,wBAAwB,GAAGP,GAAG,CAACQ,QAAQ,CACzCT,gBAAgB,CAACQ,wBACrB,CAAC;MACD,IAAIA,wBAAwB,EAAE;QAC1BP,GAAG,CAACS,UAAU,CAACC,QAAQ,IAAI;UACvB,IAAI,CAACA,QAAQ,CAACR,IAAI,CAACS,UAAU,CAACJ,wBAAwB,CAAC,EAAE;YACrDG,QAAQ,CAACR,IAAI,GAAG,GAAGK,wBAAwB,GAAGG,QAAQ,CAACR,IAAI,EAAE;UACjE;QACJ,CAAC,CAAC;MACN;MAEA,MAAM;QAAEA;MAAK,CAAC,GAAGH,gBAAgB;;MAEjC;MACA,MAAMa,IAAI,GAAGZ,GAAG,CAACa,SAAS,CAACC,YAAU,CAAC;MACtCd,GAAG,CAACa,SAAS,CAACE,WAAS,CAAC;;MAExB;MACA;MACA,IAAIhB,gBAAgB,CAACX,MAAM,EAAE;QACzBY,GAAG,CAACgB,UAAU,CAAC,MAAM;UACjB,OAAOjB,gBAAgB,CAACX,MAAM,CAAEY,GAAgC,CAAC;QACrE,CAAC,CAAC;MACN;MAEA,MAAMiB,MAAM,GAAG,IAAAC,uCAAsB,EAAClB,GAAG,EAAE,GAAGE,IAAI,MAAM,CAAC;MAEzD,MAAMiB,UAAU,GAAGnB,GAAG,CAACoB,WAAW,CAACnC,GAAG,CAACkC,UAAU,CAACE,YAAY,EAAE;QAC5DnB,IAAI,EAAE,GAAGA,IAAI,UAAU;QACvBG,MAAM,EAAE;UACJiB,OAAO,EAAE,IAAI;UACbC,iBAAiB,EAAE,KAAK;UACxBC,OAAO,EAAE,CAACP,MAAM,CAACQ,MAAM,CAAC;UACxBC,iBAAiB,EAAE,YAAY;UAC/BC,oBAAoB,EAAE;YAClBC,QAAQ,EAAE,IAAI;YACdC,cAAc,EAAEZ,MAAM,CAACQ,MAAM,CAACK,QAAQ;YACtCC,oBAAoB,EAAE,mBAAmB;YACzCC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YAC1CC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YACzCC,eAAe,EAAE;cACbC,OAAO,EAAE;gBAAEC,OAAO,EAAE;cAAO,CAAC;cAC5BC,WAAW,EAAE;YACjB,CAAC;YACD;YACAC,MAAM,EAAE,CAAC;YACTC,UAAU,EAAE,GAAG;YACfC,MAAM,EAAE;UACZ,CAAC;UACDC,UAAU,EAAE,gBAAgB;UAC5BC,oBAAoB,EAAE,CAClB;YAAEC,SAAS,EAAE,GAAG;YAAEC,YAAY,EAAE,GAAG;YAAEC,gBAAgB,EAAE;UAAc,CAAC,CACzE;UACDC,YAAY,EAAE;YACVC,cAAc,EAAE;cACZC,eAAe,EAAE;YACrB;UACJ,CAAC;UACDC,iBAAiB,EAAE;YACfC,4BAA4B,EAAE;UAClC;QACJ,CAAC;QACDC,IAAI,EAAE;UACF;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACAC,aAAa,EAAE,CAAC,SAAS;QAC7B;MACJ,CAAC,CAAC;MAEF,MAAMC,OAAO,GAAGrD,GAAG,CAACQ,QAAQ,CAACT,gBAAgB,CAACsD,OAAO,CAAC;MACtD,IAAIA,OAAO,EAAE;QACT,IAAAC,+BAAiB,EAACnC,UAAU,EAAEkC,OAAO,CAAC;MAC1C;MAEArD,GAAG,CAACuD,SAAS,CAAC,YAAY,EAAEtC,MAAM,CAACA,MAAM,CAACuC,MAAM,CAACC,EAAE,CAAC;MAEpDzD,GAAG,CAACgB,UAAU,CAAC,MAAM;QACjB,IAAA0C,4BAAqB,EAAC;UAClB1D,GAAG;UACH2D,sBAAsB,EAAExC,UAAU;UAClCyC,GAAG,EAAE;YACDC,kBAAkB,EAAE,qBAAqB;YACzCC,eAAe,EAAE,kBAAkB;YACnCC,UAAU,EAAE,WAAW;YACvBC,OAAO,EAAE;UACb;QACJ,CAAC,CAAC;MACN,CAAC,CAAC;MAEF,IAAAC,mBAAY,EAAC;QACTC,UAAU,EAAEhE,IAAI;QAChBiE,cAAc,EAAE,IAAAC,4CAA+B,EAAC,CAAC;QACjDC,cAAc,EAAE,IAAAC,4BAAuB,EAAC,CAAC;QACzCC,qBAAqB,EAAE,IAAAC,oCAA2B,EAAC;MACvD,CAAC,CAAC;;MAEF;AACZ;AACA;MACYxE,GAAG,CAACoB,WAAW,CAACnC,GAAG,CAACwF,QAAQ,CAACC,SAAS,EAAE;QACpCxE,IAAI,EAAE,eAAe;QACrBG,MAAM,EAAE;UACJsE,SAAS,EAAE/D,IAAI,CAACgE,wBAAwB;UACxCC,OAAO,EAAEjE,IAAI,CAACkE,2BAA2B;UACzCC,QAAQ,EAAE3F,MAAM,CACXoE,MAAM,CAAC5C,IAAI,CAACoE,4BAA4B,CAAC,CACzCC,KAAK,CAACC,GAAG,IAAIA,GAAG,IAAI,IAAI,CAAC;UAC9BC,IAAI,EAAE/F,MAAM,CAACgG,WAAW;AAC5C;AACA;AACA;AACA;AACA;AACA,wCAAwCjE,UAAU,CAACqC,MAAM,CAAC6B,UAAU,CAACJ,KAAK,CACtCK,KAAK,IAAI,WAAWA,KAAK,EAC7B,CAAC;AACjC;AACA;AACA;AACA;QACgB;MACJ,CAAC,CAAC;MAEF,OAAO;QACH,GAAGrE,MAAM;QACTE;MACJ,CAAC;IACL;EACJ,CAAC,CAAC;EAEF,OAAO,IAAAoE,wCAAmB,EAACvF,GAAG,CAAC;AACnC,CAAC;AAACwF,OAAA,CAAA1F,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PulumiAppModule } from "@webiny/pulumi";
|
|
1
|
+
import type { PulumiAppModule } from "@webiny/pulumi";
|
|
2
2
|
export type SyncSystemDynamo = PulumiAppModule<typeof SyncSystemDynamo>;
|
|
3
3
|
export declare const SyncSystemDynamo: import("@webiny/pulumi").PulumiAppModuleDefinition<import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/table").Table>, {
|
|
4
4
|
protect: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","SyncSystemDynamo","exports","createAppModule","name","config","app","params","addResource","dynamodb","Table","attributes","type","billingMode","hashKey","rangeKey","globalSecondaryIndexes","projectionType","opts","protect"],"sources":["SyncSystemDynamo.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport {
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","_pulumi","SyncSystemDynamo","exports","createAppModule","name","config","app","params","addResource","dynamodb","Table","attributes","type","billingMode","hashKey","rangeKey","globalSecondaryIndexes","projectionType","opts","protect"],"sources":["SyncSystemDynamo.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { PulumiApp, PulumiAppModule } from \"@webiny/pulumi\";\nimport { createAppModule } from \"@webiny/pulumi\";\n\nexport type SyncSystemDynamo = PulumiAppModule<typeof SyncSystemDynamo>;\n\nexport const SyncSystemDynamo = createAppModule({\n name: \"SyncSystemDynamoDb\",\n config(app: PulumiApp, params: { protect: boolean }) {\n return app.addResource(aws.dynamodb.Table, {\n name: \"sync-table\",\n config: {\n attributes: [\n { name: \"PK\", type: \"S\" },\n { name: \"SK\", type: \"S\" },\n { name: \"GSI1_PK\", type: \"S\" },\n { name: \"GSI1_SK\", type: \"S\" },\n { name: \"GSI2_PK\", type: \"S\" },\n { name: \"GSI2_SK\", type: \"S\" }\n ],\n billingMode: \"PAY_PER_REQUEST\",\n hashKey: \"PK\",\n rangeKey: \"SK\",\n globalSecondaryIndexes: [\n // TODO possibly add more indexes here\n {\n name: \"GSI1\",\n hashKey: \"GSI1_PK\",\n rangeKey: \"GSI1_SK\",\n projectionType: \"ALL\"\n },\n {\n name: \"GSI2\",\n hashKey: \"GSI2_PK\",\n rangeKey: \"GSI2_SK\",\n projectionType: \"ALL\"\n }\n ]\n },\n opts: {\n protect: params.protect\n }\n });\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAIO,MAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,IAAAE,uBAAe,EAAC;EAC5CC,IAAI,EAAE,oBAAoB;EAC1BC,MAAMA,CAACC,GAAc,EAAEC,MAA4B,EAAE;IACjD,OAAOD,GAAG,CAACE,WAAW,CAACX,GAAG,CAACY,QAAQ,CAACC,KAAK,EAAE;MACvCN,IAAI,EAAE,YAAY;MAClBC,MAAM,EAAE;QACJM,UAAU,EAAE,CACR;UAAEP,IAAI,EAAE,IAAI;UAAEQ,IAAI,EAAE;QAAI,CAAC,EACzB;UAAER,IAAI,EAAE,IAAI;UAAEQ,IAAI,EAAE;QAAI,CAAC,EACzB;UAAER,IAAI,EAAE,SAAS;UAAEQ,IAAI,EAAE;QAAI,CAAC,EAC9B;UAAER,IAAI,EAAE,SAAS;UAAEQ,IAAI,EAAE;QAAI,CAAC,EAC9B;UAAER,IAAI,EAAE,SAAS;UAAEQ,IAAI,EAAE;QAAI,CAAC,EAC9B;UAAER,IAAI,EAAE,SAAS;UAAEQ,IAAI,EAAE;QAAI,CAAC,CACjC;QACDC,WAAW,EAAE,iBAAiB;QAC9BC,OAAO,EAAE,IAAI;QACbC,QAAQ,EAAE,IAAI;QACdC,sBAAsB,EAAE;QACpB;QACA;UACIZ,IAAI,EAAE,MAAM;UACZU,OAAO,EAAE,SAAS;UAClBC,QAAQ,EAAE,SAAS;UACnBE,cAAc,EAAE;QACpB,CAAC,EACD;UACIb,IAAI,EAAE,MAAM;UACZU,OAAO,EAAE,SAAS;UAClBC,QAAQ,EAAE,SAAS;UACnBE,cAAc,EAAE;QACpB,CAAC;MAET,CAAC;MACDC,IAAI,EAAE;QACFC,OAAO,EAAEZ,MAAM,CAACY;MACpB;IACJ,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { PulumiAppModule } from "@webiny/pulumi";
|
|
2
|
+
export type SyncSystemDynamoDb = PulumiAppModule<typeof SyncSystemDynamoDb>;
|
|
3
|
+
export declare const SyncSystemDynamoDb: import("@webiny/pulumi").PulumiAppModuleDefinition<import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/table").Table>, void>;
|