@allthings/cloud-toolkit 3.2.4-beta.2 → 3.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -69,10 +69,10 @@ This project uses [semantic-release](https://semantic-release.gitbook.io/semanti
69
69
  2. **Push the branch** to trigger the CI pipeline:
70
70
 
71
71
  ```sh
72
- git push --force origin beta # or alpha / next
72
+ git push --force origin HEAD:beta # or alpha / next
73
73
  ```
74
74
 
75
- The pipeline will automatically run `semantic-release`, which detects the branch name, bumps the version with the appropriate pre-release tag, and publishes it to npm under the matching dist-tag.
75
+ The pipeline will automatically run `semantic-release`, which detects the branch name, bumps the version with the appropriate pre-release tag, and publishes it to npm under the matching dist-tag. Check [Actions page](https://github.com/allthings/cloud-toolkit/actions) for the release logs.
76
76
 
77
77
  3. **Install the pre-release** in another project:
78
78
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allthings/cloud-toolkit",
3
- "version": "3.2.4-beta.2",
3
+ "version": "3.3.0-beta.1",
4
4
  "description": "",
5
5
  "author": "Allthings GmbH",
6
6
  "keywords": [
@@ -23,7 +23,6 @@
23
23
  },
24
24
  "main": "dist/lib.cjs.js",
25
25
  "module": "dist/lib.esm.js",
26
- "browser": "dist/lib.umd.min.js",
27
26
  "types": "dist/src/index.d.ts",
28
27
  "files": [
29
28
  "dist/*.js",
@@ -55,40 +54,33 @@
55
54
  "serve": "npx serve -l 3333"
56
55
  },
57
56
  "dependencies": {
58
- "@aws-sdk/client-dynamodb": "^3.993.0",
59
- "@aws-sdk/client-lambda": "^3.993.0",
60
- "@aws-sdk/client-sesv2": "^3.993.0",
61
- "@aws-sdk/client-sqs": "^3.993.0",
62
- "@aws-sdk/client-ssm": "^3.993.0",
63
- "@aws-sdk/lib-dynamodb": "^3.993.0",
57
+ "@aws-sdk/client-dynamodb": "^3.1012.0",
58
+ "@aws-sdk/client-lambda": "^3.1012.0",
59
+ "@aws-sdk/client-sesv2": "^3.1012.0",
60
+ "@aws-sdk/client-sqs": "^3.1012.0",
61
+ "@aws-sdk/client-ssm": "^3.1012.0",
62
+ "@aws-sdk/lib-dynamodb": "^3.1012.0",
64
63
  "bottleneck": "^2.19.5",
65
- "cross-fetch": "^4.1.0",
66
64
  "nodemailer": "^8.0.0",
67
- "query-string": "^9.2.2",
68
65
  "winston": "^3.17.0"
69
66
  },
70
67
  "devDependencies": {
71
68
  "@allthings/eslint-config": "3.0.0",
72
- "@commitlint/cli": "20.4.3",
73
- "@commitlint/config-conventional": "20.4.3",
74
- "@rollup/plugin-commonjs": "29.0.2",
75
- "@rollup/plugin-json": "6.1.0",
69
+ "@commitlint/cli": "20.5.0",
70
+ "@commitlint/config-conventional": "20.5.0",
76
71
  "@rollup/plugin-node-resolve": "16.0.3",
77
- "@rollup/plugin-replace": "6.0.3",
78
- "@rollup/plugin-terser": "1.0.0",
79
72
  "@types/aws-lambda": "8.10.161",
80
73
  "@types/jest": "30.0.0",
81
74
  "@types/node": "24.12.0",
82
75
  "@types/nodemailer": "7.0.11",
83
- "@types/query-string": "6.3.0",
84
76
  "aws-sdk-client-mock": "4.1.0",
85
77
  "eslint": "9.39.4",
86
78
  "husky": "9.1.7",
87
- "jest": "30.2.0",
88
- "lint-staged": "16.3.2",
79
+ "jest": "30.3.0",
80
+ "lint-staged": "16.4.0",
89
81
  "prettier": "3.8.1",
90
82
  "rimraf": "6.1.3",
91
- "rollup": "4.59.0",
83
+ "rollup": "4.59.1",
92
84
  "semantic-release": "25.0.3",
93
85
  "ts-jest": "29.4.6",
94
86
  "typescript": "5.9.3"
@@ -1 +0,0 @@
1
- import*as e from"querystring";import*as t from"zlib";import*as n from"crypto";import{DynamoDBClient as o}from"@aws-sdk/client-dynamodb";import{DynamoDBDocumentClient as a,UpdateCommand as r,ScanCommand as s,QueryCommand as i,PutCommand as c,GetCommand as l,DeleteCommand as p,BatchWriteCommand as d}from"@aws-sdk/lib-dynamodb";import u from"bottleneck";import{LambdaClient as m,InvokeCommand as g}from"@aws-sdk/client-lambda";import{SSMClient as h,GetParametersCommand as y,GetParameterCommand as f}from"@aws-sdk/client-ssm";import{SESv2Client as v,SendEmailCommand as x}from"@aws-sdk/client-sesv2";import{createTransport as j}from"nodemailer";import{SQSClient as b,SendMessageCommand as w,SendMessageBatchCommand as C,GetQueueUrlCommand as I,ReceiveMessageCommand as N,DeleteMessageCommand as S}from"@aws-sdk/client-sqs";import{format as k,createLogger as T,transports as q}from"winston";export{Logger}from"winston";const M=(e,t,n)=>{const{requestId:o}=e.requestContext,a=n.name&&"string"==typeof n.name?n.name.replace(/([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g,"$1$4 $2$3$5"):"Error",r=n.message||"",s=n.statusCode?` ${n.statusCode}`:"";return"ClientError"===n.name||n.statusCode>=400&&n.statusCode<500?t.respondTo({html:`<html><body><strong>${a}${s}</strong>: ${r}<br/>Request ID: ${o}</body></html>`,json:{error:n.name,message:r,requestId:o}},n.statusCode||400):t.respondTo({html:`<html><body>An internal server error occurred.<br/>Request ID: ${o}</body></html>`,json:{error:"Internal server error",message:"An internal server error occurred",requestId:o}},500)};class E extends Error{name="ClientError";statusCode=400;constructor(e,t,n=400){super(String(e)),this.name=t||this.name,this.statusCode=n}}class A extends Error{name="ServerError";statusCode=500;constructor(e,t,n=500){super(String(e)),this.name=t||this.name,this.statusCode=n}}const R=async(e,t,...n)=>e.reduce(async(e,t)=>t(await e,...n),Promise.resolve(t)),$=e=>{return e.isBase64Encoded&&"string"==typeof e.body?{...e,body:(t=e.body,Buffer.from(t,"base64").toString("utf8"))}:e;var t},L=e=>{const t=e.indexOf("="),n=-1!==t,o=n&&e.slice(0,Math.max(0,t)).trim(),a=n&&e.substr(t+1,e.length).trim(),r=a&&'"'===a[0]?a.slice(1,-1):a;return o?{[o]:r?decodeURIComponent(r):""}:{}},P=e=>{return{...e,cookies:(t=e.headers?.cookie||"",t.split(/; */).reduce((e,t)=>({...e,...L(t)}),{}))};var t},O=e=>({...e,hostname:e.headers?.host||void 0}),D=e=>{try{return JSON.parse(e)}catch{return{}}},H=e=>{const{headers:t,body:n}=e;return"application/json"===t["content-type"]?.split(";").shift()&&"string"==typeof n?{...e,body:D(n)}:e},U=new Map([["invocationCount",0]]),z=e=>{const t=Number(U.get("invocationCount"));return{...e,meta:{...e.meta,coldStart:!t,invocationCount:U.set("invocationCount",t+1).get("invocationCount")}}},B=({headers:e={},...t})=>({...t,headers:Object.keys(e).reduce((n,o)=>{const a=o.toLowerCase();return"aws"===t.provider&&Reflect.has(n,a)&&"content-type"===a&&"application/json"===e[o]?n:{...n,[a]:e[o]}},{})}),_=e=>({...e,method:e.httpMethod??e.requestContext?.http?.method??"",path:e.path??e.requestContext?.http?.path??"",provider:"aws",query:e.queryStringParameters||{},source:e.requestContext?"api-gateway":e.source}),Q=e=>({...e,timestamp:Date.now()}),K=t=>{const{headers:n,body:o}=t;return"application/x-www-form-urlencoded"===n["content-type"]?.split(";").shift()&&"string"==typeof o?{...t,body:e.parse(o)}:t};const F=(e,t,n,o)=>(Object.assign(t.headers,{[n]:o}),e),V=(e,t="",n=200,{headers:o={},...a}={},r)=>Object.freeze({...e,body:t||"",headers:{...e?.headers,"content-type":r,...o},statusCode:n,...a}),W=(e,t,n,o,a)=>V(e,n,o,a,"text/html"),Y=(e,t,n,o,a)=>V(e,(e=>{const t="string"==typeof e?e.trim():e;return"string"==typeof e&&["{",'"'].includes(t[0])&&["}",'"'].includes(t.at(-1))?t:JSON.stringify(e)})(n),o,a,"application/json"),J=["application/activity+json","application/alto-costmap+json","application/alto-costmapfilter+json","application/alto-directory+json","application/alto-endpointcost+json","application/alto-endpointcostparams+json","application/alto-endpointprop+json","application/alto-endpointpropparams+json","application/alto-error+json","application/alto-networkmap+json","application/alto-networkmapfilter+json","application/atom+xml","application/calendar+json","application/coap-group+json","application/csvm+json","application/dart","application/dicom+json","application/ecmascript","application/fhir+json","application/fido.trusted-apps+json","application/geo+json","application/javascript","application/jf2feed+json","application/jose+json","application/jrd+json","application/json","application/json-patch+json","application/jsonml+json","application/jwk+json","application/jwk-set+json","application/ld+json","application/manifest+json","application/merge-patch+json","application/mud+json","application/postscript","application/ppsp-tracker+json","application/problem+json","application/raml+yaml","application/rdap+json","application/rdf+xml","application/reputon+json","application/rss+xml","application/rtf","application/scim+json","application/soap+xml","application/tar","application/vcard+json","application/vnd.amadeus+json","application/vnd.api+json","application/vnd.apothekende.reservation+json","application/vnd.avalon+json","application/vnd.bbf.usp.msg+json","application/vnd.bekitzur-stech+json","application/vnd.capasystems-pg+json","application/vnd.collection+json","application/vnd.collection.doc+json","application/vnd.collection.next+json","application/vnd.coreos.ignition+json","application/vnd.dart","application/vnd.datapackage+json","application/vnd.dataresource+json","application/vnd.document+json","application/vnd.drive+json","application/vnd.geo+json","application/vnd.google-earth.kml+xml","application/vnd.hal+json","application/vnd.hc+json","application/vnd.heroku+json","application/vnd.hyper+json","application/vnd.hyper-item+json","application/vnd.hyperdrive+json","application/vnd.ims.lis.v2.result+json","application/vnd.ims.lti.v2.toolconsumerprofile+json","application/vnd.ims.lti.v2.toolproxy+json","application/vnd.ims.lti.v2.toolproxy.id+json","application/vnd.ims.lti.v2.toolsettings+json","application/vnd.ims.lti.v2.toolsettings.simple+json","application/vnd.las.las+json","application/vnd.mason+json","application/vnd.micro+json","application/vnd.miele+json","application/vnd.mozilla.xul+xml","application/vnd.ms-fontobject","application/vnd.ms-opentype","application/vnd.nearst.inv+json","application/vnd.oftn.l10n+json","application/vnd.oma.lwm2m+json","application/vnd.oracle.resource+json","application/vnd.pagerduty+json","application/vnd.restful+json","application/vnd.siren+json","application/vnd.sun.wadl+xml","application/vnd.tableschema+json","application/vnd.vel+json","application/vnd.xacml+json","application/voucher-cms+json","application/wasm","application/webpush-options+json","application/x-httpd-php","application/x-javascript","application/x-ns-proxy-autoconfig","application/x-sh","application/x-tar","application/x-virtualbox-hdd","application/x-virtualbox-ova","application/x-virtualbox-ovf","application/x-virtualbox-vbox","application/x-virtualbox-vdi","application/x-virtualbox-vhd","application/x-virtualbox-vmdk","application/x-web-app-manifest+json","application/x-www-form-urlencoded","application/xhtml+xml","application/xml","application/xml-dtd","application/xop+xml","application/yang-data+json","application/yang-patch+json","font/otf","image/bmp","image/svg+xml","image/vnd.adobe.photoshop","image/x-icon","image/x-ms-bmp","message/imdn+xml","message/rfc822","model/gltf+json","model/gltf-binary","model/x3d+xml","text/cache-manifest","text/calender","text/cmd","text/css","text/csv","text/html","text/javascript","text/jsx","text/markdown","text/n3","text/plain","text/richtext","text/rtf","text/tab-separated-values","text/uri-list","text/vcard","text/vtt","text/x-gwt-rpc","text/x-jquery-tmpl","text/x-markdown","text/x-org","text/x-processing","text/x-suse-ymp","text/xml","x-shader/x-fragment","x-shader/x-vertex"],Z={level:5},G=(e,t)=>e.find(e=>t.some(t=>e===t)),X={"default-src":"'self' https: 'unsafe-inline'","img-src":"* data: blob:"},ee=e=>0===e.length?'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"':(e=>{const t=n.createHash("sha1").update(e,"utf8").digest("base64").slice(0,27);return`"${("string"==typeof e?Buffer.byteLength(e,"utf8"):e.length).toString(16)}-${t}"`})(e),te=e=>{const{headers:t,requestContext:n,context:o}=e;return{apig:{requestId:n.requestId,resourcePath:n.resourcePath??""},awsAccountId:n.accountId,cloudfront:{country:t["cloudfront-viewer-country"],desktop:"true"===t["cloudfront-is-desktop-viewer"],mobile:"true"===t["cloudfront-is-mobile-viewer"],smarttv:"true"===t["cloudfront-is-smarttv-viewer"],tablet:"true"===t["cloudfront-is-tablet-viewer"]},deploymentStage:n.stage,lambda:{functionName:o.functionName,memoryLimit:Number(o.memoryLimitInMB),remainingExecutionTime:o.getRemainingTimeInMillis?.(),requestId:o.awsRequestId},sourceIp:n.identity?.sourceIp??n?.http?.sourceIp}},ne=(t,n,o)=>o.enableLogger&&("function"==typeof o.logger?o.logger(n,t):((t,n)=>{const{source:o,headers:a,meta:r,requestContext:s,provider:i,hostname:c,body:l,timestamp:p,path:d,query:u}=t,m=n.statusCode>=500&&n.statusCode<600,g={dateTime:(new Date).toISOString(),eventSource:o,hostname:c,httpMethod:s.httpMethod,httpProtocol:a.via?.split(" ")[0],httpReferrer:a.referer,httpUserAgent:a["user-agent"],requestContentLength:l&&l.length>0||0,requestTime:Date.now()-p,requestUri:d+(u&&Object.keys(u).length>0?`?${e.stringify(u)}`:""),responseContentLength:n.headers["content-length"],statusCode:n.statusCode,xForwardedHost:a["x-forwarded-host"],...r,..."aws"===i&&te(t)};return(m?process.stderr:process.stdout).write(JSON.stringify(g))&&g})(n,t))&&t||t,oe=(e,t,n,o=302,a={})=>V(e,"",o,{...a,headers:{...a.headers,location:n}}),ae=(e,t,n,o,a)=>{const{headers:{accept:r}}=t,s=((e,t)=>{const n=e.default||"html",o=t&&"string"==typeof t&&t.split(";")[0].split(",").map(e=>e.split("/").at(-1));return o&&o.find(t=>Reflect.has(e,t))||n})(n,r),i=(e=>{switch(e){case"html":return W;case"json":return Y}throw new TypeError(`"${e}" is not a valid Alagarr respondTo() format.`)})(s),c=((e,t)=>{switch(t){case"html":return e.html;case"json":return e.json}throw new TypeError(`"${t}" is not a valid Alagarr respondTo() format.`)})(n,s);return i(e,t,c,o,a)},re=(e,t,n,o,a)=>V(e,n,o,a,"text/plain"),se={enableCompression:(e,n)=>{const{body:o,headers:a}=e,r=(e=>{const{headers:t}=e,n=(t["accept-encoding"]||"").split(/, */),o=G(n,["gzip","deflate","identity"]);return"deflate"===o&&G(n,["gzip"])?G(n,["gzip","identity"]):o})(n);return J.includes(a["content-type"])&&void 0!==r&&"identity"!==r&&o&&o.length>256&&r?((e,n)=>{const{body:o,headers:a,...r}=e,s="gzip"===n?t.gzipSync(o,Z):t.deflateSync(o,Z);return{...r,body:s.toString("base64"),headers:{...a,"content-encoding":n,"content-length":s.byteLength},isBase64Encoded:!0}})(e,r):e},enableContentLength:e=>{const{body:t,headers:n,...o}=e;return{...o,body:t,headers:{...n,"content-length":n["content-length"]||Buffer.byteLength(t)}}},enableCspHeaders:(e,t,n)=>{const{headers:o={},...a}=e,r={...X,...n.cspPolicies};return{...a,headers:{...o,"content-security-policy":Object.keys(r).map(e=>`${e} ${r[e]}`).join(";"),"referrer-policy":"strict-origin-when-cross-origin","x-content-type-options":"nosniff","x-frame-options":{"'none'":"DENY","'self'":"SAMEORIGIN"}[r["frame-ancestors"]]||void 0,"x-xss-protection":"1; mode=block"}}},enableETagHeader:e=>({...e,headers:{...e.headers,etag:ee(e.body)}}),enableEnforcedHeaders:(e,t,n)=>({...e,headers:{...e.headers,...n.headers??{}}})};const ie={cspPolicies:[],enableCompression:!0,enableContentLength:!0,enableCspHeaders:!0,enableETagHeader:!0,enableEnforcedHeaders:!0,enableLogger:!0,enableStrictTransportSecurity:!0,errorHandler:M,requestMiddleware:[],responseMiddleware:[]},ce=(e,t)=>{throw new A("Misconfiguration in Alagarr setup. No handler function was provided.")},le=(e=ce,t=ie)=>async(n,o,a)=>{const r={...ie,...t},s=await(async(e,t,n={})=>R([Q,_,B,$,P,K,H,O,z,...n.requestMiddleware||[]],Object.freeze({...e,context:t}),n))(n,o,r),i=await(async(e,t,n)=>{const o=V(),a=[re,W,Y,oe,ae].reduce((a,r)=>({...a,[r.name]:async(...a)=>t(null,await R(Object.keys(se).reduce((e,t)=>n[t]?[...e,se[t]]:e,[...n.responseMiddleware||[],...n.enableLogger?[ne]:[]]),r(o,e,...a),e,n))}),{raw:t}),r=[F].reduce((e,t)=>({...e,[t.name]:(...e)=>t(r,o,...e)}),a);return r})(s,a,r);try{return await e(s,i,o)}catch(e){const t="function"==typeof r.errorHandler?r.errorHandler:M;try{return await t(s,i,e)}catch(e){return console.error("There was an error in the error handler provided to Alagaar",e,t.toString()),M(s,i,e)}}},pe={region:"eu-central-2"},de=async(e,t,n,o=0)=>{const a=await t(n,o);return await e(a,o)?a:de(e,t,a,o+1)};let ue;const me=e=>"string"==typeof e?{id:e}:e,ge=({UnprocessedItems:e})=>!e||0===Object.keys(e).length,he=async(e,t,n,o)=>{try{const s=(a=25,r=o,Array.from({length:Math.ceil(r.length/a)}).map((e,t)=>r.slice(t*a,t*a+a))),i=await Promise.all(s.map(async o=>ue.schedule(async()=>de(ge,((e,t,n)=>async(o,a)=>{if(a>n)throw new Error("Reached maximum number of DynamoDB BatchWrite request retries.");const r=new d({RequestItems:o.UnprocessedItems??{[t]:o.map(e=>({PutRequest:{Item:e}}))},ReturnConsumedCapacity:"TOTAL",ReturnItemCollectionMetrics:"SIZE"});return e.send(r)})(t,e.tableNamePrefix+n,e.batchWriteMaxRetries??50),o))));return i&&o}catch(t){return void(e.logger&&e.logger.error(t))}var a,r},ye=e=>{const{clientConfig:t,...n}={...pe,...e},d=new o(n.dockerConfig?{credentials:{accessKeyId:"foobarkey",secretAccessKey:"foobarsecret"},endpoint:n.dockerConfig.endpoint,region:"local",retryMode:"standard"}:{retryMode:"standard",...t}),m=a.from(d);return ue=new u({maxConcurrent:n.queueConfig?.queueConcurrency??25,minTime:n.queueConfig?.queueDelay??void 0}),{batchWriteItems:(e,t)=>he(n,m,e,t),deleteItem:(e,t,o)=>(async(e,t,n,o,a={})=>{try{const{ReturnValues:r="NONE"}=a,s=new p({Key:me(o),ReturnValues:r,TableName:e.tableNamePrefix+n});return(await ue.schedule(()=>t.send(s))).Attributes}catch(t){return void(e.logger&&e.logger.error(t))}})(n,m,e,t,o),getItem:(e,t,o)=>(async(e,t,n,o,a={})=>{try{const{ConsistentRead:r=!1}=a,s=new l({ConsistentRead:r,Key:me(o),TableName:e.tableNamePrefix+n});return(await ue.schedule(()=>t.send(s))).Item}catch(t){return void(e.logger&&e.logger.error(t))}})(n,m,e,t,o),putItem:(e,t)=>(async(e,t,n,o)=>{try{const{expires:a,...r}=o,s=new c({Item:null===a?r:o,TableName:e.tableNamePrefix+n});return await ue.schedule(()=>t.send(s))&&o}catch(t){return void(e.logger&&e.logger.error(t))}})(n,m,e,t),queryTable:(e,t)=>(async(e,t,n,o={})=>{try{const{ConsistentRead:a=!1}=o,r=new i({...o,ConsistentRead:a,TableName:e.tableNamePrefix+n});return await ue.schedule(()=>t.send(r))}catch(t){return void(e.logger&&e.logger.error(t))}})(n,m,e,t),scanTable:(e,t)=>(async(e,t,n,o={})=>{try{const{ConsistentRead:a=!1}=o,r=new s({...o,ConsistentRead:a,TableName:e.tableNamePrefix+n});return await ue.schedule(()=>t.send(r))}catch(t){return void(e.logger&&e.logger.error(t))}})(n,m,e,t),updateItem:(e,t,o)=>(async(e,t,n,o,a={})=>{try{const s=new r({Key:me(o),...a,ReturnValues:"ALL_NEW",TableName:e.tableNamePrefix+n});return(await ue.schedule(async()=>t.send(s))).Attributes}catch(t){return void(e.logger&&e.logger.error(t))}})(n,m,e,t,o)}},fe=e=>{const{clientConfig:t,...n}={...pe,...e},o=new m(t);return{invokeLambda:(e,t)=>(async(e,t,n,o)=>{try{const a=new g({FunctionName:t.functionName,InvocationType:n,Payload:Buffer.from(JSON.stringify(o))}),r=await e.send(a);return t.logger&&t.logger.info(JSON.stringify(r)),!0}catch(e){return t.logger&&t.logger.error(e),!1}})(o,n,e,t)}},ve={clientConfig:pe,onlyDefault:!1,prefix:process.env.SSM_PARAM_PATH},xe=e=>{const{clientConfig:t,...n}={...ve,...e},o=new h(t);return{getSecret:(e,t="")=>(async(e,t,n,o)=>{if(t.onlyDefault)return o;try{const a=await e.send(new f({Name:`${t.prefix??""}${n}`,WithDecryption:!0}));return a?.Parameter?.Value??o}catch(e){return t.logger&&t.logger.error(e),o}})(o,n,e,t),getSecrets:(e,t=[])=>(async(e,t,n,o)=>{if(t.onlyDefault)return o;try{const a=new y({Names:n.map(e=>`${t.prefix??""}${e}`),WithDecryption:!0}),r=await e.send(a);return r?.Parameters?.map(e=>{const t=!e.Value&&e.Name?o.find(t=>t.name===e.Name):o[0];return{name:e.Name??t?.name??"",value:e.Value??t?.value??""}})??o}catch(e){return t.logger&&t.logger.error(e),o}})(o,n,e,t)}},je={clientConfig:{region:"eu-west-1"}},be=e=>{const{clientConfig:t,...n}={...je,...e},o=new v(t),a=j(e.customSMTPConfig??{SES:{SendEmailCommand:x,sesClient:o}});return{sendMail:(e,t)=>(async(e,t,n,o)=>{try{if(!n.html&&!n.text)return e.logger&&e.logger.error("The option text or html needs to be set."),!1;if(!n.to||!n.subject)return e.logger&&e.logger.error("The fields to and subject have to be set."),!1;const a=await t.sendMail(n);return o&&await o(a),!!a||(e.logger&&e.logger.error("Sending email failed!"),!1)}catch(t){return e.logger&&e.logger.error(t),!1}})(n,a,e,t)}},we=e=>{const{clientConfig:t,...n}={...pe,...e},o=new b(t);return{deleteQueueItem:(e,t)=>(async(e,t,n,o)=>{try{const t=new S({QueueUrl:n,ReceiptHandle:o});return await e.send(t)}catch(e){return void(t.logger&&t.logger.error(e))}})(o,n,e,t),getQueueItems:(e,t)=>(async(e,t,n,o=1)=>{try{const t=new N({MaxNumberOfMessages:o,QueueUrl:n});return await e.send(t)}catch(e){return void(t.logger&&t.logger.error(e))}})(o,n,e,t),getQueueUrl:e=>(async(e,t,n)=>{try{const t=new I({QueueName:n});return(await e.send(t)).QueueUrl}catch(e){return void(t.logger&&t.logger.error(e))}})(o,n,e),sendBatchMessages:(e,t)=>(async(e,t,n,o)=>{try{const t=new C({Entries:o,QueueUrl:n}),a=await e.send(t);return{failed:a.Failed,successful:a.Successful}}catch(e){return t.logger&&t.logger.error(e),{failed:void 0,successful:void 0}}})(o,n,e,t),sendMessage:(e,t,a,r,s)=>(async(e,t,n,o,a={},r,s=0)=>{try{const t=new w({...a,...r?{MessageAttributes:r}:{},DelaySeconds:s,MessageBody:o,QueueUrl:n});return(await e.send(t)).MessageId}catch(e){return void(t.logger&&t.logger.error(e))}})(o,n,e,t,a,r,s)}},Ce=e=>{const t={defaultMeta:{...e.defaultLogInformation,deploymentStage:e.deploymentStage,service:e.service},format:k.combine(k.timestamp({format:"DD-MM-YYYY HH:mm:ss"}),k.json()),level:e.level||"info"};if(e.datadogApiKey){const n={host:"http-intake.logs.datadoghq.eu",path:`/api/v2/logs?dd-api-key=${e.datadogApiKey}&ddsource=nodejs&service=${e.service}`,port:443,ssl:!0};return T({...t,transports:[new q.Http(n)]})}return T({...t,transports:[new q.Console({forceConsole:!0})]})};export{E as ClientError,ve as DEFAULT_PARAMETER_STORE_CLIENT_CONFIG,je as DEFAULT_SES_CLIENT_CONFIG,A as ServerError,le as alagarr,ye as dynamodb,fe as lambda,Ce as logger,xe as parameterStore,be as ses,we as sqs};