cloudstructs 0.5.2 → 0.5.5

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 (160) hide show
  1. package/.jsii +13 -3
  2. package/lib/codecommit-mirror/index.d.ts +0 -1
  3. package/lib/codecommit-mirror/index.js +5 -6
  4. package/lib/ecs-service-roller/index.d.ts +0 -1
  5. package/lib/ecs-service-roller/index.js +5 -6
  6. package/lib/email-receiver/index.d.ts +0 -1
  7. package/lib/email-receiver/receiver.d.ts +0 -1
  8. package/lib/email-receiver/receiver.js +1 -1
  9. package/lib/email-receiver/s3-function.d.ts +0 -1
  10. package/lib/email-receiver/s3.lambda.d.ts +0 -1
  11. package/lib/email-receiver/whitelist-function.d.ts +0 -1
  12. package/lib/email-receiver/whitelist.lambda.d.ts +0 -1
  13. package/lib/index.d.ts +0 -1
  14. package/lib/saml-identity-provider/index.d.ts +0 -1
  15. package/lib/saml-identity-provider/index.js +4 -5
  16. package/lib/slack-app/index.d.ts +0 -1
  17. package/lib/slack-app/manifest.d.ts +0 -1
  18. package/lib/slack-app/manifest.js +33 -35
  19. package/lib/slack-app/provider-function.d.ts +0 -1
  20. package/lib/slack-app/provider.d.ts +0 -1
  21. package/lib/slack-app/provider.js +2 -3
  22. package/lib/slack-app/provider.lambda.d.ts +0 -1
  23. package/lib/slack-app/provider.lambda.js +3 -4
  24. package/lib/slack-app/slack-app.d.ts +0 -1
  25. package/lib/slack-app/slack-app.js +4 -5
  26. package/lib/slack-events/events-function.d.ts +0 -1
  27. package/lib/slack-events/events.lambda.d.ts +0 -1
  28. package/lib/slack-events/index.d.ts +0 -1
  29. package/lib/slack-events/index.js +1 -1
  30. package/lib/slack-events/signature.d.ts +0 -1
  31. package/lib/slack-textract/detect-function.d.ts +0 -1
  32. package/lib/slack-textract/detect.lambda.d.ts +0 -1
  33. package/lib/slack-textract/index.d.ts +0 -1
  34. package/lib/slack-textract/index.js +1 -1
  35. package/lib/state-machine-cr-provider/index.d.ts +0 -1
  36. package/lib/state-machine-cr-provider/index.js +3 -4
  37. package/lib/state-machine-cr-provider/runtime/http.d.ts +0 -1
  38. package/lib/state-machine-cr-provider/runtime/http.js +3 -4
  39. package/lib/state-machine-cr-provider/runtime/index.d.ts +0 -1
  40. package/lib/state-machine-cr-provider/runtime/index.js +5 -7
  41. package/lib/static-website/index.d.ts +0 -1
  42. package/lib/static-website/index.js +3 -4
  43. package/lib/static-website/origin-request-function.d.ts +0 -1
  44. package/lib/static-website/origin-request.edge-lambda.d.ts +0 -1
  45. package/lib/toolkit-cleaner/clean-images-function.d.ts +0 -1
  46. package/lib/toolkit-cleaner/clean-images.lambda.d.ts +0 -1
  47. package/lib/toolkit-cleaner/clean-images.lambda.js +3 -4
  48. package/lib/toolkit-cleaner/clean-objects-function.d.ts +0 -1
  49. package/lib/toolkit-cleaner/clean-objects.lambda.d.ts +0 -1
  50. package/lib/toolkit-cleaner/clean-objects.lambda.js +3 -4
  51. package/lib/toolkit-cleaner/extract-template-hashes-function.d.ts +0 -1
  52. package/lib/toolkit-cleaner/extract-template-hashes.lambda.d.ts +0 -1
  53. package/lib/toolkit-cleaner/get-stack-names-function.d.ts +0 -1
  54. package/lib/toolkit-cleaner/get-stack-names.lambda.d.ts +0 -1
  55. package/lib/toolkit-cleaner/get-stack-names.lambda.js +2 -3
  56. package/lib/toolkit-cleaner/index.d.ts +0 -1
  57. package/lib/toolkit-cleaner/index.js +4 -5
  58. package/lib/url-shortener/index.d.ts +0 -1
  59. package/lib/url-shortener/index.js +4 -5
  60. package/lib/url-shortener/redirect-function.d.ts +0 -1
  61. package/lib/url-shortener/redirect.edge-lambda.d.ts +0 -1
  62. package/lib/url-shortener/redirect.edge-lambda.js +2 -3
  63. package/lib/url-shortener/shortener-function.d.ts +0 -1
  64. package/lib/url-shortener/shortener.lambda.d.ts +0 -1
  65. package/lib/url-shortener/shortener.lambda.js +3 -4
  66. package/node_modules/@slack/logger/node_modules/@types/node/README.md +1 -1
  67. package/node_modules/@slack/logger/node_modules/@types/node/fs/promises.d.ts +25 -1
  68. package/node_modules/@slack/logger/node_modules/@types/node/fs.d.ts +9 -2
  69. package/node_modules/@slack/logger/node_modules/@types/node/package.json +3 -3
  70. package/node_modules/@slack/logger/node_modules/@types/node/process.d.ts +12 -11
  71. package/node_modules/@slack/logger/node_modules/@types/node/stream.d.ts +13 -0
  72. package/node_modules/@slack/logger/node_modules/@types/node/timers.d.ts +2 -2
  73. package/node_modules/@slack/logger/node_modules/@types/node/tls.d.ts +1 -1
  74. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
  75. package/node_modules/@slack/web-api/node_modules/@types/node/fs/promises.d.ts +25 -1
  76. package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +9 -2
  77. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +3 -3
  78. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +12 -11
  79. package/node_modules/@slack/web-api/node_modules/@types/node/stream.d.ts +13 -0
  80. package/node_modules/@slack/web-api/node_modules/@types/node/timers.d.ts +2 -2
  81. package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +1 -1
  82. package/node_modules/@types/cacheable-request/node_modules/@types/node/README.md +1 -1
  83. package/node_modules/@types/cacheable-request/node_modules/@types/node/fs/promises.d.ts +25 -1
  84. package/node_modules/@types/cacheable-request/node_modules/@types/node/fs.d.ts +9 -2
  85. package/node_modules/@types/cacheable-request/node_modules/@types/node/package.json +3 -3
  86. package/node_modules/@types/cacheable-request/node_modules/@types/node/process.d.ts +12 -11
  87. package/node_modules/@types/cacheable-request/node_modules/@types/node/stream.d.ts +13 -0
  88. package/node_modules/@types/cacheable-request/node_modules/@types/node/timers.d.ts +2 -2
  89. package/node_modules/@types/cacheable-request/node_modules/@types/node/tls.d.ts +1 -1
  90. package/node_modules/@types/is-stream/node_modules/@types/node/README.md +1 -1
  91. package/node_modules/@types/is-stream/node_modules/@types/node/fs/promises.d.ts +25 -1
  92. package/node_modules/@types/is-stream/node_modules/@types/node/fs.d.ts +9 -2
  93. package/node_modules/@types/is-stream/node_modules/@types/node/package.json +3 -3
  94. package/node_modules/@types/is-stream/node_modules/@types/node/process.d.ts +12 -11
  95. package/node_modules/@types/is-stream/node_modules/@types/node/stream.d.ts +13 -0
  96. package/node_modules/@types/is-stream/node_modules/@types/node/timers.d.ts +2 -2
  97. package/node_modules/@types/is-stream/node_modules/@types/node/tls.d.ts +1 -1
  98. package/node_modules/@types/keyv/node_modules/@types/node/README.md +1 -1
  99. package/node_modules/@types/keyv/node_modules/@types/node/fs/promises.d.ts +25 -1
  100. package/node_modules/@types/keyv/node_modules/@types/node/fs.d.ts +9 -2
  101. package/node_modules/@types/keyv/node_modules/@types/node/package.json +3 -3
  102. package/node_modules/@types/keyv/node_modules/@types/node/process.d.ts +12 -11
  103. package/node_modules/@types/keyv/node_modules/@types/node/stream.d.ts +13 -0
  104. package/node_modules/@types/keyv/node_modules/@types/node/timers.d.ts +2 -2
  105. package/node_modules/@types/keyv/node_modules/@types/node/tls.d.ts +1 -1
  106. package/node_modules/@types/responselike/node_modules/@types/node/README.md +1 -1
  107. package/node_modules/@types/responselike/node_modules/@types/node/fs/promises.d.ts +25 -1
  108. package/node_modules/@types/responselike/node_modules/@types/node/fs.d.ts +9 -2
  109. package/node_modules/@types/responselike/node_modules/@types/node/package.json +3 -3
  110. package/node_modules/@types/responselike/node_modules/@types/node/process.d.ts +12 -11
  111. package/node_modules/@types/responselike/node_modules/@types/node/stream.d.ts +13 -0
  112. package/node_modules/@types/responselike/node_modules/@types/node/timers.d.ts +2 -2
  113. package/node_modules/@types/responselike/node_modules/@types/node/tls.d.ts +1 -1
  114. package/package.json +22 -10
  115. package/changelog.md +0 -2
  116. package/lib/codecommit-mirror/index.d.ts.map +0 -1
  117. package/lib/ecs-service-roller/index.d.ts.map +0 -1
  118. package/lib/email-receiver/index.d.ts.map +0 -1
  119. package/lib/email-receiver/receiver.d.ts.map +0 -1
  120. package/lib/email-receiver/s3-function.d.ts.map +0 -1
  121. package/lib/email-receiver/s3.lambda.d.ts.map +0 -1
  122. package/lib/email-receiver/whitelist-function.d.ts.map +0 -1
  123. package/lib/email-receiver/whitelist.lambda.d.ts.map +0 -1
  124. package/lib/index.d.ts.map +0 -1
  125. package/lib/saml-identity-provider/index.d.ts.map +0 -1
  126. package/lib/slack-app/index.d.ts.map +0 -1
  127. package/lib/slack-app/manifest.d.ts.map +0 -1
  128. package/lib/slack-app/provider-function.d.ts.map +0 -1
  129. package/lib/slack-app/provider.d.ts.map +0 -1
  130. package/lib/slack-app/provider.lambda.d.ts.map +0 -1
  131. package/lib/slack-app/slack-app.d.ts.map +0 -1
  132. package/lib/slack-events/events-function.d.ts.map +0 -1
  133. package/lib/slack-events/events.lambda.d.ts.map +0 -1
  134. package/lib/slack-events/index.d.ts.map +0 -1
  135. package/lib/slack-events/signature.d.ts.map +0 -1
  136. package/lib/slack-textract/detect-function.d.ts.map +0 -1
  137. package/lib/slack-textract/detect.lambda.d.ts.map +0 -1
  138. package/lib/slack-textract/index.d.ts.map +0 -1
  139. package/lib/state-machine-cr-provider/index.d.ts.map +0 -1
  140. package/lib/state-machine-cr-provider/runtime/http.d.ts.map +0 -1
  141. package/lib/state-machine-cr-provider/runtime/index.d.ts.map +0 -1
  142. package/lib/static-website/index.d.ts.map +0 -1
  143. package/lib/static-website/origin-request-function.d.ts.map +0 -1
  144. package/lib/static-website/origin-request.edge-lambda.d.ts.map +0 -1
  145. package/lib/toolkit-cleaner/clean-images-function.d.ts.map +0 -1
  146. package/lib/toolkit-cleaner/clean-images.lambda.d.ts.map +0 -1
  147. package/lib/toolkit-cleaner/clean-objects-function.d.ts.map +0 -1
  148. package/lib/toolkit-cleaner/clean-objects.lambda.d.ts.map +0 -1
  149. package/lib/toolkit-cleaner/extract-template-hashes-function.d.ts.map +0 -1
  150. package/lib/toolkit-cleaner/extract-template-hashes.lambda.d.ts.map +0 -1
  151. package/lib/toolkit-cleaner/get-stack-names-function.d.ts.map +0 -1
  152. package/lib/toolkit-cleaner/get-stack-names.lambda.d.ts.map +0 -1
  153. package/lib/toolkit-cleaner/index.d.ts.map +0 -1
  154. package/lib/url-shortener/index.d.ts.map +0 -1
  155. package/lib/url-shortener/redirect-function.d.ts.map +0 -1
  156. package/lib/url-shortener/redirect.edge-lambda.d.ts.map +0 -1
  157. package/lib/url-shortener/shortener-function.d.ts.map +0 -1
  158. package/lib/url-shortener/shortener.lambda.d.ts.map +0 -1
  159. package/releasetag.txt +0 -1
  160. package/version.txt +0 -1
@@ -22,7 +22,6 @@ const shortener_function_1 = require("./shortener-function");
22
22
  */
23
23
  class UrlShortener extends constructs_1.Construct {
24
24
  constructor(scope, id, props) {
25
- var _b, _c;
26
25
  super(scope, id);
27
26
  const domainName = props.recordName ? `${props.recordName}.${props.hostedZone.zoneName}` : props.hostedZone.zoneName;
28
27
  // Table to save a counter
@@ -36,10 +35,10 @@ class UrlShortener extends constructs_1.Construct {
36
35
  // Bucket to save redirects
37
36
  const bucket = new s3.Bucket(this, 'Bucket', {
38
37
  lifecycleRules: [{
39
- expiration: (_b = props.expiration) !== null && _b !== void 0 ? _b : aws_cdk_lib_1.Duration.days(365),
38
+ expiration: props.expiration ?? aws_cdk_lib_1.Duration.days(365),
40
39
  }],
41
40
  blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
42
- bucketName: (_c = props.bucketName) !== null && _c !== void 0 ? _c : `cloudstructs-url-shortener-${domainName}`,
41
+ bucketName: props.bucketName ?? `cloudstructs-url-shortener-${domainName}`,
43
42
  });
44
43
  // Redirect function
45
44
  const redirectFunction = new redirect_function_1.RedirectFunction(this, 'Redirect');
@@ -123,5 +122,5 @@ class UrlShortener extends constructs_1.Construct {
123
122
  }
124
123
  exports.UrlShortener = UrlShortener;
125
124
  _a = JSII_RTTI_SYMBOL_1;
126
- UrlShortener[_a] = { fqn: "cloudstructs.UrlShortener", version: "0.5.2" };
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXJsLXNob3J0ZW5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwRDtBQUMxRCx5REFBeUQ7QUFDekQsMERBQTBEO0FBQzFELHlEQUF5RDtBQUN6RCw4REFBOEQ7QUFDOUQscURBQXFEO0FBRXJELDJDQUEyQztBQUMzQyw2Q0FBNkM7QUFDN0MsbURBQW1EO0FBQ25ELDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBQ3ZDLDJEQUF1RDtBQUN2RCw2REFBeUQ7QUF5RHpEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFXekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3Qjs7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFFckgsMEJBQTBCO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQzlDLFlBQVksRUFBRTtnQkFDWixJQUFJLEVBQUUsS0FBSztnQkFDWCxJQUFJLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNO2FBQ3BDO1lBQ0QsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztTQUNyQyxDQUFDLENBQUM7UUFFSCwyQkFBMkI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDM0MsY0FBYyxFQUFFLENBQUM7b0JBQ2YsVUFBVSxRQUFFLEtBQUssQ0FBQyxVQUFVLG1DQUFJLHNCQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDbkQsQ0FBQztZQUNGLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTO1lBQ2pELFVBQVUsUUFBRSxLQUFLLENBQUMsVUFBVSxtQ0FBSSw4QkFBOEIsVUFBVSxFQUFFO1NBQzNFLENBQUMsQ0FBQztRQUVILG9CQUFvQjtRQUNwQixNQUFNLGdCQUFnQixHQUFHLElBQUksb0NBQWdCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVuQywwQkFBMEI7UUFDMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUN2RSxVQUFVO1lBQ1YsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLE1BQU0sRUFBRSxXQUFXO1NBQ3BCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3JFLGVBQWUsRUFBRTtnQkFDZixNQUFNLEVBQUUsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDcEMsV0FBVyxFQUFFO29CQUNYO3dCQUNFLFNBQVMsRUFBRSxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYzt3QkFDeEQsZUFBZSxFQUFFLGdCQUFnQjtxQkFDbEM7aUJBQ0Y7YUFDRjtZQUNELFdBQVc7WUFDWCxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCO1FBQ2xCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ25DLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtZQUN0QixNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQzdCLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3pDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtZQUN0QixNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1NBQzdCLENBQUMsQ0FBQztRQUVILG9FQUFvRTtRQUNwRSxNQUFNLGlCQUFpQixHQUFHLElBQUksc0NBQWlCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUNqRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTO1lBQzFDLFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsVUFBVTtnQkFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUM5QixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7YUFDNUI7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixpQkFBaUIsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzFGO1FBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUV0RCxNQUFNO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGVBQWUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNsRixhQUFhLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkYsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzlCLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRTt3QkFDVixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7NEJBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7NEJBQ3hCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDOzRCQUMvQixVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDcEMsU0FBUyxFQUFFLENBQUMsZ0JBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQ2hELFVBQVUsRUFBRTtnQ0FDVixZQUFZLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFOzZCQUMzRTt5QkFDRixDQUFDO3FCQUNIO2lCQUNGLENBQUM7Z0JBQ0YsQ0FBQyxDQUFDLFNBQVM7WUFDYiwyQkFBMkIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2dCQUNqRCxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxVQUFVLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNsRixVQUFVLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtTQUN2QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUk7YUFDVixXQUFXLENBQUMsVUFBVSxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxVQUFVLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNyRSxVQUFVLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtTQUN2QyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7O0FBdEhILG9DQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBGbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgYWNtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgKiBhcyBvcmlnaW5zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnMnO1xuaW1wb3J0ICogYXMgZHluYW1vZGIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1Myc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVkaXJlY3RGdW5jdGlvbiB9IGZyb20gJy4vcmVkaXJlY3QtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2hvcnRlbmVyRnVuY3Rpb24gfSBmcm9tICcuL3Nob3J0ZW5lci1mdW5jdGlvbic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBVcmxTaG9ydGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcmxTaG9ydGVuZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgaG9zdGVkIHpvbmUgZm9yIHRoZSBzaG9ydCBVUkxzIGRvbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZTtcblxuICAvKipcbiAgICogVGhlIHJlY29yZCBuYW1lIHRvIHVzZSBpbiB0aGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB6b25lIHJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGlyYXRpb24gZm9yIHNob3J0IHVybHNcbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLkR1cmF0aW9uLmRheXMoMzY1KVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwaXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbiBpbnRlcmZhY2UgVlBDIGVuZHBvaW50IGZvciBBUEkgZ2F0ZXdheS4gU3BlY2lmeWluZyB0aGlzIHByb3BlcnR5IHdpbGxcbiAgICogbWFrZSB0aGUgQVBJIHByaXZhdGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwaWdhdGV3YXkvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FwaWdhdGV3YXktcHJpdmF0ZS1hcGlzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBUEkgaXMgcHVibGljXG4gICAqL1xuICByZWFkb25seSBhcGlHYXRld2F5RW5kcG9pbnQ/OiBlYzIuSUludGVyZmFjZVZwY0VuZHBvaW50O1xuXG4gIC8qKlxuICAgKiBBdXRob3JpemVyIGZvciBBUEkgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkbyBub3QgdXNlIGFuIGF1dGhvcml6ZXIgZm9yIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlBdXRob3JpemVyPzogYXBpZ2F0ZXdheS5JQXV0aG9yaXplcjtcblxuICAvKipcbiAgICogQWxsb3dlZCBvcmlnaW5zIGZvciBDT1JTXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ09SUyBpcyBub3QgZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29yc0FsbG93T3JpZ2lucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoZSBidWNrZXQgc2F2aW5nIHRoZSByZWRpcmVjdHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gc2hvcnQgbGluayBkb21haW4gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVUkwgc2hvcnRlbmVyXG4gKi9cbmV4cG9ydCBjbGFzcyBVcmxTaG9ydGVuZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50IG9mIHRoZSBVUkwgc2hvcnRlbmVyIEFQSVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaUVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIEFQSSBHYXRld2F5IFJFU1QgQVBJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFVybFNob3J0ZW5lclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSBwcm9wcy5yZWNvcmROYW1lID8gYCR7cHJvcHMucmVjb3JkTmFtZX0uJHtwcm9wcy5ob3N0ZWRab25lLnpvbmVOYW1lfWAgOiBwcm9wcy5ob3N0ZWRab25lLnpvbmVOYW1lO1xuXG4gICAgLy8gVGFibGUgdG8gc2F2ZSBhIGNvdW50ZXJcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZSh0aGlzLCAnVGFibGUnLCB7XG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogJ2tleScsXG4gICAgICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIC8vIEJ1Y2tldCB0byBzYXZlIHJlZGlyZWN0c1xuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0J1Y2tldCcsIHtcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbe1xuICAgICAgICBleHBpcmF0aW9uOiBwcm9wcy5leHBpcmF0aW9uID8/IER1cmF0aW9uLmRheXMoMzY1KSxcbiAgICAgIH1dLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGJ1Y2tldE5hbWU6IHByb3BzLmJ1Y2tldE5hbWUgPz8gYGNsb3Vkc3RydWN0cy11cmwtc2hvcnRlbmVyLSR7ZG9tYWluTmFtZX1gLFxuICAgIH0pO1xuXG4gICAgLy8gUmVkaXJlY3QgZnVuY3Rpb25cbiAgICBjb25zdCByZWRpcmVjdEZ1bmN0aW9uID0gbmV3IFJlZGlyZWN0RnVuY3Rpb24odGhpcywgJ1JlZGlyZWN0Jyk7XG4gICAgYnVja2V0LmdyYW50UmVhZChyZWRpcmVjdEZ1bmN0aW9uKTtcblxuICAgIC8vIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gICAgY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgYWNtLkRuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHRoaXMsICdDZXJ0aWZpY2F0ZScsIHtcbiAgICAgIGRvbWFpbk5hbWUsXG4gICAgICBob3N0ZWRab25lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICB9KTtcbiAgICBjb25zdCBkaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24odGhpcywgJ0Rpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW46IG5ldyBvcmlnaW5zLlMzT3JpZ2luKGJ1Y2tldCksXG4gICAgICAgIGVkZ2VMYW1iZGFzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuT1JJR0lOX1JFUVVFU1QsXG4gICAgICAgICAgICBmdW5jdGlvblZlcnNpb246IHJlZGlyZWN0RnVuY3Rpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIGRvbWFpbk5hbWVzOiBbZG9tYWluTmFtZV0sXG4gICAgfSk7XG5cbiAgICAvLyBSb3V0ZTUzIHJlY29yZHNcbiAgICBuZXcgcm91dGU1My5BUmVjb3JkKHRoaXMsICdBUmVjb3JkJywge1xuICAgICAgem9uZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKG5ldyB0YXJnZXRzLkNsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5yZWNvcmROYW1lLFxuICAgIH0pO1xuICAgIG5ldyByb3V0ZTUzLkFhYWFSZWNvcmQodGhpcywgJ0FhYWFSZWNvcmQnLCB7XG4gICAgICB6b25lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pKSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBMYW1iZGEgZnVuY3Rpb24gdG8gaW5jcmVtZW50IGNvdW50ZXIgYW5kIHdyaXRlIHJlZGlyZWN0IGluIGJ1Y2tldFxuICAgIGNvbnN0IHNob3J0ZW5lckZ1bmN0aW9uID0gbmV3IFNob3J0ZW5lckZ1bmN0aW9uKHRoaXMsICdTaG9ydGVuZXInLCB7XG4gICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBET01BSU5fTkFNRTogZG9tYWluTmFtZSxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBUQUJMRV9OQU1FOiB0YWJsZS50YWJsZU5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChwcm9wcy5jb3JzQWxsb3dPcmlnaW5zKSB7XG4gICAgICBzaG9ydGVuZXJGdW5jdGlvbi5hZGRFbnZpcm9ubWVudCgnQ09SU19BTExPV19PUklHSU5TJywgcHJvcHMuY29yc0FsbG93T3JpZ2lucy5qb2luKCcgJykpO1xuICAgIH1cbiAgICBidWNrZXQuZ3JhbnRQdXQoc2hvcnRlbmVyRnVuY3Rpb24pO1xuICAgIHRhYmxlLmdyYW50KHNob3J0ZW5lckZ1bmN0aW9uLCAnZHluYW1vZGI6VXBkYXRlSXRlbScpO1xuXG4gICAgLy8gQVBJXG4gICAgdGhpcy5hcGkgPSBuZXcgYXBpZ2F0ZXdheS5SZXN0QXBpKHRoaXMsIGBVcmxTaG9ydGVuZXIke3Byb3BzLmhvc3RlZFpvbmUuem9uZU5hbWV9YCwge1xuICAgICAgZW5kcG9pbnRUeXBlczogcHJvcHMuYXBpR2F0ZXdheUVuZHBvaW50ID8gW2FwaWdhdGV3YXkuRW5kcG9pbnRUeXBlLlBSSVZBVEVdIDogdW5kZWZpbmVkLFxuICAgICAgcG9saWN5OiBwcm9wcy5hcGlHYXRld2F5RW5kcG9pbnRcbiAgICAgICAgPyBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydleGVjdXRlLWFwaTpJbnZva2UnXSxcbiAgICAgICAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQW55UHJpbmNpcGFsKCldLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtGbi5qb2luKCcnLCBbJ2V4ZWN1dGUtYXBpOi8nLCAnKiddKV0sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHsgJ2F3czpTb3VyY2VWcGNlJzogcHJvcHMuYXBpR2F0ZXdheUVuZHBvaW50LnZwY0VuZHBvaW50SWQgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdENvcnNQcmVmbGlnaHRPcHRpb25zOiBwcm9wcy5jb3JzQWxsb3dPcmlnaW5zXG4gICAgICAgID8geyBhbGxvd09yaWdpbnM6IHByb3BzLmNvcnNBbGxvd09yaWdpbnMgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBpLnJvb3QuYWRkTWV0aG9kKCdBTlknLCBuZXcgYXBpZ2F0ZXdheS5MYW1iZGFJbnRlZ3JhdGlvbihzaG9ydGVuZXJGdW5jdGlvbiksIHtcbiAgICAgIGF1dGhvcml6ZXI6IHByb3BzLmFwaUdhdGV3YXlBdXRob3JpemVyLFxuICAgIH0pO1xuICAgIHRoaXMuYXBpLnJvb3RcbiAgICAgIC5hZGRSZXNvdXJjZSgne3Byb3h5K30nKVxuICAgICAgLmFkZE1ldGhvZCgnQU5ZJywgbmV3IGFwaWdhdGV3YXkuTGFtYmRhSW50ZWdyYXRpb24oc2hvcnRlbmVyRnVuY3Rpb24pLCB7XG4gICAgICAgIGF1dGhvcml6ZXI6IHByb3BzLmFwaUdhdGV3YXlBdXRob3JpemVyLFxuICAgICAgfSk7XG5cbiAgICB0aGlzLmFwaUVuZHBvaW50ID0gdGhpcy5hcGkudXJsO1xuICB9XG59XG4iXX0=
125
+ UrlShortener[_a] = { fqn: "cloudstructs.UrlShortener", version: "0.5.5" };
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXJsLXNob3J0ZW5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwRDtBQUMxRCx5REFBeUQ7QUFDekQsMERBQTBEO0FBQzFELHlEQUF5RDtBQUN6RCw4REFBOEQ7QUFDOUQscURBQXFEO0FBRXJELDJDQUEyQztBQUMzQyw2Q0FBNkM7QUFDN0MsbURBQW1EO0FBQ25ELDJEQUEyRDtBQUMzRCx5Q0FBeUM7QUFDekMsMkNBQXVDO0FBQ3ZDLDJEQUF1RDtBQUN2RCw2REFBeUQ7QUF5RHpEOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsc0JBQVM7SUFXekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUVySCwwQkFBMEI7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7WUFDOUMsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxLQUFLO2dCQUNYLElBQUksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU07YUFDcEM7WUFDRCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUMzQyxjQUFjLEVBQUUsQ0FBQztvQkFDZixVQUFVLEVBQUUsS0FB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SUFBSSxVQUFVLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNyRSxVQUFVLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtTQUN2QyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7O0FBdEhILG9DQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBGbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFwaWdhdGV3YXkgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXknO1xuaW1wb3J0ICogYXMgYWNtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgKiBhcyBvcmlnaW5zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnMnO1xuaW1wb3J0ICogYXMgZHluYW1vZGIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1Myc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVkaXJlY3RGdW5jdGlvbiB9IGZyb20gJy4vcmVkaXJlY3QtZnVuY3Rpb24nO1xuaW1wb3J0IHsgU2hvcnRlbmVyRnVuY3Rpb24gfSBmcm9tICcuL3Nob3J0ZW5lci1mdW5jdGlvbic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBVcmxTaG9ydGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcmxTaG9ydGVuZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgaG9zdGVkIHpvbmUgZm9yIHRoZSBzaG9ydCBVUkxzIGRvbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZTogcm91dGU1My5JSG9zdGVkWm9uZTtcblxuICAvKipcbiAgICogVGhlIHJlY29yZCBuYW1lIHRvIHVzZSBpbiB0aGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB6b25lIHJvb3RcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4cGlyYXRpb24gZm9yIHNob3J0IHVybHNcbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLkR1cmF0aW9uLmRheXMoMzY1KVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwaXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbiBpbnRlcmZhY2UgVlBDIGVuZHBvaW50IGZvciBBUEkgZ2F0ZXdheS4gU3BlY2lmeWluZyB0aGlzIHByb3BlcnR5IHdpbGxcbiAgICogbWFrZSB0aGUgQVBJIHByaXZhdGUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwaWdhdGV3YXkvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2FwaWdhdGV3YXktcHJpdmF0ZS1hcGlzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBUEkgaXMgcHVibGljXG4gICAqL1xuICByZWFkb25seSBhcGlHYXRld2F5RW5kcG9pbnQ/OiBlYzIuSUludGVyZmFjZVZwY0VuZHBvaW50O1xuXG4gIC8qKlxuICAgKiBBdXRob3JpemVyIGZvciBBUEkgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkbyBub3QgdXNlIGFuIGF1dGhvcml6ZXIgZm9yIHRoZSBBUElcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlBdXRob3JpemVyPzogYXBpZ2F0ZXdheS5JQXV0aG9yaXplcjtcblxuICAvKipcbiAgICogQWxsb3dlZCBvcmlnaW5zIGZvciBDT1JTXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ09SUyBpcyBub3QgZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29yc0FsbG93T3JpZ2lucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBIG5hbWUgZm9yIHRoZSBidWNrZXQgc2F2aW5nIHRoZSByZWRpcmVjdHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gc2hvcnQgbGluayBkb21haW4gbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVUkwgc2hvcnRlbmVyXG4gKi9cbmV4cG9ydCBjbGFzcyBVcmxTaG9ydGVuZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGVuZHBvaW50IG9mIHRoZSBVUkwgc2hvcnRlbmVyIEFQSVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFwaUVuZHBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIEFQSSBHYXRld2F5IFJFU1QgQVBJXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXBpOiBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFVybFNob3J0ZW5lclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSBwcm9wcy5yZWNvcmROYW1lID8gYCR7cHJvcHMucmVjb3JkTmFtZX0uJHtwcm9wcy5ob3N0ZWRab25lLnpvbmVOYW1lfWAgOiBwcm9wcy5ob3N0ZWRab25lLnpvbmVOYW1lO1xuXG4gICAgLy8gVGFibGUgdG8gc2F2ZSBhIGNvdW50ZXJcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBkeW5hbW9kYi5UYWJsZSh0aGlzLCAnVGFibGUnLCB7XG4gICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgbmFtZTogJ2tleScsXG4gICAgICAgIHR5cGU6IGR5bmFtb2RiLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIC8vIEJ1Y2tldCB0byBzYXZlIHJlZGlyZWN0c1xuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgJ0J1Y2tldCcsIHtcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbe1xuICAgICAgICBleHBpcmF0aW9uOiBwcm9wcy5leHBpcmF0aW9uID8/IER1cmF0aW9uLmRheXMoMzY1KSxcbiAgICAgIH1dLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGJ1Y2tldE5hbWU6IHByb3BzLmJ1Y2tldE5hbWUgPz8gYGNsb3Vkc3RydWN0cy11cmwtc2hvcnRlbmVyLSR7ZG9tYWluTmFtZX1gLFxuICAgIH0pO1xuXG4gICAgLy8gUmVkaXJlY3QgZnVuY3Rpb25cbiAgICBjb25zdCByZWRpcmVjdEZ1bmN0aW9uID0gbmV3IFJlZGlyZWN0RnVuY3Rpb24odGhpcywgJ1JlZGlyZWN0Jyk7XG4gICAgYnVja2V0LmdyYW50UmVhZChyZWRpcmVjdEZ1bmN0aW9uKTtcblxuICAgIC8vIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gICAgY29uc3QgY2VydGlmaWNhdGUgPSBuZXcgYWNtLkRuc1ZhbGlkYXRlZENlcnRpZmljYXRlKHRoaXMsICdDZXJ0aWZpY2F0ZScsIHtcbiAgICAgIGRvbWFpbk5hbWUsXG4gICAgICBob3N0ZWRab25lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICB9KTtcbiAgICBjb25zdCBkaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24odGhpcywgJ0Rpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW46IG5ldyBvcmlnaW5zLlMzT3JpZ2luKGJ1Y2tldCksXG4gICAgICAgIGVkZ2VMYW1iZGFzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuT1JJR0lOX1JFUVVFU1QsXG4gICAgICAgICAgICBmdW5jdGlvblZlcnNpb246IHJlZGlyZWN0RnVuY3Rpb24sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIGRvbWFpbk5hbWVzOiBbZG9tYWluTmFtZV0sXG4gICAgfSk7XG5cbiAgICAvLyBSb3V0ZTUzIHJlY29yZHNcbiAgICBuZXcgcm91dGU1My5BUmVjb3JkKHRoaXMsICdBUmVjb3JkJywge1xuICAgICAgem9uZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKG5ldyB0YXJnZXRzLkNsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5yZWNvcmROYW1lLFxuICAgIH0pO1xuICAgIG5ldyByb3V0ZTUzLkFhYWFSZWNvcmQodGhpcywgJ0FhYWFSZWNvcmQnLCB7XG4gICAgICB6b25lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pKSxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLnJlY29yZE5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBMYW1iZGEgZnVuY3Rpb24gdG8gaW5jcmVtZW50IGNvdW50ZXIgYW5kIHdyaXRlIHJlZGlyZWN0IGluIGJ1Y2tldFxuICAgIGNvbnN0IHNob3J0ZW5lckZ1bmN0aW9uID0gbmV3IFNob3J0ZW5lckZ1bmN0aW9uKHRoaXMsICdTaG9ydGVuZXInLCB7XG4gICAgICBsb2dSZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBET01BSU5fTkFNRTogZG9tYWluTmFtZSxcbiAgICAgICAgQlVDS0VUX05BTUU6IGJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICBUQUJMRV9OQU1FOiB0YWJsZS50YWJsZU5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChwcm9wcy5jb3JzQWxsb3dPcmlnaW5zKSB7XG4gICAgICBzaG9ydGVuZXJGdW5jdGlvbi5hZGRFbnZpcm9ubWVudCgnQ09SU19BTExPV19PUklHSU5TJywgcHJvcHMuY29yc0FsbG93T3JpZ2lucy5qb2luKCcgJykpO1xuICAgIH1cbiAgICBidWNrZXQuZ3JhbnRQdXQoc2hvcnRlbmVyRnVuY3Rpb24pO1xuICAgIHRhYmxlLmdyYW50KHNob3J0ZW5lckZ1bmN0aW9uLCAnZHluYW1vZGI6VXBkYXRlSXRlbScpO1xuXG4gICAgLy8gQVBJXG4gICAgdGhpcy5hcGkgPSBuZXcgYXBpZ2F0ZXdheS5SZXN0QXBpKHRoaXMsIGBVcmxTaG9ydGVuZXIke3Byb3BzLmhvc3RlZFpvbmUuem9uZU5hbWV9YCwge1xuICAgICAgZW5kcG9pbnRUeXBlczogcHJvcHMuYXBpR2F0ZXdheUVuZHBvaW50ID8gW2FwaWdhdGV3YXkuRW5kcG9pbnRUeXBlLlBSSVZBVEVdIDogdW5kZWZpbmVkLFxuICAgICAgcG9saWN5OiBwcm9wcy5hcGlHYXRld2F5RW5kcG9pbnRcbiAgICAgICAgPyBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgYWN0aW9uczogWydleGVjdXRlLWFwaTpJbnZva2UnXSxcbiAgICAgICAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQW55UHJpbmNpcGFsKCldLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtGbi5qb2luKCcnLCBbJ2V4ZWN1dGUtYXBpOi8nLCAnKiddKV0sXG4gICAgICAgICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHsgJ2F3czpTb3VyY2VWcGNlJzogcHJvcHMuYXBpR2F0ZXdheUVuZHBvaW50LnZwY0VuZHBvaW50SWQgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdENvcnNQcmVmbGlnaHRPcHRpb25zOiBwcm9wcy5jb3JzQWxsb3dPcmlnaW5zXG4gICAgICAgID8geyBhbGxvd09yaWdpbnM6IHByb3BzLmNvcnNBbGxvd09yaWdpbnMgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBpLnJvb3QuYWRkTWV0aG9kKCdBTlknLCBuZXcgYXBpZ2F0ZXdheS5MYW1iZGFJbnRlZ3JhdGlvbihzaG9ydGVuZXJGdW5jdGlvbiksIHtcbiAgICAgIGF1dGhvcml6ZXI6IHByb3BzLmFwaUdhdGV3YXlBdXRob3JpemVyLFxuICAgIH0pO1xuICAgIHRoaXMuYXBpLnJvb3RcbiAgICAgIC5hZGRSZXNvdXJjZSgne3Byb3h5K30nKVxuICAgICAgLmFkZE1ldGhvZCgnQU5ZJywgbmV3IGFwaWdhdGV3YXkuTGFtYmRhSW50ZWdyYXRpb24oc2hvcnRlbmVyRnVuY3Rpb24pLCB7XG4gICAgICAgIGF1dGhvcml6ZXI6IHByb3BzLmFwaUdhdGV3YXlBdXRob3JpemVyLFxuICAgICAgfSk7XG5cbiAgICB0aGlzLmFwaUVuZHBvaW50ID0gdGhpcy5hcGkudXJsO1xuICB9XG59XG4iXX0=
@@ -11,4 +11,3 @@ export interface RedirectFunctionProps extends cloudfront.experimental.EdgeFunct
11
11
  export declare class RedirectFunction extends cloudfront.experimental.EdgeFunction {
12
12
  constructor(scope: Construct, id: string, props?: RedirectFunctionProps);
13
13
  }
14
- //# sourceMappingURL=redirect-function.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function handler(event: AWSLambda.CloudFrontRequestEvent): Promise<AWSLambda.CloudFrontRequestResult>;
2
- //# sourceMappingURL=redirect.edge-lambda.d.ts.map
@@ -4,10 +4,9 @@ exports.handler = void 0;
4
4
  const aws_sdk_1 = require("aws-sdk"); // eslint-disable-line import/no-extraneous-dependencies
5
5
  const s3 = new aws_sdk_1.S3({ apiVersion: '2006-03-01' });
6
6
  async function handler(event) {
7
- var _a;
8
7
  const request = event.Records[0].cf.request;
9
8
  try {
10
- const s3Origin = (_a = request.origin) === null || _a === void 0 ? void 0 : _a.s3;
9
+ const s3Origin = request.origin?.s3;
11
10
  if (!s3Origin) {
12
11
  throw new Error('No S3 origin');
13
12
  }
@@ -41,4 +40,4 @@ async function handler(event) {
41
40
  }
42
41
  }
43
42
  exports.handler = handler;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuZWRnZS1sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXJsLXNob3J0ZW5lci9yZWRpcmVjdC5lZGdlLWxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkIsQ0FBQyx3REFBd0Q7QUFFdEYsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUV6QyxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQXVDOztJQUNuRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFFNUMsSUFBSTtRQUNGLE1BQU0sUUFBUSxTQUFHLE9BQU8sQ0FBQyxNQUFNLDBDQUFFLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNqQztRQUVELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sUUFBUSxDQUFDLE1BQU0saUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtRQUUzRCxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDOUIsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsR0FBRztTQUNULENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUViLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1QjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRWxELE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSztZQUNiLGlCQUFpQixFQUFFLG1CQUFtQjtZQUN0QyxPQUFPLEVBQUU7Z0JBQ1AsUUFBUSxFQUFFLENBQUM7d0JBQ1QsR0FBRyxFQUFFLFVBQVU7d0JBQ2YsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHO3FCQUNwQixDQUFDO2FBQ0g7U0FDRixDQUFDO0tBQ0g7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakIsT0FBTztZQUNMLE1BQU0sRUFBRSxLQUFLO1lBQ2IsaUJBQWlCLEVBQUUsV0FBVztTQUMvQixDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBMUNELDBCQTBDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFMzIH0gZnJvbSAnYXdzLXNkayc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5cbmNvbnN0IHMzID0gbmV3IFMzKHsgYXBpVmVyc2lvbjogJzIwMDYtMDMtMDEnIH0pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihldmVudDogQVdTTGFtYmRhLkNsb3VkRnJvbnRSZXF1ZXN0RXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5DbG91ZEZyb250UmVxdWVzdFJlc3VsdD4ge1xuICBjb25zdCByZXF1ZXN0ID0gZXZlbnQuUmVjb3Jkc1swXS5jZi5yZXF1ZXN0O1xuXG4gIHRyeSB7XG4gICAgY29uc3QgczNPcmlnaW4gPSByZXF1ZXN0Lm9yaWdpbj8uczM7XG5cbiAgICBpZiAoIXMzT3JpZ2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFMzIG9yaWdpbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGJ1Y2tldCA9IHMzT3JpZ2luLmRvbWFpbk5hbWUucmVwbGFjZShuZXcgUmVnRXhwKGAuczMuJHtzM09yaWdpbi5yZWdpb259LmFtYXpvbmF3cy5jb20kYCksICcnKTtcbiAgICBjb25zdCBrZXkgPSByZXF1ZXN0LnVyaS5zdWJzdHJpbmcoMSk7IC8vIHJlbW92ZSBmaXJzdCBzbGFzaFxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHMzLmdldE9iamVjdCh7XG4gICAgICBCdWNrZXQ6IGJ1Y2tldCxcbiAgICAgIEtleToga2V5LFxuICAgIH0pLnByb21pc2UoKTtcblxuICAgIGlmICghZGF0YS5Cb2R5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJvZHknKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWRpcmVjdCA9IEpTT04ucGFyc2UoZGF0YS5Cb2R5LnRvU3RyaW5nKCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJzMwMScsXG4gICAgICBzdGF0dXNEZXNjcmlwdGlvbjogJ01vdmVkIFBlcm1hbmVudGx5JyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgbG9jYXRpb246IFt7XG4gICAgICAgICAga2V5OiAnTG9jYXRpb24nLFxuICAgICAgICAgIHZhbHVlOiByZWRpcmVjdC51cmwsXG4gICAgICAgIH1dLFxuICAgICAgfSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1czogJzQwNCcsXG4gICAgICBzdGF0dXNEZXNjcmlwdGlvbjogJ05vdCBGb3VuZCcsXG4gICAgfTtcbiAgfVxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuZWRnZS1sYW1iZGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXJsLXNob3J0ZW5lci9yZWRpcmVjdC5lZGdlLWxhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkIsQ0FBQyx3REFBd0Q7QUFFdEYsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUV6QyxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQXVDO0lBQ25FLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUU1QyxJQUFJO1FBQ0YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakM7UUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEcsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUI7UUFFM0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLEdBQUc7U0FDVCxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDNUI7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVsRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLEtBQUs7WUFDYixpQkFBaUIsRUFBRSxtQkFBbUI7WUFDdEMsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxDQUFDO3dCQUNULEdBQUcsRUFBRSxVQUFVO3dCQUNmLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRztxQkFDcEIsQ0FBQzthQUNIO1NBQ0YsQ0FBQztLQUNIO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLE9BQU87WUFDTCxNQUFNLEVBQUUsS0FBSztZQUNiLGlCQUFpQixFQUFFLFdBQVc7U0FDL0IsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQTFDRCwwQkEwQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTMyB9IGZyb20gJ2F3cy1zZGsnOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuXG5jb25zdCBzMyA9IG5ldyBTMyh7IGFwaVZlcnNpb246ICcyMDA2LTAzLTAxJyB9KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZyb250UmVxdWVzdEV2ZW50KTogUHJvbWlzZTxBV1NMYW1iZGEuQ2xvdWRGcm9udFJlcXVlc3RSZXN1bHQ+IHtcbiAgY29uc3QgcmVxdWVzdCA9IGV2ZW50LlJlY29yZHNbMF0uY2YucmVxdWVzdDtcblxuICB0cnkge1xuICAgIGNvbnN0IHMzT3JpZ2luID0gcmVxdWVzdC5vcmlnaW4/LnMzO1xuXG4gICAgaWYgKCFzM09yaWdpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBTMyBvcmlnaW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWNrZXQgPSBzM09yaWdpbi5kb21haW5OYW1lLnJlcGxhY2UobmV3IFJlZ0V4cChgLnMzLiR7czNPcmlnaW4ucmVnaW9ufS5hbWF6b25hd3MuY29tJGApLCAnJyk7XG4gICAgY29uc3Qga2V5ID0gcmVxdWVzdC51cmkuc3Vic3RyaW5nKDEpOyAvLyByZW1vdmUgZmlyc3Qgc2xhc2hcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzMy5nZXRPYmplY3Qoe1xuICAgICAgQnVja2V0OiBidWNrZXQsXG4gICAgICBLZXk6IGtleSxcbiAgICB9KS5wcm9taXNlKCk7XG5cbiAgICBpZiAoIWRhdGEuQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBib2R5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVkaXJlY3QgPSBKU09OLnBhcnNlKGRhdGEuQm9keS50b1N0cmluZygpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6ICczMDEnLFxuICAgICAgc3RhdHVzRGVzY3JpcHRpb246ICdNb3ZlZCBQZXJtYW5lbnRseScsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIGxvY2F0aW9uOiBbe1xuICAgICAgICAgIGtleTogJ0xvY2F0aW9uJyxcbiAgICAgICAgICB2YWx1ZTogcmVkaXJlY3QudXJsLFxuICAgICAgICB9XSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5sb2coZXJyKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6ICc0MDQnLFxuICAgICAgc3RhdHVzRGVzY3JpcHRpb246ICdOb3QgRm91bmQnLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -11,4 +11,3 @@ export interface ShortenerFunctionProps extends lambda.FunctionOptions {
11
11
  export declare class ShortenerFunction extends lambda.Function {
12
12
  constructor(scope: Construct, id: string, props?: ShortenerFunctionProps);
13
13
  }
14
- //# sourceMappingURL=shortener-function.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare function handler(event: AWSLambda.APIGatewayProxyEvent): Promise<AWSLambda.APIGatewayProxyResult>;
2
- //# sourceMappingURL=shortener.lambda.d.ts.map
@@ -38,7 +38,6 @@ function isUrlValid(url) {
38
38
  const documentClient = new aws_sdk_1.DynamoDB.DocumentClient({ apiVersion: '2012-08-10' });
39
39
  const s3 = new aws_sdk_1.S3({ apiVersion: '2006-03-01' });
40
40
  async function handler(event) {
41
- var _a, _b;
42
41
  console.log('Event: %j', event);
43
42
  const response = {
44
43
  statusCode: 201,
@@ -48,7 +47,7 @@ async function handler(event) {
48
47
  : undefined,
49
48
  };
50
49
  try {
51
- const body = JSON.parse((_a = event.body) !== null && _a !== void 0 ? _a : '{}');
50
+ const body = JSON.parse(event.body ?? '{}');
52
51
  if (!isUrlValid(body.url)) {
53
52
  return {
54
53
  ...response,
@@ -64,7 +63,7 @@ async function handler(event) {
64
63
  ExpressionAttributeValues: { ':incr': 1 },
65
64
  ReturnValues: 'UPDATED_NEW',
66
65
  }).promise();
67
- const value = (_b = update.Attributes) === null || _b === void 0 ? void 0 : _b.value;
66
+ const value = update.Attributes?.value;
68
67
  if (!value) {
69
68
  throw new Error('Cannot get next counter value');
70
69
  }
@@ -95,4 +94,4 @@ async function handler(event) {
95
94
  }
96
95
  }
97
96
  exports.handler = handler;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRlbmVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cmwtc2hvcnRlbmVyL3Nob3J0ZW5lci5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUEwQjtBQUMxQixxQ0FBdUMsQ0FBQyx3REFBd0Q7QUFFaEcsU0FBUyxZQUFZLENBQUMsR0FBVztJQUMvQixNQUFNLFlBQVksR0FBRyxnRUFBZ0UsQ0FBQztJQUN0RixJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFO1FBQ2QsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUFBLENBQUM7QUFFRixTQUFTLE1BQU0sQ0FBQyxJQUFZO0lBQzFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksaUJBQWlCLENBQUMsQ0FBQztLQUNwRTtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEdBQVk7SUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJO1FBQ0YsSUFBSSxTQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQztLQUNiO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixPQUFPLEtB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b3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgRHluYW1vREIsIFMzIH0gZnJvbSAnYXdzLXNkayc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5cbmZ1bmN0aW9uIGJhc2U2MkVuY29kZShpbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGNoYXJhY3RlclNldCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gIGlmIChpbnQgPT09IDApIHJldHVybiAnMCc7XG4gIGxldCBzID0gJyc7XG4gIHdoaWxlIChpbnQgPiAwKSB7XG4gICAgcyA9IGNoYXJhY3RlclNldFtpbnQgJSA2Ml0gKyBzO1xuICAgIGludCA9IE1hdGguZmxvb3IoaW50IC8gNjIpO1xuICB9XG4gIHJldHVybiBzO1xufTtcblxuZnVuY3Rpb24gZ2V0RW52KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV07XG5cbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlICR7bmFtZX0gaXMgbm90IGRlZmluZWRgKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gaXNVcmxWYWxpZCh1cmw/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBuZXcgVVJMKHVybCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5jb25zdCBkb2N1bWVudENsaWVudCA9IG5ldyBEeW5hbW9EQi5Eb2N1bWVudENsaWVudCh7IGFwaVZlcnNpb246ICcyMDEyLTA4LTEwJyB9KTtcblxuY29uc3QgczMgPSBuZXcgUzMoeyBhcGlWZXJzaW9uOiAnMjAwNi0wMy0wMScgfSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuQVBJR2F0ZXdheVByb3h5RXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5BUElHYXRld2F5UHJveHlSZXN1bHQ+IHtcbiAgY29uc29sZS5sb2coJ0V2ZW50OiAlaicsIGV2ZW50KTtcblxuICBjb25zdCByZXNwb25zZTogQVdTTGFtYmRhLkFQSUdhdGV3YXlQcm94eVJlc3VsdCA9IHtcbiAgICBzdGF0dXNDb2RlOiAyMDEsXG4gICAgYm9keTogJycsXG4gICAgaGVhZGVyczogcHJvY2Vzcy5lbnYuQ09SU19BTExPV19PUklHSU5TXG4gICAgICA/IHsgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6IHByb2Nlc3MuZW52LkNPUlNfQUxMT1dfT1JJR0lOUyB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgfTtcblxuICB0cnkge1xuICAgIGNvbnN0IGJvZHkgPSBKU09OLnBhcnNlKGV2ZW50LmJvZHkgPz8gJ3t9Jyk7XG5cbiAgICBpZiAoIWlzVXJsVmFsaWQoYm9keS51cmwpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5yZXNwb25zZSxcbiAgICAgICAgc3RhdHVzQ29kZTogNDAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBHZXQgbmV4dCBjb3VudGVyIHZhbHVlXG4gICAgY29uc3QgdXBkYXRlID0gYXdhaXQgZG9jdW1lbnRDbGllbnQudXBkYXRlKHtcbiAgICAgIFRhYmxlTmFtZTogZ2V0RW52KCdUQUJMRV9OQU1FJyksXG4gICAgICBLZXk6IHsga2V5OiAnY291bnRlcicgfSxcbiAgICAgIFVwZGF0ZUV4cHJlc3Npb246ICdBREQgI3ZhbHVlIDppbmNyJyxcbiAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lczogeyAnI3ZhbHVlJzogJ3ZhbHVlJyB9LFxuICAgICAgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczogeyAnOmluY3InOiAxIH0sXG4gICAgICBSZXR1cm5WYWx1ZXM6ICdVUERBVEVEX05FVycsXG4gICAgfSkucHJvbWlzZSgpO1xuXG4gICAgY29uc3QgdmFsdWUgPSB1cGRhdGUuQXR0cmlidXRlcz8udmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgbmV4dCBjb3VudGVyIHZhbHVlJyk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gYmFzZTYyRW5jb2RlKHZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnS2V5OiAlaicsIGtleSk7XG5cbiAgICBjb25zdCBwdXRPYmplY3QgPSBhd2FpdCBzMy5wdXRPYmplY3Qoe1xuICAgICAgQnVja2V0OiBnZXRFbnYoJ0JVQ0tFVF9OQU1FJyksXG4gICAgICBLZXk6IGtleSxcbiAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBCb2R5OiBKU09OLnN0cmluZ2lmeSh7IHVybDogYm9keS51cmwgfSksXG4gICAgfSkucHJvbWlzZSgpO1xuICAgIGNvbnNvbGUubG9nKCdQdXQgb2JqZWN0OiAlaicsIHB1dE9iamVjdCk7XG5cbiAgICAvLyBSZXR1cm4gc2hvcnQgdXJsXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB1cmw6IGJvZHkudXJsLFxuICAgICAgICBzaG9ydFVybDogYGh0dHBzOi8vJHtnZXRFbnYoJ0RPTUFJTl9OQU1FJyl9LyR7a2V5fWAsXG4gICAgICB9KSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRlbmVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cmwtc2hvcnRlbmVyL3Nob3J0ZW5lci5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLDZCQUEwQjtBQUMxQixxQ0FBdUMsQ0FBQyx3REFBd0Q7QUFFaEcsU0FBUyxZQUFZLENBQUMsR0FBVztJQUMvQixNQUFNLFlBQVksR0FBRyxnRUFBZ0UsQ0FBQztJQUN0RixJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDMUIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFO1FBQ2QsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUM1QjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUFBLENBQUM7QUFFRixTQUFTLE1BQU0sQ0FBQyxJQUFZO0lBQzFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksaUJBQWlCLENBQUMsQ0FBQztLQUNwRTtJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEdBQVk7SUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJO1FBQ0YsSUFBSSxTQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQztLQUNiO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixPQUFPLEtB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Y2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgeyBVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IHsgRHluYW1vREIsIFMzIH0gZnJvbSAnYXdzLXNkayc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5cbmZ1bmN0aW9uIGJhc2U2MkVuY29kZShpbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGNoYXJhY3RlclNldCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gIGlmIChpbnQgPT09IDApIHJldHVybiAnMCc7XG4gIGxldCBzID0gJyc7XG4gIHdoaWxlIChpbnQgPiAwKSB7XG4gICAgcyA9IGNoYXJhY3RlclNldFtpbnQgJSA2Ml0gKyBzO1xuICAgIGludCA9IE1hdGguZmxvb3IoaW50IC8gNjIpO1xuICB9XG4gIHJldHVybiBzO1xufTtcblxuZnVuY3Rpb24gZ2V0RW52KG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV07XG5cbiAgaWYgKCF2YWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlICR7bmFtZX0gaXMgbm90IGRlZmluZWRgKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gaXNVcmxWYWxpZCh1cmw/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBuZXcgVVJMKHVybCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5jb25zdCBkb2N1bWVudENsaWVudCA9IG5ldyBEeW5hbW9EQi5Eb2N1bWVudENsaWVudCh7IGFwaVZlcnNpb246ICcyMDEyLTA4LTEwJyB9KTtcblxuY29uc3QgczMgPSBuZXcgUzMoeyBhcGlWZXJzaW9uOiAnMjAwNi0wMy0wMScgfSk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50OiBBV1NMYW1iZGEuQVBJR2F0ZXdheVByb3h5RXZlbnQpOiBQcm9taXNlPEFXU0xhbWJkYS5BUElHYXRld2F5UHJveHlSZXN1bHQ+IHtcbiAgY29uc29sZS5sb2coJ0V2ZW50OiAlaicsIGV2ZW50KTtcblxuICBjb25zdCByZXNwb25zZTogQVdTTGFtYmRhLkFQSUdhdGV3YXlQcm94eVJlc3VsdCA9IHtcbiAgICBzdGF0dXNDb2RlOiAyMDEsXG4gICAgYm9keTogJycsXG4gICAgaGVhZGVyczogcHJvY2Vzcy5lbnYuQ09SU19BTExPV19PUklHSU5TXG4gICAgICA/IHsgJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbic6IHByb2Nlc3MuZW52LkNPUlNfQUxMT1dfT1JJR0lOUyB9XG4gICAgICA6IHVuZGVmaW5lZCxcbiAgfTtcblxuICB0cnkge1xuICAgIGNvbnN0IGJvZHkgPSBKU09OLnBhcnNlKGV2ZW50LmJvZHkgPz8gJ3t9Jyk7XG5cbiAgICBpZiAoIWlzVXJsVmFsaWQoYm9keS51cmwpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5yZXNwb25zZSxcbiAgICAgICAgc3RhdHVzQ29kZTogNDAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBHZXQgbmV4dCBjb3VudGVyIHZhbHVlXG4gICAgY29uc3QgdXBkYXRlID0gYXdhaXQgZG9jdW1lbnRDbGllbnQudXBkYXRlKHtcbiAgICAgIFRhYmxlTmFtZTogZ2V0RW52KCdUQUJMRV9OQU1FJyksXG4gICAgICBLZXk6IHsga2V5OiAnY291bnRlcicgfSxcbiAgICAgIFVwZGF0ZUV4cHJlc3Npb246ICdBREQgI3ZhbHVlIDppbmNyJyxcbiAgICAgIEV4cHJlc3Npb25BdHRyaWJ1dGVOYW1lczogeyAnI3ZhbHVlJzogJ3ZhbHVlJyB9LFxuICAgICAgRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlczogeyAnOmluY3InOiAxIH0sXG4gICAgICBSZXR1cm5WYWx1ZXM6ICdVUERBVEVEX05FVycsXG4gICAgfSkucHJvbWlzZSgpO1xuXG4gICAgY29uc3QgdmFsdWUgPSB1cGRhdGUuQXR0cmlidXRlcz8udmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgbmV4dCBjb3VudGVyIHZhbHVlJyk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gYmFzZTYyRW5jb2RlKHZhbHVlKTtcbiAgICBjb25zb2xlLmxvZygnS2V5OiAlaicsIGtleSk7XG5cbiAgICBjb25zdCBwdXRPYmplY3QgPSBhd2FpdCBzMy5wdXRPYmplY3Qoe1xuICAgICAgQnVja2V0OiBnZXRFbnYoJ0JVQ0tFVF9OQU1FJyksXG4gICAgICBLZXk6IGtleSxcbiAgICAgIENvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBCb2R5OiBKU09OLnN0cmluZ2lmeSh7IHVybDogYm9keS51cmwgfSksXG4gICAgfSkucHJvbWlzZSgpO1xuICAgIGNvbnNvbGUubG9nKCdQdXQgb2JqZWN0OiAlaicsIHB1dE9iamVjdCk7XG5cbiAgICAvLyBSZXR1cm4gc2hvcnQgdXJsXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICB1cmw6IGJvZHkudXJsLFxuICAgICAgICBzaG9ydFVybDogYGh0dHBzOi8vJHtnZXRFbnYoJ0RPTUFJTl9OQU1FJyl9LyR7a2V5fWAsXG4gICAgICB9KSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgc3RhdHVzQ29kZTogNTAwLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -8,7 +8,7 @@ This package contains type definitions for Node.js (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Thu, 19 May 2022 14:01:40 GMT
11
+ * Last updated: Fri, 10 Jun 2022 23:01:33 GMT
12
12
  * Dependencies: none
13
13
  * Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`, `structuredClone`
14
14
 
@@ -11,6 +11,7 @@
11
11
  declare module 'fs/promises' {
12
12
  import { Abortable } from 'node:events';
13
13
  import { Stream } from 'node:stream';
14
+ import { ReadableStream } from 'node:stream/web';
14
15
  import {
15
16
  Stats,
16
17
  BigIntStats,
@@ -209,6 +210,29 @@ declare module 'fs/promises' {
209
210
  */
210
211
  read<T extends NodeJS.ArrayBufferView>(buffer: T, offset?: number | null, length?: number | null, position?: number | null): Promise<FileReadResult<T>>;
211
212
  read<T extends NodeJS.ArrayBufferView = Buffer>(options?: FileReadOptions<T>): Promise<FileReadResult<T>>;
213
+ /**
214
+ * Returns a `ReadableStream` that may be used to read the files data.
215
+ *
216
+ * An error will be thrown if this method is called more than once or is called after the `FileHandle` is closed
217
+ * or closing.
218
+ *
219
+ * ```js
220
+ * import { open } from 'node:fs/promises';
221
+ *
222
+ * const file = await open('./some/file/to/read');
223
+ *
224
+ * for await (const chunk of file.readableWebStream())
225
+ * console.log(chunk);
226
+ *
227
+ * await file.close();
228
+ * ```
229
+ *
230
+ * While the `ReadableStream` will read the file to completion, it will not close the `FileHandle` automatically. User code must still call the `fileHandle.close()` method.
231
+ *
232
+ * @since v17.0.0
233
+ * @experimental
234
+ */
235
+ readableWebStream(): ReadableStream;
212
236
  /**
213
237
  * Asynchronously reads the entire contents of a file.
214
238
  *
@@ -487,7 +511,7 @@ declare module 'fs/promises' {
487
511
  * @param [mode=0o666] Sets the file mode (permission and sticky bits) if the file is created.
488
512
  * @return Fulfills with a {FileHandle} object.
489
513
  */
490
- function open(path: PathLike, flags: string | number, mode?: Mode): Promise<FileHandle>;
514
+ function open(path: PathLike, flags?: string | number, mode?: Mode): Promise<FileHandle>;
491
515
  /**
492
516
  * Renames `oldPath` to `newPath`.
493
517
  * @since v10.0.0
@@ -1998,12 +1998,19 @@ declare module 'fs' {
1998
1998
  * @param [flags='r'] See `support of file system `flags``.
1999
1999
  * @param [mode=0o666]
2000
2000
  */
2001
- export function open(path: PathLike, flags: OpenMode, mode: Mode | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2001
+ export function open(path: PathLike, flags: OpenMode | undefined, mode: Mode | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2002
+ /**
2003
+ * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
2004
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
2005
+ * @param [flags='r'] See `support of file system `flags``.
2006
+ */
2007
+ export function open(path: PathLike, flags: OpenMode | undefined, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2002
2008
  /**
2003
2009
  * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
2004
2010
  * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
2005
2011
  */
2006
- export function open(path: PathLike, flags: OpenMode, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2012
+ export function open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2013
+
2007
2014
  export namespace open {
2008
2015
  /**
2009
2016
  * Asynchronous open(2) - open and possibly create a file.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "17.0.35",
3
+ "version": "17.0.42",
4
4
  "description": "TypeScript definitions for Node.js",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -220,6 +220,6 @@
220
220
  },
221
221
  "scripts": {},
222
222
  "dependencies": {},
223
- "typesPublisherContentHash": "6238ccaa7b50cbe1d37bc66eabdea21a4bfb4a7fd6bd780350e84241e2810a00",
224
- "typeScriptVersion": "3.9"
223
+ "typesPublisherContentHash": "a4ad0d317dc8e34f56ab5acf9261717963605b2a6593bd2d18ddb4bae7161f26",
224
+ "typeScriptVersion": "4.0"
225
225
  }
@@ -49,6 +49,7 @@ declare module 'process' {
49
49
  openssl: string;
50
50
  }
51
51
  type Platform = 'aix' | 'android' | 'darwin' | 'freebsd' | 'haiku' | 'linux' | 'openbsd' | 'sunos' | 'win32' | 'cygwin' | 'netbsd';
52
+ type Architecture = 'arm' | 'arm64' | 'ia32' | 'mips' | 'mipsel' | 'ppc' | 'ppc64' | 's390' | 's390x' | 'x64';
52
53
  type Signals =
53
54
  | 'SIGABRT'
54
55
  | 'SIGALRM'
@@ -641,7 +642,7 @@ declare module 'process' {
641
642
  * Android).
642
643
  * @since v0.1.31
643
644
  */
644
- getgid(): number;
645
+ getgid?: () => number;
645
646
  /**
646
647
  * The `process.setgid()` method sets the group identity of the process. (See [`setgid(2)`](http://man7.org/linux/man-pages/man2/setgid.2.html).) The `id` can be passed as either a
647
648
  * numeric ID or a group name
@@ -668,7 +669,7 @@ declare module 'process' {
668
669
  * @since v0.1.31
669
670
  * @param id The group name or ID
670
671
  */
671
- setgid(id: number | string): void;
672
+ setgid?: (id: number | string) => void;
672
673
  /**
673
674
  * The `process.getuid()` method returns the numeric user identity of the process.
674
675
  * (See [`getuid(2)`](http://man7.org/linux/man-pages/man2/getuid.2.html).)
@@ -685,7 +686,7 @@ declare module 'process' {
685
686
  * Android).
686
687
  * @since v0.1.28
687
688
  */
688
- getuid(): number;
689
+ getuid?: () => number;
689
690
  /**
690
691
  * The `process.setuid(id)` method sets the user identity of the process. (See [`setuid(2)`](http://man7.org/linux/man-pages/man2/setuid.2.html).) The `id` can be passed as either a
691
692
  * numeric ID or a username string.
@@ -711,7 +712,7 @@ declare module 'process' {
711
712
  * This feature is not available in `Worker` threads.
712
713
  * @since v0.1.28
713
714
  */
714
- setuid(id: number | string): void;
715
+ setuid?: (id: number | string) => void;
715
716
  /**
716
717
  * The `process.geteuid()` method returns the numerical effective user identity of
717
718
  * the process. (See [`geteuid(2)`](http://man7.org/linux/man-pages/man2/geteuid.2.html).)
@@ -728,7 +729,7 @@ declare module 'process' {
728
729
  * Android).
729
730
  * @since v2.0.0
730
731
  */
731
- geteuid(): number;
732
+ geteuid?: () => number;
732
733
  /**
733
734
  * The `process.seteuid()` method sets the effective user identity of the process.
734
735
  * (See [`seteuid(2)`](http://man7.org/linux/man-pages/man2/seteuid.2.html).) The `id` can be passed as either a numeric ID or a username
@@ -755,7 +756,7 @@ declare module 'process' {
755
756
  * @since v2.0.0
756
757
  * @param id A user name or ID
757
758
  */
758
- seteuid(id: number | string): void;
759
+ seteuid?: (id: number | string) => void;
759
760
  /**
760
761
  * The `process.getegid()` method returns the numerical effective group identity
761
762
  * of the Node.js process. (See [`getegid(2)`](http://man7.org/linux/man-pages/man2/getegid.2.html).)
@@ -772,7 +773,7 @@ declare module 'process' {
772
773
  * Android).
773
774
  * @since v2.0.0
774
775
  */
775
- getegid(): number;
776
+ getegid?: () => number;
776
777
  /**
777
778
  * The `process.setegid()` method sets the effective group identity of the process.
778
779
  * (See [`setegid(2)`](http://man7.org/linux/man-pages/man2/setegid.2.html).) The `id` can be passed as either a numeric ID or a group
@@ -799,7 +800,7 @@ declare module 'process' {
799
800
  * @since v2.0.0
800
801
  * @param id A group name or ID
801
802
  */
802
- setegid(id: number | string): void;
803
+ setegid?: (id: number | string) => void;
803
804
  /**
804
805
  * The `process.getgroups()` method returns an array with the supplementary group
805
806
  * IDs. POSIX leaves it unspecified if the effective group ID is included but
@@ -817,7 +818,7 @@ declare module 'process' {
817
818
  * Android).
818
819
  * @since v0.9.4
819
820
  */
820
- getgroups(): number[];
821
+ getgroups?: () => number[];
821
822
  /**
822
823
  * The `process.setgroups()` method sets the supplementary group IDs for the
823
824
  * Node.js process. This is a privileged operation that requires the Node.js
@@ -843,7 +844,7 @@ declare module 'process' {
843
844
  * This feature is not available in `Worker` threads.
844
845
  * @since v0.9.4
845
846
  */
846
- setgroups(groups: ReadonlyArray<string | number>): void;
847
+ setgroups?: (groups: ReadonlyArray<string | number>) => void;
847
848
  /**
848
849
  * The `process.setUncaughtExceptionCaptureCallback()` function sets a function
849
850
  * that will be invoked when an uncaught exception occurs, which will receive the
@@ -1049,7 +1050,7 @@ declare module 'process' {
1049
1050
  * ```
1050
1051
  * @since v0.5.0
1051
1052
  */
1052
- readonly arch: string;
1053
+ readonly arch: Architecture;
1053
1054
  /**
1054
1055
  * The `process.platform` property returns a string identifying the operating
1055
1056
  * system platform on which the Node.js process is running.
@@ -20,6 +20,7 @@ declare module 'stream' {
20
20
  import { EventEmitter, Abortable } from 'node:events';
21
21
  import * as streamPromises from 'node:stream/promises';
22
22
  import * as streamConsumers from 'node:stream/consumers';
23
+ import * as streamWeb from 'node:stream/web';
23
24
  class internal extends EventEmitter {
24
25
  pipe<T extends NodeJS.WritableStream>(
25
26
  destination: T,
@@ -52,11 +53,23 @@ declare module 'stream' {
52
53
  * A utility method for creating Readable Streams out of iterators.
53
54
  */
54
55
  static from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions): Readable;
56
+ /**
57
+ * A utility method for creating a `Readable` from a web `ReadableStream`.
58
+ * @since v17.0.0
59
+ * @experimental
60
+ */
61
+ static fromWeb(readableStream: streamWeb.ReadableStream, options?: Pick<ReadableOptions, 'encoding' | 'highWaterMark' | 'objectMode' | 'signal'>): Readable;
55
62
  /**
56
63
  * Returns whether the stream has been read from or cancelled.
57
64
  * @since v16.8.0
58
65
  */
59
66
  static isDisturbed(stream: Readable | NodeJS.ReadableStream): boolean;
67
+ /**
68
+ * A utility method for creating a web `ReadableStream` from a `Readable`.
69
+ * @since v17.0.0
70
+ * @experimental
71
+ */
72
+ static toWeb(streamReadable: Readable): streamWeb.ReadableStream;
60
73
  /**
61
74
  * Returns whether the stream was destroyed or errored before emitting `'end'`.
62
75
  * @since v16.8.0
@@ -69,7 +69,7 @@ declare module 'timers' {
69
69
  namespace setTimeout {
70
70
  const __promisify__: typeof setTimeoutPromise;
71
71
  }
72
- function clearTimeout(timeoutId: NodeJS.Timeout | undefined): void;
72
+ function clearTimeout(timeoutId: NodeJS.Timeout | string | number | undefined): void;
73
73
  function setInterval<TArgs extends any[]>(callback: (...args: TArgs) => void, ms?: number, ...args: TArgs): NodeJS.Timer;
74
74
  // util.promisify no rest args compability
75
75
  // tslint:disable-next-line void-return
@@ -77,7 +77,7 @@ declare module 'timers' {
77
77
  namespace setInterval {
78
78
  const __promisify__: typeof setIntervalPromise;
79
79
  }
80
- function clearInterval(intervalId: NodeJS.Timeout | undefined): void;
80
+ function clearInterval(intervalId: NodeJS.Timeout | string | number | undefined): void;
81
81
  function setImmediate<TArgs extends any[]>(callback: (...args: TArgs) => void, ...args: TArgs): NodeJS.Immediate;
82
82
  // util.promisify no rest args compability
83
83
  // tslint:disable-next-line void-return
@@ -158,7 +158,7 @@ declare module 'tls' {
158
158
  * Always returns `true`. This may be used to distinguish TLS sockets from regular`net.Socket` instances.
159
159
  * @since v0.11.4
160
160
  */
161
- encrypted: boolean;
161
+ encrypted: true;
162
162
  /**
163
163
  * String containing the selected ALPN protocol.
164
164
  * Before a handshake has completed, this value is always null.
@@ -8,7 +8,7 @@ This package contains type definitions for Node.js (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Thu, 19 May 2022 14:01:40 GMT
11
+ * Last updated: Fri, 10 Jun 2022 23:01:33 GMT
12
12
  * Dependencies: none
13
13
  * Global values: `AbortController`, `AbortSignal`, `__dirname`, `__filename`, `console`, `exports`, `gc`, `global`, `module`, `process`, `require`, `structuredClone`
14
14
 
@@ -11,6 +11,7 @@
11
11
  declare module 'fs/promises' {
12
12
  import { Abortable } from 'node:events';
13
13
  import { Stream } from 'node:stream';
14
+ import { ReadableStream } from 'node:stream/web';
14
15
  import {
15
16
  Stats,
16
17
  BigIntStats,
@@ -209,6 +210,29 @@ declare module 'fs/promises' {
209
210
  */
210
211
  read<T extends NodeJS.ArrayBufferView>(buffer: T, offset?: number | null, length?: number | null, position?: number | null): Promise<FileReadResult<T>>;
211
212
  read<T extends NodeJS.ArrayBufferView = Buffer>(options?: FileReadOptions<T>): Promise<FileReadResult<T>>;
213
+ /**
214
+ * Returns a `ReadableStream` that may be used to read the files data.
215
+ *
216
+ * An error will be thrown if this method is called more than once or is called after the `FileHandle` is closed
217
+ * or closing.
218
+ *
219
+ * ```js
220
+ * import { open } from 'node:fs/promises';
221
+ *
222
+ * const file = await open('./some/file/to/read');
223
+ *
224
+ * for await (const chunk of file.readableWebStream())
225
+ * console.log(chunk);
226
+ *
227
+ * await file.close();
228
+ * ```
229
+ *
230
+ * While the `ReadableStream` will read the file to completion, it will not close the `FileHandle` automatically. User code must still call the `fileHandle.close()` method.
231
+ *
232
+ * @since v17.0.0
233
+ * @experimental
234
+ */
235
+ readableWebStream(): ReadableStream;
212
236
  /**
213
237
  * Asynchronously reads the entire contents of a file.
214
238
  *
@@ -487,7 +511,7 @@ declare module 'fs/promises' {
487
511
  * @param [mode=0o666] Sets the file mode (permission and sticky bits) if the file is created.
488
512
  * @return Fulfills with a {FileHandle} object.
489
513
  */
490
- function open(path: PathLike, flags: string | number, mode?: Mode): Promise<FileHandle>;
514
+ function open(path: PathLike, flags?: string | number, mode?: Mode): Promise<FileHandle>;
491
515
  /**
492
516
  * Renames `oldPath` to `newPath`.
493
517
  * @since v10.0.0
@@ -1998,12 +1998,19 @@ declare module 'fs' {
1998
1998
  * @param [flags='r'] See `support of file system `flags``.
1999
1999
  * @param [mode=0o666]
2000
2000
  */
2001
- export function open(path: PathLike, flags: OpenMode, mode: Mode | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2001
+ export function open(path: PathLike, flags: OpenMode | undefined, mode: Mode | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2002
+ /**
2003
+ * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
2004
+ * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
2005
+ * @param [flags='r'] See `support of file system `flags``.
2006
+ */
2007
+ export function open(path: PathLike, flags: OpenMode | undefined, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2002
2008
  /**
2003
2009
  * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
2004
2010
  * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
2005
2011
  */
2006
- export function open(path: PathLike, flags: OpenMode, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2012
+ export function open(path: PathLike, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
2013
+
2007
2014
  export namespace open {
2008
2015
  /**
2009
2016
  * Asynchronous open(2) - open and possibly create a file.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "17.0.35",
3
+ "version": "17.0.42",
4
4
  "description": "TypeScript definitions for Node.js",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -220,6 +220,6 @@
220
220
  },
221
221
  "scripts": {},
222
222
  "dependencies": {},
223
- "typesPublisherContentHash": "6238ccaa7b50cbe1d37bc66eabdea21a4bfb4a7fd6bd780350e84241e2810a00",
224
- "typeScriptVersion": "3.9"
223
+ "typesPublisherContentHash": "a4ad0d317dc8e34f56ab5acf9261717963605b2a6593bd2d18ddb4bae7161f26",
224
+ "typeScriptVersion": "4.0"
225
225
  }