sst 2.20.0 → 2.21.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.
@@ -1,3 +1,3 @@
1
1
  import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url);
2
- var y=Object.defineProperty;var a=(o,e)=>y(o,"name",{value:e,configurable:!0});import{createRequire as w}from"module";function t(o,...e){console.log("[provider-framework]",o,...e.map(s=>typeof s=="object"?JSON.stringify(s,void 0,2):s))}a(t,"log");import A from"https";import I from"url";var m="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",E="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function u(o,e,s={}){let r={Status:o,Reason:s.reason||o,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||E,LogicalResourceId:e.LogicalResourceId,NoEcho:s.noEcho,Data:e.Data};t("submit response to cloudformation",r);let n=JSON.stringify(r),l=I.parse(e.ResponseURL);await f({hostname:l.hostname,path:l.path,method:"PUT",headers:{"content-type":"","content-length":n.length}},n)}a(u,"submitResponse");function R(o){return async e=>{if(e.RequestType==="Delete"&&e.PhysicalResourceId===m){t("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",e);return}try{await o(e)}catch(s){if(t(s),s instanceof d)throw t("retry requested by handler"),s;e.PhysicalResourceId||(e.RequestType==="Create"?(t("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),e.PhysicalResourceId=m):t(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`));let r=[s.message,`Logs: https://${process.env.AWS_REGION}.console.aws.amazon.com/cloudwatch/home?region=${process.env.AWS_REGION}#logsV2:log-groups/log-group/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_GROUP_NAME)}/log-events/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_STREAM_NAME)}`].join(`
3
- `);await u("FAILED",e,{reason:r})}}}a(R,"safeHandler");var d=class extends Error{static{a(this,"Retry")}};async function f(o,e){return new Promise((s,r)=>{try{let n=A.request(o,s);n.on("error",r),n.write(e),n.end()}catch(n){r(n)}})}a(f,"httpRequest");var C=w(import.meta.url),h=C("aws-sdk");h.config.logger=console;var c=new h.Lambda({region:"us-east-1"}),p="live",U=R(async o=>{t("onEventHandler",o);let e,s,r=o.ResourceProperties.FunctionArn,n=r.split(":").pop();switch(o.RequestType){case"Create":{let i=(await F(n)).Version;await L(n,i),e=`${r}:${i}`,s={Version:i};break}case"Update":{e=o.PhysicalResourceId,s={Version:o.PhysicalResourceId.split(":").pop()};break}case"Delete":{await V(n),e=o.PhysicalResourceId;break}default:throw new Error("Unsupported request type")}return u("SUCCESS",{...o,PhysicalResourceId:e,Data:s})});async function F(o){t("createVersion() called with functionName",o);let e=await c.publishVersion({FunctionName:o}).promise();return t("response",e),{Version:e.Version}}a(F,"createVersion");async function L(o,e){t("createAlias() called with functionName",o,"version",e);let s;try{t("updateAlias"),s=await c.updateAlias({Name:p,FunctionName:o,FunctionVersion:e}).promise(),t("response",s)}catch(r){if(r.code==="ResourceNotFoundException"&&r.message.startsWith("Alias not found")){t("updateAlias"),s=await c.createAlias({Name:p,FunctionName:o,FunctionVersion:e}).promise(),t("response",s);return}throw r}}a(L,"createAlias");async function V(o){t("deleteOldVersions() called with functionName",o);let e;try{e=await c.getAlias({FunctionName:o,Name:p}).promise(),t("getAlias",e);let s=e.FunctionVersion;e=await c.listVersionsByFunction({FunctionName:o,MaxItems:50}).promise(),t("listVersionsByFunction",e);let r=e.Versions||[];for(let n=0,l=r.length;n<l;n++){let i=r[n].Version;if(i===s){t("deleteVersion",i,"skipped");continue}try{t("deleteVersion",i,"do"),e=await c.deleteFunction({FunctionName:o,Qualifier:i}).promise(),t("response",e)}catch(g){t("deleteVersion error",g)}}}catch(s){t("deleteOldVersions error",s)}}a(V,"deleteOldVersions");export{U as handler};
2
+ import{createRequire as f}from"module";function t(o,...e){console.log("[provider-framework]",o,...e.map(s=>typeof s=="object"?JSON.stringify(s,void 0,2):s))}import g from"https";import y from"url";var p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",A="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function l(o,e,s={}){let r={Status:o,Reason:s.reason||o,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||A,LogicalResourceId:e.LogicalResourceId,NoEcho:s.noEcho,Data:e.Data};t("submit response to cloudformation",r);let n=JSON.stringify(r),c=y.parse(e.ResponseURL);await I({hostname:c.hostname,path:c.path,method:"PUT",headers:{"content-type":"","content-length":n.length}},n)}function m(o){return async e=>{if(e.RequestType==="Delete"&&e.PhysicalResourceId===p){t("ignoring DELETE event caused by a failed CREATE event"),await l("SUCCESS",e);return}try{await o(e)}catch(s){if(t(s),s instanceof u)throw t("retry requested by handler"),s;e.PhysicalResourceId||(e.RequestType==="Create"?(t("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),e.PhysicalResourceId=p):t(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`));let r=[s.message,`Logs: https://${process.env.AWS_REGION}.console.aws.amazon.com/cloudwatch/home?region=${process.env.AWS_REGION}#logsV2:log-groups/log-group/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_GROUP_NAME)}/log-events/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_STREAM_NAME)}`].join(`
3
+ `);await l("FAILED",e,{reason:r})}}}var u=class extends Error{};async function I(o,e){return new Promise((s,r)=>{try{let n=g.request(o,s);n.on("error",r),n.write(e),n.end()}catch(n){r(n)}})}var S=f(import.meta.url),R=S("aws-sdk");R.config.logger=console;var i=new R.Lambda({region:"us-east-1"}),d="live",N=m(async o=>{t("onEventHandler",o);let e,s,r=o.ResourceProperties.FunctionArn,n=r.split(":").pop();switch(o.RequestType){case"Create":{let a=(await w(n)).Version;await C(n,a),e=`${r}:${a}`,s={Version:a};break}case"Update":{e=o.PhysicalResourceId,s={Version:o.PhysicalResourceId.split(":").pop()};break}case"Delete":{await F(n),e=o.PhysicalResourceId;break}default:throw new Error("Unsupported request type")}return l("SUCCESS",{...o,PhysicalResourceId:e,Data:s})});async function w(o){t("createVersion() called with functionName",o);let e=await i.publishVersion({FunctionName:o}).promise();return t("response",e),{Version:e.Version}}async function C(o,e){t("createAlias() called with functionName",o,"version",e);let s;try{t("updateAlias"),s=await i.updateAlias({Name:d,FunctionName:o,FunctionVersion:e}).promise(),t("response",s)}catch(r){if(r.code==="ResourceNotFoundException"&&r.message.startsWith("Alias not found")){t("updateAlias"),s=await i.createAlias({Name:d,FunctionName:o,FunctionVersion:e}).promise(),t("response",s);return}throw r}}async function F(o){t("deleteOldVersions() called with functionName",o);let e;try{e=await i.getAlias({FunctionName:o,Name:d}).promise(),t("getAlias",e);let s=e.FunctionVersion;e=await i.listVersionsByFunction({FunctionName:o,MaxItems:50}).promise(),t("listVersionsByFunction",e);let r=e.Versions||[];for(let n=0,c=r.length;n<c;n++){let a=r[n].Version;if(a===s){t("deleteVersion",a,"skipped");continue}try{t("deleteVersion",a,"do"),e=await i.deleteFunction({FunctionName:o,Qualifier:a}).promise(),t("response",e)}catch(h){t("deleteVersion error",h)}}}catch(s){t("deleteOldVersions error",s)}}export{N as handler};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url);
2
- var E=Object.defineProperty;var r=(e,o)=>E(e,"name",{value:o,configurable:!0});import{createRequire as I}from"module";function n(e,...o){console.log("[provider-framework]",e,...o.map(t=>typeof t=="object"?JSON.stringify(t,void 0,2):t))}r(n,"log");import f from"https";import S from"url";var y="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",w="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function u(e,o,t={}){let s={Status:e,Reason:t.reason||e,StackId:o.StackId,RequestId:o.RequestId,PhysicalResourceId:o.PhysicalResourceId||w,LogicalResourceId:o.LogicalResourceId,NoEcho:t.noEcho,Data:o.Data};n("submit response to cloudformation",s);let a=JSON.stringify(s),i=S.parse(o.ResponseURL);await A({hostname:i.hostname,path:i.path,method:"PUT",headers:{"content-type":"","content-length":a.length}},a)}r(u,"submitResponse");function g(e){return async o=>{if(o.RequestType==="Delete"&&o.PhysicalResourceId===y){n("ignoring DELETE event caused by a failed CREATE event"),await u("SUCCESS",o);return}try{await e(o)}catch(t){if(n(t),t instanceof l)throw n("retry requested by handler"),t;o.PhysicalResourceId||(o.RequestType==="Create"?(n("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),o.PhysicalResourceId=y):n(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(o)}`));let s=[t.message,`Logs: https://${process.env.AWS_REGION}.console.aws.amazon.com/cloudwatch/home?region=${process.env.AWS_REGION}#logsV2:log-groups/log-group/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_GROUP_NAME)}/log-events/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_STREAM_NAME)}`].join(`
3
- `);await u("FAILED",o,{reason:s})}}}r(g,"safeHandler");var l=class extends Error{static{r(this,"Retry")}};async function A(e,o){return new Promise((t,s)=>{try{let a=f.request(e,t);a.on("error",s),a.write(o),a.end()}catch(a){s(a)}})}r(A,"httpRequest");var P=I(import.meta.url),p=P("aws-sdk");p.config.logger=console;var L=new p.S3({region:"us-east-1"}),d=new p.Lambda({region:"us-east-1"}),K=g(async e=>{n("onEventHandler",e);let o=e.RequestType==="Create"?_(e.ResourceProperties.FunctionNamePrefix):e.PhysicalResourceId.split(":").pop(),t,s,a=e.ResourceProperties.FunctionBucket,i=e.ResourceProperties.FunctionParams;switch(e.RequestType){case"Create":{await h(a,i);let c=await b(o,i);t=c.FunctionArn,s={FunctionArn:c.FunctionArn};break}case"Update":{let c=e.OldResourceProperties.FunctionParams;k(i,c)&&await m(o,i),x(i,c)&&(await h(a,i),await R(o,i)),t=e.PhysicalResourceId,s={FunctionArn:e.PhysicalResourceId};break}case"Delete":{await T(o);break}default:throw new Error("Unsupported request type")}return u("SUCCESS",{...e,PhysicalResourceId:t,Data:s})});function _(e){let s="abcdefghijklmnopqrstuvwxyz",a=s.length,i=`${e.toLowerCase().slice(0,64-20-1)}-`;for(let c=0;c<20;c++)i+=s.charAt(Math.floor(Math.random()*a));return i}r(_,"generateFunctionName");async function h(e,o){n("copyAsset() called with params",e,o),n("copy");let t=await L.copyObject({Bucket:e,CopySource:`/${o.Code.S3Bucket}/${o.Code.S3Key}`,Key:o.Code.S3Key}).promise();n("response",t),o.Code.S3Bucket=e}r(h,"copyAsset");async function b(e,o){n("createFunction() called with params",o);let t=await d.createFunction({...o,FunctionName:e}).promise();return n("response",t),{FunctionArn:t.FunctionArn}}r(b,"createFunction");async function m(e,o){n("updateFunctionConfiguration() called with params",o);try{let t=await d.updateFunctionConfiguration({FunctionName:e,...o,Code:void 0}).promise();n("response",t);return}catch(t){if(C(t)){await m(e,o);return}throw t}}r(m,"updateFunctionConfiguration");async function R(e,o){n("updateFunctionCode() called with params",o);try{let t=await d.updateFunctionCode({FunctionName:e,Publish:!1,...o.Code}).promise();n("response",t);return}catch(t){if(C(t)){await R(e,o);return}throw t}}r(R,"updateFunctionCode");async function T(e){n("deleteFunction() called with functionName",e);let o=await d.deleteFunction({FunctionName:e}).promise();n("response",o)}r(T,"deleteFunction");function k(e,o){return Object.keys(e).length!==Object.keys(e).length||["Description","Handler","Runtime","MemorySize","Timeout","Role"].some(t=>e[t]!==o[t])}r(k,"isConfigurationChanged");function x(e,o){return e.Code.S3Bucket!==o.Code.S3Bucket||e.Code.S3Key!==o.Code.S3Key}r(x,"isCodeChanged");function C(e){return e.code==="ThrottlingException"&&e.message==="Rate exceeded"||e.code==="Throttling"&&e.message==="Rate exceeded"||e.code==="TooManyRequestsException"&&e.message==="Too Many Requests"||e.code==="TooManyUpdates"||e.code==="OperationAbortedException"||e.code==="TimeoutError"||e.code==="NetworkingError"||e.code==="ResourceConflictException"}r(C,"isRetryableException");export{K as handler};
2
+ import{createRequire as A}from"module";function n(e,...o){console.log("[provider-framework]",e,...o.map(t=>typeof t=="object"?JSON.stringify(t,void 0,2):t))}import C from"https";import E from"url";var p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",f="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function c(e,o,t={}){let r={Status:e,Reason:t.reason||e,StackId:o.StackId,RequestId:o.RequestId,PhysicalResourceId:o.PhysicalResourceId||f,LogicalResourceId:o.LogicalResourceId,NoEcho:t.noEcho,Data:o.Data};n("submit response to cloudformation",r);let s=JSON.stringify(r),a=E.parse(o.ResponseURL);await S({hostname:a.hostname,path:a.path,method:"PUT",headers:{"content-type":"","content-length":s.length}},s)}function y(e){return async o=>{if(o.RequestType==="Delete"&&o.PhysicalResourceId===p){n("ignoring DELETE event caused by a failed CREATE event"),await c("SUCCESS",o);return}try{await e(o)}catch(t){if(n(t),t instanceof d)throw n("retry requested by handler"),t;o.PhysicalResourceId||(o.RequestType==="Create"?(n("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),o.PhysicalResourceId=p):n(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(o)}`));let r=[t.message,`Logs: https://${process.env.AWS_REGION}.console.aws.amazon.com/cloudwatch/home?region=${process.env.AWS_REGION}#logsV2:log-groups/log-group/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_GROUP_NAME)}/log-events/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_STREAM_NAME)}`].join(`
3
+ `);await c("FAILED",o,{reason:r})}}}var d=class extends Error{};async function S(e,o){return new Promise((t,r)=>{try{let s=C.request(e,t);s.on("error",r),s.write(o),s.end()}catch(s){r(s)}})}var F=A(import.meta.url),l=F("aws-sdk");l.config.logger=console;var I=new l.S3({region:"us-east-1"}),u=new l.Lambda({region:"us-east-1"}),U=y(async e=>{n("onEventHandler",e);let o=e.RequestType==="Create"?P(e.ResourceProperties.FunctionNamePrefix):e.PhysicalResourceId.split(":").pop(),t,r,s=e.ResourceProperties.FunctionBucket,a=e.ResourceProperties.FunctionParams;switch(e.RequestType){case"Create":{await g(s,a);let i=await L(o,a);t=i.FunctionArn,r={FunctionArn:i.FunctionArn};break}case"Update":{let i=e.OldResourceProperties.FunctionParams;b(a,i)&&await h(o,a),T(a,i)&&(await g(s,a),await m(o,a)),t=e.PhysicalResourceId,r={FunctionArn:e.PhysicalResourceId};break}case"Delete":{await _(o);break}default:throw new Error("Unsupported request type")}return c("SUCCESS",{...e,PhysicalResourceId:t,Data:r})});function P(e){let r="abcdefghijklmnopqrstuvwxyz",s=r.length,a=`${e.toLowerCase().slice(0,64-20-1)}-`;for(let i=0;i<20;i++)a+=r.charAt(Math.floor(Math.random()*s));return a}async function g(e,o){n("copyAsset() called with params",e,o),n("copy");let t=await I.copyObject({Bucket:e,CopySource:`/${o.Code.S3Bucket}/${o.Code.S3Key}`,Key:o.Code.S3Key}).promise();n("response",t),o.Code.S3Bucket=e}async function L(e,o){n("createFunction() called with params",o);let t=await u.createFunction({...o,FunctionName:e}).promise();return n("response",t),{FunctionArn:t.FunctionArn}}async function h(e,o){n("updateFunctionConfiguration() called with params",o);try{let t=await u.updateFunctionConfiguration({FunctionName:e,...o,Code:void 0}).promise();n("response",t);return}catch(t){if(R(t)){await h(e,o);return}throw t}}async function m(e,o){n("updateFunctionCode() called with params",o);try{let t=await u.updateFunctionCode({FunctionName:e,Publish:!1,...o.Code}).promise();n("response",t);return}catch(t){if(R(t)){await m(e,o);return}throw t}}async function _(e){n("deleteFunction() called with functionName",e);let o=await u.deleteFunction({FunctionName:e}).promise();n("response",o)}function b(e,o){return Object.keys(e).length!==Object.keys(e).length||["Description","Handler","Runtime","MemorySize","Timeout","Role"].some(t=>e[t]!==o[t])}function T(e,o){return e.Code.S3Bucket!==o.Code.S3Bucket||e.Code.S3Key!==o.Code.S3Key}function R(e){return e.code==="ThrottlingException"&&e.message==="Rate exceeded"||e.code==="Throttling"&&e.message==="Rate exceeded"||e.code==="TooManyRequestsException"&&e.message==="Too Many Requests"||e.code==="TooManyUpdates"||e.code==="OperationAbortedException"||e.code==="TimeoutError"||e.code==="NetworkingError"||e.code==="ResourceConflictException"}export{U as handler};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url);
2
- var g=Object.defineProperty;var a=(t,e)=>g(t,"name",{value:e,configurable:!0});import{createRequire as A}from"module";function r(t,...e){console.log("[provider-framework]",t,...e.map(o=>typeof o=="object"?JSON.stringify(o,void 0,2):o))}a(r,"log");import y from"https";import E from"url";var p="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",f="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function i(t,e,o={}){let n={Status:t,Reason:o.reason||t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||f,LogicalResourceId:e.LogicalResourceId,NoEcho:o.noEcho,Data:e.Data};r("submit response to cloudformation",n);let s=JSON.stringify(n),c=E.parse(e.ResponseURL);await I({hostname:c.hostname,path:c.path,method:"PUT",headers:{"content-type":"","content-length":s.length}},s)}a(i,"submitResponse");function m(t){return async e=>{if(e.RequestType==="Delete"&&e.PhysicalResourceId===p){r("ignoring DELETE event caused by a failed CREATE event"),await i("SUCCESS",e);return}try{await t(e)}catch(o){if(r(o),o instanceof l)throw r("retry requested by handler"),o;e.PhysicalResourceId||(e.RequestType==="Create"?(r("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),e.PhysicalResourceId=p):r(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`));let n=[o.message,`Logs: https://${process.env.AWS_REGION}.console.aws.amazon.com/cloudwatch/home?region=${process.env.AWS_REGION}#logsV2:log-groups/log-group/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_GROUP_NAME)}/log-events/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_STREAM_NAME)}`].join(`
3
- `);await i("FAILED",e,{reason:n})}}}a(m,"safeHandler");var l=class extends Error{static{a(this,"Retry")}};async function I(t,e){return new Promise((o,n)=>{try{let s=y.request(t,o);s.on("error",n),s.write(e),s.end()}catch(s){n(s)}})}a(I,"httpRequest");var C=A(import.meta.url),h=C("aws-sdk");h.config.logger=console;var u=new h.S3({region:"us-east-1"}),q=m(async t=>{r("onEventHandler",t);let e=t.RequestType==="Create"?L(t.ResourceProperties.BucketNamePrefix):t.PhysicalResourceId,o;switch(t.RequestType){case"Create":await w(e),o={BucketName:e};break;case"Update":break;case"Delete":await R(e),await k(e);break;default:throw new Error("Unsupported request type")}return i("SUCCESS",{...t,PhysicalResourceId:e,Data:o})});async function w(t){r("createBucket() called with bucketName",t);let e=await u.createBucket({Bucket:t}).promise();r("response",e)}a(w,"createBucket");async function k(t){r("deleteBucket() called with bucketName",t);let e=await u.deleteBucket({Bucket:t}).promise();r("response",e)}a(k,"deleteBucket");function L(t){let n="abcdefghijklmnopqrstuvwxyz",s=n.length,c=`${t.toLowerCase().slice(0,63-20-1)}-`;for(let d=0;d<20;d++)c+=n.charAt(Math.floor(Math.random()*s));return c}a(L,"generateBucketName");async function R(t){let e=await u.listObjectVersions({Bucket:t}).promise(),o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let n=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await u.deleteObjects({Bucket:t,Delete:{Objects:n}}).promise(),e?.IsTruncated&&await R(t)}a(R,"emptyBucket");export{q as handler};
2
+ import{createRequire as I}from"module";function r(t,...e){console.log("[provider-framework]",t,...e.map(o=>typeof o=="object"?JSON.stringify(o,void 0,2):o))}import R from"https";import g from"url";var d="AWSCDK::CustomResourceProviderFramework::CREATE_FAILED",y="AWSCDK::CustomResourceProviderFramework::MISSING_PHYSICAL_ID";async function c(t,e,o={}){let n={Status:t,Reason:o.reason||t,StackId:e.StackId,RequestId:e.RequestId,PhysicalResourceId:e.PhysicalResourceId||y,LogicalResourceId:e.LogicalResourceId,NoEcho:o.noEcho,Data:e.Data};r("submit response to cloudformation",n);let s=JSON.stringify(n),a=g.parse(e.ResponseURL);await E({hostname:a.hostname,path:a.path,method:"PUT",headers:{"content-type":"","content-length":s.length}},s)}function p(t){return async e=>{if(e.RequestType==="Delete"&&e.PhysicalResourceId===d){r("ignoring DELETE event caused by a failed CREATE event"),await c("SUCCESS",e);return}try{await t(e)}catch(o){if(r(o),o instanceof u)throw r("retry requested by handler"),o;e.PhysicalResourceId||(e.RequestType==="Create"?(r("CREATE failed, responding with a marker physical resource id so that the subsequent DELETE will be ignored"),e.PhysicalResourceId=d):r(`ERROR: Malformed event. "PhysicalResourceId" is required: ${JSON.stringify(e)}`));let n=[o.message,`Logs: https://${process.env.AWS_REGION}.console.aws.amazon.com/cloudwatch/home?region=${process.env.AWS_REGION}#logsV2:log-groups/log-group/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_GROUP_NAME)}/log-events/${encodeURIComponent(process.env.AWS_LAMBDA_LOG_STREAM_NAME)}`].join(`
3
+ `);await c("FAILED",e,{reason:n})}}}var u=class extends Error{};async function E(t,e){return new Promise((o,n)=>{try{let s=R.request(t,o);s.on("error",n),s.write(e),s.end()}catch(s){n(s)}})}var S=I(import.meta.url),m=S("aws-sdk");m.config.logger=console;var i=new m.S3({region:"us-east-1"}),B=p(async t=>{r("onEventHandler",t);let e=t.RequestType==="Create"?w(t.ResourceProperties.BucketNamePrefix):t.PhysicalResourceId,o;switch(t.RequestType){case"Create":await A(e),o={BucketName:e};break;case"Update":break;case"Delete":await h(e),await C(e);break;default:throw new Error("Unsupported request type")}return c("SUCCESS",{...t,PhysicalResourceId:e,Data:o})});async function A(t){r("createBucket() called with bucketName",t);let e=await i.createBucket({Bucket:t}).promise();r("response",e)}async function C(t){r("deleteBucket() called with bucketName",t);let e=await i.deleteBucket({Bucket:t}).promise();r("response",e)}function w(t){let n="abcdefghijklmnopqrstuvwxyz",s=n.length,a=`${t.toLowerCase().slice(0,63-20-1)}-`;for(let l=0;l<20;l++)a+=n.charAt(Math.floor(Math.random()*s));return a}async function h(t){let e=await i.listObjectVersions({Bucket:t}).promise(),o=[...e.Versions??[],...e.DeleteMarkers??[]];if(o.length===0)return;let n=o.map(s=>({Key:s.Key,VersionId:s.VersionId}));await i.deleteObjects({Bucket:t,Delete:{Objects:n}}).promise(),e?.IsTruncated&&await h(t)}export{B as handler};