@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.
Files changed (83) hide show
  1. package/apps/admin/createAdminPulumiApp.d.ts +5 -5
  2. package/apps/admin/createAdminPulumiApp.js +3 -7
  3. package/apps/admin/createAdminPulumiApp.js.map +1 -1
  4. package/apps/api/ApiApwScheduler.d.ts +8 -9
  5. package/apps/api/ApiApwScheduler.js +6 -12
  6. package/apps/api/ApiApwScheduler.js.map +1 -1
  7. package/apps/api/ApiCloudfront.d.ts +1 -2
  8. package/apps/api/ApiCloudfront.js +2 -4
  9. package/apps/api/ApiCloudfront.js.map +1 -1
  10. package/apps/api/ApiFileManager.d.ts +4 -5
  11. package/apps/api/ApiFileManager.js +8 -13
  12. package/apps/api/ApiFileManager.js.map +1 -1
  13. package/apps/api/ApiGateway.d.ts +5 -6
  14. package/apps/api/ApiGateway.js +2 -4
  15. package/apps/api/ApiGateway.js.map +1 -1
  16. package/apps/api/ApiGraphql.d.ts +3 -3
  17. package/apps/api/ApiGraphql.js +5 -11
  18. package/apps/api/ApiGraphql.js.map +1 -1
  19. package/apps/api/ApiHeadlessCMS.d.ts +3 -4
  20. package/apps/api/ApiHeadlessCMS.js +5 -11
  21. package/apps/api/ApiHeadlessCMS.js.map +1 -1
  22. package/apps/api/ApiPageBuilder.d.ts +10 -11
  23. package/apps/api/ApiPageBuilder.js +37 -42
  24. package/apps/api/ApiPageBuilder.js.map +1 -1
  25. package/apps/api/createApiPulumiApp.d.ts +24 -24
  26. package/apps/api/createApiPulumiApp.js +2 -2
  27. package/apps/api/createApiPulumiApp.js.map +1 -1
  28. package/apps/awsUtils.js +2 -4
  29. package/apps/awsUtils.js.map +1 -1
  30. package/apps/core/CoreCognito.d.ts +2 -3
  31. package/apps/core/CoreCognito.js +2 -4
  32. package/apps/core/CoreCognito.js.map +1 -1
  33. package/apps/core/CoreDynamo.d.ts +1 -2
  34. package/apps/core/CoreDynamo.js +2 -4
  35. package/apps/core/CoreDynamo.js.map +1 -1
  36. package/apps/core/CoreElasticSearch.d.ts +7 -7
  37. package/apps/core/CoreElasticSearch.js +3 -5
  38. package/apps/core/CoreElasticSearch.js.map +1 -1
  39. package/apps/core/CoreEventBus.d.ts +1 -2
  40. package/apps/core/CoreEventBus.js +2 -4
  41. package/apps/core/CoreEventBus.js.map +1 -1
  42. package/apps/core/CoreFileManager.d.ts +2 -3
  43. package/apps/core/CoreFileManager.js +2 -4
  44. package/apps/core/CoreFileManager.js.map +1 -1
  45. package/apps/core/CoreOpenSearch.d.ts +7 -7
  46. package/apps/core/CoreOpenSearch.js +3 -5
  47. package/apps/core/CoreOpenSearch.js.map +1 -1
  48. package/apps/core/CoreVpc.d.ts +3 -4
  49. package/apps/core/CoreVpc.js +2 -4
  50. package/apps/core/CoreVpc.js.map +1 -1
  51. package/apps/core/createCorePulumiApp.d.ts +15 -15
  52. package/apps/core/createCorePulumiApp.js +3 -7
  53. package/apps/core/createCorePulumiApp.js.map +1 -1
  54. package/apps/createAppBucket.d.ts +5 -5
  55. package/apps/createAppBucket.js +2 -4
  56. package/apps/createAppBucket.js.map +1 -1
  57. package/apps/lambdaUtils.d.ts +1 -1
  58. package/apps/lambdaUtils.js +2 -4
  59. package/apps/lambdaUtils.js.map +1 -1
  60. package/apps/react/createReactPulumiApp.d.ts +5 -5
  61. package/apps/react/createReactPulumiApp.js +33 -10
  62. package/apps/react/createReactPulumiApp.js.map +1 -1
  63. package/apps/tenantRouter.js +6 -12
  64. package/apps/tenantRouter.js.map +1 -1
  65. package/apps/website/WebsitePrerendering.d.ts +17 -18
  66. package/apps/website/WebsitePrerendering.js +8 -13
  67. package/apps/website/WebsitePrerendering.js.map +1 -1
  68. package/apps/website/createWebsitePulumiApp.d.ts +27 -27
  69. package/apps/website/createWebsitePulumiApp.js +6 -12
  70. package/apps/website/createWebsitePulumiApp.js.map +1 -1
  71. package/components/tenantRouter/WebsiteTenantRouter.js +3 -5
  72. package/components/tenantRouter/WebsiteTenantRouter.js.map +1 -1
  73. package/package.json +13 -13
  74. package/utils/crawlDirectory.js +2 -4
  75. package/utils/crawlDirectory.js.map +1 -1
  76. package/utils/getPresignedPost.js +1 -1
  77. package/utils/lambdaEnvVariables.d.ts +1 -1
  78. package/utils/lambdaEnvVariables.js +9 -15
  79. package/utils/lambdaEnvVariables.js.map +1 -1
  80. package/utils/tagResources.js +5 -11
  81. package/utils/tagResources.js.map +1 -1
  82. package/utils/uploadFolderToS3.js +3 -8
  83. package/utils/uploadFolderToS3.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["createReactPulumiApp","projectAppParams","createPulumiApp","name","path","folder","config","program","app","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","pulumi","addHandler","bucket","createPrivateAppBucket","cloudfront","addResource","aws","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","domains","applyCustomDomain","addOutputs","appStorage","output","id","appDomain","domainName","appUrl","apply","value","tagResources","WbyAppName","WbyProjectName","String","process","env","WbyEnvironment"],"sources":["createReactPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\n\nimport { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { tagResources } from \"~/utils\";\nimport { createPrivateAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\n\nexport type ReactPulumiApp = ReturnType<typeof createReactPulumiApp>;\n\nexport interface CreateReactPulumiAppParams {\n /**\n * A name of the app, e.g., \"user-area\"\n */\n name: string;\n\n /**\n * A folder where the app is located, e.g., \"apps/user-area\"\n */\n folder: string;\n\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: ReactPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n}\n\nexport const createReactPulumiApp = (projectAppParams: CreateReactPulumiAppParams) => {\n return createPulumiApp({\n name: projectAppParams.name,\n path: projectAppParams.folder,\n config: projectAppParams,\n program: async app => {\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\n const { name } = projectAppParams;\n\n // 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 ReactPulumiApp);\n });\n }\n\n const bucket = createPrivateAppBucket(app, `${name}-app`);\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: `${name}-app-cdn`,\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\n }\n\n app.addOutputs({\n appStorage: bucket.bucket.output.id,\n appDomain: cloudfront.output.domainName,\n appUrl: cloudfront.output.domainName.apply(value => `https://${value}`)\n });\n\n tagResources({\n WbyAppName: name,\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n return {\n ...bucket,\n cloudfront\n };\n }\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createReactPulumiApp","projectAppParams","createPulumiApp","name","path","folder","config","program","app","pulumiResourceNamePrefix","getParam","onResource","resource","startsWith","core","addModule","CoreOutput","pulumi","addHandler","bucket","createPrivateAppBucket","cloudfront","addResource","aws","Distribution","enabled","waitForDeployment","origins","origin","defaultRootObject","defaultCacheBehavior","compress","targetOriginId","originId","viewerProtocolPolicy","allowedMethods","cachedMethods","forwardedValues","cookies","forward","queryString","minTtl","defaultTtl","maxTtl","priceClass","customErrorResponses","errorCode","responseCode","responsePagePath","restrictions","geoRestriction","restrictionType","viewerCertificate","cloudfrontDefaultCertificate","domains","applyCustomDomain","addOutputs","appStorage","output","id","appDomain","domainName","appUrl","apply","value","tagResources","WbyAppName","WbyProjectName","String","process","env","WbyEnvironment","dynamodb","TableItem","tableName","primaryDynamodbTableName","hashKey","primaryDynamodbTableHashKey","rangeKey","primaryDynamodbTableRangeKey","key","item","interpolate","params","run","variant"],"sources":["createReactPulumiApp.ts"],"sourcesContent":["import * as aws from \"@pulumi/aws\";\n\nimport { createPulumiApp, PulumiAppParam, PulumiAppParamCallback } from \"@webiny/pulumi\";\nimport { tagResources } from \"~/utils\";\nimport { createPrivateAppBucket } from \"../createAppBucket\";\nimport { applyCustomDomain, CustomDomainParams } from \"../customDomain\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport { CoreOutput } from \"../common/CoreOutput\";\n\nexport type ReactPulumiApp = ReturnType<typeof createReactPulumiApp>;\n\nexport interface CreateReactPulumiAppParams {\n /**\n * A name of the app, e.g., \"user-area\"\n */\n name: string;\n\n /**\n * A folder where the app is located, e.g., \"apps/user-area\"\n */\n folder: string;\n\n /** Custom domain configuration */\n domains?: PulumiAppParamCallback<CustomDomainParams>;\n\n /**\n * Provides a way to adjust existing Pulumi code (cloud infrastructure resources)\n * or add additional ones into the mix.\n */\n pulumi?: (app: ReactPulumiApp) => void | Promise<void>;\n\n /**\n * Prefixes names of all Pulumi cloud infrastructure resource with given prefix.\n */\n pulumiResourceNamePrefix?: PulumiAppParam<string>;\n}\n\nexport const createReactPulumiApp = (projectAppParams: CreateReactPulumiAppParams) => {\n return createPulumiApp({\n name: projectAppParams.name,\n path: projectAppParams.folder,\n config: projectAppParams,\n program: async app => {\n const pulumiResourceNamePrefix = app.getParam(\n projectAppParams.pulumiResourceNamePrefix\n );\n if (pulumiResourceNamePrefix) {\n app.onResource(resource => {\n if (!resource.name.startsWith(pulumiResourceNamePrefix)) {\n resource.name = `${pulumiResourceNamePrefix}${resource.name}`;\n }\n });\n }\n\n const { name } = projectAppParams;\n\n // Register core output as a module available for all other modules\n const core = app.addModule(CoreOutput);\n\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 ReactPulumiApp);\n });\n }\n\n const bucket = createPrivateAppBucket(app, `${name}-app`);\n\n const cloudfront = app.addResource(aws.cloudfront.Distribution, {\n name: `${name}-app-cdn`,\n config: {\n enabled: true,\n waitForDeployment: false,\n origins: [bucket.origin],\n defaultRootObject: \"index.html\",\n defaultCacheBehavior: {\n compress: true,\n targetOriginId: bucket.origin.originId,\n viewerProtocolPolicy: \"redirect-to-https\",\n allowedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n cachedMethods: [\"GET\", \"HEAD\", \"OPTIONS\"],\n forwardedValues: {\n cookies: { forward: \"none\" },\n queryString: false\n },\n // MinTTL <= DefaultTTL <= MaxTTL\n minTtl: 0,\n defaultTtl: 600,\n maxTtl: 600\n },\n priceClass: \"PriceClass_100\",\n customErrorResponses: [\n { errorCode: 404, responseCode: 404, responsePagePath: \"/index.html\" }\n ],\n restrictions: {\n geoRestriction: {\n restrictionType: \"none\"\n }\n },\n viewerCertificate: {\n cloudfrontDefaultCertificate: true\n }\n }\n });\n\n const domains = app.getParam(projectAppParams.domains);\n if (domains) {\n applyCustomDomain(cloudfront, domains);\n }\n\n app.addOutputs({\n appStorage: bucket.bucket.output.id,\n appDomain: cloudfront.output.domainName,\n appUrl: cloudfront.output.domainName.apply(value => `https://${value}`)\n });\n\n tagResources({\n WbyAppName: name,\n WbyProjectName: String(process.env[\"WEBINY_PROJECT_NAME\"]),\n WbyEnvironment: String(process.env[\"WEBINY_ENV\"])\n });\n\n /**\n * We need to store the appUrl to the admin settings item in the dynamodb\n */\n app.addResource(aws.dynamodb.TableItem, {\n name: \"adminSettings\",\n config: {\n tableName: core.primaryDynamodbTableName,\n hashKey: core.primaryDynamodbTableHashKey,\n rangeKey: pulumi\n .output(core.primaryDynamodbTableRangeKey)\n .apply(key => key || \"SK\"),\n item: pulumi.interpolate`{\n \"PK\": {\"S\": \"ADMIN#SETTINGS\"},\n \"SK\": {\"S\": \"${app.params.run.variant || \"default\"}\"},\n \"data\": {\n \"M\": {\n \"appUrl\": {\n \"S\": \"${cloudfront.output.domainName.apply(\n value => `https://${value}`\n )}\"\n }\n }\n }\n }`\n }\n });\n\n return {\n ...bucket,\n cloudfront\n };\n }\n });\n};\n"],"mappings":";;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AA8BO,MAAMA,oBAAoB,GAAIC,gBAAD,IAAkD;EAClF,OAAO,IAAAC,uBAAA,EAAgB;IACnBC,IAAI,EAAEF,gBAAgB,CAACE,IADJ;IAEnBC,IAAI,EAAEH,gBAAgB,CAACI,MAFJ;IAGnBC,MAAM,EAAEL,gBAHW;IAInBM,OAAO,EAAE,MAAMC,GAAN,IAAa;MAClB,MAAMC,wBAAwB,GAAGD,GAAG,CAACE,QAAJ,CAC7BT,gBAAgB,CAACQ,wBADY,CAAjC;;MAGA,IAAIA,wBAAJ,EAA8B;QAC1BD,GAAG,CAACG,UAAJ,CAAeC,QAAQ,IAAI;UACvB,IAAI,CAACA,QAAQ,CAACT,IAAT,CAAcU,UAAd,CAAyBJ,wBAAzB,CAAL,EAAyD;YACrDG,QAAQ,CAACT,IAAT,GAAiB,GAAEM,wBAAyB,GAAEG,QAAQ,CAACT,IAAK,EAA5D;UACH;QACJ,CAJD;MAKH;;MAED,MAAM;QAAEA;MAAF,IAAWF,gBAAjB,CAZkB,CAclB;;MACA,MAAMa,IAAI,GAAGN,GAAG,CAACO,SAAJ,CAAcC,sBAAd,CAAb,CAfkB,CAiBlB;MACA;;MACA,IAAIf,gBAAgB,CAACgB,MAArB,EAA6B;QACzBT,GAAG,CAACU,UAAJ,CAAe,MAAM;UACjB,OAAOjB,gBAAgB,CAACgB,MAAjB,CAAyBT,GAAzB,CAAP;QACH,CAFD;MAGH;;MAED,MAAMW,MAAM,GAAG,IAAAC,uCAAA,EAAuBZ,GAAvB,EAA6B,GAAEL,IAAK,MAApC,CAAf;MAEA,MAAMkB,UAAU,GAAGb,GAAG,CAACc,WAAJ,CAAgBC,GAAG,CAACF,UAAJ,CAAeG,YAA/B,EAA6C;QAC5DrB,IAAI,EAAG,GAAEA,IAAK,UAD8C;QAE5DG,MAAM,EAAE;UACJmB,OAAO,EAAE,IADL;UAEJC,iBAAiB,EAAE,KAFf;UAGJC,OAAO,EAAE,CAACR,MAAM,CAACS,MAAR,CAHL;UAIJC,iBAAiB,EAAE,YAJf;UAKJC,oBAAoB,EAAE;YAClBC,QAAQ,EAAE,IADQ;YAElBC,cAAc,EAAEb,MAAM,CAACS,MAAP,CAAcK,QAFZ;YAGlBC,oBAAoB,EAAE,mBAHJ;YAIlBC,cAAc,EAAE,CAAC,KAAD,EAAQ,MAAR,EAAgB,SAAhB,CAJE;YAKlBC,aAAa,EAAE,CAAC,KAAD,EAAQ,MAAR,EAAgB,SAAhB,CALG;YAMlBC,eAAe,EAAE;cACbC,OAAO,EAAE;gBAAEC,OAAO,EAAE;cAAX,CADI;cAEbC,WAAW,EAAE;YAFA,CANC;YAUlB;YACAC,MAAM,EAAE,CAXU;YAYlBC,UAAU,EAAE,GAZM;YAalBC,MAAM,EAAE;UAbU,CALlB;UAoBJC,UAAU,EAAE,gBApBR;UAqBJC,oBAAoB,EAAE,CAClB;YAAEC,SAAS,EAAE,GAAb;YAAkBC,YAAY,EAAE,GAAhC;YAAqCC,gBAAgB,EAAE;UAAvD,CADkB,CArBlB;UAwBJC,YAAY,EAAE;YACVC,cAAc,EAAE;cACZC,eAAe,EAAE;YADL;UADN,CAxBV;UA6BJC,iBAAiB,EAAE;YACfC,4BAA4B,EAAE;UADf;QA7Bf;MAFoD,CAA7C,CAAnB;MAqCA,MAAMC,OAAO,GAAG9C,GAAG,CAACE,QAAJ,CAAaT,gBAAgB,CAACqD,OAA9B,CAAhB;;MACA,IAAIA,OAAJ,EAAa;QACT,IAAAC,+BAAA,EAAkBlC,UAAlB,EAA8BiC,OAA9B;MACH;;MAED9C,GAAG,CAACgD,UAAJ,CAAe;QACXC,UAAU,EAAEtC,MAAM,CAACA,MAAP,CAAcuC,MAAd,CAAqBC,EADtB;QAEXC,SAAS,EAAEvC,UAAU,CAACqC,MAAX,CAAkBG,UAFlB;QAGXC,MAAM,EAAEzC,UAAU,CAACqC,MAAX,CAAkBG,UAAlB,CAA6BE,KAA7B,CAAmCC,KAAK,IAAK,WAAUA,KAAM,EAA7D;MAHG,CAAf;MAMA,IAAAC,mBAAA,EAAa;QACTC,UAAU,EAAE/D,IADH;QAETgE,cAAc,EAAEC,MAAM,CAACC,OAAO,CAACC,GAAR,CAAY,qBAAZ,CAAD,CAFb;QAGTC,cAAc,EAAEH,MAAM,CAACC,OAAO,CAACC,GAAR,CAAY,YAAZ,CAAD;MAHb,CAAb;MAMA;AACZ;AACA;;MACY9D,GAAG,CAACc,WAAJ,CAAgBC,GAAG,CAACiD,QAAJ,CAAaC,SAA7B,EAAwC;QACpCtE,IAAI,EAAE,eAD8B;QAEpCG,MAAM,EAAE;UACJoE,SAAS,EAAE5D,IAAI,CAAC6D,wBADZ;UAEJC,OAAO,EAAE9D,IAAI,CAAC+D,2BAFV;UAGJC,QAAQ,EAAE7D,MAAM,CACXyC,MADK,CACE5C,IAAI,CAACiE,4BADP,EAELhB,KAFK,CAECiB,GAAG,IAAIA,GAAG,IAAI,IAFf,CAHN;UAMJC,IAAI,EAAEhE,MAAM,CAACiE,WAAY;AAC7C;AACA,yCAAyC1E,GAAG,CAAC2E,MAAJ,CAAWC,GAAX,CAAeC,OAAf,IAA0B,SAAU;AAC7E;AACA;AACA;AACA,wCAAwChE,UAAU,CAACqC,MAAX,CAAkBG,UAAlB,CAA6BE,KAA7B,CACJC,KAAK,IAAK,WAAUA,KAAM,EADtB,CAEN;AAClC;AACA;AACA;AACA;QAlBwB;MAF4B,CAAxC;MAwBA,mEACO7C,MADP;QAEIE;MAFJ;IAIH;EApHkB,CAAhB,CAAP;AAsHH,CAvHM"}
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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.applyTenantRouter = applyTenantRouter;
9
11
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
13
 
12
14
  var _fs = require("fs");
13
15
 
@@ -17,14 +19,6 @@ var aws = _interopRequireWildcard(require("@pulumi/aws"));
17
19
 
18
20
  var _common = require("./common");
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
- 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; }
25
-
26
- 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; }
27
-
28
22
  function createFunctionArchive({
29
23
  dynamoDbTable,
30
24
  region
@@ -102,9 +96,9 @@ function applyTenantRouter(app, cloudfront) {
102
96
  cloudfront.config.defaultCacheBehavior(value => {
103
97
  var _value$forwardedValue, _value$forwardedValue2, _value$forwardedValue3;
104
98
 
105
- return _objectSpread(_objectSpread({}, value), {}, {
99
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
106
100
  // We need to forward the `Host` header so the Lambda@Edge knows what custom domain was requested.
107
- forwardedValues: _objectSpread(_objectSpread({}, value.forwardedValues), {}, {
101
+ forwardedValues: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value.forwardedValues), {}, {
108
102
  queryString: ((_value$forwardedValue = value.forwardedValues) === null || _value$forwardedValue === void 0 ? void 0 : _value$forwardedValue.queryString) || false,
109
103
  cookies: ((_value$forwardedValue2 = value.forwardedValues) === null || _value$forwardedValue2 === void 0 ? void 0 : _value$forwardedValue2.cookies) || {
110
104
  forward: "none"
@@ -1 +1 @@
1
- {"version":3,"names":["createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","pulumi","asset","AssetArchive","StringAsset","PREFIX","applyTenantRouter","app","cloudfront","String","process","env","AWS_REGION","core","getModule","CoreOutput","primaryDynamodbTableName","inlinePolicies","all","aws","getCallerIdentity","apply","identity","name","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","addResource","iam","Role","config","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","awsUsEast1","Provider","originLambda","lambda","Function","publish","runtime","output","arn","timeout","memorySize","code","opts","provider","defaultCacheBehavior","value","forwardedValues","queryString","cookies","forward","headers","lambdaFunctionAssociations","eventType","includeBody","lambdaArn","qualifiedArn"],"sources":["tenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiApp, PulumiAppResource } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"./common\";\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(\n __dirname + \"/../components/tenantRouter/functions/origin/request.js\",\n \"utf-8\"\n );\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\nconst PREFIX = \"website-router\";\n\nexport function applyTenantRouter(\n app: PulumiApp,\n cloudfront: PulumiAppResource<typeof aws.cloudfront.Distribution>\n) {\n const region = String(process.env.AWS_REGION);\n\n // Get Core app output\n const core = app.getModule(CoreOutput);\n\n // `primaryDynamodbTableName` is a string, hence the type cast here.\n const dynamoDbTable = core.primaryDynamodbTableName;\n\n // Because of JSON.stringify, we need to resolve promises upfront.\n const inlinePolicies = pulumi\n .all([aws.getCallerIdentity({}), dynamoDbTable])\n .apply(([identity, dynamoDbTable]) => [\n {\n name: \"tenant-router-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}:${identity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${identity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = app.addResource(aws.iam.Role, {\n name: `${PREFIX}-role`,\n config: {\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 });\n\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n const originLambda = app.addResource(aws.lambda.Function, {\n name: `${PREFIX}-origin-request`,\n config: {\n publish: true,\n runtime: \"nodejs14.x\",\n handler: \"index.handler\",\n role: role.output.arn,\n timeout: 5,\n memorySize: 128,\n code: dynamoDbTable.apply(dynamoDbTable => {\n return createFunctionArchive({\n region,\n dynamoDbTable\n });\n })\n },\n opts: { provider: awsUsEast1 }\n });\n\n cloudfront.config.defaultCacheBehavior(value => {\n return {\n ...value,\n // We need to forward the `Host` header so the Lambda@Edge knows what custom domain was requested.\n forwardedValues: {\n ...value.forwardedValues,\n queryString: value.forwardedValues?.queryString || false,\n cookies: value.forwardedValues?.cookies || { forward: \"none\" },\n headers: [...(value.forwardedValues?.headers || []), \"Host\"]\n },\n lambdaFunctionAssociations: [\n ...(value.lambdaFunctionAssociations || []),\n {\n eventType: \"origin-request\",\n includeBody: false,\n lambdaArn: originLambda.output.qualifiedArn\n }\n ]\n };\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["createFunctionArchive","dynamoDbTable","region","handler","readFileSync","__dirname","source","replace","pulumi","asset","AssetArchive","StringAsset","PREFIX","applyTenantRouter","app","cloudfront","String","process","env","AWS_REGION","core","getModule","CoreOutput","primaryDynamodbTableName","inlinePolicies","all","aws","getCallerIdentity","apply","identity","name","policy","JSON","stringify","Version","Statement","Sid","Effect","Action","Resource","accountId","role","addResource","iam","Role","config","managedPolicyArns","ManagedPolicies","AWSLambdaBasicExecutionRole","assumeRolePolicy","Principal","Principals","LambdaPrincipal","EdgeLambdaPrincipal","awsUsEast1","Provider","originLambda","lambda","Function","publish","runtime","output","arn","timeout","memorySize","code","opts","provider","defaultCacheBehavior","value","forwardedValues","queryString","cookies","forward","headers","lambdaFunctionAssociations","eventType","includeBody","lambdaArn","qualifiedArn"],"sources":["tenantRouter.ts"],"sourcesContent":["import { readFileSync } from \"fs\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { PulumiApp, PulumiAppResource } from \"@webiny/pulumi\";\nimport { CoreOutput } from \"./common\";\n\ninterface Params {\n region: string;\n dynamoDbTable: string;\n}\n\nfunction createFunctionArchive({ dynamoDbTable, region }: Params) {\n const handler = readFileSync(\n __dirname + \"/../components/tenantRouter/functions/origin/request.js\",\n \"utf-8\"\n );\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\nconst PREFIX = \"website-router\";\n\nexport function applyTenantRouter(\n app: PulumiApp,\n cloudfront: PulumiAppResource<typeof aws.cloudfront.Distribution>\n) {\n const region = String(process.env.AWS_REGION);\n\n // Get Core app output\n const core = app.getModule(CoreOutput);\n\n // `primaryDynamodbTableName` is a string, hence the type cast here.\n const dynamoDbTable = core.primaryDynamodbTableName;\n\n // Because of JSON.stringify, we need to resolve promises upfront.\n const inlinePolicies = pulumi\n .all([aws.getCallerIdentity({}), dynamoDbTable])\n .apply(([identity, dynamoDbTable]) => [\n {\n name: \"tenant-router-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}:${identity.accountId}:table/${dynamoDbTable}`,\n `arn:aws:dynamodb:${region}:${identity.accountId}:table/${dynamoDbTable}/*`\n ]\n }\n ]\n })\n }\n ]);\n\n const role = app.addResource(aws.iam.Role, {\n name: `${PREFIX}-role`,\n config: {\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 });\n\n const awsUsEast1 = new aws.Provider(\"us-east-1\", { region: \"us-east-1\" });\n\n const originLambda = app.addResource(aws.lambda.Function, {\n name: `${PREFIX}-origin-request`,\n config: {\n publish: true,\n runtime: \"nodejs14.x\",\n handler: \"index.handler\",\n role: role.output.arn,\n timeout: 5,\n memorySize: 128,\n code: dynamoDbTable.apply(dynamoDbTable => {\n return createFunctionArchive({\n region,\n dynamoDbTable\n });\n })\n },\n opts: { provider: awsUsEast1 }\n });\n\n cloudfront.config.defaultCacheBehavior(value => {\n return {\n ...value,\n // We need to forward the `Host` header so the Lambda@Edge knows what custom domain was requested.\n forwardedValues: {\n ...value.forwardedValues,\n queryString: value.forwardedValues?.queryString || false,\n cookies: value.forwardedValues?.cookies || { forward: \"none\" },\n headers: [...(value.forwardedValues?.headers || []), \"Host\"]\n },\n lambdaFunctionAssociations: [\n ...(value.lambdaFunctionAssociations || []),\n {\n eventType: \"origin-request\",\n includeBody: false,\n lambdaArn: originLambda.output.qualifiedArn\n }\n ]\n };\n });\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import * as pulumi from "@pulumi/pulumi";
2
- import * as aws from "@pulumi/aws";
3
2
  import { PulumiApp } from "@webiny/pulumi";
4
3
  interface PreRenderingServiceParams {
5
4
  dbTableName: pulumi.Output<string>;
@@ -12,29 +11,29 @@ interface PreRenderingServiceParams {
12
11
  }
13
12
  export declare function createPrerenderingService(app: PulumiApp, params: PreRenderingServiceParams): {
14
13
  subscriber: {
15
- policy: pulumi.Output<aws.iam.Policy>;
16
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
17
- lambda: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
18
- eventRule: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventRule>;
19
- eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Permission>;
20
- eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventTarget>;
14
+ policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
15
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
16
+ lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
17
+ eventRule: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventRule").EventRule>;
18
+ eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
19
+ eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
21
20
  };
22
21
  renderer: {
23
- policy: pulumi.Output<aws.iam.Policy>;
24
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
25
- lambda: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
26
- eventSourceMapping: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.EventSourceMapping>;
22
+ policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
23
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
24
+ lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
25
+ eventSourceMapping: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/eventSourceMapping").EventSourceMapping>;
27
26
  };
28
27
  flush: {
29
- policy: pulumi.Output<aws.iam.Policy>;
30
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
31
- lambda: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
32
- eventRule: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventRule>;
33
- eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Permission>;
34
- eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventTarget>;
28
+ policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
29
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
30
+ lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
31
+ eventRule: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventRule").EventRule>;
32
+ eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
33
+ eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
35
34
  };
36
35
  settings: {
37
- tableItem: import("@webiny/pulumi").PulumiAppResource<typeof aws.dynamodb.TableItem>;
36
+ tableItem: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/tableItem").TableItem>;
38
37
  };
39
38
  };
40
39
  export {};
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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.createPrerenderingService = createPrerenderingService;
9
11
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
13
 
12
14
  var path = _interopRequireWildcard(require("path"));
13
15
 
@@ -25,14 +27,7 @@ var _common = require("../common");
25
27
 
26
28
  var _awsUtils = require("../awsUtils");
27
29
 
28
- 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); }
29
-
30
- 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; }
31
-
32
- 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; }
33
-
34
- 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; }
35
-
30
+ // @ts-ignore
36
31
  function createPrerenderingService(app, params) {
37
32
  const queue = app.addResource(aws.sqs.Queue, {
38
33
  name: "ps-render-queue",
@@ -102,7 +97,7 @@ function createRenderSubscriber(app, policy, params) {
102
97
  timeout: 30,
103
98
  memorySize: 512,
104
99
  environment: {
105
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread({}, value), {}, {
100
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
106
101
  DB_TABLE: params.dbTableName
107
102
  }))
108
103
  },
@@ -171,7 +166,7 @@ function createRenderer(app, queue, policy, params) {
171
166
  memorySize: 2048,
172
167
  layers: [(0, _awsLayers.getLayerArn)("shelf-io-chrome-aws-lambda-layer")],
173
168
  environment: {
174
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread({}, value), {}, {
169
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
175
170
  DB_TABLE: params.dbTableName
176
171
  }))
177
172
  },
@@ -213,7 +208,7 @@ function createFlushService(app, policy, params) {
213
208
  timeout: 30,
214
209
  memorySize: 512,
215
210
  environment: {
216
- variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => _objectSpread(_objectSpread({}, value), {}, {
211
+ variables: (0, _lambdaUtils.getCommonLambdaEnvVariables)().apply(value => (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
217
212
  DB_TABLE: params.dbTableName
218
213
  }))
219
214
  },
@@ -1 +1 @@
1
- {"version":3,"names":["createPrerenderingService","app","params","queue","addResource","aws","sqs","Queue","name","config","visibilityTimeoutSeconds","fifoQueue","policy","createLambdaPolicy","output","renderer","createRenderer","subscriber","createRenderSubscriber","flush","createFlushService","settings","createPrerenderingSettingsDbItem","tableItem","dynamodb","TableItem","tableName","dbTableName","hashKey","dbTableHashKey","rangeKey","dbTableRangeKey","item","pulumi","interpolate","run","variant","appUrl","deliveryUrl","bucket","cloudfrontId","url","apply","v","JSON","stringify","Converter","marshall","parse","core","getModule","CoreOutput","role","createLambdaRole","lambda","Function","arn","runtime","handler","timeout","memorySize","environment","variables","getCommonLambdaEnvVariables","value","DB_TABLE","description","code","asset","AssetArchive","FileArchive","path","join","paths","workspace","vpcConfig","VpcConfig","functionVpcConfig","eventRule","cloudwatch","EventRule","eventBusName","eventBusArn","eventPattern","eventPermission","Permission","action","function","principal","sourceArn","eventTarget","EventTarget","rule","executionRole","iam","ManagedPolicy","AWSLambdaSQSQueueExecutionRole","layers","getLayerArn","eventSourceMapping","EventSourceMapping","functionName","eventSourceArn","batchSize","awsAccountId","getAwsAccountId","Policy","Version","Statement","Sid","Effect","Action","Resource","s","resources","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","push"],"sources":["WebsitePrerendering.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { Converter } from \"aws-sdk/clients/dynamodb\";\n\nimport { PulumiApp } from \"@webiny/pulumi\";\n// @ts-ignore\nimport { getLayerArn } from \"@webiny/aws-layers\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\nimport { getAwsAccountId } from \"../awsUtils\";\n\ninterface PreRenderingServiceParams {\n dbTableName: pulumi.Output<string>;\n dbTableHashKey: pulumi.Output<string>;\n dbTableRangeKey: pulumi.Output<string>;\n appUrl: pulumi.Output<string>;\n deliveryUrl: pulumi.Output<string>;\n bucket: pulumi.Output<string>;\n cloudfrontId: pulumi.Output<string>;\n}\n\nexport function createPrerenderingService(app: PulumiApp, params: PreRenderingServiceParams) {\n const queue = app.addResource(aws.sqs.Queue, {\n name: \"ps-render-queue\",\n config: {\n visibilityTimeoutSeconds: 300,\n fifoQueue: true\n }\n });\n\n const policy = createLambdaPolicy(app, queue.output, params);\n const renderer = createRenderer(app, queue.output, policy.output, params);\n const subscriber = createRenderSubscriber(app, policy.output, params);\n const flush = createFlushService(app, policy.output, params);\n const settings = createPrerenderingSettingsDbItem(app, queue.output, params);\n\n return {\n subscriber,\n renderer,\n flush,\n settings\n };\n}\n\nfunction createPrerenderingSettingsDbItem(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n /**\n * To handle everything related to prerendering, we need the following information:\n * - appUrl - SPA URL used to prerender HTML\n * - bucket - name of the S3 bucket used for storage of HTML snapshots\n * - cloudfrontId - for cache invalidation\n * - sqsQueueUrl - an SQS queue for prerendering tasks (messages)\n */\n const tableItem = app.addResource(aws.dynamodb.TableItem, {\n name: \"psSettings\",\n config: {\n tableName: params.dbTableName,\n hashKey: params.dbTableHashKey,\n rangeKey: params.dbTableRangeKey,\n item: pulumi.interpolate`{\n \"PK\": \"PS#SETTINGS\",\n \"SK\": \"${app.params.run.variant || \"default\"}\",\n \"data\": {\n \"appUrl\": \"${params.appUrl}\",\n \"deliveryUrl\": \"${params.deliveryUrl}\",\n \"bucket\": \"${params.bucket}\",\n \"cloudfrontId\": \"${params.cloudfrontId}\",\n \"sqsQueueUrl\": \"${queue.url}\"\n }\n }`\n // We're using the native DynamoDB converter to avoid building those nested objects ourselves.\n .apply(v => JSON.stringify(Converter.marshall(JSON.parse(v))))\n }\n });\n\n return { tableItem };\n}\n\nfunction createRenderSubscriber(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-render-subscriber-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-subscriber-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to render events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/subscribe/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n /**\n * TODO: when we get to staged rollouts and variants, maybe we can create per-variant event rules,\n * to avoid invocation of all variant lambdas just to do a `detail-type` check and exit early.\n * That way, we would be publishing events scoped to a variant, like \"RenderPages-{variant}\".\n */\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-render-subscriber-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"RenderPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-render-subscriber-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-render-subscriber-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createRenderer(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const role = createLambdaRole(app, {\n name: \"ps-render-lambda-role\",\n policy: policy,\n executionRole: aws.iam.ManagedPolicy.AWSLambdaSQSQueueExecutionRole\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 300,\n memorySize: 2048,\n layers: [getLayerArn(\"shelf-io-chrome-aws-lambda-layer\")],\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Renders pages and stores output in an S3 bucket of choice.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/render/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"ps-render-event-source-mapping\",\n config: {\n functionName: lambda.output.arn,\n eventSourceArn: queue.arn,\n batchSize: 1\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventSourceMapping\n };\n}\n\nfunction createFlushService(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-flush-lambda-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-flush-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to flush events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/flush/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-flush-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"FlushPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-flush-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-flush-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createLambdaPolicy(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ps-lambda-policy\",\n config: {\n description: \"This policy enables access to Lambda, S3, Cloudfront, SQS and Dynamodb\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: core.apply(s => {\n // Add permissions to DynamoDB table\n const resources = [\n `${s.primaryDynamodbTableArn}`,\n `${s.primaryDynamodbTableArn}/*`\n ];\n\n // Attach permissions for elastic search dynamo as well (if ES is enabled).\n if (s.elasticsearchDynamodbTableArn) {\n resources.push(\n `${s.elasticsearchDynamodbTableArn}`,\n `${s.elasticsearchDynamodbTableArn}/*`\n );\n }\n\n return resources;\n })\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\"s3:DeleteObject\", \"s3:GetObject\", \"s3:PutObject\"],\n Resource: [pulumi.interpolate`arn:aws:s3:::${params.bucket}/*`]\n },\n {\n Sid: \"PermissionForCloudfront\",\n Effect: \"Allow\",\n Action: \"cloudfront:CreateInvalidation\",\n Resource: pulumi.interpolate`arn:aws:cloudfront::${awsAccountId}:distribution/*`\n },\n {\n Sid: \"PermissionForSQS\",\n Effect: \"Allow\",\n Action: [\"sqs:SendMessage\", \"sqs:SendMessageBatch\"],\n Resource: queue.arn\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["createPrerenderingService","app","params","queue","addResource","aws","sqs","Queue","name","config","visibilityTimeoutSeconds","fifoQueue","policy","createLambdaPolicy","output","renderer","createRenderer","subscriber","createRenderSubscriber","flush","createFlushService","settings","createPrerenderingSettingsDbItem","tableItem","dynamodb","TableItem","tableName","dbTableName","hashKey","dbTableHashKey","rangeKey","dbTableRangeKey","item","pulumi","interpolate","run","variant","appUrl","deliveryUrl","bucket","cloudfrontId","url","apply","v","JSON","stringify","Converter","marshall","parse","core","getModule","CoreOutput","role","createLambdaRole","lambda","Function","arn","runtime","handler","timeout","memorySize","environment","variables","getCommonLambdaEnvVariables","value","DB_TABLE","description","code","asset","AssetArchive","FileArchive","path","join","paths","workspace","vpcConfig","VpcConfig","functionVpcConfig","eventRule","cloudwatch","EventRule","eventBusName","eventBusArn","eventPattern","eventPermission","Permission","action","function","principal","sourceArn","eventTarget","EventTarget","rule","executionRole","iam","ManagedPolicy","AWSLambdaSQSQueueExecutionRole","layers","getLayerArn","eventSourceMapping","EventSourceMapping","functionName","eventSourceArn","batchSize","awsAccountId","getAwsAccountId","Policy","Version","Statement","Sid","Effect","Action","Resource","s","resources","primaryDynamodbTableArn","elasticsearchDynamodbTableArn","push"],"sources":["WebsitePrerendering.ts"],"sourcesContent":["import * as path from \"path\";\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as aws from \"@pulumi/aws\";\nimport { Converter } from \"aws-sdk/clients/dynamodb\";\n\nimport { PulumiApp } from \"@webiny/pulumi\";\n// @ts-ignore\nimport { getLayerArn } from \"@webiny/aws-layers\";\n\nimport { createLambdaRole, getCommonLambdaEnvVariables } from \"../lambdaUtils\";\nimport { CoreOutput, VpcConfig } from \"../common\";\nimport { getAwsAccountId } from \"../awsUtils\";\n\ninterface PreRenderingServiceParams {\n dbTableName: pulumi.Output<string>;\n dbTableHashKey: pulumi.Output<string>;\n dbTableRangeKey: pulumi.Output<string>;\n appUrl: pulumi.Output<string>;\n deliveryUrl: pulumi.Output<string>;\n bucket: pulumi.Output<string>;\n cloudfrontId: pulumi.Output<string>;\n}\n\nexport function createPrerenderingService(app: PulumiApp, params: PreRenderingServiceParams) {\n const queue = app.addResource(aws.sqs.Queue, {\n name: \"ps-render-queue\",\n config: {\n visibilityTimeoutSeconds: 300,\n fifoQueue: true\n }\n });\n\n const policy = createLambdaPolicy(app, queue.output, params);\n const renderer = createRenderer(app, queue.output, policy.output, params);\n const subscriber = createRenderSubscriber(app, policy.output, params);\n const flush = createFlushService(app, policy.output, params);\n const settings = createPrerenderingSettingsDbItem(app, queue.output, params);\n\n return {\n subscriber,\n renderer,\n flush,\n settings\n };\n}\n\nfunction createPrerenderingSettingsDbItem(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n /**\n * To handle everything related to prerendering, we need the following information:\n * - appUrl - SPA URL used to prerender HTML\n * - bucket - name of the S3 bucket used for storage of HTML snapshots\n * - cloudfrontId - for cache invalidation\n * - sqsQueueUrl - an SQS queue for prerendering tasks (messages)\n */\n const tableItem = app.addResource(aws.dynamodb.TableItem, {\n name: \"psSettings\",\n config: {\n tableName: params.dbTableName,\n hashKey: params.dbTableHashKey,\n rangeKey: params.dbTableRangeKey,\n item: pulumi.interpolate`{\n \"PK\": \"PS#SETTINGS\",\n \"SK\": \"${app.params.run.variant || \"default\"}\",\n \"data\": {\n \"appUrl\": \"${params.appUrl}\",\n \"deliveryUrl\": \"${params.deliveryUrl}\",\n \"bucket\": \"${params.bucket}\",\n \"cloudfrontId\": \"${params.cloudfrontId}\",\n \"sqsQueueUrl\": \"${queue.url}\"\n }\n }`\n // We're using the native DynamoDB converter to avoid building those nested objects ourselves.\n .apply(v => JSON.stringify(Converter.marshall(JSON.parse(v))))\n }\n });\n\n return { tableItem };\n}\n\nfunction createRenderSubscriber(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-render-subscriber-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-subscriber-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to render events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/subscribe/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n /**\n * TODO: when we get to staged rollouts and variants, maybe we can create per-variant event rules,\n * to avoid invocation of all variant lambdas just to do a `detail-type` check and exit early.\n * That way, we would be publishing events scoped to a variant, like \"RenderPages-{variant}\".\n */\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-render-subscriber-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"RenderPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-render-subscriber-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-render-subscriber-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createRenderer(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const role = createLambdaRole(app, {\n name: \"ps-render-lambda-role\",\n policy: policy,\n executionRole: aws.iam.ManagedPolicy.AWSLambdaSQSQueueExecutionRole\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-render-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 300,\n memorySize: 2048,\n layers: [getLayerArn(\"shelf-io-chrome-aws-lambda-layer\")],\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Renders pages and stores output in an S3 bucket of choice.\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/render/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventSourceMapping = app.addResource(aws.lambda.EventSourceMapping, {\n name: \"ps-render-event-source-mapping\",\n config: {\n functionName: lambda.output.arn,\n eventSourceArn: queue.arn,\n batchSize: 1\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventSourceMapping\n };\n}\n\nfunction createFlushService(\n app: PulumiApp,\n policy: pulumi.Output<aws.iam.Policy>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n\n const role = createLambdaRole(app, {\n name: \"ps-flush-lambda-role\",\n policy: policy\n });\n\n const lambda = app.addResource(aws.lambda.Function, {\n name: \"ps-flush-lambda\",\n config: {\n role: role.output.arn,\n runtime: \"nodejs14.x\",\n handler: \"handler.handler\",\n timeout: 30,\n memorySize: 512,\n environment: {\n variables: getCommonLambdaEnvVariables().apply(value => ({\n ...value,\n DB_TABLE: params.dbTableName\n }))\n },\n description: \"Subscribes to flush events on event bus\",\n code: new pulumi.asset.AssetArchive({\n \".\": new pulumi.asset.FileArchive(\n path.join(app.paths.workspace, \"prerendering/flush/build\")\n )\n }),\n vpcConfig: app.getModule(VpcConfig).functionVpcConfig\n }\n });\n\n const eventRule = app.addResource(aws.cloudwatch.EventRule, {\n name: \"ps-flush-event-rule\",\n config: {\n eventBusName: core.eventBusArn,\n eventPattern: JSON.stringify({\n \"detail-type\": [\"FlushPages\"]\n })\n }\n });\n\n const eventPermission = app.addResource(aws.lambda.Permission, {\n name: \"ps-flush-event-permission\",\n config: {\n action: \"lambda:InvokeFunction\",\n function: lambda.output.arn,\n principal: \"events.amazonaws.com\",\n sourceArn: eventRule.output.arn\n }\n });\n\n const eventTarget = app.addResource(aws.cloudwatch.EventTarget, {\n name: \"ps-flush-event-target\",\n config: {\n rule: eventRule.output.name,\n eventBusName: core.eventBusArn,\n arn: lambda.output.arn\n }\n });\n\n return {\n policy,\n role,\n lambda,\n eventRule,\n eventPermission,\n eventTarget\n };\n}\n\nfunction createLambdaPolicy(\n app: PulumiApp,\n queue: pulumi.Output<aws.sqs.Queue>,\n params: PreRenderingServiceParams\n) {\n const core = app.getModule(CoreOutput);\n const awsAccountId = getAwsAccountId(app);\n\n return app.addResource(aws.iam.Policy, {\n name: \"ps-lambda-policy\",\n config: {\n description: \"This policy enables access to Lambda, S3, Cloudfront, SQS and Dynamodb\",\n policy: {\n Version: \"2012-10-17\",\n Statement: [\n {\n Sid: \"PermissionForDynamodb\",\n Effect: \"Allow\",\n Action: [\n \"dynamodb:BatchGetItem\",\n \"dynamodb:BatchWriteItem\",\n \"dynamodb:DeleteItem\",\n \"dynamodb:GetItem\",\n \"dynamodb:PutItem\",\n \"dynamodb:Query\",\n \"dynamodb:Scan\",\n \"dynamodb:UpdateItem\"\n ],\n Resource: core.apply(s => {\n // Add permissions to DynamoDB table\n const resources = [\n `${s.primaryDynamodbTableArn}`,\n `${s.primaryDynamodbTableArn}/*`\n ];\n\n // Attach permissions for elastic search dynamo as well (if ES is enabled).\n if (s.elasticsearchDynamodbTableArn) {\n resources.push(\n `${s.elasticsearchDynamodbTableArn}`,\n `${s.elasticsearchDynamodbTableArn}/*`\n );\n }\n\n return resources;\n })\n },\n {\n Sid: \"PermissionForS3\",\n Effect: \"Allow\",\n Action: [\"s3:DeleteObject\", \"s3:GetObject\", \"s3:PutObject\"],\n Resource: [pulumi.interpolate`arn:aws:s3:::${params.bucket}/*`]\n },\n {\n Sid: \"PermissionForCloudfront\",\n Effect: \"Allow\",\n Action: \"cloudfront:CreateInvalidation\",\n Resource: pulumi.interpolate`arn:aws:cloudfront::${awsAccountId}:distribution/*`\n },\n {\n Sid: \"PermissionForSQS\",\n Effect: \"Allow\",\n Action: [\"sqs:SendMessage\", \"sqs:SendMessageBatch\"],\n Resource: queue.arn\n }\n ]\n }\n }\n });\n}\n"],"mappings":"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"}
@@ -30,45 +30,45 @@ export interface CreateWebsitePulumiAppParams {
30
30
  export declare const createWebsitePulumiApp: (projectAppParams?: CreateWebsitePulumiAppParams) => import("@webiny/pulumi").PulumiApp<{
31
31
  prerendering: {
32
32
  subscriber: {
33
- policy: pulumi.Output<aws.iam.Policy>;
34
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
35
- lambda: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
36
- eventRule: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventRule>;
37
- eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Permission>;
38
- eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventTarget>;
33
+ policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
34
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
35
+ lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
36
+ eventRule: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventRule").EventRule>;
37
+ eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
38
+ eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
39
39
  };
40
40
  renderer: {
41
- policy: pulumi.Output<aws.iam.Policy>;
42
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
43
- lambda: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
44
- eventSourceMapping: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.EventSourceMapping>;
41
+ policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
42
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
43
+ lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
44
+ eventSourceMapping: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/eventSourceMapping").EventSourceMapping>;
45
45
  };
46
46
  flush: {
47
- policy: pulumi.Output<aws.iam.Policy>;
48
- role: import("@webiny/pulumi").PulumiAppResource<typeof aws.iam.Role>;
49
- lambda: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Function>;
50
- eventRule: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventRule>;
51
- eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof aws.lambda.Permission>;
52
- eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudwatch.EventTarget>;
47
+ policy: pulumi.Output<import("@pulumi/aws/iam/policy").Policy>;
48
+ role: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/iam/role").Role>;
49
+ lambda: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/function").Function>;
50
+ eventRule: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventRule").EventRule>;
51
+ eventPermission: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/lambda/permission").Permission>;
52
+ eventTarget: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudwatch/eventTarget").EventTarget>;
53
53
  };
54
54
  settings: {
55
- tableItem: import("@webiny/pulumi").PulumiAppResource<typeof aws.dynamodb.TableItem>;
55
+ tableItem: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/dynamodb/tableItem").TableItem>;
56
56
  };
57
57
  };
58
58
  app: {
59
- cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudfront.Distribution>;
60
- bucket: import("@webiny/pulumi").PulumiAppResource<typeof aws.s3.Bucket>;
61
- originIdentity: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudfront.OriginAccessIdentity>;
59
+ cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/distribution").Distribution>;
60
+ bucket: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucket").Bucket>;
61
+ originIdentity: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/originAccessIdentity").OriginAccessIdentity>;
62
62
  origin: aws.types.input.cloudfront.DistributionOrigin;
63
- bucketPublicAccessBlock: import("@webiny/pulumi").PulumiAppResource<typeof aws.s3.BucketPublicAccessBlock>;
64
- bucketPolicy: import("@webiny/pulumi").PulumiAppResource<typeof aws.s3.BucketPolicy>;
63
+ bucketPublicAccessBlock: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketPublicAccessBlock").BucketPublicAccessBlock>;
64
+ bucketPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketPolicy").BucketPolicy>;
65
65
  };
66
66
  delivery: {
67
- cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudfront.Distribution>;
68
- bucket: import("@webiny/pulumi").PulumiAppResource<typeof aws.s3.Bucket>;
69
- originIdentity: import("@webiny/pulumi").PulumiAppResource<typeof aws.cloudfront.OriginAccessIdentity>;
67
+ cloudfront: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/distribution").Distribution>;
68
+ bucket: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucket").Bucket>;
69
+ originIdentity: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/cloudfront/originAccessIdentity").OriginAccessIdentity>;
70
70
  origin: aws.types.input.cloudfront.DistributionOrigin;
71
- bucketPublicAccessBlock: import("@webiny/pulumi").PulumiAppResource<typeof aws.s3.BucketPublicAccessBlock>;
72
- bucketPolicy: import("@webiny/pulumi").PulumiAppResource<typeof aws.s3.BucketPolicy>;
71
+ bucketPublicAccessBlock: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketPublicAccessBlock").BucketPublicAccessBlock>;
72
+ bucketPolicy: import("@webiny/pulumi").PulumiAppResource<typeof import("@pulumi/aws/s3/bucketPolicy").BucketPolicy>;
73
73
  };
74
74
  }> & import("../lambdaUtils").WithCommonLambdaEnvVariables;
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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.createWebsitePulumiApp = void 0;
9
11
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
13
 
12
14
  var pulumi = _interopRequireWildcard(require("@pulumi/pulumi"));
13
15
 
@@ -29,14 +31,6 @@ var _utils = require("../../utils");
29
31
 
30
32
  var _tenantRouter = require("../tenantRouter");
31
33
 
32
- 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); }
33
-
34
- 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; }
35
-
36
- 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; }
37
-
38
- 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; }
39
-
40
34
  const createWebsitePulumiApp = (projectAppParams = {}) => {
41
35
  const app = (0, _pulumi2.createPulumiApp)({
42
36
  name: "website",
@@ -237,10 +231,10 @@ const createWebsitePulumiApp = (projectAppParams = {}) => {
237
231
  });
238
232
  return {
239
233
  prerendering,
240
- app: _objectSpread(_objectSpread({}, appBucket), {}, {
234
+ app: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, appBucket), {}, {
241
235
  cloudfront: appCloudfront
242
236
  }),
243
- delivery: _objectSpread(_objectSpread({}, deliveryBucket), {}, {
237
+ delivery: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, deliveryBucket), {}, {
244
238
  cloudfront: deliveryCloudfront
245
239
  })
246
240
  };