@webiny/pulumi-aws 5.33.5-beta.0 → 5.34.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/admin/createAdminPulumiApp.d.ts +5 -5
- package/apps/admin/createAdminPulumiApp.js +3 -7
- package/apps/admin/createAdminPulumiApp.js.map +1 -1
- package/apps/api/ApiApwScheduler.d.ts +8 -9
- package/apps/api/ApiApwScheduler.js +6 -12
- package/apps/api/ApiApwScheduler.js.map +1 -1
- package/apps/api/ApiCloudfront.d.ts +1 -2
- package/apps/api/ApiCloudfront.js +2 -4
- package/apps/api/ApiCloudfront.js.map +1 -1
- package/apps/api/ApiFileManager.d.ts +4 -5
- package/apps/api/ApiFileManager.js +8 -13
- package/apps/api/ApiFileManager.js.map +1 -1
- package/apps/api/ApiGateway.d.ts +5 -6
- package/apps/api/ApiGateway.js +2 -4
- package/apps/api/ApiGateway.js.map +1 -1
- package/apps/api/ApiGraphql.d.ts +3 -3
- package/apps/api/ApiGraphql.js +5 -11
- package/apps/api/ApiGraphql.js.map +1 -1
- package/apps/api/ApiHeadlessCMS.d.ts +3 -4
- package/apps/api/ApiHeadlessCMS.js +5 -11
- package/apps/api/ApiHeadlessCMS.js.map +1 -1
- package/apps/api/ApiPageBuilder.d.ts +10 -11
- package/apps/api/ApiPageBuilder.js +37 -42
- package/apps/api/ApiPageBuilder.js.map +1 -1
- package/apps/api/createApiPulumiApp.d.ts +24 -24
- package/apps/api/createApiPulumiApp.js +2 -2
- package/apps/api/createApiPulumiApp.js.map +1 -1
- package/apps/awsUtils.js +2 -4
- package/apps/awsUtils.js.map +1 -1
- package/apps/core/CoreCognito.d.ts +2 -3
- package/apps/core/CoreCognito.js +2 -4
- package/apps/core/CoreCognito.js.map +1 -1
- package/apps/core/CoreDynamo.d.ts +1 -2
- package/apps/core/CoreDynamo.js +2 -4
- package/apps/core/CoreDynamo.js.map +1 -1
- package/apps/core/CoreElasticSearch.d.ts +7 -7
- package/apps/core/CoreElasticSearch.js +3 -5
- package/apps/core/CoreElasticSearch.js.map +1 -1
- package/apps/core/CoreEventBus.d.ts +1 -2
- package/apps/core/CoreEventBus.js +2 -4
- package/apps/core/CoreEventBus.js.map +1 -1
- package/apps/core/CoreFileManager.d.ts +2 -3
- package/apps/core/CoreFileManager.js +2 -4
- package/apps/core/CoreFileManager.js.map +1 -1
- package/apps/core/CoreOpenSearch.d.ts +7 -7
- package/apps/core/CoreOpenSearch.js +3 -5
- package/apps/core/CoreOpenSearch.js.map +1 -1
- package/apps/core/CoreVpc.d.ts +3 -4
- package/apps/core/CoreVpc.js +2 -4
- package/apps/core/CoreVpc.js.map +1 -1
- package/apps/core/createCorePulumiApp.d.ts +15 -15
- package/apps/core/createCorePulumiApp.js +3 -7
- package/apps/core/createCorePulumiApp.js.map +1 -1
- package/apps/createAppBucket.d.ts +5 -5
- package/apps/createAppBucket.js +2 -4
- package/apps/createAppBucket.js.map +1 -1
- package/apps/lambdaUtils.d.ts +1 -1
- package/apps/lambdaUtils.js +2 -4
- package/apps/lambdaUtils.js.map +1 -1
- package/apps/react/createReactPulumiApp.d.ts +5 -5
- package/apps/react/createReactPulumiApp.js +33 -10
- package/apps/react/createReactPulumiApp.js.map +1 -1
- package/apps/tenantRouter.js +6 -12
- package/apps/tenantRouter.js.map +1 -1
- package/apps/website/WebsitePrerendering.d.ts +17 -18
- package/apps/website/WebsitePrerendering.js +8 -13
- package/apps/website/WebsitePrerendering.js.map +1 -1
- package/apps/website/createWebsitePulumiApp.d.ts +27 -27
- package/apps/website/createWebsitePulumiApp.js +6 -12
- package/apps/website/createWebsitePulumiApp.js.map +1 -1
- package/components/tenantRouter/WebsiteTenantRouter.js +3 -5
- package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
- package/package.json +13 -13
- package/utils/crawlDirectory.js +2 -4
- package/utils/crawlDirectory.js.map +1 -1
- package/utils/getPresignedPost.js +1 -1
- package/utils/lambdaEnvVariables.d.ts +1 -1
- package/utils/lambdaEnvVariables.js +9 -15
- package/utils/lambdaEnvVariables.js.map +1 -1
- package/utils/tagResources.js +5 -11
- package/utils/tagResources.js.map +1 -1
- package/utils/uploadFolderToS3.js +3 -8
- package/utils/uploadFolderToS3.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createWebsitePulumiApp","projectAppParams","app","createPulumiApp","name","path","config","program","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","pulumi","addHandler","prod","params","run","env","core","addModule","CoreOutput","vpcEnabled","vpc","VpcConfig","enabled","appBucket","createPrivateAppBucket","appCloudfront","addResource","aws","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","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","appUrl","interpolate","domainName","deliveryUrl","bucket","cloudfrontId","id","domains","applyCustomDomain","previewDomains","process","WCP_PROJECT_ENVIRONMENT","WEBINY_MULTI_TENANCY","applyTenantRouter","addOutputs","appId","appStorage","apply","value","appDomain","deliveryId","deliveryStorage","deliveryDomain","tagResources","WbyProjectName","String","WbyEnvironment","delivery","withCommonLambdaEnvVariables"],"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, VpcConfig } from \"~/apps\";\nimport { tagResources, withCommonLambdaEnvVariables } from \"~/utils\";\nimport { applyTenantRouter } from \"~/apps/tenantRouter\";\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\nexport const createWebsitePulumiApp = (projectAppParams: CreateWebsitePulumiAppParams = {}) => {\n const app = 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 prod = app.params.run.env === \"prod\";\n\n // Register core output as a module available for all other modules\n const core = app.addModule(CoreOutput);\n\n // Register VPC config module to be available to other modules.\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? prod;\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 });\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 ],\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 });\n\n const prerendering = createPrerenderingService(app, {\n dbTableName: core.primaryDynamodbTableName,\n dbTableHashKey: core.primaryDynamodbTableHashKey,\n dbTableRangeKey: core.primaryDynamodbTableRangeKey,\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 applyTenantRouter(app, deliveryCloudfront);\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 appUrl: appCloudfront.output.domainName.apply(value => `https://${value}`),\n appDomain: appCloudfront.output.domainName,\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 deliveryDomain: deliveryCloudfront.output.domainName,\n deliveryUrl: deliveryCloudfront.output.domainName.apply(value => `https://${value}`)\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 app: {\n ...appBucket,\n cloudfront: appCloudfront\n },\n delivery: {\n ...deliveryBucket,\n cloudfront: deliveryCloudfront\n }\n };\n }\n });\n\n return withCommonLambdaEnvVariables(app);\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createWebsitePulumiApp","projectAppParams","app","createPulumiApp","name","path","config","program","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","pulumi","addHandler","prod","params","run","env","core","addModule","CoreOutput","vpcEnabled","vpc","VpcConfig","enabled","appBucket","createPrivateAppBucket","appCloudfront","addResource","aws","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","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","appUrl","interpolate","domainName","deliveryUrl","bucket","cloudfrontId","id","domains","applyCustomDomain","previewDomains","process","WCP_PROJECT_ENVIRONMENT","WEBINY_MULTI_TENANCY","applyTenantRouter","addOutputs","appId","appStorage","apply","value","appDomain","deliveryId","deliveryStorage","deliveryDomain","tagResources","WbyProjectName","String","WbyEnvironment","delivery","withCommonLambdaEnvVariables"],"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, VpcConfig } from \"~/apps\";\nimport { tagResources, withCommonLambdaEnvVariables } from \"~/utils\";\nimport { applyTenantRouter } from \"~/apps/tenantRouter\";\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\nexport const createWebsitePulumiApp = (projectAppParams: CreateWebsitePulumiAppParams = {}) => {\n const app = 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 prod = app.params.run.env === \"prod\";\n\n // Register core output as a module available for all other modules\n const core = app.addModule(CoreOutput);\n\n // Register VPC config module to be available to other modules.\n const vpcEnabled = app.getParam(projectAppParams?.vpc) ?? prod;\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 });\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 ],\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 });\n\n const prerendering = createPrerenderingService(app, {\n dbTableName: core.primaryDynamodbTableName,\n dbTableHashKey: core.primaryDynamodbTableHashKey,\n dbTableRangeKey: core.primaryDynamodbTableRangeKey,\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 applyTenantRouter(app, deliveryCloudfront);\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 appUrl: appCloudfront.output.domainName.apply(value => `https://${value}`),\n appDomain: appCloudfront.output.domainName,\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 deliveryDomain: deliveryCloudfront.output.domainName,\n deliveryUrl: deliveryCloudfront.output.domainName.apply(value => `https://${value}`)\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 app: {\n ...appBucket,\n cloudfront: appCloudfront\n },\n delivery: {\n ...deliveryBucket,\n cloudfront: deliveryCloudfront\n }\n };\n }\n });\n\n return withCommonLambdaEnvVariables(app);\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
6
|
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
@@ -17,10 +19,6 @@ var aws = _interopRequireWildcard(require("@pulumi/aws"));
|
|
|
17
19
|
|
|
18
20
|
var _utils = require("@webiny/cli-plugin-deploy-pulumi/utils");
|
|
19
21
|
|
|
20
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
-
|
|
22
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
-
|
|
24
22
|
function createFunctionArchive({
|
|
25
23
|
dynamoDbTable,
|
|
26
24
|
region
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","pulumi","asset","AssetArchive","StringAsset","WebsiteTenantRouter","ComponentResource","constructor","name","config","opts","getStackOutput","folder","apiFolder","env","apiEnv","String","process","WEBINY_ENV","inlinePolicies","Promise","all","aws","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","arn","timeout","memorySize","code","provider","registerOutputs"],"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\";\n\ninterface Config {\n apiFolder?: string;\n apiEnv?: 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<{ region: string; dynamoDbTable: string }>(\n {\n folder: config.apiFolder || \"api\",\n env: config.apiEnv || String(process.env.WEBINY_ENV)\n }\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: \"nodejs14.x\",\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":"
|
|
1
|
+
{"version":3,"names":["createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","pulumi","asset","AssetArchive","StringAsset","WebsiteTenantRouter","ComponentResource","constructor","name","config","opts","getStackOutput","folder","apiFolder","env","apiEnv","String","process","WEBINY_ENV","inlinePolicies","Promise","all","aws","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","arn","timeout","memorySize","code","provider","registerOutputs"],"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\";\n\ninterface Config {\n apiFolder?: string;\n apiEnv?: 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<{ region: string; dynamoDbTable: string }>(\n {\n folder: config.apiFolder || \"api\",\n env: config.apiEnv || String(process.env.WEBINY_ENV)\n }\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: \"nodejs14.x\",\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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/pulumi-aws",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.34.0-beta.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -15,21 +15,21 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@pulumi/aws": "^5.8.0",
|
|
17
17
|
"@pulumi/pulumi": "^3.34.0",
|
|
18
|
-
"@webiny/cli-plugin-deploy-pulumi": "5.
|
|
19
|
-
"@webiny/pulumi": "5.
|
|
18
|
+
"@webiny/cli-plugin-deploy-pulumi": "5.34.0-beta.0",
|
|
19
|
+
"@webiny/pulumi": "5.34.0-beta.0",
|
|
20
20
|
"form-data": "4.0.0",
|
|
21
21
|
"node-fetch": "2.6.7"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@babel/cli": "^7.
|
|
25
|
-
"@babel/core": "^7.
|
|
26
|
-
"@babel/preset-env": "^7.
|
|
27
|
-
"@babel/preset-typescript": "^7.
|
|
28
|
-
"@babel/runtime": "^7.
|
|
29
|
-
"@webiny/api-page-builder": "^5.
|
|
30
|
-
"@webiny/aws-layers": "^5.
|
|
31
|
-
"@webiny/cli": "^5.
|
|
32
|
-
"@webiny/project-utils": "^5.
|
|
24
|
+
"@babel/cli": "^7.19.3",
|
|
25
|
+
"@babel/core": "^7.19.3",
|
|
26
|
+
"@babel/preset-env": "^7.19.4",
|
|
27
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
28
|
+
"@babel/runtime": "^7.19.0",
|
|
29
|
+
"@webiny/api-page-builder": "^5.34.0-beta.0",
|
|
30
|
+
"@webiny/aws-layers": "^5.34.0-beta.0",
|
|
31
|
+
"@webiny/cli": "^5.34.0-beta.0",
|
|
32
|
+
"@webiny/project-utils": "^5.34.0-beta.0",
|
|
33
33
|
"chalk": "^4.1.0",
|
|
34
34
|
"lodash": "^4.5.0",
|
|
35
35
|
"mime": "2.5.2",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
]
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "9648454619a1bfb35040eb00f27a64ed75194e61"
|
|
53
53
|
}
|
package/utils/crawlDirectory.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -7,10 +9,6 @@ exports.crawlDirectory = void 0;
|
|
|
7
9
|
|
|
8
10
|
var fs = _interopRequireWildcard(require("fs"));
|
|
9
11
|
|
|
10
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
-
|
|
12
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
-
|
|
14
12
|
const crawlDirectory = (dir, callback) => {
|
|
15
13
|
if (!fs.existsSync(dir)) {
|
|
16
14
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["crawlDirectory","dir","callback","fs","existsSync","files","readdirSync","file","filePath","stat","statSync","isDirectory","isFile"],"sources":["crawlDirectory.ts"],"sourcesContent":["import * as fs from \"fs\";\n\nexport const crawlDirectory = (dir: string, callback: (filePath: string) => void) => {\n if (!fs.existsSync(dir)) {\n return;\n }\n\n const files = fs.readdirSync(dir);\n for (const file of files) {\n const filePath = `${dir}/${file}`;\n const stat = fs.statSync(filePath);\n if (stat.isDirectory()) {\n crawlDirectory(filePath, callback);\n }\n if (stat.isFile()) {\n callback(filePath);\n }\n }\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["crawlDirectory","dir","callback","fs","existsSync","files","readdirSync","file","filePath","stat","statSync","isDirectory","isFile"],"sources":["crawlDirectory.ts"],"sourcesContent":["import * as fs from \"fs\";\n\nexport const crawlDirectory = (dir: string, callback: (filePath: string) => void) => {\n if (!fs.existsSync(dir)) {\n return;\n }\n\n const files = fs.readdirSync(dir);\n for (const file of files) {\n const filePath = `${dir}/${file}`;\n const stat = fs.statSync(filePath);\n if (stat.isDirectory()) {\n crawlDirectory(filePath, callback);\n }\n if (stat.isFile()) {\n callback(filePath);\n }\n }\n};\n"],"mappings":";;;;;;;;;AAAA;;AAEO,MAAMA,cAAc,GAAG,CAACC,GAAD,EAAcC,QAAd,KAAuD;EACjF,IAAI,CAACC,EAAE,CAACC,UAAH,CAAcH,GAAd,CAAL,EAAyB;IACrB;EACH;;EAED,MAAMI,KAAK,GAAGF,EAAE,CAACG,WAAH,CAAeL,GAAf,CAAd;;EACA,KAAK,MAAMM,IAAX,IAAmBF,KAAnB,EAA0B;IACtB,MAAMG,QAAQ,GAAI,GAAEP,GAAI,IAAGM,IAAK,EAAhC;IACA,MAAME,IAAI,GAAGN,EAAE,CAACO,QAAH,CAAYF,QAAZ,CAAb;;IACA,IAAIC,IAAI,CAACE,WAAL,EAAJ,EAAwB;MACpBX,cAAc,CAACQ,QAAD,EAAWN,QAAX,CAAd;IACH;;IACD,IAAIO,IAAI,CAACG,MAAL,EAAJ,EAAmB;MACfV,QAAQ,CAACM,QAAD,CAAR;IACH;EACJ;AACJ,CAhBM"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pulumi from "@pulumi/pulumi";
|
|
2
2
|
import { PulumiApp } from "@webiny/pulumi";
|
|
3
|
-
declare type EnvVariables = Record<string, string
|
|
3
|
+
declare type EnvVariables = Record<string, string | pulumi.Output<string>>;
|
|
4
4
|
export declare let sealEnvVariables: () => void;
|
|
5
5
|
export declare function getCommonLambdaEnvVariables(): pulumi.Output<EnvVariables>;
|
|
6
6
|
export interface SetCommonLambdaEnvVariables {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
6
|
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
@@ -9,30 +11,22 @@ exports.getCommonLambdaEnvVariables = getCommonLambdaEnvVariables;
|
|
|
9
11
|
exports.sealEnvVariables = void 0;
|
|
10
12
|
exports.withCommonLambdaEnvVariables = withCommonLambdaEnvVariables;
|
|
11
13
|
|
|
12
|
-
var
|
|
14
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
15
|
|
|
14
16
|
var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
|
|
15
17
|
|
|
16
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
20
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
-
|
|
22
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
23
|
-
|
|
24
18
|
const variablesRegistry = {};
|
|
25
19
|
let sealEnvVariables;
|
|
26
20
|
exports.sealEnvVariables = sealEnvVariables;
|
|
21
|
+
const magicPrefixes = ["WEBINY_", "WCP_", "OKTA_", "AUTH0_"];
|
|
27
22
|
const variablesPromise = new Promise(resolve => {
|
|
28
23
|
exports.sealEnvVariables = sealEnvVariables = () => {
|
|
29
24
|
// Apart from a couple of basic environment variables like STAGED_ROLLOUTS_VARIANT and DEBUG,
|
|
30
25
|
// we also take into consideration variables that have `WEBINY_` and `WCP_` prefix in their names.
|
|
31
26
|
const baseVariables = Object.keys(process.env).reduce((current, environmentVariableName) => {
|
|
32
|
-
const
|
|
33
|
-
const startsWithWcp = environmentVariableName.startsWith("WCP_");
|
|
27
|
+
const hasMagicPrefix = magicPrefixes.some(prefix => environmentVariableName.startsWith(prefix));
|
|
34
28
|
|
|
35
|
-
if (
|
|
29
|
+
if (hasMagicPrefix && process.env[environmentVariableName] !== undefined) {
|
|
36
30
|
current[environmentVariableName] = String(process.env[environmentVariableName]);
|
|
37
31
|
}
|
|
38
32
|
|
|
@@ -66,7 +60,7 @@ function withCommonLambdaEnvVariables(app) {
|
|
|
66
60
|
|
|
67
61
|
app.program = async app => {
|
|
68
62
|
// We must first execute the original program, and pass in the augmented app.
|
|
69
|
-
const resources = await originalProgram(
|
|
63
|
+
const resources = await originalProgram((0, _objectSpread2.default)((0, _objectSpread2.default)({}, app), {}, {
|
|
70
64
|
// @ts-ignore because currently, we don't have a way of passing in a custom app type.
|
|
71
65
|
setCommonLambdaEnvVariables
|
|
72
66
|
})); // Once the program is executed, we need to seal the variables (this will resolve the pulumi.output promise).
|
|
@@ -78,7 +72,7 @@ function withCommonLambdaEnvVariables(app) {
|
|
|
78
72
|
}; // Augment the original PulumiApp.
|
|
79
73
|
|
|
80
74
|
|
|
81
|
-
return
|
|
75
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, app), {}, {
|
|
82
76
|
setCommonLambdaEnvVariables
|
|
83
77
|
});
|
|
84
78
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["variablesRegistry","sealEnvVariables","variablesPromise","Promise","resolve","baseVariables","Object","keys","process","env","reduce","current","environmentVariableName","
|
|
1
|
+
{"version":3,"names":["variablesRegistry","sealEnvVariables","magicPrefixes","variablesPromise","Promise","resolve","baseVariables","Object","keys","process","env","reduce","current","environmentVariableName","hasMagicPrefix","some","prefix","startsWith","undefined","String","DEBUG","PULUMI_APPS","assign","getCommonLambdaEnvVariables","pulumi","output","setCommonLambdaEnvVariables","variables","withCommonLambdaEnvVariables","app","originalProgram","program","resources","addHandler"],"sources":["lambdaEnvVariables.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\nimport { PulumiApp } from \"@webiny/pulumi\";\n\ntype EnvVariables = Record<string, string | pulumi.Output<string>>;\n\nconst variablesRegistry: EnvVariables = {};\n\nexport let sealEnvVariables: () => void;\n\nconst magicPrefixes = [\"WEBINY_\", \"WCP_\", \"OKTA_\", \"AUTH0_\"];\n\nconst variablesPromise = new Promise<EnvVariables>(resolve => {\n sealEnvVariables = () => {\n // Apart from a couple of basic environment variables like STAGED_ROLLOUTS_VARIANT and DEBUG,\n // we also take into consideration variables that have `WEBINY_` and `WCP_` prefix in their names.\n const baseVariables = Object.keys(process.env).reduce<EnvVariables>(\n (current, environmentVariableName) => {\n const hasMagicPrefix = magicPrefixes.some(prefix =>\n environmentVariableName.startsWith(prefix)\n );\n\n if (hasMagicPrefix && process.env[environmentVariableName] !== undefined) {\n current[environmentVariableName] = String(process.env[environmentVariableName]);\n }\n return current;\n },\n {\n // STAGED_ROLLOUTS_VARIANT: app.ctx.variant || \"\",\n // Among other things, this determines the amount of information we reveal on runtime errors.\n // https://www.webiny.com/docs/how-to-guides/environment-variables/#debug-environment-variable\n DEBUG: String(process.env.DEBUG),\n // This flag means that Lambda was deployed using the new Pulumi Apps architecture.\n PULUMI_APPS: \"true\"\n }\n );\n\n resolve(Object.assign({}, baseVariables, variablesRegistry));\n };\n});\n\nexport function getCommonLambdaEnvVariables(): pulumi.Output<EnvVariables> {\n return pulumi.output(variablesPromise);\n}\n\nfunction setCommonLambdaEnvVariables(variables: EnvVariables) {\n Object.assign(variablesRegistry, variables);\n}\n\nexport interface SetCommonLambdaEnvVariables {\n (variables: EnvVariables): void;\n}\n\nexport interface WithCommonLambdaEnvVariables {\n /**\n * Set ENV variables that wil be assigned to all Lambda functions in the current Pulumi app.\n */\n setCommonLambdaEnvVariables: SetCommonLambdaEnvVariables;\n}\n\n/**\n * Augment the given app with `setCommonLambdaEnvVariables` functionality.\n * @param {PulumiApp} app\n */\nexport function withCommonLambdaEnvVariables<T extends PulumiApp>(\n app: T\n): T & WithCommonLambdaEnvVariables {\n const originalProgram = app.program;\n app.program = async app => {\n // We must first execute the original program, and pass in the augmented app.\n const resources = await originalProgram({\n ...app,\n // @ts-ignore because currently, we don't have a way of passing in a custom app type.\n setCommonLambdaEnvVariables\n });\n\n // Once the program is executed, we need to seal the variables (this will resolve the pulumi.output promise).\n app.addHandler(() => {\n sealEnvVariables();\n });\n\n return resources;\n };\n\n // Augment the original PulumiApp.\n return {\n ...app,\n setCommonLambdaEnvVariables\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAKA,MAAMA,iBAA+B,GAAG,EAAxC;AAEO,IAAIC,gBAAJ;;AAEP,MAAMC,aAAa,GAAG,CAAC,SAAD,EAAY,MAAZ,EAAoB,OAApB,EAA6B,QAA7B,CAAtB;AAEA,MAAMC,gBAAgB,GAAG,IAAIC,OAAJ,CAA0BC,OAAO,IAAI;EAC1D,2BAAAJ,gBAAgB,GAAG,MAAM;IACrB;IACA;IACA,MAAMK,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAYC,OAAO,CAACC,GAApB,EAAyBC,MAAzB,CAClB,CAACC,OAAD,EAAUC,uBAAV,KAAsC;MAClC,MAAMC,cAAc,GAAGZ,aAAa,CAACa,IAAd,CAAmBC,MAAM,IAC5CH,uBAAuB,CAACI,UAAxB,CAAmCD,MAAnC,CADmB,CAAvB;;MAIA,IAAIF,cAAc,IAAIL,OAAO,CAACC,GAAR,CAAYG,uBAAZ,MAAyCK,SAA/D,EAA0E;QACtEN,OAAO,CAACC,uBAAD,CAAP,GAAmCM,MAAM,CAACV,OAAO,CAACC,GAAR,CAAYG,uBAAZ,CAAD,CAAzC;MACH;;MACD,OAAOD,OAAP;IACH,CAViB,EAWlB;MACI;MACA;MACA;MACAQ,KAAK,EAAED,MAAM,CAACV,OAAO,CAACC,GAAR,CAAYU,KAAb,CAJjB;MAKI;MACAC,WAAW,EAAE;IANjB,CAXkB,CAAtB;IAqBAhB,OAAO,CAACE,MAAM,CAACe,MAAP,CAAc,EAAd,EAAkBhB,aAAlB,EAAiCN,iBAAjC,CAAD,CAAP;EACH,CAzBD;AA0BH,CA3BwB,CAAzB;;AA6BO,SAASuB,2BAAT,GAAoE;EACvE,OAAOC,MAAM,CAACC,MAAP,CAActB,gBAAd,CAAP;AACH;;AAED,SAASuB,2BAAT,CAAqCC,SAArC,EAA8D;EAC1DpB,MAAM,CAACe,MAAP,CAActB,iBAAd,EAAiC2B,SAAjC;AACH;;AAaD;AACA;AACA;AACA;AACO,SAASC,4BAAT,CACHC,GADG,EAE6B;EAChC,MAAMC,eAAe,GAAGD,GAAG,CAACE,OAA5B;;EACAF,GAAG,CAACE,OAAJ,GAAc,MAAMF,GAAN,IAAa;IACvB;IACA,MAAMG,SAAS,GAAG,MAAMF,eAAe,6DAChCD,GADgC;MAEnC;MACAH;IAHmC,GAAvC,CAFuB,CAQvB;;IACAG,GAAG,CAACI,UAAJ,CAAe,MAAM;MACjBhC,gBAAgB;IACnB,CAFD;IAIA,OAAO+B,SAAP;EACH,CAdD,CAFgC,CAkBhC;;;EACA,mEACOH,GADP;IAEIH;EAFJ;AAIH"}
|
package/utils/tagResources.js
CHANGED
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
6
|
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
8
10
|
exports.tagResources = tagResources;
|
|
9
11
|
|
|
10
|
-
var
|
|
12
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
13
|
|
|
12
14
|
var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
|
|
13
15
|
|
|
14
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
-
|
|
16
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
-
|
|
18
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
19
|
-
|
|
20
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
21
|
-
|
|
22
16
|
/**
|
|
23
17
|
* Registers a global stack transformation that merges a set
|
|
24
18
|
* of tags with whatever was explicitly set in the resource definition.
|
|
@@ -26,7 +20,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
26
20
|
function tagResources(tags) {
|
|
27
21
|
pulumi.runtime.registerStackTransformation(args => {
|
|
28
22
|
if (isTaggable(args.type)) {
|
|
29
|
-
args.props["tags"] =
|
|
23
|
+
args.props["tags"] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, args.props["tags"]), tags);
|
|
30
24
|
return {
|
|
31
25
|
props: args.props,
|
|
32
26
|
opts: args.opts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tagResources","tags","pulumi","runtime","registerStackTransformation","args","isTaggable","type","props","opts","undefined","resourceType","taggableResourceTypes","has","Set"],"sources":["tagResources.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\n/**\n * Registers a global stack transformation that merges a set\n * of tags with whatever was explicitly set in the resource definition.\n */\nexport function tagResources(tags: Record<string, string>) {\n pulumi.runtime.registerStackTransformation(args => {\n if (isTaggable(args.type)) {\n args.props[\"tags\"] = { ...args.props[\"tags\"], ...tags };\n return { props: args.props, opts: args.opts };\n }\n return undefined;\n });\n}\n\n/**\n * Returns true if the given resource type is an AWS resource that supports tags.\n */\nfunction isTaggable(resourceType: string) {\n return taggableResourceTypes.has(resourceType);\n}\n\n// A list of known AWS type tokens that are taggable.\nconst taggableResourceTypes = new Set([\n \"aws:accessanalyzer/analyzer:Analyzer\",\n \"aws:acm/certificate:Certificate\",\n \"aws:acmpca/certificateAuthority:CertificateAuthority\",\n \"aws:alb/loadBalancer:LoadBalancer\",\n \"aws:alb/targetGroup:TargetGroup\",\n \"aws:apigateway/apiKey:ApiKey\",\n \"aws:apigateway/clientCertificate:ClientCertificate\",\n \"aws:apigateway/domainName:DomainName\",\n \"aws:apigateway/restApi:RestApi\",\n \"aws:apigateway/stage:Stage\",\n \"aws:apigateway/usagePlan:UsagePlan\",\n \"aws:apigateway/vpcLink:VpcLink\",\n \"aws:apigatewayv2/api:Api\",\n \"aws:apigatewayv2/stage:Stage\",\n \"aws:applicationloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:applicationloadbalancing/targetGroup:TargetGroup\",\n \"aws:appmesh/mesh:Mesh\",\n \"aws:appmesh/route:Route\",\n \"aws:appmesh/virtualNode:VirtualNode\",\n \"aws:appmesh/virtualRouter:VirtualRouter\",\n \"aws:appmesh/virtualService:VirtualService\",\n \"aws:appsync/graphQLApi:GraphQLApi\",\n \"aws:athena/workgroup:Workgroup\",\n \"aws:autoscaling/group:Group\",\n \"aws:backup/plan:Plan\",\n \"aws:backup/vault:Vault\",\n \"aws:cfg/aggregateAuthorization:AggregateAuthorization\",\n \"aws:cfg/configurationAggregator:ConfigurationAggregator\",\n \"aws:cfg/rule:Rule\",\n \"aws:cloudformation/stack:Stack\",\n \"aws:cloudformation/stackSet:StackSet\",\n \"aws:cloudfront/distribution:Distribution\",\n \"aws:cloudhsmv2/cluster:Cluster\",\n \"aws:cloudtrail/trail:Trail\",\n \"aws:cloudwatch/eventRule:EventRule\",\n \"aws:cloudwatch/logGroup:LogGroup\",\n \"aws:cloudwatch/metricAlarm:MetricAlarm\",\n \"aws:codebuild/project:Project\",\n \"aws:codecommit/repository:Repository\",\n \"aws:codepipeline/pipeline:Pipeline\",\n \"aws:codepipeline/webhook:Webhook\",\n \"aws:codestarnotifications/notificationRule:NotificationRule\",\n \"aws:cognito/identityPool:IdentityPool\",\n \"aws:cognito/userPool:UserPool\",\n \"aws:datapipeline/pipeline:Pipeline\",\n \"aws:datasync/agent:Agent\",\n \"aws:datasync/efsLocation:EfsLocation\",\n \"aws:datasync/locationSmb:LocationSmb\",\n \"aws:datasync/nfsLocation:NfsLocation\",\n \"aws:datasync/s3Location:S3Location\",\n \"aws:datasync/task:Task\",\n \"aws:dax/cluster:Cluster\",\n \"aws:directconnect/connection:Connection\",\n \"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor\",\n \"aws:directconnect/linkAggregationGroup:LinkAggregationGroup\",\n \"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface\",\n \"aws:directconnect/publicVirtualInterface:PublicVirtualInterface\",\n \"aws:directconnect/transitVirtualInterface:TransitVirtualInterface\",\n \"aws:directoryservice/directory:Directory\",\n \"aws:dlm/lifecyclePolicy:LifecyclePolicy\",\n \"aws:dms/endpoint:Endpoint\",\n \"aws:dms/replicationInstance:ReplicationInstance\",\n \"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup\",\n \"aws:dms/replicationTask:ReplicationTask\",\n \"aws:docdb/cluster:Cluster\",\n \"aws:docdb/clusterInstance:ClusterInstance\",\n \"aws:docdb/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:docdb/subnetGroup:SubnetGroup\",\n \"aws:dynamodb/table:Table\",\n \"aws:ebs/snapshot:Snapshot\",\n \"aws:ebs/snapshotCopy:SnapshotCopy\",\n \"aws:ebs/volume:Volume\",\n \"aws:ec2/ami:Ami\",\n \"aws:ec2/amiCopy:AmiCopy\",\n \"aws:ec2/amiFromInstance:AmiFromInstance\",\n \"aws:ec2/capacityReservation:CapacityReservation\",\n \"aws:ec2/customerGateway:CustomerGateway\",\n \"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl\",\n \"aws:ec2/defaultRouteTable:DefaultRouteTable\",\n \"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup\",\n \"aws:ec2/defaultSubnet:DefaultSubnet\",\n \"aws:ec2/defaultVpc:DefaultVpc\",\n \"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions\",\n \"aws:ec2/eip:Eip\",\n \"aws:ec2/fleet:Fleet\",\n \"aws:ec2/instance:Instance\",\n \"aws:ec2/internetGateway:InternetGateway\",\n \"aws:ec2/keyPair:KeyPair\",\n \"aws:ec2/launchTemplate:LaunchTemplate\",\n \"aws:ec2/natGateway:NatGateway\",\n \"aws:ec2/networkAcl:NetworkAcl\",\n \"aws:ec2/networkInterface:NetworkInterface\",\n \"aws:ec2/placementGroup:PlacementGroup\",\n \"aws:ec2/routeTable:RouteTable\",\n \"aws:ec2/securityGroup:SecurityGroup\",\n \"aws:ec2/spotInstanceRequest:SpotInstanceRequest\",\n \"aws:ec2/subnet:Subnet\",\n \"aws:ec2/vpc:Vpc\",\n \"aws:ec2/vpcDhcpOptions:VpcDhcpOptions\",\n \"aws:ec2/vpcEndpoint:VpcEndpoint\",\n \"aws:ec2/vpcEndpointService:VpcEndpointService\",\n \"aws:ec2/vpcPeeringConnection:VpcPeeringConnection\",\n \"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter\",\n \"aws:ec2/vpnConnection:VpnConnection\",\n \"aws:ec2/vpnGateway:VpnGateway\",\n \"aws:ec2clientvpn/endpoint:Endpoint\",\n \"aws:ec2transitgateway/routeTable:RouteTable\",\n \"aws:ec2transitgateway/transitGateway:TransitGateway\",\n \"aws:ec2transitgateway/vpcAttachment:VpcAttachment\",\n \"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter\",\n \"aws:ecr/repository:Repository\",\n \"aws:ecs/capacityProvider:CapacityProvider\",\n \"aws:ecs/cluster:Cluster\",\n \"aws:ecs/service:Service\",\n \"aws:ecs/taskDefinition:TaskDefinition\",\n \"aws:efs/fileSystem:FileSystem\",\n \"aws:eks/cluster:Cluster\",\n \"aws:eks/fargateProfile:FargateProfile\",\n \"aws:eks/nodeGroup:NodeGroup\",\n \"aws:elasticache/cluster:Cluster\",\n \"aws:elasticache/replicationGroup:ReplicationGroup\",\n \"aws:elasticbeanstalk/application:Application\",\n \"aws:elasticbeanstalk/applicationVersion:ApplicationVersion\",\n \"aws:elasticbeanstalk/environment:Environment\",\n \"aws:elasticloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/targetGroup:TargetGroup\",\n \"aws:elasticsearch/domain:Domain\",\n \"aws:elb/loadBalancer:LoadBalancer\",\n \"aws:emr/cluster:Cluster\",\n \"aws:fsx/lustreFileSystem:LustreFileSystem\",\n \"aws:fsx/windowsFileSystem:WindowsFileSystem\",\n \"aws:gamelift/alias:Alias\",\n \"aws:gamelift/build:Build\",\n \"aws:gamelift/fleet:Fleet\",\n \"aws:gamelift/gameSessionQueue:GameSessionQueue\",\n \"aws:glacier/vault:Vault\",\n \"aws:glue/crawler:Crawler\",\n \"aws:glue/job:Job\",\n \"aws:glue/trigger:Trigger\",\n \"aws:iam/role:Role\",\n \"aws:iam/user:User\",\n \"aws:inspector/resourceGroup:ResourceGroup\",\n \"aws:kinesis/analyticsApplication:AnalyticsApplication\",\n \"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream\",\n \"aws:kinesis/stream:Stream\",\n \"aws:kms/externalKey:ExternalKey\",\n \"aws:kms/key:Key\",\n \"aws:lambda/function:Function\",\n \"aws:lb/loadBalancer:LoadBalancer\",\n \"aws:lb/targetGroup:TargetGroup\",\n \"aws:licensemanager/licenseConfiguration:LicenseConfiguration\",\n \"aws:lightsail/instance:Instance\",\n \"aws:mediaconvert/queue:Queue\",\n \"aws:mediapackage/channel:Channel\",\n \"aws:mediastore/container:Container\",\n \"aws:mq/broker:Broker\",\n \"aws:mq/configuration:Configuration\",\n \"aws:msk/cluster:Cluster\",\n \"aws:neptune/cluster:Cluster\",\n \"aws:neptune/clusterInstance:ClusterInstance\",\n \"aws:neptune/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:neptune/eventSubscription:EventSubscription\",\n \"aws:neptune/parameterGroup:ParameterGroup\",\n \"aws:neptune/subnetGroup:SubnetGroup\",\n \"aws:opsworks/stack:Stack\",\n \"aws:organizations/account:Account\",\n \"aws:pinpoint/app:App\",\n \"aws:qldb/ledger:Ledger\",\n \"aws:ram/resourceShare:ResourceShare\",\n \"aws:rds/cluster:Cluster\",\n \"aws:rds/clusterEndpoint:ClusterEndpoint\",\n \"aws:rds/clusterInstance:ClusterInstance\",\n \"aws:rds/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:rds/clusterSnapshot:ClusterSnapshot\",\n \"aws:rds/eventSubscription:EventSubscription\",\n \"aws:rds/instance:Instance\",\n \"aws:rds/optionGroup:OptionGroup\",\n \"aws:rds/parameterGroup:ParameterGroup\",\n \"aws:rds/securityGroup:SecurityGroup\",\n \"aws:rds/snapshot:Snapshot\",\n \"aws:rds/subnetGroup:SubnetGroup\",\n \"aws:redshift/cluster:Cluster\",\n \"aws:redshift/eventSubscription:EventSubscription\",\n \"aws:redshift/parameterGroup:ParameterGroup\",\n \"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant\",\n \"aws:redshift/snapshotSchedule:SnapshotSchedule\",\n \"aws:redshift/subnetGroup:SubnetGroup\",\n \"aws:resourcegroups/group:Group\",\n \"aws:route53/healthCheck:HealthCheck\",\n \"aws:route53/resolverEndpoint:ResolverEndpoint\",\n \"aws:route53/resolverRule:ResolverRule\",\n \"aws:route53/zone:Zone\",\n \"aws:s3/bucket:Bucket\",\n \"aws:s3/bucketObject:BucketObject\",\n \"aws:sagemaker/endpoint:Endpoint\",\n \"aws:sagemaker/endpointConfiguration:EndpointConfiguration\",\n \"aws:sagemaker/model:Model\",\n \"aws:sagemaker/notebookInstance:NotebookInstance\",\n \"aws:secretsmanager/secret:Secret\",\n \"aws:servicecatalog/portfolio:Portfolio\",\n \"aws:sfn/activity:Activity\",\n \"aws:sfn/stateMachine:StateMachine\",\n \"aws:sns/topic:Topic\",\n \"aws:sqs/queue:Queue\",\n \"aws:ssm/activation:Activation\",\n \"aws:ssm/document:Document\",\n \"aws:ssm/maintenanceWindow:MaintenanceWindow\",\n \"aws:ssm/parameter:Parameter\",\n \"aws:ssm/patchBaseline:PatchBaseline\",\n \"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume\",\n \"aws:storagegateway/gateway:Gateway\",\n \"aws:storagegateway/nfsFileShare:NfsFileShare\",\n \"aws:storagegateway/smbFileShare:SmbFileShare\",\n \"aws:swf/domain:Domain\",\n \"aws:transfer/server:Server\",\n \"aws:transfer/user:User\",\n \"aws:waf/rateBasedRule:RateBasedRule\",\n \"aws:waf/rule:Rule\",\n \"aws:waf/ruleGroup:RuleGroup\",\n \"aws:waf/webAcl:WebAcl\",\n \"aws:wafregional/rateBasedRule:RateBasedRule\",\n \"aws:wafregional/rule:Rule\",\n \"aws:wafregional/ruleGroup:RuleGroup\",\n \"aws:wafregional/webAcl:WebAcl\",\n \"aws:workspaces/directory:Directory\",\n \"aws:workspaces/ipGroup:IpGroup\"\n]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["tagResources","tags","pulumi","runtime","registerStackTransformation","args","isTaggable","type","props","opts","undefined","resourceType","taggableResourceTypes","has","Set"],"sources":["tagResources.ts"],"sourcesContent":["import * as pulumi from \"@pulumi/pulumi\";\n\n/**\n * Registers a global stack transformation that merges a set\n * of tags with whatever was explicitly set in the resource definition.\n */\nexport function tagResources(tags: Record<string, string>) {\n pulumi.runtime.registerStackTransformation(args => {\n if (isTaggable(args.type)) {\n args.props[\"tags\"] = { ...args.props[\"tags\"], ...tags };\n return { props: args.props, opts: args.opts };\n }\n return undefined;\n });\n}\n\n/**\n * Returns true if the given resource type is an AWS resource that supports tags.\n */\nfunction isTaggable(resourceType: string) {\n return taggableResourceTypes.has(resourceType);\n}\n\n// A list of known AWS type tokens that are taggable.\nconst taggableResourceTypes = new Set([\n \"aws:accessanalyzer/analyzer:Analyzer\",\n \"aws:acm/certificate:Certificate\",\n \"aws:acmpca/certificateAuthority:CertificateAuthority\",\n \"aws:alb/loadBalancer:LoadBalancer\",\n \"aws:alb/targetGroup:TargetGroup\",\n \"aws:apigateway/apiKey:ApiKey\",\n \"aws:apigateway/clientCertificate:ClientCertificate\",\n \"aws:apigateway/domainName:DomainName\",\n \"aws:apigateway/restApi:RestApi\",\n \"aws:apigateway/stage:Stage\",\n \"aws:apigateway/usagePlan:UsagePlan\",\n \"aws:apigateway/vpcLink:VpcLink\",\n \"aws:apigatewayv2/api:Api\",\n \"aws:apigatewayv2/stage:Stage\",\n \"aws:applicationloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:applicationloadbalancing/targetGroup:TargetGroup\",\n \"aws:appmesh/mesh:Mesh\",\n \"aws:appmesh/route:Route\",\n \"aws:appmesh/virtualNode:VirtualNode\",\n \"aws:appmesh/virtualRouter:VirtualRouter\",\n \"aws:appmesh/virtualService:VirtualService\",\n \"aws:appsync/graphQLApi:GraphQLApi\",\n \"aws:athena/workgroup:Workgroup\",\n \"aws:autoscaling/group:Group\",\n \"aws:backup/plan:Plan\",\n \"aws:backup/vault:Vault\",\n \"aws:cfg/aggregateAuthorization:AggregateAuthorization\",\n \"aws:cfg/configurationAggregator:ConfigurationAggregator\",\n \"aws:cfg/rule:Rule\",\n \"aws:cloudformation/stack:Stack\",\n \"aws:cloudformation/stackSet:StackSet\",\n \"aws:cloudfront/distribution:Distribution\",\n \"aws:cloudhsmv2/cluster:Cluster\",\n \"aws:cloudtrail/trail:Trail\",\n \"aws:cloudwatch/eventRule:EventRule\",\n \"aws:cloudwatch/logGroup:LogGroup\",\n \"aws:cloudwatch/metricAlarm:MetricAlarm\",\n \"aws:codebuild/project:Project\",\n \"aws:codecommit/repository:Repository\",\n \"aws:codepipeline/pipeline:Pipeline\",\n \"aws:codepipeline/webhook:Webhook\",\n \"aws:codestarnotifications/notificationRule:NotificationRule\",\n \"aws:cognito/identityPool:IdentityPool\",\n \"aws:cognito/userPool:UserPool\",\n \"aws:datapipeline/pipeline:Pipeline\",\n \"aws:datasync/agent:Agent\",\n \"aws:datasync/efsLocation:EfsLocation\",\n \"aws:datasync/locationSmb:LocationSmb\",\n \"aws:datasync/nfsLocation:NfsLocation\",\n \"aws:datasync/s3Location:S3Location\",\n \"aws:datasync/task:Task\",\n \"aws:dax/cluster:Cluster\",\n \"aws:directconnect/connection:Connection\",\n \"aws:directconnect/hostedPrivateVirtualInterfaceAccepter:HostedPrivateVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedPublicVirtualInterfaceAccepter:HostedPublicVirtualInterfaceAccepter\",\n \"aws:directconnect/hostedTransitVirtualInterfaceAcceptor:HostedTransitVirtualInterfaceAcceptor\",\n \"aws:directconnect/linkAggregationGroup:LinkAggregationGroup\",\n \"aws:directconnect/privateVirtualInterface:PrivateVirtualInterface\",\n \"aws:directconnect/publicVirtualInterface:PublicVirtualInterface\",\n \"aws:directconnect/transitVirtualInterface:TransitVirtualInterface\",\n \"aws:directoryservice/directory:Directory\",\n \"aws:dlm/lifecyclePolicy:LifecyclePolicy\",\n \"aws:dms/endpoint:Endpoint\",\n \"aws:dms/replicationInstance:ReplicationInstance\",\n \"aws:dms/replicationSubnetGroup:ReplicationSubnetGroup\",\n \"aws:dms/replicationTask:ReplicationTask\",\n \"aws:docdb/cluster:Cluster\",\n \"aws:docdb/clusterInstance:ClusterInstance\",\n \"aws:docdb/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:docdb/subnetGroup:SubnetGroup\",\n \"aws:dynamodb/table:Table\",\n \"aws:ebs/snapshot:Snapshot\",\n \"aws:ebs/snapshotCopy:SnapshotCopy\",\n \"aws:ebs/volume:Volume\",\n \"aws:ec2/ami:Ami\",\n \"aws:ec2/amiCopy:AmiCopy\",\n \"aws:ec2/amiFromInstance:AmiFromInstance\",\n \"aws:ec2/capacityReservation:CapacityReservation\",\n \"aws:ec2/customerGateway:CustomerGateway\",\n \"aws:ec2/defaultNetworkAcl:DefaultNetworkAcl\",\n \"aws:ec2/defaultRouteTable:DefaultRouteTable\",\n \"aws:ec2/defaultSecurityGroup:DefaultSecurityGroup\",\n \"aws:ec2/defaultSubnet:DefaultSubnet\",\n \"aws:ec2/defaultVpc:DefaultVpc\",\n \"aws:ec2/defaultVpcDhcpOptions:DefaultVpcDhcpOptions\",\n \"aws:ec2/eip:Eip\",\n \"aws:ec2/fleet:Fleet\",\n \"aws:ec2/instance:Instance\",\n \"aws:ec2/internetGateway:InternetGateway\",\n \"aws:ec2/keyPair:KeyPair\",\n \"aws:ec2/launchTemplate:LaunchTemplate\",\n \"aws:ec2/natGateway:NatGateway\",\n \"aws:ec2/networkAcl:NetworkAcl\",\n \"aws:ec2/networkInterface:NetworkInterface\",\n \"aws:ec2/placementGroup:PlacementGroup\",\n \"aws:ec2/routeTable:RouteTable\",\n \"aws:ec2/securityGroup:SecurityGroup\",\n \"aws:ec2/spotInstanceRequest:SpotInstanceRequest\",\n \"aws:ec2/subnet:Subnet\",\n \"aws:ec2/vpc:Vpc\",\n \"aws:ec2/vpcDhcpOptions:VpcDhcpOptions\",\n \"aws:ec2/vpcEndpoint:VpcEndpoint\",\n \"aws:ec2/vpcEndpointService:VpcEndpointService\",\n \"aws:ec2/vpcPeeringConnection:VpcPeeringConnection\",\n \"aws:ec2/vpcPeeringConnectionAccepter:VpcPeeringConnectionAccepter\",\n \"aws:ec2/vpnConnection:VpnConnection\",\n \"aws:ec2/vpnGateway:VpnGateway\",\n \"aws:ec2clientvpn/endpoint:Endpoint\",\n \"aws:ec2transitgateway/routeTable:RouteTable\",\n \"aws:ec2transitgateway/transitGateway:TransitGateway\",\n \"aws:ec2transitgateway/vpcAttachment:VpcAttachment\",\n \"aws:ec2transitgateway/vpcAttachmentAccepter:VpcAttachmentAccepter\",\n \"aws:ecr/repository:Repository\",\n \"aws:ecs/capacityProvider:CapacityProvider\",\n \"aws:ecs/cluster:Cluster\",\n \"aws:ecs/service:Service\",\n \"aws:ecs/taskDefinition:TaskDefinition\",\n \"aws:efs/fileSystem:FileSystem\",\n \"aws:eks/cluster:Cluster\",\n \"aws:eks/fargateProfile:FargateProfile\",\n \"aws:eks/nodeGroup:NodeGroup\",\n \"aws:elasticache/cluster:Cluster\",\n \"aws:elasticache/replicationGroup:ReplicationGroup\",\n \"aws:elasticbeanstalk/application:Application\",\n \"aws:elasticbeanstalk/applicationVersion:ApplicationVersion\",\n \"aws:elasticbeanstalk/environment:Environment\",\n \"aws:elasticloadbalancing/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/loadBalancer:LoadBalancer\",\n \"aws:elasticloadbalancingv2/targetGroup:TargetGroup\",\n \"aws:elasticsearch/domain:Domain\",\n \"aws:elb/loadBalancer:LoadBalancer\",\n \"aws:emr/cluster:Cluster\",\n \"aws:fsx/lustreFileSystem:LustreFileSystem\",\n \"aws:fsx/windowsFileSystem:WindowsFileSystem\",\n \"aws:gamelift/alias:Alias\",\n \"aws:gamelift/build:Build\",\n \"aws:gamelift/fleet:Fleet\",\n \"aws:gamelift/gameSessionQueue:GameSessionQueue\",\n \"aws:glacier/vault:Vault\",\n \"aws:glue/crawler:Crawler\",\n \"aws:glue/job:Job\",\n \"aws:glue/trigger:Trigger\",\n \"aws:iam/role:Role\",\n \"aws:iam/user:User\",\n \"aws:inspector/resourceGroup:ResourceGroup\",\n \"aws:kinesis/analyticsApplication:AnalyticsApplication\",\n \"aws:kinesis/firehoseDeliveryStream:FirehoseDeliveryStream\",\n \"aws:kinesis/stream:Stream\",\n \"aws:kms/externalKey:ExternalKey\",\n \"aws:kms/key:Key\",\n \"aws:lambda/function:Function\",\n \"aws:lb/loadBalancer:LoadBalancer\",\n \"aws:lb/targetGroup:TargetGroup\",\n \"aws:licensemanager/licenseConfiguration:LicenseConfiguration\",\n \"aws:lightsail/instance:Instance\",\n \"aws:mediaconvert/queue:Queue\",\n \"aws:mediapackage/channel:Channel\",\n \"aws:mediastore/container:Container\",\n \"aws:mq/broker:Broker\",\n \"aws:mq/configuration:Configuration\",\n \"aws:msk/cluster:Cluster\",\n \"aws:neptune/cluster:Cluster\",\n \"aws:neptune/clusterInstance:ClusterInstance\",\n \"aws:neptune/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:neptune/eventSubscription:EventSubscription\",\n \"aws:neptune/parameterGroup:ParameterGroup\",\n \"aws:neptune/subnetGroup:SubnetGroup\",\n \"aws:opsworks/stack:Stack\",\n \"aws:organizations/account:Account\",\n \"aws:pinpoint/app:App\",\n \"aws:qldb/ledger:Ledger\",\n \"aws:ram/resourceShare:ResourceShare\",\n \"aws:rds/cluster:Cluster\",\n \"aws:rds/clusterEndpoint:ClusterEndpoint\",\n \"aws:rds/clusterInstance:ClusterInstance\",\n \"aws:rds/clusterParameterGroup:ClusterParameterGroup\",\n \"aws:rds/clusterSnapshot:ClusterSnapshot\",\n \"aws:rds/eventSubscription:EventSubscription\",\n \"aws:rds/instance:Instance\",\n \"aws:rds/optionGroup:OptionGroup\",\n \"aws:rds/parameterGroup:ParameterGroup\",\n \"aws:rds/securityGroup:SecurityGroup\",\n \"aws:rds/snapshot:Snapshot\",\n \"aws:rds/subnetGroup:SubnetGroup\",\n \"aws:redshift/cluster:Cluster\",\n \"aws:redshift/eventSubscription:EventSubscription\",\n \"aws:redshift/parameterGroup:ParameterGroup\",\n \"aws:redshift/snapshotCopyGrant:SnapshotCopyGrant\",\n \"aws:redshift/snapshotSchedule:SnapshotSchedule\",\n \"aws:redshift/subnetGroup:SubnetGroup\",\n \"aws:resourcegroups/group:Group\",\n \"aws:route53/healthCheck:HealthCheck\",\n \"aws:route53/resolverEndpoint:ResolverEndpoint\",\n \"aws:route53/resolverRule:ResolverRule\",\n \"aws:route53/zone:Zone\",\n \"aws:s3/bucket:Bucket\",\n \"aws:s3/bucketObject:BucketObject\",\n \"aws:sagemaker/endpoint:Endpoint\",\n \"aws:sagemaker/endpointConfiguration:EndpointConfiguration\",\n \"aws:sagemaker/model:Model\",\n \"aws:sagemaker/notebookInstance:NotebookInstance\",\n \"aws:secretsmanager/secret:Secret\",\n \"aws:servicecatalog/portfolio:Portfolio\",\n \"aws:sfn/activity:Activity\",\n \"aws:sfn/stateMachine:StateMachine\",\n \"aws:sns/topic:Topic\",\n \"aws:sqs/queue:Queue\",\n \"aws:ssm/activation:Activation\",\n \"aws:ssm/document:Document\",\n \"aws:ssm/maintenanceWindow:MaintenanceWindow\",\n \"aws:ssm/parameter:Parameter\",\n \"aws:ssm/patchBaseline:PatchBaseline\",\n \"aws:storagegateway/cachesIscsiVolume:CachesIscsiVolume\",\n \"aws:storagegateway/gateway:Gateway\",\n \"aws:storagegateway/nfsFileShare:NfsFileShare\",\n \"aws:storagegateway/smbFileShare:SmbFileShare\",\n \"aws:swf/domain:Domain\",\n \"aws:transfer/server:Server\",\n \"aws:transfer/user:User\",\n \"aws:waf/rateBasedRule:RateBasedRule\",\n \"aws:waf/rule:Rule\",\n \"aws:waf/ruleGroup:RuleGroup\",\n \"aws:waf/webAcl:WebAcl\",\n \"aws:wafregional/rateBasedRule:RateBasedRule\",\n \"aws:wafregional/rule:Rule\",\n \"aws:wafregional/ruleGroup:RuleGroup\",\n \"aws:wafregional/webAcl:WebAcl\",\n \"aws:workspaces/directory:Directory\",\n \"aws:workspaces/ipGroup:IpGroup\"\n]);\n"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.uploadFolderToS3 = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
11
|
|
|
12
12
|
var _fs = _interopRequireDefault(require("fs"));
|
|
13
13
|
|
|
@@ -27,10 +27,6 @@ var _crawlDirectory = require("./crawlDirectory");
|
|
|
27
27
|
|
|
28
28
|
var _getPresignedPost = require("./getPresignedPost");
|
|
29
29
|
|
|
30
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
31
|
-
|
|
32
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
33
|
-
|
|
34
30
|
function getFileChecksum(file) {
|
|
35
31
|
const crypto = require("crypto");
|
|
36
32
|
|
|
@@ -135,8 +131,7 @@ const uploadFolderToS3 = async ({
|
|
|
135
131
|
contentType,
|
|
136
132
|
cacheControl: cacheControl ? cacheControl.value : undefined
|
|
137
133
|
});
|
|
138
|
-
|
|
139
|
-
const data = _objectSpread(_objectSpread({}, fields), {}, {
|
|
134
|
+
const data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, fields), {}, {
|
|
140
135
|
"Content-Type": contentType || "",
|
|
141
136
|
"X-Amz-Meta-Checksum": checksum,
|
|
142
137
|
file: _fs.default.readFileSync(path)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getFileChecksum","file","crypto","require","hash","createHash","Promise","resolve","stream","fs","createReadStream","on","data","update","digest","uploadFolderToS3","path","root","bucket","onFileUploadSuccess","onFileUploadError","onFileUploadSkip","acl","cacheControl","s3","S3Client","region","process","env","AWS_REGION","existsSync","Error","paths","crawlDirectory","push","pathsChunks","chunk","cacheControls","pattern","value","Array","isArray","i","length","promises","j","key","relative","replace","checksum","skipUpload","existingObject","headObject","Bucket","Key","promise","Metadata","full","find","item","test","contentType","mime","getType","url","fields","getPresignedPost","undefined","readFileSync","formData","FormData","Object","keys","forEach","append","res","fetch","method","body","status","statusText","text","e","error","all"],"sources":["uploadFolderToS3.ts"],"sourcesContent":["import fs from \"fs\";\nimport fetch from \"node-fetch\";\nimport FormData from \"form-data\";\nimport S3Client from \"aws-sdk/clients/s3\";\nimport mime from \"mime\";\nimport chunk from \"lodash/chunk\";\nimport { relative } from \"path\";\nimport { crawlDirectory } from \"./crawlDirectory\";\nimport { getPresignedPost } from \"./getPresignedPost\";\n\nfunction getFileChecksum(file: string): Promise<string> {\n const crypto = require(\"crypto\");\n const hash = crypto.createHash(\"md5\");\n\n return new Promise(resolve => {\n const stream = fs.createReadStream(file);\n stream.on(\"data\", function (data: any) {\n hash.update(data, \"utf8\");\n });\n\n stream.on(\"end\", function () {\n resolve(hash.digest(\"hex\"));\n });\n });\n}\n\nimport { BucketName, CacheControl } from \"aws-sdk/clients/s3\";\n\nexport interface Paths {\n full: string;\n relative: string;\n}\n\nexport type CacheControls = Array<{ pattern: RegExp; value: CacheControl }>;\n\nexport interface UploadFolderToS3Params {\n // Path to the folder that needs to be uploaded.\n path: string;\n\n // Object ACL.\n acl: string;\n\n // A callback that gets called every time a file has been uploaded successfully.\n onFileUploadSuccess: (params: { paths: Paths }) => void;\n\n // A callback that gets called every time a file has not been uploaded successfully.\n onFileUploadError: (params: { paths: Paths; error: Error }) => void;\n\n // A callback that gets called every time a file upload has been skipped.\n onFileUploadSkip: (params: { paths: Paths }) => void;\n\n // Target bucket\n bucket: BucketName;\n\n // Cache control to apply to each uploaded file\n cacheControl?: CacheControl | CacheControls;\n}\n\nexport const uploadFolderToS3 = async ({\n path: root,\n bucket,\n onFileUploadSuccess,\n onFileUploadError,\n onFileUploadSkip,\n // For backwards compatibility, we need to leave ACL on \"public-read\".\n acl = \"public-read\",\n cacheControl = \"max-age=31536000\"\n}: UploadFolderToS3Params) => {\n const s3 = new S3Client({ region: process.env.AWS_REGION });\n\n if (!fs.existsSync(root)) {\n throw new Error(\"Cannot continue, folder does not exist.\");\n }\n\n const paths: string[] = [];\n\n await crawlDirectory(root, async (path: string) => {\n paths.push(path);\n });\n\n const pathsChunks = chunk(paths, 20);\n\n const cacheControls: CacheControls = [];\n if (typeof cacheControl === \"string\") {\n cacheControls.push({ pattern: /.*/, value: cacheControl });\n } else if (Array.isArray(cacheControls)) {\n cacheControls.push(...cacheControl);\n }\n\n for (let i = 0; i < pathsChunks.length; i++) {\n const chunk = pathsChunks[i];\n\n const promises = [];\n for (let j = 0; j < chunk.length; j++) {\n const path = chunk[j];\n\n promises.push(\n new Promise<void>(async resolve => {\n // We also replace \"\\\" with \"/\", which is a path separator on Windows' CMD or Powershell.\n const key = relative(root, path).replace(/\\\\/g, \"/\");\n try {\n // Get file checksum so that we can check if a file needs to be uploaded or not.\n const checksum = await getFileChecksum(path);\n\n let skipUpload = false;\n try {\n const existingObject = await s3\n .headObject({\n Bucket: bucket,\n Key: key\n })\n .promise();\n\n if (existingObject.Metadata?.checksum === checksum) {\n skipUpload = true;\n }\n } catch {\n // Do nothing.\n }\n\n if (skipUpload) {\n if (typeof onFileUploadSkip === \"function\") {\n await onFileUploadSkip({ paths: { full: path, relative: key } });\n }\n } else {\n const cacheControl = cacheControls.find(item => item.pattern.test(key));\n const contentType = mime.getType(path);\n\n const { url, fields } = await getPresignedPost({\n bucket,\n key,\n acl,\n checksum,\n contentType,\n cacheControl: cacheControl ? cacheControl.value : undefined\n });\n\n const data: Record<string, string | Buffer> = {\n ...fields,\n \"Content-Type\": contentType || \"\",\n \"X-Amz-Meta-Checksum\": checksum,\n file: fs.readFileSync(path)\n };\n\n if (cacheControl) {\n data[\"Cache-Control\"] = cacheControl.value;\n }\n\n const formData = new FormData();\n Object.keys(data).forEach(key => {\n formData.append(key, data[key]);\n });\n\n const res = await fetch(url, {\n method: \"POST\",\n body: formData\n });\n\n if (res.status > 299) {\n throw new Error(`${res.statusText}\\n${await res.text()}`);\n }\n\n if (typeof onFileUploadSuccess === \"function\") {\n await onFileUploadSuccess({ paths: { full: path, relative: key } });\n }\n }\n resolve();\n } catch (e) {\n if (typeof onFileUploadError === \"function\") {\n await onFileUploadError({\n paths: { full: path, relative: key },\n error: e\n });\n }\n resolve();\n }\n })\n );\n }\n\n await Promise.all(promises);\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["getFileChecksum","file","crypto","require","hash","createHash","Promise","resolve","stream","fs","createReadStream","on","data","update","digest","uploadFolderToS3","path","root","bucket","onFileUploadSuccess","onFileUploadError","onFileUploadSkip","acl","cacheControl","s3","S3Client","region","process","env","AWS_REGION","existsSync","Error","paths","crawlDirectory","push","pathsChunks","chunk","cacheControls","pattern","value","Array","isArray","i","length","promises","j","key","relative","replace","checksum","skipUpload","existingObject","headObject","Bucket","Key","promise","Metadata","full","find","item","test","contentType","mime","getType","url","fields","getPresignedPost","undefined","readFileSync","formData","FormData","Object","keys","forEach","append","res","fetch","method","body","status","statusText","text","e","error","all"],"sources":["uploadFolderToS3.ts"],"sourcesContent":["import fs from \"fs\";\nimport fetch from \"node-fetch\";\nimport FormData from \"form-data\";\nimport S3Client from \"aws-sdk/clients/s3\";\nimport mime from \"mime\";\nimport chunk from \"lodash/chunk\";\nimport { relative } from \"path\";\nimport { crawlDirectory } from \"./crawlDirectory\";\nimport { getPresignedPost } from \"./getPresignedPost\";\n\nfunction getFileChecksum(file: string): Promise<string> {\n const crypto = require(\"crypto\");\n const hash = crypto.createHash(\"md5\");\n\n return new Promise(resolve => {\n const stream = fs.createReadStream(file);\n stream.on(\"data\", function (data: any) {\n hash.update(data, \"utf8\");\n });\n\n stream.on(\"end\", function () {\n resolve(hash.digest(\"hex\"));\n });\n });\n}\n\nimport { BucketName, CacheControl } from \"aws-sdk/clients/s3\";\n\nexport interface Paths {\n full: string;\n relative: string;\n}\n\nexport type CacheControls = Array<{ pattern: RegExp; value: CacheControl }>;\n\nexport interface UploadFolderToS3Params {\n // Path to the folder that needs to be uploaded.\n path: string;\n\n // Object ACL.\n acl: string;\n\n // A callback that gets called every time a file has been uploaded successfully.\n onFileUploadSuccess: (params: { paths: Paths }) => void;\n\n // A callback that gets called every time a file has not been uploaded successfully.\n onFileUploadError: (params: { paths: Paths; error: Error }) => void;\n\n // A callback that gets called every time a file upload has been skipped.\n onFileUploadSkip: (params: { paths: Paths }) => void;\n\n // Target bucket\n bucket: BucketName;\n\n // Cache control to apply to each uploaded file\n cacheControl?: CacheControl | CacheControls;\n}\n\nexport const uploadFolderToS3 = async ({\n path: root,\n bucket,\n onFileUploadSuccess,\n onFileUploadError,\n onFileUploadSkip,\n // For backwards compatibility, we need to leave ACL on \"public-read\".\n acl = \"public-read\",\n cacheControl = \"max-age=31536000\"\n}: UploadFolderToS3Params) => {\n const s3 = new S3Client({ region: process.env.AWS_REGION });\n\n if (!fs.existsSync(root)) {\n throw new Error(\"Cannot continue, folder does not exist.\");\n }\n\n const paths: string[] = [];\n\n await crawlDirectory(root, async (path: string) => {\n paths.push(path);\n });\n\n const pathsChunks = chunk(paths, 20);\n\n const cacheControls: CacheControls = [];\n if (typeof cacheControl === \"string\") {\n cacheControls.push({ pattern: /.*/, value: cacheControl });\n } else if (Array.isArray(cacheControls)) {\n cacheControls.push(...cacheControl);\n }\n\n for (let i = 0; i < pathsChunks.length; i++) {\n const chunk = pathsChunks[i];\n\n const promises = [];\n for (let j = 0; j < chunk.length; j++) {\n const path = chunk[j];\n\n promises.push(\n new Promise<void>(async resolve => {\n // We also replace \"\\\" with \"/\", which is a path separator on Windows' CMD or Powershell.\n const key = relative(root, path).replace(/\\\\/g, \"/\");\n try {\n // Get file checksum so that we can check if a file needs to be uploaded or not.\n const checksum = await getFileChecksum(path);\n\n let skipUpload = false;\n try {\n const existingObject = await s3\n .headObject({\n Bucket: bucket,\n Key: key\n })\n .promise();\n\n if (existingObject.Metadata?.checksum === checksum) {\n skipUpload = true;\n }\n } catch {\n // Do nothing.\n }\n\n if (skipUpload) {\n if (typeof onFileUploadSkip === \"function\") {\n await onFileUploadSkip({ paths: { full: path, relative: key } });\n }\n } else {\n const cacheControl = cacheControls.find(item => item.pattern.test(key));\n const contentType = mime.getType(path);\n\n const { url, fields } = await getPresignedPost({\n bucket,\n key,\n acl,\n checksum,\n contentType,\n cacheControl: cacheControl ? cacheControl.value : undefined\n });\n\n const data: Record<string, string | Buffer> = {\n ...fields,\n \"Content-Type\": contentType || \"\",\n \"X-Amz-Meta-Checksum\": checksum,\n file: fs.readFileSync(path)\n };\n\n if (cacheControl) {\n data[\"Cache-Control\"] = cacheControl.value;\n }\n\n const formData = new FormData();\n Object.keys(data).forEach(key => {\n formData.append(key, data[key]);\n });\n\n const res = await fetch(url, {\n method: \"POST\",\n body: formData\n });\n\n if (res.status > 299) {\n throw new Error(`${res.statusText}\\n${await res.text()}`);\n }\n\n if (typeof onFileUploadSuccess === \"function\") {\n await onFileUploadSuccess({ paths: { full: path, relative: key } });\n }\n }\n resolve();\n } catch (e) {\n if (typeof onFileUploadError === \"function\") {\n await onFileUploadError({\n paths: { full: path, relative: key },\n error: e\n });\n }\n resolve();\n }\n })\n );\n }\n\n await Promise.all(promises);\n }\n};\n"],"mappings":"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"}
|