@webiny/pulumi-aws 5.42.4-beta.0 → 5.43.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/api/ApiGraphql.js +2 -2
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiMigration.js +2 -1
- package/apps/api/ApiMigration.js.map +1 -1
- package/apps/api/ApiOutput.js +2 -1
- package/apps/api/ApiOutput.js.map +1 -1
- package/apps/api/createApiPulumiApp.d.ts +9 -2
- package/apps/api/createApiPulumiApp.js +12 -14
- package/apps/api/createApiPulumiApp.js.map +1 -1
- package/apps/awsUtils.d.ts +1 -1
- package/apps/blueGreen/BlueGreenRouterApiGateway.d.ts +11 -0
- package/apps/blueGreen/BlueGreenRouterApiGateway.js +51 -0
- package/apps/blueGreen/BlueGreenRouterApiGateway.js.map +1 -0
- package/apps/blueGreen/BlueGreenRouterCloudFront.d.ts +17 -0
- package/apps/blueGreen/BlueGreenRouterCloudFront.js +106 -0
- package/apps/blueGreen/BlueGreenRouterCloudFront.js.map +1 -0
- package/apps/blueGreen/BlueGreenRouterCloudFrontStore.d.ts +10 -0
- package/apps/blueGreen/BlueGreenRouterCloudFrontStore.js +27 -0
- package/apps/blueGreen/BlueGreenRouterCloudFrontStore.js.map +1 -0
- package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.d.ts +7 -0
- package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js +23 -0
- package/apps/blueGreen/cloudfront/createCloudFrontDefaultCacheBehaviorPolicies.js.map +1 -0
- package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.d.ts +14 -0
- package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js +30 -0
- package/apps/blueGreen/cloudfront/createCloudFrontFunctionDomainMap.js.map +1 -0
- package/apps/blueGreen/cloudfront/createOriginId.d.ts +11 -0
- package/apps/blueGreen/cloudfront/createOriginId.js +18 -0
- package/apps/blueGreen/cloudfront/createOriginId.js.map +1 -0
- package/apps/blueGreen/constants.d.ts +3 -0
- package/apps/blueGreen/constants.js +11 -0
- package/apps/blueGreen/constants.js.map +1 -0
- package/apps/blueGreen/createBlueGreenPulumiApp.d.ts +73 -0
- package/apps/blueGreen/createBlueGreenPulumiApp.js +121 -0
- package/apps/blueGreen/createBlueGreenPulumiApp.js.map +1 -0
- package/apps/blueGreen/domains/attachDomainsToOutput.d.ts +9 -0
- package/apps/blueGreen/domains/attachDomainsToOutput.js +37 -0
- package/apps/blueGreen/domains/attachDomainsToOutput.js.map +1 -0
- package/apps/blueGreen/domains/convertApplicationDomains.d.ts +6 -0
- package/apps/blueGreen/domains/convertApplicationDomains.js +32 -0
- package/apps/blueGreen/domains/convertApplicationDomains.js.map +1 -0
- package/apps/blueGreen/domains/getApplicationDomains.d.ts +20 -0
- package/apps/blueGreen/domains/getApplicationDomains.js +107 -0
- package/apps/blueGreen/domains/getApplicationDomains.js.map +1 -0
- package/apps/blueGreen/domains/resolveDomains.d.ts +6 -0
- package/apps/blueGreen/domains/resolveDomains.js +48 -0
- package/apps/blueGreen/domains/resolveDomains.js.map +1 -0
- package/apps/blueGreen/functions/buildHandlerFunction.d.ts +15 -0
- package/apps/blueGreen/functions/buildHandlerFunction.js +25 -0
- package/apps/blueGreen/functions/buildHandlerFunction.js.map +1 -0
- package/apps/blueGreen/functions/handler.d.ts +1 -0
- package/apps/blueGreen/functions/handler.js +63 -0
- package/apps/blueGreen/functions/handler.js.map +1 -0
- package/apps/blueGreen/types.d.ts +78 -0
- package/apps/blueGreen/types.js +7 -0
- package/apps/blueGreen/types.js.map +1 -0
- package/apps/blueGreen/validation/validateDeployments.d.ts +2 -0
- package/apps/blueGreen/validation/validateDeployments.js +41 -0
- package/apps/blueGreen/validation/validateDeployments.js.map +1 -0
- package/apps/common/CoreOutput.js +3 -1
- package/apps/common/CoreOutput.js.map +1 -1
- package/apps/core/cognitoIdentityProviders/configure.js +2 -1
- package/apps/core/cognitoIdentityProviders/configure.js.map +1 -1
- package/apps/core/createCorePulumiApp.js +28 -6
- package/apps/core/createCorePulumiApp.js.map +1 -1
- package/apps/createAppBucket.js +2 -1
- package/apps/createAppBucket.js.map +1 -1
- package/apps/react/createReactPulumiApp.js +7 -3
- package/apps/react/createReactPulumiApp.js.map +1 -1
- package/apps/syncSystem/SyncSystemDynamo.d.ts +5 -0
- package/apps/syncSystem/SyncSystemDynamo.js +59 -0
- package/apps/syncSystem/SyncSystemDynamo.js.map +1 -0
- package/apps/syncSystem/SyncSystemLambda.d.ts +13 -0
- package/apps/syncSystem/SyncSystemLambda.js +104 -0
- package/apps/syncSystem/SyncSystemLambda.js.map +1 -0
- package/apps/syncSystem/SyncSystemSQS.d.ts +4 -0
- package/apps/syncSystem/SyncSystemSQS.js +40 -0
- package/apps/syncSystem/SyncSystemSQS.js.map +1 -0
- package/apps/syncSystem/addTableItems.d.ts +8 -0
- package/apps/syncSystem/addTableItems.js +59 -0
- package/apps/syncSystem/addTableItems.js.map +1 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.d.ts +66 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.js +63 -0
- package/apps/syncSystem/createSyncSystemPulumiApp.js.map +1 -0
- package/apps/tenantRouter.js +2 -1
- package/apps/tenantRouter.js.map +1 -1
- package/apps/website/WebsitePrerendering.js +1 -1
- package/apps/website/WebsitePrerendering.js.map +1 -1
- package/apps/website/createWebsitePulumiApp.d.ts +1 -1
- package/apps/website/createWebsitePulumiApp.js +6 -2
- package/apps/website/createWebsitePulumiApp.js.map +1 -1
- package/components/tenantRouter/WebsiteTenantRouter.d.ts +1 -0
- package/components/tenantRouter/WebsiteTenantRouter.js +6 -3
- package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
- package/enterprise/createCorePulumiApp.d.ts +1 -0
- package/enterprise/createCorePulumiApp.js +10 -0
- package/enterprise/createCorePulumiApp.js.map +1 -1
- package/enterprise/createSyncSystemPulumiApp.d.ts +26 -0
- package/enterprise/createSyncSystemPulumiApp.js +71 -0
- package/enterprise/createSyncSystemPulumiApp.js.map +1 -0
- package/env/awsRegion.d.ts +1 -0
- package/env/awsRegion.js +12 -0
- package/env/awsRegion.js.map +1 -0
- package/env/base.d.ts +15 -0
- package/env/base.js +37 -0
- package/env/base.js.map +1 -0
- package/env/env.d.ts +1 -0
- package/env/env.js +12 -0
- package/env/env.js.map +1 -0
- package/env/projectName.d.ts +1 -0
- package/env/projectName.js +12 -0
- package/env/projectName.js.map +1 -0
- package/env/variant.d.ts +1 -0
- package/env/variant.js +13 -0
- package/env/variant.js.map +1 -0
- package/package.json +21 -18
- package/utils/addServiceManifestTableItem.js +1 -1
- package/utils/addServiceManifestTableItem.js.map +1 -1
- package/utils/dynamodb.d.ts +14 -0
- package/utils/dynamodb.js +36 -0
- package/utils/dynamodb.js.map +1 -0
- package/utils/lambdaEnvVariables.js +1 -2
- package/utils/lambdaEnvVariables.js.map +1 -1
- package/utils/uploadFolderToS3.js +2 -1
- package/utils/uploadFolderToS3.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pulumi","_interopRequireWildcard","require","aws","_fs","_interopRequireDefault","_pulumi2","_createAppBucket","_customDomain","_WebsitePrerendering","_","_utils","_tenantRouter","_withServiceManifest","_constants","createWebsitePulumiApp","projectAppParams","baseApp","createPulumiApp","name","path","config","program","app","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","addHandler","productionEnvironments","params","create","DEFAULT_PROD_ENV_NAMES","isProduction","includes","run","env","core","addModule","CoreOutput","ApiOutput","vpcEnabled","vpc","VpcConfig","enabled","appBucket","createPrivateAppBucket","appCloudfront","addResource","cloudfront","Distribution","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","deliveryBucket","viewerRequest","Function","runtime","publish","code","fs","readFileSync","__dirname","deliveryCloudfront","originRequestPolicyId","functionAssociations","functionArn","output","arn","eventType","orderedCacheBehaviors","headers","pathPattern","prerendering","createPrerenderingService","dbTableName","primaryDynamodbTableName","dbTableHashKey","primaryDynamodbTableHashKey","dbTableRangeKey","primaryDynamodbTableRangeKey","logDbTableName","logDynamodbTableName","appUrl","interpolate","domainName","deliveryUrl","bucket","cloudfrontId","id","domains","applyCustomDomain","previewDomains","process","WCP_PROJECT_ENVIRONMENT","WEBINY_MULTI_TENANCY","originLambda","applyTenantRouter","addOutputs","websiteRouterOriginRequestFunction","appId","appStorage","deliveryId","deliveryStorage","addDomainsUrlsOutputs","cloudfrontDistribution","map","distributionDomain","distributionUrl","usedDomain","usedUrl","tagResources","WbyProjectName","String","WbyEnvironment","preview","delivery","withServiceManifest","withCommonLambdaEnvVariables","resources","addServiceManifest","manifest","distributionId","bucketDomainName","bucketRegionalDomainName","exports"],"sources":["createWebsitePulumiApp.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport fs from \"fs\";\nimport { createPulumiApp, PulumiAppParamCallback, PulumiAppParam } from \"@webiny/pulumi\";\nimport { createPrivateAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { createPrerenderingService } from \"./WebsitePrerendering\";\nimport { CoreOutput, ApiOutput, VpcConfig } from \"~/apps\";\nimport { addDomainsUrlsOutputs, tagResources, withCommonLambdaEnvVariables } from \"~/utils\";\nimport { applyTenantRouter } from \"~/apps/tenantRouter\";\nimport { withServiceManifest } from \"~/utils/withServiceManifest\";\nimport { DEFAULT_PROD_ENV_NAMES } from \"~/constants\";\n\nexport type WebsitePulumiApp = ReturnType<typeof createWebsitePulumiApp>;\n\nexport interface CreateWebsitePulumiAppParams {\n /**\n * Custom domain(s) configuration.\n */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Custom preview domain(s) configuration.\n */\n previewDomains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Enables or disables VPC for the API.\n * For VPC to work you also have to enable it in the `core` application.\n */\n vpc?: PulumiAppParam<boolean | undefined>;\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: WebsitePulumiApp) => 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 createWebsitePulumiApp = (projectAppParams: CreateWebsitePulumiAppParams = {}) => {\n const baseApp = createPulumiApp({\n name: \"website\",\n path: \"apps/website\",\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 // 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 WebsitePulumiApp);\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 // Register core and api output as a module, to be available to all other modules.\n const core = app.addModule(CoreOutput);\n app.addModule(ApiOutput);\n\n // Register VPC config module to be available to other modules.\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n app.addModule(VpcConfig, { enabled: vpcEnabled });\n\n const appBucket = createPrivateAppBucket(app, \"app\");\n\n const appCloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"app\",\n config: {\n enabled: true,\n waitForDeployment: true,\n origins: [appBucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: appBucket.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: 0,\n maxTtl: 0\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 deliveryBucket = createPrivateAppBucket(app, \"delivery\");\n\n /**\n * We need to have a Cloudfront Function to perform a simple request rewrite, so the request always includes\n * an \"/index.html\". This is necessary because our buckets are not \"website\" buckets, and we need to\n * have an exact object key when requesting page paths.\n */\n const viewerRequest = app.addResource(aws.cloudfront.Function, {\n name: \"cfViewerRequest\",\n config: {\n runtime: \"cloudfront-js-1.0\",\n publish: true,\n code: fs.readFileSync(__dirname + `/deliveryViewerRequest.js`, \"utf8\")\n }\n });\n\n const deliveryCloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"delivery\",\n config: {\n enabled: true,\n waitForDeployment: true,\n origins: [deliveryBucket.origin, appBucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: deliveryBucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n originRequestPolicyId: \"\",\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: true\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 30,\n maxTtl: 30,\n functionAssociations: [\n { functionArn: viewerRequest.output.arn, eventType: \"viewer-request\" }\n ]\n },\n orderedCacheBehaviors: [\n {\n compress: true,\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [],\n queryString: false\n },\n pathPattern: \"/static/*\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: appBucket.origin.originId,\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 2592000, // 30 days\n maxTtl: 2592000\n },\n // This forward is necessary for non-WCP projects. For WCP projects, the\n // forwarding is performed by the `website-router` Lambda@Edge function.\n {\n compress: true,\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [],\n queryString: false\n },\n pathPattern: \"/robots.txt\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: appBucket.origin.originId\n }\n ],\n customErrorResponses: [\n {\n errorCode: 404,\n responseCode: 404,\n responsePagePath: \"/_NOT_FOUND_PAGE_/index.html\"\n }\n ],\n priceClass: \"PriceClass_100\",\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n },\n opts: {\n // Check the comment in the `appCloudfront` resource above for more info.\n ignoreChanges: [\"staging\"]\n }\n });\n\n const prerendering = createPrerenderingService(app, {\n dbTableName: core.primaryDynamodbTableName,\n dbTableHashKey: core.primaryDynamodbTableHashKey,\n dbTableRangeKey: core.primaryDynamodbTableRangeKey,\n logDbTableName: core.logDynamodbTableName,\n appUrl: pulumi.interpolate`https://${appCloudfront.output.domainName}`,\n deliveryUrl: pulumi.interpolate`https://${deliveryCloudfront.output.domainName}`,\n bucket: deliveryBucket.bucket.output.bucket,\n cloudfrontId: deliveryCloudfront.output.id\n });\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(deliveryCloudfront, domains);\n }\n\n const previewDomains = app.getParam(projectAppParams.previewDomains);\n if (previewDomains) {\n applyCustomDomain(appCloudfront, previewDomains);\n }\n\n if (\n process.env.WCP_PROJECT_ENVIRONMENT ||\n process.env.WEBINY_MULTI_TENANCY === \"true\"\n ) {\n const { originLambda } = applyTenantRouter(app, deliveryCloudfront);\n\n app.addHandler(() => {\n app.addOutputs({\n websiteRouterOriginRequestFunction: originLambda.output.name\n });\n });\n }\n\n app.addOutputs({\n // Cloudfront and S3 bucket used to host the single-page application (SPA). The URL of the distribution is mainly\n // utilized by the Page Builder app's prerendering engine. Using this URL, it accesses the SPA and creates HTML snapshots.\n // The files that are generated in that process are stored in the `deliveryStorage` S3 bucket further below.\n appId: appCloudfront.output.id,\n appStorage: appBucket.bucket.output.id,\n\n // These are the Cloudfront and S3 bucket that will deliver static pages to the actual website visitors.\n // The static HTML snapshots delivered from them still rely on the app's S3 bucket\n // defined above, for serving static assets (JS, CSS, images).\n deliveryId: deliveryCloudfront.output.id,\n deliveryStorage: deliveryBucket.bucket.output.id\n });\n\n app.addHandler(() => {\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: appCloudfront,\n map: {\n distributionDomain: \"cloudfrontAppDomain\",\n distributionUrl: \"cloudfrontAppUrl\",\n usedDomain: \"appDomain\",\n usedUrl: \"appUrl\"\n }\n });\n\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: deliveryCloudfront,\n map: {\n distributionDomain: \"cloudfrontDeliveryDomain\",\n distributionUrl: \"cloudfrontDeliveryUrl\",\n usedDomain: \"deliveryDomain\",\n usedUrl: \"deliveryUrl\"\n }\n });\n });\n\n tagResources({\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n return {\n prerendering,\n\n // \"preview\" and \"app\" are the same.\n // We introduced \"preview\" just because it's the word we use when talking about\n // Page Builder and \"previewing\" pages. In other words, the \"preview\" property\n // contains all resources related to serving page previews, unlike \"delivery\",\n // which is used to serve published pages to actual website visitors.\n // The \"app\" property was still left here just for backwards compatibility.\n preview: {\n ...appBucket,\n cloudfront: appCloudfront\n },\n app: {\n ...appBucket,\n cloudfront: appCloudfront\n },\n\n delivery: {\n ...deliveryBucket,\n cloudfront: deliveryCloudfront\n }\n };\n }\n });\n\n const app = withServiceManifest(withCommonLambdaEnvVariables(baseApp));\n\n app.addHandler(() => {\n const preview = baseApp.resources.preview;\n const delivery = baseApp.resources.delivery;\n\n app.addServiceManifest({\n name: \"website\",\n manifest: {\n preview: {\n cloudfront: {\n distributionId: preview.cloudfront.output.id,\n domainName: preview.cloudfront.output.domainName\n },\n bucket: {\n name: preview.bucket.output.id,\n arn: preview.bucket.output.arn,\n bucketDomainName: preview.bucket.output.bucketDomainName,\n bucketRegionalDomainName: preview.bucket.output.bucketRegionalDomainName\n }\n },\n delivery: {\n cloudfront: {\n distributionId: delivery.cloudfront.output.id,\n domainName: delivery.cloudfront.output.domainName\n },\n bucket: {\n name: delivery.bucket.output.id,\n arn: delivery.bucket.output.arn,\n bucketDomainName: delivery.bucket.output.bucketDomainName,\n bucketRegionalDomainName: delivery.bucket.output.bucketRegionalDomainName\n }\n }\n }\n });\n });\n\n return app;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["pulumi","_interopRequireWildcard","require","aws","_fs","_interopRequireDefault","_pulumi2","_createAppBucket","_customDomain","_WebsitePrerendering","_","_utils","_tenantRouter","_withServiceManifest","_constants","_variant","_env","_projectName","createWebsitePulumiApp","projectAppParams","baseApp","createPulumiApp","name","path","config","program","app","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","addHandler","productionEnvironments","params","create","DEFAULT_PROD_ENV_NAMES","isProduction","includes","run","env","core","addModule","CoreOutput","ApiOutput","vpcEnabled","vpc","VpcConfig","enabled","appBucket","createPrivateAppBucket","appCloudfront","addResource","cloudfront","Distribution","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","deliveryBucket","viewerRequest","Function","runtime","publish","code","fs","readFileSync","__dirname","deliveryCloudfront","originRequestPolicyId","functionAssociations","functionArn","output","arn","eventType","orderedCacheBehaviors","headers","pathPattern","prerendering","createPrerenderingService","dbTableName","primaryDynamodbTableName","dbTableHashKey","primaryDynamodbTableHashKey","dbTableRangeKey","primaryDynamodbTableRangeKey","logDbTableName","logDynamodbTableName","appUrl","interpolate","domainName","deliveryUrl","bucket","cloudfrontId","id","domains","applyCustomDomain","previewDomains","process","WCP_PROJECT_ENVIRONMENT","WEBINY_MULTI_TENANCY","originLambda","applyTenantRouter","addOutputs","websiteRouterOriginRequestFunction","appId","appStorage","deliveryId","deliveryStorage","addDomainsUrlsOutputs","cloudfrontDistribution","map","distributionDomain","distributionUrl","usedDomain","usedUrl","tagResources","WbyProjectName","getEnvVariableWebinyProjectName","WbyEnvironment","getEnvVariableWebinyEnv","WbyEnvironmentVariant","getEnvVariableWebinyVariant","preview","delivery","withServiceManifest","withCommonLambdaEnvVariables","resources","addServiceManifest","manifest","distributionId","bucketDomainName","bucketRegionalDomainName","exports"],"sources":["createWebsitePulumiApp.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport fs from \"fs\";\nimport { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { createPrivateAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport { createPrerenderingService } from \"./WebsitePrerendering\";\nimport { ApiOutput, CoreOutput, VpcConfig } from \"~/apps\";\nimport { addDomainsUrlsOutputs, tagResources, withCommonLambdaEnvVariables } from \"~/utils\";\nimport { applyTenantRouter } from \"~/apps/tenantRouter\";\nimport { withServiceManifest } from \"~/utils/withServiceManifest\";\nimport { DEFAULT_PROD_ENV_NAMES } from \"~/constants\";\nimport { getEnvVariableWebinyVariant } from \"~/env/variant\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env\";\nimport { getEnvVariableWebinyProjectName } from \"~/env/projectName\";\n\nexport type WebsitePulumiApp = ReturnType<typeof createWebsitePulumiApp>;\n\nexport interface CreateWebsitePulumiAppParams {\n /**\n * Custom domain(s) configuration.\n */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Custom preview domain(s) configuration.\n */\n previewDomains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Enables or disables VPC for the API.\n * For VPC to work you also have to enable it in the `core` application.\n */\n vpc?: PulumiAppParam<boolean | undefined>;\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: WebsitePulumiApp) => 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 createWebsitePulumiApp = (projectAppParams: CreateWebsitePulumiAppParams = {}) => {\n const baseApp = createPulumiApp({\n name: \"website\",\n path: \"apps/website\",\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 // 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 WebsitePulumiApp);\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 // Register core and api output as a module, to be available to all other modules.\n const core = app.addModule(CoreOutput);\n app.addModule(ApiOutput);\n\n // Register VPC config module to be available to other modules.\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? isProduction;\n app.addModule(VpcConfig, { enabled: vpcEnabled });\n\n const appBucket = createPrivateAppBucket(app, \"app\");\n\n const appCloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"app\",\n config: {\n enabled: true,\n waitForDeployment: true,\n origins: [appBucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: appBucket.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: 0,\n maxTtl: 0\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 deliveryBucket = createPrivateAppBucket(app, \"delivery\");\n\n /**\n * We need to have a Cloudfront Function to perform a simple request rewrite, so the request always includes\n * an \"/index.html\". This is necessary because our buckets are not \"website\" buckets, and we need to\n * have an exact object key when requesting page paths.\n */\n const viewerRequest = app.addResource(aws.cloudfront.Function, {\n name: \"cfViewerRequest\",\n config: {\n runtime: \"cloudfront-js-1.0\",\n publish: true,\n code: fs.readFileSync(__dirname + `/deliveryViewerRequest.js`, \"utf8\")\n }\n });\n\n const deliveryCloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: \"delivery\",\n config: {\n enabled: true,\n waitForDeployment: true,\n origins: [deliveryBucket.origin, appBucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: deliveryBucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n originRequestPolicyId: \"\",\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: true\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 30,\n maxTtl: 30,\n functionAssociations: [\n { functionArn: viewerRequest.output.arn, eventType: \"viewer-request\" }\n ]\n },\n orderedCacheBehaviors: [\n {\n compress: true,\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [],\n queryString: false\n },\n pathPattern: \"/static/*\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: appBucket.origin.originId,\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 2592000, // 30 days\n maxTtl: 2592000\n },\n // This forward is necessary for non-WCP projects. For WCP projects, the\n // forwarding is performed by the `website-router` Lambda@Edge function.\n {\n compress: true,\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: {\n forward: \"none\"\n },\n headers: [],\n queryString: false\n },\n pathPattern: \"/robots.txt\",\n viewerProtocolPolicy: \"allow-all\",\n targetOriginId: appBucket.origin.originId\n }\n ],\n customErrorResponses: [\n {\n errorCode: 404,\n responseCode: 404,\n responsePagePath: \"/_NOT_FOUND_PAGE_/index.html\"\n }\n ],\n priceClass: \"PriceClass_100\",\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n },\n opts: {\n // Check the comment in the `appCloudfront` resource above for more info.\n ignoreChanges: [\"staging\"]\n }\n });\n\n const prerendering = createPrerenderingService(app, {\n dbTableName: core.primaryDynamodbTableName,\n dbTableHashKey: core.primaryDynamodbTableHashKey,\n dbTableRangeKey: core.primaryDynamodbTableRangeKey,\n logDbTableName: core.logDynamodbTableName,\n appUrl: pulumi.interpolate`https://${appCloudfront.output.domainName}`,\n deliveryUrl: pulumi.interpolate`https://${deliveryCloudfront.output.domainName}`,\n bucket: deliveryBucket.bucket.output.bucket,\n cloudfrontId: deliveryCloudfront.output.id\n });\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(deliveryCloudfront, domains);\n }\n\n const previewDomains = app.getParam(projectAppParams.previewDomains);\n if (previewDomains) {\n applyCustomDomain(appCloudfront, previewDomains);\n }\n\n if (\n process.env.WCP_PROJECT_ENVIRONMENT ||\n process.env.WEBINY_MULTI_TENANCY === \"true\"\n ) {\n const { originLambda } = applyTenantRouter(app, deliveryCloudfront);\n\n app.addHandler(() => {\n app.addOutputs({\n websiteRouterOriginRequestFunction: originLambda.output.name\n });\n });\n }\n\n app.addOutputs({\n // Cloudfront and S3 bucket used to host the single-page application (SPA). The URL of the distribution is mainly\n // utilized by the Page Builder app's prerendering engine. Using this URL, it accesses the SPA and creates HTML snapshots.\n // The files that are generated in that process are stored in the `deliveryStorage` S3 bucket further below.\n appId: appCloudfront.output.id,\n appStorage: appBucket.bucket.output.id,\n\n // These are the Cloudfront and S3 bucket that will deliver static pages to the actual website visitors.\n // The static HTML snapshots delivered from them still rely on the app's S3 bucket\n // defined above, for serving static assets (JS, CSS, images).\n deliveryId: deliveryCloudfront.output.id,\n deliveryStorage: deliveryBucket.bucket.output.id\n });\n\n app.addHandler(() => {\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: appCloudfront,\n map: {\n distributionDomain: \"cloudfrontAppDomain\",\n distributionUrl: \"cloudfrontAppUrl\",\n usedDomain: \"appDomain\",\n usedUrl: \"appUrl\"\n }\n });\n\n addDomainsUrlsOutputs({\n app,\n cloudfrontDistribution: deliveryCloudfront,\n map: {\n distributionDomain: \"cloudfrontDeliveryDomain\",\n distributionUrl: \"cloudfrontDeliveryUrl\",\n usedDomain: \"deliveryDomain\",\n usedUrl: \"deliveryUrl\"\n }\n });\n });\n\n tagResources({\n WbyProjectName: getEnvVariableWebinyProjectName(),\n WbyEnvironment: getEnvVariableWebinyEnv(),\n WbyEnvironmentVariant: getEnvVariableWebinyVariant()\n });\n\n return {\n prerendering,\n\n // \"preview\" and \"app\" are the same.\n // We introduced \"preview\" just because it's the word we use when talking about\n // Page Builder and \"previewing\" pages. In other words, the \"preview\" property\n // contains all resources related to serving page previews, unlike \"delivery\",\n // which is used to serve published pages to actual website visitors.\n // The \"app\" property was still left here just for backwards compatibility.\n preview: {\n ...appBucket,\n cloudfront: appCloudfront\n },\n app: {\n ...appBucket,\n cloudfront: appCloudfront\n },\n\n delivery: {\n ...deliveryBucket,\n cloudfront: deliveryCloudfront\n }\n };\n }\n });\n\n const app = withServiceManifest(withCommonLambdaEnvVariables(baseApp));\n\n app.addHandler(() => {\n const preview = baseApp.resources.preview;\n const delivery = baseApp.resources.delivery;\n\n app.addServiceManifest({\n name: \"website\",\n manifest: {\n preview: {\n cloudfront: {\n distributionId: preview.cloudfront.output.id,\n domainName: preview.cloudfront.output.domainName\n },\n bucket: {\n name: preview.bucket.output.id,\n arn: preview.bucket.output.arn,\n bucketDomainName: preview.bucket.output.bucketDomainName,\n bucketRegionalDomainName: preview.bucket.output.bucketRegionalDomainName\n }\n },\n delivery: {\n cloudfront: {\n distributionId: delivery.cloudfront.output.id,\n domainName: delivery.cloudfront.output.domainName\n },\n bucket: {\n name: delivery.bucket.output.id,\n arn: delivery.bucket.output.arn,\n bucketDomainName: delivery.bucket.output.bucketDomainName,\n bucketRegionalDomainName: delivery.bucket.output.bucketRegionalDomainName\n }\n }\n }\n });\n });\n\n return app;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,6 +10,8 @@ var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
|
|
|
10
10
|
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
11
11
|
var _utils = require("@webiny/cli-plugin-deploy-pulumi/utils");
|
|
12
12
|
var _constants = require("../../constants");
|
|
13
|
+
var _variant = require("../../env/variant");
|
|
14
|
+
var _env = require("../../env/env");
|
|
13
15
|
function createFunctionArchive({
|
|
14
16
|
dynamoDbTable,
|
|
15
17
|
region
|
|
@@ -21,14 +23,15 @@ function createFunctionArchive({
|
|
|
21
23
|
});
|
|
22
24
|
}
|
|
23
25
|
class WebsiteTenantRouter extends pulumi.ComponentResource {
|
|
24
|
-
constructor(name, config
|
|
26
|
+
constructor(name, config, opts = {}) {
|
|
25
27
|
super("webiny:aws:WebsiteTenantRouter", name, {}, opts);
|
|
26
28
|
const {
|
|
27
29
|
region,
|
|
28
30
|
dynamoDbTable
|
|
29
31
|
} = (0, _utils.getStackOutput)({
|
|
30
|
-
folder: config
|
|
31
|
-
env: config
|
|
32
|
+
folder: config?.apiFolder || "api",
|
|
33
|
+
env: config?.apiEnv || (0, _env.getEnvVariableWebinyEnv)(),
|
|
34
|
+
variant: config?.apiVariant || (0, _variant.getEnvVariableWebinyVariant)()
|
|
32
35
|
});
|
|
33
36
|
const inlinePolicies = Promise.all([aws.getCallerIdentity({})]).then(([callerIdentity]) => [{
|
|
34
37
|
name: "dynamodb-policy",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fs","require","pulumi","_interopRequireWildcard","aws","_utils","_constants","createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","asset","AssetArchive","StringAsset","WebsiteTenantRouter","ComponentResource","constructor","name","config","opts","getStackOutput","folder","apiFolder","env","apiEnv","
|
|
1
|
+
{"version":3,"names":["_fs","require","pulumi","_interopRequireWildcard","aws","_utils","_constants","_variant","_env","createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","asset","AssetArchive","StringAsset","WebsiteTenantRouter","ComponentResource","constructor","name","config","opts","getStackOutput","folder","apiFolder","env","apiEnv","getEnvVariableWebinyEnv","variant","apiVariant","getEnvVariableWebinyVariant","inlinePolicies","Promise","all","getCallerIdentity","then","callerIdentity","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","iam","Role","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","parent","awsUsEast1","Provider","originRequest","lambda","Function","publish","runtime","LAMBDA_RUNTIME","arn","timeout","memorySize","code","provider","registerOutputs","exports"],"sources":["WebsiteTenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { getStackOutput } from \"@webiny/cli-plugin-deploy-pulumi/utils\";\nimport { LAMBDA_RUNTIME } from \"~/constants\";\nimport { getEnvVariableWebinyVariant } from \"~/env/variant\";\nimport { getEnvVariableWebinyEnv } from \"~/env/env\";\n\ninterface Config {\n apiFolder?: string;\n apiEnv?: string;\n apiVariant: string;\n}\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(__dirname + \"/functions/origin/request.js\", \"utf-8\");\n\n const source = handler\n .replace(\"{DB_TABLE_NAME}\", dynamoDbTable)\n .replace(\"{DB_TABLE_REGION}\", region);\n\n return new pulumi.asset.AssetArchive({\n \"index.js\": new pulumi.asset.StringAsset(source)\n });\n}\n\nexport class WebsiteTenantRouter extends pulumi.ComponentResource {\n public readonly originRequest: aws.lambda.Function;\n\n constructor(name: string, config?: Config, opts = {}) {\n super(\"webiny:aws:WebsiteTenantRouter\", name, {}, opts);\n\n const { region, dynamoDbTable } = getStackOutput({\n folder: config?.apiFolder || \"api\",\n env: config?.apiEnv || getEnvVariableWebinyEnv(),\n variant: config?.apiVariant || getEnvVariableWebinyVariant()\n });\n\n const inlinePolicies = Promise.all([aws.getCallerIdentity({})]).then(([callerIdentity]) => [\n {\n name: \"dynamodb-policy\",\n policy: JSON.stringify({\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\"dynamodb:GetItem\", \"dynamodb:Query\"],\n Resource: [\n `arn:aws:dynamodb:${region}:${callerIdentity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${callerIdentity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = new aws.iam.Role(\n `${name}-role`,\n {\n inlinePolicies,\n managedPolicyArns: [aws.iam.ManagedPolicies.AWSLambdaBasicExecutionRole],\n assumeRolePolicy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.LambdaPrincipal,\n Effect: \"Allow\"\n },\n {\n Action: \"sts:AssumeRole\",\n Principal: aws.iam.Principals.EdgeLambdaPrincipal,\n Effect: \"Allow\"\n }\n ]\n }\n },\n { parent: this }\n );\n\n // Some resources _must_ be put in us-east-1, such as Lambda at Edge.\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n this.originRequest = new aws.lambda.Function(\n `${name}-origin-request`,\n {\n publish: true,\n runtime: LAMBDA_RUNTIME,\n handler: \"index.handler\",\n role: role.arn,\n timeout: 5,\n memorySize: 128,\n code: createFunctionArchive({ region, dynamoDbTable })\n },\n { provider: awsUsEast1, parent: this }\n );\n\n this.registerOutputs();\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,GAAA,GAAAD,uBAAA,CAAAF,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAAO,IAAA,GAAAP,OAAA;AAaA,SAASQ,qBAAqBA,CAAC;EAAEC,aAAa;EAAEC;AAAe,CAAC,EAAE;EAC9D,MAAMC,OAAO,GAAG,IAAAC,gBAAY,EAACC,SAAS,GAAG,8BAA8B,EAAE,OAAO,CAAC;EAEjF,MAAMC,MAAM,GAAGH,OAAO,CACjBI,OAAO,CAAC,iBAAiB,EAAEN,aAAa,CAAC,CACzCM,OAAO,CAAC,mBAAmB,EAAEL,MAAM,CAAC;EAEzC,OAAO,IAAIT,MAAM,CAACe,KAAK,CAACC,YAAY,CAAC;IACjC,UAAU,EAAE,IAAIhB,MAAM,CAACe,KAAK,CAACE,WAAW,CAACJ,MAAM;EACnD,CAAC,CAAC;AACN;AAEO,MAAMK,mBAAmB,SAASlB,MAAM,CAACmB,iBAAiB,CAAC;EAG9DC,WAAWA,CAACC,IAAY,EAAEC,MAAe,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IAClD,KAAK,CAAC,gCAAgC,EAAEF,IAAI,EAAE,CAAC,CAAC,EAAEE,IAAI,CAAC;IAEvD,MAAM;MAAEd,MAAM;MAAED;IAAc,CAAC,GAAG,IAAAgB,qBAAc,EAAC;MAC7CC,MAAM,EAAEH,MAAM,EAAEI,SAAS,IAAI,KAAK;MAClCC,GAAG,EAAEL,MAAM,EAAEM,MAAM,IAAI,IAAAC,4BAAuB,EAAC,CAAC;MAChDC,OAAO,EAAER,MAAM,EAAES,UAAU,IAAI,IAAAC,oCAA2B,EAAC;IAC/D,CAAC,CAAC;IAEF,MAAMC,cAAc,GAAGC,OAAO,CAACC,GAAG,CAAC,CAACjC,GAAG,CAACkC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC,CAACC,cAAc,CAAC,KAAK,CACvF;MACIjB,IAAI,EAAE,iBAAiB;MACvBkB,MAAM,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnBC,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIC,GAAG,EAAE,uBAAuB;UAC5BC,MAAM,EAAE,OAAO;UACfC,MAAM,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;UAC9CC,QAAQ,EAAE,CACN,oBAAoBtC,MAAM,IAAI6B,cAAc,CAACU,SAAS,UAAUxC,aAAa,EAAE,EAC/E,oBAAoBC,MAAM,IAAI6B,cAAc,CAACU,SAAS,UAAUxC,aAAa,IAAI;QAEzF,CAAC;MAET,CAAC;IACL,CAAC,CACJ,CAAC;IAEF,MAAMyC,IAAI,GAAG,IAAI/C,GAAG,CAACgD,GAAG,CAACC,IAAI,CACzB,GAAG9B,IAAI,OAAO,EACd;MACIY,cAAc;MACdmB,iBAAiB,EAAE,CAAClD,GAAG,CAACgD,GAAG,CAACG,eAAe,CAACC,2BAA2B,CAAC;MACxEC,gBAAgB,EAAE;QACdb,OAAO,EAAE,YAAY;QACrBC,SAAS,EAAE,CACP;UACIG,MAAM,EAAE,gBAAgB;UACxBU,SAAS,EAAEtD,GAAG,CAACgD,GAAG,CAACO,UAAU,CAACC,eAAe;UAC7Cb,MAAM,EAAE;QACZ,CAAC,EACD;UACIC,MAAM,EAAE,gBAAgB;UACxBU,SAAS,EAAEtD,GAAG,CAACgD,GAAG,CAACO,UAAU,CAACE,mBAAmB;UACjDd,MAAM,EAAE;QACZ,CAAC;MAET;IACJ,CAAC,EACD;MAAEe,MAAM,EAAE;IAAK,CACnB,CAAC;;IAED;IACA,MAAMC,UAAU,GAAG,IAAI3D,GAAG,CAAC4D,QAAQ,CAAC,WAAW,EAAE;MAAErD,MAAM,EAAE;IAAY,CAAC,CAAC;IAEzE,IAAI,CAACsD,aAAa,GAAG,IAAI7D,GAAG,CAAC8D,MAAM,CAACC,QAAQ,CACxC,GAAG5C,IAAI,iBAAiB,EACxB;MACI6C,OAAO,EAAE,IAAI;MACbC,OAAO,EAAEC,yBAAc;MACvB1D,OAAO,EAAE,eAAe;MACxBuC,IAAI,EAAEA,IAAI,CAACoB,GAAG;MACdC,OAAO,EAAE,CAAC;MACVC,UAAU,EAAE,GAAG;MACfC,IAAI,EAAEjE,qBAAqB,CAAC;QAAEE,MAAM;QAAED;MAAc,CAAC;IACzD,CAAC,EACD;MAAEiE,QAAQ,EAAEZ,UAAU;MAAED,MAAM,EAAE;IAAK,CACzC,CAAC;IAED,IAAI,CAACc,eAAe,CAAC,CAAC;EAC1B;AACJ;AAACC,OAAA,CAAAzD,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ export type CorePulumiAppAdvancedVpcParams = Partial<{
|
|
|
6
6
|
useVpcEndpoints: boolean;
|
|
7
7
|
useExistingVpc: {
|
|
8
8
|
elasticSearchDomainVpcConfig?: aws.types.input.elasticsearch.DomainVpcOptions;
|
|
9
|
+
openSearchDomainVpcConfig?: aws.types.input.opensearch.DomainVpcOptions;
|
|
9
10
|
lambdaFunctionsVpcConfig: aws.types.input.lambda.FunctionVpcConfig;
|
|
10
11
|
};
|
|
11
12
|
}>;
|
|
@@ -74,6 +74,16 @@ function createCorePulumiApp(projectAppParams = {}) {
|
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
+
if (projectAppParams.openSearch) {
|
|
78
|
+
if (!useExistingVpc.openSearchDomainVpcConfig) {
|
|
79
|
+
throw new Error("Cannot specify `useExistingVpc` parameter because the `openSearchDomainVpcConfig` parameter wasn't provided.");
|
|
80
|
+
}
|
|
81
|
+
onResource(resource => {
|
|
82
|
+
if ((0, _pulumi2.isResourceOfType)(resource, aws.opensearch.Domain)) {
|
|
83
|
+
resource.config.vpcOptions(useExistingVpc.openSearchDomainVpcConfig);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
77
87
|
if (!useExistingVpc.lambdaFunctionsVpcConfig) {
|
|
78
88
|
throw new Error("Cannot specify `useExistingVpc` parameter because the `lambdaFunctionsVpcConfig` parameter wasn't provided.");
|
|
79
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["aws","_interopRequireWildcard","require","pulumi","_createCorePulumiApp","_pulumi2","_awsUtils","_configureS3BucketMalwareProtection","_wcp","createCorePulumiApp","projectAppParams","baseCreateCorePulumiApp","vpc","getParam","usingAdvancedVpcParams","useExistingVpc","args","app","license","License","fromEnvironment","canUseFileManagerThreatDetection","configureS3BucketMalwareProtection","resources","addResource","onResource","useVpcEndpoints","Error","elasticSearch","elasticSearchDomainVpcConfig","resource","isResourceOfType","elasticsearch","Domain","config","vpcOptions","lambdaFunctionsVpcConfig","lambda","Function","canUseVpc","meta","vpcConfig","iam","Role","isLambdaFunctionRole","RolePolicyAttachment","name","role","output","policyArn","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","region","getAwsRegion","ec2","Vpc","enableDnsSupport","enableDnsHostnames","subnets","routeTables","VpcEndpoint","vpcId","id","serviceName","interpolate","routeTableIds","privateSubnets","vpcEndpointType","privateDnsEnabled","securityGroupIds","defaultSecurityGroupId","subnetIds","private","map","subNet"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport {\n createCorePulumiApp as baseCreateCorePulumiApp,\n CreateCorePulumiAppParams as BaseCreateCorePulumiAppParams\n} from \"~/apps/core/createCorePulumiApp\";\nimport { isResourceOfType, PulumiAppParam } from \"@webiny/pulumi\";\nimport { getAwsRegion } from \"~/apps/awsUtils\";\nimport { configureS3BucketMalwareProtection } from \"~/enterprise/core/configureS3BucketMalwareProtection\";\nimport { License } from \"@webiny/wcp\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport type CorePulumiAppAdvancedVpcParams = Partial<{\n useVpcEndpoints: boolean;\n useExistingVpc: {\n elasticSearchDomainVpcConfig?: aws.types.input.elasticsearch.DomainVpcOptions;\n lambdaFunctionsVpcConfig: aws.types.input.lambda.FunctionVpcConfig;\n };\n}>;\n\nexport interface CreateCorePulumiAppParams extends Omit<BaseCreateCorePulumiAppParams, \"vpc\"> {\n vpc?: PulumiAppParam<boolean | CorePulumiAppAdvancedVpcParams>;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n return baseCreateCorePulumiApp({\n ...projectAppParams,\n // If using existing VPC, we ensure `vpc` param is set to `false`.\n vpc: ({ getParam }) => {\n const vpc = getParam(projectAppParams.vpc);\n if (!vpc) {\n // This could be `false` or `undefined`. If `undefined`, down the line,\n // this means \"deploy into VPC if dealing with a production environment\".\n return vpc;\n }\n\n // If using an existing VPC, we ensure Webiny does not deploy its own VPC.\n const usingAdvancedVpcParams = typeof vpc !== \"boolean\";\n if (usingAdvancedVpcParams && vpc.useExistingVpc) {\n return false;\n }\n\n return true;\n },\n async pulumi(...args) {\n const [app] = args;\n const { getParam } = app;\n const vpc = getParam(projectAppParams.vpc);\n const usingAdvancedVpcParams = vpc && typeof vpc !== \"boolean\";\n\n const license = await License.fromEnvironment();\n\n if (license.canUseFileManagerThreatDetection()) {\n configureS3BucketMalwareProtection(app);\n }\n\n // Not using advanced VPC params? Then immediately exit.\n if (!usingAdvancedVpcParams) {\n return projectAppParams.pulumi?.(...args);\n }\n\n const [{ resources, addResource, onResource }] = args;\n const { useExistingVpc, useVpcEndpoints } = vpc;\n\n // 1. We first deal with \"existing VPC\" setup.\n if (useExistingVpc) {\n if (\"useVpcEndpoints\" in vpc) {\n throw new Error(\n \"Cannot specify `useVpcEndpoints` parameter when using an existing VPC. The VPC endpoints configurations should be already defined within the existing VPC.\"\n );\n }\n\n if (projectAppParams.elasticSearch) {\n if (!useExistingVpc.elasticSearchDomainVpcConfig) {\n throw new Error(\n \"Cannot specify `useExistingVpc` parameter because the `elasticSearchDomainVpcConfig` parameter wasn't provided.\"\n );\n }\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.elasticsearch.Domain)) {\n resource.config.vpcOptions(\n useExistingVpc!.elasticSearchDomainVpcConfig\n );\n }\n });\n }\n\n if (!useExistingVpc.lambdaFunctionsVpcConfig) {\n throw new Error(\n \"Cannot specify `useExistingVpc` parameter because the `lambdaFunctionsVpcConfig` parameter wasn't provided.\"\n );\n }\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.lambda.Function)) {\n const canUseVpc = resource.meta.canUseVpc !== false;\n if (canUseVpc) {\n resource.config.vpcConfig(useExistingVpc!.lambdaFunctionsVpcConfig);\n }\n }\n\n if (isResourceOfType(resource, aws.iam.Role)) {\n if (resource.meta.isLambdaFunctionRole) {\n addResource(aws.iam.RolePolicyAttachment, {\n name: `${resource.name}-vpc-access-execution-role`,\n config: {\n role: resource.output.name,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n }\n });\n }\n }\n });\n\n return projectAppParams.pulumi?.(...args);\n }\n\n // 2. Now we deal with \"non-existing VPC\" setup.\n if (useVpcEndpoints) {\n const region = getAwsRegion(app);\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.ec2.Vpc)) {\n resource.config.enableDnsSupport(true);\n resource.config.enableDnsHostnames(true);\n }\n });\n\n const { vpc, subnets, routeTables } = resources.vpc!;\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-s3-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.s3`,\n routeTableIds: [routeTables.privateSubnets.output.id]\n }\n });\n\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-dynamodb-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.dynamodb`,\n routeTableIds: [routeTables.privateSubnets.output.id]\n }\n });\n\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-sqs-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.sqs`,\n vpcEndpointType: \"Interface\",\n privateDnsEnabled: true,\n securityGroupIds: [vpc.output.defaultSecurityGroupId],\n subnetIds: subnets.private.map(subNet => subNet.output.id)\n }\n });\n\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-events-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.events`,\n vpcEndpointType: \"Interface\",\n privateDnsEnabled: true,\n securityGroupIds: [vpc.output.defaultSecurityGroupId],\n subnetIds: subnets.private.map(subNet => subNet.output.id)\n }\n });\n }\n\n return projectAppParams.pulumi?.(...args);\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","pulumi","_createCorePulumiApp","_pulumi2","_awsUtils","_configureS3BucketMalwareProtection","_wcp","createCorePulumiApp","projectAppParams","baseCreateCorePulumiApp","vpc","getParam","usingAdvancedVpcParams","useExistingVpc","args","app","license","License","fromEnvironment","canUseFileManagerThreatDetection","configureS3BucketMalwareProtection","resources","addResource","onResource","useVpcEndpoints","Error","elasticSearch","elasticSearchDomainVpcConfig","resource","isResourceOfType","elasticsearch","Domain","config","vpcOptions","openSearch","openSearchDomainVpcConfig","opensearch","lambdaFunctionsVpcConfig","lambda","Function","canUseVpc","meta","vpcConfig","iam","Role","isLambdaFunctionRole","RolePolicyAttachment","name","role","output","policyArn","ManagedPolicy","AWSLambdaVPCAccessExecutionRole","region","getAwsRegion","ec2","Vpc","enableDnsSupport","enableDnsHostnames","subnets","routeTables","VpcEndpoint","vpcId","id","serviceName","interpolate","routeTableIds","privateSubnets","vpcEndpointType","privateDnsEnabled","securityGroupIds","defaultSecurityGroupId","subnetIds","private","map","subNet"],"sources":["createCorePulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport {\n createCorePulumiApp as baseCreateCorePulumiApp,\n CreateCorePulumiAppParams as BaseCreateCorePulumiAppParams\n} from \"~/apps/core/createCorePulumiApp\";\nimport { isResourceOfType, PulumiAppParam } from \"@webiny/pulumi\";\nimport { getAwsRegion } from \"~/apps/awsUtils\";\nimport { configureS3BucketMalwareProtection } from \"~/enterprise/core/configureS3BucketMalwareProtection\";\nimport { License } from \"@webiny/wcp\";\n\nexport type CorePulumiApp = ReturnType<typeof createCorePulumiApp>;\n\nexport type CorePulumiAppAdvancedVpcParams = Partial<{\n useVpcEndpoints: boolean;\n useExistingVpc: {\n elasticSearchDomainVpcConfig?: aws.types.input.elasticsearch.DomainVpcOptions;\n openSearchDomainVpcConfig?: aws.types.input.opensearch.DomainVpcOptions;\n lambdaFunctionsVpcConfig: aws.types.input.lambda.FunctionVpcConfig;\n };\n}>;\n\nexport interface CreateCorePulumiAppParams extends Omit<BaseCreateCorePulumiAppParams, \"vpc\"> {\n vpc?: PulumiAppParam<boolean | CorePulumiAppAdvancedVpcParams>;\n}\n\nexport function createCorePulumiApp(projectAppParams: CreateCorePulumiAppParams = {}) {\n return baseCreateCorePulumiApp({\n ...projectAppParams,\n // If using existing VPC, we ensure `vpc` param is set to `false`.\n vpc: ({ getParam }) => {\n const vpc = getParam(projectAppParams.vpc);\n if (!vpc) {\n // This could be `false` or `undefined`. If `undefined`, down the line,\n // this means \"deploy into VPC if dealing with a production environment\".\n return vpc;\n }\n\n // If using an existing VPC, we ensure Webiny does not deploy its own VPC.\n const usingAdvancedVpcParams = typeof vpc !== \"boolean\";\n if (usingAdvancedVpcParams && vpc.useExistingVpc) {\n return false;\n }\n\n return true;\n },\n async pulumi(...args) {\n const [app] = args;\n const { getParam } = app;\n const vpc = getParam(projectAppParams.vpc);\n const usingAdvancedVpcParams = vpc && typeof vpc !== \"boolean\";\n\n const license = await License.fromEnvironment();\n\n if (license.canUseFileManagerThreatDetection()) {\n configureS3BucketMalwareProtection(app);\n }\n\n // Not using advanced VPC params? Then immediately exit.\n if (!usingAdvancedVpcParams) {\n return projectAppParams.pulumi?.(...args);\n }\n\n const [{ resources, addResource, onResource }] = args;\n const { useExistingVpc, useVpcEndpoints } = vpc;\n\n // 1. We first deal with \"existing VPC\" setup.\n if (useExistingVpc) {\n if (\"useVpcEndpoints\" in vpc) {\n throw new Error(\n \"Cannot specify `useVpcEndpoints` parameter when using an existing VPC. The VPC endpoints configurations should be already defined within the existing VPC.\"\n );\n }\n\n if (projectAppParams.elasticSearch) {\n if (!useExistingVpc.elasticSearchDomainVpcConfig) {\n throw new Error(\n \"Cannot specify `useExistingVpc` parameter because the `elasticSearchDomainVpcConfig` parameter wasn't provided.\"\n );\n }\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.elasticsearch.Domain)) {\n resource.config.vpcOptions(\n useExistingVpc!.elasticSearchDomainVpcConfig\n );\n }\n });\n }\n\n if (projectAppParams.openSearch) {\n if (!useExistingVpc.openSearchDomainVpcConfig) {\n throw new Error(\n \"Cannot specify `useExistingVpc` parameter because the `openSearchDomainVpcConfig` parameter wasn't provided.\"\n );\n }\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.opensearch.Domain)) {\n resource.config.vpcOptions(useExistingVpc!.openSearchDomainVpcConfig);\n }\n });\n }\n\n if (!useExistingVpc.lambdaFunctionsVpcConfig) {\n throw new Error(\n \"Cannot specify `useExistingVpc` parameter because the `lambdaFunctionsVpcConfig` parameter wasn't provided.\"\n );\n }\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.lambda.Function)) {\n const canUseVpc = resource.meta.canUseVpc !== false;\n if (canUseVpc) {\n resource.config.vpcConfig(useExistingVpc!.lambdaFunctionsVpcConfig);\n }\n }\n\n if (isResourceOfType(resource, aws.iam.Role)) {\n if (resource.meta.isLambdaFunctionRole) {\n addResource(aws.iam.RolePolicyAttachment, {\n name: `${resource.name}-vpc-access-execution-role`,\n config: {\n role: resource.output.name,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n }\n });\n }\n }\n });\n\n return projectAppParams.pulumi?.(...args);\n }\n\n // 2. Now we deal with \"non-existing VPC\" setup.\n if (useVpcEndpoints) {\n const region = getAwsRegion(app);\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.ec2.Vpc)) {\n resource.config.enableDnsSupport(true);\n resource.config.enableDnsHostnames(true);\n }\n });\n\n const { vpc, subnets, routeTables } = resources.vpc!;\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-s3-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.s3`,\n routeTableIds: [routeTables.privateSubnets.output.id]\n }\n });\n\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-dynamodb-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.dynamodb`,\n routeTableIds: [routeTables.privateSubnets.output.id]\n }\n });\n\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-sqs-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.sqs`,\n vpcEndpointType: \"Interface\",\n privateDnsEnabled: true,\n securityGroupIds: [vpc.output.defaultSecurityGroupId],\n subnetIds: subnets.private.map(subNet => subNet.output.id)\n }\n });\n\n addResource(aws.ec2.VpcEndpoint, {\n name: \"vpc-events-vpc-endpoint\",\n config: {\n vpcId: vpc.output.id,\n serviceName: pulumi.interpolate`com.amazonaws.${region}.events`,\n vpcEndpointType: \"Interface\",\n privateDnsEnabled: true,\n securityGroupIds: [vpc.output.defaultSecurityGroupId],\n subnetIds: subnets.private.map(subNet => subNet.output.id)\n }\n });\n }\n\n return projectAppParams.pulumi?.(...args);\n }\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as aws from "@pulumi/aws";
|
|
2
|
+
import type { CreateSyncSystemPulumiAppParams as BaseCreateSyncSystemPulumiAppParams } from "../apps/syncSystem/createSyncSystemPulumiApp";
|
|
3
|
+
import type { PulumiAppParam } from "@webiny/pulumi";
|
|
4
|
+
export type SyncSystemPulumiApp = ReturnType<typeof createSyncSystemPulumiApp>;
|
|
5
|
+
export type SyncSystemPulumiAppAdvancedVpcParams = Partial<{
|
|
6
|
+
useVpcEndpoints: boolean;
|
|
7
|
+
useExistingVpc: {
|
|
8
|
+
elasticSearchDomainVpcConfig?: aws.types.input.elasticsearch.DomainVpcOptions;
|
|
9
|
+
openSearchDomainVpcConfig?: aws.types.input.opensearch.DomainVpcOptions;
|
|
10
|
+
lambdaFunctionsVpcConfig: aws.types.input.lambda.FunctionVpcConfig;
|
|
11
|
+
};
|
|
12
|
+
}>;
|
|
13
|
+
export interface CreateSyncSystemPulumiAppParams extends Omit<BaseCreateSyncSystemPulumiAppParams, "vpc"> {
|
|
14
|
+
vpc?: PulumiAppParam<boolean | SyncSystemPulumiAppAdvancedVpcParams>;
|
|
15
|
+
}
|
|
16
|
+
export declare function createSyncSystemPulumiApp(projectAppParams?: CreateSyncSystemPulumiAppParams): import("@webiny/pulumi").PulumiApp<{
|
|
17
|
+
dynamodbTable: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/table").Table>;
|
|
18
|
+
dynamodbTableArn: import("@pulumi/pulumi").Output<string>;
|
|
19
|
+
dynamodbTableName: import("@pulumi/pulumi").Output<string>;
|
|
20
|
+
dynamodbTableHashKey: import("@pulumi/pulumi").Output<string>;
|
|
21
|
+
dynamodbTableRangeKey: import("@pulumi/pulumi").Output<string | undefined>;
|
|
22
|
+
sqs: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/sqs/queue").Queue>;
|
|
23
|
+
sqsArn: import("@pulumi/pulumi").Output<string>;
|
|
24
|
+
primary: {};
|
|
25
|
+
secondary: {};
|
|
26
|
+
}>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createSyncSystemPulumiApp = createSyncSystemPulumiApp;
|
|
8
|
+
var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
9
|
+
var _createSyncSystemPulumiApp = require("../apps/syncSystem/createSyncSystemPulumiApp");
|
|
10
|
+
var _pulumi = require("@webiny/pulumi");
|
|
11
|
+
function createSyncSystemPulumiApp(projectAppParams = {}) {
|
|
12
|
+
return (0, _createSyncSystemPulumiApp.createSyncSystemPulumiApp)({
|
|
13
|
+
...projectAppParams,
|
|
14
|
+
// If using existing VPC, we ensure `vpc` param is set to `false`.
|
|
15
|
+
vpc: ({
|
|
16
|
+
getParam
|
|
17
|
+
}) => {
|
|
18
|
+
const vpc = getParam(projectAppParams.vpc);
|
|
19
|
+
const usingAdvancedVpcParams = vpc && typeof vpc !== "boolean";
|
|
20
|
+
return usingAdvancedVpcParams && vpc.useExistingVpc ? false : Boolean(vpc);
|
|
21
|
+
},
|
|
22
|
+
pulumi(...args) {
|
|
23
|
+
const [{
|
|
24
|
+
getParam
|
|
25
|
+
}] = args;
|
|
26
|
+
const vpc = getParam(projectAppParams.vpc);
|
|
27
|
+
const usingAdvancedVpcParams = vpc && typeof vpc !== "boolean";
|
|
28
|
+
|
|
29
|
+
// Not using advanced VPC params? Then immediately exit.
|
|
30
|
+
if (!usingAdvancedVpcParams) {
|
|
31
|
+
return projectAppParams.pulumi?.(...args);
|
|
32
|
+
}
|
|
33
|
+
const [{
|
|
34
|
+
onResource,
|
|
35
|
+
addResource
|
|
36
|
+
}] = args;
|
|
37
|
+
const {
|
|
38
|
+
useExistingVpc
|
|
39
|
+
} = vpc;
|
|
40
|
+
|
|
41
|
+
// 1. We first deal with "existing VPC" setup.
|
|
42
|
+
if (useExistingVpc) {
|
|
43
|
+
if (!useExistingVpc.lambdaFunctionsVpcConfig) {
|
|
44
|
+
throw new Error("Cannot specify `useExistingVpc` parameter because the `lambdaFunctionsVpcConfig` parameter wasn't provided.");
|
|
45
|
+
}
|
|
46
|
+
onResource(resource => {
|
|
47
|
+
if ((0, _pulumi.isResourceOfType)(resource, aws.lambda.Function)) {
|
|
48
|
+
const canUseVpc = resource.meta.canUseVpc !== false;
|
|
49
|
+
if (canUseVpc) {
|
|
50
|
+
resource.config.vpcConfig(useExistingVpc.lambdaFunctionsVpcConfig);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if ((0, _pulumi.isResourceOfType)(resource, aws.iam.Role)) {
|
|
54
|
+
if (resource.meta.isLambdaFunctionRole) {
|
|
55
|
+
addResource(aws.iam.RolePolicyAttachment, {
|
|
56
|
+
name: `${resource.name}-vpc-access-execution-role`,
|
|
57
|
+
config: {
|
|
58
|
+
role: resource.output.name,
|
|
59
|
+
policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return projectAppParams.pulumi?.(...args);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=createSyncSystemPulumiApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["aws","_interopRequireWildcard","require","_createSyncSystemPulumiApp","_pulumi","createSyncSystemPulumiApp","projectAppParams","baseCreateSyncSystemPulumiApp","vpc","getParam","usingAdvancedVpcParams","useExistingVpc","Boolean","pulumi","args","onResource","addResource","lambdaFunctionsVpcConfig","Error","resource","isResourceOfType","lambda","Function","canUseVpc","meta","config","vpcConfig","iam","Role","isLambdaFunctionRole","RolePolicyAttachment","name","role","output","policyArn","ManagedPolicy","AWSLambdaVPCAccessExecutionRole"],"sources":["createSyncSystemPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\nimport type { CreateSyncSystemPulumiAppParams as BaseCreateSyncSystemPulumiAppParams } from \"~/apps/syncSystem/createSyncSystemPulumiApp\";\nimport { createSyncSystemPulumiApp as baseCreateSyncSystemPulumiApp } from \"~/apps/syncSystem/createSyncSystemPulumiApp\";\nimport type { PulumiAppParam } from \"@webiny/pulumi\";\nimport { isResourceOfType } from \"@webiny/pulumi\";\n\nexport type SyncSystemPulumiApp = ReturnType<typeof createSyncSystemPulumiApp>;\n\nexport type SyncSystemPulumiAppAdvancedVpcParams = Partial<{\n useVpcEndpoints: boolean;\n useExistingVpc: {\n elasticSearchDomainVpcConfig?: aws.types.input.elasticsearch.DomainVpcOptions;\n openSearchDomainVpcConfig?: aws.types.input.opensearch.DomainVpcOptions;\n lambdaFunctionsVpcConfig: aws.types.input.lambda.FunctionVpcConfig;\n };\n}>;\n\nexport interface CreateSyncSystemPulumiAppParams\n extends Omit<BaseCreateSyncSystemPulumiAppParams, \"vpc\"> {\n vpc?: PulumiAppParam<boolean | SyncSystemPulumiAppAdvancedVpcParams>;\n}\n\nexport function createSyncSystemPulumiApp(projectAppParams: CreateSyncSystemPulumiAppParams = {}) {\n return baseCreateSyncSystemPulumiApp({\n ...projectAppParams,\n // If using existing VPC, we ensure `vpc` param is set to `false`.\n vpc: ({ getParam }) => {\n const vpc = getParam(projectAppParams.vpc);\n const usingAdvancedVpcParams = vpc && typeof vpc !== \"boolean\";\n return usingAdvancedVpcParams && vpc.useExistingVpc ? false : Boolean(vpc);\n },\n pulumi(...args) {\n const [{ getParam }] = args;\n const vpc = getParam(projectAppParams.vpc);\n const usingAdvancedVpcParams = vpc && typeof vpc !== \"boolean\";\n\n // Not using advanced VPC params? Then immediately exit.\n if (!usingAdvancedVpcParams) {\n return projectAppParams.pulumi?.(...args);\n }\n\n const [{ onResource, addResource }] = args;\n const { useExistingVpc } = vpc;\n\n // 1. We first deal with \"existing VPC\" setup.\n if (useExistingVpc) {\n if (!useExistingVpc.lambdaFunctionsVpcConfig) {\n throw new Error(\n \"Cannot specify `useExistingVpc` parameter because the `lambdaFunctionsVpcConfig` parameter wasn't provided.\"\n );\n }\n\n onResource(resource => {\n if (isResourceOfType(resource, aws.lambda.Function)) {\n const canUseVpc = resource.meta.canUseVpc !== false;\n if (canUseVpc) {\n resource.config.vpcConfig(useExistingVpc!.lambdaFunctionsVpcConfig);\n }\n }\n\n if (isResourceOfType(resource, aws.iam.Role)) {\n if (resource.meta.isLambdaFunctionRole) {\n addResource(aws.iam.RolePolicyAttachment, {\n name: `${resource.name}-vpc-access-execution-role`,\n config: {\n role: resource.output.name,\n policyArn: aws.iam.ManagedPolicy.AWSLambdaVPCAccessExecutionRole\n }\n });\n }\n }\n });\n }\n\n return projectAppParams.pulumi?.(...args);\n }\n });\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,0BAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAkBO,SAASG,yBAAyBA,CAACC,gBAAiD,GAAG,CAAC,CAAC,EAAE;EAC9F,OAAO,IAAAC,oDAA6B,EAAC;IACjC,GAAGD,gBAAgB;IACnB;IACAE,GAAG,EAAEA,CAAC;MAAEC;IAAS,CAAC,KAAK;MACnB,MAAMD,GAAG,GAAGC,QAAQ,CAACH,gBAAgB,CAACE,GAAG,CAAC;MAC1C,MAAME,sBAAsB,GAAGF,GAAG,IAAI,OAAOA,GAAG,KAAK,SAAS;MAC9D,OAAOE,sBAAsB,IAAIF,GAAG,CAACG,cAAc,GAAG,KAAK,GAAGC,OAAO,CAACJ,GAAG,CAAC;IAC9E,CAAC;IACDK,MAAMA,CAAC,GAAGC,IAAI,EAAE;MACZ,MAAM,CAAC;QAAEL;MAAS,CAAC,CAAC,GAAGK,IAAI;MAC3B,MAAMN,GAAG,GAAGC,QAAQ,CAACH,gBAAgB,CAACE,GAAG,CAAC;MAC1C,MAAME,sBAAsB,GAAGF,GAAG,IAAI,OAAOA,GAAG,KAAK,SAAS;;MAE9D;MACA,IAAI,CAACE,sBAAsB,EAAE;QACzB,OAAOJ,gBAAgB,CAACO,MAAM,GAAG,GAAGC,IAAI,CAAC;MAC7C;MAEA,MAAM,CAAC;QAAEC,UAAU;QAAEC;MAAY,CAAC,CAAC,GAAGF,IAAI;MAC1C,MAAM;QAAEH;MAAe,CAAC,GAAGH,GAAG;;MAE9B;MACA,IAAIG,cAAc,EAAE;QAChB,IAAI,CAACA,cAAc,CAACM,wBAAwB,EAAE;UAC1C,MAAM,IAAIC,KAAK,CACX,6GACJ,CAAC;QACL;QAEAH,UAAU,CAACI,QAAQ,IAAI;UACnB,IAAI,IAAAC,wBAAgB,EAACD,QAAQ,EAAEnB,GAAG,CAACqB,MAAM,CAACC,QAAQ,CAAC,EAAE;YACjD,MAAMC,SAAS,GAAGJ,QAAQ,CAACK,IAAI,CAACD,SAAS,KAAK,KAAK;YACnD,IAAIA,SAAS,EAAE;cACXJ,QAAQ,CAACM,MAAM,CAACC,SAAS,CAACf,cAAc,CAAEM,wBAAwB,CAAC;YACvE;UACJ;UAEA,IAAI,IAAAG,wBAAgB,EAACD,QAAQ,EAAEnB,GAAG,CAAC2B,GAAG,CAACC,IAAI,CAAC,EAAE;YAC1C,IAAIT,QAAQ,CAACK,IAAI,CAACK,oBAAoB,EAAE;cACpCb,WAAW,CAAChB,GAAG,CAAC2B,GAAG,CAACG,oBAAoB,EAAE;gBACtCC,IAAI,EAAE,GAAGZ,QAAQ,CAACY,IAAI,4BAA4B;gBAClDN,MAAM,EAAE;kBACJO,IAAI,EAAEb,QAAQ,CAACc,MAAM,CAACF,IAAI;kBAC1BG,SAAS,EAAElC,GAAG,CAAC2B,GAAG,CAACQ,aAAa,CAACC;gBACrC;cACJ,CAAC,CAAC;YACN;UACJ;QACJ,CAAC,CAAC;MACN;MAEA,OAAO9B,gBAAgB,CAACO,MAAM,GAAG,GAAGC,IAAI,CAAC;IAC7C;EACJ,CAAC,CAAC;AACN","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getEnvVariableAwsRegion: () => string;
|
package/env/awsRegion.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getEnvVariableAwsRegion = void 0;
|
|
7
|
+
var _base = require("./base");
|
|
8
|
+
const getEnvVariableAwsRegion = exports.getEnvVariableAwsRegion = (0, _base.createGetEnv)({
|
|
9
|
+
name: "AWS_REGION"
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=awsRegion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_base","require","getEnvVariableAwsRegion","exports","createGetEnv","name"],"sources":["awsRegion.ts"],"sourcesContent":["import { createGetEnv } from \"~/env/base\";\n\nexport const getEnvVariableAwsRegion = createGetEnv({\n name: \"AWS_REGION\"\n});\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAAE,kBAAY,EAAC;EAChDC,IAAI,EAAE;AACV,CAAC,CAAC","ignoreList":[]}
|
package/env/base.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ICreateGetEnvParams<T = unknown> {
|
|
2
|
+
name: string;
|
|
3
|
+
defaultValue: T;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* TODO @adrian @pavel verify please
|
|
7
|
+
*
|
|
8
|
+
*
|
|
9
|
+
* We do not allow env with name "undefined" or "null". It is considered as an empty string.
|
|
10
|
+
* Sometimes, when setting env variable, a user error might set it to "undefined" or "null" value by mistake.
|
|
11
|
+
*
|
|
12
|
+
* We doubt that undefined and null are what users meant to set as the value of the environment variable.
|
|
13
|
+
*/
|
|
14
|
+
export declare const createGetEnv: (params: Pick<ICreateGetEnvParams, "name">) => () => string;
|
|
15
|
+
export declare const createGetEnvOptional: <T>(params: ICreateGetEnvParams<T>) => () => string | T;
|
package/env/base.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createGetEnvOptional = exports.createGetEnv = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* TODO @adrian @pavel verify please
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* We do not allow env with name "undefined" or "null". It is considered as an empty string.
|
|
12
|
+
* Sometimes, when setting env variable, a user error might set it to "undefined" or "null" value by mistake.
|
|
13
|
+
*
|
|
14
|
+
* We doubt that undefined and null are what users meant to set as the value of the environment variable.
|
|
15
|
+
*/
|
|
16
|
+
const createGetEnv = params => {
|
|
17
|
+
return () => {
|
|
18
|
+
const value = process.env[params.name];
|
|
19
|
+
if (!value?.length || value === "undefined" || value === "null") {
|
|
20
|
+
throw new Error(`Missing ${params.name} environment variable.`);
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
exports.createGetEnv = createGetEnv;
|
|
26
|
+
const createGetEnvOptional = params => {
|
|
27
|
+
return () => {
|
|
28
|
+
const value = process.env[params.name];
|
|
29
|
+
if (!value?.length || value === "undefined" || value === "null") {
|
|
30
|
+
return params.defaultValue;
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
exports.createGetEnvOptional = createGetEnvOptional;
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=base.js.map
|
package/env/base.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createGetEnv","params","value","process","env","name","length","Error","exports","createGetEnvOptional","defaultValue"],"sources":["base.ts"],"sourcesContent":["export interface ICreateGetEnvParams<T = unknown> {\n name: string;\n defaultValue: T;\n}\n\n/**\n * TODO @adrian @pavel verify please\n *\n *\n * We do not allow env with name \"undefined\" or \"null\". It is considered as an empty string.\n * Sometimes, when setting env variable, a user error might set it to \"undefined\" or \"null\" value by mistake.\n *\n * We doubt that undefined and null are what users meant to set as the value of the environment variable.\n */\nexport const createGetEnv = (params: Pick<ICreateGetEnvParams, \"name\">) => {\n return (): string => {\n const value = process.env[params.name];\n if (!value?.length || value === \"undefined\" || value === \"null\") {\n throw new Error(`Missing ${params.name} environment variable.`);\n }\n return value;\n };\n};\n\nexport const createGetEnvOptional = <T>(params: ICreateGetEnvParams<T>) => {\n return (): string | T => {\n const value = process.env[params.name];\n if (!value?.length || value === \"undefined\" || value === \"null\") {\n return params.defaultValue;\n }\n return value;\n };\n};\n"],"mappings":";;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,GAAIC,MAAyC,IAAK;EACvE,OAAO,MAAc;IACjB,MAAMC,KAAK,GAAGC,OAAO,CAACC,GAAG,CAACH,MAAM,CAACI,IAAI,CAAC;IACtC,IAAI,CAACH,KAAK,EAAEI,MAAM,IAAIJ,KAAK,KAAK,WAAW,IAAIA,KAAK,KAAK,MAAM,EAAE;MAC7D,MAAM,IAAIK,KAAK,CAAC,WAAWN,MAAM,CAACI,IAAI,wBAAwB,CAAC;IACnE;IACA,OAAOH,KAAK;EAChB,CAAC;AACL,CAAC;AAACM,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAEK,MAAMS,oBAAoB,GAAOR,MAA8B,IAAK;EACvE,OAAO,MAAkB;IACrB,MAAMC,KAAK,GAAGC,OAAO,CAACC,GAAG,CAACH,MAAM,CAACI,IAAI,CAAC;IACtC,IAAI,CAACH,KAAK,EAAEI,MAAM,IAAIJ,KAAK,KAAK,WAAW,IAAIA,KAAK,KAAK,MAAM,EAAE;MAC7D,OAAOD,MAAM,CAACS,YAAY;IAC9B;IACA,OAAOR,KAAK;EAChB,CAAC;AACL,CAAC;AAACM,OAAA,CAAAC,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
package/env/env.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getEnvVariableWebinyEnv: () => string;
|
package/env/env.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getEnvVariableWebinyEnv = void 0;
|
|
7
|
+
var _base = require("./base");
|
|
8
|
+
const getEnvVariableWebinyEnv = exports.getEnvVariableWebinyEnv = (0, _base.createGetEnv)({
|
|
9
|
+
name: "WEBINY_ENV"
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=env.js.map
|
package/env/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_base","require","getEnvVariableWebinyEnv","exports","createGetEnv","name"],"sources":["env.ts"],"sourcesContent":["import { createGetEnv } from \"~/env/base\";\n\nexport const getEnvVariableWebinyEnv = createGetEnv({\n name: \"WEBINY_ENV\"\n});\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAAE,kBAAY,EAAC;EAChDC,IAAI,EAAE;AACV,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getEnvVariableWebinyProjectName: () => string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getEnvVariableWebinyProjectName = void 0;
|
|
7
|
+
var _base = require("./base");
|
|
8
|
+
const getEnvVariableWebinyProjectName = exports.getEnvVariableWebinyProjectName = (0, _base.createGetEnv)({
|
|
9
|
+
name: "WEBINY_PROJECT_NAME"
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=projectName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_base","require","getEnvVariableWebinyProjectName","exports","createGetEnv","name"],"sources":["projectName.ts"],"sourcesContent":["import { createGetEnv } from \"~/env/base\";\n\nexport const getEnvVariableWebinyProjectName = createGetEnv({\n name: \"WEBINY_PROJECT_NAME\"\n});\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,+BAA+B,GAAAC,OAAA,CAAAD,+BAAA,GAAG,IAAAE,kBAAY,EAAC;EACxDC,IAAI,EAAE;AACV,CAAC,CAAC","ignoreList":[]}
|
package/env/variant.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getEnvVariableWebinyVariant: () => string;
|
package/env/variant.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getEnvVariableWebinyVariant = void 0;
|
|
7
|
+
var _base = require("./base");
|
|
8
|
+
const getEnvVariableWebinyVariant = exports.getEnvVariableWebinyVariant = (0, _base.createGetEnvOptional)({
|
|
9
|
+
name: "WEBINY_ENV_VARIANT",
|
|
10
|
+
defaultValue: ""
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=variant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_base","require","getEnvVariableWebinyVariant","exports","createGetEnvOptional","name","defaultValue"],"sources":["variant.ts"],"sourcesContent":["import { createGetEnvOptional } from \"~/env/base\";\n\nexport const getEnvVariableWebinyVariant = createGetEnvOptional<string>({\n name: \"WEBINY_ENV_VARIANT\",\n defaultValue: \"\"\n});\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEO,MAAMC,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAG,IAAAE,0BAAoB,EAAS;EACpEC,IAAI,EAAE,oBAAoB;EAC1BC,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
|