fjall 2.22.0 → 2.22.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/bin/fjall.bundle.js
CHANGED
|
@@ -8,7 +8,7 @@ const __fjbinDir = __fjdir(__fjfilename);
|
|
|
8
8
|
process.env.FJALL_ASSETS_DIR = process.env.FJALL_ASSETS_DIR || __fjjoin(__fjbinDir, "assets");
|
|
9
9
|
process.env.FJALL_BUNDLED = "1";
|
|
10
10
|
|
|
11
|
-
var Yst=Object.create;var tM=Object.defineProperty;var Jst=Object.getOwnPropertyDescriptor;var Xst=Object.getOwnPropertyNames;var Zst=Object.getPrototypeOf,Qst=Object.prototype.hasOwnProperty;var ut=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var b=(t,e)=>()=>(t&&(e=t(t=0)),e);var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Rt=(t,e)=>{for(var r in e)tM(t,r,{get:e[r],enumerable:!0})},Ove=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Xst(e))!Qst.call(t,a)&&a!==r&&tM(t,a,{get:()=>e[a],enumerable:!(n=Jst(e,a))||n.enumerable});return t};var Zs=(t,e,r)=>(r=t!=null?Yst(Zst(t)):{},Ove(e||!t||!t.__esModule?tM(r,"default",{value:t,enumerable:!0}):r,t)),Et=t=>Ove(tM({},"__esModule",{value:!0}),t);var Gk,L9=b(()=>{Gk={name:"@fjall/cli",version:"2.22.
|
|
11
|
+
var Yst=Object.create;var tM=Object.defineProperty;var Jst=Object.getOwnPropertyDescriptor;var Xst=Object.getOwnPropertyNames;var Zst=Object.getPrototypeOf,Qst=Object.prototype.hasOwnProperty;var ut=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var b=(t,e)=>()=>(t&&(e=t(t=0)),e);var j=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Rt=(t,e)=>{for(var r in e)tM(t,r,{get:e[r],enumerable:!0})},Ove=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Xst(e))!Qst.call(t,a)&&a!==r&&tM(t,a,{get:()=>e[a],enumerable:!(n=Jst(e,a))||n.enumerable});return t};var Zs=(t,e,r)=>(r=t!=null?Yst(Zst(t)):{},Ove(e||!t||!t.__esModule?tM(r,"default",{value:t,enumerable:!0}):r,t)),Et=t=>Ove(tM({},"__esModule",{value:!0}),t);var Gk,L9=b(()=>{Gk={name:"@fjall/cli",version:"2.22.1",description:"Fjall CLI helper",private:!0,type:"module",bin:{fjall:"dist/src/cli.js"},files:["dist/"],scripts:{clean:"rm -rf ./dist ./sourcemaps","clean:node":"rm -rf ./node_modules","copy-files":'find generators -type d -name files | while read dir; do mkdir -p "dist/$dir" && cp -R "$dir/"* "dist/$dir/"; done && cp -R src/proto ./dist/src/proto',build:"npm run clean && npx tsc && npm run copy-files && node ../scripts/minify-dist.mjs dist && chmod +x ./dist/src/cli.js",watch:"npm run build && npx tsc-watch","watch:only":'npx tsc-watch --onSuccess "npm run copy-files"',"fjall-cli":"node ./dist/src/cli.js",version:"npx tsx scripts/updateTemplateVersions.ts",format:'prettier --write "src/**/*.{ts,tsx,js,jsx,json}" "generators/**/*.{ts,tsx,js,jsx,json}"',"format:check":'prettier --check "src/**/*.{ts,tsx,js,jsx,json}" "generators/**/*.{ts,tsx,js,jsx,json}"',lint:"eslint src/ generators/","lint:fix":"eslint src/ generators/ --fix",typecheck:"tsc --noEmit","typecheck:tests":"tsc --noEmit --project tsconfig.test.json","typecheck:scripts":"tsc --noEmit --project tsconfig.scripts.json","typecheck:all":"npm run typecheck && npm run typecheck:tests && npm run typecheck:scripts",test:"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","test:integration":"vitest run --config vitest.config.integration.ts","test:integration:watch":"vitest --config vitest.config.integration.ts","test:e2e":"vitest run --config vitest.e2e.config.ts","test:all":"npm run test && npm run test:integration && npm run test:e2e","test:setup":"node scripts/setupTestFixtures.mjs","test:payload-compat":"npx tsx scripts/testPayloadCompatibility.ts","test:payload-compat:e2e":"npx tsx scripts/testPayloadCompatibility.ts --e2e"},engines:{node:">=22.0.0"},author:"",license:"SEE LICENSE IN LICENSE",devDependencies:{"@eslint/js":"^10.0.1","@playwright/test":"^1.59.1","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.2","@types/ejs":"^3.1.5","@types/js-yaml":"^4.0.9","@types/mime-types":"^3.0.1","@types/picomatch":"^4.0.3","@types/prompts":"^2.4.9","@types/proper-lockfile":"^4.1.4","@types/react":"^19.2.14","@types/tar-fs":"^2.0.4","@types/tar-stream":"^3.1.4","@typescript-eslint/eslint-plugin":"^8.59.1","@typescript-eslint/parser":"^8.59.1","@vitest/coverage-v8":"^4.1.5",eslint:"^10.2.1","eslint-plugin-fjall":"file:./eslint-rules","ink-testing-library":"^4.0.0",jsdom:"^29.1.0",prettier:"^3.8.3","react-dom":"^19.2.5","tsc-watch":"^7.2.0",tsx:"^4.21.0","typescript-eslint":"^8.59.1",vitest:"4.1.7"},dependencies:{"@aws-sdk/client-auto-scaling":"^3.1038.0","@aws-sdk/client-backup":"^3.1038.0","@aws-sdk/client-cloudformation":"^3.1038.0","@aws-sdk/client-cost-explorer":"^3.1038.0","@aws-sdk/client-ec2":"^3.1038.0","@aws-sdk/client-ecr":"^3.1038.0","@aws-sdk/client-ecs":"^3.1038.0","@aws-sdk/client-elasticache":"^3.1038.0","@aws-sdk/client-iam":"^3.1038.0","@aws-sdk/client-identitystore":"^3.1038.0","@aws-sdk/client-lambda":"^3.1038.0","@aws-sdk/client-organizations":"^3.1038.0","@aws-sdk/client-ram":"^3.1038.0","@aws-sdk/client-rds":"^3.1038.0","@aws-sdk/client-route-53":"^3.1038.0","@aws-sdk/client-s3":"^3.1038.0","@aws-sdk/client-secrets-manager":"^3.1038.0","@aws-sdk/client-ssm":"^3.1038.0","@aws-sdk/client-sso":"^3.1038.0","@aws-sdk/client-sso-admin":"^3.1038.0","@aws-sdk/client-sso-oidc":"^3.1038.0","@aws-sdk/client-sts":"^3.1038.0","@fjall/deploy-core":"^2.22.1","@fjall/generator":"^2.22.1","@fjall/util":"^2.22.1","@nx/devkit":"^23.0.0","@opennextjs/aws":"^4.0.3","@smithy/node-http-handler":"^4.6.1","@toon-format/toon":"^2.1.0","aws-cdk":"^2.1128.1",axios:"^1.15.2",chalk:"^5.6.2","cli-cursor":"^5.0.0",commander:"^15.0.0",ejs:"^6.0.1",ink:"^7.0.1","js-yaml":"^4.1.1","mime-types":"^3.0.2",open:"^11.0.0",ora:"^9.4.0",picomatch:"^4.0.4",prompts:"^2.4.2","proper-lockfile":"^4.1.2",protobufjs:"^8.0.3",react:"^19.2.5","tar-fs":"^3.1.2",typescript:"^6.0.3","update-check":"^1.5.4",zod:"^4.4.3"},gitHead:"8e075d68ec034e0b9c2256f80ac2baf25a0f5645"}});function cit(){let t=new Map;for(let[e,r]of Object.entries(Da)){for(let[n,a]of Object.entries(r))Da[n]={open:`\x1B[${a[0]}m`,close:`\x1B[${a[1]}m`},r[n]=Da[n],t.set(a[0],a[1]);Object.defineProperty(Da,e,{value:r,enumerable:!1})}return Object.defineProperty(Da,"codes",{value:t,enumerable:!1}),Da.color.close="\x1B[39m",Da.bgColor.close="\x1B[49m",Da.color.ansi=Mve(),Da.color.ansi256=Lve(),Da.color.ansi16m=Bve(),Da.bgColor.ansi=Mve(10),Da.bgColor.ansi256=Lve(10),Da.bgColor.ansi16m=Bve(10),Object.defineProperties(Da,{rgbToAnsi256:{value(e,r,n){return e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(o=>o+o).join(""));let a=Number.parseInt(n,16);return[a>>16&255,a>>8&255,a&255]},enumerable:!1},hexToAnsi256:{value:e=>Da.rgbToAnsi256(...Da.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,a;if(e>=232)r=((e-232)*10+8)/255,n=r,a=r;else{e-=16;let i=e%36;r=Math.floor(e/36)/5,n=Math.floor(i/6)/5,a=i%6/5}let o=Math.max(r,n,a)*2;if(o===0)return 30;let s=30+(Math.round(a)<<2|Math.round(n)<<1|Math.round(r));return o===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>Da.ansi256ToAnsi(Da.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Da.ansi256ToAnsi(Da.hexToAnsi256(e)),enumerable:!1}}),Da}var Mve,Lve,Bve,Da,Jsr,sit,iit,Xsr,lit,wp,jve=b(()=>{Mve=(t=0)=>e=>`\x1B[${e+t}m`,Lve=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Bve=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Da={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Jsr=Object.keys(Da.modifier),sit=Object.keys(Da.color),iit=Object.keys(Da.bgColor),Xsr=[...sit,...iit];lit=cit(),wp=lit});import B9 from"node:process";import uit from"node:os";import Uve from"node:tty";function su(t,e=globalThis.Deno?globalThis.Deno.args:B9.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),a=e.indexOf("--");return n!==-1&&(a===-1||n<a)}function pit(){if("FORCE_COLOR"in ka)return ka.FORCE_COLOR==="true"?1:ka.FORCE_COLOR==="false"?0:ka.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(ka.FORCE_COLOR,10),3)}function dit(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function mit(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let n=pit();n!==void 0&&(oM=n);let a=r?oM:n;if(a===0)return 0;if(r){if(su("color=16m")||su("color=full")||su("color=truecolor"))return 3;if(su("color=256"))return 2}if("TF_BUILD"in ka&&"AGENT_NAME"in ka)return 1;if(t&&!e&&a===void 0)return 0;let o=a||0;if(ka.TERM==="dumb")return o;if(B9.platform==="win32"){let s=uit.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in ka)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in ka)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in ka)||ka.CI_NAME==="codeship"?1:o;if("TEAMCITY_VERSION"in ka)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ka.TEAMCITY_VERSION)?1:0;if(ka.COLORTERM==="truecolor"||ka.TERM==="xterm-kitty"||ka.TERM==="xterm-ghostty"||ka.TERM==="wezterm")return 3;if("TERM_PROGRAM"in ka){let s=Number.parseInt((ka.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ka.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ka.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ka.TERM)||"COLORTERM"in ka?1:o}function zve(t,e={}){let r=mit(t,{streamIsTTY:t&&t.isTTY,...e});return dit(r)}var ka,oM,fit,Vve,Wve=b(()=>{({env:ka}=B9);su("no-color")||su("no-colors")||su("color=false")||su("color=never")?oM=0:(su("color")||su("colors")||su("color=true")||su("color=always"))&&(oM=1);fit={stdout:zve({isTTY:Uve.isatty(1)}),stderr:zve({isTTY:Uve.isatty(2)})},Vve=fit});function Gve(t,e,r){let n=t.indexOf(e);if(n===-1)return t;let a=e.length,o=0,s="";do s+=t.slice(o,n)+e+r,o=n+a,n=t.indexOf(e,o);while(n!==-1);return s+=t.slice(o),s}function qve(t,e,r,n){let a=0,o="";do{let s=t[n-1]==="\r";o+=t.slice(a,s?n-1:n)+e+(s?`\r
|
|
12
12
|
`:`
|
|
13
13
|
`)+r,a=n+1,n=t.indexOf(`
|
|
14
14
|
`,a)}while(n!==-1);return o+=t.slice(a),o}var Hve=b(()=>{});function Hk(t){return git(t)}var Kve,Yve,j9,Vx,qk,Jve,Wx,hit,git,U9,yit,vit,z9,sM,Sit,Eit,iir,J,sa=b(()=>{jve();Wve();Hve();({stdout:Kve,stderr:Yve}=Vve),j9=Symbol("GENERATOR"),Vx=Symbol("STYLER"),qk=Symbol("IS_EMPTY"),Jve=["ansi","ansi","ansi256","ansi16m"],Wx=Object.create(null),hit=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Kve?Kve.level:0;t.level=e.level===void 0?r:e.level},git=t=>{let e=(...r)=>r.join(" ");return hit(e,t),Object.setPrototypeOf(e,Hk.prototype),e};Object.setPrototypeOf(Hk.prototype,Function.prototype);for(let[t,e]of Object.entries(wp))Wx[t]={get(){let r=sM(this,z9(e.open,e.close,this[Vx]),this[qk]);return Object.defineProperty(this,t,{value:r}),r}};Wx.visible={get(){let t=sM(this,this[Vx],!0);return Object.defineProperty(this,"visible",{value:t}),t}};U9=(t,e,r,...n)=>t==="rgb"?e==="ansi16m"?wp[r].ansi16m(...n):e==="ansi256"?wp[r].ansi256(wp.rgbToAnsi256(...n)):wp[r].ansi(wp.rgbToAnsi(...n)):t==="hex"?U9("rgb",e,r,...wp.hexToRgb(...n)):wp[r][t](...n),yit=["rgb","hex","ansi256"];for(let t of yit){Wx[t]={get(){let{level:r}=this;return function(...n){let a=z9(U9(t,Jve[r],"color",...n),wp.color.close,this[Vx]);return sM(this,a,this[qk])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);Wx[e]={get(){let{level:r}=this;return function(...n){let a=z9(U9(t,Jve[r],"bgColor",...n),wp.bgColor.close,this[Vx]);return sM(this,a,this[qk])}}}}vit=Object.defineProperties(()=>{},{...Wx,level:{enumerable:!0,get(){return this[j9].level},set(t){this[j9].level=t}}}),z9=(t,e,r)=>{let n,a;return r===void 0?(n=t,a=e):(n=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:n,closeAll:a,parent:r}},sM=(t,e,r)=>{let n=(...a)=>Sit(n,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(n,vit),n[j9]=t,n[Vx]=e,n[qk]=r,n},Sit=(t,e)=>{if(t.level<=0||!e)return t[qk]?"":e;let r=t[Vx];if(r===void 0)return e;let{openAll:n,closeAll:a}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=Gve(e,r.close,r.open),r=r.parent;let o=e.indexOf(`
|
|
@@ -91,7 +91,7 @@ ${e}`,wit=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Tit=Obj
|
|
|
91
91
|
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let s of t.seen.entries()){let i=s[1];if(e===s[0]){o(s);continue}if(t.external){let l=t.external.registry.get(s[0])?.id;if(e!==s[0]&&l){o(s);continue}}if(t.metadataRegistry.get(s[0])?.id){o(s);continue}if(i.cycle){o(s);continue}if(i.count>1&&t.reused==="ref"){o(s);continue}}}function sg(t,e){let r=t.seen.get(e);if(!r)throw new Error("Unprocessed schema. This is a bug in Zod.");let n=i=>{let c=t.seen.get(i);if(c.ref===null)return;let l=c.def??c.schema,u={...l},p=c.ref;if(c.ref=null,p){n(p);let m=t.seen.get(p),f=m.schema;if(f.$ref&&(t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0")?(l.allOf=l.allOf??[],l.allOf.push(f)):Object.assign(l,f),Object.assign(l,u),i._zod.parent===p)for(let y in l)y==="$ref"||y==="allOf"||y in u||delete l[y];if(f.$ref&&m.def)for(let y in l)y==="$ref"||y==="allOf"||y in m.def&&JSON.stringify(l[y])===JSON.stringify(m.def[y])&&delete l[y]}let d=i._zod.parent;if(d&&d!==p){n(d);let m=t.seen.get(d);if(m?.schema.$ref&&(l.$ref=m.schema.$ref,m.def))for(let f in l)f==="$ref"||f==="allOf"||f in m.def&&JSON.stringify(l[f])===JSON.stringify(m.def[f])&&delete l[f]}t.override({zodSchema:i,jsonSchema:l,path:c.path??[]})};for(let i of[...t.seen.entries()].reverse())n(i[0]);let a={};if(t.target==="draft-2020-12"?a.$schema="https://json-schema.org/draft/2020-12/schema":t.target==="draft-07"?a.$schema="http://json-schema.org/draft-07/schema#":t.target==="draft-04"?a.$schema="http://json-schema.org/draft-04/schema#":t.target,t.external?.uri){let i=t.external.registry.get(e)?.id;if(!i)throw new Error("Schema is missing an `id` property");a.$id=t.external.uri(i)}Object.assign(a,r.def??r.schema);let o=t.metadataRegistry.get(e)?.id;o!==void 0&&a.id===o&&delete a.id;let s=t.external?.defs??{};for(let i of t.seen.entries()){let c=i[1];c.def&&c.defId&&(c.def.id===c.defId&&delete c.def.id,s[c.defId]=c.def)}t.external||Object.keys(s).length>0&&(t.target==="draft-2020-12"?a.$defs=s:a.definitions=s);try{let i=JSON.parse(JSON.stringify(a));return Object.defineProperty(i,"~standard",{value:{...e["~standard"],jsonSchema:{input:SA(e,"input",t.processors),output:SA(e,"output",t.processors)}},enumerable:!1,writable:!1}),i}catch{throw new Error("Error converting schema to JSON.")}}function _i(t,e){let r=e??{seen:new Set};if(r.seen.has(t))return!1;r.seen.add(t);let n=t._zod.def;if(n.type==="transform")return!0;if(n.type==="array")return _i(n.element,r);if(n.type==="set")return _i(n.valueType,r);if(n.type==="lazy")return _i(n.getter(),r);if(n.type==="promise"||n.type==="optional"||n.type==="nonoptional"||n.type==="nullable"||n.type==="readonly"||n.type==="default"||n.type==="prefault")return _i(n.innerType,r);if(n.type==="intersection")return _i(n.left,r)||_i(n.right,r);if(n.type==="record"||n.type==="map")return _i(n.keyType,r)||_i(n.valueType,r);if(n.type==="pipe")return t._zod.traits.has("$ZodCodec")?!0:_i(n.in,r)||_i(n.out,r);if(n.type==="object"){for(let a in n.shape)if(_i(n.shape[a],r))return!0;return!1}if(n.type==="union"){for(let a of n.options)if(_i(a,r))return!0;return!1}if(n.type==="tuple"){for(let a of n.items)if(_i(a,r))return!0;return!!(n.rest&&_i(n.rest,r))}return!1}var _K,SA,DI=b(()=>{CI();_K=(t,e={})=>r=>{let n=ag({...r,processors:e});return Cn(t,n),og(n,t),sg(n,t)},SA=(t,e,r={})=>n=>{let{libraryOptions:a,target:o}=n??{},s=ag({...a??{},target:o,io:e,processors:r});return Cn(t,s),og(s,t),sg(s,t)}});function $L(t,e){if("_idmap"in t){let n=t,a=ag({...e,processors:RL}),o={};for(let c of n._idmap.entries()){let[l,u]=c;Cn(u,a)}let s={},i={registry:n,uri:e?.uri,defs:o};a.external=i;for(let c of n._idmap.entries()){let[l,u]=c;og(a,u),s[l]=sg(a,u)}if(Object.keys(o).length>0){let c=a.target==="draft-2020-12"?"$defs":"definitions";s.__shared={[c]:o}}return{schemas:s}}let r=ag({...e,processors:RL});return Cn(t,r),og(r,t),sg(r,t)}var ept,RK,OK,NK,$K,FK,MK,LK,BK,jK,UK,zK,VK,WK,GK,qK,HK,KK,YK,JK,XK,ZK,QK,eY,tY,rY,OL,nY,aY,oY,sY,iY,cY,lY,uY,pY,dY,mY,NL,fY,RL,kI=b(()=>{DI();pt();ept={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},RK=(t,e,r,n)=>{let a=r;a.type="string";let{minimum:o,maximum:s,format:i,patterns:c,contentEncoding:l}=t._zod.bag;if(typeof o=="number"&&(a.minLength=o),typeof s=="number"&&(a.maxLength=s),i&&(a.format=ept[i]??i,a.format===""&&delete a.format,i==="time"&&delete a.format),l&&(a.contentEncoding=l),c&&c.size>0){let u=[...c];u.length===1?a.pattern=u[0].source:u.length>1&&(a.allOf=[...u.map(p=>({...e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"?{type:"string"}:{},pattern:p.source}))])}},OK=(t,e,r,n)=>{let a=r,{minimum:o,maximum:s,format:i,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=t._zod.bag;typeof i=="string"&&i.includes("int")?a.type="integer":a.type="number";let p=typeof u=="number"&&u>=(o??Number.NEGATIVE_INFINITY),d=typeof l=="number"&&l<=(s??Number.POSITIVE_INFINITY),m=e.target==="draft-04"||e.target==="openapi-3.0";p?m?(a.minimum=u,a.exclusiveMinimum=!0):a.exclusiveMinimum=u:typeof o=="number"&&(a.minimum=o),d?m?(a.maximum=l,a.exclusiveMaximum=!0):a.exclusiveMaximum=l:typeof s=="number"&&(a.maximum=s),typeof c=="number"&&(a.multipleOf=c)},NK=(t,e,r,n)=>{r.type="boolean"},$K=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},FK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},MK=(t,e,r,n)=>{e.target==="openapi-3.0"?(r.type="string",r.nullable=!0,r.enum=[null]):r.type="null"},LK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},BK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},jK=(t,e,r,n)=>{r.not={}},UK=(t,e,r,n)=>{},zK=(t,e,r,n)=>{},VK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},WK=(t,e,r,n)=>{let a=t._zod.def,o=cI(a.entries);o.every(s=>typeof s=="number")&&(r.type="number"),o.every(s=>typeof s=="string")&&(r.type="string"),r.enum=o},GK=(t,e,r,n)=>{let a=t._zod.def,o=[];for(let s of a.values)if(s===void 0){if(e.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof s=="bigint"){if(e.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");o.push(Number(s))}else o.push(s);if(o.length!==0)if(o.length===1){let s=o[0];r.type=s===null?"null":typeof s,e.target==="draft-04"||e.target==="openapi-3.0"?r.enum=[s]:r.const=s}else o.every(s=>typeof s=="number")&&(r.type="number"),o.every(s=>typeof s=="string")&&(r.type="string"),o.every(s=>typeof s=="boolean")&&(r.type="boolean"),o.every(s=>s===null)&&(r.type="null"),r.enum=o},qK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},HK=(t,e,r,n)=>{let a=r,o=t._zod.pattern;if(!o)throw new Error("Pattern not found in template literal");a.type="string",a.pattern=o.source},KK=(t,e,r,n)=>{let a=r,o={type:"string",format:"binary",contentEncoding:"binary"},{minimum:s,maximum:i,mime:c}=t._zod.bag;s!==void 0&&(o.minLength=s),i!==void 0&&(o.maxLength=i),c?c.length===1?(o.contentMediaType=c[0],Object.assign(a,o)):(Object.assign(a,o),a.anyOf=c.map(l=>({contentMediaType:l}))):Object.assign(a,o)},YK=(t,e,r,n)=>{r.type="boolean"},JK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},XK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},ZK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},QK=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},eY=(t,e,r,n)=>{if(e.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},tY=(t,e,r,n)=>{let a=r,o=t._zod.def,{minimum:s,maximum:i}=t._zod.bag;typeof s=="number"&&(a.minItems=s),typeof i=="number"&&(a.maxItems=i),a.type="array",a.items=Cn(o.element,e,{...n,path:[...n.path,"items"]})},rY=(t,e,r,n)=>{let a=r,o=t._zod.def;a.type="object",a.properties={};let s=o.shape;for(let l in s)a.properties[l]=Cn(s[l],e,{...n,path:[...n.path,"properties",l]});let i=new Set(Object.keys(s)),c=new Set([...i].filter(l=>{let u=o.shape[l]._zod;return e.io==="input"?u.optin===void 0:u.optout===void 0}));c.size>0&&(a.required=Array.from(c)),o.catchall?._zod.def.type==="never"?a.additionalProperties=!1:o.catchall?o.catchall&&(a.additionalProperties=Cn(o.catchall,e,{...n,path:[...n.path,"additionalProperties"]})):e.io==="output"&&(a.additionalProperties=!1)},OL=(t,e,r,n)=>{let a=t._zod.def,o=a.inclusive===!1,s=a.options.map((i,c)=>Cn(i,e,{...n,path:[...n.path,o?"oneOf":"anyOf",c]}));o?r.oneOf=s:r.anyOf=s},nY=(t,e,r,n)=>{let a=t._zod.def,o=Cn(a.left,e,{...n,path:[...n.path,"allOf",0]}),s=Cn(a.right,e,{...n,path:[...n.path,"allOf",1]}),i=l=>"allOf"in l&&Object.keys(l).length===1,c=[...i(o)?o.allOf:[o],...i(s)?s.allOf:[s]];r.allOf=c},aY=(t,e,r,n)=>{let a=r,o=t._zod.def;a.type="array";let s=e.target==="draft-2020-12"?"prefixItems":"items",i=e.target==="draft-2020-12"||e.target==="openapi-3.0"?"items":"additionalItems",c=o.items.map((d,m)=>Cn(d,e,{...n,path:[...n.path,s,m]})),l=o.rest?Cn(o.rest,e,{...n,path:[...n.path,i,...e.target==="openapi-3.0"?[o.items.length]:[]]}):null;e.target==="draft-2020-12"?(a.prefixItems=c,l&&(a.items=l)):e.target==="openapi-3.0"?(a.items={anyOf:c},l&&a.items.anyOf.push(l),a.minItems=c.length,l||(a.maxItems=c.length)):(a.items=c,l&&(a.additionalItems=l));let{minimum:u,maximum:p}=t._zod.bag;typeof u=="number"&&(a.minItems=u),typeof p=="number"&&(a.maxItems=p)},oY=(t,e,r,n)=>{let a=r,o=t._zod.def;a.type="object";let s=o.keyType,c=s._zod.bag?.patterns;if(o.mode==="loose"&&c&&c.size>0){let u=Cn(o.valueType,e,{...n,path:[...n.path,"patternProperties","*"]});a.patternProperties={};for(let p of c)a.patternProperties[p.source]=u}else(e.target==="draft-07"||e.target==="draft-2020-12")&&(a.propertyNames=Cn(o.keyType,e,{...n,path:[...n.path,"propertyNames"]})),a.additionalProperties=Cn(o.valueType,e,{...n,path:[...n.path,"additionalProperties"]});let l=s._zod.values;if(l){let u=[...l].filter(p=>typeof p=="string"||typeof p=="number");u.length>0&&(a.required=u)}},sY=(t,e,r,n)=>{let a=t._zod.def,o=Cn(a.innerType,e,n),s=e.seen.get(t);e.target==="openapi-3.0"?(s.ref=a.innerType,r.nullable=!0):r.anyOf=[o,{type:"null"}]},iY=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType},cY=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType,r.default=JSON.parse(JSON.stringify(a.defaultValue))},lY=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType,e.io==="input"&&(r._prefault=JSON.parse(JSON.stringify(a.defaultValue)))},uY=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType;let s;try{s=a.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}r.default=s},pY=(t,e,r,n)=>{let a=t._zod.def,o=a.in._zod.traits.has("$ZodTransform"),s=e.io==="input"?o?a.out:a.in:a.out;Cn(s,e,n);let i=e.seen.get(t);i.ref=s},dY=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType,r.readOnly=!0},mY=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType},NL=(t,e,r,n)=>{let a=t._zod.def;Cn(a.innerType,e,n);let o=e.seen.get(t);o.ref=a.innerType},fY=(t,e,r,n)=>{let a=t._zod.innerType;Cn(a,e,n);let o=e.seen.get(t);o.ref=a},RL={string:RK,number:OK,boolean:NK,bigint:$K,symbol:FK,null:MK,undefined:LK,void:BK,never:jK,any:UK,unknown:zK,date:VK,enum:WK,literal:GK,nan:qK,template_literal:HK,file:KK,success:YK,custom:JK,function:XK,transform:ZK,map:QK,set:eY,array:tY,object:rY,union:OL,intersection:nY,tuple:aY,record:oY,nullable:sY,nonoptional:iY,default:cY,prefault:lY,catch:uY,pipe:pY,readonly:dY,promise:mY,optional:NL,lazy:fY}});var FL,$xe=b(()=>{kI();DI();FL=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(e){this.ctx.counter=e}get seen(){return this.ctx.seen}constructor(e){let r=e?.target??"draft-2020-12";r==="draft-4"&&(r="draft-04"),r==="draft-7"&&(r="draft-07"),this.ctx=ag({processors:RL,target:r,...e?.metadata&&{metadata:e.metadata},...e?.unrepresentable&&{unrepresentable:e.unrepresentable},...e?.override&&{override:e.override},...e?.io&&{io:e.io}})}process(e,r={path:[],schemaPath:[]}){return Cn(e,this.ctx,r)}emit(e,r){r&&(r.cycles&&(this.ctx.cycles=r.cycles),r.reused&&(this.ctx.reused=r.reused),r.external&&(this.ctx.external=r.external)),og(this.ctx,e);let n=sg(this.ctx,e),{"~standard":a,...o}=n;return o}}});var Fxe={};var Mxe=b(()=>{});var uf={};Rt(uf,{$ZodAny:()=>i7,$ZodArray:()=>d7,$ZodAsyncError:()=>kp,$ZodBase64:()=>XH,$ZodBase64URL:()=>ZH,$ZodBigInt:()=>ZM,$ZodBigIntFormat:()=>n7,$ZodBoolean:()=>SI,$ZodCIDRv4:()=>KH,$ZodCIDRv6:()=>YH,$ZodCUID:()=>FH,$ZodCUID2:()=>MH,$ZodCatch:()=>P7,$ZodCheck:()=>Jn,$ZodCheckBigIntFormat:()=>uH,$ZodCheckEndsWith:()=>xH,$ZodCheckGreaterThan:()=>GM,$ZodCheckIncludes:()=>EH,$ZodCheckLengthEquals:()=>gH,$ZodCheckLessThan:()=>WM,$ZodCheckLowerCase:()=>vH,$ZodCheckMaxLength:()=>fH,$ZodCheckMaxSize:()=>pH,$ZodCheckMimeType:()=>CH,$ZodCheckMinLength:()=>hH,$ZodCheckMinSize:()=>dH,$ZodCheckMultipleOf:()=>cH,$ZodCheckNumberFormat:()=>lH,$ZodCheckOverwrite:()=>wH,$ZodCheckProperty:()=>AH,$ZodCheckRegex:()=>yH,$ZodCheckSizeEquals:()=>mH,$ZodCheckStartsWith:()=>bH,$ZodCheckStringFormat:()=>aA,$ZodCheckUpperCase:()=>SH,$ZodCodec:()=>bI,$ZodCustom:()=>L7,$ZodCustomStringFormat:()=>t7,$ZodDate:()=>p7,$ZodDefault:()=>T7,$ZodDiscriminatedUnion:()=>h7,$ZodE164:()=>QH,$ZodEmail:()=>RH,$ZodEmoji:()=>NH,$ZodEncodeError:()=>Xh,$ZodEnum:()=>E7,$ZodError:()=>mI,$ZodExactOptional:()=>C7,$ZodFile:()=>x7,$ZodFunction:()=>$7,$ZodGUID:()=>PH,$ZodIPv4:()=>GH,$ZodIPv6:()=>qH,$ZodISODate:()=>zH,$ZodISODateTime:()=>UH,$ZodISODuration:()=>WH,$ZodISOTime:()=>VH,$ZodIntersection:()=>g7,$ZodJWT:()=>e7,$ZodKSUID:()=>jH,$ZodLazy:()=>M7,$ZodLiteral:()=>b7,$ZodMAC:()=>HH,$ZodMap:()=>v7,$ZodNaN:()=>_7,$ZodNanoID:()=>$H,$ZodNever:()=>l7,$ZodNonOptional:()=>k7,$ZodNull:()=>s7,$ZodNullable:()=>w7,$ZodNumber:()=>XM,$ZodNumberFormat:()=>r7,$ZodObject:()=>MEe,$ZodObjectJIT:()=>m7,$ZodOptional:()=>eL,$ZodPipe:()=>tL,$ZodPrefault:()=>D7,$ZodPreprocess:()=>R7,$ZodPromise:()=>F7,$ZodReadonly:()=>O7,$ZodRealError:()=>Ic,$ZodRecord:()=>y7,$ZodRegistry:()=>oL,$ZodSet:()=>S7,$ZodString:()=>zv,$ZodStringFormat:()=>Un,$ZodSuccess:()=>I7,$ZodSymbol:()=>a7,$ZodTemplateLiteral:()=>N7,$ZodTransform:()=>A7,$ZodTuple:()=>QM,$ZodType:()=>Yt,$ZodULID:()=>LH,$ZodURL:()=>OH,$ZodUUID:()=>_H,$ZodUndefined:()=>o7,$ZodUnion:()=>EI,$ZodUnknown:()=>c7,$ZodVoid:()=>u7,$ZodXID:()=>BH,$ZodXor:()=>f7,$brand:()=>hq,$constructor:()=>ee,$input:()=>G7,$output:()=>W7,Doc:()=>vI,JSONSchema:()=>Fxe,JSONSchemaGenerator:()=>FL,NEVER:()=>fq,TimePrecision:()=>Y7,_any:()=>gK,_array:()=>AK,_base64:()=>AL,_base64url:()=>CL,_bigint:()=>lK,_boolean:()=>iK,_catch:()=>Kut,_check:()=>Oxe,_cidrv4:()=>bL,_cidrv6:()=>xL,_coercedBigint:()=>uK,_coercedBoolean:()=>cK,_coercedDate:()=>bK,_coercedNumber:()=>tK,_coercedString:()=>H7,_cuid:()=>fL,_cuid2:()=>hL,_custom:()=>wK,_date:()=>EK,_decode:()=>NM,_decodeAsync:()=>FM,_default:()=>Gut,_discriminatedUnion:()=>Out,_e164:()=>wL,_email:()=>iL,_emoji:()=>dL,_encode:()=>OM,_encodeAsync:()=>$M,_endsWith:()=>pA,_enum:()=>But,_file:()=>CK,_float32:()=>nK,_float64:()=>aK,_gt:()=>Pd,_gte:()=>Pi,_guid:()=>wI,_includes:()=>lA,_int:()=>rK,_int32:()=>oK,_int64:()=>pK,_intersection:()=>Nut,_ipv4:()=>SL,_ipv6:()=>EL,_isoDate:()=>X7,_isoDateTime:()=>J7,_isoDuration:()=>Q7,_isoTime:()=>Z7,_jwt:()=>TL,_ksuid:()=>vL,_lazy:()=>Zut,_length:()=>Gv,_literal:()=>Uut,_lowercase:()=>iA,_lt:()=>Id,_lte:()=>yl,_mac:()=>K7,_map:()=>Mut,_max:()=>yl,_maxLength:()=>Wv,_maxSize:()=>ng,_mime:()=>dA,_min:()=>Pi,_minLength:()=>lf,_minSize:()=>_d,_multipleOf:()=>rg,_nan:()=>xK,_nanoid:()=>mL,_nativeEnum:()=>jut,_negative:()=>kL,_never:()=>vK,_nonnegative:()=>PL,_nonoptional:()=>qut,_nonpositive:()=>IL,_normalize:()=>mA,_null:()=>hK,_nullable:()=>Wut,_number:()=>eK,_optional:()=>Vut,_overwrite:()=>Ip,_parse:()=>eA,_parseAsync:()=>tA,_pipe:()=>Yut,_positive:()=>DL,_promise:()=>Qut,_property:()=>_L,_readonly:()=>Jut,_record:()=>Fut,_refine:()=>TK,_regex:()=>sA,_safeDecode:()=>LM,_safeDecodeAsync:()=>jM,_safeEncode:()=>MM,_safeEncodeAsync:()=>BM,_safeParse:()=>rA,_safeParseAsync:()=>nA,_set:()=>Lut,_size:()=>Vv,_slugify:()=>yA,_startsWith:()=>uA,_string:()=>q7,_stringFormat:()=>vA,_stringbool:()=>PK,_success:()=>Hut,_superRefine:()=>DK,_symbol:()=>mK,_templateLiteral:()=>Xut,_toLowerCase:()=>hA,_toUpperCase:()=>gA,_transform:()=>zut,_trim:()=>fA,_tuple:()=>$ut,_uint32:()=>sK,_uint64:()=>dK,_ulid:()=>gL,_undefined:()=>fK,_union:()=>_ut,_unknown:()=>yK,_uppercase:()=>cA,_url:()=>TI,_uuid:()=>cL,_uuidv4:()=>lL,_uuidv6:()=>uL,_uuidv7:()=>pL,_void:()=>SK,_xid:()=>yL,_xor:()=>Rut,clone:()=>ki,config:()=>eo,createStandardJSONSchemaMethod:()=>SA,createToJSONSchemaMethod:()=>_K,decode:()=>Qct,decodeAsync:()=>tlt,describe:()=>kK,encode:()=>Zct,encodeAsync:()=>elt,extractDefs:()=>og,finalize:()=>sg,flattenError:()=>fI,formatError:()=>hI,globalConfig:()=>Lv,globalRegistry:()=>Is,initializeContext:()=>ag,isValidBase64:()=>JH,isValidBase64URL:()=>OEe,isValidJWT:()=>NEe,locales:()=>AI,meta:()=>IK,parse:()=>_M,parseAsync:()=>RM,prettifyError:()=>kq,process:()=>Cn,regexes:()=>gl,registry:()=>sL,safeDecode:()=>nlt,safeDecodeAsync:()=>olt,safeEncode:()=>rlt,safeEncodeAsync:()=>alt,safeParse:()=>Pq,safeParseAsync:()=>_q,toDotPath:()=>dEe,toJSONSchema:()=>$L,treeifyError:()=>Dq,util:()=>_e,version:()=>DH});var vl=b(()=>{Bv();Rq();Iq();B7();qM();kH();pt();VM();V7();CI();TH();Nxe();DI();kI();$xe();Mxe()});var ML={};Rt(ML,{endsWith:()=>pA,gt:()=>Pd,gte:()=>Pi,includes:()=>lA,length:()=>Gv,lowercase:()=>iA,lt:()=>Id,lte:()=>yl,maxLength:()=>Wv,maxSize:()=>ng,mime:()=>dA,minLength:()=>lf,minSize:()=>_d,multipleOf:()=>rg,negative:()=>kL,nonnegative:()=>PL,nonpositive:()=>IL,normalize:()=>mA,overwrite:()=>Ip,positive:()=>DL,property:()=>_L,regex:()=>sA,size:()=>Vv,slugify:()=>yA,startsWith:()=>uA,toLowerCase:()=>hA,toUpperCase:()=>gA,trim:()=>fA,uppercase:()=>cA});var LL=b(()=>{vl()});var EA={};Rt(EA,{ZodISODate:()=>jL,ZodISODateTime:()=>BL,ZodISODuration:()=>zL,ZodISOTime:()=>UL,date:()=>gY,datetime:()=>hY,duration:()=>vY,time:()=>yY});function hY(t){return J7(BL,t)}function gY(t){return X7(jL,t)}function yY(t){return Z7(UL,t)}function vY(t){return Q7(zL,t)}var BL,jL,UL,zL,II=b(()=>{vl();_I();BL=ee("ZodISODateTime",(t,e)=>{UH.init(t,e),zn.init(t,e)});jL=ee("ZodISODate",(t,e)=>{zH.init(t,e),zn.init(t,e)});UL=ee("ZodISOTime",(t,e)=>{VH.init(t,e),zn.init(t,e)});zL=ee("ZodISODuration",(t,e)=>{WH.init(t,e),zn.init(t,e)})});var Lxe,VL,Pc,SY=b(()=>{vl();vl();pt();Lxe=(t,e)=>{mI.init(t,e),t.name="ZodError",Object.defineProperties(t,{format:{value:r=>hI(t,r)},flatten:{value:r=>fI(t,r)},addIssue:{value:r=>{t.issues.push(r),t.message=JSON.stringify(t.issues,Xx,2)}},addIssues:{value:r=>{t.issues.push(...r),t.message=JSON.stringify(t.issues,Xx,2)}},isEmpty:{get(){return t.issues.length===0}}})},VL=ee("ZodError",Lxe),Pc=ee("ZodError",Lxe,{Parent:Error})});var EY,bY,xY,AY,CY,wY,TY,DY,kY,IY,PY,_Y,RY=b(()=>{vl();SY();EY=eA(Pc),bY=tA(Pc),xY=rA(Pc),AY=nA(Pc),CY=OM(Pc),wY=NM(Pc),TY=$M(Pc),DY=FM(Pc),kY=MM(Pc),IY=LM(Pc),PY=BM(Pc),_Y=jM(Pc)});var PI={};Rt(PI,{ZodAny:()=>jY,ZodArray:()=>WY,ZodBase64:()=>o2,ZodBase64URL:()=>s2,ZodBigInt:()=>DA,ZodBigIntFormat:()=>l2,ZodBoolean:()=>TA,ZodCIDRv4:()=>n2,ZodCIDRv6:()=>a2,ZodCUID:()=>JL,ZodCUID2:()=>XL,ZodCatch:()=>dJ,ZodCodec:()=>VI,ZodCustom:()=>WI,ZodCustomStringFormat:()=>CA,ZodDate:()=>LI,ZodDefault:()=>sJ,ZodDiscriminatedUnion:()=>qY,ZodE164:()=>i2,ZodEmail:()=>HL,ZodEmoji:()=>KL,ZodEnum:()=>xA,ZodExactOptional:()=>nJ,ZodFile:()=>tJ,ZodFunction:()=>xJ,ZodGUID:()=>OI,ZodIPv4:()=>t2,ZodIPv6:()=>r2,ZodIntersection:()=>HY,ZodJWT:()=>c2,ZodKSUID:()=>e2,ZodLazy:()=>SJ,ZodLiteral:()=>eJ,ZodMAC:()=>OY,ZodMap:()=>ZY,ZodNaN:()=>fJ,ZodNanoID:()=>YL,ZodNever:()=>zY,ZodNonOptional:()=>h2,ZodNull:()=>LY,ZodNullable:()=>oJ,ZodNumber:()=>wA,ZodNumberFormat:()=>Hv,ZodObject:()=>jI,ZodOptional:()=>f2,ZodPipe:()=>zI,ZodPrefault:()=>cJ,ZodPreprocess:()=>hJ,ZodPromise:()=>bJ,ZodReadonly:()=>gJ,ZodRecord:()=>bA,ZodSet:()=>QY,ZodString:()=>AA,ZodStringFormat:()=>zn,ZodSuccess:()=>pJ,ZodSymbol:()=>FY,ZodTemplateLiteral:()=>vJ,ZodTransform:()=>rJ,ZodTuple:()=>YY,ZodType:()=>cr,ZodULID:()=>ZL,ZodURL:()=>MI,ZodUUID:()=>Rd,ZodUndefined:()=>MY,ZodUnion:()=>UI,ZodUnknown:()=>UY,ZodVoid:()=>VY,ZodXID:()=>QL,ZodXor:()=>GY,_ZodString:()=>qL,_default:()=>iJ,_function:()=>qAe,any:()=>AAe,array:()=>BI,base64:()=>sAe,base64url:()=>iAe,bigint:()=>vAe,boolean:()=>$Y,catch:()=>mJ,check:()=>HAe,cidrv4:()=>aAe,cidrv6:()=>oAe,codec:()=>zAe,cuid:()=>Jxe,cuid2:()=>Xxe,custom:()=>KAe,date:()=>wAe,describe:()=>YAe,discriminatedUnion:()=>_Ae,e164:()=>cAe,email:()=>jxe,emoji:()=>Kxe,enum:()=>d2,exactOptional:()=>aJ,file:()=>LAe,float32:()=>fAe,float64:()=>hAe,function:()=>qAe,guid:()=>Uxe,hash:()=>mAe,hex:()=>dAe,hostname:()=>pAe,httpUrl:()=>Hxe,instanceof:()=>XAe,int:()=>WL,int32:()=>gAe,int64:()=>SAe,intersection:()=>KY,invertCodec:()=>VAe,ipv4:()=>tAe,ipv6:()=>nAe,json:()=>QAe,jwt:()=>lAe,keyof:()=>TAe,ksuid:()=>eAe,lazy:()=>EJ,literal:()=>MAe,looseObject:()=>IAe,looseRecord:()=>OAe,mac:()=>rAe,map:()=>NAe,meta:()=>JAe,nan:()=>UAe,nanoid:()=>Yxe,nativeEnum:()=>FAe,never:()=>u2,nonoptional:()=>uJ,null:()=>BY,nullable:()=>$I,nullish:()=>BAe,number:()=>NY,object:()=>DAe,optional:()=>NI,partialRecord:()=>RAe,pipe:()=>GL,prefault:()=>lJ,preprocess:()=>e0e,promise:()=>GAe,readonly:()=>yJ,record:()=>XY,refine:()=>AJ,set:()=>$Ae,strictObject:()=>kAe,string:()=>RI,stringFormat:()=>uAe,stringbool:()=>ZAe,success:()=>jAe,superRefine:()=>CJ,symbol:()=>bAe,templateLiteral:()=>WAe,transform:()=>m2,tuple:()=>JY,uint32:()=>yAe,uint64:()=>EAe,ulid:()=>Zxe,undefined:()=>xAe,union:()=>p2,unknown:()=>qv,url:()=>qxe,uuid:()=>zxe,uuidv4:()=>Vxe,uuidv6:()=>Wxe,uuidv7:()=>Gxe,void:()=>CAe,xid:()=>Qxe,xor:()=>PAe});function FI(t,e,r){let n=Object.getPrototypeOf(t),a=Bxe.get(n);if(a||(a=new Set,Bxe.set(n,a)),!a.has(e)){a.add(e);for(let o in r){let s=r[o];Object.defineProperty(n,o,{configurable:!0,enumerable:!1,get(){let i=s.bind(this);return Object.defineProperty(this,o,{configurable:!0,writable:!0,enumerable:!0,value:i}),i},set(i){Object.defineProperty(this,o,{configurable:!0,writable:!0,enumerable:!0,value:i})}})}}}function RI(t){return q7(AA,t)}function jxe(t){return iL(HL,t)}function Uxe(t){return wI(OI,t)}function zxe(t){return cL(Rd,t)}function Vxe(t){return lL(Rd,t)}function Wxe(t){return uL(Rd,t)}function Gxe(t){return pL(Rd,t)}function qxe(t){return TI(MI,t)}function Hxe(t){return TI(MI,{protocol:gl.httpProtocol,hostname:gl.domain,..._e.normalizeParams(t)})}function Kxe(t){return dL(KL,t)}function Yxe(t){return mL(YL,t)}function Jxe(t){return fL(JL,t)}function Xxe(t){return hL(XL,t)}function Zxe(t){return gL(ZL,t)}function Qxe(t){return yL(QL,t)}function eAe(t){return vL(e2,t)}function tAe(t){return SL(t2,t)}function rAe(t){return K7(OY,t)}function nAe(t){return EL(r2,t)}function aAe(t){return bL(n2,t)}function oAe(t){return xL(a2,t)}function sAe(t){return AL(o2,t)}function iAe(t){return CL(s2,t)}function cAe(t){return wL(i2,t)}function lAe(t){return TL(c2,t)}function uAe(t,e,r={}){return vA(CA,t,e,r)}function pAe(t){return vA(CA,"hostname",gl.hostname,t)}function dAe(t){return vA(CA,"hex",gl.hex,t)}function mAe(t,e){let r=e?.enc??"hex",n=`${t}_${r}`,a=gl[n];if(!a)throw new Error(`Unrecognized hash format: ${n}`);return vA(CA,n,a,e)}function NY(t){return eK(wA,t)}function WL(t){return rK(Hv,t)}function fAe(t){return nK(Hv,t)}function hAe(t){return aK(Hv,t)}function gAe(t){return oK(Hv,t)}function yAe(t){return sK(Hv,t)}function $Y(t){return iK(TA,t)}function vAe(t){return lK(DA,t)}function SAe(t){return pK(l2,t)}function EAe(t){return dK(l2,t)}function bAe(t){return mK(FY,t)}function xAe(t){return fK(MY,t)}function BY(t){return hK(LY,t)}function AAe(){return gK(jY)}function qv(){return yK(UY)}function u2(t){return vK(zY,t)}function CAe(t){return SK(VY,t)}function wAe(t){return EK(LI,t)}function BI(t,e){return AK(WY,t,e)}function TAe(t){let e=t._zod.def.shape;return d2(Object.keys(e))}function DAe(t,e){let r={type:"object",shape:t??{},..._e.normalizeParams(e)};return new jI(r)}function kAe(t,e){return new jI({type:"object",shape:t,catchall:u2(),..._e.normalizeParams(e)})}function IAe(t,e){return new jI({type:"object",shape:t,catchall:qv(),..._e.normalizeParams(e)})}function p2(t,e){return new UI({type:"union",options:t,..._e.normalizeParams(e)})}function PAe(t,e){return new GY({type:"union",options:t,inclusive:!1,..._e.normalizeParams(e)})}function _Ae(t,e,r){return new qY({type:"union",options:e,discriminator:t,..._e.normalizeParams(r)})}function KY(t,e){return new HY({type:"intersection",left:t,right:e})}function JY(t,e,r){let n=e instanceof Yt,a=n?r:e,o=n?e:null;return new YY({type:"tuple",items:t,rest:o,..._e.normalizeParams(a)})}function XY(t,e,r){return!e||!e._zod?new bA({type:"record",keyType:RI(),valueType:t,..._e.normalizeParams(e)}):new bA({type:"record",keyType:t,valueType:e,..._e.normalizeParams(r)})}function RAe(t,e,r){let n=ki(t);return n._zod.values=void 0,new bA({type:"record",keyType:n,valueType:e,..._e.normalizeParams(r)})}function OAe(t,e,r){return new bA({type:"record",keyType:t,valueType:e,mode:"loose",..._e.normalizeParams(r)})}function NAe(t,e,r){return new ZY({type:"map",keyType:t,valueType:e,..._e.normalizeParams(r)})}function $Ae(t,e){return new QY({type:"set",valueType:t,..._e.normalizeParams(e)})}function d2(t,e){let r=Array.isArray(t)?Object.fromEntries(t.map(n=>[n,n])):t;return new xA({type:"enum",entries:r,..._e.normalizeParams(e)})}function FAe(t,e){return new xA({type:"enum",entries:t,..._e.normalizeParams(e)})}function MAe(t,e){return new eJ({type:"literal",values:Array.isArray(t)?t:[t],..._e.normalizeParams(e)})}function LAe(t){return CK(tJ,t)}function m2(t){return new rJ({type:"transform",transform:t})}function NI(t){return new f2({type:"optional",innerType:t})}function aJ(t){return new nJ({type:"optional",innerType:t})}function $I(t){return new oJ({type:"nullable",innerType:t})}function BAe(t){return NI($I(t))}function iJ(t,e){return new sJ({type:"default",innerType:t,get defaultValue(){return typeof e=="function"?e():_e.shallowClone(e)}})}function lJ(t,e){return new cJ({type:"prefault",innerType:t,get defaultValue(){return typeof e=="function"?e():_e.shallowClone(e)}})}function uJ(t,e){return new h2({type:"nonoptional",innerType:t,..._e.normalizeParams(e)})}function jAe(t){return new pJ({type:"success",innerType:t})}function mJ(t,e){return new dJ({type:"catch",innerType:t,catchValue:typeof e=="function"?e:()=>e})}function UAe(t){return xK(fJ,t)}function GL(t,e){return new zI({type:"pipe",in:t,out:e})}function zAe(t,e,r){return new VI({type:"pipe",in:t,out:e,transform:r.decode,reverseTransform:r.encode})}function VAe(t){let e=t._zod.def;return new VI({type:"pipe",in:e.out,out:e.in,transform:e.reverseTransform,reverseTransform:e.transform})}function yJ(t){return new gJ({type:"readonly",innerType:t})}function WAe(t,e){return new vJ({type:"template_literal",parts:t,..._e.normalizeParams(e)})}function EJ(t){return new SJ({type:"lazy",getter:t})}function GAe(t){return new bJ({type:"promise",innerType:t})}function qAe(t){return new xJ({type:"function",input:Array.isArray(t?.input)?JY(t?.input):t?.input??BI(qv()),output:t?.output??qv()})}function HAe(t){let e=new Jn({check:"custom"});return e._zod.check=t,e}function KAe(t,e){return wK(WI,t??(()=>!0),e)}function AJ(t,e={}){return TK(WI,t,e)}function CJ(t,e){return DK(t,e)}function XAe(t,e={}){let r=new WI({type:"custom",check:"custom",fn:n=>n instanceof t,abort:!0,..._e.normalizeParams(e)});return r._zod.bag.Class=t,r._zod.check=n=>{n.value instanceof t||n.issues.push({code:"invalid_type",expected:t.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}function QAe(t){let e=EJ(()=>p2([RI(t),NY(),$Y(),BY(),BI(e),XY(RI(),e)]));return e}function e0e(t,e){return new hJ({type:"pipe",in:m2(t),out:e})}var Bxe,cr,qL,AA,zn,HL,OI,Rd,MI,KL,YL,JL,XL,ZL,QL,e2,t2,OY,r2,n2,a2,o2,s2,i2,c2,CA,wA,Hv,TA,DA,l2,FY,MY,LY,jY,UY,zY,VY,LI,WY,jI,UI,GY,qY,HY,YY,bA,ZY,QY,xA,eJ,tJ,rJ,f2,nJ,oJ,sJ,cJ,h2,pJ,dJ,fJ,zI,VI,hJ,gJ,vJ,SJ,bJ,xJ,WI,YAe,JAe,ZAe,_I=b(()=>{vl();vl();kI();DI();LL();II();RY();Bxe=new WeakMap;cr=ee("ZodType",(t,e)=>(Yt.init(t,e),Object.assign(t["~standard"],{jsonSchema:{input:SA(t,"input"),output:SA(t,"output")}}),t.toJSONSchema=_K(t,{}),t.def=e,t.type=e.type,Object.defineProperty(t,"_def",{value:e}),t.parse=(r,n)=>EY(t,r,n,{callee:t.parse}),t.safeParse=(r,n)=>xY(t,r,n),t.parseAsync=async(r,n)=>bY(t,r,n,{callee:t.parseAsync}),t.safeParseAsync=async(r,n)=>AY(t,r,n),t.spa=t.safeParseAsync,t.encode=(r,n)=>CY(t,r,n),t.decode=(r,n)=>wY(t,r,n),t.encodeAsync=async(r,n)=>TY(t,r,n),t.decodeAsync=async(r,n)=>DY(t,r,n),t.safeEncode=(r,n)=>kY(t,r,n),t.safeDecode=(r,n)=>IY(t,r,n),t.safeEncodeAsync=async(r,n)=>PY(t,r,n),t.safeDecodeAsync=async(r,n)=>_Y(t,r,n),FI(t,"ZodType",{check(...r){let n=this.def;return this.clone(_e.mergeDefs(n,{checks:[...n.checks??[],...r.map(a=>typeof a=="function"?{_zod:{check:a,def:{check:"custom"},onattach:[]}}:a)]}),{parent:!0})},with(...r){return this.check(...r)},clone(r,n){return ki(this,r,n)},brand(){return this},register(r,n){return r.add(this,n),this},refine(r,n){return this.check(AJ(r,n))},superRefine(r,n){return this.check(CJ(r,n))},overwrite(r){return this.check(Ip(r))},optional(){return NI(this)},exactOptional(){return aJ(this)},nullable(){return $I(this)},nullish(){return NI($I(this))},nonoptional(r){return uJ(this,r)},array(){return BI(this)},or(r){return p2([this,r])},and(r){return KY(this,r)},transform(r){return GL(this,m2(r))},default(r){return iJ(this,r)},prefault(r){return lJ(this,r)},catch(r){return mJ(this,r)},pipe(r){return GL(this,r)},readonly(){return yJ(this)},describe(r){let n=this.clone();return Is.add(n,{description:r}),n},meta(...r){if(r.length===0)return Is.get(this);let n=this.clone();return Is.add(n,r[0]),n},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(r){return r(this)}}),Object.defineProperty(t,"description",{get(){return Is.get(t)?.description},configurable:!0}),t)),qL=ee("_ZodString",(t,e)=>{zv.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(n,a,o)=>RK(t,n,a,o);let r=t._zod.bag;t.format=r.format??null,t.minLength=r.minimum??null,t.maxLength=r.maximum??null,FI(t,"_ZodString",{regex(...n){return this.check(sA(...n))},includes(...n){return this.check(lA(...n))},startsWith(...n){return this.check(uA(...n))},endsWith(...n){return this.check(pA(...n))},min(...n){return this.check(lf(...n))},max(...n){return this.check(Wv(...n))},length(...n){return this.check(Gv(...n))},nonempty(...n){return this.check(lf(1,...n))},lowercase(n){return this.check(iA(n))},uppercase(n){return this.check(cA(n))},trim(){return this.check(fA())},normalize(...n){return this.check(mA(...n))},toLowerCase(){return this.check(hA())},toUpperCase(){return this.check(gA())},slugify(){return this.check(yA())}})}),AA=ee("ZodString",(t,e)=>{zv.init(t,e),qL.init(t,e),t.email=r=>t.check(iL(HL,r)),t.url=r=>t.check(TI(MI,r)),t.jwt=r=>t.check(TL(c2,r)),t.emoji=r=>t.check(dL(KL,r)),t.guid=r=>t.check(wI(OI,r)),t.uuid=r=>t.check(cL(Rd,r)),t.uuidv4=r=>t.check(lL(Rd,r)),t.uuidv6=r=>t.check(uL(Rd,r)),t.uuidv7=r=>t.check(pL(Rd,r)),t.nanoid=r=>t.check(mL(YL,r)),t.guid=r=>t.check(wI(OI,r)),t.cuid=r=>t.check(fL(JL,r)),t.cuid2=r=>t.check(hL(XL,r)),t.ulid=r=>t.check(gL(ZL,r)),t.base64=r=>t.check(AL(o2,r)),t.base64url=r=>t.check(CL(s2,r)),t.xid=r=>t.check(yL(QL,r)),t.ksuid=r=>t.check(vL(e2,r)),t.ipv4=r=>t.check(SL(t2,r)),t.ipv6=r=>t.check(EL(r2,r)),t.cidrv4=r=>t.check(bL(n2,r)),t.cidrv6=r=>t.check(xL(a2,r)),t.e164=r=>t.check(wL(i2,r)),t.datetime=r=>t.check(hY(r)),t.date=r=>t.check(gY(r)),t.time=r=>t.check(yY(r)),t.duration=r=>t.check(vY(r))});zn=ee("ZodStringFormat",(t,e)=>{Un.init(t,e),qL.init(t,e)}),HL=ee("ZodEmail",(t,e)=>{RH.init(t,e),zn.init(t,e)});OI=ee("ZodGUID",(t,e)=>{PH.init(t,e),zn.init(t,e)});Rd=ee("ZodUUID",(t,e)=>{_H.init(t,e),zn.init(t,e)});MI=ee("ZodURL",(t,e)=>{OH.init(t,e),zn.init(t,e)});KL=ee("ZodEmoji",(t,e)=>{NH.init(t,e),zn.init(t,e)});YL=ee("ZodNanoID",(t,e)=>{$H.init(t,e),zn.init(t,e)});JL=ee("ZodCUID",(t,e)=>{FH.init(t,e),zn.init(t,e)});XL=ee("ZodCUID2",(t,e)=>{MH.init(t,e),zn.init(t,e)});ZL=ee("ZodULID",(t,e)=>{LH.init(t,e),zn.init(t,e)});QL=ee("ZodXID",(t,e)=>{BH.init(t,e),zn.init(t,e)});e2=ee("ZodKSUID",(t,e)=>{jH.init(t,e),zn.init(t,e)});t2=ee("ZodIPv4",(t,e)=>{GH.init(t,e),zn.init(t,e)});OY=ee("ZodMAC",(t,e)=>{HH.init(t,e),zn.init(t,e)});r2=ee("ZodIPv6",(t,e)=>{qH.init(t,e),zn.init(t,e)});n2=ee("ZodCIDRv4",(t,e)=>{KH.init(t,e),zn.init(t,e)});a2=ee("ZodCIDRv6",(t,e)=>{YH.init(t,e),zn.init(t,e)});o2=ee("ZodBase64",(t,e)=>{XH.init(t,e),zn.init(t,e)});s2=ee("ZodBase64URL",(t,e)=>{ZH.init(t,e),zn.init(t,e)});i2=ee("ZodE164",(t,e)=>{QH.init(t,e),zn.init(t,e)});c2=ee("ZodJWT",(t,e)=>{e7.init(t,e),zn.init(t,e)});CA=ee("ZodCustomStringFormat",(t,e)=>{t7.init(t,e),zn.init(t,e)});wA=ee("ZodNumber",(t,e)=>{XM.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(n,a,o)=>OK(t,n,a,o),FI(t,"ZodNumber",{gt(n,a){return this.check(Pd(n,a))},gte(n,a){return this.check(Pi(n,a))},min(n,a){return this.check(Pi(n,a))},lt(n,a){return this.check(Id(n,a))},lte(n,a){return this.check(yl(n,a))},max(n,a){return this.check(yl(n,a))},int(n){return this.check(WL(n))},safe(n){return this.check(WL(n))},positive(n){return this.check(Pd(0,n))},nonnegative(n){return this.check(Pi(0,n))},negative(n){return this.check(Id(0,n))},nonpositive(n){return this.check(yl(0,n))},multipleOf(n,a){return this.check(rg(n,a))},step(n,a){return this.check(rg(n,a))},finite(){return this}});let r=t._zod.bag;t.minValue=Math.max(r.minimum??Number.NEGATIVE_INFINITY,r.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,t.maxValue=Math.min(r.maximum??Number.POSITIVE_INFINITY,r.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,t.isInt=(r.format??"").includes("int")||Number.isSafeInteger(r.multipleOf??.5),t.isFinite=!0,t.format=r.format??null});Hv=ee("ZodNumberFormat",(t,e)=>{r7.init(t,e),wA.init(t,e)});TA=ee("ZodBoolean",(t,e)=>{SI.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>NK(t,r,n,a)});DA=ee("ZodBigInt",(t,e)=>{ZM.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(n,a,o)=>$K(t,n,a,o),t.gte=(n,a)=>t.check(Pi(n,a)),t.min=(n,a)=>t.check(Pi(n,a)),t.gt=(n,a)=>t.check(Pd(n,a)),t.gte=(n,a)=>t.check(Pi(n,a)),t.min=(n,a)=>t.check(Pi(n,a)),t.lt=(n,a)=>t.check(Id(n,a)),t.lte=(n,a)=>t.check(yl(n,a)),t.max=(n,a)=>t.check(yl(n,a)),t.positive=n=>t.check(Pd(BigInt(0),n)),t.negative=n=>t.check(Id(BigInt(0),n)),t.nonpositive=n=>t.check(yl(BigInt(0),n)),t.nonnegative=n=>t.check(Pi(BigInt(0),n)),t.multipleOf=(n,a)=>t.check(rg(n,a));let r=t._zod.bag;t.minValue=r.minimum??null,t.maxValue=r.maximum??null,t.format=r.format??null});l2=ee("ZodBigIntFormat",(t,e)=>{n7.init(t,e),DA.init(t,e)});FY=ee("ZodSymbol",(t,e)=>{a7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>FK(t,r,n,a)});MY=ee("ZodUndefined",(t,e)=>{o7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>LK(t,r,n,a)});LY=ee("ZodNull",(t,e)=>{s7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>MK(t,r,n,a)});jY=ee("ZodAny",(t,e)=>{i7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>UK(t,r,n,a)});UY=ee("ZodUnknown",(t,e)=>{c7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>zK(t,r,n,a)});zY=ee("ZodNever",(t,e)=>{l7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>jK(t,r,n,a)});VY=ee("ZodVoid",(t,e)=>{u7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>BK(t,r,n,a)});LI=ee("ZodDate",(t,e)=>{p7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(n,a,o)=>VK(t,n,a,o),t.min=(n,a)=>t.check(Pi(n,a)),t.max=(n,a)=>t.check(yl(n,a));let r=t._zod.bag;t.minDate=r.minimum?new Date(r.minimum):null,t.maxDate=r.maximum?new Date(r.maximum):null});WY=ee("ZodArray",(t,e)=>{d7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>tY(t,r,n,a),t.element=e.element,FI(t,"ZodArray",{min(r,n){return this.check(lf(r,n))},nonempty(r){return this.check(lf(1,r))},max(r,n){return this.check(Wv(r,n))},length(r,n){return this.check(Gv(r,n))},unwrap(){return this.element}})});jI=ee("ZodObject",(t,e)=>{m7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>rY(t,r,n,a),_e.defineLazy(t,"shape",()=>e.shape),FI(t,"ZodObject",{keyof(){return d2(Object.keys(this._zod.def.shape))},catchall(r){return this.clone({...this._zod.def,catchall:r})},passthrough(){return this.clone({...this._zod.def,catchall:qv()})},loose(){return this.clone({...this._zod.def,catchall:qv()})},strict(){return this.clone({...this._zod.def,catchall:u2()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(r){return _e.extend(this,r)},safeExtend(r){return _e.safeExtend(this,r)},merge(r){return _e.merge(this,r)},pick(r){return _e.pick(this,r)},omit(r){return _e.omit(this,r)},partial(...r){return _e.partial(f2,this,r[0])},required(...r){return _e.required(h2,this,r[0])}})});UI=ee("ZodUnion",(t,e)=>{EI.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>OL(t,r,n,a),t.options=e.options});GY=ee("ZodXor",(t,e)=>{UI.init(t,e),f7.init(t,e),t._zod.processJSONSchema=(r,n,a)=>OL(t,r,n,a),t.options=e.options});qY=ee("ZodDiscriminatedUnion",(t,e)=>{UI.init(t,e),h7.init(t,e)});HY=ee("ZodIntersection",(t,e)=>{g7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>nY(t,r,n,a)});YY=ee("ZodTuple",(t,e)=>{QM.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>aY(t,r,n,a),t.rest=r=>t.clone({...t._zod.def,rest:r})});bA=ee("ZodRecord",(t,e)=>{y7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>oY(t,r,n,a),t.keyType=e.keyType,t.valueType=e.valueType});ZY=ee("ZodMap",(t,e)=>{v7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>QK(t,r,n,a),t.keyType=e.keyType,t.valueType=e.valueType,t.min=(...r)=>t.check(_d(...r)),t.nonempty=r=>t.check(_d(1,r)),t.max=(...r)=>t.check(ng(...r)),t.size=(...r)=>t.check(Vv(...r))});QY=ee("ZodSet",(t,e)=>{S7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>eY(t,r,n,a),t.min=(...r)=>t.check(_d(...r)),t.nonempty=r=>t.check(_d(1,r)),t.max=(...r)=>t.check(ng(...r)),t.size=(...r)=>t.check(Vv(...r))});xA=ee("ZodEnum",(t,e)=>{E7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(n,a,o)=>WK(t,n,a,o),t.enum=e.entries,t.options=Object.values(e.entries);let r=new Set(Object.keys(e.entries));t.extract=(n,a)=>{let o={};for(let s of n)if(r.has(s))o[s]=e.entries[s];else throw new Error(`Key ${s} not found in enum`);return new xA({...e,checks:[],..._e.normalizeParams(a),entries:o})},t.exclude=(n,a)=>{let o={...e.entries};for(let s of n)if(r.has(s))delete o[s];else throw new Error(`Key ${s} not found in enum`);return new xA({...e,checks:[],..._e.normalizeParams(a),entries:o})}});eJ=ee("ZodLiteral",(t,e)=>{b7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>GK(t,r,n,a),t.values=new Set(e.values),Object.defineProperty(t,"value",{get(){if(e.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return e.values[0]}})});tJ=ee("ZodFile",(t,e)=>{x7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>KK(t,r,n,a),t.min=(r,n)=>t.check(_d(r,n)),t.max=(r,n)=>t.check(ng(r,n)),t.mime=(r,n)=>t.check(dA(Array.isArray(r)?r:[r],n))});rJ=ee("ZodTransform",(t,e)=>{A7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>ZK(t,r,n,a),t._zod.parse=(r,n)=>{if(n.direction==="backward")throw new Xh(t.constructor.name);r.addIssue=o=>{if(typeof o=="string")r.issues.push(_e.issue(o,r.value,e));else{let s=o;s.fatal&&(s.continue=!1),s.code??(s.code="custom"),s.input??(s.input=r.value),s.inst??(s.inst=t),r.issues.push(_e.issue(s))}};let a=e.transform(r.value,r);return a instanceof Promise?a.then(o=>(r.value=o,r.fallback=!0,r)):(r.value=a,r.fallback=!0,r)}});f2=ee("ZodOptional",(t,e)=>{eL.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>NL(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});nJ=ee("ZodExactOptional",(t,e)=>{C7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>NL(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});oJ=ee("ZodNullable",(t,e)=>{w7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>sY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});sJ=ee("ZodDefault",(t,e)=>{T7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>cY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType,t.removeDefault=t.unwrap});cJ=ee("ZodPrefault",(t,e)=>{D7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>lY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});h2=ee("ZodNonOptional",(t,e)=>{k7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>iY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});pJ=ee("ZodSuccess",(t,e)=>{I7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>YK(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});dJ=ee("ZodCatch",(t,e)=>{P7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>uY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType,t.removeCatch=t.unwrap});fJ=ee("ZodNaN",(t,e)=>{_7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>qK(t,r,n,a)});zI=ee("ZodPipe",(t,e)=>{tL.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>pY(t,r,n,a),t.in=e.in,t.out=e.out});VI=ee("ZodCodec",(t,e)=>{zI.init(t,e),bI.init(t,e)});hJ=ee("ZodPreprocess",(t,e)=>{zI.init(t,e),R7.init(t,e)}),gJ=ee("ZodReadonly",(t,e)=>{O7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>dY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});vJ=ee("ZodTemplateLiteral",(t,e)=>{N7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>HK(t,r,n,a)});SJ=ee("ZodLazy",(t,e)=>{M7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>fY(t,r,n,a),t.unwrap=()=>t._zod.def.getter()});bJ=ee("ZodPromise",(t,e)=>{F7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>mY(t,r,n,a),t.unwrap=()=>t._zod.def.innerType});xJ=ee("ZodFunction",(t,e)=>{$7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>XK(t,r,n,a)});WI=ee("ZodCustom",(t,e)=>{L7.init(t,e),cr.init(t,e),t._zod.processJSONSchema=(r,n,a)=>JK(t,r,n,a)});YAe=kK,JAe=IK;ZAe=(...t)=>PK({Codec:VI,Boolean:TA,String:AA},...t)});function apt(t){eo({customError:t})}function opt(){return eo().customError}var npt,wJ,t0e=b(()=>{vl();npt={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};wJ||(wJ={})});function ipt(t,e){let r=t.$schema;return r==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":r==="http://json-schema.org/draft-07/schema#"?"draft-7":r==="http://json-schema.org/draft-04/schema#"?"draft-4":e??"draft-2020-12"}function cpt(t,e){if(!t.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let r=t.slice(1).split("/").filter(Boolean);if(r.length===0)return e.rootSchema;let n=e.version==="draft-2020-12"?"$defs":"definitions";if(r[0]===n){let a=r[1];if(!a||!e.defs[a])throw new Error(`Reference not found: ${t}`);return e.defs[a]}throw new Error(`Reference not found: ${t}`)}function r0e(t,e){if(t.not!==void 0){if(typeof t.not=="object"&&Object.keys(t.not).length===0)return Ze.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(t.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(t.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(t.if!==void 0||t.then!==void 0||t.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(t.dependentSchemas!==void 0||t.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(t.$ref){let a=t.$ref;if(e.refs.has(a))return e.refs.get(a);if(e.processing.has(a))return Ze.lazy(()=>{if(!e.refs.has(a))throw new Error(`Circular reference not resolved: ${a}`);return e.refs.get(a)});e.processing.add(a);let o=cpt(a,e),s=ei(o,e);return e.refs.set(a,s),e.processing.delete(a),s}if(t.enum!==void 0){let a=t.enum;if(e.version==="openapi-3.0"&&t.nullable===!0&&a.length===1&&a[0]===null)return Ze.null();if(a.length===0)return Ze.never();if(a.length===1)return Ze.literal(a[0]);if(a.every(s=>typeof s=="string"))return Ze.enum(a);let o=a.map(s=>Ze.literal(s));return o.length<2?o[0]:Ze.union([o[0],o[1],...o.slice(2)])}if(t.const!==void 0)return Ze.literal(t.const);let r=t.type;if(Array.isArray(r)){let a=r.map(o=>{let s={...t,type:o};return r0e(s,e)});return a.length===0?Ze.never():a.length===1?a[0]:Ze.union(a)}if(!r)return Ze.any();let n;switch(r){case"string":{let a=Ze.string();if(t.format){let o=t.format;o==="email"?a=a.check(Ze.email()):o==="uri"||o==="uri-reference"?a=a.check(Ze.url()):o==="uuid"||o==="guid"?a=a.check(Ze.uuid()):o==="date-time"?a=a.check(Ze.iso.datetime()):o==="date"?a=a.check(Ze.iso.date()):o==="time"?a=a.check(Ze.iso.time()):o==="duration"?a=a.check(Ze.iso.duration()):o==="ipv4"?a=a.check(Ze.ipv4()):o==="ipv6"?a=a.check(Ze.ipv6()):o==="mac"?a=a.check(Ze.mac()):o==="cidr"?a=a.check(Ze.cidrv4()):o==="cidr-v6"?a=a.check(Ze.cidrv6()):o==="base64"?a=a.check(Ze.base64()):o==="base64url"?a=a.check(Ze.base64url()):o==="e164"?a=a.check(Ze.e164()):o==="jwt"?a=a.check(Ze.jwt()):o==="emoji"?a=a.check(Ze.emoji()):o==="nanoid"?a=a.check(Ze.nanoid()):o==="cuid"?a=a.check(Ze.cuid()):o==="cuid2"?a=a.check(Ze.cuid2()):o==="ulid"?a=a.check(Ze.ulid()):o==="xid"?a=a.check(Ze.xid()):o==="ksuid"&&(a=a.check(Ze.ksuid()))}typeof t.minLength=="number"&&(a=a.min(t.minLength)),typeof t.maxLength=="number"&&(a=a.max(t.maxLength)),t.pattern&&(a=a.regex(new RegExp(t.pattern))),n=a;break}case"number":case"integer":{let a=r==="integer"?Ze.number().int():Ze.number();typeof t.minimum=="number"&&(a=a.min(t.minimum)),typeof t.maximum=="number"&&(a=a.max(t.maximum)),typeof t.exclusiveMinimum=="number"?a=a.gt(t.exclusiveMinimum):t.exclusiveMinimum===!0&&typeof t.minimum=="number"&&(a=a.gt(t.minimum)),typeof t.exclusiveMaximum=="number"?a=a.lt(t.exclusiveMaximum):t.exclusiveMaximum===!0&&typeof t.maximum=="number"&&(a=a.lt(t.maximum)),typeof t.multipleOf=="number"&&(a=a.multipleOf(t.multipleOf)),n=a;break}case"boolean":{n=Ze.boolean();break}case"null":{n=Ze.null();break}case"object":{let a={},o=t.properties||{},s=new Set(t.required||[]);for(let[c,l]of Object.entries(o)){let u=ei(l,e);a[c]=s.has(c)?u:u.optional()}if(t.propertyNames){let c=ei(t.propertyNames,e),l=t.additionalProperties&&typeof t.additionalProperties=="object"?ei(t.additionalProperties,e):Ze.any();if(Object.keys(a).length===0){n=Ze.record(c,l);break}let u=Ze.object(a).passthrough(),p=Ze.looseRecord(c,l);n=Ze.intersection(u,p);break}if(t.patternProperties){let c=t.patternProperties,l=Object.keys(c),u=[];for(let d of l){let m=ei(c[d],e),f=Ze.string().regex(new RegExp(d));u.push(Ze.looseRecord(f,m))}let p=[];if(Object.keys(a).length>0&&p.push(Ze.object(a).passthrough()),p.push(...u),p.length===0)n=Ze.object({}).passthrough();else if(p.length===1)n=p[0];else{let d=Ze.intersection(p[0],p[1]);for(let m=2;m<p.length;m++)d=Ze.intersection(d,p[m]);n=d}break}let i=Ze.object(a);t.additionalProperties===!1?n=i.strict():typeof t.additionalProperties=="object"?n=i.catchall(ei(t.additionalProperties,e)):n=i.passthrough();break}case"array":{let a=t.prefixItems,o=t.items;if(a&&Array.isArray(a)){let s=a.map(c=>ei(c,e)),i=o&&typeof o=="object"&&!Array.isArray(o)?ei(o,e):void 0;i?n=Ze.tuple(s).rest(i):n=Ze.tuple(s),typeof t.minItems=="number"&&(n=n.check(Ze.minLength(t.minItems))),typeof t.maxItems=="number"&&(n=n.check(Ze.maxLength(t.maxItems)))}else if(Array.isArray(o)){let s=o.map(c=>ei(c,e)),i=t.additionalItems&&typeof t.additionalItems=="object"?ei(t.additionalItems,e):void 0;i?n=Ze.tuple(s).rest(i):n=Ze.tuple(s),typeof t.minItems=="number"&&(n=n.check(Ze.minLength(t.minItems))),typeof t.maxItems=="number"&&(n=n.check(Ze.maxLength(t.maxItems)))}else if(o!==void 0){let s=ei(o,e),i=Ze.array(s);typeof t.minItems=="number"&&(i=i.min(t.minItems)),typeof t.maxItems=="number"&&(i=i.max(t.maxItems)),n=i}else n=Ze.array(Ze.any());break}default:throw new Error(`Unsupported type: ${r}`)}return n}function ei(t,e){if(typeof t=="boolean")return t?Ze.any():Ze.never();let r=r0e(t,e),n=t.type||t.enum!==void 0||t.const!==void 0;if(t.anyOf&&Array.isArray(t.anyOf)){let i=t.anyOf.map(l=>ei(l,e)),c=Ze.union(i);r=n?Ze.intersection(r,c):c}if(t.oneOf&&Array.isArray(t.oneOf)){let i=t.oneOf.map(l=>ei(l,e)),c=Ze.xor(i);r=n?Ze.intersection(r,c):c}if(t.allOf&&Array.isArray(t.allOf))if(t.allOf.length===0)r=n?r:Ze.any();else{let i=n?r:ei(t.allOf[0],e),c=n?0:1;for(let l=c;l<t.allOf.length;l++)i=Ze.intersection(i,ei(t.allOf[l],e));r=i}t.nullable===!0&&e.version==="openapi-3.0"&&(r=Ze.nullable(r)),t.readOnly===!0&&(r=Ze.readonly(r)),t.default!==void 0&&(r=r.default(t.default));let a={},o=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let i of o)i in t&&(a[i]=t[i]);let s=["contentEncoding","contentMediaType","contentSchema"];for(let i of s)i in t&&(a[i]=t[i]);for(let i of Object.keys(t))spt.has(i)||(a[i]=t[i]);return Object.keys(a).length>0&&e.registry.add(r,a),t.description&&(r=r.describe(t.description)),r}function n0e(t,e){if(typeof t=="boolean")return t?Ze.any():Ze.never();let r;try{r=JSON.parse(JSON.stringify(t))}catch{throw new Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let n=ipt(r,e?.defaultTarget),a=r.$defs||r.definitions||{},o={version:n,defs:a,refs:new Map,processing:new Set,rootSchema:r,registry:e?.registry??Is};return ei(r,o)}var Ze,spt,a0e=b(()=>{CI();LL();II();_I();Ze={...PI,...ML,iso:EA},spt=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"])});var TJ={};Rt(TJ,{bigint:()=>dpt,boolean:()=>ppt,date:()=>mpt,number:()=>upt,string:()=>lpt});function lpt(t){return H7(AA,t)}function upt(t){return tK(wA,t)}function ppt(t){return cK(TA,t)}function dpt(t){return uK(DA,t)}function mpt(t){return bK(LI,t)}var o0e=b(()=>{vl();_I()});var h={};Rt(h,{$brand:()=>hq,$input:()=>G7,$output:()=>W7,NEVER:()=>fq,TimePrecision:()=>Y7,ZodAny:()=>jY,ZodArray:()=>WY,ZodBase64:()=>o2,ZodBase64URL:()=>s2,ZodBigInt:()=>DA,ZodBigIntFormat:()=>l2,ZodBoolean:()=>TA,ZodCIDRv4:()=>n2,ZodCIDRv6:()=>a2,ZodCUID:()=>JL,ZodCUID2:()=>XL,ZodCatch:()=>dJ,ZodCodec:()=>VI,ZodCustom:()=>WI,ZodCustomStringFormat:()=>CA,ZodDate:()=>LI,ZodDefault:()=>sJ,ZodDiscriminatedUnion:()=>qY,ZodE164:()=>i2,ZodEmail:()=>HL,ZodEmoji:()=>KL,ZodEnum:()=>xA,ZodError:()=>VL,ZodExactOptional:()=>nJ,ZodFile:()=>tJ,ZodFirstPartyTypeKind:()=>wJ,ZodFunction:()=>xJ,ZodGUID:()=>OI,ZodIPv4:()=>t2,ZodIPv6:()=>r2,ZodISODate:()=>jL,ZodISODateTime:()=>BL,ZodISODuration:()=>zL,ZodISOTime:()=>UL,ZodIntersection:()=>HY,ZodIssueCode:()=>npt,ZodJWT:()=>c2,ZodKSUID:()=>e2,ZodLazy:()=>SJ,ZodLiteral:()=>eJ,ZodMAC:()=>OY,ZodMap:()=>ZY,ZodNaN:()=>fJ,ZodNanoID:()=>YL,ZodNever:()=>zY,ZodNonOptional:()=>h2,ZodNull:()=>LY,ZodNullable:()=>oJ,ZodNumber:()=>wA,ZodNumberFormat:()=>Hv,ZodObject:()=>jI,ZodOptional:()=>f2,ZodPipe:()=>zI,ZodPrefault:()=>cJ,ZodPreprocess:()=>hJ,ZodPromise:()=>bJ,ZodReadonly:()=>gJ,ZodRealError:()=>Pc,ZodRecord:()=>bA,ZodSet:()=>QY,ZodString:()=>AA,ZodStringFormat:()=>zn,ZodSuccess:()=>pJ,ZodSymbol:()=>FY,ZodTemplateLiteral:()=>vJ,ZodTransform:()=>rJ,ZodTuple:()=>YY,ZodType:()=>cr,ZodULID:()=>ZL,ZodURL:()=>MI,ZodUUID:()=>Rd,ZodUndefined:()=>MY,ZodUnion:()=>UI,ZodUnknown:()=>UY,ZodVoid:()=>VY,ZodXID:()=>QL,ZodXor:()=>GY,_ZodString:()=>qL,_default:()=>iJ,_function:()=>qAe,any:()=>AAe,array:()=>BI,base64:()=>sAe,base64url:()=>iAe,bigint:()=>vAe,boolean:()=>$Y,catch:()=>mJ,check:()=>HAe,cidrv4:()=>aAe,cidrv6:()=>oAe,clone:()=>ki,codec:()=>zAe,coerce:()=>TJ,config:()=>eo,core:()=>uf,cuid:()=>Jxe,cuid2:()=>Xxe,custom:()=>KAe,date:()=>wAe,decode:()=>wY,decodeAsync:()=>DY,describe:()=>YAe,discriminatedUnion:()=>_Ae,e164:()=>cAe,email:()=>jxe,emoji:()=>Kxe,encode:()=>CY,encodeAsync:()=>TY,endsWith:()=>pA,enum:()=>d2,exactOptional:()=>aJ,file:()=>LAe,flattenError:()=>fI,float32:()=>fAe,float64:()=>hAe,formatError:()=>hI,fromJSONSchema:()=>n0e,function:()=>qAe,getErrorMap:()=>opt,globalRegistry:()=>Is,gt:()=>Pd,gte:()=>Pi,guid:()=>Uxe,hash:()=>mAe,hex:()=>dAe,hostname:()=>pAe,httpUrl:()=>Hxe,includes:()=>lA,instanceof:()=>XAe,int:()=>WL,int32:()=>gAe,int64:()=>SAe,intersection:()=>KY,invertCodec:()=>VAe,ipv4:()=>tAe,ipv6:()=>nAe,iso:()=>EA,json:()=>QAe,jwt:()=>lAe,keyof:()=>TAe,ksuid:()=>eAe,lazy:()=>EJ,length:()=>Gv,literal:()=>MAe,locales:()=>AI,looseObject:()=>IAe,looseRecord:()=>OAe,lowercase:()=>iA,lt:()=>Id,lte:()=>yl,mac:()=>rAe,map:()=>NAe,maxLength:()=>Wv,maxSize:()=>ng,meta:()=>JAe,mime:()=>dA,minLength:()=>lf,minSize:()=>_d,multipleOf:()=>rg,nan:()=>UAe,nanoid:()=>Yxe,nativeEnum:()=>FAe,negative:()=>kL,never:()=>u2,nonnegative:()=>PL,nonoptional:()=>uJ,nonpositive:()=>IL,normalize:()=>mA,null:()=>BY,nullable:()=>$I,nullish:()=>BAe,number:()=>NY,object:()=>DAe,optional:()=>NI,overwrite:()=>Ip,parse:()=>EY,parseAsync:()=>bY,partialRecord:()=>RAe,pipe:()=>GL,positive:()=>DL,prefault:()=>lJ,preprocess:()=>e0e,prettifyError:()=>kq,promise:()=>GAe,property:()=>_L,readonly:()=>yJ,record:()=>XY,refine:()=>AJ,regex:()=>sA,regexes:()=>gl,registry:()=>sL,safeDecode:()=>IY,safeDecodeAsync:()=>_Y,safeEncode:()=>kY,safeEncodeAsync:()=>PY,safeParse:()=>xY,safeParseAsync:()=>AY,set:()=>$Ae,setErrorMap:()=>apt,size:()=>Vv,slugify:()=>yA,startsWith:()=>uA,strictObject:()=>kAe,string:()=>RI,stringFormat:()=>uAe,stringbool:()=>ZAe,success:()=>jAe,superRefine:()=>CJ,symbol:()=>bAe,templateLiteral:()=>WAe,toJSONSchema:()=>$L,toLowerCase:()=>hA,toUpperCase:()=>gA,transform:()=>m2,treeifyError:()=>Dq,trim:()=>fA,tuple:()=>JY,uint32:()=>yAe,uint64:()=>EAe,ulid:()=>Zxe,undefined:()=>xAe,union:()=>p2,unknown:()=>qv,uppercase:()=>cA,url:()=>qxe,util:()=>_e,uuid:()=>zxe,uuidv4:()=>Vxe,uuidv6:()=>Wxe,uuidv7:()=>Gxe,void:()=>CAe,xid:()=>Qxe,xor:()=>PAe});var DJ=b(()=>{vl();_I();LL();SY();RY();t0e();vl();j7();vl();kI();a0e();V7();II();II();o0e();eo(rL())});var Mt=b(()=>{DJ();DJ()});function kA(t){return fpt.has(t)}function i0e(t){return kA(t)?GI[t]:t.charAt(0).toUpperCase()+t.slice(1)}function l0e(t){return gpt.has(t)}function ig(t){return t===Ri.ROOT?"organisation":t===Ri.PLATFORM?"platform":"account"}function g2(t){return t==null||t===""||t===Ri.ROOT?null:kA(t)?t:null}function Lt(t){return t.tier??ig(t.environment)}var _c,GI,fpt,Ri,s0e,kJ,c0e,ss,hpt,gpt,IJ=b(()=>{"use strict";Mt();_c=["production","staging","development","platform","compliance"],GI={production:"Production",staging:"Staging",development:"Development",platform:"Platform",compliance:"Compliance"},fpt=new Set(_c);Ri={ROOT:"root",PLATFORM:"platform"},s0e=[..._c,Ri.ROOT];kJ=["organisation","platform","account"],c0e=h.enum(kJ),ss={ORGANISATION:"organisation",PLATFORM:"platform",ACCOUNT:"account"},hpt={[ss.ORGANISATION]:!0,[ss.PLATFORM]:!0,[ss.ACCOUNT]:!0},gpt=new Set(Object.keys(hpt))});function cg(t){if(!t)return"compute";if(t.startsWith("Custom::"))return u0e[t]??"compute";let e=u0e[t];return e||ypt.add(t),e??"compute"}function qI(t){return vpt[t]??Spt}function Oi(t){return Ept[t]||t.split("::").pop()||t}var y2,u0e,ypt,vpt,Spt,Ept,PJ=b(()=>{"use strict";y2=["security","network","compute","database","storage","monitoring","dns","identity","bootstrap","events","registry","backup"],u0e=Object.freeze({"AWS::IAM::Role":"security","AWS::IAM::Policy":"security","AWS::IAM::OIDCProvider":"security","AWS::EC2::SecurityGroup":"security","AWS::KMS::Key":"security","AWS::KMS::Alias":"security","AWS::EC2::VPC":"network","AWS::EC2::Subnet":"network","AWS::EC2::InternetGateway":"network","AWS::EC2::NatGateway":"network","AWS::EC2::RouteTable":"network","AWS::EC2::Route":"network","AWS::EC2::VPCGatewayAttachment":"network","AWS::EC2::SubnetRouteTableAssociation":"network","AWS::EC2::EIP":"network","AWS::ECS::Cluster":"compute","AWS::ECS::Service":"compute","AWS::ECS::TaskDefinition":"compute","AWS::Lambda::Function":"compute","AWS::ElasticLoadBalancingV2::LoadBalancer":"compute","AWS::ElasticLoadBalancingV2::TargetGroup":"compute","AWS::ElasticLoadBalancingV2::Listener":"compute","AWS::ElasticLoadBalancingV2::ListenerRule":"compute","AWS::RDS::DBInstance":"database","AWS::RDS::DBCluster":"database","AWS::SecretsManager::Secret":"database","AWS::S3::Bucket":"storage","AWS::S3::BucketPolicy":"storage","AWS::CloudTrail::Trail":"monitoring","AWS::CloudWatch::Alarm":"monitoring","AWS::Logs::LogGroup":"monitoring","AWS::Events::EventBus":"events","AWS::Events::Rule":"events","AWS::ECR::Repository":"registry","AWS::CodeBuild::Project":"registry","AWS::Route53::RecordSet":"dns","AWS::CertificateManager::Certificate":"dns","AWS::CloudFront::Distribution":"dns","AWS::Backup::BackupVault":"backup","AWS::Backup::BackupPlan":"backup","AWS::Backup::BackupSelection":"backup","AWS::SSO::PermissionSet":"identity","AWS::SSO::Assignment":"identity","AWS::Organizations::Account":"identity","AWS::CDK::Metadata":"compute","AWS::CloudFormation::CustomResource":"compute","AWS::CloudFormation::WaitCondition":"compute","AWS::CloudFormation::WaitConditionHandle":"compute"}),ypt=new Set;vpt=Object.freeze({"AWS::EC2::NatGateway":120,"AWS::RDS::DBInstance":300,"AWS::RDS::DBCluster":300,"AWS::CloudFront::Distribution":300,"AWS::ECS::Service":180,"AWS::ElasticLoadBalancingV2::LoadBalancer":60,"AWS::EC2::SecurityGroup":10,"AWS::IAM::Role":15,"AWS::IAM::Policy":15,"AWS::IAM::OIDCProvider":10,"AWS::S3::Bucket":10,"AWS::S3::BucketPolicy":5,"AWS::Lambda::Function":30,"AWS::EC2::VPC":15,"AWS::EC2::Subnet":15,"AWS::EC2::InternetGateway":10,"AWS::EC2::RouteTable":5,"AWS::EC2::Route":5,"AWS::EC2::VPCGatewayAttachment":10,"AWS::EC2::SubnetRouteTableAssociation":5,"AWS::EC2::EIP":10,"AWS::ECS::Cluster":15,"AWS::ECS::TaskDefinition":10,"AWS::ElasticLoadBalancingV2::TargetGroup":10,"AWS::ElasticLoadBalancingV2::Listener":10,"AWS::ElasticLoadBalancingV2::ListenerRule":5,"AWS::SecretsManager::Secret":10,"AWS::Logs::LogGroup":5,"AWS::CloudWatch::Alarm":10,"AWS::CloudTrail::Trail":15,"AWS::Events::EventBus":5,"AWS::Events::Rule":5,"AWS::ECR::Repository":10,"AWS::Route53::RecordSet":30,"AWS::CertificateManager::Certificate":60,"AWS::KMS::Key":15,"AWS::KMS::Alias":5,"AWS::Backup::BackupVault":10,"AWS::Backup::BackupPlan":10,"AWS::Backup::BackupSelection":10,"AWS::SSO::PermissionSet":15,"AWS::SSO::Assignment":10,"AWS::Organizations::Account":60}),Spt=30;Ept=Object.freeze({"AWS::Lambda::Function":"Lambda Function","AWS::IAM::Role":"IAM Role","AWS::IAM::Policy":"IAM Policy","AWS::S3::Bucket":"S3 Bucket","AWS::DynamoDB::Table":"DynamoDB Table","AWS::EC2::Instance":"EC2 Instance","AWS::EC2::SecurityGroup":"Security Group","AWS::EC2::VPC":"VPC","AWS::EC2::Subnet":"Subnet","AWS::EC2::InternetGateway":"Internet Gateway","AWS::EC2::RouteTable":"Route Table","AWS::EC2::Route":"Route","AWS::ECS::Cluster":"ECS Cluster","AWS::ECS::Service":"ECS Service","AWS::ECS::TaskDefinition":"Task Definition","AWS::ElasticLoadBalancingV2::LoadBalancer":"Load Balancer","AWS::ElasticLoadBalancingV2::TargetGroup":"Target Group","AWS::ElasticLoadBalancingV2::Listener":"Listener","AWS::CloudFormation::Stack":"CloudFormation Stack","AWS::CDK::Metadata":"CDK Metadata","Custom::CDKBucketDeployment":"Bucket Deployment","AWS::SSM::Parameter":"SSM Parameter","AWS::CloudWatch::Alarm":"CloudWatch Alarm","AWS::Logs::LogGroup":"Log Group","AWS::ApiGateway::RestApi":"API Gateway","AWS::ApiGateway::Deployment":"API Deployment","AWS::ApiGateway::Stage":"API Stage","AWS::ApiGateway::Method":"API Method","AWS::ApiGateway::Resource":"API Resource","AWS::CloudFront::Distribution":"CloudFront Distribution","AWS::Route53::RecordSet":"Route53 Record","AWS::RDS::DBInstance":"RDS Instance","AWS::RDS::DBCluster":"RDS Cluster","AWS::SQS::Queue":"SQS Queue","AWS::SNS::Topic":"SNS Topic","AWS::Events::Rule":"EventBridge Rule","AWS::StepFunctions::StateMachine":"Step Function","AWS::EC2::NatGateway":"NAT Gateway","AWS::EC2::EIP":"Elastic IP","AWS::EC2::VPCGatewayAttachment":"Gateway Attachment","AWS::EC2::SubnetRouteTableAssociation":"Route Association","AWS::CloudTrail::Trail":"CloudTrail","AWS::IAM::OIDCProvider":"OIDC Provider","AWS::Events::EventBus":"Event Bus","AWS::Backup::BackupVault":"Backup Vault","AWS::Backup::BackupPlan":"Backup Plan","AWS::Backup::BackupSelection":"Backup Selection","AWS::SecretsManager::Secret":"Secret","AWS::KMS::Key":"KMS Key","AWS::KMS::Alias":"KMS Alias","AWS::ECR::Repository":"ECR Repository","AWS::CertificateManager::Certificate":"Certificate","AWS::ElasticLoadBalancingV2::ListenerRule":"Listener Rule","AWS::EC2::IPAM":"IPAM","AWS::EC2::IPAMPool":"IPAM Pool","AWS::EC2::IPAMPoolCidr":"IPAM Pool CIDR","Custom::ram":"RAM","Custom::ipamDelegateAdmin":"IPAM Delegate Admin","Custom::CostAllocationTags":"Cost Allocation Tags","Custom::ActivateOrganisationsAccess":"Activate Organisations Access","Custom::Organizations_TagResource":"Organisations Tag Resource","AWS::CloudFormation::CustomResource":"Custom Resource","AWS::CloudFormation::WaitCondition":"Wait Condition","AWS::CloudFormation::WaitConditionHandle":"Wait Condition Handle","AWS::SSO::PermissionSet":"SSO Permission Set","AWS::SSO::Assignment":"SSO Assignment","AWS::Organizations::Account":"Organisations Account","AWS::S3::BucketPolicy":"S3 Bucket Policy","AWS::CodeBuild::Project":"CodeBuild Project"})});function v2(t){if(!t)return null;let e=t.replace(/^(https?:\/\/)[^@]+@/,"$1"),r=e.match(xpt)??e.match(Apt)??t.match(Cpt);if(!r)return null;let[,n,a,o]=r;return!n||!a||!o?null:{provider:bpt[n]??"other",owner:a,repo:o,host:n}}var bpt,xpt,Apt,Cpt,p0e=b(()=>{"use strict";bpt={"github.com":"github","gitlab.com":"gitlab","bitbucket.org":"bitbucket"},xpt=/^https?:\/\/([^/]+)\/(.+?)\/([^/.]+?)(?:\.git)?$/,Apt=/^git@([^:]+):(.+?)\/([^/.]+?)(?:\.git)?$/,Cpt=/^ssh:\/\/[^@]+@([^:/]+)(?::\d+)?\/(.+?)\/([^/.]+?)(?:\.git)?$/});var d0e,m0e=b(()=>{"use strict";d0e=["read","write","deploy","secrets:read","secrets:write","destroy","admin","applications:read","applications:deploy"]});var HI,S2,f0e=b(()=>{"use strict";Mt();HI=h.object({awsAccountId:h.string(),accountName:h.string().nullable(),status:h.string(),role:h.string(),roleArn:h.string(),environment:h.string().optional(),connectedAt:h.string()}),S2=h.object({accounts:h.array(HI)})});function jo(t){let e=[t.primaryRegion,...t.secondaryRegions??[],t.disasterRecoveryRegion].filter(r=>r!==void 0);return[...new Set(e)]}function Od(t){return t.environment??Lt(t)}function Ni(t,e){return`${t.toLowerCase()}-${of(e)}`}function pf(t,e){let r=[];for(let n of t){if(Lt(n)==="organisation")continue;let a=Od(n);for(let o of e)r.push({name:Ni(n.name,o),accountName:n.name,accountId:n.id,environment:a,region:o})}return r.sort((n,a)=>{let o=n.environment.localeCompare(a.environment);if(o!==0)return o;let s=n.accountName.localeCompare(a.accountName);return s!==0?s:n.region.localeCompare(a.region)})}function df(t){return pf(t.providerAccounts,jo(t))}function lu(t,e){return t.find(r=>r.name===e)}var h0e=b(()=>{"use strict";wM();IJ()});function Ps(t,e){if(e!==void 0){if(e.trim()==="")throw new Error("buildAppConfigPath: container must be a non-empty string");return`${e}/fjall/${t}`}return`fjall/${t}`}var g0e=b(()=>{"use strict"});function E2(t,e){let r=e?.excludedPathPrefixes,n=e?.excludedPathSegments,a=[];for(let o of t){if(!KI(o.path)||r&&Tpt(o.path,r)||n&&Dpt(o.path,n))continue;let s=OJ(o.path);s!==null&&a.push({configPath:wpt(o.path),boundaryPath:s})}return a}function KI(t){return t===_J||t.endsWith(`/${_J}`)}function OJ(t){let e=t.split("/");for(let r=0;r<e.length-1;r++)if(e[r]===RJ)return e.slice(0,r+1).join("/");return null}function wpt(t){return t.slice(0,-`/${_J}`.length)}function Tpt(t,e){for(let r of e)if(t.startsWith(r))return!0;return!1}function Dpt(t,e){let r=t.split("/");for(let n=0;n<r.length-1;n++)if(e.has(r[n]))return!0;return!1}var _J,RJ,b2=b(()=>{"use strict";_J="infrastructure.ts",RJ="fjall"});function x2(t){if(t.length===0)return null;let e=[];for(let n of t){let a=kpt(n.boundaryPath);if(a===null)return null;e.push(a)}let r=Ipt(e);return r.length===0?null:r.join("/")}function kpt(t){let e=t.split("/").filter(n=>n.length>0);if(e.length===0||e[e.length-1]!==RJ)return null;let r=e.slice(0,e.length-1);return r.length===0?null:r}function Ipt(t){if(t.length===0)return[];let[e,...r]=t,n=[];for(let a=0;a<e.length;a+=1){let o=e[a];for(let s of r)if(s[a]!==o)return n;n.push(o)}return n}var y0e=b(()=>{"use strict";b2()});function C2(t){return NJ.includes(t.toLowerCase())}var NJ,A2,v0e=b(()=>{"use strict";NJ=["fjall"],A2="The name 'fjall' is reserved for organisation-tier configuration."});function Ppt(t){return{success:!0,data:t}}function w2(t){return{success:!1,error:t}}function IA(t,e,r){if(!t.startsWith(S0e))return w2(new Error(`expected sha256:... digest, got ${t.slice(0,32)}`));let n=t.slice(S0e.length);if(n.length<$J)return w2(new Error(`digest hex payload too short (need >=${$J} chars, got ${n.length})`));let a=e.trim();if(a==="")return w2(new Error("serviceName must be a non-empty string"));let o;if(r!==void 0){let c=r.trim();if(c==="")return w2(new Error("target, when supplied, must be a non-empty string; omit the argument instead"));o=c.toLowerCase()}let s=n.slice(0,$J).toLowerCase(),i=o!==void 0?`${a.toLowerCase()}-${o}`:a.toLowerCase();return Ppt(`${i}-sha-${s}`)}var S0e,$J,E0e=b(()=>{"use strict";S0e="sha256:",$J=12});var b0e,x0e,A0e,C0e,w0e,T0e,D0e,k0e,I0e=b(()=>{"use strict";b0e="fjall-premigrate",x0e="EXPECTED_SCHEMA_VERSION",A0e="EXPECTED_SCHEMA_VERSION_TOOL",C0e="EXPECTED_CH_SCHEMA_VERSION",w0e="SCHEMA_ADMIN_USER",T0e="SCHEMA_ADMIN_PASSWORD",D0e=/^\d{14}_/,k0e=/\.dev\.sql$/});var P0e={};Rt(P0e,{ACCOUNT_ROLES:()=>ss,ACCOUNT_STAGES:()=>_c,ACCOUNT_STAGES_WITH_ROOT:()=>s0e,ACCOUNT_STAGE_LABELS:()=>GI,ACCOUNT_TIERS:()=>kJ,APPROVAL_TOKEN_OUTPUT_PREFIX:()=>xM,AWS_REGIONS_METADATA:()=>xo,AccountTierSchema:()=>c0e,BACKUP_VAULT_NAME:()=>Yh,CLICKHOUSE_MIGRATION_SKIP_RE:()=>k0e,ConnectionWireSchema:()=>HI,ConnectionsListResponseSchema:()=>S2,DANGEROUS_ENV_VARS:()=>mq,DEFAULT_REGION:()=>ze,DNS_APEX:()=>bM,EXPECTED_CH_SCHEMA_VERSION_ENV:()=>C0e,EXPECTED_SCHEMA_VERSION_ENV:()=>x0e,EXPECTED_SCHEMA_VERSION_TOOL_ENV:()=>A0e,MAX_SECONDARY_REGIONS:()=>oI,MIGRATION_SNAPSHOT_NAME_PREFIX:()=>b0e,OPT_IN_REGION_CODES:()=>Di,PRISMA_MIGRATION_DIR_RE:()=>D0e,REGION_SHORT_CODES:()=>dq,RESERVED_APP_NAMES:()=>NJ,RESERVED_APP_NAME_MESSAGE:()=>A2,RESOURCE_CATEGORIES:()=>y2,SCHEMA_ADMIN_PASSWORD_ENV:()=>T0e,SCHEMA_ADMIN_USER_ENV:()=>w0e,SCOPE_VALUES:()=>d0e,STRUCTURAL_ENVIRONMENTS:()=>Ri,abbreviateRegion:()=>of,accountConstructKey:()=>$v,accountTier:()=>Lt,buildAppConfigPath:()=>Ps,capitalise:()=>iu,categoriseResource:()=>cg,defaultConnectedAccountName:()=>tEe,deriveAllTargets:()=>df,deriveContentHashTag:()=>IA,deriveRegionsFromOrgConfig:()=>jo,deriveTargets:()=>pf,environmentOrTier:()=>Od,environmentToTier:()=>ig,filterDangerousEnvVars:()=>or,findAccountNameCollision:()=>ZSe,findBoundaryPath:()=>OJ,findInfrastructurePaths:()=>E2,findTarget:()=>lu,findTrailingRegionShortCode:()=>Kx,formatErrorString:()=>DM,generateTargetName:()=>Ni,getDomainExportNames:()=>Qs,getEnvironmentLabel:()=>i0e,getErrorCode:()=>sI,getErrorMessage:()=>D,getErrorStack:()=>Jx,getExpectedDuration:()=>qI,getFriendlyResourceType:()=>Oi,getRegionInfo:()=>Mv,getSafeZoneName:()=>AM,hasAsciiStableConstructKey:()=>JSe,hasErrorCode:()=>TM,imageTagParameterName:()=>CM,inferContainerFromCandidates:()=>x2,isAccountStage:()=>kA,isAccountTier:()=>l0e,isInfrastructureFile:()=>KI,isReservedAppName:()=>C2,mapSettledWithConcurrency:()=>kd,maskSensitiveOutput:()=>E,normaliseError:()=>xr,optInRegionWarning:()=>Dc,parseGitRemoteUrl:()=>v2,parseShellArgs:()=>sf,regionSuffixRejectionMessage:()=>Yx,regions:()=>Ti,singleton:()=>Ut,sleep:()=>ft,stageFromWireEnvironment:()=>g2,suffixedAccountName:()=>rEe,suggestRegionForTimezone:()=>Jh,toKebab:()=>Yn,toPascalCase:()=>ir,toScreamingSnake:()=>YSe,toValidDatabaseName:()=>Fv});var N=b(()=>{"use strict";qSe();HSe();KSe();XSe();aI();QSe();nEe();kM();aEe();Dp();oEe();sEe();IJ();PJ();p0e();wM();m0e();f0e();h0e();g0e();b2();y0e();v0e();E0e();I0e()});import{join as FJ}from"path";var T2,_0e=b(()=>{"use strict";lg();cq();WSe();uq();tI();rI();N();cq();T2=class t{static instance=null;config;debugEnabled;traceEnabled;minLevel;fileWriter;mainLogPath;debugLogPath;constructor(){let e=Hx(),r=FJ(e,"debug"),n=this.parseEnvInt("FJALL_LOG_MAX_SIZE",Tp.MAX_FILE_SIZE),a=this.parseEnvInt("FJALL_LOG_MAX_FILES",Tp.MAX_FILES);this.config={logDir:e,debugLogDir:r,maxFileSize:n,maxFiles:a,maxBufferSize:Tp.MAX_BUFFER_SIZE,flushIntervalMs:Tp.FLUSH_INTERVAL_MS},this.mainLogPath=FJ(e,Tp.LOG_FILENAME),this.debugLogPath=FJ(r,Tp.DEBUG_LOG_FILENAME),this.debugEnabled=process.env.FJALL_DEBUG==="true"||process.env.FJALL_TRACE==="true"||process.argv.includes("--verbose")||process.argv.includes("-v"),this.traceEnabled=process.env.FJALL_TRACE==="true";let o=process.env.FJALL_LOG_LEVEL?.toLowerCase();o&&o in Nv?this.minLevel=o:this.traceEnabled?this.minLevel="trace":this.debugEnabled?this.minLevel="debug":this.minLevel="info",this.fileWriter=new EM(this.config,this.mainLogPath,this.debugLogPath,this.debugEnabled)}parseEnvInt(e,r){let n=process.env[e];if(n){let a=parseInt(n,10);if(!isNaN(a)&&a>0)return a}return r}static getInstance(){return t.instance||(t.instance=new t),t.instance}shouldLog(e){return Nv[e]>=Nv[this.minLevel]}createEntry(e,r,n,a,o,s,i){return{timestamp:new Date().toISOString(),level:e,component:r,message:n,...o&&{correlationId:o},...a&&Object.keys(a).length>0&&{data:a},...s&&{stackName:s},...i&&{phase:i}}}log(e,r,n,a,o,s,i){if(!this.shouldLog(e))return;let c=this.createEntry(e,r,n,a,o,s,i),l=e==="debug"||e==="trace";this.fileWriter.write(c,l),this.writeConsole(c)}writeConsole(e){if(zr.shouldSuppressOutput||zr.isNonInteractive){this.debugEnabled&&this.writeDebugMirror(e);return}let r=this.getConsolePrefix(e.level),n=`[${e.component}]`,a=`${r} ${n} ${e.message}`;e.level==="error"?console.error(a):e.level==="warn"?console.warn(a):console.log(a)}writeDebugMirror(e){let r=this.getConsolePrefix(e.level),n=`[${e.component}]`,a="";if(e.data&&Object.keys(e.data).length>0)try{a=` ${JSON.stringify(e.data)}`}catch{a=" [unserialisable data]"}let o=`${r} ${n} ${e.message}${a}`;process.stderr.write(`${E(o)}
|
|
92
92
|
`)}getConsolePrefix(e){switch(e){case"error":return"[ERROR]";case"warn":return"[WARN]";case"info":return"[INFO]";case"debug":return"[DEBUG]";case"trace":return"[TRACE]"}}error(e,r,n){this.log("error",e,r,n)}warn(e,r,n){this.log("warn",e,r,n)}info(e,r,n){this.log("info",e,r,n)}debug(e,r,n){this.log("debug",e,r,n)}trace(e,r,n){this.log("trace",e,r,n)}isDebugEnabled(){return this.debugEnabled}isTraceEnabled(){return this.traceEnabled}enableDebug(){this.debugEnabled=!0,Nv[this.minLevel]>Nv.debug&&(this.minLevel="debug"),this.fileWriter.setDebugEnabled(!0),this.fileWriter.isInitialised&&this.fileWriter.initialiseDebugStream()}withCorrelation(e){return new qx(this,e)}forDeployment(e,r="deploy"){return new nI(this,e,r)}close(){this.fileWriter.close()}async flushAndClose(){await this.fileWriter.closeAndFlush()}getLogPath(){return this.mainLogPath}getDebugLogPath(){return this.debugLogPath}getLogDir(){return this.config.logDir}logWithCorrelation(e,r,n,a,o,s,i){this.log(e,r,n,o,a,s,i)}static reset(){t.instance&&(t.instance.close(),t.instance=null)}}});var k,se=b(()=>{"use strict";_0e();lq();tI();rI();rI();uq();tI();k=T2.getInstance()});var MJ,YI,LJ=b(()=>{"use strict";se();XI();MJ=class{info(e){D2(e)}error(e){k2(e)}warning(e){O0e(e)}success(e){R0e(e)}debug(e){k.debug("CLI",e)}startSpinner(e){return N0e(e)}stopSpinner(){Kv()}updateSpinner(e){JI(e)}},YI=class{mode="cli";suppressOutput=!1;isNonInteractive;clearCacheOnAuthFailure=!1;logger;constructor(e={}){this.isNonInteractive=e.noPrompt??!1,this.logger=new MJ}}});var BJ,ZI,jJ=b(()=>{"use strict";BJ=class{info(e){}error(e){}warning(e){}success(e){}debug(e){}startSpinner(e){return null}stopSpinner(){}updateSpinner(e){}},ZI=class{mode="ink";suppressOutput=!0;isNonInteractive=!1;clearCacheOnAuthFailure=!0;logger;constructor(){this.logger=new BJ}}});var zr,$0e=b(()=>{"use strict";LJ();jJ();zr=class{static stack=[];static _isNonInteractive=!1;static get current(){return this.stack.length===0?new YI({noPrompt:!1}):this.stack[this.stack.length-1]}static get isNonInteractive(){return this._isNonInteractive}static enterNonInteractiveMode(){this._isNonInteractive=!0}static exitNonInteractiveMode(){this._isNonInteractive=!1}static getContext(){return this.stack.length>0?this.stack[this.stack.length-1]:void 0}static push(e){this.stack.push(e)}static pop(){this.stack.length>0&&this.stack.pop()}static enterUIMode(){this.push(new ZI)}static exitUIMode(){this.pop()}static async withContext(e,r){this.push(e);try{return await r()}finally{this.pop()}}static get isUIMode(){return this.current.mode==="ink"}static get shouldSuppressOutput(){return this.current.suppressOutput}static reset(){this.stack=[]}}});var lg=b(()=>{"use strict";FSe();LJ();jJ();$0e()});function D2(t,...e){zr.shouldSuppressOutput||(ga&&ga.stop(),console.log(t,...e),ga&&ga.start())}function R0e(t,...e){zr.shouldSuppressOutput||(ga?(ga.succeed(J.hex("#A4C2A5")(`\u2705 ${t}`)),ga=null):console.log(J.hex("#A4C2A5")(`\u2705 ${t}`),...e))}function O0e(t,...e){zr.shouldSuppressOutput||(ga?(ga.warn(`\u26A0\uFE0F ${t}`),ga=null):console.log(J.yellow(`\u26A0\uFE0F ${t}`),...e))}function k2(t,...e){zr.shouldSuppressOutput||(ga?(ga.fail(J.red.bold(`\u274C Error: ${t}`)),ga=null):console.error(J.red.bold(`\u274C Error: ${t}`),...e))}function UJ(){return zr.shouldSuppressOutput||zr.isNonInteractive}function N0e(t){if(UJ())return null;if(ga)return ga.text=t,ga;let e=J.hex("#FF7BFF")(t);return ga=SM({text:e,spinner:F0e,color:"magenta"}).start(),ga}function JI(t){if(UJ())return null;if(ga)ga.text=J.hex("#FF7BFF")(t);else{let e=J.hex("#FF7BFF")(t);ga=SM({text:e,spinner:F0e,color:"magenta"}).start()}return ga}function Kv(){UJ()||ga&&(ga.stop(),ga=null)}var F0e,ga,XI=b(()=>{"use strict";sa();$Se();lg();F0e={interval:150,frames:["\u2726","\u2727","\u2736","\u2737","\u2738","\u2739","\u273A","\u273B"]},ga=null});var L0e=b(()=>{});var B0e=b(()=>{L0e()});var j0e=b(()=>{});var U0e=b(()=>{});var z0e=b(()=>{});var V0e=b(()=>{});var I2,W0e=b(()=>{I2=class{statusCode;reason;headers;body;constructor(e){this.statusCode=e.statusCode,this.reason=e.reason,this.headers=e.headers||{},this.body=e.body}static isInstance(e){if(!e)return!1;let r=e;return typeof r.statusCode=="number"&&typeof r.headers=="object"}}});var G0e=b(()=>{});var q0e=b(()=>{});var H0e=b(()=>{B0e();j0e();U0e();z0e();V0e();W0e();G0e();q0e()});var P2,_pt,K0e=b(()=>{P2=t=>encodeURIComponent(t).replace(/[!'()*]/g,_pt),_pt=t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`});var Y0e=b(()=>{});var J0e=b(()=>{K0e();Y0e()});function X0e(t){let e=[];for(let r of Object.keys(t).sort()){let n=t[r];if(r=P2(r),Array.isArray(n))for(let a=0,o=n.length;a<o;a++)e.push(`${r}=${P2(n[a])}`);else{let a=r;(n||typeof n=="string")&&(a+=`=${P2(n)}`),e.push(a)}}return e.join("&")}var Z0e=b(()=>{J0e()});function zJ(t){let e=t&&typeof t=="object"&&"reason"in t?t.reason:void 0;if(e){if(e instanceof Error){let a=new Error("Request aborted");return a.name="AbortError",a.cause=e,a}let n=new Error(String(e));return n.name="AbortError",n}let r=new Error("Request aborted");return r.name="AbortError",r}var Q0e=b(()=>{});var eCe,tCe=b(()=>{eCe=["ECONNRESET","EPIPE","ETIMEDOUT"]});var rCe,nCe=b(()=>{rCe=t=>{let e={};for(let r of Object.keys(t)){let n=t[r];e[r]=Array.isArray(n)?n.join(","):n}return e}});var mo,Yv=b(()=>{mo={setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)}});var aCe,oCe,sCe=b(()=>{Yv();aCe=1e3,oCe=(t,e,r=0)=>{if(!r)return-1;let n=a=>{let o=mo.setTimeout(()=>{t.destroy(),e(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${r} ms.`),{name:"TimeoutError"}))},r-a),s=i=>{i?.connecting?i.on("connect",()=>{mo.clearTimeout(o)}):mo.clearTimeout(o)};t.socket?s(t.socket):t.on("socket",s)};return r<2e3?(n(0),0):mo.setTimeout(n.bind(null,aCe),aCe)}});var iCe,cCe=b(()=>{Yv();iCe=(t,e,r=0,n,a)=>r?mo.setTimeout(()=>{let o=`@smithy/node-http-handler - [${n?"ERROR":"WARN"}] a request has exceeded the configured ${r} ms requestTimeout.`;if(n){let s=Object.assign(new Error(o),{name:"TimeoutError",code:"ETIMEDOUT"});t.destroy(s),e(s)}else o+=" Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.",a?.warn?.(o)},r):-1});var Rpt,lCe,uCe=b(()=>{Yv();Rpt=3e3,lCe=(t,{keepAlive:e,keepAliveMsecs:r},n=Rpt)=>{if(e!==!0)return-1;let a=()=>{t.socket?t.socket.setKeepAlive(e,r||0):t.on("socket",o=>{o.setKeepAlive(e,r||0)})};return n===0?(a(),0):mo.setTimeout(a,n)}});var pCe,dCe,mCe=b(()=>{Yv();pCe=3e3,dCe=(t,e,r=0)=>{let n=a=>{let o=r-a,s=()=>{t.destroy(),e(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${r} ms of inactivity (configured by client requestHandler).`),{name:"TimeoutError"}))};t.socket?(t.socket.setTimeout(o,s),t.on("close",()=>t.socket?.removeListener("timeout",s))):t.setTimeout(o,s)};return 0<r&&r<6e3?(n(0),0):mo.setTimeout(n.bind(null,r===0?0:pCe),pCe)}});import{Readable as Opt}from"node:stream";async function hCe(t,e,r=fCe,n=!1){let a=e.headers??{},o=a.Expect||a.expect,s=-1,i=!0;!n&&o==="100-continue"&&(i=await Promise.race([new Promise(c=>{s=Number(mo.setTimeout(()=>c(!0),Math.max(fCe,r)))}),new Promise(c=>{t.on("continue",()=>{mo.clearTimeout(s),c(!0)}),t.on("response",()=>{mo.clearTimeout(s),c(!1)}),t.on("error",()=>{mo.clearTimeout(s),c(!1)})})])),i&&Npt(t,e.body)}function Npt(t,e){if(e instanceof Opt){e.pipe(t);return}if(e){let r=Buffer.isBuffer(e);if(r||typeof e=="string"){r&&e.byteLength===0?t.end():t.end(e);return}let a=e;if(typeof a=="object"&&a.buffer&&typeof a.byteOffset=="number"&&typeof a.byteLength=="number"){t.end(Buffer.from(a.buffer,a.byteOffset,a.byteLength));return}t.end(Buffer.from(e));return}t.end()}var fCe,gCe=b(()=>{Yv();fCe=6e3});import{Agent as VJ,request as $pt}from"node:https";var _2,yCe,Rc,vCe=b(()=>{H0e();Z0e();Q0e();tCe();nCe();sCe();cCe();uCe();mCe();Yv();gCe();Rc=class t{config;configProvider;socketWarningTimestamp=0;externalAgent=!1;metadata={handlerProtocol:"http/1.1"};static create(e){return typeof e?.handle=="function"?e:new t(e)}static checkSocketUsage(e,r,n=console){let{sockets:a,requests:o,maxSockets:s}=e;if(typeof s!="number"||s===1/0||Date.now()-15e3<r)return r;if(a&&o)for(let c in a){let l=a[c]?.length??0,u=o[c]?.length??0;if(l>=s&&u>=2*s)return n?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${l} and ${u} additional requests are enqueued.
|
|
93
93
|
See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html
|
|
94
|
-
or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return r}constructor(e){this.configProvider=new Promise((r,n)=>{typeof e=="function"?e().then(a=>{r(this.resolveDefaultConfig(a))}).catch(n):r(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(e,{abortSignal:r,requestTimeout:n}={}){this.config||(this.config=await this.configProvider);let a=this.config,o=e.protocol==="https:";return!o&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((s,i)=>{let c,l=[],u=async R=>{await c,l.forEach(mo.clearTimeout),s(R)},p=async R=>{await c,l.forEach(mo.clearTimeout),i(R)};if(r?.aborted){let R=zJ(r);p(R);return}let d=e.headers??{},m=(d.Expect??d.expect)==="100-continue",f=o?a.httpsAgent:a.httpAgent;m&&!this.externalAgent&&(f=new(o?VJ:_2)({keepAlive:!1,maxSockets:1/0})),l.push(mo.setTimeout(()=>{this.socketWarningTimestamp=t.checkSocketUsage(f,this.socketWarningTimestamp,a.logger)},a.socketAcquisitionWarningTimeout??(a.requestTimeout??2e3)+(a.connectionTimeout??1e3)));let g=X0e(e.query||{}),y;if(e.username!=null||e.password!=null){let R=e.username??"",O=e.password??"";y=`${R}:${O}`}let S=e.path;g&&(S+=`?${g}`),e.fragment&&(S+=`#${e.fragment}`);let x=e.hostname??"";x[0]==="["&&x.endsWith("]")?x=e.hostname.slice(1,-1):x=e.hostname;let C={headers:e.headers,host:x,method:e.method,path:S,port:e.port,agent:f,auth:y},T=(o?$pt:yCe)(C,R=>{let O=new I2({statusCode:R.statusCode||-1,reason:R.statusMessage,headers:rCe(R.headers),body:R});u({response:O})});if(T.on("error",R=>{eCe.includes(R.code)?p(Object.assign(R,{name:"TimeoutError"})):p(R)}),r){let R=()=>{T.destroy();let O=zJ(r);p(O)};if(typeof r.addEventListener=="function"){let O=r;O.addEventListener("abort",R,{once:!0}),T.once("close",()=>O.removeEventListener("abort",R))}else r.onabort=R}let P=n??a.requestTimeout;l.push(oCe(T,p,a.connectionTimeout)),l.push(iCe(T,p,P,a.throwOnRequestTimeout,a.logger??console)),l.push(dCe(T,p,a.socketTimeout));let _=C.agent;typeof _=="object"&&"keepAlive"in _&&l.push(lCe(T,{keepAlive:_.keepAlive,keepAliveMsecs:_.keepAliveMsecs})),c=hCe(T,e,P,this.externalAgent).catch(R=>(l.forEach(mo.clearTimeout),i(R)))})}updateHttpClientConfig(e,r){this.config=void 0,this.configProvider=this.configProvider.then(n=>({...n,[e]:r}))}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:r,connectionTimeout:n,socketTimeout:a,socketAcquisitionWarningTimeout:o,httpAgent:s,httpsAgent:i,throwOnRequestTimeout:c,logger:l}=e||{},u=!0,p=50;return{connectionTimeout:n,requestTimeout:r,socketTimeout:a,socketAcquisitionWarningTimeout:o,throwOnRequestTimeout:c,httpAgentProvider:async()=>{let{Agent:d,request:m}=await import("node:http");return yCe=m,_2=d,s instanceof _2||typeof s?.destroy=="function"?(this.externalAgent=!0,s):new _2({keepAlive:u,maxSockets:p,...s})},httpsAgent:i instanceof VJ||typeof i?.destroy=="function"?(this.externalAgent=!0,i):new VJ({keepAlive:u,maxSockets:p,...i}),logger:l}}}});var SCe=b(()=>{});var ECe=b(()=>{});var PA=b(()=>{vCe();SCe();ECe()});var QI,WJ=b(()=>{"use strict";QI=["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","AWS_SECURITY_TOKEN","AWS_REGION","AWS_DEFAULT_REGION"]});var eP=b(()=>{"use strict";N()});function mf(t){return t.success===!0}function Cr(t){return t.success===!1}function A(t){return{success:!0,data:t}}function v(t){return{success:!1,error:t}}async function GJ(t){try{let e=await t();return A(e)}catch(e){return v(xr(e))}}function qJ(t){try{let e=t();return A(e)}catch(e){return v(xr(e))}}var Qr=b(()=>{"use strict";eP()});function HJ(t){let e=/^rate\((\d+) (minute|minutes|hour|hours|day|days)\)$/.exec(t);if(!e)return;let r=e[1],n=e[2];if(r===void 0||n===void 0)return;let a=parseInt(r,10);if(!Number.isFinite(a)||a<1)return;let o=n==="minute"||n==="hour"||n==="day";if(!(o&&a!==1)&&!(!o&&a===1))return n==="minute"||n==="minutes"?{everyMs:a*6e4}:n==="hour"||n==="hours"?{everyMs:a*60*6e4}:{everyMs:a*24*60*6e4}}var bCe,bt,xCe=b(()=>{"use strict";bCe=/^[a-zA-Z][a-zA-Z0-9-]*$/,bt=Object.freeze({IDENTIFIER:bCe,NEW_APP_NAME:/^[a-z][a-z0-9-]*$/,RESOURCE_NAME:/^[a-zA-Z][a-zA-Z0-9]*$/,ECS_SERVICE_NAME:bCe,BUCKET_NAME:/^[a-z][a-z0-9-]*[a-z0-9]$|^[a-z][a-z0-9]*$/,DATABASE_NAME:/^[a-zA-Z][a-zA-Z0-9_]*$/,RESOURCE_TYPE:/^[a-z]+(:[a-z]+)?$/,SSM_PATH:/^\/[a-zA-Z][a-zA-Z0-9-]*(\/[a-zA-Z][a-zA-Z0-9-]*)*$/,SECRET_NAME:/^[a-zA-Z_][a-zA-Z0-9._-]*$/,SSM_COMPONENT:/^[a-zA-Z][a-zA-Z0-9._-]*$/,EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,DOCKER_IMAGE:/^[a-z0-9][a-z0-9._-]*[a-z0-9](:[a-z0-9._-]+)?$/,DOMAIN:/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/i,PASCAL_CASE:/^[A-Z][A-Za-z0-9]*$/,AWS_ACCOUNT_ID:/^\d{12}$/,VPC_ID:/^vpc-[a-z0-9]+$/,ROLE_ARN:/^arn:aws[a-zA-Z-]*:iam::\d{12}:role\/.+$/,CIDR:/^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\/(3[0-2]|[12]?\d)$/,SCHEDULE_EXPRESSION:/^(rate\(1 (?:minute|hour|day)\)|rate\((?:[2-9]|[1-9]\d+) (?:minutes|hours|days)\)|cron\([^\s()]+ [^\s()]+ [^\s()]+ [^\s()]+ [^\s()]+ [^\s()]+\))$/,LAMBDA_RUNTIME_IDENTIFIER:/^[A-Za-z0-9._-]+$/,ENV_VAR_NAME:/^[A-Za-z_][A-Za-z0-9_]*$/})});var B,ACe=b(()=>{"use strict";B=Object.freeze({IDENTIFIER:"Must start with a letter, contain only letters, numbers, and hyphens",NEW_APP_NAME:"Must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens",IDENTIFIER_MIN_LENGTH:"Must be at least 2 characters",IDENTIFIER_NO_TRAILING_HYPHEN:"Must not end with a hyphen",IDENTIFIER_NO_CONSECUTIVE_HYPHENS:"Must not contain consecutive hyphens",RESOURCE_NAME:"Must start with a letter and contain only letters and numbers (PascalCase recommended)",ECS_SERVICE_NAME:"Service name must start with a letter and contain only letters, numbers, and hyphens",BUCKET_NAME:"Bucket name must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens",DATABASE_NAME:"Database name must start with a letter and contain only letters, numbers, and underscores",RESOURCE_TYPE:"Resource type must be in format 'category' or 'category:type'",SSM_PATH:"SSM path must start with / and contain valid namespace segments (e.g., /myapp/ApiCluster/service)",SECRET_NAME:"Secret name must start with a letter or underscore and contain only letters, numbers, underscores, hyphens, or periods",SSM_COMPONENT:"Must start with a letter and contain only letters, numbers, periods, hyphens, or underscores",EMAIL:"Please enter a valid email address",DOMAIN:"Please enter a valid domain (e.g., cms.example.com)",DOCKER_IMAGE:"Invalid Docker image name format",REQUIRED:{APP_NAME:"Application name is required",RESOURCE_NAME:"Resource name is required",BUCKET_NAME:"Bucket name is required",SERVICE_NAME:"Service name is required",NETWORK_NAME:"Network name is required",DATABASE_NAME:"Database name is required",ORGANISATION_NAME:"Organisation name is required",EMAIL:"Email is required",NAME:"Name is required",USERNAME:"Username is required",CONTAINER_NAME:"Container name is required",FIRST_NAME:"First name is required",LAST_NAME:"Last name is required",GROUP:"Group is required",PATTERN_NAME:"Pattern name is required",ROUTING_PATH:"Routing path is required",RESOURCE_REFERENCE:"Resource reference is required",RESOURCE_TYPE:"Resource type is required",VARIANT:"Variant is required",SUBTYPE:"Subtype is required",DEPLOY_TARGET:"Deploy target is required",DESTROY_TARGET:"Destroy target is required"},MAX_LENGTH:{APP_NAME:"Application name must be 50 characters or less",RESOURCE_NAME:"Resource name must be 63 characters or less",BUCKET_NAME:"Bucket name must be 63 characters or less",SERVICE_NAME:"Service name must be 255 characters or less",NETWORK_NAME:"Network name must be 50 characters or less",DATABASE_NAME:"Database name must be 63 characters or less",ORGANISATION_NAME:"Organisation name must be 50 characters or less"},PORT:{INTEGER:"Port must be an integer",MIN:"Port must be at least 1",MAX:"Port cannot exceed 65535"},USERNAME:{MAX_LENGTH:"Username cannot exceed 63 characters"},LAMBDA:{MEMORY:{INTEGER:"Lambda memory must be an integer",MIN:"Memory must be at least 128 MB",MAX:"Memory cannot exceed 10240 MB",MULTIPLE:"Memory must be 128 MB or a multiple of 64 MB"},TIMEOUT:{INTEGER:"Timeout must be an integer",MIN:"Timeout must be at least 1 second",MAX:"Timeout cannot exceed 900 seconds"},RUNTIME:"Lambda runtime must contain only letters, digits, dots, underscores, or dashes (e.g. 'NODEJS_20_X' or 'nodejs20.x')"},ENV_VAR_NAME:"Environment variable names must start with a letter or underscore and contain only letters, digits, and underscores",PRIORITY:{INTEGER:"Priority must be an integer",MIN:"Priority must be at least 1",MAX:"Priority cannot exceed 50000"},CAPACITY:{MIN:{INTEGER:"Minimum capacity must be an integer",MIN_0:"Minimum capacity must be at least 0",MIN_1:"Minimum capacity must be at least 1",MAX:"Minimum capacity cannot exceed 100"},MAX:{INTEGER:"Maximum capacity must be an integer",MIN_0:"Maximum capacity must be at least 0",MIN_1:"Maximum capacity must be at least 1",MAX:"Maximum capacity cannot exceed 100"},DESIRED:{INTEGER:"Desired count must be an integer",MIN:"Desired count must be at least 0",MAX:"Desired count cannot exceed 100"},WARM_POOL_REQUIRED:"minCapacity 0 requires a warmPool \u2014 without it, new tasks wait 60-90s for a cold instance launch",WARM_POOL:{MIN_SIZE:{INTEGER:"Warm pool minSize must be an integer",MIN:"Warm pool minSize must be at least 0",MAX:"Warm pool minSize cannot exceed 100"},MIN_SIZE_EXCEEDS_MAX_CAPACITY:"warmPool.minSize cannot exceed maxCapacity \u2014 the warm pool cannot hold more instances than the ASG allows"}},MEMORY_LIMIT:{INTEGER:"Memory limit must be an integer",MIN_512:"Memory limit must be at least 512 MiB",MIN_128:"Memory limit must be at least 128 MiB",MAX:"Memory limit cannot exceed 30720 MiB"},DATABASE:{PORT:{INTEGER:"Database port must be an integer",MIN:"Database port must be at least 1024",MAX:"Database port cannot exceed 65535"},NAME:{REQUIRED:"Database name is required",MAX_LENGTH:"Database name must be 63 characters or less"}},BACKUP_RETENTION:{INTEGER:"Backup retention must be an integer",MIN:"Backup retention must be at least 1 day",MAX:"Backup retention cannot exceed 35 days"},SQS:{VISIBILITY_TIMEOUT:{INTEGER:"Visibility timeout must be an integer",MIN:"Visibility timeout must be at least 0 seconds",MAX:"Visibility timeout cannot exceed 43200 seconds (12 hours)"},RETENTION_PERIOD:{INTEGER:"Retention period must be an integer",MIN:"Retention period must be at least 60 seconds",MAX:"Retention period cannot exceed 1209600 seconds (14 days)"}},READER:{COUNT:{INTEGER:"Reader count must be an integer",MIN:"Reader count must be at least 0",MAX:"Reader count cannot exceed 15"}},IDENTIFIER_SUFFIX:{REQUIRED:"Identifier suffix is required when specified",MAX_LENGTH:"Identifier suffix cannot exceed 50 characters"},ROTATION:{INTEGER:"Rotation days must be an integer",MIN:"Rotation interval must be at least 1 day",MAX:"Rotation interval cannot exceed 365 days"},MAX_CONNECTIONS:{INTEGER:"Max connections must be an integer",MIN:"Max connections must be at least 1",MAX:"Max connections cannot exceed 100"},MONITORING_INTERVAL:{INTEGER:"Monitoring interval must be an integer",MIN:"Monitoring interval must be at least 0",MAX:"Monitoring interval cannot exceed 60 seconds",VALUES:"Monitoring interval must be 0, 1, 5, 10, 15, 30, or 60 seconds"},RETENTION_DAYS:{INTEGER:"Retention days must be an integer",MIN:"Retention days must be at least 1",MAX:"Retention days cannot exceed 365"},BATCH_SIZE:{INTEGER:"Batch size must be an integer",MIN:"Batch size must be at least 1",MAX:"Batch size cannot exceed 10000"},SERVICE:{UNIQUE_WITHIN_CLUSTER:"Service names must be unique within a cluster",MIN_REQUIRED:"At least one service is required",ROUTING_REQUIRED:"Multiple services with ports require routing config (path or host)"},PROXY_CONFIG:{MAX_IDLE_CONNECTIONS:{INTEGER:"Max idle connections must be an integer",MIN:"Max idle connections must be at least 0",MAX:"Max idle connections cannot exceed 100"},BORROW_TIMEOUT:{INTEGER:"Connection borrow timeout must be an integer",MIN:"Connection borrow timeout must be at least 1 second",MAX:"Connection borrow timeout cannot exceed 3600 seconds"}},MAX_AZS:{INTEGER:"Max AZs must be an integer",MIN:"Max AZs must be at least 1",MAX:"Max AZs cannot exceed 3"},BATCHING_WINDOW:{INTEGER:"Max batching window must be an integer",MIN:"Max batching window must be at least 0",MAX:"Max batching window cannot exceed 300 seconds"},HEALTH_CHECK:{INTERVAL:{INTEGER:"Health check interval must be an integer",MIN:"Health check interval must be at least 5 seconds",MAX:"Health check interval cannot exceed 300 seconds"},TIMEOUT:{INTEGER:"Health check timeout must be an integer",MIN:"Health check timeout must be at least 2 seconds",MAX:"Health check timeout cannot exceed 60 seconds"},RETRIES:{INTEGER:"Health check retries must be an integer",MIN:"Health check retries must be at least 1",MAX:"Health check retries cannot exceed 10"},START_PERIOD:{INTEGER:"Health check start period must be an integer",MIN:"Health check start period must be at least 0 seconds",MAX:"Health check start period cannot exceed 300 seconds"}},EPHEMERAL_STORAGE:{INTEGER:"Ephemeral storage size must be an integer",MIN:"Ephemeral storage size must be at least 512 MB",MAX:"Ephemeral storage size cannot exceed 10240 MB"},MAX_MESSAGE_SIZE:{INTEGER:"Max message size must be an integer",MIN:"Max message size must be at least 1024 bytes",MAX:"Max message size cannot exceed 262144 bytes (256 KB)"},CAPACITY_CONSTRAINT:{MIN_LTE_MAX:"minCapacity must be less than or equal to maxCapacity"},DIRECT_ACCESS:{NO_DOMAIN:"directAccess cannot be used with domain (no ALB for HTTPS)",NO_LOAD_BALANCER:"directAccess cannot be used with loadBalancer (mutually exclusive)"},GLOBAL_AURORA:{PRIMARY_REGION_REQUIRED:"primaryRegion is required for GlobalAurora databases"},NAT_GATEWAY:{INTEGER:"NAT gateway count must be an integer",MIN:"NAT gateway count must be at least 0",MAX:"NAT gateway count cannot exceed 3"},CIDR_MASK:{INTEGER:"CIDR mask must be an integer",MIN:"CIDR mask must be at least 16",MAX:"CIDR mask cannot exceed 28"},CPU:{INTEGER:"CPU must be an integer",MIN:"CPU must be at least 256 units",MAX:"CPU cannot exceed 4096 units"},KMS:{KEY_REQUIRED:"KMS key ARN is required when using KMS encryption"},READER_INSTANCES:{MAX:"Cannot have more than 15 reader instances",COUNT_OR_INSTANCES:"Cannot specify both 'count' and 'instances' - use one or the other"},GENERATOR_CAPACITY:{MIN:{MIN:"Minimum capacity must be at least 1",MAX:"Minimum capacity cannot exceed 1000"},MAX:{MIN:"Maximum capacity must be at least 1",MAX:"Maximum capacity cannot exceed 1000"}},INSTANCE_TYPE:"Unknown instance type. Common types include: t4g.micro, t4g.small, m5.large",ARCHITECTURE_MISMATCH:"Architecture mismatch between instance type and AMI",ALLOCATED_STORAGE:{INTEGER:"Allocated storage must be an integer",MIN:"Allocated storage must be at least 20 GB",MAX:"Allocated storage cannot exceed 65536 GB"},DLQ:{MAX_RECEIVE_COUNT:{INTEGER:"Max receive count must be an integer",MIN:"Max receive count must be at least 1",MAX:"Max receive count cannot exceed 1000"}},ALARM:{PERCENTAGE:{MIN:"Threshold must be at least 1%",MAX:"Threshold must be at most 100%"},FREE_STORAGE_GIB:{MIN:"Free storage threshold must be at least 1 GiB"}},REGION:"Invalid AWS region",PASCAL_CASE:"Resource name must start with an uppercase letter and contain only alphanumerics (PascalCase).",IMAGE_DOCKER_MUTEX:"image and docker are mutually exclusive",AWS_ACCOUNT_ID:"AWS account id must be exactly 12 digits (no hyphens)",VPC_ID:"VPC id must look like vpc-abc12345",ROLE_ARN:"Role ARN must have the form arn:aws:iam::<account-id>:role/<name>",CIDR:"CIDR must be in dotted-quad/prefix-length form (e.g. 10.0.0.0/16)",VPC_PEER:{MIN_REQUESTER_ACCOUNTS:"At least one requester account id is required",REGION_REQUIRED:"Peer region is required when specified",ROUTE_TABLE_ID_REQUIRED:"Route table id must not be empty"},SCHEDULE_EXPRESSION:"Schedule expression must be 'rate(N minute|minutes|hour|hours|day|days)' with N>=1, or 'cron(<6-field AWS expression>)'"})});var uu=b(()=>{"use strict";xCe();ACe()});function RA(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function rP(t){return Ti.includes(t)}function nP(t){return/^[a-z]{2}-[a-z]+-[1-9]$/.test(t)}function aP(t){if(!t)return _A.slice(0,3);let e=t.toLowerCase().split("-"),r=e[0],n=e.length>1?e[1]:"",a=[];return r&&n&&(a=Ti.filter(o=>o.startsWith(`${r}-${n}`))),a.length===0&&r&&(a=Ti.filter(o=>o.startsWith(`${r}-`))),a.length>0?a.slice(0,3):_A.slice(0,3)}function oP(t){if(rP(t))return!0;let e=aP(t);return nP(t)?`Unknown region. Try: ${e.join(", ")}`:`Invalid format. Try: ${e.join(", ")}`}function R2(t){if(!t||t.trim()==="")return!0;let e=RA(t);for(let r of e){let n=oP(r);if(n!==!0)return n}return!0}function sP(t,e){return t.filter(r=>r!==e)}function CCe(t){return{label:t.city,value:t.code,description:t.optIn?`${t.code} \u2014 opt-in required`:t.code}}function Oc(){return xo.map(CCe)}function ug(t){return xo.filter(e=>e.code!==t).map(CCe)}function Sl(t){let e=xo.find(r=>r.code===t);return e?e.city:t}function O2(t){return e=>{let r=RA(e);return sP(r,t)}}var Fpt,tP,_A,KJ=b(()=>{"use strict";N();N();Fpt=["us-east-2","us-west-2","us-east-1","eu-west-1","eu-central-1","ap-southeast-1"],tP=Object.freeze(Fpt.flatMap(t=>{let e=Mv(t);return e?[e]:[]})),_A=Object.freeze(["us-east-2","us-west-2","us-east-1","eu-west-1","ap-southeast-1"])});var iP,YJ=b(()=>{"use strict";iP="2.21.0"});var cP,ff,pu,$i,du,OA,Jv=b(()=>{"use strict";cP=["Aurora","Instance","GlobalAurora","ClickHouse"],ff=["FARGATE","FARGATE_SPOT","EC2"],pu=["standard","resilient","enterprise"],$i=["tinkerer","lightweight","standard","resilient","enterprise"],du="custom",OA=[...$i,du]});function mu(t,e){return t.includes(e)}var Mpt,NA,Xv,lP,$A,uP,JJ,FA,pP,dP,mP,N2,Zv,pg,Qv,fP,Lpt,hP,XJ,ZJ,QJ,Bpt,eX,tX,gP,yP,$2,F2,eS,rX,jpt,Upt,fu,hu,nX,aX,oX,tS,ti=b(()=>{"use strict";Jv();Jv();Jv();Jv();Mpt=Object.freeze({RESOURCE_SUFFIXES:Object.freeze({storage:"Storage",database:"Database",cluster:"Cluster",function:"Function",instance:"Instance",compute:"Compute"})}),NA=["ecs","lambda","ec2"],Xv=Object.freeze({ECS:"ecs",LAMBDA:"lambda",EC2:"ec2"}),lP=["code","container"],$A=Object.freeze({CODE:"code",CONTAINER:"container"}),uP=["ARM_64","X86_64"],JJ="ARM_64",FA=["NONE","AWS_IAM"],pP=["public","internal"],dP=["CPU","MEMORY"],mP=["ARM","STANDARD"],N2=["Instance","Aurora"],Zv=["postgresql","mysql"],pg=["foundation","compliance","hardened"],Qv="FARGATE",fP=["payload","nextjs"],Lpt=new Set(fP),hP=["t3.nano","t3.micro","t3.small","t3.medium","t3.large","t3.xlarge","t3.2xlarge","t3a.nano","t3a.micro","t3a.small","t3a.medium","t3a.large","t3a.xlarge","t3a.2xlarge","t4g.nano","t4g.micro","t4g.small","t4g.medium","t4g.large","t4g.xlarge","t4g.2xlarge","c5.large","c5.xlarge","c5.2xlarge","c5.4xlarge","c5.9xlarge","c5.12xlarge","c5.18xlarge","c5.24xlarge","c5a.large","c5a.xlarge","c5a.2xlarge","c5a.4xlarge","c5a.8xlarge","c5a.12xlarge","c5a.16xlarge","c5a.24xlarge","c6g.medium","c6g.large","c6g.xlarge","c6g.2xlarge","c6g.4xlarge","c6g.8xlarge","c6g.12xlarge","c6g.16xlarge","r5.large","r5.xlarge","r5.2xlarge","r5.4xlarge","r5.8xlarge","r5.12xlarge","r5.16xlarge","r5.24xlarge","r5a.large","r5a.xlarge","r5a.2xlarge","r5a.4xlarge","r5a.8xlarge","r5a.12xlarge","r5a.16xlarge","r5a.24xlarge","r6g.medium","r6g.large","r6g.xlarge","r6g.2xlarge","r6g.4xlarge","r6g.8xlarge","r6g.12xlarge","r6g.16xlarge","i3.large","i3.xlarge","i3.2xlarge","i3.4xlarge","i3.8xlarge","i3.16xlarge","p3.2xlarge","p3.8xlarge","p3.16xlarge","g4dn.xlarge","g4dn.2xlarge","g4dn.4xlarge","g4dn.8xlarge","g4dn.12xlarge","g4dn.16xlarge","m5.large","m5.xlarge","m5.2xlarge","m5.4xlarge","m5.8xlarge","m5.12xlarge","m5.16xlarge","m5.24xlarge","m5a.large","m5a.xlarge","m5a.2xlarge","m5a.4xlarge","m5a.8xlarge","m5a.12xlarge","m5a.16xlarge","m5a.24xlarge"],XJ=[0,1,5,10,15,30,60];ZJ=1,QJ=65535,Bpt=35255,eX=128,tX=10240,gP=1,yP=900,$2=1,F2=1e3,eS=100,rX=100,jpt=1,Upt=!1,fu=3e3,hu="t4g.micro",nX=30,aX=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH"],oX=["standard","assets","upload","website"],tS=["AES256","KMS"]});function sX(t,e=bt.IDENTIFIER,r=B.IDENTIFIER){return h.string().min(2,B.IDENTIFIER_MIN_LENGTH).max(50,t).regex(e,r).refine(n=>!n.endsWith("-"),{message:B.IDENTIFIER_NO_TRAILING_HYPHEN}).refine(n=>!n.includes("--"),{message:B.IDENTIFIER_NO_CONSECUTIVE_HYPHENS})}function fg(t){return t.issues.map(e=>`${e.path.length>0?`${e.path.join(".")}: `:""}${e.message}`).join(`
|
|
94
|
+
or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return r}constructor(e){this.configProvider=new Promise((r,n)=>{typeof e=="function"?e().then(a=>{r(this.resolveDefaultConfig(a))}).catch(n):r(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(e,{abortSignal:r,requestTimeout:n}={}){this.config||(this.config=await this.configProvider);let a=this.config,o=e.protocol==="https:";return!o&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((s,i)=>{let c,l=[],u=async R=>{await c,l.forEach(mo.clearTimeout),s(R)},p=async R=>{await c,l.forEach(mo.clearTimeout),i(R)};if(r?.aborted){let R=zJ(r);p(R);return}let d=e.headers??{},m=(d.Expect??d.expect)==="100-continue",f=o?a.httpsAgent:a.httpAgent;m&&!this.externalAgent&&(f=new(o?VJ:_2)({keepAlive:!1,maxSockets:1/0})),l.push(mo.setTimeout(()=>{this.socketWarningTimestamp=t.checkSocketUsage(f,this.socketWarningTimestamp,a.logger)},a.socketAcquisitionWarningTimeout??(a.requestTimeout??2e3)+(a.connectionTimeout??1e3)));let g=X0e(e.query||{}),y;if(e.username!=null||e.password!=null){let R=e.username??"",O=e.password??"";y=`${R}:${O}`}let S=e.path;g&&(S+=`?${g}`),e.fragment&&(S+=`#${e.fragment}`);let x=e.hostname??"";x[0]==="["&&x.endsWith("]")?x=e.hostname.slice(1,-1):x=e.hostname;let C={headers:e.headers,host:x,method:e.method,path:S,port:e.port,agent:f,auth:y},T=(o?$pt:yCe)(C,R=>{let O=new I2({statusCode:R.statusCode||-1,reason:R.statusMessage,headers:rCe(R.headers),body:R});u({response:O})});if(T.on("error",R=>{eCe.includes(R.code)?p(Object.assign(R,{name:"TimeoutError"})):p(R)}),r){let R=()=>{T.destroy();let O=zJ(r);p(O)};if(typeof r.addEventListener=="function"){let O=r;O.addEventListener("abort",R,{once:!0}),T.once("close",()=>O.removeEventListener("abort",R))}else r.onabort=R}let P=n??a.requestTimeout;l.push(oCe(T,p,a.connectionTimeout)),l.push(iCe(T,p,P,a.throwOnRequestTimeout,a.logger??console)),l.push(dCe(T,p,a.socketTimeout));let _=C.agent;typeof _=="object"&&"keepAlive"in _&&l.push(lCe(T,{keepAlive:_.keepAlive,keepAliveMsecs:_.keepAliveMsecs})),c=hCe(T,e,P,this.externalAgent).catch(R=>(l.forEach(mo.clearTimeout),i(R)))})}updateHttpClientConfig(e,r){this.config=void 0,this.configProvider=this.configProvider.then(n=>({...n,[e]:r}))}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:r,connectionTimeout:n,socketTimeout:a,socketAcquisitionWarningTimeout:o,httpAgent:s,httpsAgent:i,throwOnRequestTimeout:c,logger:l}=e||{},u=!0,p=50;return{connectionTimeout:n,requestTimeout:r,socketTimeout:a,socketAcquisitionWarningTimeout:o,throwOnRequestTimeout:c,httpAgentProvider:async()=>{let{Agent:d,request:m}=await import("node:http");return yCe=m,_2=d,s instanceof _2||typeof s?.destroy=="function"?(this.externalAgent=!0,s):new _2({keepAlive:u,maxSockets:p,...s})},httpsAgent:i instanceof VJ||typeof i?.destroy=="function"?(this.externalAgent=!0,i):new VJ({keepAlive:u,maxSockets:p,...i}),logger:l}}}});var SCe=b(()=>{});var ECe=b(()=>{});var PA=b(()=>{vCe();SCe();ECe()});var QI,WJ=b(()=>{"use strict";QI=["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","AWS_SECURITY_TOKEN","AWS_REGION","AWS_DEFAULT_REGION"]});var eP=b(()=>{"use strict";N()});function mf(t){return t.success===!0}function Cr(t){return t.success===!1}function A(t){return{success:!0,data:t}}function v(t){return{success:!1,error:t}}async function GJ(t){try{let e=await t();return A(e)}catch(e){return v(xr(e))}}function qJ(t){try{let e=t();return A(e)}catch(e){return v(xr(e))}}var Qr=b(()=>{"use strict";eP()});function HJ(t){let e=/^rate\((\d+) (minute|minutes|hour|hours|day|days)\)$/.exec(t);if(!e)return;let r=e[1],n=e[2];if(r===void 0||n===void 0)return;let a=parseInt(r,10);if(!Number.isFinite(a)||a<1)return;let o=n==="minute"||n==="hour"||n==="day";if(!(o&&a!==1)&&!(!o&&a===1))return n==="minute"||n==="minutes"?{everyMs:a*6e4}:n==="hour"||n==="hours"?{everyMs:a*60*6e4}:{everyMs:a*24*60*6e4}}var bCe,bt,xCe=b(()=>{"use strict";bCe=/^[a-zA-Z][a-zA-Z0-9-]*$/,bt=Object.freeze({IDENTIFIER:bCe,NEW_APP_NAME:/^[a-z][a-z0-9-]*$/,RESOURCE_NAME:/^[a-zA-Z][a-zA-Z0-9]*$/,ECS_SERVICE_NAME:bCe,BUCKET_NAME:/^[a-z][a-z0-9-]*[a-z0-9]$|^[a-z][a-z0-9]*$/,DATABASE_NAME:/^[a-zA-Z][a-zA-Z0-9_]*$/,RESOURCE_TYPE:/^[a-z]+(:[a-z]+)?$/,SSM_PATH:/^\/[a-zA-Z][a-zA-Z0-9-]*(\/[a-zA-Z][a-zA-Z0-9-]*)*$/,SECRET_NAME:/^[a-zA-Z_][a-zA-Z0-9._-]*$/,SSM_COMPONENT:/^[a-zA-Z][a-zA-Z0-9._-]*$/,EMAIL:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,DOCKER_IMAGE:/^[a-z0-9][a-z0-9._-]*[a-z0-9](:[a-z0-9._-]+)?$/,DOMAIN:/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/i,PASCAL_CASE:/^[A-Z][A-Za-z0-9]*$/,AWS_ACCOUNT_ID:/^\d{12}$/,VPC_ID:/^vpc-[a-z0-9]+$/,ROLE_ARN:/^arn:aws[a-zA-Z-]*:iam::\d{12}:role\/.+$/,CIDR:/^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\/(3[0-2]|[12]?\d)$/,SCHEDULE_EXPRESSION:/^(rate\(1 (?:minute|hour|day)\)|rate\((?:[2-9]|[1-9]\d+) (?:minutes|hours|days)\)|cron\([^\s()]+ [^\s()]+ [^\s()]+ [^\s()]+ [^\s()]+ [^\s()]+\))$/,LAMBDA_RUNTIME_IDENTIFIER:/^[A-Za-z0-9._-]+$/,ENV_VAR_NAME:/^[A-Za-z_][A-Za-z0-9_]*$/})});var B,ACe=b(()=>{"use strict";B=Object.freeze({IDENTIFIER:"Must start with a letter, contain only letters, numbers, and hyphens",NEW_APP_NAME:"Must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens",IDENTIFIER_MIN_LENGTH:"Must be at least 2 characters",IDENTIFIER_NO_TRAILING_HYPHEN:"Must not end with a hyphen",IDENTIFIER_NO_CONSECUTIVE_HYPHENS:"Must not contain consecutive hyphens",RESOURCE_NAME:"Must start with a letter and contain only letters and numbers (PascalCase recommended)",ECS_SERVICE_NAME:"Service name must start with a letter and contain only letters, numbers, and hyphens",BUCKET_NAME:"Bucket name must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens",DATABASE_NAME:"Database name must start with a letter and contain only letters, numbers, and underscores",RESOURCE_TYPE:"Resource type must be in format 'category' or 'category:type'",SSM_PATH:"SSM path must start with / and contain valid namespace segments (e.g., /myapp/ApiCluster/service)",SECRET_NAME:"Secret name must start with a letter or underscore and contain only letters, numbers, underscores, hyphens, or periods",SSM_COMPONENT:"Must start with a letter and contain only letters, numbers, periods, hyphens, or underscores",EMAIL:"Please enter a valid email address",DOMAIN:"Please enter a valid domain (e.g., cms.example.com)",DOCKER_IMAGE:"Invalid Docker image name format",REQUIRED:{APP_NAME:"Application name is required",RESOURCE_NAME:"Resource name is required",BUCKET_NAME:"Bucket name is required",SERVICE_NAME:"Service name is required",NETWORK_NAME:"Network name is required",DATABASE_NAME:"Database name is required",ORGANISATION_NAME:"Organisation name is required",EMAIL:"Email is required",NAME:"Name is required",USERNAME:"Username is required",CONTAINER_NAME:"Container name is required",FIRST_NAME:"First name is required",LAST_NAME:"Last name is required",GROUP:"Group is required",PATTERN_NAME:"Pattern name is required",ROUTING_PATH:"Routing path is required",RESOURCE_REFERENCE:"Resource reference is required",RESOURCE_TYPE:"Resource type is required",VARIANT:"Variant is required",SUBTYPE:"Subtype is required",DEPLOY_TARGET:"Deploy target is required",DESTROY_TARGET:"Destroy target is required"},MAX_LENGTH:{APP_NAME:"Application name must be 50 characters or less",RESOURCE_NAME:"Resource name must be 63 characters or less",BUCKET_NAME:"Bucket name must be 63 characters or less",SERVICE_NAME:"Service name must be 255 characters or less",NETWORK_NAME:"Network name must be 50 characters or less",DATABASE_NAME:"Database name must be 63 characters or less",ORGANISATION_NAME:"Organisation name must be 50 characters or less"},PORT:{INTEGER:"Port must be an integer",MIN:"Port must be at least 1",MAX:"Port cannot exceed 65535"},USERNAME:{MAX_LENGTH:"Username cannot exceed 63 characters"},LAMBDA:{MEMORY:{INTEGER:"Lambda memory must be an integer",MIN:"Memory must be at least 128 MB",MAX:"Memory cannot exceed 10240 MB",MULTIPLE:"Memory must be 128 MB or a multiple of 64 MB"},TIMEOUT:{INTEGER:"Timeout must be an integer",MIN:"Timeout must be at least 1 second",MAX:"Timeout cannot exceed 900 seconds"},RUNTIME:"Lambda runtime must contain only letters, digits, dots, underscores, or dashes (e.g. 'NODEJS_20_X' or 'nodejs20.x')"},ENV_VAR_NAME:"Environment variable names must start with a letter or underscore and contain only letters, digits, and underscores",PRIORITY:{INTEGER:"Priority must be an integer",MIN:"Priority must be at least 1",MAX:"Priority cannot exceed 50000"},CAPACITY:{MIN:{INTEGER:"Minimum capacity must be an integer",MIN_0:"Minimum capacity must be at least 0",MIN_1:"Minimum capacity must be at least 1",MAX:"Minimum capacity cannot exceed 100"},MAX:{INTEGER:"Maximum capacity must be an integer",MIN_0:"Maximum capacity must be at least 0",MIN_1:"Maximum capacity must be at least 1",MAX:"Maximum capacity cannot exceed 100"},DESIRED:{INTEGER:"Desired count must be an integer",MIN:"Desired count must be at least 0",MAX:"Desired count cannot exceed 100"},WARM_POOL_REQUIRED:"minCapacity 0 requires a warmPool \u2014 without it, new tasks wait 60-90s for a cold instance launch",WARM_POOL:{MIN_SIZE:{INTEGER:"Warm pool minSize must be an integer",MIN:"Warm pool minSize must be at least 0",MAX:"Warm pool minSize cannot exceed 100"},MIN_SIZE_EXCEEDS_MAX_CAPACITY:"warmPool.minSize cannot exceed maxCapacity \u2014 the warm pool cannot hold more instances than the ASG allows"}},MEMORY_LIMIT:{INTEGER:"Memory limit must be an integer",MIN_512:"Memory limit must be at least 512 MiB",MIN_128:"Memory limit must be at least 128 MiB",MAX:"Memory limit cannot exceed 30720 MiB"},DATABASE:{PORT:{INTEGER:"Database port must be an integer",MIN:"Database port must be at least 1024",MAX:"Database port cannot exceed 65535"},NAME:{REQUIRED:"Database name is required",MAX_LENGTH:"Database name must be 63 characters or less"}},BACKUP_RETENTION:{INTEGER:"Backup retention must be an integer",MIN:"Backup retention must be at least 1 day",MAX:"Backup retention cannot exceed 35 days"},SQS:{VISIBILITY_TIMEOUT:{INTEGER:"Visibility timeout must be an integer",MIN:"Visibility timeout must be at least 0 seconds",MAX:"Visibility timeout cannot exceed 43200 seconds (12 hours)"},RETENTION_PERIOD:{INTEGER:"Retention period must be an integer",MIN:"Retention period must be at least 60 seconds",MAX:"Retention period cannot exceed 1209600 seconds (14 days)"}},READER:{COUNT:{INTEGER:"Reader count must be an integer",MIN:"Reader count must be at least 0",MAX:"Reader count cannot exceed 15"}},IDENTIFIER_SUFFIX:{REQUIRED:"Identifier suffix is required when specified",MAX_LENGTH:"Identifier suffix cannot exceed 50 characters"},ROTATION:{INTEGER:"Rotation days must be an integer",MIN:"Rotation interval must be at least 1 day",MAX:"Rotation interval cannot exceed 365 days"},MAX_CONNECTIONS:{INTEGER:"Max connections must be an integer",MIN:"Max connections must be at least 1",MAX:"Max connections cannot exceed 100"},MONITORING_INTERVAL:{INTEGER:"Monitoring interval must be an integer",MIN:"Monitoring interval must be at least 0",MAX:"Monitoring interval cannot exceed 60 seconds",VALUES:"Monitoring interval must be 0, 1, 5, 10, 15, 30, or 60 seconds"},RETENTION_DAYS:{INTEGER:"Retention days must be an integer",MIN:"Retention days must be at least 1",MAX:"Retention days cannot exceed 365"},BATCH_SIZE:{INTEGER:"Batch size must be an integer",MIN:"Batch size must be at least 1",MAX:"Batch size cannot exceed 10000"},SERVICE:{UNIQUE_WITHIN_CLUSTER:"Service names must be unique within a cluster",MIN_REQUIRED:"At least one service is required",ROUTING_REQUIRED:"Multiple services with ports require routing config (path or host)"},PROXY_CONFIG:{MAX_IDLE_CONNECTIONS:{INTEGER:"Max idle connections must be an integer",MIN:"Max idle connections must be at least 0",MAX:"Max idle connections cannot exceed 100"},BORROW_TIMEOUT:{INTEGER:"Connection borrow timeout must be an integer",MIN:"Connection borrow timeout must be at least 1 second",MAX:"Connection borrow timeout cannot exceed 3600 seconds"}},MAX_AZS:{INTEGER:"Max AZs must be an integer",MIN:"Max AZs must be at least 1",MAX:"Max AZs cannot exceed 3"},BATCHING_WINDOW:{INTEGER:"Max batching window must be an integer",MIN:"Max batching window must be at least 0",MAX:"Max batching window cannot exceed 300 seconds"},HEALTH_CHECK:{INTERVAL:{INTEGER:"Health check interval must be an integer",MIN:"Health check interval must be at least 5 seconds",MAX:"Health check interval cannot exceed 300 seconds"},TIMEOUT:{INTEGER:"Health check timeout must be an integer",MIN:"Health check timeout must be at least 2 seconds",MAX:"Health check timeout cannot exceed 60 seconds"},RETRIES:{INTEGER:"Health check retries must be an integer",MIN:"Health check retries must be at least 1",MAX:"Health check retries cannot exceed 10"},START_PERIOD:{INTEGER:"Health check start period must be an integer",MIN:"Health check start period must be at least 0 seconds",MAX:"Health check start period cannot exceed 300 seconds"}},EPHEMERAL_STORAGE:{INTEGER:"Ephemeral storage size must be an integer",MIN:"Ephemeral storage size must be at least 512 MB",MAX:"Ephemeral storage size cannot exceed 10240 MB"},MAX_MESSAGE_SIZE:{INTEGER:"Max message size must be an integer",MIN:"Max message size must be at least 1024 bytes",MAX:"Max message size cannot exceed 262144 bytes (256 KB)"},CAPACITY_CONSTRAINT:{MIN_LTE_MAX:"minCapacity must be less than or equal to maxCapacity"},DIRECT_ACCESS:{NO_DOMAIN:"directAccess cannot be used with domain (no ALB for HTTPS)",NO_LOAD_BALANCER:"directAccess cannot be used with loadBalancer (mutually exclusive)"},GLOBAL_AURORA:{PRIMARY_REGION_REQUIRED:"primaryRegion is required for GlobalAurora databases"},NAT_GATEWAY:{INTEGER:"NAT gateway count must be an integer",MIN:"NAT gateway count must be at least 0",MAX:"NAT gateway count cannot exceed 3"},CIDR_MASK:{INTEGER:"CIDR mask must be an integer",MIN:"CIDR mask must be at least 16",MAX:"CIDR mask cannot exceed 28"},CPU:{INTEGER:"CPU must be an integer",MIN:"CPU must be at least 256 units",MAX:"CPU cannot exceed 4096 units"},KMS:{KEY_REQUIRED:"KMS key ARN is required when using KMS encryption"},READER_INSTANCES:{MAX:"Cannot have more than 15 reader instances",COUNT_OR_INSTANCES:"Cannot specify both 'count' and 'instances' - use one or the other"},GENERATOR_CAPACITY:{MIN:{MIN:"Minimum capacity must be at least 1",MAX:"Minimum capacity cannot exceed 1000"},MAX:{MIN:"Maximum capacity must be at least 1",MAX:"Maximum capacity cannot exceed 1000"}},INSTANCE_TYPE:"Unknown instance type. Common types include: t4g.micro, t4g.small, m5.large",ARCHITECTURE_MISMATCH:"Architecture mismatch between instance type and AMI",ALLOCATED_STORAGE:{INTEGER:"Allocated storage must be an integer",MIN:"Allocated storage must be at least 20 GB",MAX:"Allocated storage cannot exceed 65536 GB"},DLQ:{MAX_RECEIVE_COUNT:{INTEGER:"Max receive count must be an integer",MIN:"Max receive count must be at least 1",MAX:"Max receive count cannot exceed 1000"}},ALARM:{PERCENTAGE:{MIN:"Threshold must be at least 1%",MAX:"Threshold must be at most 100%"},FREE_STORAGE_GIB:{MIN:"Free storage threshold must be at least 1 GiB"}},REGION:"Invalid AWS region",PASCAL_CASE:"Resource name must start with an uppercase letter and contain only alphanumerics (PascalCase).",IMAGE_DOCKER_MUTEX:"image and docker are mutually exclusive",AWS_ACCOUNT_ID:"AWS account id must be exactly 12 digits (no hyphens)",VPC_ID:"VPC id must look like vpc-abc12345",ROLE_ARN:"Role ARN must have the form arn:aws:iam::<account-id>:role/<name>",CIDR:"CIDR must be in dotted-quad/prefix-length form (e.g. 10.0.0.0/16)",VPC_PEER:{MIN_REQUESTER_ACCOUNTS:"At least one requester account id is required",REGION_REQUIRED:"Peer region is required when specified",ROUTE_TABLE_ID_REQUIRED:"Route table id must not be empty"},SCHEDULE_EXPRESSION:"Schedule expression must be 'rate(N minute|minutes|hour|hours|day|days)' with N>=1, or 'cron(<6-field AWS expression>)'"})});var uu=b(()=>{"use strict";xCe();ACe()});function RA(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function rP(t){return Ti.includes(t)}function nP(t){return/^[a-z]{2}-[a-z]+-[1-9]$/.test(t)}function aP(t){if(!t)return _A.slice(0,3);let e=t.toLowerCase().split("-"),r=e[0],n=e.length>1?e[1]:"",a=[];return r&&n&&(a=Ti.filter(o=>o.startsWith(`${r}-${n}`))),a.length===0&&r&&(a=Ti.filter(o=>o.startsWith(`${r}-`))),a.length>0?a.slice(0,3):_A.slice(0,3)}function oP(t){if(rP(t))return!0;let e=aP(t);return nP(t)?`Unknown region. Try: ${e.join(", ")}`:`Invalid format. Try: ${e.join(", ")}`}function R2(t){if(!t||t.trim()==="")return!0;let e=RA(t);for(let r of e){let n=oP(r);if(n!==!0)return n}return!0}function sP(t,e){return t.filter(r=>r!==e)}function CCe(t){return{label:t.city,value:t.code,description:t.optIn?`${t.code} \u2014 opt-in required`:t.code}}function Oc(){return xo.map(CCe)}function ug(t){return xo.filter(e=>e.code!==t).map(CCe)}function Sl(t){let e=xo.find(r=>r.code===t);return e?e.city:t}function O2(t){return e=>{let r=RA(e);return sP(r,t)}}var Fpt,tP,_A,KJ=b(()=>{"use strict";N();N();Fpt=["us-east-2","us-west-2","us-east-1","eu-west-1","eu-central-1","ap-southeast-1"],tP=Object.freeze(Fpt.flatMap(t=>{let e=Mv(t);return e?[e]:[]})),_A=Object.freeze(["us-east-2","us-west-2","us-east-1","eu-west-1","ap-southeast-1"])});var iP,YJ=b(()=>{"use strict";iP="2.22.0"});var cP,ff,pu,$i,du,OA,Jv=b(()=>{"use strict";cP=["Aurora","Instance","GlobalAurora","ClickHouse"],ff=["FARGATE","FARGATE_SPOT","EC2"],pu=["standard","resilient","enterprise"],$i=["tinkerer","lightweight","standard","resilient","enterprise"],du="custom",OA=[...$i,du]});function mu(t,e){return t.includes(e)}var Mpt,NA,Xv,lP,$A,uP,JJ,FA,pP,dP,mP,N2,Zv,pg,Qv,fP,Lpt,hP,XJ,ZJ,QJ,Bpt,eX,tX,gP,yP,$2,F2,eS,rX,jpt,Upt,fu,hu,nX,aX,oX,tS,ti=b(()=>{"use strict";Jv();Jv();Jv();Jv();Mpt=Object.freeze({RESOURCE_SUFFIXES:Object.freeze({storage:"Storage",database:"Database",cluster:"Cluster",function:"Function",instance:"Instance",compute:"Compute"})}),NA=["ecs","lambda","ec2"],Xv=Object.freeze({ECS:"ecs",LAMBDA:"lambda",EC2:"ec2"}),lP=["code","container"],$A=Object.freeze({CODE:"code",CONTAINER:"container"}),uP=["ARM_64","X86_64"],JJ="ARM_64",FA=["NONE","AWS_IAM"],pP=["public","internal"],dP=["CPU","MEMORY"],mP=["ARM","STANDARD"],N2=["Instance","Aurora"],Zv=["postgresql","mysql"],pg=["foundation","compliance","hardened"],Qv="FARGATE",fP=["payload","nextjs"],Lpt=new Set(fP),hP=["t3.nano","t3.micro","t3.small","t3.medium","t3.large","t3.xlarge","t3.2xlarge","t3a.nano","t3a.micro","t3a.small","t3a.medium","t3a.large","t3a.xlarge","t3a.2xlarge","t4g.nano","t4g.micro","t4g.small","t4g.medium","t4g.large","t4g.xlarge","t4g.2xlarge","c5.large","c5.xlarge","c5.2xlarge","c5.4xlarge","c5.9xlarge","c5.12xlarge","c5.18xlarge","c5.24xlarge","c5a.large","c5a.xlarge","c5a.2xlarge","c5a.4xlarge","c5a.8xlarge","c5a.12xlarge","c5a.16xlarge","c5a.24xlarge","c6g.medium","c6g.large","c6g.xlarge","c6g.2xlarge","c6g.4xlarge","c6g.8xlarge","c6g.12xlarge","c6g.16xlarge","r5.large","r5.xlarge","r5.2xlarge","r5.4xlarge","r5.8xlarge","r5.12xlarge","r5.16xlarge","r5.24xlarge","r5a.large","r5a.xlarge","r5a.2xlarge","r5a.4xlarge","r5a.8xlarge","r5a.12xlarge","r5a.16xlarge","r5a.24xlarge","r6g.medium","r6g.large","r6g.xlarge","r6g.2xlarge","r6g.4xlarge","r6g.8xlarge","r6g.12xlarge","r6g.16xlarge","i3.large","i3.xlarge","i3.2xlarge","i3.4xlarge","i3.8xlarge","i3.16xlarge","p3.2xlarge","p3.8xlarge","p3.16xlarge","g4dn.xlarge","g4dn.2xlarge","g4dn.4xlarge","g4dn.8xlarge","g4dn.12xlarge","g4dn.16xlarge","m5.large","m5.xlarge","m5.2xlarge","m5.4xlarge","m5.8xlarge","m5.12xlarge","m5.16xlarge","m5.24xlarge","m5a.large","m5a.xlarge","m5a.2xlarge","m5a.4xlarge","m5a.8xlarge","m5a.12xlarge","m5a.16xlarge","m5a.24xlarge"],XJ=[0,1,5,10,15,30,60];ZJ=1,QJ=65535,Bpt=35255,eX=128,tX=10240,gP=1,yP=900,$2=1,F2=1e3,eS=100,rX=100,jpt=1,Upt=!1,fu=3e3,hu="t4g.micro",nX=30,aX=["GET","POST","PUT","DELETE","HEAD","OPTIONS","PATCH"],oX=["standard","assets","upload","website"],tS=["AES256","KMS"]});function sX(t,e=bt.IDENTIFIER,r=B.IDENTIFIER){return h.string().min(2,B.IDENTIFIER_MIN_LENGTH).max(50,t).regex(e,r).refine(n=>!n.endsWith("-"),{message:B.IDENTIFIER_NO_TRAILING_HYPHEN}).refine(n=>!n.includes("--"),{message:B.IDENTIFIER_NO_CONSECUTIVE_HYPHENS})}function fg(t){return t.issues.map(e=>`${e.path.length>0?`${e.path.join(".")}: `:""}${e.message}`).join(`
|
|
95
95
|
`)}var Fi,dg,MA,Qt,LA,mg,vn,rS,El,_s,wCe,TCe,DCe,kCe,ICe,nS,PCe,iX,zpt,BA,jA,_Ce,RCe,cX,lX,uX,UA,aS,Ao,Vpt,hf=b(()=>{"use strict";Mt();uu();ti();KJ();Fi=t=>h.union([h.literal(!1),t]),dg={check:t=>t.minCapacity!==void 0&&t.maxCapacity!==void 0?t.minCapacity<=t.maxCapacity:!0,params:{message:B.CAPACITY_CONSTRAINT.MIN_LTE_MAX,path:["maxCapacity"]}},MA=t=>h.number().int(B.MEMORY_LIMIT.INTEGER).min(t,t===128?B.MEMORY_LIMIT.MIN_128:B.MEMORY_LIMIT.MIN_512).max(30720,B.MEMORY_LIMIT.MAX),Qt=h.string().min(1,B.REQUIRED.RESOURCE_NAME).max(63,B.MAX_LENGTH.RESOURCE_NAME).regex(bt.RESOURCE_NAME,B.RESOURCE_NAME),LA=h.string().min(1,B.REQUIRED.BUCKET_NAME).max(63,B.MAX_LENGTH.BUCKET_NAME).regex(bt.BUCKET_NAME,B.BUCKET_NAME),mg=h.string().min(1,B.REQUIRED.DATABASE_NAME).max(63,B.MAX_LENGTH.DATABASE_NAME).regex(bt.DATABASE_NAME,B.DATABASE_NAME);vn=sX(B.MAX_LENGTH.APP_NAME),rS=sX(B.MAX_LENGTH.APP_NAME,bt.NEW_APP_NAME,B.NEW_APP_NAME),El=h.number().int(B.PORT.INTEGER).min(ZJ,B.PORT.MIN).max(QJ,B.PORT.MAX),_s=h.object({key:h.string(),sourceText:h.string()}).strict(),wCe=h.object({__identifier:h.string()}).strict(),TCe=h.object({__expression:h.string()}).strict(),DCe=h.object({__call:h.string()}).strict(),kCe=h.union([wCe,TCe,DCe]),ICe=h.union([h.string(),h.number(),h.boolean(),kCe]),nS=h.record(h.string().regex(bt.ENV_VAR_NAME,B.ENV_VAR_NAME),ICe),PCe=h.object({id:h.string(),name:h.string().optional(),arn:h.string().optional(),field:h.string().optional()}).strict().refine(t=>t.name!==void 0!=(t.arn!==void 0),{message:"secretsImport requires exactly one of `name` or `arn`."}),iX=h.record(h.string(),PCe),zpt=h.record(h.string(),h.unknown()),BA=h.enum(OA).describe(`Application type must be one of: ${OA.join(", ")}`),jA=h.enum(fP).describe(`OpenNext deployment pattern: ${fP.join(", ")}`),_Ce=h.enum(["before-imports","after-imports","after-app-init","after-tags","after-resource","end-of-file"]),RCe=h.enum(["import","app-init","tags","database","compute","storage","network","messaging","cdn","pattern","vpc-peer","vpc-peer-accepter","cross-plan-connection","custom"]),cX=h.object({sourceText:h.string(),position:_Ce,afterManagedResource:h.object({type:RCe,name:h.string().optional()}).strict().optional(),originalLine:h.number().int().optional(),leadingComments:h.array(h.string()).optional(),orphaned:h.boolean().optional(),orphanedComment:h.string().optional()}).strict(),lX=h.union([h.object({tier:h.enum(pu)}).strict(),h.literal(!1)]),uX=h.union([h.object({instanceType:h.string().optional()}).strict(),h.literal(!1)]),UA=sX(B.MAX_LENGTH.ORGANISATION_NAME),aS=h.string().regex(bt.EMAIL,B.EMAIL),Ao=h.string().refine(t=>Ti.includes(t),{message:B.REGION}),Vpt=h.object({name:UA,email:aS,accountName:h.string().optional(),primaryRegion:Ao.optional().default(ze),secondaryRegions:h.array(Ao).optional(),security:h.enum(pg).optional(),force:h.boolean().optional()}).strict()});var zA,Wpt,pX,dX,mX,M2=b(()=>{"use strict";Mt();uu();zA=h.number().min(1,B.ALARM.PERCENTAGE.MIN).max(100,B.ALARM.PERCENTAGE.MAX),Wpt=h.number().min(1,B.ALARM.FREE_STORAGE_GIB.MIN),pX=h.union([h.literal(!1),h.object({cpuThreshold:zA.optional(),memoryThreshold:zA.optional(),runningTasksMinimum:h.number().int().min(0).optional(),http5xxThreshold:zA.optional()}).strict()]),dX=h.union([h.literal(!1),h.object({cpuThreshold:zA.optional(),freeStorageThresholdGiB:Wpt.optional(),connectionsThreshold:h.number().int().min(1).optional()}).strict()]),mX=h.union([h.literal(!1),h.object({errorRateThreshold:zA.optional(),durationThresholdPercent:zA.optional()}).strict()])});var Nd,VA,vP,OCe,NCe,$Ce,FCe,SP,EP,bP,MCe,WA,LCe,GA,BCe,jCe,fX,UCe,xP,AP,CP,B2,zCe,VCe,WCe,GCe,qCe,Gpt,qpt,Hpt,Kpt,j2,hX,Ypt,Jpt,Xpt,Zpt,Qpt,gX,qA,edt,L2,yX,tdt,vX,wP=b(()=>{"use strict";Mt();uu();ti();hf();M2();Nd=h.number().int(B.BACKUP_RETENTION.INTEGER).min(1,B.BACKUP_RETENTION.MIN).max(35,B.BACKUP_RETENTION.MAX),VA=h.number().int(B.MONITORING_INTERVAL.INTEGER).refine(t=>mu(XJ,t),{message:B.MONITORING_INTERVAL.VALUES}),vP=h.number().int(B.DATABASE.PORT.INTEGER).min(1024,B.DATABASE.PORT.MIN).max(65535,B.DATABASE.PORT.MAX),OCe=h.enum(cP).describe(`Database type must be one of: ${cP.join(", ")}`),NCe=h.object({maxConnections:h.number().int(B.MAX_CONNECTIONS.INTEGER).min(1,B.MAX_CONNECTIONS.MIN).max(100,B.MAX_CONNECTIONS.MAX).optional(),maxIdleConnections:h.number().int(B.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.INTEGER).min(0,B.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MIN).max(100,B.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MAX).optional(),connectionBorrowTimeout:h.number().int(B.PROXY_CONFIG.BORROW_TIMEOUT.INTEGER).min(1,B.PROXY_CONFIG.BORROW_TIMEOUT.MIN).max(3600,B.PROXY_CONFIG.BORROW_TIMEOUT.MAX).optional(),requireTLS:h.boolean().optional()}).strict().describe("RDS Proxy configuration"),$Ce=h.object({instanceType:h.string().optional(),availabilityZone:h.string().optional()}).strict().describe("Read replica configuration"),FCe=h.object({automaticallyAfterDays:h.number().int(B.ROTATION.INTEGER).min(1,B.ROTATION.MIN).max(365,B.ROTATION.MAX).optional()}).strict().describe("Secret rotation configuration"),SP=h.object({username:h.string().min(1,B.REQUIRED.USERNAME).max(63,B.USERNAME.MAX_LENGTH).optional(),secretRotation:FCe.optional()}).strict().describe("Database credentials configuration"),EP=Fi(NCe),bP=Fi($Ce),MCe=h.object({scaleWithWriter:h.boolean().optional(),enableDatabaseInsights:h.boolean().optional(),identifierSuffix:h.string().min(1,B.IDENTIFIER_SUFFIX.REQUIRED).max(50,B.IDENTIFIER_SUFFIX.MAX_LENGTH).optional(),availabilityZone:h.string().optional()}).strict().describe("Configuration for a single Aurora reader instance"),WA=h.object({enableDatabaseInsights:h.boolean().optional(),identifierSuffix:h.string().min(1,B.IDENTIFIER_SUFFIX.REQUIRED).max(50,B.IDENTIFIER_SUFFIX.MAX_LENGTH).optional(),availabilityZone:h.string().optional()}).strict().describe("Configuration for Aurora writer instance"),LCe=h.object({count:h.number().int(B.READER.COUNT.INTEGER).min(0,B.READER.COUNT.MIN).max(15,B.READER.COUNT.MAX).optional(),instances:h.array(MCe).max(15,B.READER_INSTANCES.MAX).optional(),defaultEnableDatabaseInsights:h.boolean().optional()}).strict().refine(t=>!(t.count!==void 0&&t.instances!==void 0),{message:B.READER_INSTANCES.COUNT_OR_INSTANCES,path:["count"]}).describe("Aurora readers configuration"),GA=Fi(LCe),BCe=h.object({awsManaged:h.literal(!0)}).strict(),jCe=h.object({useCMK:h.literal(!0)}).strict(),fX=h.union([BCe,jCe]),UCe=h.object({mode:h.enum(["standard","advanced"]).optional(),encryptionKey:fX.optional()}).strict().describe("Database Insights configuration"),xP=Fi(UCe),AP=h.object({storageKey:fX.optional()}).strict().describe("Encryption configuration (DESTRUCTIVE to change storageKey)"),CP=h.object({name:Qt,type:OCe,databaseName:h.string().min(1,B.REQUIRED.DATABASE_NAME),instanceType:h.string().optional(),allocatedStorage:h.number().optional(),multiAz:h.boolean().optional(),publiclyAccessible:h.boolean().optional(),databaseInsights:xP.optional(),port:vP.optional(),deletionProtection:h.boolean().optional(),proxy:EP.optional(),credentials:SP.optional(),readReplica:bP.optional(),encryption:AP.optional(),writer:WA.optional(),readers:GA.optional(),backupRetention:Nd.optional(),preferredMaintenanceWindow:h.string().optional(),monitoringInterval:VA.optional(),primaryRegion:h.string().optional(),secondaryRegions:h.array(h.string()).optional(),globalClusterIdentifier:h.string().optional(),enableGlobalWriteForwarding:h.boolean().optional(),snapshotIdentifier:h.string().optional(),snapshotUsername:h.string().optional(),databaseEngine:h.enum(Zv).optional(),engineExpression:h.string().optional(),variableName:h.string().optional(),extraProperties:h.array(_s).optional(),alarms:dX.optional()}).strict(),B2=h.object({appName:vn,nameProvidedByFlag:h.boolean().optional(),databaseName:h.string().min(1,B.REQUIRED.DATABASE_NAME).max(63,B.MAX_LENGTH.DATABASE_NAME).regex(bt.DATABASE_NAME,B.DATABASE_NAME),resourceName:Qt.optional(),connectionConfig:h.object({connectToCompute:h.array(h.string()).optional(),connectToServices:h.array(h.string()).optional()}).strict().optional(),databaseInsights:xP.optional(),port:vP.optional(),proxy:EP.optional(),credentials:SP.optional(),encryption:AP.optional(),deletionProtection:h.boolean().optional()}).strict(),zCe={databaseType:h.literal("Instance"),instanceType:h.string().optional(),multiAz:h.boolean().optional(),readReplica:bP.optional(),publiclyAccessible:h.boolean().optional(),backupRetention:Nd.optional(),allocatedStorage:h.number().optional(),snapshotIdentifier:h.string().optional(),snapshotUsername:h.string().optional()},VCe={databaseType:h.literal("Aurora"),writer:WA.optional(),readers:GA.optional(),backupRetention:Nd.optional(),preferredMaintenanceWindow:h.string().optional(),monitoringInterval:VA.optional(),snapshotIdentifier:h.string().optional(),snapshotUsername:h.string().optional()},WCe={databaseType:h.literal("GlobalAurora"),primaryRegion:h.string().min(1,B.GLOBAL_AURORA.PRIMARY_REGION_REQUIRED),secondaryRegions:h.array(h.string()).optional(),globalClusterIdentifier:h.string().optional(),enableGlobalWriteForwarding:h.boolean().optional(),writer:WA.optional(),readers:GA.optional(),backupRetention:Nd.optional(),preferredMaintenanceWindow:h.string().optional(),monitoringInterval:VA.optional(),snapshotIdentifier:h.string().optional(),snapshotUsername:h.string().optional()},GCe=h.object({appName:vn,nameProvidedByFlag:h.boolean().optional(),databaseName:h.string().min(1,B.REQUIRED.DATABASE_NAME).max(63,B.MAX_LENGTH.DATABASE_NAME).regex(bt.DATABASE_NAME,B.DATABASE_NAME),resourceName:Qt.optional(),connectionConfig:h.object({connectToCompute:h.array(h.string()).optional(),connectToServices:h.array(h.string()).optional()}).strict().optional()}).strict(),qCe={databaseType:h.literal("ClickHouse"),instanceType:h.string().optional(),coldTier:h.union([h.object({mode:h.literal("s3")}).strict(),h.literal(!1)]).optional(),optimiseSchedule:h.union([h.string(),h.literal(!1)]).optional(),backupSchedule:h.union([h.string(),h.literal(!1)]).optional(),backupRetentionDays:Nd.optional()},Gpt=B2.extend(zCe).strict(),qpt=B2.extend(VCe).strict(),Hpt=B2.extend(WCe).strict(),Kpt=GCe.extend(qCe).strict(),j2=h.discriminatedUnion("databaseType",[Gpt,qpt,Hpt,Kpt]),hX=B2.extend({resourceName:Qt}).strict(),Ypt=hX.extend(zCe).strict(),Jpt=hX.extend(VCe).strict(),Xpt=hX.extend(WCe).strict(),Zpt=GCe.extend({resourceName:Qt}).strict(),Qpt=Zpt.extend(qCe).strict(),gX=h.discriminatedUnion("databaseType",[Ypt,Jpt,Xpt,Qpt]),qA=h.object({appName:vn,databaseName:h.string().min(1,B.REQUIRED.DATABASE_NAME),maxConnections:h.number().int(B.MAX_CONNECTIONS.INTEGER).min(1,B.MAX_CONNECTIONS.MIN).max(100,B.MAX_CONNECTIONS.MAX).optional(),maxIdleConnections:h.number().int(B.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.INTEGER).min(0,B.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MIN).max(100,B.PROXY_CONFIG.MAX_IDLE_CONNECTIONS.MAX).optional(),connectionBorrowTimeout:h.number().int(B.PROXY_CONFIG.BORROW_TIMEOUT.INTEGER).min(1,B.PROXY_CONFIG.BORROW_TIMEOUT.MIN).max(3600,B.PROXY_CONFIG.BORROW_TIMEOUT.MAX).optional(),requireTLS:h.boolean().optional(),nameProvidedByFlag:h.boolean().optional()}).strict(),edt=["S","N","B"],L2=h.object({name:h.string(),type:h.enum(edt)}).strict(),yX=h.object({name:Qt,partitionKey:L2,sortKey:L2.optional(),globalSecondaryIndexes:h.array(h.object({indexName:h.string(),partitionKey:L2,sortKey:L2.optional()}).strict()).optional(),ttlAttribute:h.string().optional(),stream:h.boolean().optional(),variableName:h.string().optional(),extraProperties:h.array(_s).optional()}).strict(),tdt=h.object({mode:h.literal("s3")}).strict(),vX=h.object({name:Qt,type:h.literal("ClickHouse"),databaseName:mg,instanceType:h.string().optional(),coldTier:h.union([tdt,h.literal(!1)]).optional(),optimiseSchedule:h.union([h.string(),h.literal(!1)]).optional(),backupSchedule:h.union([h.string(),h.literal(!1)]).optional(),backupRetentionDays:Nd.optional(),variableName:h.string().optional(),extraProperties:h.array(_s).optional()}).strict()});var HCe,SX,U2,KCe,EX,YCe,JCe,XCe,ZCe,QCe,bX,oS,xX,AX,CX,z2,ewe,V2,twe,rwe,nwe,W2,G2,q2=b(()=>{"use strict";Mt();uu();hf();HCe=h.object({count:h.number().int(B.NAT_GATEWAY.INTEGER).min(0,B.NAT_GATEWAY.MIN).max(3,B.NAT_GATEWAY.MAX).optional()}).strict().describe("NAT gateway configuration"),SX=Fi(HCe),U2=h.enum(["cloudwatch","s3"]),KCe=h.object({destination:U2.optional(),retentionDays:h.number().int(B.RETENTION_DAYS.INTEGER).min(1,B.RETENTION_DAYS.MIN).max(365,B.RETENTION_DAYS.MAX).optional(),trafficType:h.enum(["ALL","ACCEPT","REJECT"]).optional()}).strict().describe("VPC flow log configuration"),EX=Fi(KCe),YCe=h.object({s3:h.boolean().optional(),dynamodb:h.boolean().optional()}).strict().describe("Gateway VPC endpoints (FREE)"),JCe=Fi(YCe),XCe=h.object({ecr:h.boolean().optional(),secretsManager:h.boolean().optional(),kms:h.boolean().optional(),cloudwatchLogs:h.boolean().optional(),ssm:h.boolean().optional(),sts:h.boolean().optional()}).strict().describe("Interface VPC endpoints (cost per hour)"),ZCe=Fi(XCe),QCe=h.object({gateway:JCe.optional(),interface:ZCe.optional()}).strict().describe("VPC endpoints configuration"),bX=Fi(QCe),oS=h.object({maxAzs:h.number().int(B.MAX_AZS.INTEGER).min(1,B.MAX_AZS.MIN).max(3,B.MAX_AZS.MAX).optional(),natGateways:SX.optional(),flowLogs:EX.optional(),vpcEndpoints:bX.optional(),cidrMask:h.number().int(B.CIDR_MASK.INTEGER).min(16,B.CIDR_MASK.MIN).max(28,B.CIDR_MASK.MAX).optional()}).strict(),xX=h.string().min(1,B.REQUIRED.NETWORK_NAME).max(50,B.MAX_LENGTH.NETWORK_NAME).regex(bt.RESOURCE_NAME,B.RESOURCE_NAME),AX=oS.extend({name:xX}).strict(),CX=Fi(oS),z2=h.object({appName:vn,networkName:xX.optional(),maxAzs:h.number().int(B.MAX_AZS.INTEGER).min(1,B.MAX_AZS.MIN).max(3,B.MAX_AZS.MAX).optional(),natGateways:SX.optional(),flowLogs:EX.optional(),vpcEndpoints:bX.optional()}).strict(),ewe=bt.CIDR,V2=h.string().regex(ewe,B.CIDR),twe=h.object({kind:h.literal("database"),resource:h.string().min(1,B.REQUIRED.RESOURCE_REFERENCE),name:Qt,allowedFromCidrs:h.array(V2),access:h.enum(["read","write","readWrite"]).optional()}).strict(),rwe=h.object({kind:h.literal("ecsService"),resource:h.string().min(1,B.REQUIRED.RESOURCE_REFERENCE),serviceName:h.string().min(1,B.REQUIRED.SERVICE_NAME),name:Qt,allowedFromCidrs:h.array(V2),port:El.optional()}).strict(),nwe=h.discriminatedUnion("kind",[twe,rwe]),W2=h.object({name:Qt,peerAppName:h.string().min(1,B.REQUIRED.APP_NAME),peerAccountId:h.string().regex(bt.AWS_ACCOUNT_ID,B.AWS_ACCOUNT_ID),peerRegion:h.string().min(1,B.VPC_PEER.REGION_REQUIRED).optional(),peerVpcId:h.string().regex(bt.VPC_ID,B.VPC_ID).optional(),peerVpcCidr:V2.optional(),peerRoleArn:h.string().regex(bt.ROLE_ARN,B.ROLE_ARN).optional(),peerRouteTableIds:h.array(h.string().min(1,B.VPC_PEER.ROUTE_TABLE_ID_REQUIRED)).optional(),localVpcName:h.string().min(1,B.REQUIRED.NETWORK_NAME).optional(),enableDnsResolution:h.boolean().optional()}).strict(),G2=h.object({name:Qt,requesterAccountIds:h.array(h.string().regex(bt.AWS_ACCOUNT_ID,B.AWS_ACCOUNT_ID)).min(1,B.VPC_PEER.MIN_REQUESTER_ACCOUNTS),localVpcName:h.string().min(1,B.REQUIRED.NETWORK_NAME).optional(),publishToSsm:h.boolean().optional(),exposedResources:h.array(nwe).optional()}).strict()});var TP,wX,DP,kP,TX=b(()=>{"use strict";Mt();uu();ti();hf();TP=["storage","cdn","compute"],wX=h.object({sid:h.string().optional(),effect:h.enum(["Allow","Deny"]),principals:h.array(h.string()),actions:h.array(h.string()),resources:h.array(h.string()).optional(),conditions:h.record(h.string(),h.record(h.string(),h.union([h.string(),h.array(h.string())]))).optional()}).strict(),DP=h.object({name:Qt,bucketName:h.string().optional(),publicReadAccess:h.boolean().optional(),websiteHosting:h.object({indexDocument:h.string(),errorDocument:h.string().optional()}).strict().optional(),backupVaultTier:h.enum(pu).optional(),versioned:h.boolean().optional(),encryption:h.enum(tS).optional(),kmsKeyArn:h.string().optional(),cors:h.array(h.object({allowedOrigins:h.array(h.string()),allowedMethods:h.array(h.string()),allowedHeaders:h.array(h.string()).optional(),exposedHeaders:h.array(h.string()).optional(),maxAge:h.number().optional()}).strict()).optional(),deployment:h.object({source:h.string(),prune:h.boolean().optional(),cacheControl:h.object({maxAge:h.number().optional(),immutable:h.boolean().optional()}).strict().optional()}).strict().optional(),retain:h.boolean().optional(),resourcePolicyStatements:h.array(wX).optional(),stackPlacement:h.enum(TP).optional(),variableName:h.string().optional(),extraProperties:h.array(_s).optional()}).strict().refine(t=>t.encryption!=="KMS"||!!t.kmsKeyArn,{message:B.KMS.KEY_REQUIRED}),kP=h.object({appName:vn,bucketName:LA,nameProvidedByFlag:h.boolean().optional(),storagePreset:h.enum(oX).optional(),publicReadAccess:h.boolean().optional(),websiteHosting:h.object({indexDocument:h.string(),errorDocument:h.string().optional()}).strict().optional(),backupVaultTier:h.enum(pu).optional(),versioned:h.boolean().optional(),encryption:h.enum(tS).optional(),kmsKeyArn:h.string().optional(),cors:h.array(h.object({allowedOrigins:h.array(h.string()),allowedMethods:h.array(h.string()),allowedHeaders:h.array(h.string()).optional(),exposedHeaders:h.array(h.string()).optional(),maxAge:h.number().optional()}).strict()).optional(),connectionConfig:h.object({connectToCompute:h.array(h.string()).optional(),connectToServices:h.array(h.string()).optional()}).strict().optional()}).strict().refine(t=>t.encryption!=="KMS"||!!t.kmsKeyArn,{message:B.KMS.KEY_REQUIRED,path:["kmsKeyArn"]})});var H2,IP,K2=b(()=>{"use strict";Mt();uu();hf();H2=h.enum(["DESTROY","RETAIN"]),IP=h.object({name:Qt,queueType:h.enum(["standard","fifo"]).default("standard"),visibilityTimeout:h.number().int(B.SQS.VISIBILITY_TIMEOUT.INTEGER).min(0,B.SQS.VISIBILITY_TIMEOUT.MIN).max(43200,B.SQS.VISIBILITY_TIMEOUT.MAX).optional(),retentionPeriod:h.number().int(B.SQS.RETENTION_PERIOD.INTEGER).min(60,B.SQS.RETENTION_PERIOD.MIN).max(1209600,B.SQS.RETENTION_PERIOD.MAX).optional(),contentBasedDeduplication:h.boolean().optional(),removalPolicy:H2.optional(),variableName:h.string().optional(),extraProperties:h.array(_s).optional()}).strict()});var DX,PP,kX,IX=b(()=>{"use strict";Mt();hf();DX=h.object({type:h.literal("basic-auth"),username:h.string().min(1),password:h.string().min(1)}).strict(),PP=h.object({name:Qt,defaultOriginRef:h.string(),behaviours:h.array(h.object({pathPattern:h.string(),originRef:h.string(),cachePolicy:h.enum(["CACHING_OPTIMIZED","CACHING_DISABLED"]).optional()}).strict()).optional(),customDomain:h.string().optional(),certificateArn:h.string().optional(),accessGate:h.union([h.literal(!1),DX]).optional(),extraProperties:h.array(_s).optional()}).strict(),kX=h.object({appName:h.string(),name:Qt.optional(),defaultOriginRef:h.string(),behaviours:h.array(h.object({pathPattern:h.string(),originRef:h.string(),cachePolicy:h.enum(["CACHING_OPTIMIZED","CACHING_DISABLED"]).optional()}).strict()).optional(),customDomain:h.string().optional(),certificateArn:h.string().optional(),accessGate:h.union([h.literal(!1),DX]).optional(),nameProvidedByFlag:h.boolean().optional()}).strict()});function HA(t){let e=t.split(".")[0]??"";return rdt.has(e)?"ARM":"STANDARD"}function Y2(t,e){let r=HA(t);return r!==e?{valid:!1,message:`Instance type '${t}' requires ${r} architecture, but '${e}' AMI was specified. Use a ${r==="ARM"?"Graviton instance (t4g, c6g, r6g, m6g, etc.)":"Intel/AMD instance (t3, c5, r5, m5, etc.)"} instead.`}:{valid:!0}}function awe(t,e){return HA(t)===e}var rdt,PX=b(()=>{"use strict";rdt=new Set(["t4g","c6g","c6gd","c6gn","c7g","c7gd","c7gn","r6g","r6gd","r7g","r7gd","m6g","m6gd","m7g","m7gd","a1","x2gd","im4gn","is4gen","i4g","hpc7g"])});var Pp,_P,J2,X2,owe,gu,swe,_X,RX,OX,NX,$X,FX,Z2,sS=b(()=>{"use strict";Mt();Pp="fjall-manifest.json",_P=1,J2=/^[A-Za-z0-9_.-]+$/,X2=h.object({id:h.string().min(1,"buildSecret id cannot be empty").regex(J2,"buildSecret id may contain only letters, digits, '_', '.', and '-' (no comma, '=', or whitespace, which would break the buildx --secret argv)"),ssm:h.string().min(1,"ssm parameter name cannot be empty").optional(),secretsManager:h.object({name:h.string().min(1,"secret name cannot be empty").optional(),arn:h.string().min(1,"secret arn cannot be empty").optional(),field:h.string().min(1,"secret field cannot be empty").optional()}).strict().refine(t=>t.name===void 0!=(t.arn===void 0),"secretsManager requires exactly one of name or arn").optional(),env:h.string().min(1,"env variable name cannot be empty").optional()}).strict().superRefine((t,e)=>{[t.ssm,t.secretsManager,t.env].filter(r=>r!==void 0).length!==1&&e.addIssue({code:h.ZodIssueCode.custom,message:"buildSecret requires exactly one source (ssm, secretsManager, or env)"})}),owe=h.union([h.string(),h.object({ssm:h.string().min(1,"ssm parameter name cannot be empty").optional(),secretsManager:h.object({name:h.string().min(1,"secret name cannot be empty").optional(),arn:h.string().min(1,"secret arn cannot be empty").optional(),field:h.string().min(1,"secret field cannot be empty").optional()}).strict().refine(t=>t.name===void 0!=(t.arn===void 0),"secretsManager requires exactly one of name or arn").optional(),env:h.string().min(1,"env variable name cannot be empty").optional(),acknowledgePublic:h.boolean().optional()}).strict().superRefine((t,e)=>{[t.ssm,t.secretsManager,t.env].filter(r=>r!==void 0).length!==1&&e.addIssue({code:h.ZodIssueCode.custom,message:"buildArg value requires exactly one source (ssm, secretsManager, or env)"})})]),gu=h.object({path:h.string(),context:h.string().min(1,"context cannot be empty").optional(),target:h.string().min(1,"target cannot be empty").optional(),buildArgs:h.record(h.string(),owe).optional(),buildSecrets:h.array(X2).optional()}).strict(),swe=gu.partial(),_X=h.object({name:h.string(),clusterName:h.string().optional(),docker:gu.optional(),containerPort:h.number().optional(),secrets:h.array(h.string()).optional(),ssmSecretsPath:h.string().optional(),importedSecretNames:h.array(h.string()).optional()}).strict(),RX=h.object({type:h.enum(["payload"]),name:h.string(),source:h.string()}).strict(),OX=h.object({repositoryName:h.string()}).strict(),NX=h.object({name:h.string(),secrets:h.array(h.string()).optional(),ssmSecretsPath:h.string().optional(),importedSecretNames:h.array(h.string()).optional()}).strict(),$X=h.object({templateHash:h.string(),synthTimestamp:h.string()}).strict(),FX=h.object({constructPath:h.string().max(512),group:h.string().max(128),resourceType:h.string().max(256)}).strict(),Z2=h.object({version:h.literal(_P),generatedAt:h.string(),appName:h.string(),services:h.array(_X),lambdas:h.array(NX),pattern:RX.optional(),ecr:OX.optional(),stacks:h.record(h.string(),$X),resourceMap:h.record(h.string(),FX).optional()}).strict()});function ndt(t){return!(t.image!==void 0&&t.docker!==void 0)}var iwe,cwe,iS,LX,BX,Q2,OP,lwe,eB,uwe,tB,rB,jX,pwe,KA,UX,RP,dwe,zX,NP,VX,WX,GX,YA,qX,adt,odt,sdt,HX,MX,$P,FP,nB=b(()=>{"use strict";Mt();uu();ti();PX();hf();sS();M2();iwe=h.number().int(B.CAPACITY.MIN.INTEGER).min($2,B.GENERATOR_CAPACITY.MIN.MIN).max(F2,B.GENERATOR_CAPACITY.MIN.MAX),cwe=h.number().int(B.CAPACITY.MAX.INTEGER).min($2,B.GENERATOR_CAPACITY.MAX.MIN).max(F2,B.GENERATOR_CAPACITY.MAX.MAX),iS=h.number().int(B.LAMBDA.MEMORY.INTEGER).min(eX,B.LAMBDA.MEMORY.MIN).max(tX,B.LAMBDA.MEMORY.MAX).refine(t=>t===128||t%64===0,B.LAMBDA.MEMORY.MULTIPLE),LX=h.string().regex(bt.LAMBDA_RUNTIME_IDENTIFIER,B.LAMBDA.RUNTIME),BX=h.number().int(B.CPU.INTEGER).min(256,B.CPU.MIN).max(4096,B.CPU.MAX),Q2=h.number().int(B.CAPACITY.DESIRED.INTEGER).min(0,B.CAPACITY.DESIRED.MIN).max(eS,B.CAPACITY.DESIRED.MAX),OP=h.object({connectToDatabase:h.array(h.string()).optional()}).strict(),lwe=h.object({minSize:h.number().int(B.CAPACITY.WARM_POOL.MIN_SIZE.INTEGER).min(0,B.CAPACITY.WARM_POOL.MIN_SIZE.MIN).max(rX,B.CAPACITY.WARM_POOL.MIN_SIZE.MAX).optional(),reuseOnScaleIn:h.boolean().optional()}).strict(),eB=h.object({instanceType:h.string().optional(),amiHardwareType:h.enum(mP).optional(),minCapacity:h.number().int(B.CAPACITY.MIN.INTEGER).min(0,B.CAPACITY.MIN.MIN_0).max(eS,B.CAPACITY.MIN.MAX).optional(),maxCapacity:h.number().int(B.CAPACITY.MAX.INTEGER).min(1,B.CAPACITY.MAX.MIN_1).max(eS,B.CAPACITY.MAX.MAX).optional(),memoryLimitMiB:MA(128).optional(),warmPool:lwe.optional(),extraProperties:h.array(_s).optional()}).strict().superRefine((t,e)=>{if(!t.instanceType||!t.amiHardwareType)return;let r=Y2(t.instanceType,t.amiHardwareType);r.valid||e.addIssue({code:"custom",message:r.message??B.ARCHITECTURE_MISMATCH,path:["instanceType"]})}).superRefine((t,e)=>{t.minCapacity===0&&!t.warmPool&&e.addIssue({code:"custom",message:B.CAPACITY.WARM_POOL_REQUIRED,path:["minCapacity"]}),t.warmPool?.minSize!==void 0&&t.maxCapacity!==void 0&&t.warmPool.minSize>t.maxCapacity&&e.addIssue({code:"custom",message:B.CAPACITY.WARM_POOL.MIN_SIZE_EXCEEDS_MAX_CAPACITY,path:["warmPool","minSize"]})}),uwe=h.enum(NA).describe(`Compute type must be one of: ${NA.join(", ")}`),tB=h.enum(ff).describe(`ECS capacity provider must be one of: ${ff.join(", ")}`),rB=h.string().refine(t=>mu(hP,t),{message:B.INSTANCE_TYPE}),jX=h.object({sourceType:h.enum(["sqs","dynamodb","eventbridge"]),sourceRef:h.string().describe("Name of the source resource"),batchSize:h.number().int(B.BATCH_SIZE.INTEGER).min(1,B.BATCH_SIZE.MIN).max(1e4,B.BATCH_SIZE.MAX).optional(),startingPosition:h.enum(["TRIM_HORIZON","LATEST"]).optional(),maxBatchingWindow:h.number().int(B.BATCHING_WINDOW.INTEGER).min(0,B.BATCHING_WINDOW.MIN).max(300,B.BATCHING_WINDOW.MAX).optional(),reportBatchItemFailures:h.boolean().optional()}).strict(),pwe=h.object({name:h.string().min(1,B.REQUIRED.CONTAINER_NAME).optional(),image:h.string().optional(),port:El.optional(),environment:nS.optional(),secretsImport:iX.optional(),command:h.array(h.string()).optional(),entryPoint:h.array(h.string()).optional(),essential:h.boolean().optional(),healthCheck:h.object({command:h.array(h.string()),interval:h.number().int(B.HEALTH_CHECK.INTERVAL.INTEGER).min(5,B.HEALTH_CHECK.INTERVAL.MIN).max(300,B.HEALTH_CHECK.INTERVAL.MAX).optional(),timeout:h.number().int(B.HEALTH_CHECK.TIMEOUT.INTEGER).min(2,B.HEALTH_CHECK.TIMEOUT.MIN).max(60,B.HEALTH_CHECK.TIMEOUT.MAX).optional(),retries:h.number().int(B.HEALTH_CHECK.RETRIES.INTEGER).min(1,B.HEALTH_CHECK.RETRIES.MIN).max(10,B.HEALTH_CHECK.RETRIES.MAX).optional(),startPeriod:h.number().int(B.HEALTH_CHECK.START_PERIOD.INTEGER).min(0,B.HEALTH_CHECK.START_PERIOD.MIN).max(300,B.HEALTH_CHECK.START_PERIOD.MAX).optional()}).strict().optional(),ssmSecrets:h.array(h.string().regex(bt.SECRET_NAME,B.SECRET_NAME)).optional(),extraProperties:h.array(_s).optional()}).strict(),KA=h.string().min(1,B.REQUIRED.SERVICE_NAME).max(255,B.MAX_LENGTH.SERVICE_NAME).regex(bt.ECS_SERVICE_NAME,B.ECS_SERVICE_NAME),UX=h.object({domain:h.string().optional(),loadBalancer:h.union([h.literal(!1),h.enum(pP)]).optional(),directAccess:h.boolean().optional(),extraProperties:h.array(_s).optional()}).strict().refine(t=>!(t.directAccess&&t.domain),{message:B.DIRECT_ACCESS.NO_DOMAIN,path:["directAccess"]}).refine(t=>!(t.directAccess&&typeof t.loadBalancer=="string"),{message:B.DIRECT_ACCESS.NO_LOAD_BALANCER}).describe("Cluster-level configuration"),RP=h.object({path:h.string().optional(),host:h.string().optional(),priority:h.number().int(B.PRIORITY.INTEGER).min(1,B.PRIORITY.MIN).max(5e4,B.PRIORITY.MAX).optional(),healthCheckPath:h.string().optional()}).strict().describe("Path/host-based routing configuration"),dwe=h.object({desiredCount:Q2.optional(),minCapacity:h.number().int(B.CAPACITY.MIN.INTEGER).min(0,B.CAPACITY.MIN.MIN_0).max(eS,B.CAPACITY.MIN.MAX).optional(),maxCapacity:h.number().int(B.CAPACITY.MAX.INTEGER).min(1,B.CAPACITY.MAX.MIN_1).max(eS,B.CAPACITY.MAX.MAX).optional(),scalingType:h.enum(dP).optional()}).strict().refine(dg.check,dg.params).describe("ECS service scaling configuration"),zX=h.object({name:KA,docker:gu.optional(),needsDatabaseConnection:h.boolean().optional(),needsStorageConnection:h.boolean().optional(),needsMessagingConnection:h.boolean().optional(),image:h.string().optional(),containers:h.array(pwe).optional(),routing:h.union([RP,h.array(RP).min(1)]).optional(),cpu:BX.optional(),memoryLimitMiB:MA(512).optional(),desiredCount:Q2.optional(),scaling:Fi(dwe).optional(),capacityProvider:tB,ec2Config:eB.optional(),ssmSecretsPath:h.string().regex(bt.SSM_PATH,B.SSM_PATH).optional(),extraProperties:h.array(_s).optional(),alarms:pX.optional()}).strict().superRefine((t,e)=>{ndt(t)||e.addIssue({code:"custom",path:["docker"],message:B.IMAGE_DOCKER_MUTEX})}).describe("Configuration for a service in an ECS cluster"),NP=h.object({name:Qt,type:uwe,needsConnection:h.boolean(),connectedDatabase:h.array(h.string()).optional(),connectedStorage:h.array(h.string()).optional(),connectedMessaging:h.array(h.string()).optional(),cluster:UX.optional(),services:h.array(zX).optional(),docker:gu.partial().optional(),deployment:h.enum(lP).optional(),codePath:h.string().optional(),timeout:h.number().int(B.LAMBDA.TIMEOUT.INTEGER).min(gP,B.LAMBDA.TIMEOUT.MIN).max(yP,B.LAMBDA.TIMEOUT.MAX).optional(),memory:iS.optional(),handler:h.string().optional(),runtime:LX.optional(),environment:nS.optional(),secrets:nS.optional(),eventSources:h.array(jX).optional(),functionUrl:h.object({authType:h.enum(FA)}).strict().optional(),description:h.string().optional(),scheduleExpression:h.string().optional(),architecture:h.enum(uP).optional(),ephemeralStorageSize:h.number().int(B.EPHEMERAL_STORAGE.INTEGER).min(512,B.EPHEMERAL_STORAGE.MIN).max(10240,B.EPHEMERAL_STORAGE.MAX).optional(),functionName:h.string().optional(),ssmSecrets:h.array(h.string()).optional(),ssmSecretsPath:h.string().optional(),alarms:mX.optional(),instanceType:rB.optional(),enableSSH:h.boolean().optional(),keyName:h.string().optional(),userData:h.string().optional(),securityGroups:h.array(h.string()).optional(),variableName:h.string().optional(),extraProperties:h.array(_s).optional()}).strict().superRefine((t,e)=>{if(t.type==="ecs"&&t.services)for(let r=0;r<t.services.length;r++){let n=t.services[r];n?.ec2Config?.instanceType&&!n.ec2Config.amiHardwareType&&HA(n.ec2Config.instanceType)!=="ARM"&&e.addIssue({code:"custom",message:`Service '${n.name??r}' uses instance type '${n.ec2Config.instanceType}' (x86), which requires Docker images built for linux/amd64. The default build targets linux/arm64 (Graviton). Use a Graviton instance type (t4g, c6g, r6g, m6g, etc.) or set amiHardwareType: "STANDARD" to acknowledge x86.`,path:["services",r,"ec2Config","instanceType"]})}t.type==="lambda"&&t.deployment==="container"&&t.architecture==="X86_64"&&e.addIssue({code:"custom",message:"Lambda architecture 'X86_64' requires Docker images built for linux/amd64, but the default build targets linux/arm64. Use 'ARM_64' for Graviton Lambdas (recommended) or ensure your build pipeline targets linux/amd64.",path:["architecture"]})}),VX=h.object({appName:vn,clusterName:Qt,containerPort:El,nameProvidedByFlag:h.boolean().optional(),ecrRepository:h.string().optional(),capacityProvider:tB.optional(),useAppEcr:h.boolean().optional(),desiredCount:Q2.optional(),cpu:BX.optional(),memoryLimitMiB:MA(512).optional(),minCapacity:iwe.optional(),maxCapacity:cwe.optional(),ec2Config:eB.optional(),connectionConfig:OP.optional()}).strict().refine(dg.check,dg.params),WX=h.object({appName:vn,functionName:Qt,nameProvidedByFlag:h.boolean().optional(),lambdaType:h.enum(["basic","web","custom"]).optional(),ecrRepository:h.string().optional(),timeout:h.number().int(B.LAMBDA.TIMEOUT.INTEGER).min(gP,B.LAMBDA.TIMEOUT.MIN).max(yP,B.LAMBDA.TIMEOUT.MAX).optional(),memory:iS.optional(),enableFunctionUrl:h.boolean().optional(),description:h.string().optional(),enableCors:h.boolean().optional(),corsOrigins:h.string().optional(),corsHeaders:h.string().optional(),corsMethods:h.array(h.enum(aX)).optional(),corsCredentials:h.boolean().optional(),connectionConfig:OP.optional()}).strict(),GX=h.object({appName:vn,instanceName:Qt,nameProvidedByFlag:h.boolean().optional(),instanceType:rB.optional(),enableSSH:h.boolean().optional(),minCapacity:iwe.optional(),maxCapacity:cwe.optional(),connectionConfig:OP.optional()}).strict().refine(dg.check,dg.params),YA=h.object({appName:vn,clusterName:Qt,serviceName:KA,capacityProvider:tB,containerPort:El.optional(),cpu:BX.optional(),memoryLimitMiB:MA(512).optional(),desiredCount:Q2.optional(),ec2Config:eB.optional(),routing:h.union([RP,h.array(RP).min(1)]).optional(),docker:gu.partial().optional(),nameProvidedByFlag:h.boolean().optional(),connectionConfig:OP.optional()}).strict(),qX=h.object({appName:vn,computeName:Qt,nameProvidedByFlag:h.boolean().optional(),connectionConfig:OP.optional()}).strict(),adt=qX.extend({type:h.literal("ecs"),cluster:UX.optional(),services:h.array(zX).min(1,B.SERVICE.MIN_REQUIRED),docker:gu.partial().optional()}).strict().refine(t=>{let e=t.services.filter(r=>r.containers?.some(n=>n.port));return e.length>1?e.every(r=>(Array.isArray(r.routing)?r.routing:r.routing?[r.routing]:[]).some(n=>n.path||n.host)):!0},{message:B.SERVICE.ROUTING_REQUIRED}).refine(t=>{let e=t.services.map(r=>r.name);return new Set(e).size===e.length},{message:B.SERVICE.UNIQUE_WITHIN_CLUSTER}),odt=qX.extend({type:h.literal("lambda"),timeout:h.number().int(B.LAMBDA.TIMEOUT.INTEGER).min(gP,B.LAMBDA.TIMEOUT.MIN).max(yP,B.LAMBDA.TIMEOUT.MAX).optional(),memory:iS.optional(),handler:h.string().optional(),runtime:LX.optional(),environment:nS.optional(),secrets:nS.optional(),description:h.string().optional(),functionUrl:h.union([h.object({authType:h.enum(FA).optional()}).strict(),h.literal(!1)]).optional(),eventSources:h.array(jX).optional()}).strict(),sdt=qX.extend({type:h.literal("ec2"),instanceType:rB.optional(),enableSSH:h.boolean().optional(),keyName:h.string().optional(),userData:h.string().optional(),securityGroups:h.array(h.string()).optional()}).strict(),HX=h.discriminatedUnion("type",[adt,odt,sdt]),MX=h.object({path:h.string().min(1,B.REQUIRED.ROUTING_PATH),priority:h.number().int(B.PRIORITY.INTEGER).min(1,B.PRIORITY.MIN).max(5e4,B.PRIORITY.MAX).optional()}).strict(),$P=h.object({name:h.string().min(1,B.REQUIRED.SERVICE_NAME).max(255,B.MAX_LENGTH.SERVICE_NAME).regex(bt.RESOURCE_NAME,B.RESOURCE_NAME),serviceType:h.enum(["web","worker"]).optional(),docker:gu.partial().optional(),containerPort:El.optional(),needsDatabaseConnection:h.boolean().optional(),routing:h.union([MX,h.array(MX).min(1)]).optional()}).strict().superRefine((t,e)=>{t.serviceType==="worker"&&(t.containerPort!==void 0&&e.addIssue({code:"custom",path:["containerPort"],message:"Worker services are not reachable inbound; remove containerPort."}),t.routing!==void 0&&e.addIssue({code:"custom",path:["routing"],message:"Worker services have no ALB route; remove routing."}))}),FP=h.object({appName:vn,instanceType:h.string().optional()}).strict()});var aB,KX,YX,oB,JX,mwe,XX,ZX,fwe,sB,iB,JA,hg,QX,eZ,tZ=b(()=>{"use strict";Mt();uu();wP();nB();ti();aB=h.object({memorySize:iS.optional(),timeout:h.number().int(B.LAMBDA.TIMEOUT.INTEGER).min(1,B.LAMBDA.TIMEOUT.MIN).max(900,B.LAMBDA.TIMEOUT.MAX).optional(),ephemeralStorageSize:h.number().int(B.EPHEMERAL_STORAGE.INTEGER).min(512,B.EPHEMERAL_STORAGE.MIN).max(10240,B.EPHEMERAL_STORAGE.MAX).optional()}).strict(),KX=h.object({type:h.enum(N2).optional(),databaseName:h.string().optional(),databaseEngine:h.enum(Zv).optional(),deletionProtection:h.boolean().optional(),backupRetention:Nd.optional(),port:vP.optional(),publiclyAccessible:h.boolean().optional(),allowedIpCidr:h.string().optional(),instanceType:h.string().optional(),allocatedStorage:h.number().int(B.ALLOCATED_STORAGE.INTEGER).min(20,B.ALLOCATED_STORAGE.MIN).max(65536,B.ALLOCATED_STORAGE.MAX).optional(),multiAz:h.boolean().optional(),readReplica:bP.optional(),writer:WA.optional(),readers:GA.optional(),allowVpcAccess:h.boolean().optional(),monitoringInterval:VA.optional(),preferredMaintenanceWindow:h.string().optional(),databaseInsights:xP.optional(),proxy:EP.optional(),credentials:SP.optional(),encryption:AP.optional(),snapshotIdentifier:h.string().optional(),snapshotUsername:h.string().optional()}).strict(),YX=h.object({server:aB.optional(),imageOptimisation:aB.optional(),revalidation:aB.optional()}).strict(),oB=h.object({versioned:h.boolean().optional()}).strict(),JX=h.object({assets:oB.optional(),cache:oB.optional(),media:oB.optional()}).strict(),mwe=h.object({visibilityTimeout:h.number().int(B.SQS.VISIBILITY_TIMEOUT.INTEGER).min(0,B.SQS.VISIBILITY_TIMEOUT.MIN).max(43200,B.SQS.VISIBILITY_TIMEOUT.MAX).optional(),messageRetentionPeriod:h.number().int(B.SQS.RETENTION_PERIOD.INTEGER).min(60,B.SQS.RETENTION_PERIOD.MIN).max(1209600,B.SQS.RETENTION_PERIOD.MAX).optional(),maxMessageSize:h.number().int(B.MAX_MESSAGE_SIZE.INTEGER).min(1024,B.MAX_MESSAGE_SIZE.MIN).max(262144,B.MAX_MESSAGE_SIZE.MAX).optional(),deadLetterQueue:h.union([h.literal(!1),h.object({enabled:h.boolean().optional(),maxReceiveCount:h.number().int(B.DLQ.MAX_RECEIVE_COUNT.INTEGER).min(1,B.DLQ.MAX_RECEIVE_COUNT.MIN).max(1e3,B.DLQ.MAX_RECEIVE_COUNT.MAX).optional()}).strict()]).optional()}).strict(),XX=h.object({revalidationQueue:mwe.optional()}).strict(),ZX=h.object({domainNames:h.array(h.string()).optional(),certificateArn:h.string().optional()}).strict(),fwe=h.record(h.string().regex(bt.ENV_VAR_NAME,B.ENV_VAR_NAME),h.string()).optional(),sB=h.object({type:h.literal("payload"),name:h.string().min(1,B.REQUIRED.PATTERN_NAME),domain:h.string().optional(),database:KX.optional(),compute:YX.optional(),storage:JX.optional(),messaging:XX.optional(),cdn:ZX.optional(),environment:fwe}).strict(),iB=h.object({type:h.literal("nextjs"),name:h.string().min(1,B.REQUIRED.PATTERN_NAME),domain:h.string().optional(),database:KX.optional(),compute:YX.optional(),storage:JX.optional(),messaging:XX.optional(),cdn:ZX.optional(),environment:fwe}).strict(),JA=h.discriminatedUnion("type",[sB,iB]),hg=h.enum(["lightweight","standard","resilient","custom"]),QX=h.object({type:h.enum(N2),instanceType:h.string().optional(),backupRetention:Nd.optional(),deletionProtection:h.boolean().optional(),encryption:h.union([h.object({useCMK:h.literal(!0)}).strict(),h.literal(!1)]).optional()}).strict(),eZ=h.object({memorySize:iS.optional(),timeout:h.number().int(B.LAMBDA.TIMEOUT.INTEGER).min(1,B.LAMBDA.TIMEOUT.MIN).max(900,B.LAMBDA.TIMEOUT.MAX).optional()}).strict()});var rZ,idt,cB,hwe=b(()=>{"use strict";Mt();uu();hf();wP();q2();TX();K2();IX();nB();wP();tZ();rZ=h.object({appName:vn,type:BA,pattern:jA.optional(),patternConfig:JA.optional(),owner:h.string().optional(),tags:h.record(h.string(),h.string()).optional(),vpcId:h.string().optional(),network:oS.optional(),backup:lX.optional(),tunnel:uX.optional(),additionalNetworks:h.array(AX).optional(),database:h.array(CP),s3:h.array(DP),compute:h.array(NP),dynamodb:h.array(yX).optional(),clickhouse:h.array(vX).optional(),sqs:h.array(IP).optional(),cdn:PP.optional(),customCodeBlocks:h.array(cX).optional(),additionalManagedImports:h.array(h.object({moduleSpecifier:h.string(),namedImports:h.array(h.string()),defaultImport:h.string().optional()}).strict()).optional()}).strict(),idt=h.object({name:vn,type:BA,pattern:jA.optional(),patternTier:hg.optional(),patternDomain:h.string().optional(),customDatabase:QX.optional(),customCompute:eZ.optional(),region:h.string().optional(),owner:h.string().optional(),includeDatabase:h.boolean().optional(),databaseName:h.string().min(1,B.DATABASE.NAME.REQUIRED).max(63,B.DATABASE.NAME.MAX_LENGTH).optional(),vpcId:h.string().optional(),network:CX.optional(),services:h.array($P).optional(),snapshotIdentifier:h.string().optional(),snapshotUsername:h.string().optional()}).strict(),cB=h.object({name:Qt,localResource:h.string().min(1),remoteApp:h.string().min(1),remoteResource:h.string().min(1),permission:h.enum(["read","write","read-write"]),remoteArn:h.string().optional()}).strict()});var MP=b(()=>{"use strict";hf();wP();q2();TX();K2();IX();nB();tZ();hwe();M2()});var lB=b(()=>{"use strict";MP();ti();PX()});function vt(t){return JSON.stringify(t)}function XA(t){return t.map(vt).join(", ")}function uB(t=" "){return`
|
|
96
96
|
${t}...(getConfig().environment === "production" ? { alertsTopic: ${vt(cdt)} } : {}),`}function nZ(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.__identifier=="string"||typeof e.__expression=="string"||typeof e.__call=="string"}function gf(t){return t.replace(/[^a-zA-Z0-9]/g," ").split(" ").map((e,r)=>r===0?e.charAt(0).toLowerCase()+e.slice(1):e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Ba(t){return t.variableName??gf(t.name)}function LP(t,e){for(let r of t.database)if(r.name===e&&r.variableName)return r.variableName;for(let r of t.s3)if(r.name===e&&r.variableName)return r.variableName;for(let r of t.compute)if(r.name===e&&r.variableName)return r.variableName;for(let r of t.dynamodb??[])if(r.name===e&&r.variableName)return r.variableName;for(let r of t.sqs??[])if(r.name===e&&r.variableName)return r.variableName;return gf(e)}function ldt(t){let e=Object.entries(t);return e.length===0?!0:e.length>1?!1:e.every(([,r])=>typeof r=="string"||typeof r=="number"||typeof r=="boolean"||r===null)}function $n(t,e=" "){if(t==null)return"undefined";if(typeof t=="string")return JSON.stringify(t);if(typeof t=="number"||typeof t=="boolean")return String(t);if(nZ(t)){if("__identifier"in t)return t.__identifier;if("__expression"in t)return t.__expression;if("__call"in t)return t.__call}if(Array.isArray(t))return`[${t.map(r=>$n(r,e)).join(", ")}]`;if(typeof t=="object"){let r=Object.entries(t).filter(([,o])=>o!==void 0);if(ldt(t)){let o=r.map(([s,i])=>`${s}: ${$n(i,e)}`).join(", ");return o?`{ ${o} }`:"{}"}let n=e+" ",a=r.map(([o,s])=>`${n}${o}: ${$n(s,n)}`).join(`,
|
|
97
97
|
`);return a?`{
|
|
@@ -416,7 +416,7 @@ ${p}\r
|
|
|
416
416
|
`)}p.push(null)}),p}async function pEt(t,e){let r=0,n=[],a=t.getReader(),o=!1;for(;!o;){let{done:c,value:l}=await a.read();if(l&&(n.push(l),r+=l?.byteLength??0),r>=e)break;o=c}a.releaseLock();let s=new Uint8Array(Math.min(e,r)),i=0;for(let c of n){if(c.byteLength>s.byteLength-i){s.set(c.subarray(0,s.byteLength-i),i);break}else s.set(c,i);i+=c.length}return s}var dEt=(t,e)=>_f(t)?pEt(t,e):new Promise((r,n)=>{let a=new mEt;a.limit=e,t.pipe(a),t.on("error",o=>{a.end(),n(o)}),a.on("error",n),a.on("finish",function(){let o=new Uint8Array(Buffer.concat(this.buffers));r(o)})}),mEt=class extends jd.Writable{buffers=[];limit=1/0;bytesBuffered=0;_write(e,r,n){if(this.buffers.push(e),this.bytesBuffered+=e.byteLength??0,this.bytesBuffered>=this.limit){let a=this.bytesBuffered-this.limit,o=this.buffers[this.buffers.length-1];this.buffers[this.buffers.length-1]=o.subarray(0,o.byteLength-a),this.emit("finish")}n()}},fEt=t=>{if(typeof t=="string")return t;if(typeof t!="object"||typeof t.byteOffset!="number"||typeof t.byteLength!="number")throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(t)},hEt=t=>{let e=t.length/4*3;t.slice(-2)==="=="?e-=2:t.slice(-1)==="="&&e--;let r=new ArrayBuffer(e),n=new DataView(r);for(let a=0;a<t.length;a+=4){let o=0,s=0;for(let l=a,u=a+3;l<=u;l++)if(t[l]!=="="){if(!(t[l]in HIe))throw new TypeError(`Invalid character ${t[l]} in base64 string.`);o|=HIe[t[l]]<<(u-l)*_0,s+=_0}else o>>=_0;let i=a/4*3;o>>=s%R_;let c=Math.floor(s/R_);for(let l=0;l<c;l++){let u=(c-l-1)*R_;n.setUint8(i+l,(o&255<<u)>>u)}}return new Uint8Array(r)},gEt=async t=>typeof Blob=="function"&&t instanceof Blob||t.constructor?.name==="Blob"?Blob.prototype.arrayBuffer!==void 0?new Uint8Array(await t.arrayBuffer()):yEt(t):vEt(t);async function yEt(t){let e=await SEt(t),r=hEt(e);return new Uint8Array(r)}async function vEt(t){let e=[],r=t.getReader(),n=!1,a=0;for(;!n;){let{done:i,value:c}=await r.read();c&&(e.push(c),a+=c.length),n=i}let o=new Uint8Array(a),s=0;for(let i of e)o.set(i,s),s+=i.length;return o}function SEt(t){return new Promise((e,r)=>{let n=new FileReader;n.onloadend=()=>{if(n.readyState!==2)return r(new Error("Reader aborted too early"));let a=n.result??"",o=a.indexOf(","),s=o>-1?o+1:a.length;e(a.substring(s))},n.onabort=()=>r(new Error("Read aborted")),n.onerror=()=>r(n.error),n.readAsDataURL(t)})}var KIe="The stream has already been transformed.",EEt=t=>{if(!YIe(t)&&!_f(t)){let a=t?.__proto__?.constructor?.name||t;throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${a}`)}let e=!1,r=async()=>{if(e)throw new Error(KIe);return e=!0,await gEt(t)},n=a=>{if(typeof a.stream!="function")throw new Error(`Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.
|
|
417
417
|
If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body`);return a.stream()};return Object.assign(t,{transformToByteArray:r,transformToString:async a=>{let o=await r();if(a==="base64")return yPe(o);if(a==="hex")return cPe(o);if(a===void 0||a==="utf8"||a==="utf-8")return fEt(o);if(typeof TextDecoder=="function")return new TextDecoder(a).decode(o);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},transformToWebStream:()=>{if(e)throw new Error(KIe);if(e=!0,YIe(t))return n(t);if(_f(t))return t;throw new Error(`Cannot transform payload to web stream, got ${t}`)}})},YIe=t=>typeof Blob=="function"&&t instanceof Blob,bee=class extends jd.Writable{bufferedBytes=[];_write(e,r,n){this.bufferedBytes.push(e),n()}},bEt=t=>typeof ReadableStream=="function"&&t instanceof ReadableStream;async function xEt(t){let e=[],r=t.getReader(),n=!1,a=0;for(;!n;){let{done:i,value:c}=await r.read();c&&(e.push(c),a+=c.length),n=i}let o=new Uint8Array(a),s=0;for(let i of e)o.set(i,s),s+=i.length;return o}var AEt=t=>bEt(t)?xEt(t):new Promise((e,r)=>{let n=new bee;t.pipe(n),t.on("error",a=>{n.end(),r(a)}),n.on("error",r),n.on("finish",function(){let a=new Uint8Array(Buffer.concat(this.bufferedBytes));e(a)})}),JIe="The stream has already been transformed.",CEt=t=>{if(!(t instanceof jd.Readable))try{return EEt(t)}catch{let a=t?.__proto__?.constructor?.name||t;throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${a}`)}let e=!1,r=async()=>{if(e)throw new Error(JIe);return e=!0,await AEt(t)};return Object.assign(t,{transformToByteArray:r,transformToString:async n=>{let a=await r();return n===void 0||Buffer.isEncoding(n)?O0(a.buffer,a.byteOffset,a.byteLength).toString(n):new TextDecoder(n).decode(a)},transformToWebStream:()=>{if(e)throw new Error(JIe);if(t.readableFlowing!==null)throw new Error("The stream has been consumed by other callbacks.");if(typeof jd.Readable.toWeb!="function")throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available.");return e=!0,jd.Readable.toWeb(t)}})};async function wEt(t){return typeof t.stream=="function"&&(t=t.stream()),t.tee()}async function TEt(t){if(_f(t)||hPe(t))return wEt(t);let e=new jd.PassThrough,r=new jd.PassThrough;return t.pipe(e),t.pipe(r),[e,r]}var xee=class extends nSt(QIe,Wj,Aee,ZIe){},DEt=fee.getRandomValues,EPe=aSt(DEt),kEt=EPe;tt.ChecksumStream=fPe;tt.Hash=See;tt.LazyJsonString=NS;tt.NumericValue=zj;tt.Uint8ArrayBlobAdapter=xee;tt._parseEpochTimestamp=qSt;tt._parseRfc3339DateTimeWithOffset=HSt;tt._parseRfc7231DateTime=KSt;tt.calculateBodyLength=QSt;tt.copyDocumentWithTransform=oSt;tt.createBufferedReadable=cEt;tt.createChecksumStream=sEt;tt.dateToUtcString=xSt;tt.deserializerMiddleware=uPe;tt.deserializerMiddlewareOption=dPe;tt.expectBoolean=iSt;tt.expectByte=yee;tt.expectFloat32=jj;tt.expectInt=lSt;tt.expectInt32=hee;tt.expectLong=N_;tt.expectNonNull=pSt;tt.expectNumber=O_;tt.expectObject=ePe;tt.expectShort=gee;tt.expectString=dSt;tt.expectUnion=mSt;tt.fromArrayBuffer=O0;tt.fromBase64=ZIe;tt.fromHex=ZSt;tt.fromString=Vj;tt.fromUtf8=Wj;tt.generateIdempotencyToken=kEt;tt.getAwsChunkedEncodingStream=uEt;tt.getSerdePlugin=eEt;tt.handleFloat=gSt;tt.headStream=dEt;tt.isArrayBuffer=XIe;tt.isBlob=hPe;tt.isReadableStream=_f;tt.limitedParseDouble=Tee;tt.limitedParseFloat=ySt;tt.limitedParseFloat32=vSt;tt.logger=$_;tt.nv=XSt;tt.parseBoolean=sSt;tt.parseEpochTimestamp=_St;tt.parseRfc3339DateTime=CSt;tt.parseRfc3339DateTimeWithOffset=TSt;tt.parseRfc7231DateTime=PSt;tt.quoteHeader=jSt;tt.sdkStreamMixin=CEt;tt.serializerMiddleware=pPe;tt.serializerMiddlewareOption=mPe;tt.splitEvery=YSt;tt.splitHeader=JSt;tt.splitStream=TEt;tt.strictParseByte=aPe;tt.strictParseDouble=wee;tt.strictParseFloat=fSt;tt.strictParseFloat32=tPe;tt.strictParseInt=SSt;tt.strictParseInt32=ESt;tt.strictParseLong=nPe;tt.strictParseShort=N0;tt.toBase64=Aee;tt.toHex=cPe;tt.toUint8Array=lPe;tt.toUtf8=QIe;tt.v4=EPe});var YPe=j((HAr,Hj)=>{var bPe,xPe,APe,CPe,wPe,TPe,DPe,kPe,IPe,PPe,_Pe,RPe,OPe,Gj,Ree,NPe,$Pe,FPe,M0,MPe,LPe,BPe,jPe,UPe,zPe,VPe,WPe,GPe,qj,qPe,HPe,KPe;(function(t){var e=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){t(r(e,r(n)))}):typeof Hj=="object"&&typeof Hj.exports=="object"?t(r(e,r(Hj.exports))):t(r(e));function r(n,a){return n!==e&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(o,s){return n[o]=a?a(o,s):s}}})(function(t){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,s){o.__proto__=s}||function(o,s){for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(o[i]=s[i])};bPe=function(o,s){if(typeof s!="function"&&s!==null)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");e(o,s);function i(){this.constructor=o}o.prototype=s===null?Object.create(s):(i.prototype=s.prototype,new i)},xPe=Object.assign||function(o){for(var s,i=1,c=arguments.length;i<c;i++){s=arguments[i];for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(o[l]=s[l])}return o},APe=function(o,s){var i={};for(var c in o)Object.prototype.hasOwnProperty.call(o,c)&&s.indexOf(c)<0&&(i[c]=o[c]);if(o!=null&&typeof Object.getOwnPropertySymbols=="function")for(var l=0,c=Object.getOwnPropertySymbols(o);l<c.length;l++)s.indexOf(c[l])<0&&Object.prototype.propertyIsEnumerable.call(o,c[l])&&(i[c[l]]=o[c[l]]);return i},CPe=function(o,s,i,c){var l=arguments.length,u=l<3?s:c===null?c=Object.getOwnPropertyDescriptor(s,i):c,p;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")u=Reflect.decorate(o,s,i,c);else for(var d=o.length-1;d>=0;d--)(p=o[d])&&(u=(l<3?p(u):l>3?p(s,i,u):p(s,i))||u);return l>3&&u&&Object.defineProperty(s,i,u),u},wPe=function(o,s){return function(i,c){s(i,c,o)}},TPe=function(o,s,i,c,l,u){function p(P){if(P!==void 0&&typeof P!="function")throw new TypeError("Function expected");return P}for(var d=c.kind,m=d==="getter"?"get":d==="setter"?"set":"value",f=!s&&o?c.static?o:o.prototype:null,g=s||(f?Object.getOwnPropertyDescriptor(f,c.name):{}),y,S=!1,x=i.length-1;x>=0;x--){var C={};for(var w in c)C[w]=w==="access"?{}:c[w];for(var w in c.access)C.access[w]=c.access[w];C.addInitializer=function(P){if(S)throw new TypeError("Cannot add initializers after decoration has completed");u.push(p(P||null))};var T=(0,i[x])(d==="accessor"?{get:g.get,set:g.set}:g[m],C);if(d==="accessor"){if(T===void 0)continue;if(T===null||typeof T!="object")throw new TypeError("Object expected");(y=p(T.get))&&(g.get=y),(y=p(T.set))&&(g.set=y),(y=p(T.init))&&l.unshift(y)}else(y=p(T))&&(d==="field"?l.unshift(y):g[m]=y)}f&&Object.defineProperty(f,c.name,g),S=!0},DPe=function(o,s,i){for(var c=arguments.length>2,l=0;l<s.length;l++)i=c?s[l].call(o,i):s[l].call(o);return c?i:void 0},kPe=function(o){return typeof o=="symbol"?o:"".concat(o)},IPe=function(o,s,i){return typeof s=="symbol"&&(s=s.description?"[".concat(s.description,"]"):""),Object.defineProperty(o,"name",{configurable:!0,value:i?"".concat(i," ",s):s})},PPe=function(o,s){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,s)},_Pe=function(o,s,i,c){function l(u){return u instanceof i?u:new i(function(p){p(u)})}return new(i||(i=Promise))(function(u,p){function d(g){try{f(c.next(g))}catch(y){p(y)}}function m(g){try{f(c.throw(g))}catch(y){p(y)}}function f(g){g.done?u(g.value):l(g.value).then(d,m)}f((c=c.apply(o,s||[])).next())})},RPe=function(o,s){var i={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},c,l,u,p=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return p.next=d(0),p.throw=d(1),p.return=d(2),typeof Symbol=="function"&&(p[Symbol.iterator]=function(){return this}),p;function d(f){return function(g){return m([f,g])}}function m(f){if(c)throw new TypeError("Generator is already executing.");for(;p&&(p=0,f[0]&&(i=0)),i;)try{if(c=1,l&&(u=f[0]&2?l.return:f[0]?l.throw||((u=l.return)&&u.call(l),0):l.next)&&!(u=u.call(l,f[1])).done)return u;switch(l=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return i.label++,{value:f[1],done:!1};case 5:i.label++,l=f[1],f=[0];continue;case 7:f=i.ops.pop(),i.trys.pop();continue;default:if(u=i.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){i=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]<u[3])){i.label=f[1];break}if(f[0]===6&&i.label<u[1]){i.label=u[1],u=f;break}if(u&&i.label<u[2]){i.label=u[2],i.ops.push(f);break}u[2]&&i.ops.pop(),i.trys.pop();continue}f=s.call(o,i)}catch(g){f=[6,g],l=0}finally{c=u=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},OPe=function(o,s){for(var i in o)i!=="default"&&!Object.prototype.hasOwnProperty.call(s,i)&&qj(s,o,i)},qj=Object.create?(function(o,s,i,c){c===void 0&&(c=i);var l=Object.getOwnPropertyDescriptor(s,i);(!l||("get"in l?!s.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return s[i]}}),Object.defineProperty(o,c,l)}):(function(o,s,i,c){c===void 0&&(c=i),o[c]=s[i]}),Gj=function(o){var s=typeof Symbol=="function"&&Symbol.iterator,i=s&&o[s],c=0;if(i)return i.call(o);if(o&&typeof o.length=="number")return{next:function(){return o&&c>=o.length&&(o=void 0),{value:o&&o[c++],done:!o}}};throw new TypeError(s?"Object is not iterable.":"Symbol.iterator is not defined.")},Ree=function(o,s){var i=typeof Symbol=="function"&&o[Symbol.iterator];if(!i)return o;var c=i.call(o),l,u=[],p;try{for(;(s===void 0||s-- >0)&&!(l=c.next()).done;)u.push(l.value)}catch(d){p={error:d}}finally{try{l&&!l.done&&(i=c.return)&&i.call(c)}finally{if(p)throw p.error}}return u},NPe=function(){for(var o=[],s=0;s<arguments.length;s++)o=o.concat(Ree(arguments[s]));return o},$Pe=function(){for(var o=0,s=0,i=arguments.length;s<i;s++)o+=arguments[s].length;for(var c=Array(o),l=0,s=0;s<i;s++)for(var u=arguments[s],p=0,d=u.length;p<d;p++,l++)c[l]=u[p];return c},FPe=function(o,s,i){if(i||arguments.length===2)for(var c=0,l=s.length,u;c<l;c++)(u||!(c in s))&&(u||(u=Array.prototype.slice.call(s,0,c)),u[c]=s[c]);return o.concat(u||Array.prototype.slice.call(s))},M0=function(o){return this instanceof M0?(this.v=o,this):new M0(o)},MPe=function(o,s,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var c=i.apply(o,s||[]),l,u=[];return l=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),d("next"),d("throw"),d("return",p),l[Symbol.asyncIterator]=function(){return this},l;function p(x){return function(C){return Promise.resolve(C).then(x,y)}}function d(x,C){c[x]&&(l[x]=function(w){return new Promise(function(T,P){u.push([x,w,T,P])>1||m(x,w)})},C&&(l[x]=C(l[x])))}function m(x,C){try{f(c[x](C))}catch(w){S(u[0][3],w)}}function f(x){x.value instanceof M0?Promise.resolve(x.value.v).then(g,y):S(u[0][2],x)}function g(x){m("next",x)}function y(x){m("throw",x)}function S(x,C){x(C),u.shift(),u.length&&m(u[0][0],u[0][1])}},LPe=function(o){var s,i;return s={},c("next"),c("throw",function(l){throw l}),c("return"),s[Symbol.iterator]=function(){return this},s;function c(l,u){s[l]=o[l]?function(p){return(i=!i)?{value:M0(o[l](p)),done:!1}:u?u(p):p}:u}},BPe=function(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=o[Symbol.asyncIterator],i;return s?s.call(o):(o=typeof Gj=="function"?Gj(o):o[Symbol.iterator](),i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i);function c(u){i[u]=o[u]&&function(p){return new Promise(function(d,m){p=o[u](p),l(d,m,p.done,p.value)})}}function l(u,p,d,m){Promise.resolve(m).then(function(f){u({value:f,done:d})},p)}},jPe=function(o,s){return Object.defineProperty?Object.defineProperty(o,"raw",{value:s}):o.raw=s,o};var r=Object.create?(function(o,s){Object.defineProperty(o,"default",{enumerable:!0,value:s})}):function(o,s){o.default=s},n=function(o){return n=Object.getOwnPropertyNames||function(s){var i=[];for(var c in s)Object.prototype.hasOwnProperty.call(s,c)&&(i[i.length]=c);return i},n(o)};UPe=function(o){if(o&&o.__esModule)return o;var s={};if(o!=null)for(var i=n(o),c=0;c<i.length;c++)i[c]!=="default"&&qj(s,o,i[c]);return r(s,o),s},zPe=function(o){return o&&o.__esModule?o:{default:o}},VPe=function(o,s,i,c){if(i==="a"&&!c)throw new TypeError("Private accessor was defined without a getter");if(typeof s=="function"?o!==s||!c:!s.has(o))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?c:i==="a"?c.call(o):c?c.value:s.get(o)},WPe=function(o,s,i,c,l){if(c==="m")throw new TypeError("Private method is not writable");if(c==="a"&&!l)throw new TypeError("Private accessor was defined without a setter");if(typeof s=="function"?o!==s||!l:!s.has(o))throw new TypeError("Cannot write private member to an object whose class did not declare it");return c==="a"?l.call(o,i):l?l.value=i:s.set(o,i),i},GPe=function(o,s){if(s===null||typeof s!="object"&&typeof s!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof o=="function"?s===o:o.has(s)},qPe=function(o,s,i){if(s!=null){if(typeof s!="object"&&typeof s!="function")throw new TypeError("Object expected.");var c,l;if(i){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");c=s[Symbol.asyncDispose]}if(c===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");c=s[Symbol.dispose],i&&(l=c)}if(typeof c!="function")throw new TypeError("Object not disposable.");l&&(c=function(){try{l.call(this)}catch(u){return Promise.reject(u)}}),o.stack.push({value:s,dispose:c,async:i})}else i&&o.stack.push({async:!0});return s};var a=typeof SuppressedError=="function"?SuppressedError:function(o,s,i){var c=new Error(i);return c.name="SuppressedError",c.error=o,c.suppressed=s,c};HPe=function(o){function s(u){o.error=o.hasError?new a(u,o.error,"An error was suppressed during disposal."):u,o.hasError=!0}var i,c=0;function l(){for(;i=o.stack.pop();)try{if(!i.async&&c===1)return c=0,o.stack.push(i),Promise.resolve().then(l);if(i.dispose){var u=i.dispose.call(i.value);if(i.async)return c|=2,Promise.resolve(u).then(l,function(p){return s(p),l()})}else c|=1}catch(p){s(p)}if(c===1)return o.hasError?Promise.reject(o.error):Promise.resolve();if(o.hasError)throw o.error}return l()},KPe=function(o,s){return typeof o=="string"&&/^\.\.?\//.test(o)?o.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(i,c,l,u,p){return c?s?".jsx":".js":l&&(!u||!p)?i:l+u+"."+p.toLowerCase()+"js"}):o},t("__extends",bPe),t("__assign",xPe),t("__rest",APe),t("__decorate",CPe),t("__param",wPe),t("__esDecorate",TPe),t("__runInitializers",DPe),t("__propKey",kPe),t("__setFunctionName",IPe),t("__metadata",PPe),t("__awaiter",_Pe),t("__generator",RPe),t("__exportStar",OPe),t("__createBinding",qj),t("__values",Gj),t("__read",Ree),t("__spread",NPe),t("__spreadArrays",$Pe),t("__spreadArray",FPe),t("__await",M0),t("__asyncGenerator",MPe),t("__asyncDelegator",LPe),t("__asyncValues",BPe),t("__makeTemplateObject",jPe),t("__importStar",UPe),t("__importDefault",zPe),t("__classPrivateFieldGet",VPe),t("__classPrivateFieldSet",WPe),t("__classPrivateFieldIn",GPe),t("__addDisposableResource",qPe),t("__disposeResources",HPe),t("__rewriteRelativeImportExtension",KPe)})});var ur={};Rt(ur,{__addDisposableResource:()=>tbt,__assign:()=>PEt,__asyncDelegator:()=>HEt,__asyncGenerator:()=>qEt,__asyncValues:()=>KEt,__await:()=>GEt,__awaiter:()=>Nee,__classPrivateFieldGet:()=>ZEt,__classPrivateFieldIn:()=>ebt,__classPrivateFieldSet:()=>QEt,__createBinding:()=>jEt,__decorate:()=>REt,__disposeResources:()=>rbt,__esDecorate:()=>NEt,__exportStar:()=>BEt,__extends:()=>IEt,__generator:()=>$ee,__importDefault:()=>XEt,__importStar:()=>JEt,__makeTemplateObject:()=>YEt,__metadata:()=>LEt,__param:()=>OEt,__propKey:()=>FEt,__read:()=>UEt,__rest:()=>_Et,__rewriteRelativeImportExtension:()=>nbt,__runInitializers:()=>$Et,__setFunctionName:()=>MEt,__spread:()=>zEt,__spreadArray:()=>WEt,__spreadArrays:()=>VEt,__values:()=>Fee,default:()=>abt});var Oee,IEt,PEt,_Et,REt,OEt,NEt,$Et,FEt,MEt,LEt,Nee,$ee,BEt,jEt,Fee,UEt,zEt,VEt,WEt,GEt,qEt,HEt,KEt,YEt,JEt,XEt,ZEt,QEt,ebt,tbt,rbt,nbt,abt,nr=b(()=>{Oee=Zs(YPe(),1),{__extends:IEt,__assign:PEt,__rest:_Et,__decorate:REt,__param:OEt,__esDecorate:NEt,__runInitializers:$Et,__propKey:FEt,__setFunctionName:MEt,__metadata:LEt,__awaiter:Nee,__generator:$ee,__exportStar:BEt,__createBinding:jEt,__values:Fee,__read:UEt,__spread:zEt,__spreadArrays:VEt,__spreadArray:WEt,__await:GEt,__asyncGenerator:qEt,__asyncDelegator:HEt,__asyncValues:KEt,__makeTemplateObject:YEt,__importStar:JEt,__importDefault:XEt,__classPrivateFieldGet:ZEt,__classPrivateFieldSet:QEt,__classPrivateFieldIn:ebt,__addDisposableResource:tbt,__disposeResources:rbt,__rewriteRelativeImportExtension:nbt}=Oee.default,abt=Oee.default});var JPe=b(()=>{});import{Buffer as XPe}from"buffer";var ZPe,Mee=b(()=>{JPe();ZPe=(t,e)=>{if(typeof t!="string")throw new TypeError(`The "input" argument must be of type string. Received type ${typeof t} (${t})`);return e?XPe.from(t,e):XPe.from(t)}});var Lee,Bee=b(()=>{Mee();Lee=t=>{let e=ZPe(t,"utf8");return new Uint8Array(e.buffer,e.byteOffset,e.byteLength/Uint8Array.BYTES_PER_ELEMENT)}});var QPe=b(()=>{Bee()});var e_e=b(()=>{Mee()});var t_e=b(()=>{Bee();QPe();e_e()});function jee(t){return t instanceof Uint8Array?t:typeof t=="string"?obt(t):ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength/Uint8Array.BYTES_PER_ELEMENT):new Uint8Array(t)}var obt,r_e=b(()=>{t_e();obt=typeof Buffer<"u"&&Buffer.from?function(t){return Buffer.from(t,"utf8")}:Lee});function Uee(t){return typeof t=="string"?t.length===0:t.byteLength===0}var n_e=b(()=>{});function zee(t){return new Uint8Array([(t&4278190080)>>24,(t&16711680)>>16,(t&65280)>>8,t&255])}var a_e=b(()=>{});function Vee(t){if(!Uint32Array.from){for(var e=new Uint32Array(t.length),r=0;r<t.length;)e[r]=t[r],r+=1;return e}return Uint32Array.from(t)}var o_e=b(()=>{});var Wee=b(()=>{r_e();n_e();a_e();o_e()});var s_e,i_e=b(()=>{nr();Wee();Gee();s_e=(function(){function t(){this.crc32=new M_}return t.prototype.update=function(e){Uee(e)||this.crc32.update(jee(e))},t.prototype.digest=function(){return Nee(this,void 0,void 0,function(){return $ee(this,function(e){return[2,zee(this.crc32.digest())]})})},t.prototype.reset=function(){this.crc32=new M_},t})()});var c_e={};Rt(c_e,{AwsCrc32:()=>s_e,Crc32:()=>M_,crc32:()=>sbt});function sbt(t){return new M_().update(t).digest()}var M_,ibt,cbt,Gee=b(()=>{nr();Wee();i_e();M_=(function(){function t(){this.checksum=4294967295}return t.prototype.update=function(e){var r,n;try{for(var a=Fee(e),o=a.next();!o.done;o=a.next()){var s=o.value;this.checksum=this.checksum>>>8^cbt[(this.checksum^s)&255]}}catch(i){r={error:i}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return this},t.prototype.digest=function(){return(this.checksum^4294967295)>>>0},t})(),ibt=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],cbt=Vee(ibt)});var h_e=j(Go=>{"use strict";var d_e=(Gee(),Et(c_e)),Rf=_ee(),lbt=ut("node:stream"),L0=class t{bytes;constructor(e){if(this.bytes=e,e.byteLength!==8)throw new Error("Int64 buffers must be exactly 8 bytes")}static fromNumber(e){if(e>9223372036854776e3||e<-9223372036854776e3)throw new Error(`${e} is too large (or, if negative, too small) to represent as an Int64`);let r=new Uint8Array(8);for(let n=7,a=Math.abs(Math.round(e));n>-1&&a>0;n--,a/=256)r[n]=a;return e<0&&l_e(r),new t(r)}valueOf(){let e=this.bytes.slice(0),r=e[0]&128;return r&&l_e(e),parseInt(Rf.toHex(e),16)*(r?-1:1)}toString(){return String(this.valueOf())}};function l_e(t){for(let e=0;e<8;e++)t[e]^=255;for(let e=7;e>-1&&(t[e]++,t[e]===0);e--);}var Kj=class{toUtf8;fromUtf8;constructor(e,r){this.toUtf8=e,this.fromUtf8=r}format(e){let r=[];for(let o of Object.keys(e)){let s=this.fromUtf8(o);r.push(Uint8Array.from([s.byteLength]),s,this.formatHeaderValue(e[o]))}let n=new Uint8Array(r.reduce((o,s)=>o+s.byteLength,0)),a=0;for(let o of r)n.set(o,a),a+=o.byteLength;return n}formatHeaderValue(e){switch(e.type){case"boolean":return Uint8Array.from([e.value?0:1]);case"byte":return Uint8Array.from([2,e.value]);case"short":let r=new DataView(new ArrayBuffer(3));return r.setUint8(0,3),r.setInt16(1,e.value,!1),new Uint8Array(r.buffer);case"integer":let n=new DataView(new ArrayBuffer(5));return n.setUint8(0,4),n.setInt32(1,e.value,!1),new Uint8Array(n.buffer);case"long":let a=new Uint8Array(9);return a[0]=5,a.set(e.value.bytes,1),a;case"binary":let o=new DataView(new ArrayBuffer(3+e.value.byteLength));o.setUint8(0,6),o.setUint16(1,e.value.byteLength,!1);let s=new Uint8Array(o.buffer);return s.set(e.value,3),s;case"string":let i=this.fromUtf8(e.value),c=new DataView(new ArrayBuffer(3+i.byteLength));c.setUint8(0,7),c.setUint16(1,i.byteLength,!1);let l=new Uint8Array(c.buffer);return l.set(i,3),l;case"timestamp":let u=new Uint8Array(9);return u[0]=8,u.set(L0.fromNumber(e.value.valueOf()).bytes,1),u;case"uuid":if(!vbt.test(e.value))throw new Error(`Invalid UUID received: ${e.value}`);let p=new Uint8Array(17);return p[0]=9,p.set(Rf.fromHex(e.value.replace(/\-/g,"")),1),p}}parse(e){let r={},n=0;for(;n<e.byteLength;){let a=e.getUint8(n++),o=this.toUtf8(new Uint8Array(e.buffer,e.byteOffset+n,a));switch(n+=a,e.getUint8(n++)){case 0:r[o]={type:p_e,value:!0};break;case 1:r[o]={type:p_e,value:!1};break;case 2:r[o]={type:ubt,value:e.getInt8(n++)};break;case 3:r[o]={type:pbt,value:e.getInt16(n,!1)},n+=2;break;case 4:r[o]={type:dbt,value:e.getInt32(n,!1)},n+=4;break;case 5:r[o]={type:mbt,value:new L0(new Uint8Array(e.buffer,e.byteOffset+n,8))},n+=8;break;case 6:let s=e.getUint16(n,!1);n+=2,r[o]={type:fbt,value:new Uint8Array(e.buffer,e.byteOffset+n,s)},n+=s;break;case 7:let i=e.getUint16(n,!1);n+=2,r[o]={type:hbt,value:this.toUtf8(new Uint8Array(e.buffer,e.byteOffset+n,i))},n+=i;break;case 8:r[o]={type:gbt,value:new Date(new L0(new Uint8Array(e.buffer,e.byteOffset+n,8)).valueOf())},n+=8;break;case 9:let c=new Uint8Array(e.buffer,e.byteOffset+n,16);n+=16,r[o]={type:ybt,value:`${Rf.toHex(c.subarray(0,4))}-${Rf.toHex(c.subarray(4,6))}-${Rf.toHex(c.subarray(6,8))}-${Rf.toHex(c.subarray(8,10))}-${Rf.toHex(c.subarray(10))}`};break;default:throw new Error("Unrecognized header type tag")}}return r}},u_e;(function(t){t[t.boolTrue=0]="boolTrue",t[t.boolFalse=1]="boolFalse",t[t.byte=2]="byte",t[t.short=3]="short",t[t.integer=4]="integer",t[t.long=5]="long",t[t.byteArray=6]="byteArray",t[t.string=7]="string",t[t.timestamp=8]="timestamp",t[t.uuid=9]="uuid"})(u_e||(u_e={}));var p_e="boolean",ubt="byte",pbt="short",dbt="integer",mbt="long",fbt="binary",hbt="string",gbt="timestamp",ybt="uuid",vbt=/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/,m_e=4,_g=m_e*2,$S=4,Sbt=_g+$S*2;function Ebt({byteLength:t,byteOffset:e,buffer:r}){if(t<Sbt)throw new Error("Provided message too short to accommodate event stream message overhead");let n=new DataView(r,e,t),a=n.getUint32(0,!1);if(t!==a)throw new Error("Reported message length does not match received message length");let o=n.getUint32(m_e,!1),s=n.getUint32(_g,!1),i=n.getUint32(t-$S,!1),c=new d_e.Crc32().update(new Uint8Array(r,e,_g));if(s!==c.digest())throw new Error(`The prelude checksum specified in the message (${s}) does not match the calculated CRC32 checksum (${c.digest()})`);if(c.update(new Uint8Array(r,e+_g,t-(_g+$S))),i!==c.digest())throw new Error(`The message checksum (${c.digest()}) did not match the expected value of ${i}`);return{headers:new DataView(r,e+_g+$S,o),body:new Uint8Array(r,e+_g+$S+o,a-o-(_g+$S+$S))}}var Yj=class{headerMarshaller;messageBuffer;isEndOfStream;constructor(e,r){this.headerMarshaller=new Kj(e,r),this.messageBuffer=[],this.isEndOfStream=!1}feed(e){this.messageBuffer.push(this.decode(e))}endOfStream(){this.isEndOfStream=!0}getMessage(){let e=this.messageBuffer.pop(),r=this.isEndOfStream;return{getMessage(){return e},isEndOfStream(){return r}}}getAvailableMessages(){let e=this.messageBuffer;this.messageBuffer=[];let r=this.isEndOfStream;return{getMessages(){return e},isEndOfStream(){return r}}}encode({headers:e,body:r}){let n=this.headerMarshaller.format(e),a=n.byteLength+r.byteLength+16,o=new Uint8Array(a),s=new DataView(o.buffer,o.byteOffset,o.byteLength),i=new d_e.Crc32;return s.setUint32(0,a,!1),s.setUint32(4,n.byteLength,!1),s.setUint32(8,i.update(o.subarray(0,8)).digest(),!1),o.set(n,12),o.set(r,n.byteLength+12),s.setUint32(a-4,i.update(o.subarray(8,a-4)).digest(),!1),o}decode(e){let{headers:r,body:n}=Ebt(e);return{headers:this.headerMarshaller.parse(r),body:n}}formatHeaders(e){return this.headerMarshaller.format(e)}},Jj=class{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.inputStream)yield this.options.decoder.decode(e)}},Xj=class{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.messageStream)yield this.options.encoder.encode(e);this.options.includeEndFrame&&(yield new Uint8Array(0))}},Zj=class{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.messageStream){let r=await this.options.deserializer(e);r!==void 0&&(yield r)}}},Qj=class{options;constructor(e){this.options=e}[Symbol.asyncIterator](){return this.asyncIterator()}async*asyncIterator(){for await(let e of this.options.inputStream)yield this.options.serializer(e)}};function f_e(t){let e=0,r=0,n=null,a=null,o=i=>{if(typeof i!="number")throw new Error("Attempted to allocate an event message where size was not a number: "+i);e=i,r=4,n=new Uint8Array(i),new DataView(n.buffer).setUint32(0,i,!1)},s=async function*(){let i=t[Symbol.asyncIterator]();for(;;){let{value:c,done:l}=await i.next();if(l){if(e)if(e===r)yield n;else throw new Error("Truncated event message received.");else return;return}let u=c.length,p=0;for(;p<u;){if(!n){let m=u-p;a||(a=new Uint8Array(4));let f=Math.min(4-r,m);if(a.set(c.slice(p,p+f),r),r+=f,p+=f,r<4)break;o(new DataView(a.buffer).getUint32(0,!1)),a=null}let d=Math.min(e-r,u-p);n.set(c.slice(p,p+d),r),r+=d,p+=d,e&&e===r&&(yield n,n=null,e=0,r=0)}}};return{[Symbol.asyncIterator]:s}}function bbt(t,e){let r=Hee(e.deserializer,e.toUtf8);return{[Symbol.asyncIterator]:async function*(){for await(let n of t){let a=e.eventStreamCodec.decode(n),o=await r(a);o!==void 0&&(yield o)}}}}function Hee(t,e){return async function(r){let{value:n}=r.headers[":message-type"];if(n==="error"){let a=new Error(r.headers[":error-message"].value||"UnknownError");throw a.name=r.headers[":error-code"].value,a}else if(n==="exception"){let a=r.headers[":exception-type"].value,o={[a]:r},s=await t(o);if(s.$unknown){let i=new Error(e(r.body));throw i.name=a,i}throw s[a]}else if(n==="event"){let a={[r.headers[":event-type"].value]:r},o=await t(a);return o.$unknown?void 0:o}else throw Error(`Unrecognizable event type: ${r.headers[":event-type"].value}`)}}var Kee=class{eventStreamCodec;utfEncoder;constructor({utf8Encoder:e,utf8Decoder:r}){this.eventStreamCodec=new Yj(e,r),this.utfEncoder=e}deserialize(e,r){let n=f_e(e);return new Zj({messageStream:new Jj({inputStream:n,decoder:this.eventStreamCodec}),deserializer:Hee(r,this.utfEncoder)})}serialize(e,r){return new Xj({messageStream:new Qj({inputStream:e,serializer:r}),encoder:this.eventStreamCodec,includeEndFrame:!0})}},xbt=t=>new Kee(t),eU=class{universalMarshaller;constructor({utf8Encoder:e,utf8Decoder:r}){this.universalMarshaller=new Kee({utf8Decoder:r,utf8Encoder:e})}deserialize(e,r){let n=typeof e[Symbol.asyncIterator]=="function"?e:Cbt(e);return this.universalMarshaller.deserialize(n,r)}serialize(e,r){return lbt.Readable.from(this.universalMarshaller.serialize(e,r))}},Abt=t=>new eU(t);async function*Cbt(t){let e=!1,r=!1,n=new Array;for(t.on("error",a=>{if(e||(e=!0),a)throw a}),t.on("data",a=>{n.push(a)}),t.on("end",()=>{e=!0});!r;){let a=await new Promise(o=>setTimeout(()=>o(n.shift()),0));a&&(yield a),r=e&&n.length===0}}var wbt=t=>({[Symbol.asyncIterator]:async function*(){let e=t.getReader();try{for(;;){let{done:r,value:n}=await e.read();if(r)return;yield n}}finally{e.releaseLock()}}}),Tbt=t=>{let e=t[Symbol.asyncIterator]();return new ReadableStream({async pull(r){let{done:n,value:a}=await e.next();if(n)return r.close();r.enqueue(a)}})},Dbt=t=>Object.assign(t,{eventStreamMarshaller:t.eventStreamSerdeProvider(t)}),qee=class{marshaller;serializer;deserializer;serdeContext;defaultContentType;constructor({marshaller:e,serializer:r,deserializer:n,serdeContext:a,defaultContentType:o}){this.marshaller=e,this.serializer=r,this.deserializer=n,this.serdeContext=a,this.defaultContentType=o}async serializeEventStream({eventStream:e,requestSchema:r,initialRequest:n}){let a=this.marshaller,o=r.getEventStreamMember(),s=r.getMemberSchema(o),i=this.serializer,c=this.defaultContentType,l=Symbol("initialRequestMarker"),u={async*[Symbol.asyncIterator](){if(n){let p={":event-type":{type:"string",value:"initial-request"},":message-type":{type:"string",value:"event"},":content-type":{type:"string",value:c}};i.write(r,n);let d=i.flush();yield{[l]:!0,headers:p,body:d}}for await(let p of e)yield p}};return a.serialize(u,p=>{if(p[l])return{headers:p.headers,body:p.body};let d="";for(let x in p)if(x!=="__type"){d=x;break}let{additionalHeaders:m,body:f,eventType:g,explicitPayloadContentType:y}=this.writeEventBody(d,s,p);return{headers:{":event-type":{type:"string",value:g},":message-type":{type:"string",value:"event"},":content-type":{type:"string",value:y??c},...m},body:f}})}async deserializeEventStream({response:e,responseSchema:r,initialResponseContainer:n}){let a=this.marshaller,o=r.getEventStreamMember(),i=r.getMemberSchema(o).getMemberSchemas(),c=Symbol("initialResponseMarker"),l=a.deserialize(e.body,async d=>{let m="";for(let g in d)if(g!=="__type"){m=g;break}let f=d[m].body;if(m==="initial-response"){let g=await this.deserializer.read(r,f);return delete g[o],{[c]:!0,...g}}else if(m in i){let g=i[m];if(g.isStructSchema()){let y={},S=!1;for(let[x,C]of g.structIterator()){let{eventHeader:w,eventPayload:T}=C.getMergedTraits();if(S=S||!!(w||T),T)C.isBlobSchema()?y[x]=f:C.isStringSchema()?y[x]=(this.serdeContext?.utf8Encoder??Rf.toUtf8)(f):C.isStructSchema()&&(y[x]=await this.deserializer.read(C,f));else if(w){let P=d[m].headers[x]?.value;P!=null&&(C.isNumericSchema()?P&&typeof P=="object"&&"bytes"in P?y[x]=BigInt(P.toString()):y[x]=Number(P):y[x]=P)}}if(S)return{[m]:y};if(f.byteLength===0)return{[m]:{}}}return{[m]:await this.deserializer.read(g,f)}}else return{$unknown:d}}),u=l[Symbol.asyncIterator](),p=await u.next();if(p.done)return l;if(p.value?.[c]){if(!r)throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given.");for(let d in p.value)n[d]=p.value[d]}return{async*[Symbol.asyncIterator](){for(p?.value?.[c]||(yield p.value);;){let{done:d,value:m}=await u.next();if(d)break;yield m}}}}writeEventBody(e,r,n){let a=this.serializer,o=e,s=null,i,c=r.getSchema()[4].includes(e),l={};if(c){let d=r.getMemberSchema(e);if(d.isStructSchema()){for(let[m,f]of d.structIterator()){let{eventHeader:g,eventPayload:y}=f.getMergedTraits();if(y)s=m;else if(g){let S=n[e][m],x="binary";f.isNumericSchema()?(-2)**31<=S&&S<=2**31-1?x="integer":x="long":f.isTimestampSchema()?x="timestamp":f.isStringSchema()?x="string":f.isBooleanSchema()&&(x="boolean"),S!=null&&(l[m]={type:x,value:S},delete n[e][m])}}if(s!==null){let m=d.getMemberSchema(s);m.isBlobSchema()?i="application/octet-stream":m.isStringSchema()&&(i="text/plain"),a.write(m,n[e][s])}else a.write(d,n[e])}else if(d.isUnitSchema())a.write(d,{});else throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union.")}else{let[d,m]=n[e];o=d,a.write(15,m)}let u=a.flush()??new Uint8Array;return{body:typeof u=="string"?(this.serdeContext?.utf8Decoder??Rf.fromUtf8)(u):u,eventType:o,explicitPayloadContentType:i,additionalHeaders:l}}};Go.EventStreamCodec=Yj;Go.EventStreamMarshaller=eU;Go.EventStreamSerde=qee;Go.HeaderMarshaller=Kj;Go.Int64=L0;Go.MessageDecoderStream=Jj;Go.MessageEncoderStream=Xj;Go.SmithyMessageDecoderStream=Zj;Go.SmithyMessageEncoderStream=Qj;Go.UniversalEventStreamMarshaller=Kee;Go.eventStreamSerdeProvider=Abt;Go.getChunkedStream=f_e;Go.getMessageUnmarshaller=Hee;Go.getUnmarshalledStream=bbt;Go.iterableToReadableStream=Tbt;Go.readableStreamToIterable=wbt;Go.resolveEventStreamSerdeConfig=Dbt;Go.universalEventStreamSerdeProvider=xbt});var E_e=j(Tn=>{"use strict";var za=_ee(),Al=LQ(),Lp=_S(),kbt=(k0(),Et(D0)),FS=async(t=new Uint8Array,e)=>{if(t instanceof Uint8Array)return za.Uint8ArrayBlobAdapter.mutate(t);if(!t)return za.Uint8ArrayBlobAdapter.mutate(new Uint8Array);let r=e.streamCollector(t);return za.Uint8ArrayBlobAdapter.mutate(await r)};function B_(t){return encodeURIComponent(t).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}var MS=class{serdeContext;setSerdeContext(e){this.serdeContext=e}},j_=class extends MS{options;compositeErrorRegistry;constructor(e){super(),this.options=e,this.compositeErrorRegistry=Al.TypeRegistry.for(e.defaultNamespace);for(let r of e.errorTypeRegistries??[])this.compositeErrorRegistry.copyFrom(r)}getRequestType(){return Lp.HttpRequest}getResponseType(){return Lp.HttpResponse}setSerdeContext(e){this.serdeContext=e,this.serializer.setSerdeContext(e),this.deserializer.setSerdeContext(e),this.getPayloadCodec()&&this.getPayloadCodec().setSerdeContext(e)}updateServiceEndpoint(e,r){if("url"in r){e.protocol=r.url.protocol,e.hostname=r.url.hostname,e.port=r.url.port?Number(r.url.port):void 0,e.path=r.url.pathname,e.fragment=r.url.hash||void 0,e.username=r.url.username||void 0,e.password=r.url.password||void 0,e.query||(e.query={});for(let[n,a]of r.url.searchParams.entries())e.query[n]=a;if(r.headers)for(let n in r.headers)e.headers[n]=r.headers[n].join(", ");return e}else{if(e.protocol=r.protocol,e.hostname=r.hostname,e.port=r.port?Number(r.port):void 0,e.path=r.path,e.query={...r.query},r.headers)for(let n in r.headers)e.headers[n]=r.headers[n];return e}}setHostPrefix(e,r,n){if(this.serdeContext?.disableHostPrefix)return;let a=Al.NormalizedSchema.of(r.input),o=Al.translateTraits(r.traits??{});if(o.endpoint){let s=o.endpoint?.[0];if(typeof s=="string"){for(let[i,c]of a.structIterator()){if(!c.getMergedTraits().hostLabel)continue;let l=n[i];if(typeof l!="string")throw new Error(`@smithy/core/schema - ${i} in input must be a string as hostLabel.`);s=s.replace(`{${i}}`,l)}e.hostname=s+e.hostname}}}deserializeMetadata(e){return{httpStatusCode:e.statusCode,requestId:e.headers["x-amzn-requestid"]??e.headers["x-amzn-request-id"]??e.headers["x-amz-request-id"],extendedRequestId:e.headers["x-amz-id-2"],cfId:e.headers["x-amz-cf-id"]}}async serializeEventStream({eventStream:e,requestSchema:r,initialRequest:n}){return(await this.loadEventStreamCapability()).serializeEventStream({eventStream:e,requestSchema:r,initialRequest:n})}async deserializeEventStream({response:e,responseSchema:r,initialResponseContainer:n}){return(await this.loadEventStreamCapability()).deserializeEventStream({response:e,responseSchema:r,initialResponseContainer:n})}async loadEventStreamCapability(){let{EventStreamSerde:e}=await Promise.resolve().then(()=>Zs(h_e()));return new e({marshaller:this.getEventStreamMarshaller(),serializer:this.serializer,deserializer:this.deserializer,serdeContext:this.serdeContext,defaultContentType:this.getDefaultContentType()})}getDefaultContentType(){throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`)}async deserializeHttpMessage(e,r,n,a,o){return[]}getEventStreamMarshaller(){let e=this.serdeContext;if(!e.eventStreamMarshaller)throw new Error("@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext.");return e.eventStreamMarshaller}},Yee=class extends j_{async serializeRequest(e,r,n){let a=r&&typeof r=="object"?r:{},o=this.serializer,s={},i={},c=await n.endpoint(),l=Al.NormalizedSchema.of(e?.input),u=[],p=[],d=!1,m,f=new Lp.HttpRequest({protocol:"",hostname:"",port:void 0,path:"",fragment:void 0,query:s,headers:i,body:void 0});if(c){this.updateServiceEndpoint(f,c),this.setHostPrefix(f,e,a);let g=Al.translateTraits(e.traits);if(g.http){f.method=g.http[0];let[y,S]=g.http[1].split("?");f.path=="/"?f.path=y:f.path+=y;let x=new URLSearchParams(S??"");for(let[C,w]of x)s[C]=w}}for(let[g,y]of l.structIterator()){let S=y.getMergedTraits()??{},x=a[g];if(x==null&&!y.isIdempotencyToken()){if(S.httpLabel&&(f.path.includes(`{${g}+}`)||f.path.includes(`{${g}}`)))throw new Error(`No value provided for input HTTP label: ${g}.`);continue}if(S.httpPayload)y.isStreaming()?y.isStructSchema()?a[g]&&(m=await this.serializeEventStream({eventStream:a[g],requestSchema:l})):m=x:(o.write(y,x),m=o.flush());else if(S.httpLabel){o.write(y,x);let C=o.flush();f.path.includes(`{${g}+}`)?f.path=f.path.replace(`{${g}+}`,C.split("/").map(B_).join("/")):f.path.includes(`{${g}}`)&&(f.path=f.path.replace(`{${g}}`,B_(C)))}else if(S.httpHeader)o.write(y,x),i[S.httpHeader.toLowerCase()]=String(o.flush());else if(typeof S.httpPrefixHeaders=="string")for(let C in x){let w=x[C],T=S.httpPrefixHeaders+C;o.write([y.getValueSchema(),{httpHeader:T}],w),i[T.toLowerCase()]=o.flush()}else S.httpQuery||S.httpQueryParams?this.serializeQuery(y,x,s):(d=!0,u.push(g),p.push(y))}if(d&&a){let[g,y]=(l.getName(!0)??"#Unknown").split("#"),S=l.getSchema()[6],x=[3,g,y,l.getMergedTraits(),u,p,void 0];S?x[6]=S:x.pop(),o.write(x,a),m=o.flush()}return f.headers=i,f.query=s,f.body=m,f}serializeQuery(e,r,n){let a=this.serializer,o=e.getMergedTraits();if(o.httpQueryParams){for(let s in r)if(!(s in n)){let i=r[s],c=e.getValueSchema();Object.assign(c.getMergedTraits(),{...o,httpQuery:s,httpQueryParams:void 0}),this.serializeQuery(c,i,n)}return}if(e.isListSchema()){let s=!!e.getMergedTraits().sparse,i=[];for(let c of r){a.write([e.getValueSchema(),o],c);let l=a.flush();(s||l!==void 0)&&i.push(l)}n[o.httpQuery]=i}else a.write([e,o],r),n[o.httpQuery]=a.flush()}async deserializeResponse(e,r,n){let a=this.deserializer,o=Al.NormalizedSchema.of(e.output),s={};if(n.statusCode>=300){let c=await FS(n.body,r);throw c.byteLength>0&&Object.assign(s,await a.read(15,c)),await this.handleError(e,r,n,s,this.deserializeMetadata(n)),new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw.")}for(let c in n.headers){let l=n.headers[c];delete n.headers[c],n.headers[c.toLowerCase()]=l}let i=await this.deserializeHttpMessage(o,r,n,s);if(i.length){let c=await FS(n.body,r);if(c.byteLength>0){let l=await a.read(o,c);for(let u of i)l[u]!=null&&(s[u]=l[u])}}else i.discardResponseBody&&await FS(n.body,r);return s.$metadata=this.deserializeMetadata(n),s}async deserializeHttpMessage(e,r,n,a,o){let s;a instanceof Set?s=o:s=a;let i=!0,c=this.deserializer,l=Al.NormalizedSchema.of(e),u=[];for(let[p,d]of l.structIterator()){let m=d.getMemberTraits();if(m.httpPayload){if(i=!1,d.isStreaming())d.isStructSchema()?s[p]=await this.deserializeEventStream({response:n,responseSchema:l}):s[p]=za.sdkStreamMixin(n.body);else if(n.body){let g=await FS(n.body,r);g.byteLength>0&&(s[p]=await c.read(d,g))}}else if(m.httpHeader){let f=String(m.httpHeader).toLowerCase(),g=n.headers[f];if(g!=null)if(d.isListSchema()){let y=d.getValueSchema();y.getMergedTraits().httpHeader=f;let S;y.isTimestampSchema()&&y.getSchema()===4?S=za.splitEvery(g,",",2):S=za.splitHeader(g);let x=[];for(let C of S)x.push(await c.read(y,C.trim()));s[p]=x}else s[p]=await c.read(d,g)}else if(m.httpPrefixHeaders!==void 0){s[p]={};for(let f in n.headers)if(f.startsWith(m.httpPrefixHeaders)){let g=n.headers[f],y=d.getValueSchema();y.getMergedTraits().httpHeader=f,s[p][f.slice(m.httpPrefixHeaders.length)]=await c.read(y,g)}}else m.httpResponseCode?s[p]=n.statusCode:u.push(p)}return u.discardResponseBody=i,u}},Jee=class extends j_{async serializeRequest(e,r,n){let a=this.serializer,o={},s={},i=await n.endpoint(),c=Al.NormalizedSchema.of(e?.input),l=c.getSchema(),u,p=r&&typeof r=="object"?r:{},d=new Lp.HttpRequest({protocol:"",hostname:"",port:void 0,path:"/",fragment:void 0,query:o,headers:s,body:void 0});if(i&&(this.updateServiceEndpoint(d,i),this.setHostPrefix(d,e,p)),p){let m=c.getEventStreamMember();if(m){if(p[m]){let f={};for(let[g,y]of c.structIterator())g!==m&&p[g]&&(a.write(y,p[g]),f[g]=a.flush());u=await this.serializeEventStream({eventStream:p[m],requestSchema:c,initialRequest:f})}}else a.write(l,p),u=a.flush()}return d.headers=Object.assign(d.headers,s),d.query=o,d.body=u,d.method="POST",d}async deserializeResponse(e,r,n){let a=this.deserializer,o=Al.NormalizedSchema.of(e.output),s={};if(n.statusCode>=300){let c=await FS(n.body,r);throw c.byteLength>0&&Object.assign(s,await a.read(15,c)),await this.handleError(e,r,n,s,this.deserializeMetadata(n)),new Error("@smithy/core/protocols - RPC Protocol error handler failed to throw.")}for(let c in n.headers){let l=n.headers[c];delete n.headers[c],n.headers[c.toLowerCase()]=l}let i=o.getEventStreamMember();if(i)s[i]=await this.deserializeEventStream({response:n,responseSchema:o,initialResponseContainer:s});else{let c=await FS(n.body,r);c.byteLength>0&&Object.assign(s,await a.read(o,c))}return s.$metadata=this.deserializeMetadata(n),s}},y_e=(t,e,r,n,a,o)=>{if(e!=null&&e[r]!==void 0){let s=n();if(s==null||s.length<=0)throw new Error("Empty value provided for input HTTP label: "+r+".");t=t.replace(a,o?s.split("/").map(i=>B_(i)).join("/"):B_(s))}else throw new Error("No value provided for input HTTP label: "+r+".");return t};function Ibt(t,e){return new tU(t,e)}var tU=class{input;context;query={};method="";headers={};path="";body=null;hostname="";resolvePathStack=[];constructor(e,r){this.input=e,this.context=r}async build(){let{hostname:e,protocol:r="https",port:n,path:a}=await this.context.endpoint();this.path=a;for(let o of this.resolvePathStack)o(this.path);return new Lp.HttpRequest({protocol:r,hostname:this.hostname||e,port:n,method:this.method,path:this.path,query:this.query,body:this.body,headers:this.headers})}hn(e){return this.hostname=e,this}bp(e){return this.resolvePathStack.push(r=>{this.path=`${r?.endsWith("/")?r.slice(0,-1):r||""}`+e}),this}p(e,r,n,a){return this.resolvePathStack.push(o=>{this.path=y_e(o,this.input,e,r,n,a)}),this}h(e){return this.headers=e,this}q(e){return this.query=e,this}b(e){return this.body=e,this}m(e){return this.method=e,this}};function tte(t,e){if(e.timestampFormat.useTrait&&t.isTimestampSchema()&&(t.getSchema()===5||t.getSchema()===6||t.getSchema()===7))return t.getSchema();let{httpLabel:r,httpPrefixHeaders:n,httpHeader:a,httpQuery:o}=t.getMergedTraits();return(e.httpBindings?typeof n=="string"||a?6:o||r?5:void 0:void 0)??e.timestampFormat.default}var rU=class extends MS{settings;constructor(e){super(),this.settings=e}read(e,r){let n=Al.NormalizedSchema.of(e);if(n.isListSchema())return za.splitHeader(r).map(a=>this.read(n.getValueSchema(),a));if(n.isBlobSchema())return(this.serdeContext?.base64Decoder??za.fromBase64)(r);if(n.isTimestampSchema())switch(tte(n,this.settings)){case 5:return za._parseRfc3339DateTimeWithOffset(r);case 6:return za._parseRfc7231DateTime(r);case 7:return za._parseEpochTimestamp(r);default:return console.warn("Missing timestamp format, parsing value with Date constructor:",r),new Date(r)}if(n.isStringSchema()){let a=n.getMergedTraits().mediaType,o=r;if(a)return n.getMergedTraits().httpHeader&&(o=this.base64ToUtf8(o)),(a==="application/json"||a.endsWith("+json"))&&(o=za.LazyJsonString.from(o)),o}return n.isNumericSchema()?Number(r):n.isBigIntegerSchema()?BigInt(r):n.isBigDecimalSchema()?new za.NumericValue(r,"bigDecimal"):n.isBooleanSchema()?String(r).toLowerCase()==="true":r}base64ToUtf8(e){return(this.serdeContext?.utf8Encoder??za.toUtf8)((this.serdeContext?.base64Decoder??za.fromBase64)(e))}},Xee=class extends MS{codecDeserializer;stringDeserializer;constructor(e,r){super(),this.codecDeserializer=e,this.stringDeserializer=new rU(r)}setSerdeContext(e){this.stringDeserializer.setSerdeContext(e),this.codecDeserializer.setSerdeContext(e),this.serdeContext=e}read(e,r){let n=Al.NormalizedSchema.of(e),a=n.getMergedTraits(),o=this.serdeContext?.utf8Encoder??za.toUtf8;if(a.httpHeader||a.httpResponseCode)return this.stringDeserializer.read(n,o(r));if(a.httpPayload){if(n.isBlobSchema()){let s=this.serdeContext?.utf8Decoder??za.fromUtf8;return typeof r=="string"?s(r):r}else if(n.isStringSchema())return"byteLength"in r?o(r):r}return this.codecDeserializer.read(n,r)}},nU=class extends MS{settings;stringBuffer="";constructor(e){super(),this.settings=e}write(e,r){let n=Al.NormalizedSchema.of(e);switch(typeof r){case"object":if(r===null){this.stringBuffer="null";return}if(n.isTimestampSchema()){if(!(r instanceof Date))throw new Error(`@smithy/core/protocols - received non-Date value ${r} when schema expected Date in ${n.getName(!0)}`);switch(tte(n,this.settings)){case 5:this.stringBuffer=r.toISOString().replace(".000Z","Z");break;case 6:this.stringBuffer=za.dateToUtcString(r);break;case 7:this.stringBuffer=String(r.getTime()/1e3);break;default:console.warn("Missing timestamp format, using epoch seconds",r),this.stringBuffer=String(r.getTime()/1e3)}return}if(n.isBlobSchema()&&"byteLength"in r){this.stringBuffer=(this.serdeContext?.base64Encoder??za.toBase64)(r);return}if(n.isListSchema()&&Array.isArray(r)){let s="";for(let i of r){this.write([n.getValueSchema(),n.getMergedTraits()],i);let c=this.flush(),l=n.getValueSchema().isTimestampSchema()?c:za.quoteHeader(c);s!==""&&(s+=", "),s+=l}this.stringBuffer=s;return}this.stringBuffer=JSON.stringify(r,null,2);break;case"string":let a=n.getMergedTraits().mediaType,o=r;if(a&&((a==="application/json"||a.endsWith("+json"))&&(o=za.LazyJsonString.from(o)),n.getMergedTraits().httpHeader)){this.stringBuffer=(this.serdeContext?.base64Encoder??za.toBase64)(o.toString());return}this.stringBuffer=r;break;default:n.isIdempotencyToken()?this.stringBuffer=za.generateIdempotencyToken():this.stringBuffer=String(r)}}flush(){let e=this.stringBuffer;return this.stringBuffer="",e}},Zee=class{codecSerializer;stringSerializer;buffer;constructor(e,r,n=new nU(r)){this.codecSerializer=e,this.stringSerializer=n}setSerdeContext(e){this.codecSerializer.setSerdeContext(e),this.stringSerializer.setSerdeContext(e)}write(e,r){let n=Al.NormalizedSchema.of(e),a=n.getMergedTraits();if(a.httpHeader||a.httpLabel||a.httpQuery){this.stringSerializer.write(n,r),this.buffer=this.stringSerializer.flush();return}return this.codecSerializer.write(n,r)}flush(){if(this.buffer!==void 0){let e=this.buffer;return this.buffer=void 0,e}return this.codecSerializer.flush()}},Qee=class{name;kind;values;constructor({name:e,kind:r=kbt.FieldPosition.HEADER,values:n=[]}){this.name=e,this.kind=r,this.values=n}add(e){this.values.push(e)}set(e){this.values=e}remove(e){this.values=this.values.filter(r=>r!==e)}toString(){return this.values.map(e=>e.includes(",")||e.includes(" ")?`"${e}"`:e).join(", ")}get(){return this.values}},ete=class{entries={};encoding;constructor({fields:e=[],encoding:r="utf-8"}){e.forEach(this.setField.bind(this)),this.encoding=r}setField(e){this.entries[e.name.toLowerCase()]=e}getField(e){return this.entries[e.toLowerCase()]}removeField(e){delete this.entries[e.toLowerCase()]}getByType(e){return Object.values(this.entries).filter(r=>r.kind===e)}},Pbt=t=>({setHttpHandler(e){t.httpHandler=e},httpHandler(){return t.httpHandler},updateHttpClientConfig(e,r){t.httpHandler?.updateHttpClientConfig(e,r)},httpHandlerConfigs(){return t.httpHandler.httpHandlerConfigs()}}),_bt=t=>({httpHandler:t.httpHandler()}),g_e="content-length";function v_e(t){return e=>async r=>{let n=r.request;if(Lp.HttpRequest.isInstance(n)){let{body:a,headers:o}=n;if(a&&Object.keys(o).map(s=>s.toLowerCase()).indexOf(g_e)===-1)try{let s=t(a);n.headers={...n.headers,[g_e]:String(s)}}catch{}}return e({...r,request:n})}}var S_e={step:"build",tags:["SET_CONTENT_LENGTH","CONTENT_LENGTH"],name:"contentLengthMiddleware",override:!0},Rbt=t=>({applyToStack:e=>{e.add(v_e(t.bodyLengthChecker),S_e)}}),L_=t=>encodeURIComponent(t).replace(/[!'()*]/g,Obt),Obt=t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`,Nbt=t=>t.split("/").map(L_).join("/");function $bt(t){let e=[];for(let r of Object.keys(t).sort()){let n=t[r];if(r=L_(r),Array.isArray(n))for(let a=0,o=n.length;a<o;a++)e.push(`${r}=${L_(n[a])}`);else{let a=r;(n||typeof n=="string")&&(a+=`=${L_(n)}`),e.push(a)}}return e.join("&")}Tn.HttpRequest=Lp.HttpRequest;Tn.HttpResponse=Lp.HttpResponse;Tn.isValidHostname=Lp.isValidHostname;Tn.parseQueryString=Lp.parseQueryString;Tn.parseUrl=Lp.parseUrl;Tn.Field=Qee;Tn.Fields=ete;Tn.FromStringShapeDeserializer=rU;Tn.HttpBindingProtocol=Yee;Tn.HttpInterceptingShapeDeserializer=Xee;Tn.HttpInterceptingShapeSerializer=Zee;Tn.HttpProtocol=j_;Tn.RequestBuilder=tU;Tn.RpcProtocol=Jee;Tn.SerdeContext=MS;Tn.ToStringShapeSerializer=nU;Tn.buildQueryString=$bt;Tn.collectBody=FS;Tn.contentLengthMiddleware=v_e;Tn.contentLengthMiddlewareOptions=S_e;Tn.determineTimestampFormat=tte;Tn.escapeUri=L_;Tn.escapeUriPath=Nbt;Tn.extendedEncodeURIComponent=B_;Tn.getContentLengthPlugin=Rbt;Tn.getHttpHandlerExtensionConfiguration=Pbt;Tn.requestBuilder=Ibt;Tn.resolveHttpHandlerRuntimeConfig=_bt;Tn.resolvedPath=y_e});function rte(t){let e=t&&typeof t=="object"&&"reason"in t?t.reason:void 0;if(e){if(e instanceof Error){let a=new Error("Request aborted");return a.name="AbortError",a.cause=e,a}let n=new Error(String(e));return n.name="AbortError",n}let r=new Error("Request aborted");return r.name="AbortError",r}var b_e=b(()=>{});var x_e,A_e=b(()=>{x_e=["ECONNRESET","EPIPE","ETIMEDOUT"]});var C_e,w_e=b(()=>{C_e=t=>{let e={};for(let r in t){let n=t[r];e[r]=Array.isArray(n)?n.join(","):n}return e}});import U_ from"node:https";var T_e=b(()=>{});var Va,LS=b(()=>{Va={setTimeout:(t,e)=>setTimeout(t,e),clearTimeout:t=>clearTimeout(t)}});var D_e,k_e,I_e=b(()=>{LS();D_e=1e3,k_e=(t,e,r=0)=>{if(!r)return-1;let n=a=>{let o=Va.setTimeout(()=>{t.destroy(),e(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${r} ms.`),{name:"TimeoutError"}))},r-a),s=i=>{i?.connecting?i.on("connect",()=>{Va.clearTimeout(o)}):Va.clearTimeout(o)};t.socket?s(t.socket):t.on("socket",s)};return r<2e3?(n(0),0):Va.setTimeout(n.bind(null,D_e),D_e)}});var P_e,__e=b(()=>{LS();P_e=(t,e,r=0,n,a)=>r?Va.setTimeout(()=>{let o=`@smithy/node-http-handler - [${n?"ERROR":"WARN"}] a request has exceeded the configured ${r} ms requestTimeout.`;if(n){let s=Object.assign(new Error(o),{name:"TimeoutError",code:"ETIMEDOUT"});t.destroy(s),e(s)}else o+=" Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.",a?.warn?.(o)},r):-1});var Fbt,R_e,O_e=b(()=>{LS();Fbt=3e3,R_e=(t,{keepAlive:e,keepAliveMsecs:r},n=Fbt)=>{if(e!==!0)return-1;let a=()=>{t.socket?t.socket.setKeepAlive(e,r||0):t.on("socket",o=>{o.setKeepAlive(e,r||0)})};return n===0?(a(),0):Va.setTimeout(a,n)}});var N_e,$_e,F_e=b(()=>{LS();N_e=3e3,$_e=(t,e,r=0)=>{let n=a=>{let o=r-a,s=()=>{t.destroy(),e(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${r} ms of inactivity (configured by client requestHandler).`),{name:"TimeoutError"}))};t.socket?(t.socket.setTimeout(o,s),t.on("close",()=>t.socket?.removeListener("timeout",s))):t.setTimeout(o,s)};return 0<r&&r<6e3?(n(0),0):Va.setTimeout(n.bind(null,r===0?0:N_e),N_e)}});import{Readable as Mbt}from"node:stream";async function L_e(t,e,r=M_e,n=!1){let a=e.headers,o=a?a.Expect||a.expect:void 0,s=-1,i=!0;!n&&o==="100-continue"&&(i=await Promise.race([new Promise(c=>{s=Number(Va.setTimeout(()=>c(!0),Math.max(M_e,r)))}),new Promise(c=>{t.on("continue",()=>{Va.clearTimeout(s),c(!0)}),t.on("response",()=>{Va.clearTimeout(s),c(!1)}),t.on("error",()=>{Va.clearTimeout(s),c(!1)})})])),i&&Lbt(t,e.body)}function Lbt(t,e){if(e instanceof Mbt){e.pipe(t);return}if(e){let r=Buffer.isBuffer(e);if(r||typeof e=="string"){r&&e.byteLength===0?t.end():t.end(e);return}let a=e;if(typeof a=="object"&&a.buffer&&typeof a.byteOffset=="number"&&typeof a.byteLength=="number"){t.end(Buffer.from(a.buffer,a.byteOffset,a.byteLength));return}t.end(Buffer.from(e));return}t.end()}var M_e,B_e=b(()=>{LS();M_e=6e3});var oU,aU,j_e,Of,U_e=b(()=>{oU=Zs(E_e());b_e();A_e();w_e();T_e();I_e();__e();O_e();F_e();LS();B_e();Of=class t{config;configProvider;socketWarningTimestamp=0;externalAgent=!1;metadata={handlerProtocol:"http/1.1"};static create(e){return typeof e?.handle=="function"?e:new t(e)}static checkSocketUsage(e,r,n=console){let{sockets:a,requests:o,maxSockets:s}=e;if(typeof s!="number"||s===1/0||Date.now()-15e3<r)return r;if(a&&o)for(let c in a){let l=a[c]?.length??0,u=o[c]?.length??0;if(l>=s&&u>=2*s)return n?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${l} and ${u} additional requests are enqueued.
|
|
418
418
|
See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html
|
|
419
|
-
or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return r}constructor(e){this.configProvider=new Promise((r,n)=>{typeof e=="function"?e().then(a=>{r(this.resolveDefaultConfig(a))}).catch(n):r(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(e,{abortSignal:r,requestTimeout:n}={}){this.config||(this.config=await this.configProvider);let a=this.config,o=e.protocol==="https:";return!o&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((s,i)=>{let c,l=-1,u=-1,p=-1,d=-1,m=-1,f=()=>{Va.clearTimeout(l),Va.clearTimeout(u),Va.clearTimeout(p),Va.clearTimeout(d),Va.clearTimeout(m)},g=async z=>{await c,f(),s(z)},y=async z=>{await c,f(),i(z)};if(r?.aborted){let z=rte(r);y(z);return}let S=e.headers,x=S?(S.Expect??S.expect)==="100-continue":!1,C=o?a.httpsAgent:a.httpAgent;x&&!this.externalAgent&&(C=new(o?U_.Agent:aU)({keepAlive:!1,maxSockets:1/0})),l=Va.setTimeout(()=>{this.socketWarningTimestamp=t.checkSocketUsage(C,this.socketWarningTimestamp,a.logger)},a.socketAcquisitionWarningTimeout??(a.requestTimeout??2e3)+(a.connectionTimeout??1e3));let w=e.query?(0,oU.buildQueryString)(e.query):"",T;if(e.username!=null||e.password!=null){let z=e.username??"",V=e.password??"";T=`${z}:${V}`}let P=e.path;w&&(P+=`?${w}`),e.fragment&&(P+=`#${e.fragment}`);let _=e.hostname??"";_[0]==="["&&_.endsWith("]")?_=e.hostname.slice(1,-1):_=e.hostname;let R={headers:e.headers,host:_,method:e.method,path:P,port:e.port,agent:C,auth:T},$=(o?U_.request:j_e)(R,z=>{let V=new oU.HttpResponse({statusCode:z.statusCode||-1,reason:z.statusMessage,headers:C_e(z.headers),body:z});g({response:V})});if($.on("error",z=>{x_e.includes(z.code)?y(Object.assign(z,{name:"TimeoutError"})):y(z)}),r){let z=()=>{$.destroy();let V=rte(r);y(V)};if(typeof r.addEventListener=="function"){let V=r;V.addEventListener("abort",z,{once:!0}),$.once("close",()=>V.removeEventListener("abort",z))}else r.onabort=z}let M=n??a.requestTimeout;u=k_e($,y,a.connectionTimeout),p=P_e($,y,M,a.throwOnRequestTimeout,a.logger??console),d=$_e($,y,a.socketTimeout);let U=R.agent;typeof U=="object"&&"keepAlive"in U&&(m=R_e($,{keepAlive:U.keepAlive,keepAliveMsecs:U.keepAliveMsecs})),c=L_e($,e,M,this.externalAgent).catch(z=>(f(),i(z)))})}updateHttpClientConfig(e,r){this.config=void 0,this.configProvider=this.configProvider.then(n=>({...n,[e]:r}))}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:r,connectionTimeout:n,socketTimeout:a,socketAcquisitionWarningTimeout:o,httpAgent:s,httpsAgent:i,throwOnRequestTimeout:c,logger:l}=e||{},u=!0,p=50;return{connectionTimeout:n,requestTimeout:r,socketTimeout:a,socketAcquisitionWarningTimeout:o,throwOnRequestTimeout:c,httpAgentProvider:async()=>{let d=await import("node:http"),{Agent:m,request:f}=d.default??d;return j_e=f,aU=m,s instanceof aU||typeof s?.destroy=="function"?(this.externalAgent=!0,s):new aU({keepAlive:u,maxSockets:p,...s})},httpsAgent:i instanceof U_.Agent||typeof i?.destroy=="function"?(this.externalAgent=!0,i):new U_.Agent({keepAlive:u,maxSockets:p,...i}),logger:l}}}});import z_e from"node:http2";var V_e=b(()=>{});var iCr,W_e=b(()=>{V_e();({constants:iCr}=z_e)});var G_e=b(()=>{});var sU=b(()=>{U_e();W_e();G_e()});function Rg(t){return Array.isArray(t)}function $e(t,e=3e4){let r=AbortSignal.timeout(e);return t!==void 0?AbortSignal.any([t,r]):r}function Gt(t){return t?.aborted===!0}function _t(t){return typeof t=="object"&&t!==null&&"name"in t&&typeof t.name=="string"?t.name:"UnknownError"}function Hi(t){return t==="AccessDenied"||t===Mc.ACCESS_DENIED}var Mc,ar=b(()=>{"use strict";Mc={ACCESS_DENIED:"AccessDeniedException",ACCOUNT_ALREADY_REGISTERED:"AccountAlreadyRegisteredException",ACCOUNT_NOT_FOUND:"AccountNotFoundException",CHILD_NOT_FOUND:"ChildNotFoundException",ORGS_NOT_IN_USE:"AWSOrganizationsNotInUseException"}});import{STSClient as Bbt,AssumeRoleCommand as jbt}from"@aws-sdk/client-sts";var q_e,Du,iU=b(()=>{"use strict";sU();ar();q_e=3e4,Du=class{credentials;region;accountId;clientCache=new Map;constructor(e){this.credentials={accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken},this.region=e.region,this.accountId=e.accountId}getClient(e){let r=e.name,n=this.clientCache.get(r);if(n!==void 0)return n;let a={region:this.region,credentials:this.credentials,requestHandler:new Of({requestTimeout:q_e})},o=new e(a);return this.clientCache.set(r,o),o}getRegion(){return this.region}getAccountId(){return this.accountId}getCredentials(){return this.credentials}exportToEnv(){process.env.AWS_ACCESS_KEY_ID=this.credentials.accessKeyId,process.env.AWS_SECRET_ACCESS_KEY=this.credentials.secretAccessKey,process.env.AWS_REGION=this.region,this.credentials.sessionToken?process.env.AWS_SESSION_TOKEN=this.credentials.sessionToken:delete process.env.AWS_SESSION_TOKEN}async assumeRole(e,r){let n=(await this.getClient(Bbt).send(new jbt({RoleArn:e,RoleSessionName:r}),{abortSignal:$e(void 0,q_e)})).Credentials;if(!n?.AccessKeyId||!n?.SecretAccessKey)throw new Error(`AssumeRole for ${e} returned incomplete credentials`);return{accessKeyId:n.AccessKeyId,secretAccessKey:n.SecretAccessKey,sessionToken:n.SessionToken}}}});function V_(t){return t instanceof B0}function nte(t){return!t||typeof t!="object"?!1:"name"in t&&t.name==="UnauthorizedException"||"Code"in t&&t.Code==="UnauthorizedException"||"__type"in t&&typeof t.__type=="string"&&t.__type.includes("UnauthorizedException")}var z_,B0,Bp,H_e=b(()=>{"use strict";z_=class extends Error{code;constructor(e,r){super(e),this.code=r,this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}},B0=class extends z_{constructor(e,r){let n=e?`No roles found for account ${e}`:"No roles found for this account";super(r??n,"NO_ROLES_FOUND")}},Bp=class extends z_{constructor(e){super(e,"INVALID_CREDENTIALS")}}});function Ng(t){if(typeof t!="object"||t===null||!("logicalId"in t)||!("resourceType"in t)||!("status"in t)||!("timestamp"in t))return!1;let e=t;return typeof e.logicalId=="string"&&typeof e.resourceType=="string"&&typeof e.status=="string"&&e.timestamp instanceof Date}var To,Og,K_e=b(()=>{"use strict";To="does not exist",Og="No stacks match the name(s)"});function Ubt(t){return t.includes("COMPLETE")&&!t.includes("ROLLBACK")}function zbt(t){return t.includes("FAILED")||t.includes("ROLLBACK")}function Vbt(t){return t.includes("IN_PROGRESS")}function ate(t){let e=0,r=0,n=0,a=0;for(let s of t)a++,Ubt(s)?e++:zbt(s)?n++:Vbt(s)&&r++;let o=a===0?0:Math.min(100,Math.round(e/a*100));return{completed:e,inProgress:r,failed:n,total:a,percentage:o}}var Y_e=b(()=>{"use strict"});var BS,J_e=b(()=>{"use strict";BS=class{knownErrorPatterns=[{pattern:/AccessDenied|UnauthorizedOperation|Forbidden/i,category:"permissions",remediation:["Check IAM permissions for the deployment role","Ensure the role has necessary CloudFormation permissions","Verify service-linked roles are created if needed"]},{pattern:/Invalid.*Parameter|ValidationError|Invalid.*Value/i,category:"validation",remediation:["Review parameter values in your CDK code","Check for typos in resource names or ARNs","Ensure all required parameters are provided"]},{pattern:/Limit.*Exceeded|Quota.*Exceeded|Maximum.*reached/i,category:"limit",remediation:["Check AWS service quotas in the Service Quotas console","Request a quota increase if needed","Consider using a different region with available capacity"]},{pattern:/Timeout|Connection.*refused|Network.*unreachable/i,category:"network",remediation:["Check network connectivity and VPC settings","Verify security groups and NACLs","Ensure endpoints are accessible"]},{pattern:/already exists|Duplicate|ConflictException/i,category:"validation",remediation:["Resource with this name already exists","Consider using a different name or deleting the existing resource","Check if you are deploying to the correct account/region"]},{pattern:/Role.*not.*found|Role.*does.*not.*exist/i,category:"dependency",remediation:["Ensure IAM roles are created before dependent resources","Check role names and ARNs are correct","Verify cross-stack references are properly configured"]}];analyseFailure(e){let r=this.findFailedResources(e);if(r.length===0)return null;let n=this.findRootCause(r,e),a=this.buildDependencyChain(n.resource,r),o=this.generateRemediation(n),s=this.generateSummary(n,r);return{rootCause:n,affectedResources:r,dependencyChain:a,summary:s,remediation:o,errorPattern:n.category}}findFailedResources(e){let r=[];for(let[n,a]of e){let o=a[a.length-1];o&&this.isFailedStatus(o.status)&&r.push(o)}return r.sort((n,a)=>n.timestamp.getTime()-a.timestamp.getTime())}findRootCause(e,r){if(e.length===0)return{resource:{logicalId:"Unknown",resourceType:"Unknown",status:"FAILED",timestamp:new Date},reason:"No failed resources found",category:"unknown",isDirectCause:!1};let n=e[0],a=this.categoriseError(n.statusReason||""),o=this.isDirectCause(n,r);return{resource:n,reason:n.statusReason||"Unknown error",category:a,isDirectCause:o}}categoriseError(e){for(let r of this.knownErrorPatterns)if(r.pattern.test(e))return r.category;return"unknown"}isDirectCause(e,r){let n=e.statusReason||"";return n.includes("depends on")||n.includes("referenced by")||n.includes("required by")?!1:!(r.get(e.logicalId)||[]).some(a=>a.status.includes("COMPLETE")&&!a.status.includes("ROLLBACK"))}buildDependencyChain(e,r){let n=[];n.push(`${e.logicalId} (${e.resourceType}) - ROOT CAUSE`);for(let a of r)a.logicalId!==e.logicalId&&((a.statusReason||"").toLowerCase().includes(e.logicalId.toLowerCase())?n.push(` \u2192 ${a.logicalId} (${a.resourceType}) - Failed due to ${e.logicalId}`):n.push(` \u2192 ${a.logicalId} (${a.resourceType})`));return n}generateRemediation(e){let r=[];for(let n of this.knownErrorPatterns)if(n.category===e.category){r.push(...n.remediation);break}return e.resource.resourceType.includes("IAM")?r.push("Review IAM policies and trust relationships"):e.resource.resourceType.includes("Lambda")?r.push("Check Lambda function configuration and runtime"):e.resource.resourceType.includes("ECS")&&r.push("Verify ECS task definition and container configuration"),r.length===0&&r.push("Review the CloudFormation console for detailed error messages","Check the resource configuration in your CDK code","Ensure all dependencies are properly defined"),r}generateSummary(e,r){let n=this.simplifyResourceType(e.resource.resourceType),a=r.length,o=`Deployment failed: ${n} "${e.resource.logicalId}" `;switch(e.category){case"permissions":o+="failed due to insufficient permissions";break;case"validation":o+="failed validation";break;case"dependency":o+="has missing or invalid dependencies";break;case"limit":o+="exceeded AWS service limits";break;case"network":o+="encountered network issues";break;default:o+="failed to create"}return a>1&&(o+=` (${a-1} dependent resources also failed)`),o}simplifyResourceType(e){return e.replace("AWS::","").replace("::"," ")}isFailedStatus(e){return e.includes("FAILED")}}});function X_e(t){return t.statusReason===void 0?t:{...t,statusReason:E(t.statusReason)}}function ote(t){let e={...t.rootCause,reason:E(t.rootCause.reason),resource:X_e(t.rootCause.resource)};return{...t,rootCause:e,affectedResources:t.affectedResources.map(X_e)}}var Z_e=b(()=>{"use strict";Dp()});function ite(t,e){return`${t}-${e}`}var ste,Q_e=b(()=>{"use strict";ste="fjall:operations:pool"});var cte,eRe=b(()=>{"use strict";cte="fjall:sdk-pre-empty"});var lte,tRe=b(()=>{"use strict";lte="FjallMonitoring"});var $s=b(()=>{"use strict";H_e();K_e();Y_e();J_e();Z_e();Q_e();eRe();tRe()});import{GetRoleCommand as Wbt}from"@aws-sdk/client-iam";async function rRe(t,e){try{return await t.send(new Wbt({RoleName:ute}),{abortSignal:$e(e)}),A(!0)}catch(r){return r instanceof Error&&r.name==="NoSuchEntityException"?A(!1):v(new Error(`Failed to probe account globals (role "${ute}"): ${D(r)}`))}}function zd(t){return(t??[]).some(e=>Lt(e)==="organisation")}function nRe(t){let e=zd(t.providerAccounts)?`run \`fjall deploy organisation\` to provision the primary region (${t.primaryRegion}), then retry this deploy`:`target the primary region (${t.primaryRegion}) and run \`fjall deploy account\`, then retry this deploy`;return`Cannot deploy "${t.target}" into ${t.deployRegion}: the account globals (fixed-name IAM resources such as the ${ute} role) are created only in the primary region (${t.primaryRegion}) and were not found in this account. Nothing has been deployed. Deploy the primary region first: ${e}.`}var ute,j0=b(()=>{"use strict";xe();N();$s();ar();ute=lte});import{DescribeStacksCommand as Gbt}from"@aws-sdk/client-cloudformation";import{DescribeIpamPoolsCommand as qbt}from"@aws-sdk/client-ec2";function W_(t){switch(t.kind){case"missing-account-stack":return`the ${t.stackName} stack was not found in ${t.region}`;case"missing-ipam-pool":return`no IPAM pool exists for account ${t.accountId} in ${t.region}`}}function dte(t){let e=t.accountName??t.accountId,r=t.reasons.map(W_).join(" and "),n=t.accountName!==void 0?`run \`fjall target set ${Ni(t.accountName,t.region)}\` then \`fjall deploy account\`, then retry this deploy`:"run `fjall target list` to find the target name, `fjall target set <target>`, then `fjall deploy account`, then retry this deploy",a=zd(t.providerAccounts)?"run `fjall deploy organisation` (the cascade provisions every account and creates the IPAM pool), then retry this deploy":n;return`Target "${e}" is not ready in ${t.region}: ${r}. Nothing has been deployed. Provision the target first: ${a}.`}function Kbt(t){return t instanceof Error&&t.name==="ValidationError"&&t.message.includes(To)}async function G_(t,e,r){try{let n=(await t.send(new Gbt({StackName:pte}),{abortSignal:$e(r)})).Stacks?.[0]?.StackStatus;return A(n!==void 0&&!Hbt.has(n))}catch(n){return Kbt(n)?A(!1):v(new Error(`Failed to probe the ${pte} stack in ${e}: ${D(n)}`))}}function Ybt(t,e,r,n){return t.Locale!==r?!1:n.side==="owner"?(t.Tags??[]).some(a=>a.Key===ste&&a.Value===n.pairTagValue):t.OwnerId===e?!1:n.platformAccountId===void 0||t.OwnerId===n.platformAccountId}async function Jbt(t,e,r,n,a){try{let o;do{if(Gt(a))return v(new Error(`Aborted: IPAM pool probe for account ${e} in ${r} cancelled by shutdown signal`));let s=await t.send(new qbt({...o!==void 0&&{NextToken:o}}),{abortSignal:$e(a)});if((s.IpamPools??[]).some(i=>Ybt(i,e,r,n)))return A(!0);o=s.NextToken}while(o!==void 0);return A(!1)}catch(o){return v(new Error(`Failed to probe IPAM pools for account ${e} in ${r}: ${D(o)}`))}}async function U0(t,e,r,n,a){let o=[],s=await G_(t.cloudFormation,r,a);if(!s.success)return v(s.error);s.data||o.push({kind:"missing-account-stack",stackName:pte,region:r});let i=n?.providerAccounts;if(zd(i)){let c=(i??[]).find(d=>d.id===e.id),l=(i??[]).find(d=>Lt(d)==="platform")?.id,u=c!==void 0&&Lt(c)==="platform"?{side:"owner",pairTagValue:ite(e.id,r)}:{side:"consumer",...l!==void 0&&{platformAccountId:l}},p=await Jbt(t.ec2,e.id,r,u,a);if(!p.success)return v(p.error);p.data||o.push({kind:"missing-ipam-pool",accountId:e.id,region:r})}return o.length===0?A({ready:!0}):A({ready:!1,reasons:o,advisory:dte({accountId:e.id,...e.name!==void 0&&{accountName:e.name},region:r,reasons:o,...n!==void 0&&{providerAccounts:n.providerAccounts}})})}var pte,Hbt,cU=b(()=>{"use strict";xe();N();$s();no();j0();ar();pte=wn($t.ACCOUNT),Hbt=new Set(["CREATE_FAILED","ROLLBACK_IN_PROGRESS","ROLLBACK_COMPLETE","ROLLBACK_FAILED","REVIEW_IN_PROGRESS","DELETE_IN_PROGRESS","DELETE_FAILED"])});function lU(t){let e=t.accountName??t.accountId,r=t.reasons.map(W_).join(" and "),n=zd(t.providerAccounts)?"Run `fjall deploy organisation` \u2014 the cascade provisions every account and creates the IPAM pool":"Run `fjall deploy account` to provision it";return`Target "${e}" is not ready in ${t.region}: ${r}. ${n}.`}var aRe=b(()=>{"use strict";j0();cU()});import{AccountClient as Xbt,GetRegionOptStatusCommand as Zbt}from"@aws-sdk/client-account";async function uU(t,e,r){if(!Di.has(t))return"enabled";try{switch((await new Xbt({region:ext,credentials:e}).send(new Zbt({RegionName:t}),{abortSignal:$e(r,Qbt)})).RegionOptStatus){case"ENABLED":case"ENABLED_BY_DEFAULT":return"enabled";case"DISABLED":case"DISABLING":return"disabled";case"ENABLING":return"enabling";default:return"unknown"}}catch{return"unknown"}}function pU(t){return`Region ${t} is not enabled in this AWS account. ${Dc(t)} Enable it and wait for activation, then retry \u2014 or deploy to a region that is already enabled.`}var Qbt,ext,mte=b(()=>{"use strict";N();ar();Qbt=1e4,ext="us-east-1"});import{DescribeOrganizationCommand as txt,CreateOrganizationCommand as rxt,ListRootsCommand as nxt}from"@aws-sdk/client-organizations";async function Nf(t,e){try{let r=!1,n=await fte(t,e);if(!n)try{n=(await t.send(new rxt({FeatureSet:"ALL"}),{abortSignal:$e(e)})).Organization??null,r=!0}catch(o){if(_t(o)==="AlreadyInOrganizationException"){if(n=await fte(t,e),!n)return v(new Error("Account is already in an organisation but DescribeOrganization returned nothing"))}else throw o}if(!n?.Id||!n.MasterAccountId)return v(new Error("Organisation is missing required fields (Id or MasterAccountId)"));let a=await oRe(t,e);return a.success?A({orgId:n.Id,rootId:a.data,managementAccountId:n.MasterAccountId,created:r}):a}catch(r){return v(new Error(`Failed to ensure organisation exists: ${D(r)}`))}}async function q_(t,e,r){try{let n=await fte(t,e,r);if(!n)return A(null);if(!n.Id||!n.MasterAccountId)return v(new Error("Organisation is missing required fields (Id or MasterAccountId)"));let a=await oRe(t,e);return a.success?A({orgId:n.Id,rootId:a.data,managementAccountId:n.MasterAccountId,created:!1}):a}catch(n){return r?.tolerateAccessDenied===!0&&Hi(_t(n))?A(null):v(new Error(`Failed to describe organisation: ${D(n)}`))}}async function oRe(t,e){let r=(await t.send(new nxt({}),{abortSignal:$e(e)})).Roots??[];return r.length===0||!r[0]?.Id?v(new Error("No organisation root found")):A(r[0].Id)}async function fte(t,e,r){try{return(await t.send(new txt({}),{abortSignal:$e(e)})).Organization??null}catch(n){let a=_t(n);if(a===Mc.ORGS_NOT_IN_USE||r?.tolerateAccessDenied===!0&&Hi(a))return null;throw n}}var dU=b(()=>{"use strict";xe();N();ar()});function mU(t,e){return e?.aborted===!0?Promise.resolve():new Promise(r=>{let n=setTimeout(()=>{e?.removeEventListener("abort",a),r()},t),a=()=>{clearTimeout(n),r()};e?.addEventListener("abort",a,{once:!0})})}var hte=b(()=>{"use strict"});import{EnablePolicyTypeCommand as axt,ListRootsCommand as oxt,PolicyType as fU}from"@aws-sdk/client-organizations";async function H_(t,e,r={}){try{for(let n of sRe){if(Gt(r.abortSignal))return v(new Error("Aborted: policy-type enablement cancelled by shutdown signal"));try{await t.send(new axt({RootId:e,PolicyType:n}),{abortSignal:$e(r.abortSignal)})}catch(a){if(_t(a)==="PolicyTypeAlreadyEnabledException")continue;throw a}}return await cxt(t,e,r),A(void 0)}catch(n){return v(new Error(`Failed to enable policy types: ${D(n)}`))}}async function cxt(t,e,r){let n=r.pollIntervalMs??sxt,a=r.pollTimeoutMs??ixt,o=new Set(sRe),s=Date.now();for(;;){let i=(await t.send(new oxt({}),{abortSignal:$e(r.abortSignal)})).Roots?.find(p=>p.Id===e),c=new Set;for(let p of i?.PolicyTypes??[])p.Status==="ENABLED"&&p.Type&&c.add(p.Type);let l=[...o].filter(p=>!c.has(p));if(l.length===0)return;let u=Date.now()-s;if(u>=a)throw new Error(`Policy types still PENDING_ENABLE after ${u}ms: ${l.join(", ")}`);if(n>0&&(await mU(n,r.abortSignal),r.abortSignal?.aborted===!0))throw new Error("Aborted while waiting for policy types to enable")}}var sRe,sxt,ixt,gte=b(()=>{"use strict";xe();N();ar();hte();sRe=[fU.SERVICE_CONTROL_POLICY,fU.TAG_POLICY,fU.BACKUP_POLICY,fU.AISERVICES_OPT_OUT_POLICY],sxt=2e3,ixt=6e4});import{EnableAWSServiceAccessCommand as lxt}from"@aws-sdk/client-organizations";async function K_(t,e){try{for(let r of z0){if(Gt(e))return v(new Error("Aborted: service-access enablement cancelled by shutdown signal"));try{await t.send(new lxt({ServicePrincipal:r}),{abortSignal:$e(e)})}catch(n){if(_t(n)===Mc.ACCESS_DENIED)return v(new Error(`Access denied when enabling service access for ${r}. Ensure your credentials have organizations:EnableAWSServiceAccess permission.`));throw new Error(`Service principal ${r}: ${D(n)}`,{cause:n})}}return A(void 0)}catch(r){return v(new Error(`Failed to enable service access: ${D(r)}`))}}var z0,yte=b(()=>{"use strict";xe();ar();N();z0=["account.amazonaws.com","sso.amazonaws.com","ipam.amazonaws.com","ram.amazonaws.com","backup.amazonaws.com","member.org.stacksets.cloudformation.amazonaws.com","guardduty.amazonaws.com","securityhub.amazonaws.com","config.amazonaws.com","inspector2.amazonaws.com","access-analyzer.amazonaws.com","cloudtrail.amazonaws.com","iam.amazonaws.com"]});import{EnableSharingWithAwsOrganizationCommand as uxt}from"@aws-sdk/client-ram";async function Y_(t,e){try{return await t.send(new uxt({}),{abortSignal:$e(e)}),A(void 0)}catch(r){return v(new Error(`Failed to enable RAM sharing: ${D(r)}`))}}var vte=b(()=>{"use strict";xe();N();ar()});import{ActivateOrganizationsAccessCommand as pxt}from"@aws-sdk/client-cloudformation";async function J_(t,e){try{return await t.send(new pxt({}),{abortSignal:$e(e)}),A(void 0)}catch(r){return v(new Error(`Failed to activate trusted access: ${D(r)}`))}}var Ste=b(()=>{"use strict";xe();N();ar()});import{EnableIpamOrganizationAdminAccountCommand as dxt}from"@aws-sdk/client-ec2";async function X_(t,e,r){try{return await t.send(new dxt({DryRun:!1,DelegatedAdminAccountId:e}),{abortSignal:$e(r)}),A(void 0)}catch(n){return v(new Error(`Failed to enable IPAM delegation for account ${e}: ${D(n)}`))}}var Ete=b(()=>{"use strict";xe();N();ar()});import{DescribeBackupVaultCommand as iRe,UpdateGlobalSettingsCommand as mxt}from"@aws-sdk/client-backup";async function Z_(t,e,r){try{let n={...fxt,...e},a={isCrossAccountBackupEnabled:n.enableCrossAccountBackup.toString(),isDelegatedAdministratorEnabled:n.enableDelegatedAdministrator.toString(),isMpaEnabled:n.enableMpa.toString()};return await t.send(new mxt({GlobalSettings:a}),{abortSignal:$e(r)}),A(void 0)}catch(n){return v(new Error(`Failed to update backup global settings: ${D(n)}`))}}function V0(t,e){return e===void 0||e===""?!1:t==="production"||t==="compliance"}async function hU(t,e){try{return await t.send(new iRe({BackupVaultName:Yh}),{abortSignal:$e(e)}),A(!0)}catch(r){return r instanceof Error&&r.name==="ResourceNotFoundException"?A(!1):v(new Error(`Failed to describe backup vault "${Yh}": ${E(D(r))}`))}}async function cRe(t,e,r){try{let n=await t.send(new iRe({BackupVaultName:Yh}),{abortSignal:$e(r)}),a=n.LockDate,o=a!==void 0&&a.getTime()<=Date.now();return A({vaultName:n.BackupVaultName??Yh,region:e,locked:n.Locked??!1,...a!==void 0&&{lockDate:a},lockPermanent:o,recoveryPointCount:n.NumberOfRecoveryPoints??0,...n.EncryptionKeyArn!==void 0&&{encryptionKeyArn:n.EncryptionKeyArn}})}catch(n){return n instanceof Error&&n.name==="ResourceNotFoundException"?A(null):v(new Error(`Failed to describe surviving backup vault "${Yh}": ${E(D(n))}`))}}function lRe(t){let e=t.locked?t.lockPermanent?"compliance-locked, PERMANENT \u2014 cannot be removed by anyone, including AWS or the root user":t.lockDate!==void 0?`compliance-locked, immutable from ${t.lockDate.toISOString().slice(0,10)}`:"governance-locked \u2014 removable by privileged IAM":"unlocked";return[`Backup vault "${t.vaultName}" in ${t.region} SURVIVES this destroy.`,` \u2022 Lock: ${e}`,` \u2022 Recovery points retained: ${t.recoveryPointCount}`,...t.encryptionKeyArn!==void 0?[` \u2022 Retained KMS key (also orphaned): ${t.encryptionKeyArn}`]:[]," The vault and its KMS key are RemovalPolicy.RETAIN \u2014 destroy cannot delete them."].join(`
|
|
419
|
+
or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return r}constructor(e){this.configProvider=new Promise((r,n)=>{typeof e=="function"?e().then(a=>{r(this.resolveDefaultConfig(a))}).catch(n):r(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(e,{abortSignal:r,requestTimeout:n}={}){this.config||(this.config=await this.configProvider);let a=this.config,o=e.protocol==="https:";return!o&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((s,i)=>{let c,l=-1,u=-1,p=-1,d=-1,m=-1,f=()=>{Va.clearTimeout(l),Va.clearTimeout(u),Va.clearTimeout(p),Va.clearTimeout(d),Va.clearTimeout(m)},g=async z=>{await c,f(),s(z)},y=async z=>{await c,f(),i(z)};if(r?.aborted){let z=rte(r);y(z);return}let S=e.headers,x=S?(S.Expect??S.expect)==="100-continue":!1,C=o?a.httpsAgent:a.httpAgent;x&&!this.externalAgent&&(C=new(o?U_.Agent:aU)({keepAlive:!1,maxSockets:1/0})),l=Va.setTimeout(()=>{this.socketWarningTimestamp=t.checkSocketUsage(C,this.socketWarningTimestamp,a.logger)},a.socketAcquisitionWarningTimeout??(a.requestTimeout??2e3)+(a.connectionTimeout??1e3));let w=e.query?(0,oU.buildQueryString)(e.query):"",T;if(e.username!=null||e.password!=null){let z=e.username??"",V=e.password??"";T=`${z}:${V}`}let P=e.path;w&&(P+=`?${w}`),e.fragment&&(P+=`#${e.fragment}`);let _=e.hostname??"";_[0]==="["&&_.endsWith("]")?_=e.hostname.slice(1,-1):_=e.hostname;let R={headers:e.headers,host:_,method:e.method,path:P,port:e.port,agent:C,auth:T},$=(o?U_.request:j_e)(R,z=>{let V=new oU.HttpResponse({statusCode:z.statusCode||-1,reason:z.statusMessage,headers:C_e(z.headers),body:z});g({response:V})});if($.on("error",z=>{x_e.includes(z.code)?y(Object.assign(z,{name:"TimeoutError"})):y(z)}),r){let z=()=>{$.destroy();let V=rte(r);y(V)};if(typeof r.addEventListener=="function"){let V=r;V.addEventListener("abort",z,{once:!0}),$.once("close",()=>V.removeEventListener("abort",z))}else r.onabort=z}let M=n??a.requestTimeout;u=k_e($,y,a.connectionTimeout),p=P_e($,y,M,a.throwOnRequestTimeout,a.logger??console),d=$_e($,y,a.socketTimeout);let U=R.agent;typeof U=="object"&&"keepAlive"in U&&(m=R_e($,{keepAlive:U.keepAlive,keepAliveMsecs:U.keepAliveMsecs})),c=L_e($,e,M,this.externalAgent).catch(z=>(f(),i(z)))})}updateHttpClientConfig(e,r){this.config=void 0,this.configProvider=this.configProvider.then(n=>({...n,[e]:r}))}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:r,connectionTimeout:n,socketTimeout:a,socketAcquisitionWarningTimeout:o,httpAgent:s,httpsAgent:i,throwOnRequestTimeout:c,logger:l}=e||{},u=!0,p=50;return{connectionTimeout:n,requestTimeout:r,socketTimeout:a,socketAcquisitionWarningTimeout:o,throwOnRequestTimeout:c,httpAgentProvider:async()=>{let d=await import("node:http"),{Agent:m,request:f}=d.default??d;return j_e=f,aU=m,s instanceof aU||typeof s?.destroy=="function"?(this.externalAgent=!0,s):new aU({keepAlive:u,maxSockets:p,...s})},httpsAgent:i instanceof U_.Agent||typeof i?.destroy=="function"?(this.externalAgent=!0,i):new U_.Agent({keepAlive:u,maxSockets:p,...i}),logger:l}}}});import z_e from"node:http2";var V_e=b(()=>{});var iCr,W_e=b(()=>{V_e();({constants:iCr}=z_e)});var G_e=b(()=>{});var sU=b(()=>{U_e();W_e();G_e()});function Rg(t){return Array.isArray(t)}function $e(t,e=3e4){let r=AbortSignal.timeout(e);return t!==void 0?AbortSignal.any([t,r]):r}function Gt(t){return t?.aborted===!0}function _t(t){return typeof t=="object"&&t!==null&&"name"in t&&typeof t.name=="string"?t.name:"UnknownError"}function Hi(t){return t==="AccessDenied"||t===Mc.ACCESS_DENIED}var Mc,ar=b(()=>{"use strict";Mc={ACCESS_DENIED:"AccessDeniedException",ACCOUNT_ALREADY_REGISTERED:"AccountAlreadyRegisteredException",ACCOUNT_NOT_FOUND:"AccountNotFoundException",CHILD_NOT_FOUND:"ChildNotFoundException",ORGS_NOT_IN_USE:"AWSOrganizationsNotInUseException"}});import{STSClient as Bbt,AssumeRoleCommand as jbt}from"@aws-sdk/client-sts";var q_e,Du,iU=b(()=>{"use strict";sU();ar();q_e=3e4,Du=class t{credentials;region;accountId;clientCache=new Map;assumeScopedBuildSecretSession;constructor(e,r){this.credentials={accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken},this.region=e.region,this.accountId=e.accountId,r!==void 0&&(this.assumeScopedBuildSecretSession=async(n,a)=>{let o=await r(n,a);return new t(o)})}getClient(e){let r=e.name,n=this.clientCache.get(r);if(n!==void 0)return n;let a={region:this.region,credentials:this.credentials,requestHandler:new Of({requestTimeout:q_e})},o=new e(a);return this.clientCache.set(r,o),o}getRegion(){return this.region}getAccountId(){return this.accountId}getCredentials(){return this.credentials}exportToEnv(){process.env.AWS_ACCESS_KEY_ID=this.credentials.accessKeyId,process.env.AWS_SECRET_ACCESS_KEY=this.credentials.secretAccessKey,process.env.AWS_REGION=this.region,this.credentials.sessionToken?process.env.AWS_SESSION_TOKEN=this.credentials.sessionToken:delete process.env.AWS_SESSION_TOKEN}async assumeRole(e,r){let n=(await this.getClient(Bbt).send(new jbt({RoleArn:e,RoleSessionName:r}),{abortSignal:$e(void 0,q_e)})).Credentials;if(!n?.AccessKeyId||!n?.SecretAccessKey)throw new Error(`AssumeRole for ${e} returned incomplete credentials`);return{accessKeyId:n.AccessKeyId,secretAccessKey:n.SecretAccessKey,sessionToken:n.SessionToken}}}});function V_(t){return t instanceof B0}function nte(t){return!t||typeof t!="object"?!1:"name"in t&&t.name==="UnauthorizedException"||"Code"in t&&t.Code==="UnauthorizedException"||"__type"in t&&typeof t.__type=="string"&&t.__type.includes("UnauthorizedException")}var z_,B0,Bp,H_e=b(()=>{"use strict";z_=class extends Error{code;constructor(e,r){super(e),this.code=r,this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}},B0=class extends z_{constructor(e,r){let n=e?`No roles found for account ${e}`:"No roles found for this account";super(r??n,"NO_ROLES_FOUND")}},Bp=class extends z_{constructor(e){super(e,"INVALID_CREDENTIALS")}}});function Ng(t){if(typeof t!="object"||t===null||!("logicalId"in t)||!("resourceType"in t)||!("status"in t)||!("timestamp"in t))return!1;let e=t;return typeof e.logicalId=="string"&&typeof e.resourceType=="string"&&typeof e.status=="string"&&e.timestamp instanceof Date}var To,Og,K_e=b(()=>{"use strict";To="does not exist",Og="No stacks match the name(s)"});function Ubt(t){return t.includes("COMPLETE")&&!t.includes("ROLLBACK")}function zbt(t){return t.includes("FAILED")||t.includes("ROLLBACK")}function Vbt(t){return t.includes("IN_PROGRESS")}function ate(t){let e=0,r=0,n=0,a=0;for(let s of t)a++,Ubt(s)?e++:zbt(s)?n++:Vbt(s)&&r++;let o=a===0?0:Math.min(100,Math.round(e/a*100));return{completed:e,inProgress:r,failed:n,total:a,percentage:o}}var Y_e=b(()=>{"use strict"});var BS,J_e=b(()=>{"use strict";BS=class{knownErrorPatterns=[{pattern:/AccessDenied|UnauthorizedOperation|Forbidden/i,category:"permissions",remediation:["Check IAM permissions for the deployment role","Ensure the role has necessary CloudFormation permissions","Verify service-linked roles are created if needed"]},{pattern:/Invalid.*Parameter|ValidationError|Invalid.*Value/i,category:"validation",remediation:["Review parameter values in your CDK code","Check for typos in resource names or ARNs","Ensure all required parameters are provided"]},{pattern:/Limit.*Exceeded|Quota.*Exceeded|Maximum.*reached/i,category:"limit",remediation:["Check AWS service quotas in the Service Quotas console","Request a quota increase if needed","Consider using a different region with available capacity"]},{pattern:/Timeout|Connection.*refused|Network.*unreachable/i,category:"network",remediation:["Check network connectivity and VPC settings","Verify security groups and NACLs","Ensure endpoints are accessible"]},{pattern:/already exists|Duplicate|ConflictException/i,category:"validation",remediation:["Resource with this name already exists","Consider using a different name or deleting the existing resource","Check if you are deploying to the correct account/region"]},{pattern:/Role.*not.*found|Role.*does.*not.*exist/i,category:"dependency",remediation:["Ensure IAM roles are created before dependent resources","Check role names and ARNs are correct","Verify cross-stack references are properly configured"]}];analyseFailure(e){let r=this.findFailedResources(e);if(r.length===0)return null;let n=this.findRootCause(r,e),a=this.buildDependencyChain(n.resource,r),o=this.generateRemediation(n),s=this.generateSummary(n,r);return{rootCause:n,affectedResources:r,dependencyChain:a,summary:s,remediation:o,errorPattern:n.category}}findFailedResources(e){let r=[];for(let[n,a]of e){let o=a[a.length-1];o&&this.isFailedStatus(o.status)&&r.push(o)}return r.sort((n,a)=>n.timestamp.getTime()-a.timestamp.getTime())}findRootCause(e,r){if(e.length===0)return{resource:{logicalId:"Unknown",resourceType:"Unknown",status:"FAILED",timestamp:new Date},reason:"No failed resources found",category:"unknown",isDirectCause:!1};let n=e[0],a=this.categoriseError(n.statusReason||""),o=this.isDirectCause(n,r);return{resource:n,reason:n.statusReason||"Unknown error",category:a,isDirectCause:o}}categoriseError(e){for(let r of this.knownErrorPatterns)if(r.pattern.test(e))return r.category;return"unknown"}isDirectCause(e,r){let n=e.statusReason||"";return n.includes("depends on")||n.includes("referenced by")||n.includes("required by")?!1:!(r.get(e.logicalId)||[]).some(a=>a.status.includes("COMPLETE")&&!a.status.includes("ROLLBACK"))}buildDependencyChain(e,r){let n=[];n.push(`${e.logicalId} (${e.resourceType}) - ROOT CAUSE`);for(let a of r)a.logicalId!==e.logicalId&&((a.statusReason||"").toLowerCase().includes(e.logicalId.toLowerCase())?n.push(` \u2192 ${a.logicalId} (${a.resourceType}) - Failed due to ${e.logicalId}`):n.push(` \u2192 ${a.logicalId} (${a.resourceType})`));return n}generateRemediation(e){let r=[];for(let n of this.knownErrorPatterns)if(n.category===e.category){r.push(...n.remediation);break}return e.resource.resourceType.includes("IAM")?r.push("Review IAM policies and trust relationships"):e.resource.resourceType.includes("Lambda")?r.push("Check Lambda function configuration and runtime"):e.resource.resourceType.includes("ECS")&&r.push("Verify ECS task definition and container configuration"),r.length===0&&r.push("Review the CloudFormation console for detailed error messages","Check the resource configuration in your CDK code","Ensure all dependencies are properly defined"),r}generateSummary(e,r){let n=this.simplifyResourceType(e.resource.resourceType),a=r.length,o=`Deployment failed: ${n} "${e.resource.logicalId}" `;switch(e.category){case"permissions":o+="failed due to insufficient permissions";break;case"validation":o+="failed validation";break;case"dependency":o+="has missing or invalid dependencies";break;case"limit":o+="exceeded AWS service limits";break;case"network":o+="encountered network issues";break;default:o+="failed to create"}return a>1&&(o+=` (${a-1} dependent resources also failed)`),o}simplifyResourceType(e){return e.replace("AWS::","").replace("::"," ")}isFailedStatus(e){return e.includes("FAILED")}}});function X_e(t){return t.statusReason===void 0?t:{...t,statusReason:E(t.statusReason)}}function ote(t){let e={...t.rootCause,reason:E(t.rootCause.reason),resource:X_e(t.rootCause.resource)};return{...t,rootCause:e,affectedResources:t.affectedResources.map(X_e)}}var Z_e=b(()=>{"use strict";Dp()});function ite(t,e){return`${t}-${e}`}var ste,Q_e=b(()=>{"use strict";ste="fjall:operations:pool"});var cte,eRe=b(()=>{"use strict";cte="fjall:sdk-pre-empty"});var lte,tRe=b(()=>{"use strict";lte="FjallMonitoring"});var $s=b(()=>{"use strict";H_e();K_e();Y_e();J_e();Z_e();Q_e();eRe();tRe()});import{GetRoleCommand as Wbt}from"@aws-sdk/client-iam";async function rRe(t,e){try{return await t.send(new Wbt({RoleName:ute}),{abortSignal:$e(e)}),A(!0)}catch(r){return r instanceof Error&&r.name==="NoSuchEntityException"?A(!1):v(new Error(`Failed to probe account globals (role "${ute}"): ${D(r)}`))}}function zd(t){return(t??[]).some(e=>Lt(e)==="organisation")}function nRe(t){let e=zd(t.providerAccounts)?`run \`fjall deploy organisation\` to provision the primary region (${t.primaryRegion}), then retry this deploy`:`target the primary region (${t.primaryRegion}) and run \`fjall deploy account\`, then retry this deploy`;return`Cannot deploy "${t.target}" into ${t.deployRegion}: the account globals (fixed-name IAM resources such as the ${ute} role) are created only in the primary region (${t.primaryRegion}) and were not found in this account. Nothing has been deployed. Deploy the primary region first: ${e}.`}var ute,j0=b(()=>{"use strict";xe();N();$s();ar();ute=lte});import{DescribeStacksCommand as Gbt}from"@aws-sdk/client-cloudformation";import{DescribeIpamPoolsCommand as qbt}from"@aws-sdk/client-ec2";function W_(t){switch(t.kind){case"missing-account-stack":return`the ${t.stackName} stack was not found in ${t.region}`;case"missing-ipam-pool":return`no IPAM pool exists for account ${t.accountId} in ${t.region}`}}function dte(t){let e=t.accountName??t.accountId,r=t.reasons.map(W_).join(" and "),n=t.accountName!==void 0?`run \`fjall target set ${Ni(t.accountName,t.region)}\` then \`fjall deploy account\`, then retry this deploy`:"run `fjall target list` to find the target name, `fjall target set <target>`, then `fjall deploy account`, then retry this deploy",a=zd(t.providerAccounts)?"run `fjall deploy organisation` (the cascade provisions every account and creates the IPAM pool), then retry this deploy":n;return`Target "${e}" is not ready in ${t.region}: ${r}. Nothing has been deployed. Provision the target first: ${a}.`}function Kbt(t){return t instanceof Error&&t.name==="ValidationError"&&t.message.includes(To)}async function G_(t,e,r){try{let n=(await t.send(new Gbt({StackName:pte}),{abortSignal:$e(r)})).Stacks?.[0]?.StackStatus;return A(n!==void 0&&!Hbt.has(n))}catch(n){return Kbt(n)?A(!1):v(new Error(`Failed to probe the ${pte} stack in ${e}: ${D(n)}`))}}function Ybt(t,e,r,n){return t.Locale!==r?!1:n.side==="owner"?(t.Tags??[]).some(a=>a.Key===ste&&a.Value===n.pairTagValue):t.OwnerId===e?!1:n.platformAccountId===void 0||t.OwnerId===n.platformAccountId}async function Jbt(t,e,r,n,a){try{let o;do{if(Gt(a))return v(new Error(`Aborted: IPAM pool probe for account ${e} in ${r} cancelled by shutdown signal`));let s=await t.send(new qbt({...o!==void 0&&{NextToken:o}}),{abortSignal:$e(a)});if((s.IpamPools??[]).some(i=>Ybt(i,e,r,n)))return A(!0);o=s.NextToken}while(o!==void 0);return A(!1)}catch(o){return v(new Error(`Failed to probe IPAM pools for account ${e} in ${r}: ${D(o)}`))}}async function U0(t,e,r,n,a){let o=[],s=await G_(t.cloudFormation,r,a);if(!s.success)return v(s.error);s.data||o.push({kind:"missing-account-stack",stackName:pte,region:r});let i=n?.providerAccounts;if(zd(i)){let c=(i??[]).find(d=>d.id===e.id),l=(i??[]).find(d=>Lt(d)==="platform")?.id,u=c!==void 0&&Lt(c)==="platform"?{side:"owner",pairTagValue:ite(e.id,r)}:{side:"consumer",...l!==void 0&&{platformAccountId:l}},p=await Jbt(t.ec2,e.id,r,u,a);if(!p.success)return v(p.error);p.data||o.push({kind:"missing-ipam-pool",accountId:e.id,region:r})}return o.length===0?A({ready:!0}):A({ready:!1,reasons:o,advisory:dte({accountId:e.id,...e.name!==void 0&&{accountName:e.name},region:r,reasons:o,...n!==void 0&&{providerAccounts:n.providerAccounts}})})}var pte,Hbt,cU=b(()=>{"use strict";xe();N();$s();no();j0();ar();pte=wn($t.ACCOUNT),Hbt=new Set(["CREATE_FAILED","ROLLBACK_IN_PROGRESS","ROLLBACK_COMPLETE","ROLLBACK_FAILED","REVIEW_IN_PROGRESS","DELETE_IN_PROGRESS","DELETE_FAILED"])});function lU(t){let e=t.accountName??t.accountId,r=t.reasons.map(W_).join(" and "),n=zd(t.providerAccounts)?"Run `fjall deploy organisation` \u2014 the cascade provisions every account and creates the IPAM pool":"Run `fjall deploy account` to provision it";return`Target "${e}" is not ready in ${t.region}: ${r}. ${n}.`}var aRe=b(()=>{"use strict";j0();cU()});import{AccountClient as Xbt,GetRegionOptStatusCommand as Zbt}from"@aws-sdk/client-account";async function uU(t,e,r){if(!Di.has(t))return"enabled";try{switch((await new Xbt({region:ext,credentials:e}).send(new Zbt({RegionName:t}),{abortSignal:$e(r,Qbt)})).RegionOptStatus){case"ENABLED":case"ENABLED_BY_DEFAULT":return"enabled";case"DISABLED":case"DISABLING":return"disabled";case"ENABLING":return"enabling";default:return"unknown"}}catch{return"unknown"}}function pU(t){return`Region ${t} is not enabled in this AWS account. ${Dc(t)} Enable it and wait for activation, then retry \u2014 or deploy to a region that is already enabled.`}var Qbt,ext,mte=b(()=>{"use strict";N();ar();Qbt=1e4,ext="us-east-1"});import{DescribeOrganizationCommand as txt,CreateOrganizationCommand as rxt,ListRootsCommand as nxt}from"@aws-sdk/client-organizations";async function Nf(t,e){try{let r=!1,n=await fte(t,e);if(!n)try{n=(await t.send(new rxt({FeatureSet:"ALL"}),{abortSignal:$e(e)})).Organization??null,r=!0}catch(o){if(_t(o)==="AlreadyInOrganizationException"){if(n=await fte(t,e),!n)return v(new Error("Account is already in an organisation but DescribeOrganization returned nothing"))}else throw o}if(!n?.Id||!n.MasterAccountId)return v(new Error("Organisation is missing required fields (Id or MasterAccountId)"));let a=await oRe(t,e);return a.success?A({orgId:n.Id,rootId:a.data,managementAccountId:n.MasterAccountId,created:r}):a}catch(r){return v(new Error(`Failed to ensure organisation exists: ${D(r)}`))}}async function q_(t,e,r){try{let n=await fte(t,e,r);if(!n)return A(null);if(!n.Id||!n.MasterAccountId)return v(new Error("Organisation is missing required fields (Id or MasterAccountId)"));let a=await oRe(t,e);return a.success?A({orgId:n.Id,rootId:a.data,managementAccountId:n.MasterAccountId,created:!1}):a}catch(n){return r?.tolerateAccessDenied===!0&&Hi(_t(n))?A(null):v(new Error(`Failed to describe organisation: ${D(n)}`))}}async function oRe(t,e){let r=(await t.send(new nxt({}),{abortSignal:$e(e)})).Roots??[];return r.length===0||!r[0]?.Id?v(new Error("No organisation root found")):A(r[0].Id)}async function fte(t,e,r){try{return(await t.send(new txt({}),{abortSignal:$e(e)})).Organization??null}catch(n){let a=_t(n);if(a===Mc.ORGS_NOT_IN_USE||r?.tolerateAccessDenied===!0&&Hi(a))return null;throw n}}var dU=b(()=>{"use strict";xe();N();ar()});function mU(t,e){return e?.aborted===!0?Promise.resolve():new Promise(r=>{let n=setTimeout(()=>{e?.removeEventListener("abort",a),r()},t),a=()=>{clearTimeout(n),r()};e?.addEventListener("abort",a,{once:!0})})}var hte=b(()=>{"use strict"});import{EnablePolicyTypeCommand as axt,ListRootsCommand as oxt,PolicyType as fU}from"@aws-sdk/client-organizations";async function H_(t,e,r={}){try{for(let n of sRe){if(Gt(r.abortSignal))return v(new Error("Aborted: policy-type enablement cancelled by shutdown signal"));try{await t.send(new axt({RootId:e,PolicyType:n}),{abortSignal:$e(r.abortSignal)})}catch(a){if(_t(a)==="PolicyTypeAlreadyEnabledException")continue;throw a}}return await cxt(t,e,r),A(void 0)}catch(n){return v(new Error(`Failed to enable policy types: ${D(n)}`))}}async function cxt(t,e,r){let n=r.pollIntervalMs??sxt,a=r.pollTimeoutMs??ixt,o=new Set(sRe),s=Date.now();for(;;){let i=(await t.send(new oxt({}),{abortSignal:$e(r.abortSignal)})).Roots?.find(p=>p.Id===e),c=new Set;for(let p of i?.PolicyTypes??[])p.Status==="ENABLED"&&p.Type&&c.add(p.Type);let l=[...o].filter(p=>!c.has(p));if(l.length===0)return;let u=Date.now()-s;if(u>=a)throw new Error(`Policy types still PENDING_ENABLE after ${u}ms: ${l.join(", ")}`);if(n>0&&(await mU(n,r.abortSignal),r.abortSignal?.aborted===!0))throw new Error("Aborted while waiting for policy types to enable")}}var sRe,sxt,ixt,gte=b(()=>{"use strict";xe();N();ar();hte();sRe=[fU.SERVICE_CONTROL_POLICY,fU.TAG_POLICY,fU.BACKUP_POLICY,fU.AISERVICES_OPT_OUT_POLICY],sxt=2e3,ixt=6e4});import{EnableAWSServiceAccessCommand as lxt}from"@aws-sdk/client-organizations";async function K_(t,e){try{for(let r of z0){if(Gt(e))return v(new Error("Aborted: service-access enablement cancelled by shutdown signal"));try{await t.send(new lxt({ServicePrincipal:r}),{abortSignal:$e(e)})}catch(n){if(_t(n)===Mc.ACCESS_DENIED)return v(new Error(`Access denied when enabling service access for ${r}. Ensure your credentials have organizations:EnableAWSServiceAccess permission.`));throw new Error(`Service principal ${r}: ${D(n)}`,{cause:n})}}return A(void 0)}catch(r){return v(new Error(`Failed to enable service access: ${D(r)}`))}}var z0,yte=b(()=>{"use strict";xe();ar();N();z0=["account.amazonaws.com","sso.amazonaws.com","ipam.amazonaws.com","ram.amazonaws.com","backup.amazonaws.com","member.org.stacksets.cloudformation.amazonaws.com","guardduty.amazonaws.com","securityhub.amazonaws.com","config.amazonaws.com","inspector2.amazonaws.com","access-analyzer.amazonaws.com","cloudtrail.amazonaws.com","iam.amazonaws.com"]});import{EnableSharingWithAwsOrganizationCommand as uxt}from"@aws-sdk/client-ram";async function Y_(t,e){try{return await t.send(new uxt({}),{abortSignal:$e(e)}),A(void 0)}catch(r){return v(new Error(`Failed to enable RAM sharing: ${D(r)}`))}}var vte=b(()=>{"use strict";xe();N();ar()});import{ActivateOrganizationsAccessCommand as pxt}from"@aws-sdk/client-cloudformation";async function J_(t,e){try{return await t.send(new pxt({}),{abortSignal:$e(e)}),A(void 0)}catch(r){return v(new Error(`Failed to activate trusted access: ${D(r)}`))}}var Ste=b(()=>{"use strict";xe();N();ar()});import{EnableIpamOrganizationAdminAccountCommand as dxt}from"@aws-sdk/client-ec2";async function X_(t,e,r){try{return await t.send(new dxt({DryRun:!1,DelegatedAdminAccountId:e}),{abortSignal:$e(r)}),A(void 0)}catch(n){return v(new Error(`Failed to enable IPAM delegation for account ${e}: ${D(n)}`))}}var Ete=b(()=>{"use strict";xe();N();ar()});import{DescribeBackupVaultCommand as iRe,UpdateGlobalSettingsCommand as mxt}from"@aws-sdk/client-backup";async function Z_(t,e,r){try{let n={...fxt,...e},a={isCrossAccountBackupEnabled:n.enableCrossAccountBackup.toString(),isDelegatedAdministratorEnabled:n.enableDelegatedAdministrator.toString(),isMpaEnabled:n.enableMpa.toString()};return await t.send(new mxt({GlobalSettings:a}),{abortSignal:$e(r)}),A(void 0)}catch(n){return v(new Error(`Failed to update backup global settings: ${D(n)}`))}}function V0(t,e){return e===void 0||e===""?!1:t==="production"||t==="compliance"}async function hU(t,e){try{return await t.send(new iRe({BackupVaultName:Yh}),{abortSignal:$e(e)}),A(!0)}catch(r){return r instanceof Error&&r.name==="ResourceNotFoundException"?A(!1):v(new Error(`Failed to describe backup vault "${Yh}": ${E(D(r))}`))}}async function cRe(t,e,r){try{let n=await t.send(new iRe({BackupVaultName:Yh}),{abortSignal:$e(r)}),a=n.LockDate,o=a!==void 0&&a.getTime()<=Date.now();return A({vaultName:n.BackupVaultName??Yh,region:e,locked:n.Locked??!1,...a!==void 0&&{lockDate:a},lockPermanent:o,recoveryPointCount:n.NumberOfRecoveryPoints??0,...n.EncryptionKeyArn!==void 0&&{encryptionKeyArn:n.EncryptionKeyArn}})}catch(n){return n instanceof Error&&n.name==="ResourceNotFoundException"?A(null):v(new Error(`Failed to describe surviving backup vault "${Yh}": ${E(D(n))}`))}}function lRe(t){let e=t.locked?t.lockPermanent?"compliance-locked, PERMANENT \u2014 cannot be removed by anyone, including AWS or the root user":t.lockDate!==void 0?`compliance-locked, immutable from ${t.lockDate.toISOString().slice(0,10)}`:"governance-locked \u2014 removable by privileged IAM":"unlocked";return[`Backup vault "${t.vaultName}" in ${t.region} SURVIVES this destroy.`,` \u2022 Lock: ${e}`,` \u2022 Recovery points retained: ${t.recoveryPointCount}`,...t.encryptionKeyArn!==void 0?[` \u2022 Retained KMS key (also orphaned): ${t.encryptionKeyArn}`]:[]," The vault and its KMS key are RemovalPolicy.RETAIN \u2014 destroy cannot delete them."].join(`
|
|
420
420
|
`)}var fxt,W0=b(()=>{"use strict";xe();N();ar();fxt={enableCrossAccountBackup:!0,enableDelegatedAdministrator:!0,enableMpa:!1}});import{ListAccountsCommand as uRe,CreateAccountCommand as hxt,CreateAccountState as pRe,DescribeCreateAccountStatusCommand as gxt}from"@aws-sdk/client-organizations";async function ku(t,e){try{let r=await t.send(new uRe({MaxResults:20}),{abortSignal:$e(e)}),n=r.Accounts??[],a=r.NextToken;for(;a;){if(Gt(e))return v(new Error("Aborted: account listing cancelled by shutdown signal"));let o=await t.send(new uRe({MaxResults:20,NextToken:a}),{abortSignal:$e(e)});n=n.concat(o.Accounts??[]),a=o.NextToken}return A(n)}catch(r){return _t(r)===Mc.ORGS_NOT_IN_USE?v(new Error("AWS Organisations is not enabled for this account")):v(new Error(`Failed to list accounts: ${D(r)}`))}}async function Q_(t,e){let r=await ku(t);return r.success?A(r.data.find(n=>n.Id===e)):r}async function jS(t,e,r,n=180,a=5e3,o){if(Gt(o))return v(new Error(`Aborted: account creation for "${e}" cancelled by shutdown signal before starting`));try{let s;try{s=await t.send(new hxt({AccountName:e,Email:r}),{abortSignal:$e(o)})}catch(c){let l=_t(c);if(l===Mc.ACCESS_DENIED)return v(new Error(`Access denied when creating account "${e}". Ensure your credentials have organizations:CreateAccount permission.`));if(l==="DuplicateAccountException")return v(new Error(`An account with the email "${r}" already exists in the organisation.`));if(l==="FinalizingOrganizationException")return v(new Error("The organisation is still being initialised. Please wait and try again."));throw c}let i=s.CreateAccountStatus?.Id;if(!i)return v(new Error(`CreateAccount request for "${e}" did not return a status ID`));for(let c=0;c<n;c++){if(Gt(o))return v(new Error(`Aborted: account creation polling for "${e}" cancelled by shutdown signal \u2014 AWS request ${i} may still complete server-side`));let l=(await t.send(new gxt({CreateAccountRequestId:i}),{abortSignal:$e(o)})).CreateAccountStatus;if(!l)return v(new Error(`No status returned for CreateAccount request ${i}`));if(l.State===pRe.SUCCEEDED)return l.AccountId?A({accountId:l.AccountId,accountName:e}):v(new Error(`Account creation succeeded but no account ID returned for "${e}"`));if(l.State===pRe.FAILED)return v(new Error(`Account creation failed for "${e}": ${l.FailureReason}`));await mU(a,o)}return v(new Error(`Account creation for "${e}" timed out after ${n*a/1e3} seconds`))}catch(s){return v(new Error(`Failed to create account "${e}": ${D(s)}`))}}var gU=b(()=>{"use strict";xe();N();ar();hte()});import{CreateOrganizationalUnitCommand as yxt,ListOrganizationalUnitsForParentCommand as dRe,ListParentsCommand as vxt,MoveAccountCommand as Sxt}from"@aws-sdk/client-organizations";async function mRe(t,e,r){let n=await t.send(new dRe({ParentId:e}),{abortSignal:$e(r)}),a=n.OrganizationalUnits??[],o=n.NextToken;for(;o;){if(Gt(r))throw new Error("Aborted: OU listing cancelled by shutdown signal");let s=await t.send(new dRe({ParentId:e,NextToken:o}),{abortSignal:$e(r)});a=a.concat(s.OrganizationalUnits??[]),o=s.NextToken}return a}async function Ext(t,e,r){try{return(await t.send(new vxt({ChildId:e}),{abortSignal:$e(r)})).Parents?.[0]?.Id}catch(n){if(_t(n)===Mc.CHILD_NOT_FOUND)return;throw n}}async function fRe(t,e,r,n,a){let o=n.find(s=>s.Name===r);if(o?.Id)return A(o.Id);try{let s=(await t.send(new yxt({Name:r,ParentId:e}),{abortSignal:$e(a)})).OrganizationalUnit;return s?.Id?A(s.Id):v(new Error(`OU "${r}" was created but has no ID`))}catch(s){return v(new Error(`Failed to create OU "${r}": ${D(s)}`))}}function hRe(t){return t.charAt(0).toUpperCase()+t.slice(1)}async function bxt(t,e,r,n){let a={};if(r.length===0)return A(a);let o=await mRe(t,e,n);for(let s of r){let i=hRe(s),c=await fRe(t,e,i,o,n);if(!c.success)return v(c.error);a[s.toLowerCase()]=c.data,o.push({Id:c.data,Name:i})}return A(a)}async function gRe(t,e,r,n,a,o,s){let i=await mRe(t,e,s);for(let[c,l]of Object.entries(r)){let u=hRe(c),p=await fRe(t,e,u,i,s);if(!p.success)return v(p.error);let d=p.data,m=a?`${a}.${c.toLowerCase()}`:c.toLowerCase();if(n[m]=d,a){let f=c.toLowerCase();o.has(f)||(n[f]=d)}if(i.push({Id:d,Name:u}),!Rg(l)){let f=await gRe(t,d,l,n,m,o,s);if(!f.success)return f}}return A(void 0)}async function eR(t,e,r,n){if(Gt(n))return v(new Error("Aborted: OU reconciliation cancelled by shutdown signal"));try{if(Array.isArray(r))return await bxt(t,e,r,n);let a={},o=new Set(Object.keys(r).map(i=>i.toLowerCase())),s=await gRe(t,e,r,a,"",o,n);return s.success?A(a):v(s.error)}catch(a){return v(new Error(`Failed to ensure OUs exist: ${D(a)}`))}}function G0(t,e,r=""){let n={};for(let[a,o]of Object.entries(t)){let s=r?`${r}.${a.toLowerCase()}`:a.toLowerCase(),i=e[s];if(Rg(o)){if(i)for(let c of o)n[c.toLowerCase()]=i}else Object.assign(n,G0(o,e,s))}return n}async function tR(t,e,r,n,a){try{if(r.length===0)return A({moved:0,alreadyPlaced:0});let o=0,s=0;for(let i of r){if(Gt(a))return v(new Error("Aborted: account placement cancelled by shutdown signal"));if(Lt(i)==="organisation")continue;let c=n?n[i.name.toLowerCase()]:e[i.environment.toLowerCase()];if(!c)continue;let l=await Ext(t,i.id,a);if(l){if(l===c){s++;continue}try{await t.send(new Sxt({AccountId:i.id,SourceParentId:l,DestinationParentId:c}),{abortSignal:$e(a)}),o++}catch(u){if(_t(u)===Mc.ACCOUNT_NOT_FOUND)continue;throw u}}}return A({moved:o,alreadyPlaced:s})}catch(o){return v(new Error(`Failed to place accounts in OUs: ${D(o)}`))}}var bte=b(()=>{"use strict";xe();ar();N()});import{UpdateCostAllocationTagsStatusCommand as xxt}from"@aws-sdk/client-cost-explorer";async function rR(t,e,r){if(e.length===0)return A(void 0);try{let n=e.map(a=>({TagKey:a.TagKey,Status:"Active"}));return await t.send(new xxt({CostAllocationTagsStatus:n}),{abortSignal:$e(r)}),A(void 0)}catch(n){return v(new Error(`Failed to activate cost allocation tags: ${D(n)}`))}}var xte=b(()=>{"use strict";xe();N();ar()});import{ListInstancesCommand as Axt}from"@aws-sdk/client-sso-admin";async function nR(t,e){try{let r=(await t.send(new Axt({}),{abortSignal:$e(e)})).Instances??[];return A({enabled:r.length>0,instanceCount:r.length})}catch(r){return v(new Error(`Failed to check Identity Centre status: ${D(r)}`))}}var Ate=b(()=>{"use strict";xe();N();ar()});import{RegisterDelegatedAdministratorCommand as Cxt}from"@aws-sdk/client-organizations";async function aR(t,e,r=yU,n){let a=[];for(let o of r){if(Gt(n)){let s=a.length>0?`${a.join("; ")}; `:"";return v(new Error(`${s}Aborted: security-delegate registration cancelled by shutdown signal`))}try{await t.send(new Cxt({AccountId:e,ServicePrincipal:o}),{abortSignal:$e(n)})}catch(s){let i=_t(s);if(i===Mc.ACCOUNT_ALREADY_REGISTERED)continue;if(i===Mc.ACCESS_DENIED){let c=a.length>0?`${a.join("; ")}; `:"";return v(new Error(`${c}Access denied when registering delegated admin for ${o}. Ensure your credentials have organizations:RegisterDelegatedAdministrator permission.`))}a.push(`${o}: ${D(s)}`)}}return a.length>0?v(new Error(`Failed to register security delegates for account ${e}:
|
|
421
421
|
${a.join(`
|
|
422
422
|
`)}`)):A(void 0)}var yU,Cte=b(()=>{"use strict";xe();ar();N();yU=["guardduty.amazonaws.com","securityhub.amazonaws.com","config.amazonaws.com","inspector2.amazonaws.com","access-analyzer.amazonaws.com"]});import{ListOrganizationsFeaturesCommand as wxt,EnableOrganizationsRootCredentialsManagementCommand as Txt,EnableOrganizationsRootSessionsCommand as Dxt}from"@aws-sdk/client-iam";function yRe(t){return new jp("Trusted access for iam.amazonaws.com is not enabled in Organizations. Re-run organisation setup \u2014 its enable-service-access phase enables it \u2014 or enable it manually (organizations:EnableAWSServiceAccess for iam.amazonaws.com) and retry enabling centralised root access.",t)}async function oR(t,e){let r={enabled:[],alreadyEnabled:[]},n;try{let o=await t.send(new wxt({}),{abortSignal:$e(e)});n=new Set(o.EnabledFeatures??[])}catch(o){let s=_t(o);return Hi(s)?v(new jp("Access denied when listing organisation root-access features. Ensure your credentials have iam:ListOrganizationsFeatures permission.",r)):s==="ServiceAccessNotEnabledException"?v(yRe(r)):v(new jp(`Failed to list organisation root-access features: ${E(D(o))}`,r))}let a=[];for(let o of vU){if(Gt(e)){let c=a.length>0?`${a.join("; ")}; `:"";return v(new jp(`${c}Aborted: centralised root-access enablement cancelled by shutdown signal.`,r))}if(n.has(o)){r.alreadyEnabled.push(o);continue}let{CommandClass:s,permission:i}=kxt[o];try{await t.send(new s({}),{abortSignal:$e(e)}),r.enabled.push(o)}catch(c){let l=_t(c);if(Hi(l)){let u=a.length>0?`${a.join("; ")}; `:"";return v(new jp(`${u}Access denied when enabling ${o}. Ensure your credentials have ${i} permission.`,r))}if(l==="ServiceAccessNotEnabledException")return v(yRe(r));a.push(`${o}: ${E(D(c))}`)}}return a.length>0?v(new jp(`Failed to enable centralised root access:
|
|
@@ -449,7 +449,7 @@ ${i}`))}return K.debug("openNextBuild","Payload import map generated",{appPath:t
|
|
|
449
449
|
${d}`))}let p=tC(a,".open-next");return Yte(p)?(r.onOpenNextBuildComplete?.(),r.onOpenNextProgress?.(E("OpenNext build completed successfully")),A(void 0)):(r.onOpenNextBuildError?.("OpenNext build completed but .open-next directory not found"),v(new Error("OpenNext build completed but .open-next directory not found")))}var SR,NU,$U,Jte=b(()=>{"use strict";xe();N();er();A0();sOe();SR="@opennextjs/aws",NU=6e5,$U=3e4});import{basename as zAt}from"path";function Xte(t){return{hasNetwork:!0,hasCompute:!0,hasDatabase:t,hasStorage:!0,hasMessaging:!0,hasCdn:!0}}var MU,Zte=b(()=>{"use strict";xe();er();no();A0();Jte();MU={name:"opennext",priority:10,detect(t){let e={detected:!1,pattern:null,reason:"No OpenNext pattern found",resources:Xte(!1),hasDatabase:!1,hasDockerfile:!1},r=vDe(t.appPath);if(!r)return{...e,reason:"No infrastructure.ts found"};if(!r.includes("PatternFactory"))return{...e,reason:"No PatternFactory reference in infrastructure.ts"};if(r.includes('type: "payload"'))return{detected:!0,pattern:"payload",reason:'PatternFactory with type: "payload" detected',resources:Xte(!0),hasDatabase:!0,hasDockerfile:!1};if(r.includes('type: "nextjs"')){let n=r.includes("DatabaseFactory.build(")||r.includes("database:");return{detected:!0,pattern:"nextjs",reason:'PatternFactory with type: "nextjs" detected',resources:Xte(n),hasDatabase:n,hasDockerfile:!1}}return{...e,reason:"PatternFactory found but no recognised pattern type"}},plan(t,e){let r=e.pattern==="payload"?[{name:"payload-import-map",binary:"npx",args:["payload","generate:importmap"],timeoutMs:$U}]:[];return{builderName:"opennext",deployOrder:E0,destroyOrder:b0,parallelDestroy:!0,preBuildCommands:r,buildCommand:{name:"open-next-build",binary:"open-next",args:["build"],timeoutMs:NU},requiresDockerBuild:!1,resources:e.resources}},async build(t,e,r,n){if(n?.skipBuild||n?.infraOnly)return K.debug("openNextBuilder","Build skipped",{skipBuild:n.skipBuild,infraOnly:n.infraOnly}),A(void 0);let a={kind:"application",appName:zAt(t)||"app",path:t},o=e.preBuildCommands.some(s=>s.name==="payload-import-map")?"payload":"nextjs";return await FU(a,o,{onOpenNextBuildStart:()=>r.onBuildStart?.("opennext"),onOpenNextProgress:s=>r.onBuildProgress?.("opennext",s),onOpenNextBuildComplete:()=>r.onBuildComplete?.("opennext"),onOpenNextBuildError:s=>r.onBuildError?.("opennext",s)})}}});import{readdirSync as VAt}from"fs";function Qte(t){try{return VAt(t).some(e=>e.startsWith("Dockerfile"))}catch(e){return K.debug("dockerfileDetection","Failed to check for Dockerfile",{appPath:t,error:e instanceof Error?e.message:String(e)}),!1}}var ere=b(()=>{"use strict";er()});import{existsSync as WAt,readFileSync as GAt}from"fs";import{join as qAt}from"path";function HAt(t){try{let e=qAt(t,Ld);return WAt(e)?{exists:!0,hasDatabase:GAt(e,"utf-8").includes("DatabaseFactory.build(")}:{exists:!1,hasDatabase:!1}}catch(e){return K.debug("dockerBuilder","Failed to read infrastructure file",{appPath:t,error:D(e)}),{exists:!1,hasDatabase:!1}}}var cOe,LU,tre=b(()=>{"use strict";xe();er();N();ere();xl();no();cOe={hasNetwork:!0,hasCompute:!0,hasDatabase:!1,hasStorage:!1,hasMessaging:!1,hasCdn:!1};LU={name:"docker",priority:100,detect(t){let{exists:e,hasDatabase:r}=HAt(t.appPath);if(!e)return{detected:!1,pattern:null,reason:"No infrastructure.ts found",resources:cOe,hasDatabase:!1,hasDockerfile:!1};let n=Qte(t.appPath);return{detected:!0,pattern:null,reason:n?"infrastructure.ts found with Dockerfile":"infrastructure.ts found (no Dockerfile)",resources:{...cOe,hasDatabase:r},hasDatabase:r,hasDockerfile:n}},plan(t,e){let r=e.resources;return{builderName:"docker",deployOrder:wS({resources:r}),destroyOrder:wf({resources:r}),parallelDestroy:!1,preBuildCommands:[],buildCommand:null,requiresDockerBuild:e.hasDockerfile,resources:r}},async build(t,e,r,n){return A(void 0)}}});var Bc,BU=b(()=>{"use strict";Zte();tre();Bc=class t{builders;constructor(e){this.builders=[...e].sort((r,n)=>r.priority-n.priority)}resolve(e,r){if(r){let n=this.builders.find(o=>o.name===r);if(!n)return null;let a=n.detect(e);return{builder:n,detection:{...a,detected:!0}}}for(let n of this.builders){let a=n.detect(e);if(a.detected)return{builder:n,detection:a}}return null}static createDefault(){return new t([MU,LU])}static create(e){return new t(e)}}});function rre(t,e,r){if(t.success)return t;let n=Cr(t)?t.error.message:"";return n.includes(Ns)||n.includes(Cg)?A({stackName:Wr(r,e),stackType:e,outputs:{},skipped:!0}):t}function nre(t,e){if(t.success)return null;let r=Cr(t)?E(t.error.message):"";if(r.includes("TSError")||r.includes("Unable to compile TypeScript")||r.includes("Subprocess exited with error")){let n=r.match(/infrastructure\.ts\(\d+,\d+\): error TS\d+: .+/),a=n?n[0]:`Check ${Ld} for syntax errors`;return{continue:!1,result:v(new ni(`CDK synthesis failed: ${a}`,{errorType:"synth_failed",operation:`destroy-${e}`}))}}return r.includes(Ns)||r.includes(Cg)?{continue:!0,result:A({message:"Stack already deleted"})}:{continue:!1,result:v(new ni(`Failed to destroy ${e} stack: ${r}`,{errorType:"destroy_failed",operation:`destroy-${e}`}))}}async function are(t,e,r,n,a){let o=e.target,s=Bc.createDefault().resolve({appPath:e.path}),i,c;if(s){let l=s.builder.plan({appPath:e.path},s.detection);i=l.parallelDestroy,c=l.destroyOrder}else i=!1,c=wf({pattern:null,resources:n});if(i){let l=g_();for(let u of l){let p=u.stacks;if(p.length===1){let d=p[0],m=Wr(o,d);r?.onStackStart?.(d,m);let f=await t.destroyStack(d,e,{onOutput:r?.onOutput?S=>r.onOutput?.(S,d):void 0,onResourceProgress:r?.onResourceProgress?S=>r.onResourceProgress?.(S,d):void 0,onLog:r?.onLog,onStackCleanupProgress:r?.onStackCleanupProgress},void 0,a),g=rre(f,d,o);r?.onStackComplete&&await r.onStackComplete(d,g);let y=nre(g,d);if(y){if(y.continue)continue;return y.result}}else{let d=await t.runCdkSynth(e);if(!d.success)return v(new ni(d.error,{errorType:"synth_failed",appName:o,operation:"destroy-parallel-synth"}));r?.onParallelPhaseStart?.(p,u.description);for(let f of p)r?.onStackStart?.(f,Wr(o,f));let m=await t.destroyStacksInParallel(p,e,{onOutput:r?.onOutput,onResourceProgress:r?.onResourceProgress,onLog:r?.onLog,onStackCleanupProgress:r?.onStackCleanupProgress,onStackComplete:async(f,g,y,S)=>{let x=S?.message!==void 0?E(S.message):"Stack destruction failed",C=g?A({stackName:Wr(o,f),stackType:f,outputs:{}}):v(S instanceof ni?S:new ni(x,{errorType:"destroy_failed",appName:o,operation:`destroy-${f}`}));await r?.onStackComplete?.(f,C)}},!0,a);if(m.success){r?.onParallelPhaseComplete?.(m.data);let f=m.data.filter(g=>!g.success);if(f.length>0){let g=f.filter(y=>y.error&&!y.error.message.includes(Ns)&&!y.error.message.includes(Cg));if(g.length>0){let y=g.map(x=>x.stack).join(", "),S=g.map(x=>`${x.stack}: ${x.error?.message??"Unknown error"}`).join(`
|
|
450
450
|
`);return v(new ni(`Failed to destroy stacks: ${y}
|
|
451
451
|
|
|
452
|
-
${S}`,{errorType:"destroy_failed",appName:o,operation:"destroy-parallel"}))}}}}}}else for(let l of c){let u=Wr(o,l);r?.onStackStart?.(l,u);let p=await t.destroyStack(l,e,{onOutput:r?.onOutput?f=>r.onOutput?.(f,l):void 0,onResourceProgress:r?.onResourceProgress?f=>r.onResourceProgress?.(f,l):void 0,onLog:r?.onLog,onStackCleanupProgress:r?.onStackCleanupProgress},void 0,a),d=rre(p,l,o);r?.onStackComplete&&await r.onStackComplete(l,d);let m=nre(d,l);if(m){if(m.continue)continue;return m.result}}return A({message:"All stacks destroyed"})}function ore(t,e){return t.map((r,n)=>r.status==="fulfilled"?r.value:{stack:e[n]??ge.NETWORK,success:!1,error:r.reason instanceof Error?r.reason:new Error(String(r.reason)),duration:0})}async function lOe(t,e){try{let r=Wr(t,ge.COMPUTE),n=await e.getStackOutputs(r);if(n.success&&n.data.length>0){let s=n.data.find(c=>c.OutputKey?.includes("LoadBalancerUrl"));if(s?.OutputValue)return s.OutputValue.toLowerCase();let i=n.data.find(c=>c.OutputKey?.includes("LoadBalancerDnsName"));if(i?.OutputValue)return`http://${i.OutputValue.toLowerCase()}`}let a=Wr(t,ge.CDN),o=await e.getStackOutputs(a);if(o.success&&o.data.length>0){let s=o.data.find(i=>i.OutputKey?.includes("DistributionDomainName"));if(s?.OutputValue)return`https://${s.OutputValue.toLowerCase()}`}return}catch(r){K.warn("ApplicationStackService","URL resolution failed",{error:E(r instanceof Error?r.message:String(r))});return}}var sre=b(()=>{"use strict";N();xl();no();BU();xe();yj();er()});import{CloudFormationClient as KAt}from"@aws-sdk/client-cloudformation";import{S3Client as uOe}from"@aws-sdk/client-s3";var qS,ire=b(()=>{"use strict";eC();xl();no();xe();yj();er();N();gR();sre();qS=class{cdkService;cloudFormationService;aws;constructor(e,r,n){this.cdkService=e,this.cloudFormationService=r,this.aws=n}async runCdkSynth(e){return this.cdkService.runCdkSynth(e)}async deployStack(e,r,n,a){let o=r.target,s=Wr(o,e),i=await this.cdkService.runCdkDeploy(r,s,n?.onOutput,n?.onResourceProgress,this.aws,void 0,a?.parameters);if(i.success){let c=i.data;K.debug("ApplicationStackService","CDK deploy result",{stackName:s,stackType:e,success:!0,message:c.message,status:c.status,skipped:c.details?.skipped,hasOutput:!!c.details?.output});let l=await this.cloudFormationService.getStackOutputs(s);K.debug("ApplicationStackService","Stack outputs after deploy",{stackName:s,hasOutputs:l.success&&l.data.length>0,outputCount:l.success?l.data.length:0});let u=l.success&&l.data.length>0?Z0(l.data):void 0;return A({stackType:e,stackName:s,skipped:c.details?.skipped===!0,outputs:u})}else{let c=E(i.error||`Failed to deploy ${e} infrastructure`);return K.error("ApplicationStackService","Stack deployment failed",{stackType:e,target:r.target,error:c}),v(new ni(c,{errorType:"deployment_failed",appName:r.target,operation:"deployStack",stackType:e}))}}async deployStacksInParallel(e,r,n){let a=n?.onOutput,o=n?.onResourceProgress,s=n?.onStackComplete,i=await Promise.allSettled(e.map(async c=>{let l=Date.now(),u=await this.deployStack(c,r,{onOutput:a?m=>a(m,c):void 0,onResourceProgress:o?m=>o(m,c):void 0}),p=Date.now()-l,d={stack:c,success:u.success,error:u.success?void 0:u.error,duration:p,...u.success&&u.data.outputs!==void 0?{outputs:u.data.outputs}:{}};return!u.success&&u.error&&K.debug("deployStacksInParallel",`Stack ${c} failed`,{error:u.error.message}),s?.(c,u.success,p,u.success?void 0:u.error),d}));return A(ore(i,e))}async destroyStack(e,r,n,a,o){let s=r.target,i=Wr(s,e),c=[];if(this.aws!==void 0)if(a===!0||(await this.cdkService.runCdkSynth(r)).success){let u=await Ug(this.aws.getClient(KAt),this.aws.getClient(uOe),i,{onLog:n?.onLog,onStackCleanupProgress:n?.onStackCleanupProgress},o);c=GS(u)}else K.debug("ApplicationStackService","Skipping pre-empty pass after failed validation synth \u2014 the destroy will surface the error",{stackName:i});else K.debug("ApplicationStackService","No AWS provider available, skipping pre-empty pass",{stackName:i});let l=await this.cdkService.runCdkDestroy(r,i,n?.onOutput,n?.onResourceProgress,this.aws,a);if(l.success)return this.aws!==void 0&&c.length>0&&await zg(this.aws.getClient(uOe),c,{onLog:n?.onLog,onStackCleanupProgress:n?.onStackCleanupProgress},o),A({stackType:e,stackName:i,skipped:!1,outputs:void 0});{let u=E(l.error||`Failed to destroy ${e} stack`);return K.error("ApplicationStackService","Stack destroy failed",{stackType:e,target:r.target,error:u}),v(new ni(u,{errorType:"destroy_failed",appName:r.target,operation:"destroyStack",stackType:e}))}}async destroyStacksInParallel(e,r,n,a,o){let s=n?.onOutput,i=n?.onResourceProgress,c=n?.onStackComplete,l=await Promise.allSettled(e.map(async u=>{let p=Date.now(),d=await this.destroyStack(u,r,{onOutput:s?S=>s(S,u):void 0,onResourceProgress:i?S=>i(S,u):void 0,onLog:n?.onLog,onStackCleanupProgress:n?.onStackCleanupProgress},a,o),m=Date.now()-p,f=d.success?"":d.error?.message??"",g=f.includes(Ns)||f.includes(Cg),y={stack:u,success:d.success||g,error:d.success||g?void 0:d.error,duration:m};return!y.success&&y.error&&K.debug("destroyStacksInParallel",`Stack ${u} failed`,{error:y.error.message}),c?.(u,y.success,m,y.success?void 0:y.error),y}));return A(ore(l,e))}async getStackOutputs(e,r){let n=Wr(e,r),a=await this.cloudFormationService.getStackOutputs(n);return a.success?A(Z0(a.data)):v(new ni(`Failed to get outputs for ${n}`,{errorType:"stack_error",appName:e,operation:"getStackOutputs",stackType:r,details:a.error}))}async resolveWebsiteUrl(e){return lOe(e,this.cloudFormationService)}async destroyAllStacks(e,r,n,a){return are(this,e,r,n,a)}}});var pOe=b(()=>{"use strict";ire();sre()});var cre=b(()=>{"use strict";HRe();IU();IU();IU();pOe()});var lre=b(()=>{"use strict";_te();wg()});var mOe=b(()=>{"use strict"});function jU(t){let e=new Du(t.awsCredentials);e.exportToEnv();let r=new Ki,n=new $f(r,t.abortSignal),a=new Pu({processManager:n,...t.abortSignal!==void 0?{abortSignal:t.abortSignal}:{},...t.callbacks.onFailureAnalysis!==void 0?{onFailureAnalysis:t.callbacks.onFailureAnalysis}:{}}),o=new Vd(e),s=new Ff(e),i=new Mf(o),c=new fR(e),l=new qS(a,o,e),u=new zp,p=Bc.createDefault();return{awsProvider:e,cdkService:a,cfnService:o,ecsService:s,ecsResolver:i,ecrImageInspector:c,stackService:l,hashService:u,frameworkRegistry:p,...t.abortSignal!==void 0?{abortSignal:t.abortSignal}:{},dispose(){n.dispose()}}}var ure=b(()=>{"use strict";iU();Fte();iR();wU();DU();Bte();zte();kU();ire();Wte();BU()});import{join as Vg,relative as fOe}from"path";import{readdir as hOe}from"fs/promises";function JAt(t){return YAt.has(t)}async function XAt(t,e){let r=Vg(t,"fjall"),n=await hOe(r,{withFileTypes:!0}).catch(s=>{K.debug("resolveOperation","existing-app readdir failed",{fjallDir:r,error:String(s)})});if(n===void 0)return;let a=e.toLowerCase(),o=[];for(let s of n){if(!s.isDirectory()||s.name.toLowerCase()!==a)continue;let i=Vg(r,s.name);fOe(t,i).startsWith("..")||!(await kt(Vg(i,Ld))||await kt(Vg(i,"cdk.json")))||o.push({appName:s.name,path:i})}if(o.length!==0)return o.length>1?"ambiguous":o[0]}async function UU(t,e){K.debug("resolveOperation","called",{target:t,workingDirectory:e});let r=await kt(e);K.debug("resolveOperation","workingDirectory exists",{exists:r});let n=Vg(e,"fjall"),a=await kt(n);if(K.debug("resolveOperation","fjall/ dir check",{fjallDir:n,exists:a}),a&&K.isDebugEnabled())try{let l=await hOe(n);K.debug("resolveOperation","fjall/ contents",{entries:l})}catch(l){K.debug("resolveOperation","fjall/ readdir failed",{error:String(l)})}let o=t.toLowerCase();if(JAt(o)){let l=Vg(e,"fjall",o),u=await kt(l);return K.debug("resolveOperation","org type match",{normalisedTarget:o,orgPath:l,exists:u}),u?A({kind:"organisation",type:o,target:t,path:l}):v(new Error(`Organisation target "${t}" resolved to fjall/${o}/ but directory not found`))}if(o.startsWith("account-")){let l=o.slice(8);if(!pre.test(l))return v(new Error(`Invalid account target "${t}": suffix must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens`));let u=Vg(e,"fjall",$t.ACCOUNT),p=await kt(u);return K.debug("resolveOperation","account-prefixed target",{suffix:l,orgPath:u,exists:p}),p?A({kind:"organisation",type:$t.ACCOUNT,target:t,path:u}):v(new Error(`Organisation target "${t}" resolved to fjall/${$t.ACCOUNT}/ but directory not found`))}if(!pre.test(t)){let l=await XAt(e,t);return l==="ambiguous"?v(new Error(`Ambiguous target "${t}": multiple fjall/ folders match case-insensitively \u2014 rename so exactly one matches`)):l!==void 0?(K.debug("resolveOperation","resolved existing non-standard app",{target:t,appName:l.appName,path:l.path}),A({kind:"application",appName:l.appName,path:l.path})):(K.debug("resolveOperation","target failed pattern validation",{target:t,pattern:pre.source}),v(new Error(`Invalid target "${t}": must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens`)))}let s=Vg(e,"fjall",t),i=fOe(e,s);if(i.startsWith(".."))return v(new Error(`Invalid target "${t}": resolved path escapes working directory`));let c=await kt(s);return K.debug("resolveOperation","app path check",{appPath:s,exists:c,relative:i}),c?(K.debug("resolveOperation","resolved as application",{appName:t,path:s}),A({kind:"application",appName:t,path:s})):(K.debug("resolveOperation","FAILED \u2014 no match",{target:t,workingDirectory:e,checkedPath:s}),v(new Error(`Target "${t}" is not a recognised organisation type and no directory found at fjall/${t}`)))}var YAt,pre,dre=b(()=>{"use strict";xe();er();no();Ua();xl();YAt=new Set(Object.values($t));pre=bt.NEW_APP_NAME});import{readFile as ZAt,writeFile as mRr,unlink as fRr,rename as hRr,mkdir as gRr}from"fs/promises";import{readFileSync as QAt}from"fs";import{dirname as SRr,join as gOe}from"path";function HS(t){return gOe(t,Pp)}async function VU(t){let e=HS(t);if(!await kt(e))return null;try{let r=await ZAt(e,"utf-8"),n=JSON.parse(r),a=Z2.safeParse(n);return a.success||K.debug("FjallManifest","Manifest validation failed",{path:e,errors:a.error.issues.map(o=>`${o.path.join(".")}: ${o.message}`)}),a.success?a.data:null}catch(r){return K.debug("FjallManifest","Failed to read manifest file",{path:e,error:D(r)}),null}}function zU(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function e0t(t){if(!zU(t)||typeof t.path!="string"||t.path.length===0)return;let e=typeof t.context=="string"&&t.context.length>0?t.context:void 0,r=typeof t.target=="string"&&t.target.length>0?t.target:void 0,n=zU(t.buildArgs)&&Object.keys(t.buildArgs).length>0?t.buildArgs:void 0,a=Array.isArray(t.buildSecrets)&&t.buildSecrets.length>0?t.buildSecrets:void 0,o={path:t.path,...e!==void 0&&{context:e},...r!==void 0&&{target:r},...n!==void 0&&{buildArgs:n},...a!==void 0&&{buildSecrets:a}},s=gu.safeParse(o);return s.success?s.data:void 0}function qd(t){let e=gOe(t,Pp),r;try{r=QAt(e,"utf-8")}catch{return K.debug("FjallManifest","Manifest file not readable \u2014 no Docker services extracted",{path:e}),[]}let n;try{n=JSON.parse(r)}catch{return K.debug("FjallManifest","Manifest is not valid JSON \u2014 no Docker services extracted",{path:e}),[]}if(!zU(n)||!Array.isArray(n.services))return[];let a=[];for(let o of n.services){if(!zU(o)||typeof o.name!="string")continue;let s=e0t(o.docker);s!==void 0&&a.push({name:o.name,docker:s})}return a}var yOe=b(()=>{"use strict";er();Ua();kM();uR();sS()});var rC=b(()=>{"use strict";sS();yOe()});function fre(t,e){return t!==void 0&&t!==""&&e!==void 0&&e!==""&&t!==e}function _u(t){let e=fre(t.region,t.primaryRegion);return{...t.orgConfig!==void 0?{orgConfig:JSON.stringify(t.orgConfig)}:{},...t.identity!==void 0?{fjallOrgId:t.identity.fjallOrgId}:{},...t.skipOidc?{fjallOidcConfigured:!0}:{},...e?{fjallAccountGlobalsConfigured:!0}:{},...t.trailLifecycle!==void 0?{fjallAccountTrailState:o0t[t.trailLifecycle]}:{}}}function vOe(t,e,r,n){if(r!==void 0)return r;if(t==="account")return zd(e?.providerAccounts)?n===!0:!0}function Ms(t){return e=>t.onOutput?.(e)}function Wg(t){return e=>t.onResourceProgress?.(e)}function ER(t){if(!t.success||t.data.length===0)return;let e={};for(let r of t.data)r.OutputKey&&r.OutputValue!==void 0&&(e[r.OutputKey]=r.OutputValue);return Object.keys(e).length>0?e:void 0}function hre(t){return`arn:aws:iam::${t}:role/${SOe}`}function c0t(t,e){return e===void 0?ft(t):e.aborted?Promise.resolve():new Promise(r=>{let n=()=>{r()};e.addEventListener("abort",n,{once:!0}),ft(t).then(()=>{e.removeEventListener("abort",n),r()})})}async function Gg(t,e,r,n,a){if(!t.assumeRole)return v(new Error("AwsProvider does not support assumeRole"));let o=hre(e),s=t.assumeRole.bind(t),i;for(let l=0;l<=mre;l++)try{i=await s(o,n);break}catch(u){let p=u instanceof Error?u.name:void 0;if(p==="AccessDenied"||p==="AccessDeniedException")return v(new Error(`Access denied assuming ${SOe} in account ${e}. The role may not exist or may not trust the management account.`));if(l<mre){let d=Math.min(s0t*2**l,i0t);if(K.debug("assumeCascadeRole",`Attempt ${l+1} failed for account ${e}, retrying in ${Math.round(d/1e3)}s`,{error:E(D(u))}),await c0t(d,a),a?.aborted)return v(new Error(`Aborted while retrying assume-role for account ${e}`));continue}return v(new Error(`Failed to assume role in account ${e} after ${mre+1} attempts: ${E(D(u))}`))}if(!i)return v(new Error(`Failed to assume role in account ${e}`));let c=new Du({accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey,sessionToken:i.sessionToken,region:r,accountId:e});return A({provider:c,credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey,sessionToken:i.sessionToken}})}async function nC(t,e,r,n){let a=await t.cdkService.runCdkSynth(e,o=>r.onCdkOutput?.(o,"synth"));if(!a.success){let o=new Error(E(`${n}: ${a.error}`));return r.onError?.(o),v(o)}return A(void 0)}async function aC(t,e,r){r.onCDKBootstrap?.("bootstrapping");let n=await t.cdkService.runCdkBootstrap(e,Ms(r));if(!n.success){r.onCDKBootstrap?.("failed");let a=new Error(E(`Bootstrap failed: ${n.error}`));return r.onError?.(a),v(a)}return r.onCDKBootstrap?.("complete"),A(void 0)}var o0t,SOe,mre,s0t,i0t,jc=b(()=>{"use strict";xe();N();er();j0();iU();o0t={account:"active",draining:"draining",org:"removed"};SOe="OrganizationAccountAccessRole",mre=5,s0t=5e3,i0t=3e4});import{readFileSync as EOe}from"fs";import{join as bOe}from"path";function bR(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function xOe(t){let e=bOe(t,Pp),r;try{r=EOe(e,"utf-8")}catch{return K.debug("manifestSecretParser","Manifest file not readable \u2014 no secrets extracted",{path:e}),[]}let n;try{n=JSON.parse(r)}catch{return K.debug("manifestSecretParser","Manifest is not valid JSON \u2014 no secrets extracted",{path:e}),[]}if(!bR(n))return[];let a=[];if(Array.isArray(n.services))for(let o of n.services){if(!bR(o))continue;let s=o;if(!(!Array.isArray(s.secrets)||s.secrets.length===0||typeof s.ssmSecretsPath!="string"))for(let i of s.secrets)typeof i=="string"&&a.push(`${s.ssmSecretsPath}/${i}`)}if(Array.isArray(n.lambdas))for(let o of n.lambdas){if(!bR(o))continue;let s=o;if(!(!Array.isArray(s.secrets)||s.secrets.length===0||typeof s.ssmSecretsPath!="string"))for(let i of s.secrets)typeof i=="string"&&a.push(`${s.ssmSecretsPath}/${i}`)}return a}function AOe(t){let e=bOe(t,Pp),r;try{r=EOe(e,"utf-8")}catch{return K.debug("manifestSecretParser","Manifest file not readable \u2014 no imported secret names extracted",{path:e}),[]}let n;try{n=JSON.parse(r)}catch{return K.debug("manifestSecretParser","Manifest is not valid JSON \u2014 no imported secret names extracted",{path:e}),[]}if(!bR(n))return[];let a=new Set;for(let o of[n.services,n.lambdas])if(Array.isArray(o)){for(let s of o)if(!(!bR(s)||!Array.isArray(s.importedSecretNames)))for(let i of s.importedSecretNames)typeof i=="string"&&i!==""&&a.add(i)}return Array.from(a)}var COe=b(()=>{"use strict";uR();er()});import{SecretsManagerClient as l0t,DescribeSecretCommand as u0t}from"@aws-sdk/client-secrets-manager";async function wOe(t,e){let r=t.getClient(l0t),n={};for(let a of e)try{let o=(await r.send(new u0t({SecretId:a}),{abortSignal:$e(void 0,p0t)})).ARN;if(o===void 0||o==="")return v(new Error(`DescribeSecret for "${a}" returned no ARN \u2014 cannot resolve a complete ARN.`));n[a]=o}catch(o){let s=o instanceof Error?o.name:"";return s==="ResourceNotFoundException"?v(new Error(`Imported secret "${a}" does not exist in this account/region. Create it, or reference it by complete ARN via the secretsImport { arn } escape hatch.`)):s==="AccessDeniedException"||s==="AccessDenied"?v(new Error(`The deploy identity lacks secretsmanager:DescribeSecret on "${a}" \u2014 grant DescribeSecret on this secret so its complete ARN can be resolved.`)):v(new Error(`Failed to resolve imported secret "${a}": ${E(D(o))}`))}return A(n)}var p0t,TOe=b(()=>{"use strict";xe();N();ar();p0t=3e4});import{join as d0t}from"path";async function DOe(t,e,r,n){n.onDetectionPhaseChange?.("detect","started");let a=e.frameworkRegistry.resolve({appPath:t.path}),o=a?.detection.pattern??null,s=a?.detection.hasDatabase??!1;n.onLog?.(`Pattern detected: ${o??"standard"}`,"info"),n.onDetectionPhaseChange?.("detect","completed");let i=d0t(t.path,"cdk.out");n.onDetectionPhaseChange?.("synth","started"),Bg(n,X0.SYNTH);let c=await e.cdkService.runCdkSynth(r,w=>n.onCdkOutput?.(w,"synth"));if(!c.success)return v(new Error(E(`CDK synthesis failed: ${c.error}`)));if(n.onDetectionPhaseChange?.("synth","completed"),r.resolvedSecretArns===void 0){let w=AOe(i);if(w.length>0){n.onLog?.(`Resolving ${w.length} imported secret ARN(s)\u2026`,"info");let T=await wOe(e.awsProvider,w);if(!T.success)return v(new Error(E(T.error.message)));r.resolvedSecretArns=JSON.stringify(T.data);let P=await e.cdkService.runCdkSynth(r,_=>n.onCdkOutput?.(_,"synth"));if(!P.success)return v(new Error(E(`CDK synthesis failed: ${P.error}`)))}}let l=xOe(i);l.length>0&&n.onLog?.(`Found ${l.length} required secret path(s) in manifest`,"info"),n.onDetectionPhaseChange?.("hash","started"),Bg(n,X0.HASH);let u=await e.hashService.getTemplateHashes(i);if(!u.success)return v(new Error(E(`Template hash computation failed: ${u.error.message}`)));let p=u.data,d=await e.hashService.compareWithState(p,t.path);if(!d.success)return v(new Error(E(`Hash comparison failed: ${d.error.message}`)));let m=d.data;n.onDetectionPhaseChange?.("hash","completed");let f=new Map(m.stackChanges);for(let[w,T]of m.stackChanges)T||await e.cfnService.stackExists(w)||(K.debug("detectionPipeline","Stale hash detected \u2014 stack missing in CFN",{stackName:w}),f.set(w,!0));let g=Array.from(p.keys()),y=TS(g),S=qd(i),x=y.hasCompute&&S.length>0,C=Array.from(f.values()).some(Boolean);return n.onLog?.(`Detection complete: ${m.changedCount} changed, ${m.unchangedCount} unchanged`,"info"),A({pattern:o,hasDatabase:s,hasDifferences:C,stackChanges:f,currentHashes:p,resources:y,hasDockerfile:x,requiredSecrets:l})}var kOe=b(()=>{"use strict";xe();er();N();A0();gR();COe();TOe();rC()});var nOr,go,gre=b(()=>{"use strict";PS();PS();nOr={Network:oe.NETWORK_DESTROY,Storage:oe.STORAGE_DESTROY,Messaging:oe.MESSAGING_DESTROY,Database:oe.DATABASE_DESTROY,Compute:oe.COMPUTE_DESTROY,Cdn:oe.CDN_DESTROY},go=class{static DEPLOYMENT_STEPS=new Map([["application-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.DETECT_CONFIG,name:lr.PREPARE_DEPLOY},{id:oe.TARGET_READINESS,name:lr.TARGET_READINESS,conditions:{requiresInfra:!0}},{id:oe.BOOTSTRAP,name:lr.BOOTSTRAP,conditions:{requiresInfra:!0}},{id:Yr(ge.NETWORK,"deploy"),name:Kr(ge.NETWORK,"deploy"),conditions:{requiresInfra:!0,requiresNetwork:!0}},{id:Yr(ge.STORAGE,"deploy"),name:Kr(ge.STORAGE,"deploy"),conditions:{requiresInfra:!0,requiresStorage:!0}},{id:Yr(ge.MESSAGING,"deploy"),name:Kr(ge.MESSAGING,"deploy"),conditions:{requiresInfra:!0,requiresMessaging:!0}},{id:Yr(ge.DATABASE,"deploy"),name:Kr(ge.DATABASE,"deploy"),conditions:{requiresInfra:!0,requiresDatabase:!0}},{id:oe.DOCKER_OPERATIONS,name:"Docker operations",conditions:{requiresDocker:!0,requiresCompute:!0,skipForInfraOnly:!0}},{id:oe.TAG_ECR_IMAGES,name:"Tagging container images",conditions:{requiresImageTagging:!0,requiresCompute:!0,skipForInfraOnly:!0}},{id:Yr(ge.COMPUTE,"deploy"),name:Kr(ge.COMPUTE,"deploy"),conditions:{requiresInfra:!0,requiresCompute:!0}},{id:Yr(ge.CDN,"deploy"),name:Kr(ge.CDN,"deploy"),conditions:{requiresInfra:!0,requiresCdn:!0}}]],["application-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.DETECT_CONFIG,name:lr.CHECK_INFRA_STATE},{id:Yr(ge.CDN,"destroy"),name:Kr(ge.CDN,"destroy"),conditions:{requiresCdn:!0}},{id:Yr(ge.COMPUTE,"destroy"),name:Kr(ge.COMPUTE,"destroy")},{id:Yr(ge.DATABASE,"destroy"),name:Kr(ge.DATABASE,"destroy")},{id:Yr(ge.MESSAGING,"destroy"),name:Kr(ge.MESSAGING,"destroy"),conditions:{requiresMessaging:!0}},{id:Yr(ge.STORAGE,"destroy"),name:Kr(ge.STORAGE,"destroy"),conditions:{requiresStorage:!0}},{id:Yr(ge.NETWORK,"destroy"),name:Kr(ge.NETWORK,"destroy")}]],["organisation-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.ORG_SETUP,name:lr.ORG_SETUP},{id:oe.PREPARE_ENVIRONMENT,name:Os.PREPARE},{id:oe.ORG_DEPLOY,name:lr.ORG_DEPLOY,conditions:{requiresOrgChanges:!0}},{id:oe.CASCADE_PLATFORM,name:lr.CASCADE_PLATFORM,conditions:{requiresPlatformAccount:!0}},{id:oe.CASCADE_ACCOUNTS,name:lr.CASCADE_ACCOUNTS,conditions:{requiresMemberAccounts:!0}}]],["organisation-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CFN_CHECK,name:lr.CHECK_INFRA_STATE},{id:oe.CASCADE_ACCOUNTS,name:"Destroying account infrastructure",conditions:{requiresMemberAccounts:!0}},{id:oe.CASCADE_PLATFORM,name:"Destroying platform infrastructure",conditions:{requiresPlatformAccount:!0}},{id:oe.DESTROY,name:"Destroying organisation infrastructure"}]],["platform-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CONNECT,name:Os.CONNECT},{id:oe.PREPARE_ENVIRONMENT,name:Os.PREPARE},{id:oe.DEPLOY,name:Os.DEPLOY},{id:oe.MONITORING,name:Os.MONITORING}]],["platform-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CFN_CHECK,name:"Checking infrastructure state"},{id:oe.ORG_DESTROY,name:"Destroying platform infrastructure"}]],["account-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CONNECT,name:Os.CONNECT},{id:oe.PREPARE_ENVIRONMENT,name:Os.PREPARE},{id:oe.DEPLOY,name:Os.DEPLOY},{id:oe.MONITORING,name:Os.MONITORING}]],["account-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CFN_CHECK,name:"Checking infrastructure state"},{id:oe.ORG_DESTROY,name:"Destroying account infrastructure"}]]]);static getSteps(e){if(e.deploymentType==="application"&&e.operation==="deploy"&&e.deployOnly)return[{id:oe.AUTH,name:lr.AUTH},{id:oe.DOCKER_OPERATIONS,name:"Build and push Docker container"},{id:Yr(ge.COMPUTE,"deploy"),name:Kr(ge.COMPUTE,"deploy")}];let r=`${e.deploymentType}-${e.operation}`;return(this.DEPLOYMENT_STEPS.get(r)??[]).filter(n=>{if(e.deploymentType==="application"){let a=e.builderName==="opennext";if(n.conditions?.requiresInfra&&e.deployOnly)return!1;if(e.resources){let o=e.resources;if(n.conditions?.requiresNetwork&&!o.hasNetwork||n.conditions?.requiresCompute&&!o.hasCompute||n.conditions?.requiresDatabase&&!o.hasDatabase||n.conditions?.requiresStorage&&!o.hasStorage||n.conditions?.requiresMessaging&&!o.hasMessaging||n.conditions?.requiresCdn&&!o.hasCdn)return!1}else if(e.operation==="deploy"&&!a&&(n.conditions?.requiresNetwork||n.conditions?.requiresCompute||n.conditions?.requiresDatabase||n.conditions?.requiresStorage||n.conditions?.requiresMessaging||n.conditions?.requiresCdn))return!1;if(n.conditions?.requiresDocker||n.id===oe.DOCKER_OPERATIONS)return a||e.infraOnly||e.resources&&!e.resources.hasCompute?!1:e.deployOnly?e.hasDockerfile===!0:e.hasDockerfile===!0||e.hasDockerfile===!1&&!e.isManagedAccount;if(n.conditions?.requiresImageTagging)return e.infraOnly||a||e.resources&&!e.resources.hasCompute?!1:e.hasDockerfile===!1}return!(n.conditions?.requiresMemberAccounts&&!e.hasMemberAccounts||n.conditions?.requiresPlatformAccount&&!e.hasPlatformAccount||n.conditions?.requiresOrgChanges&&e.hasOrgChanges!==!0||n.conditions?.requiresPlatformChanges&&e.hasPlatformChanges!==!0||n.conditions?.requiresAccountChanges&&e.hasAccountChanges!==!0||n.conditions?.requiresDomainConfiguration&&!e.hasDomainConfiguration||n.conditions?.requiresDomainChanges&&e.hasDomainChanges!==!0)}).map(n=>n.id===oe.DOCKER_OPERATIONS?{...n,name:e.hasDockerfile?"Building and pushing Docker image":"Initialising container repository"}:n)}static getStepNames(e){return this.getSteps(e).map(r=>r.name)}static getStepIndex(e,r){return this.getSteps(r).findIndex(n=>n.id===e)}static getStepById(e,r="application"){let n=`${r}-deploy`,a=(this.DEPLOYMENT_STEPS.get(n)||[]).find(s=>s.id===e);if(a)return a;let o=`${r}-destroy`;return(this.DEPLOYMENT_STEPS.get(o)||[]).find(s=>s.id===e)}static isStepIncluded(e,r){return this.getSteps(r).some(n=>n.id===e)}static createContext(e,r,n){return{deploymentType:e,operation:r,deployOnly:n?.deployOnly??!1,infraOnly:n?.infraOnly??!1,isManagedAccount:n?.isManagedAccount??!1,hasDockerfile:n?.hasDockerfile??!1,pattern:n?.pattern??null,builderName:n?.builderName,resources:n?.resources}}static getDeploymentTypes(){return["application","organisation","platform","account"]}static getStackNames(e){switch(e){case"application":return[...S0];case"organisation":return["Organisation"];case"platform":return["Platform"];case"account":return["Account"];default:return[]}}static getInfraStepIds(){return[oe.CFN_CHECK,oe.TARGET_READINESS,oe.BOOTSTRAP,oe.DIFF,oe.NETWORK,oe.STORAGE,oe.MESSAGING,oe.DATABASE,oe.COMPUTE,oe.CDN]}static getDockerStepIds(){return[oe.ECR_INIT,oe.DOCKER_DEPLOY]}}});import{join as IOe}from"path";import{BackupClient as m0t}from"@aws-sdk/client-backup";function Uc(t){let e=t.find(n=>Lt(n)==="platform"),r=t.filter(n=>Lt(n)==="account");return{platformAccount:e,memberAccounts:r}}function Lf(t){let e=t?.primaryRegion??ze,r=t?.secondaryRegions??[],n=new Set([e,...r]),a=t?.disasterRecoveryRegion;return a&&n.add(a),[...n]}function Ru(t){return Lf(t)[0]??ze}function KS(t,e){return`${t} (${e})`}function oC(t,e){let r=[];for(let n of e)for(let a of t)r.push({account:a,region:n});return r}async function POe(t,e,r,n){r.onLog?.(`Verifying cascade role access for ${e.length} account(s)\u2026`,"info");let a=await kd(e,xR,async s=>Gg(t.awsProvider,s.id,s.region??t.awsProvider.getRegion(),`fjall-preflight-${s.name}`,n)),o=[];return a.forEach((s,i)=>{let c=e[i];if(c){if(s.status==="rejected"){o.push({accountId:c.id,accountName:c.name,error:s.reason instanceof Error?s.reason.message:String(s.reason)});return}s.value.success||o.push({accountId:c.id,accountName:c.name,error:s.value.error.message})}}),o.length===0&&r.onLog?.(`Cascade role access verified for ${e.length} account(s)`,"info"),o}async function yre(t,e,r,n,a,o,s){let i=s?.region??n.region??e.awsProvider.getRegion(),c=KS(n.name,i),l=s?.orgConfig??t.orgConfig,u=s?.ipamPoolId;o.onCascadeAccountStart?.(c,n.id,i,a);let p=await Gg(e.awsProvider,n.id,i,`fjall-cascade-${n.name}`,t.abortSignal);if(!p.success)return o.onCascadeAccountComplete?.(c,!1,E(p.error.message),i),v(new Error(`Failed to assume role for ${n.name}: ${E(p.error.message)}`));let{provider:d,credentials:m}=p.data,f=IOe(t.workingDirectory,"fjall",a==="platform"?$t.PLATFORM:$t.ACCOUNT),g=IOe(f,`cdk.out.${n.id}.${Tg(i)}`),y=Fs.buildDeploymentContext({deployType:a,target:r.target,path:f,assemblyDir:g,environment:n.environment??void 0,region:i,accountName:n.name,callerIdentity:zi(n.id),ipamPoolId:u,..._u({orgConfig:l,identity:t.identity,skipOidc:t.options?.skipOidc,region:i,primaryRegion:s?.primaryRegion,trailLifecycle:n.trailLifecycle})},{verbose:t.options?.verbose},l);if(V0(n.environment,l?.disasterRecoveryRegion)){let M=await hU(d.getClient(m0t),t.abortSignal);if(!M.success)return o.onCascadeAccountComplete?.(c,!1,E(M.error.message),i),v(new Error(`Backup vault probe failed for ${n.name}: ${E(M.error.message)}`));y.fjallAdoptBackupVault=M.data}o.onCascadeAccountPhaseChange?.(c,"synth",i);let S=await e.cdkService.runCdkSynth(y,Ms(o),m);if(!S.success)return o.onCascadeAccountComplete?.(c,!1,E(`Synth failed: ${S.error}`),i),v(new Error(`Synth failed for ${n.name}: ${E(S.error)}`));let x=wn(a==="platform"?$t.PLATFORM:$t.ACCOUNT),C=ADe(f,n.id,i),w=new Vd(d),{changed:T,currentHash:P}=await e.hashService.compareCascadeStack(g,x,C);if(!T&&t.options?.force!==!0&&await w.stackExists(x)){let M=await w.getStackOutputs(x);M.success||K.debug("cascadeHelpers","Failed to read outputs for skipped cascade account (non-critical)",{stackName:x,account:n.name});let U=ER(M);return o.onLog?.(`${n.name}: no infrastructure changes \u2014 skipping deploy`,"info"),o.onCascadeAccountComplete?.(c,!0,void 0,i,U,!0),A({outputs:U,skipped:!0})}o.onCascadeAccountPhaseChange?.(c,"bootstrap",i);let _=await e.cdkService.runCdkBootstrap(y,Ms(o),m);if(!_.success)return o.onCascadeAccountComplete?.(c,!1,E(`Bootstrap failed: ${_.error}`),i),v(new Error(`Bootstrap failed for ${n.name}: ${E(_.error)}`));o.onCascadeAccountPhaseChange?.(c,"deploy",i);let R=await e.cdkService.runCdkDeploy(y,x,Ms(o),M=>o.onCascadeAccountResourceProgress?.(c,M,i),d,m);if(!R.success)return o.onCascadeAccountComplete?.(c,!1,E(R.error),i),v(new Error(E(R.error)));let O=await w.getStackOutputs(x);O.success||K.debug("cascadeHelpers","Failed to read cascade account stack outputs (non-critical)",{stackName:x,account:n.name});let $=ER(O);return P!==void 0&&((await e.hashService.persistCascadeStack(C,x,P)).success||K.debug("cascadeHelpers","Failed to persist cascade hash state (non-critical)",{stackName:x,account:n.name})),o.onCascadeAccountComplete?.(c,!0,void 0,i,$,!1),A({outputs:$,skipped:!1})}async function _Oe(t,e,r,n){let a=new Map,o=t.awsProvider.getRegion(),s=await Gg(t.awsProvider,e.id,o,`fjall-ipam-read-${e.name}`,n);if(!s.success)return K.debug("organisationDeploy",`Cannot read Platform outputs: ${s.error.message}`),a;let i=new Vd(s.data.provider),c=wn($t.PLATFORM),l=await i.getStackOutputs(c);if(!l.success)return K.debug("organisationDeploy",`Failed to read Platform stack outputs: ${l.error.message}`),a;let u=/^IpamPoolId(\d{12})(\w+)$/;for(let p of l.data){let d=p.OutputKey?.match(u);if(d&&p.OutputValue){let m=`${d[1]}-${d[2]}`;a.set(m,p.OutputValue)}}return a.size>0&&r.onLog?.(`Read ${a.size} IPAM pool ID(s) from Platform stack`,"info"),a}async function ROe(t,e){let r=t.getDomains();if(r.length===0)return{domainsDeployed:0,errors:[]};e.onCascadePhaseStart?.("domains");let n=r.filter(i=>i.type==="apex"),a=r.filter(i=>i.type==="delegated"),o=0,s=[];for(let i of n){let c=await t.deployDomain(i.name,e);c.success?o++:s.push(`${i.name}: ${c.error.message}`)}if(a.length>0){let i=await Promise.allSettled(a.map(c=>t.deployDomain(c.name,e)));for(let c=0;c<i.length;c++){let l=i[c],u=a[c];if(!(!l||!u))if(l.status==="fulfilled")l.value.success?o++:s.push(`${u.name}: ${l.value.error.message}`);else{let p=l.reason instanceof Error?l.reason.message:String(l.reason);s.push(`${u.name}: ${p}`)}}}return e.onCascadePhaseComplete?.("domains"),{domainsDeployed:o,errors:s}}var xR,qg=b(()=>{"use strict";xe();er();N();no();Lg();xf();DU();IS();W0();jc();N();bU();jc();xR=4});async function sC(t,e,r,n){t.onStepStart?.(e.stepId,e.stepName,e.stepIndex,e.totalSteps);let a;try{a=await r()}catch(o){let s=o instanceof Error?o:new Error(String(o));return OOe(t,e,s,n)}return a.kind==="error"?OOe(t,e,a.error,n):(t.onStepComplete?.(e.stepId,e.stepName,a.kind,e.stepIndex,e.totalSteps),A(a.data))}function OOe(t,e,r,n){let a=Gt(n);return t.onStepComplete?.(e.stepId,e.stepName,a?"cancelled":"error",e.stepIndex,e.totalSteps),a||t.onError?.(r),v(r)}var WU=b(()=>{"use strict";xe();ar()});var Ou,YS,iC,vre,Sre,Bf=b(()=>{"use strict";Ou="DockerCli",YS="DockerCli.buildx",iC="0.13.0",vre="fjall",Sre="docker"});var Ere,TOr,bre,f0t,h0t,xre=b(()=>{"use strict";Mt();Ere=h.enum(["buildx_unavailable","daemon_unreachable","build_failed","push_failed","pull_failed","tag_failed","inspect_failed","auth_failed","abort","timeout","validation","metadata_missing","metadata_malformed","metadata_missing_digest"]),TOr=new Set(Ere.options),bre=h.object({contextPath:h.string().min(1),dockerfilePath:h.string().min(1),target:h.string().min(1).optional(),platforms:h.array(h.string().min(1)).min(1),tags:h.array(h.string().min(1)),buildArgs:h.record(h.string(),h.string()),cacheFrom:h.array(h.string().min(1)).optional(),cacheTo:h.array(h.string().min(1)).optional(),secrets:h.array(h.object({id:h.string().min(1),source:h.discriminatedUnion("kind",[h.object({kind:h.literal("file"),path:h.string().min(1)}).strict(),h.object({kind:h.literal("env"),name:h.string().min(1)}).strict()])}).strict()).optional(),dockerfileChecks:h.array(h.string().min(1)).optional(),provenance:h.boolean(),sbom:h.boolean(),push:h.boolean(),load:h.boolean(),pushByDigest:h.boolean().optional(),imageName:h.string().min(1).optional(),builder:h.string().min(1,"Builder name cannot be empty").optional(),metadataFile:h.string().min(1)}).strict().refine(t=>!(t.platforms.length>1&&t.load),{message:"Multi-arch builds cannot use load:true (Docker limitation); use push:true or omit both for cache-only"}).refine(t=>!(t.push&&t.load),{message:"push and load are mutually exclusive"}).refine(t=>t.pushByDigest!==!0||t.imageName!==void 0,{message:"pushByDigest requires imageName (the registry repo to push to)"}).refine(t=>t.pushByDigest===!0||t.tags.length>=1,{message:"tags must be non-empty unless pushByDigest is set"}),f0t=h.object({digest:h.string(),imageDigests:h.record(h.string(),h.string()),metadata:h.record(h.string(),h.unknown()),platforms:h.array(h.string()),cacheHits:h.number().int().nonnegative(),cacheMisses:h.number().int().nonnegative()}).strict(),h0t=h.object({kind:Ere,message:h.string(),stderrTail:h.array(h.string()).optional(),details:h.unknown().optional()}).strict()});function Are(t){let e=["buildx","build"];e.push("--builder",t.builder??vre),e.push("--progress=rawjson"),e.push("--metadata-file",t.metadataFile),e.push("--platform",t.platforms.join(","));for(let r of t.tags)e.push("-t",r);e.push("-f",t.dockerfilePath),t.pushByDigest===!0&&t.imageName!==void 0&&e.push("--output",`type=image,name=${t.imageName},push-by-digest=true,push=true`);for(let[r,n]of Object.entries(t.buildArgs))e.push("--build-arg",`${r}=${n}`);if(t.dockerfileChecks!==void 0&&t.dockerfileChecks.length>0&&e.push("--build-arg",`BUILDKIT_DOCKERFILE_CHECK=${t.dockerfileChecks.join(";")}`),t.target!==void 0&&e.push("--target",t.target),t.cacheFrom!==void 0)for(let r of t.cacheFrom)e.push("--cache-from",r);if(t.cacheTo!==void 0)for(let r of t.cacheTo)e.push("--cache-to",r);if(t.secrets!==void 0)for(let r of t.secrets){let n=r.source.kind==="file"?`src=${r.source.path}`:`env=${r.source.name}`;e.push("--secret",`id=${r.id},${n}`)}return e.push(`--provenance=${t.provenance?"true":"false"}`),e.push(`--sbom=${t.sbom?"true":"false"}`),t.pushByDigest!==!0&&(t.push&&e.push("--push"),t.load&&e.push("--load")),e.push(t.contextPath),e}var Cre=b(()=>{"use strict";Bf()});function cC(t){return GU.some(e=>t.startsWith(e))}var GU,wre=b(()=>{"use strict";GU=["VITE_","NEXT_PUBLIC_","PUBLIC_"]});function AR(t,e){let r=[],n=[];if(t===void 0)return{findings:r,warnings:n};for(let[a,o]of Object.entries(t)){if(typeof o=="object"){if(o.acknowledgePublic===!0)continue;if(o.ssm!==void 0||o.secretsManager!==void 0){r.push({key:a,reason:"sourced-ref",message:`buildArg "${a}" (app "${e}") is sourced from a secret store (SSM/Secrets Manager) but baked via --build-arg \u2014 ${Hg}. Move it to docker.buildSecrets (BuildKit --secret mount, never baked), or, if the value is genuinely public-but-sensitive and must ship in the client bundle, set acknowledgePublic: true to bake it deliberately.`});continue}cC(a)||n.push({key:a,message:NOe(a)});continue}if(E(o)!==o){r.push({key:a,reason:"credential-shape",message:$Oe(a,e)});continue}cC(a)||n.push({key:a,message:NOe(a)})}return{findings:r,warnings:n}}function NOe(t){return`buildArg "${t}" does not start with a public prefix (${GU.join(", ")}) and is frozen into the image at build time \u2014 ${Hg}. If this value should vary per deploy, use a runtime env var (ECS task environment) instead of baking it.`}function $Oe(t,e){return`buildArg "${t}" (app "${e}") has a value that looks like a credential but would be baked via --build-arg \u2014 ${Hg}. Move it to docker.buildSecrets (BuildKit --secret mount, never baked). If it is a genuinely public-but-sensitive value, use the object form { ssm/secretsManager/env, acknowledgePublic: true } to bake it deliberately.`}function CR(t){let e=new Set;if(t===void 0)return e;for(let[r,n]of Object.entries(t))typeof n=="object"&&n.acknowledgePublic===!0&&e.add(r);return e}function wR(t,e,r){let n=[];for(let[a,o]of Object.entries(t))r.has(a)||E(o)!==o&&n.push({key:a,reason:"credential-shape",message:$Oe(a,e)});return n}var Hg,FOe=b(()=>{"use strict";Dp();wre();Hg="baked values are world-readable in `docker history`, image provenance/SBOM, and the `<app>-cache` mode=max ECR cache repo"});function Tre(t){let e=t.trim();if(e==="")return null;let r;try{r=JSON.parse(e)}catch{return null}if(r===null||typeof r!="object"||Array.isArray(r))return null;let n=r,a={};for(let[o,s]of Object.entries(n))g0t.has(o)||(a[o]=s);return{...Array.isArray(n.vertexes)&&{vertexes:n.vertexes},...Array.isArray(n.statuses)&&{statuses:n.statuses},...Array.isArray(n.logs)&&{logs:n.logs},...Array.isArray(n.warnings)&&{warnings:n.warnings},extra:a}}var g0t,Dre=b(()=>{"use strict";g0t=new Set(["vertexes","statuses","logs","warnings"])});function y0t(t){return typeof t.digest!="string"||t.digest===""||typeof t.name!="string"||t.name===""?null:{digest:t.digest,name:t.name,...typeof t.started=="string"&&{started:t.started},...typeof t.completed=="string"&&{completed:t.completed},...typeof t.cached=="boolean"&&{cached:t.cached},...typeof t.error=="string"&&{error:t.error},...Array.isArray(t.inputs)&&{inputs:t.inputs}}}function v0t(t){return typeof t.id!="string"||t.id===""||typeof t.vertex!="string"||t.vertex===""||typeof t.name!="string"||typeof t.current!="number"?null:{id:t.id,vertex:t.vertex,name:t.name,current:t.current,...typeof t.total=="number"&&{total:t.total},...typeof t.started=="string"&&{started:t.started},...typeof t.completed=="string"&&{completed:t.completed}}}function S0t(t){if(typeof t.vertex!="string"||t.vertex===""||typeof t.data!="string")return null;let e=t.stream===2?"stderr":"stdout";return{vertex:t.vertex,stream:e,data:t.data,...typeof t.timestamp=="string"&&{timestamp:t.timestamp}}}function E0t(t){return typeof t.vertex!="string"||t.vertex===""||typeof t.short!="string"?null:{vertex:t.vertex,level:typeof t.level=="string"?t.level:"warning",short:t.short}}function kre(t){let e=[];for(let o of t.vertexes??[]){let s=y0t(o);s!==null&&e.push(s)}let r=[];for(let o of t.statuses??[]){let s=v0t(o);s!==null&&r.push(s)}let n=[];for(let o of t.logs??[]){let s=S0t(o);s!==null&&n.push(s)}let a=[];for(let o of t.warnings??[]){let s=E0t(o);s!==null&&a.push(s)}return e.length===0&&r.length===0&&n.length===0&&a.length===0?null:{vertexes:e,statuses:r,logs:n,warnings:a}}var Ire=b(()=>{"use strict"});import{spawnSync as b0t}from"node:child_process";function qU(t,e=process.platform){if(t.pid===void 0)return;if(t.stdout&&t.stdout.destroy(),t.stderr&&t.stderr.destroy(),e==="win32"){b0t("taskkill",["/T","/F","/PID",String(t.pid)],{shell:!1});return}t.kill("SIGTERM");let r=setTimeout(()=>{t.killed||t.kill("SIGKILL")},5e3);t.once("exit",()=>clearTimeout(r))}var Pre=b(()=>{"use strict";Bf()});import{rm as x0t}from"node:fs/promises";function BOe(t){return t instanceof Error?t.message:String(t)}async function jOe(t,e,r){let n=bre.safeParse(e);if(!n.success){let u=E(n.error.message);return it(Vt("validation",`Invalid BuildxBuildArgs: ${u}`,{issues:n.error.issues}))}let a=Are(n.data),o=0,s=0,i=new Set,c=u=>{let p=Tre(u);if(p===null){u.trim()!==""&&t.logger.debug(YS,"Skipping malformed rawjson line",{line:E(u)});return}let d=kre(p);if(d!==null){for(let m of d.vertexes)m.completed!==void 0&&!i.has(m.digest)&&(i.add(m.digest),m.cached===!0?o++:s++),r({type:"vertex",message:Kg(m.name),vertex:m.digest});for(let m of d.logs)r({type:"log",message:Kg(m.data),vertex:m.vertex});for(let m of d.statuses)r({type:"status",message:Kg(`${m.name} ${m.current}`),vertex:m.vertex});for(let m of d.warnings)r({type:"warning",message:Kg(m.short),vertex:m.vertex})}},l;try{l=n.data.metadataFile;let u=await TR(t,{args:a,timeoutMs:6e5},c);if(u.spawnError!==void 0)return it(Vt("daemon_unreachable",`Docker CLI is not available: ${u.spawnError}`,{stderrTail:u.stderrTail}));if(u.aborted||u.exitCode===null)return it(Vt("abort","docker buildx build was aborted",{stderrTail:u.stderrTail}));if(u.exitCode!==0)return it(Vt("build_failed",`docker buildx build failed (exit ${u.exitCode})`,{stderrTail:u.stderrTail}));let p=await _re(n.data.metadataFile);if(!p.success)return p;let d=p.data,m=d["containerimage.digest"];if(typeof m!="string"||m==="")return it(Vt("metadata_missing_digest","Buildx metadata file does not contain containerimage.digest",{metadataFile:n.data.metadataFile}));let f={};for(let g of n.data.tags)f[g]=m;return Ia({digest:m,imageDigests:f,metadata:d,platforms:n.data.platforms,cacheHits:o,cacheMisses:s})}finally{l!==void 0&&await x0t(l,{force:!0}).catch(u=>{t.logger.warn(YS,"Failed to clean up buildx metadata file",{path:l,error:E(BOe(u))})})}}async function UOe(t,e,r,n){if(e.trim()==="")return it(Vt("validation","tagByDigest: sourceImage must be non-empty"));if(!r.startsWith("sha256:"))return it(Vt("validation",`tagByDigest: expected sha256:... digest, got ${r.slice(0,32)}`));if(n.length===0)return it(Vt("validation","tagByDigest: tags must be a non-empty list"));for(let c of n)if(typeof c!="string"||c.trim()==="")return it(Vt("validation","tagByDigest: every tag must be non-empty"));let a=`${e}@${r}`,o=[];for(let c of n)o.push("--tag",c);let s=["buildx","imagetools","create",...o,a],i=await wl(t,{args:s,timeoutMs:3e4});return i.spawnError!==void 0?it(zc(i)):i.exitCode===null?it(Vt("abort",`docker buildx imagetools create for ${a} was aborted`,{stderrTail:i.stderrTail})):i.exitCode!==0?it(Vt("tag_failed",`docker buildx imagetools create for ${a} failed (exit ${i.exitCode})`,{stderrTail:i.stderrTail})):Ia(void 0)}async function zOe(t,e){let r=await wl(t,{args:["buildx","imagetools","inspect",e,"--raw"],timeoutMs:3e4});if(r.spawnError!==void 0)return it(Vt("daemon_unreachable",`Docker CLI is not available: ${r.spawnError}`,{stderrTail:r.stderrTail}));if(r.exitCode===null)return it(Vt("abort",`docker buildx imagetools inspect ${e} was aborted`,{stderrTail:r.stderrTail}));if(r.exitCode!==0)return it(Vt("inspect_failed",`docker buildx imagetools inspect ${e} failed (exit ${r.exitCode})`,{stderrTail:r.stderrTail}));let n,a;try{let o=JSON.parse(r.stdout);typeof o.mediaType=="string"&&(n=o.mediaType),typeof o.digest=="string"&&(a=o.digest)}catch(o){t.logger.debug(YS,"imagetools inspect output is not JSON; preserving raw",{error:E(BOe(o))})}return Ia({raw:r.stdout,...n!==void 0&&{mediaType:n},...a!==void 0&&{digest:a}})}var VOe=b(()=>{"use strict";Cre();xre();Bf();Rre();Dre();Ire();Dp();JS()});function WOe(t){let e=t.startsWith("v")?t.slice(1):t,r=/^(\d+)\.(\d+)\.(\d+)/.exec(e);return r===null?null:[parseInt(r[1]??"0",10),parseInt(r[2]??"0",10),parseInt(r[3]??"0",10)]}function A0t(t,e){for(let r=0;r<3;r++){let n=t[r]??0,a=e[r]??0;if(n!==a)return n-a}return 0}function C0t(t){let e=/github\.com\/docker\/buildx\s+(v?\d+\.\d+\.\d+)/.exec(t);return e!==null&&e[1]!==void 0?e[1]:/(\d+\.\d+\.\d+)/.exec(t)?.[1]??null}async function GOe(t){let e=await wl(t,{args:["buildx","version"],timeoutMs:3e4});if(e.spawnError!==void 0)return it(zc(e));if(e.exitCode===null)return it(Vt("abort","docker buildx version was aborted",{stderrTail:e.stderrTail}));if(e.exitCode!==0){let o=await wl(t,{args:["version","--format","{{.Server.Version}}"],timeoutMs:1e4});return o.spawnError!==void 0?it(zc(o)):o.exitCode!==0?it(Vt("daemon_unreachable","Docker daemon is not running or not installed",{stderrTail:o.stderrTail})):it(Vt("buildx_unavailable",`Docker Buildx plugin is not installed (need >= ${iC})`,{stderrTail:e.stderrTail}))}let r=C0t(e.stdout);if(r===null)return it(Vt("buildx_unavailable","Could not parse docker buildx version output",{stdout:e.stdout}));let n=WOe(r),a=WOe(iC);return n===null||a===null?it(Vt("buildx_unavailable",`Could not parse buildx version "${r}"`,{stdout:e.stdout})):A0t(n,a)<0?it(Vt("buildx_unavailable",`Docker Buildx ${r} is below the required ${iC} floor`,{observed:r,floor:iC})):(t.logger.debug(YS,"buildx available",{version:r}),Ia({version:r}))}async function qOe(t){let e=await wl(t,{args:["version","--format","json"],timeoutMs:1e4});if(e.spawnError!==void 0)return it(zc(e));if(e.exitCode===null)return it(Vt("abort","docker version was aborted",{stderrTail:e.stderrTail}));if(e.exitCode!==0)return it(Vt("daemon_unreachable","Docker daemon is not running or not installed",{stderrTail:e.stderrTail}));let r;try{r=JSON.parse(e.stdout)}catch(s){let i=E(s instanceof Error?s.message:String(s));return it(Vt("daemon_unreachable",`docker version output is not valid JSON: ${i}`,{stdout:e.stdout}))}if(r===null||typeof r!="object")return it(Vt("daemon_unreachable","docker version did not return a JSON object"));let n=r,a=n.Server?.Name??"Docker",o=n.Server?.Version??"unknown";return a==="Podman Engine"?it(Vt("buildx_unavailable","Podman is not supported; install Docker Engine 23+ with the buildx plugin")):Ia({serverName:a,serverVersion:o})}async function HOe(t,e){let r=await wl(t,{args:["buildx","inspect",e],timeoutMs:3e4});if(r.spawnError!==void 0)return it(zc(r));if(r.exitCode===0){if(/Driver:\s*docker-container/.test(r.stdout))return Ia({created:!1});t.logger.warn(Ou,"Replacing buildx builder with wrong driver",{name:e});let a=await wl(t,{args:["buildx","rm",e],timeoutMs:3e4});if(a.spawnError!==void 0)return it(zc(a));if(a.exitCode!==0)return it(Vt("buildx_unavailable",`Failed to remove existing buildx builder ${e}`,{stderrTail:a.stderrTail}))}let n=await wl(t,{args:["buildx","create","--name",e,"--driver","docker-container","--use"],timeoutMs:3e4});return n.spawnError!==void 0?it(zc(n)):n.exitCode!==0?it(Vt("buildx_unavailable",`Failed to create buildx builder ${e}`,{stderrTail:n.stderrTail})):Ia({created:!0})}var KOe=b(()=>{"use strict";Dp();Bf();JS()});import{mkdtemp as w0t,readFile as T0t,rm as YOe,stat as D0t,symlink as k0t,writeFile as I0t}from"node:fs/promises";import{homedir as P0t,tmpdir as _0t}from"node:os";import{join as XS}from"node:path";function Nre(t){return E(t instanceof Error?t.message:String(t))}function R0t(t){let e=t.replace(/^https?:\/\//i,""),r=e.indexOf("/");return r!==-1&&(e=e.slice(0,r)),e}function O0t(t){let e=t.DOCKER_CONFIG;if(e!==void 0&&e!=="")return e;let r=t.HOME!==void 0&&t.HOME!==""?t.HOME:P0t();return XS(r,".docker")}function N0t(t,e){let r=t.BUILDX_CONFIG;return r!==void 0&&r!==""?r:XS(e,"buildx")}async function $0t(t,e){let r;try{r=await T0t(XS(t,"config.json"),"utf8")}catch{return{}}try{let n=JSON.parse(r);return n===null||typeof n!="object"||Array.isArray(n)?{}:n}catch(n){return e.warn(Ou,"Real docker config.json is not valid JSON; using a minimal ephemeral config",{error:Nre(n)}),{}}}async function F0t(t,e,r){let n=XS(t,"contexts");try{if(!(await D0t(n)).isDirectory())return}catch{return}try{await k0t(n,XS(e,"contexts"),"dir")}catch(a){r.warn(Ou,"Could not link docker contexts into the ephemeral config; a non-default docker context may not resolve for this build",{error:Nre(a)})}}async function $re(t){let{registry:e,username:r,password:n,baseEnv:a,logger:o}=t,s=R0t(e),i=O0t(a),c=N0t(a,i),l=await $0t(i,o),{credsStore:u,credHelpers:p,auths:d,...m}=l,f={...p??{}};delete f[s];let g=Buffer.from(`${r}:${n}`,"utf8").toString("base64"),y={...d??{},[s]:{auth:g}},S={...m,auths:y,...Object.keys(f).length>0?{credHelpers:f}:{}},x;try{let C=await w0t(XS(_0t(),"fjall-ecr-auth-"));x=C,await I0t(XS(C,"config.json"),JSON.stringify(S),{mode:384}),await F0t(i,C,o),o.debug(Ou,"Established ephemeral ECR credential context",{registry:s,dockerConfig:C,buildxConfig:c});let w=!1;return{env:{DOCKER_CONFIG:C,BUILDX_CONFIG:c},async dispose(){w||(w=!0,await YOe(C,{recursive:!0,force:!0}).catch(T=>{o.warn(Ou,"Failed to remove ephemeral ECR credential dir",{path:C,error:Nre(T)})}))}}}catch(C){throw x!==void 0&&await YOe(x,{recursive:!0,force:!0}).catch(()=>{}),C}}var Fre=b(()=>{"use strict";Dp();Bf()});async function ZOe(t,e,r){let n=await wl(t,{args:["tag",e,r],timeoutMs:3e4});return n.spawnError!==void 0?it(zc(n)):n.exitCode===null?it(Vt("abort",`docker tag ${e} ${r} was aborted`,{stderrTail:n.stderrTail})):n.exitCode!==0?it(Vt("tag_failed",`docker tag ${e} ${r} failed (exit ${n.exitCode})`,{stderrTail:n.stderrTail})):Ia(void 0)}async function QOe(t,e,r){let n,a=await TR(t,{args:["push",e],timeoutMs:3e5},o=>{if(o==="")return;let s;try{s=JSON.parse(o)}catch{t.logger.debug(Ou,"Skipping malformed push progress line",{line:E(o)});return}if(s===null||typeof s!="object")return;let i=s;i.aux?.digest!==void 0&&(n=i.aux.digest),r!==void 0&&i.id!==void 0&&i.status!==void 0&&r({id:i.id,status:Kg(i.status),...i.progressDetail?.current!==void 0&&{current:i.progressDetail.current},...i.progressDetail?.total!==void 0&&{total:i.progressDetail.total}})});return a.spawnError!==void 0?it(zc(a)):a.aborted||a.exitCode===null?it(Vt("abort",`docker push ${e} was aborted`,{stderrTail:a.stderrTail})):a.exitCode!==0?a.stderrTail.join(`
|
|
452
|
+
${S}`,{errorType:"destroy_failed",appName:o,operation:"destroy-parallel"}))}}}}}}else for(let l of c){let u=Wr(o,l);r?.onStackStart?.(l,u);let p=await t.destroyStack(l,e,{onOutput:r?.onOutput?f=>r.onOutput?.(f,l):void 0,onResourceProgress:r?.onResourceProgress?f=>r.onResourceProgress?.(f,l):void 0,onLog:r?.onLog,onStackCleanupProgress:r?.onStackCleanupProgress},void 0,a),d=rre(p,l,o);r?.onStackComplete&&await r.onStackComplete(l,d);let m=nre(d,l);if(m){if(m.continue)continue;return m.result}}return A({message:"All stacks destroyed"})}function ore(t,e){return t.map((r,n)=>r.status==="fulfilled"?r.value:{stack:e[n]??ge.NETWORK,success:!1,error:r.reason instanceof Error?r.reason:new Error(String(r.reason)),duration:0})}async function lOe(t,e){try{let r=Wr(t,ge.COMPUTE),n=await e.getStackOutputs(r);if(n.success&&n.data.length>0){let s=n.data.find(c=>c.OutputKey?.includes("LoadBalancerUrl"));if(s?.OutputValue)return s.OutputValue.toLowerCase();let i=n.data.find(c=>c.OutputKey?.includes("LoadBalancerDnsName"));if(i?.OutputValue)return`http://${i.OutputValue.toLowerCase()}`}let a=Wr(t,ge.CDN),o=await e.getStackOutputs(a);if(o.success&&o.data.length>0){let s=o.data.find(i=>i.OutputKey?.includes("DistributionDomainName"));if(s?.OutputValue)return`https://${s.OutputValue.toLowerCase()}`}return}catch(r){K.warn("ApplicationStackService","URL resolution failed",{error:E(r instanceof Error?r.message:String(r))});return}}var sre=b(()=>{"use strict";N();xl();no();BU();xe();yj();er()});import{CloudFormationClient as KAt}from"@aws-sdk/client-cloudformation";import{S3Client as uOe}from"@aws-sdk/client-s3";var qS,ire=b(()=>{"use strict";eC();xl();no();xe();yj();er();N();gR();sre();qS=class{cdkService;cloudFormationService;aws;constructor(e,r,n){this.cdkService=e,this.cloudFormationService=r,this.aws=n}async runCdkSynth(e){return this.cdkService.runCdkSynth(e)}async deployStack(e,r,n,a){let o=r.target,s=Wr(o,e),i=await this.cdkService.runCdkDeploy(r,s,n?.onOutput,n?.onResourceProgress,this.aws,void 0,a?.parameters);if(i.success){let c=i.data;K.debug("ApplicationStackService","CDK deploy result",{stackName:s,stackType:e,success:!0,message:c.message,status:c.status,skipped:c.details?.skipped,hasOutput:!!c.details?.output});let l=await this.cloudFormationService.getStackOutputs(s);K.debug("ApplicationStackService","Stack outputs after deploy",{stackName:s,hasOutputs:l.success&&l.data.length>0,outputCount:l.success?l.data.length:0});let u=l.success&&l.data.length>0?Z0(l.data):void 0;return A({stackType:e,stackName:s,skipped:c.details?.skipped===!0,outputs:u})}else{let c=E(i.error||`Failed to deploy ${e} infrastructure`);return K.error("ApplicationStackService","Stack deployment failed",{stackType:e,target:r.target,error:c}),v(new ni(c,{errorType:"deployment_failed",appName:r.target,operation:"deployStack",stackType:e}))}}async deployStacksInParallel(e,r,n){let a=n?.onOutput,o=n?.onResourceProgress,s=n?.onStackComplete,i=await Promise.allSettled(e.map(async c=>{let l=Date.now(),u=await this.deployStack(c,r,{onOutput:a?m=>a(m,c):void 0,onResourceProgress:o?m=>o(m,c):void 0}),p=Date.now()-l,d={stack:c,success:u.success,error:u.success?void 0:u.error,duration:p,...u.success&&u.data.outputs!==void 0?{outputs:u.data.outputs}:{}};return!u.success&&u.error&&K.debug("deployStacksInParallel",`Stack ${c} failed`,{error:u.error.message}),s?.(c,u.success,p,u.success?void 0:u.error),d}));return A(ore(i,e))}async destroyStack(e,r,n,a,o){let s=r.target,i=Wr(s,e),c=[];if(this.aws!==void 0)if(a===!0||(await this.cdkService.runCdkSynth(r)).success){let u=await Ug(this.aws.getClient(KAt),this.aws.getClient(uOe),i,{onLog:n?.onLog,onStackCleanupProgress:n?.onStackCleanupProgress},o);c=GS(u)}else K.debug("ApplicationStackService","Skipping pre-empty pass after failed validation synth \u2014 the destroy will surface the error",{stackName:i});else K.debug("ApplicationStackService","No AWS provider available, skipping pre-empty pass",{stackName:i});let l=await this.cdkService.runCdkDestroy(r,i,n?.onOutput,n?.onResourceProgress,this.aws,a);if(l.success)return this.aws!==void 0&&c.length>0&&await zg(this.aws.getClient(uOe),c,{onLog:n?.onLog,onStackCleanupProgress:n?.onStackCleanupProgress},o),A({stackType:e,stackName:i,skipped:!1,outputs:void 0});{let u=E(l.error||`Failed to destroy ${e} stack`);return K.error("ApplicationStackService","Stack destroy failed",{stackType:e,target:r.target,error:u}),v(new ni(u,{errorType:"destroy_failed",appName:r.target,operation:"destroyStack",stackType:e}))}}async destroyStacksInParallel(e,r,n,a,o){let s=n?.onOutput,i=n?.onResourceProgress,c=n?.onStackComplete,l=await Promise.allSettled(e.map(async u=>{let p=Date.now(),d=await this.destroyStack(u,r,{onOutput:s?S=>s(S,u):void 0,onResourceProgress:i?S=>i(S,u):void 0,onLog:n?.onLog,onStackCleanupProgress:n?.onStackCleanupProgress},a,o),m=Date.now()-p,f=d.success?"":d.error?.message??"",g=f.includes(Ns)||f.includes(Cg),y={stack:u,success:d.success||g,error:d.success||g?void 0:d.error,duration:m};return!y.success&&y.error&&K.debug("destroyStacksInParallel",`Stack ${u} failed`,{error:y.error.message}),c?.(u,y.success,m,y.success?void 0:y.error),y}));return A(ore(l,e))}async getStackOutputs(e,r){let n=Wr(e,r),a=await this.cloudFormationService.getStackOutputs(n);return a.success?A(Z0(a.data)):v(new ni(`Failed to get outputs for ${n}`,{errorType:"stack_error",appName:e,operation:"getStackOutputs",stackType:r,details:a.error}))}async resolveWebsiteUrl(e){return lOe(e,this.cloudFormationService)}async destroyAllStacks(e,r,n,a){return are(this,e,r,n,a)}}});var pOe=b(()=>{"use strict";ire();sre()});var cre=b(()=>{"use strict";HRe();IU();IU();IU();pOe()});var lre=b(()=>{"use strict";_te();wg()});var mOe=b(()=>{"use strict"});function jU(t){let e=new Du(t.awsCredentials,t.mintScopedBuildSecretSession);e.exportToEnv();let r=new Ki,n=new $f(r,t.abortSignal),a=new Pu({processManager:n,...t.abortSignal!==void 0?{abortSignal:t.abortSignal}:{},...t.callbacks.onFailureAnalysis!==void 0?{onFailureAnalysis:t.callbacks.onFailureAnalysis}:{}}),o=new Vd(e),s=new Ff(e),i=new Mf(o),c=new fR(e),l=new qS(a,o,e),u=new zp,p=Bc.createDefault();return{awsProvider:e,cdkService:a,cfnService:o,ecsService:s,ecsResolver:i,ecrImageInspector:c,stackService:l,hashService:u,frameworkRegistry:p,...t.abortSignal!==void 0?{abortSignal:t.abortSignal}:{},dispose(){n.dispose()}}}var ure=b(()=>{"use strict";iU();Fte();iR();wU();DU();Bte();zte();kU();ire();Wte();BU()});import{join as Vg,relative as fOe}from"path";import{readdir as hOe}from"fs/promises";function JAt(t){return YAt.has(t)}async function XAt(t,e){let r=Vg(t,"fjall"),n=await hOe(r,{withFileTypes:!0}).catch(s=>{K.debug("resolveOperation","existing-app readdir failed",{fjallDir:r,error:String(s)})});if(n===void 0)return;let a=e.toLowerCase(),o=[];for(let s of n){if(!s.isDirectory()||s.name.toLowerCase()!==a)continue;let i=Vg(r,s.name);fOe(t,i).startsWith("..")||!(await kt(Vg(i,Ld))||await kt(Vg(i,"cdk.json")))||o.push({appName:s.name,path:i})}if(o.length!==0)return o.length>1?"ambiguous":o[0]}async function UU(t,e){K.debug("resolveOperation","called",{target:t,workingDirectory:e});let r=await kt(e);K.debug("resolveOperation","workingDirectory exists",{exists:r});let n=Vg(e,"fjall"),a=await kt(n);if(K.debug("resolveOperation","fjall/ dir check",{fjallDir:n,exists:a}),a&&K.isDebugEnabled())try{let l=await hOe(n);K.debug("resolveOperation","fjall/ contents",{entries:l})}catch(l){K.debug("resolveOperation","fjall/ readdir failed",{error:String(l)})}let o=t.toLowerCase();if(JAt(o)){let l=Vg(e,"fjall",o),u=await kt(l);return K.debug("resolveOperation","org type match",{normalisedTarget:o,orgPath:l,exists:u}),u?A({kind:"organisation",type:o,target:t,path:l}):v(new Error(`Organisation target "${t}" resolved to fjall/${o}/ but directory not found`))}if(o.startsWith("account-")){let l=o.slice(8);if(!pre.test(l))return v(new Error(`Invalid account target "${t}": suffix must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens`));let u=Vg(e,"fjall",$t.ACCOUNT),p=await kt(u);return K.debug("resolveOperation","account-prefixed target",{suffix:l,orgPath:u,exists:p}),p?A({kind:"organisation",type:$t.ACCOUNT,target:t,path:u}):v(new Error(`Organisation target "${t}" resolved to fjall/${$t.ACCOUNT}/ but directory not found`))}if(!pre.test(t)){let l=await XAt(e,t);return l==="ambiguous"?v(new Error(`Ambiguous target "${t}": multiple fjall/ folders match case-insensitively \u2014 rename so exactly one matches`)):l!==void 0?(K.debug("resolveOperation","resolved existing non-standard app",{target:t,appName:l.appName,path:l.path}),A({kind:"application",appName:l.appName,path:l.path})):(K.debug("resolveOperation","target failed pattern validation",{target:t,pattern:pre.source}),v(new Error(`Invalid target "${t}": must start with a lowercase letter and contain only lowercase letters, numbers, and hyphens`)))}let s=Vg(e,"fjall",t),i=fOe(e,s);if(i.startsWith(".."))return v(new Error(`Invalid target "${t}": resolved path escapes working directory`));let c=await kt(s);return K.debug("resolveOperation","app path check",{appPath:s,exists:c,relative:i}),c?(K.debug("resolveOperation","resolved as application",{appName:t,path:s}),A({kind:"application",appName:t,path:s})):(K.debug("resolveOperation","FAILED \u2014 no match",{target:t,workingDirectory:e,checkedPath:s}),v(new Error(`Target "${t}" is not a recognised organisation type and no directory found at fjall/${t}`)))}var YAt,pre,dre=b(()=>{"use strict";xe();er();no();Ua();xl();YAt=new Set(Object.values($t));pre=bt.NEW_APP_NAME});import{readFile as ZAt,writeFile as mRr,unlink as fRr,rename as hRr,mkdir as gRr}from"fs/promises";import{readFileSync as QAt}from"fs";import{dirname as SRr,join as gOe}from"path";function HS(t){return gOe(t,Pp)}async function VU(t){let e=HS(t);if(!await kt(e))return null;try{let r=await ZAt(e,"utf-8"),n=JSON.parse(r),a=Z2.safeParse(n);return a.success||K.debug("FjallManifest","Manifest validation failed",{path:e,errors:a.error.issues.map(o=>`${o.path.join(".")}: ${o.message}`)}),a.success?a.data:null}catch(r){return K.debug("FjallManifest","Failed to read manifest file",{path:e,error:D(r)}),null}}function zU(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function e0t(t){if(!zU(t)||typeof t.path!="string"||t.path.length===0)return;let e=typeof t.context=="string"&&t.context.length>0?t.context:void 0,r=typeof t.target=="string"&&t.target.length>0?t.target:void 0,n=zU(t.buildArgs)&&Object.keys(t.buildArgs).length>0?t.buildArgs:void 0,a=Array.isArray(t.buildSecrets)&&t.buildSecrets.length>0?t.buildSecrets:void 0,o={path:t.path,...e!==void 0&&{context:e},...r!==void 0&&{target:r},...n!==void 0&&{buildArgs:n},...a!==void 0&&{buildSecrets:a}},s=gu.safeParse(o);return s.success?s.data:void 0}function qd(t){let e=gOe(t,Pp),r;try{r=QAt(e,"utf-8")}catch{return K.debug("FjallManifest","Manifest file not readable \u2014 no Docker services extracted",{path:e}),[]}let n;try{n=JSON.parse(r)}catch{return K.debug("FjallManifest","Manifest is not valid JSON \u2014 no Docker services extracted",{path:e}),[]}if(!zU(n)||!Array.isArray(n.services))return[];let a=[];for(let o of n.services){if(!zU(o)||typeof o.name!="string")continue;let s=e0t(o.docker);s!==void 0&&a.push({name:o.name,docker:s})}return a}var yOe=b(()=>{"use strict";er();Ua();kM();uR();sS()});var rC=b(()=>{"use strict";sS();yOe()});function fre(t,e){return t!==void 0&&t!==""&&e!==void 0&&e!==""&&t!==e}function _u(t){let e=fre(t.region,t.primaryRegion);return{...t.orgConfig!==void 0?{orgConfig:JSON.stringify(t.orgConfig)}:{},...t.identity!==void 0?{fjallOrgId:t.identity.fjallOrgId}:{},...t.skipOidc?{fjallOidcConfigured:!0}:{},...e?{fjallAccountGlobalsConfigured:!0}:{},...t.trailLifecycle!==void 0?{fjallAccountTrailState:o0t[t.trailLifecycle]}:{}}}function vOe(t,e,r,n){if(r!==void 0)return r;if(t==="account")return zd(e?.providerAccounts)?n===!0:!0}function Ms(t){return e=>t.onOutput?.(e)}function Wg(t){return e=>t.onResourceProgress?.(e)}function ER(t){if(!t.success||t.data.length===0)return;let e={};for(let r of t.data)r.OutputKey&&r.OutputValue!==void 0&&(e[r.OutputKey]=r.OutputValue);return Object.keys(e).length>0?e:void 0}function hre(t){return`arn:aws:iam::${t}:role/${SOe}`}function c0t(t,e){return e===void 0?ft(t):e.aborted?Promise.resolve():new Promise(r=>{let n=()=>{r()};e.addEventListener("abort",n,{once:!0}),ft(t).then(()=>{e.removeEventListener("abort",n),r()})})}async function Gg(t,e,r,n,a){if(!t.assumeRole)return v(new Error("AwsProvider does not support assumeRole"));let o=hre(e),s=t.assumeRole.bind(t),i;for(let l=0;l<=mre;l++)try{i=await s(o,n);break}catch(u){let p=u instanceof Error?u.name:void 0;if(p==="AccessDenied"||p==="AccessDeniedException")return v(new Error(`Access denied assuming ${SOe} in account ${e}. The role may not exist or may not trust the management account.`));if(l<mre){let d=Math.min(s0t*2**l,i0t);if(K.debug("assumeCascadeRole",`Attempt ${l+1} failed for account ${e}, retrying in ${Math.round(d/1e3)}s`,{error:E(D(u))}),await c0t(d,a),a?.aborted)return v(new Error(`Aborted while retrying assume-role for account ${e}`));continue}return v(new Error(`Failed to assume role in account ${e} after ${mre+1} attempts: ${E(D(u))}`))}if(!i)return v(new Error(`Failed to assume role in account ${e}`));let c=new Du({accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey,sessionToken:i.sessionToken,region:r,accountId:e});return A({provider:c,credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey,sessionToken:i.sessionToken}})}async function nC(t,e,r,n){let a=await t.cdkService.runCdkSynth(e,o=>r.onCdkOutput?.(o,"synth"));if(!a.success){let o=new Error(E(`${n}: ${a.error}`));return r.onError?.(o),v(o)}return A(void 0)}async function aC(t,e,r){r.onCDKBootstrap?.("bootstrapping");let n=await t.cdkService.runCdkBootstrap(e,Ms(r));if(!n.success){r.onCDKBootstrap?.("failed");let a=new Error(E(`Bootstrap failed: ${n.error}`));return r.onError?.(a),v(a)}return r.onCDKBootstrap?.("complete"),A(void 0)}var o0t,SOe,mre,s0t,i0t,jc=b(()=>{"use strict";xe();N();er();j0();iU();o0t={account:"active",draining:"draining",org:"removed"};SOe="OrganizationAccountAccessRole",mre=5,s0t=5e3,i0t=3e4});import{readFileSync as EOe}from"fs";import{join as bOe}from"path";function bR(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function xOe(t){let e=bOe(t,Pp),r;try{r=EOe(e,"utf-8")}catch{return K.debug("manifestSecretParser","Manifest file not readable \u2014 no secrets extracted",{path:e}),[]}let n;try{n=JSON.parse(r)}catch{return K.debug("manifestSecretParser","Manifest is not valid JSON \u2014 no secrets extracted",{path:e}),[]}if(!bR(n))return[];let a=[];if(Array.isArray(n.services))for(let o of n.services){if(!bR(o))continue;let s=o;if(!(!Array.isArray(s.secrets)||s.secrets.length===0||typeof s.ssmSecretsPath!="string"))for(let i of s.secrets)typeof i=="string"&&a.push(`${s.ssmSecretsPath}/${i}`)}if(Array.isArray(n.lambdas))for(let o of n.lambdas){if(!bR(o))continue;let s=o;if(!(!Array.isArray(s.secrets)||s.secrets.length===0||typeof s.ssmSecretsPath!="string"))for(let i of s.secrets)typeof i=="string"&&a.push(`${s.ssmSecretsPath}/${i}`)}return a}function AOe(t){let e=bOe(t,Pp),r;try{r=EOe(e,"utf-8")}catch{return K.debug("manifestSecretParser","Manifest file not readable \u2014 no imported secret names extracted",{path:e}),[]}let n;try{n=JSON.parse(r)}catch{return K.debug("manifestSecretParser","Manifest is not valid JSON \u2014 no imported secret names extracted",{path:e}),[]}if(!bR(n))return[];let a=new Set;for(let o of[n.services,n.lambdas])if(Array.isArray(o)){for(let s of o)if(!(!bR(s)||!Array.isArray(s.importedSecretNames)))for(let i of s.importedSecretNames)typeof i=="string"&&i!==""&&a.add(i)}return Array.from(a)}var COe=b(()=>{"use strict";uR();er()});import{SecretsManagerClient as l0t,DescribeSecretCommand as u0t}from"@aws-sdk/client-secrets-manager";async function wOe(t,e){let r=t.getClient(l0t),n={};for(let a of e)try{let o=(await r.send(new u0t({SecretId:a}),{abortSignal:$e(void 0,p0t)})).ARN;if(o===void 0||o==="")return v(new Error(`DescribeSecret for "${a}" returned no ARN \u2014 cannot resolve a complete ARN.`));n[a]=o}catch(o){let s=o instanceof Error?o.name:"";return s==="ResourceNotFoundException"?v(new Error(`Imported secret "${a}" does not exist in this account/region. Create it, or reference it by complete ARN via the secretsImport { arn } escape hatch.`)):s==="AccessDeniedException"||s==="AccessDenied"?v(new Error(`The deploy identity lacks secretsmanager:DescribeSecret on "${a}" \u2014 grant DescribeSecret on this secret so its complete ARN can be resolved.`)):v(new Error(`Failed to resolve imported secret "${a}": ${E(D(o))}`))}return A(n)}var p0t,TOe=b(()=>{"use strict";xe();N();ar();p0t=3e4});import{join as d0t}from"path";async function DOe(t,e,r,n){n.onDetectionPhaseChange?.("detect","started");let a=e.frameworkRegistry.resolve({appPath:t.path}),o=a?.detection.pattern??null,s=a?.detection.hasDatabase??!1;n.onLog?.(`Pattern detected: ${o??"standard"}`,"info"),n.onDetectionPhaseChange?.("detect","completed");let i=d0t(t.path,"cdk.out");n.onDetectionPhaseChange?.("synth","started"),Bg(n,X0.SYNTH);let c=await e.cdkService.runCdkSynth(r,w=>n.onCdkOutput?.(w,"synth"));if(!c.success)return v(new Error(E(`CDK synthesis failed: ${c.error}`)));if(n.onDetectionPhaseChange?.("synth","completed"),r.resolvedSecretArns===void 0){let w=AOe(i);if(w.length>0){n.onLog?.(`Resolving ${w.length} imported secret ARN(s)\u2026`,"info");let T=await wOe(e.awsProvider,w);if(!T.success)return v(new Error(E(T.error.message)));r.resolvedSecretArns=JSON.stringify(T.data);let P=await e.cdkService.runCdkSynth(r,_=>n.onCdkOutput?.(_,"synth"));if(!P.success)return v(new Error(E(`CDK synthesis failed: ${P.error}`)))}}let l=xOe(i);l.length>0&&n.onLog?.(`Found ${l.length} required secret path(s) in manifest`,"info"),n.onDetectionPhaseChange?.("hash","started"),Bg(n,X0.HASH);let u=await e.hashService.getTemplateHashes(i);if(!u.success)return v(new Error(E(`Template hash computation failed: ${u.error.message}`)));let p=u.data,d=await e.hashService.compareWithState(p,t.path);if(!d.success)return v(new Error(E(`Hash comparison failed: ${d.error.message}`)));let m=d.data;n.onDetectionPhaseChange?.("hash","completed");let f=new Map(m.stackChanges);for(let[w,T]of m.stackChanges)T||await e.cfnService.stackExists(w)||(K.debug("detectionPipeline","Stale hash detected \u2014 stack missing in CFN",{stackName:w}),f.set(w,!0));let g=Array.from(p.keys()),y=TS(g),S=qd(i),x=y.hasCompute&&S.length>0,C=Array.from(f.values()).some(Boolean);return n.onLog?.(`Detection complete: ${m.changedCount} changed, ${m.unchangedCount} unchanged`,"info"),A({pattern:o,hasDatabase:s,hasDifferences:C,stackChanges:f,currentHashes:p,resources:y,hasDockerfile:x,requiredSecrets:l})}var kOe=b(()=>{"use strict";xe();er();N();A0();gR();COe();TOe();rC()});var nOr,go,gre=b(()=>{"use strict";PS();PS();nOr={Network:oe.NETWORK_DESTROY,Storage:oe.STORAGE_DESTROY,Messaging:oe.MESSAGING_DESTROY,Database:oe.DATABASE_DESTROY,Compute:oe.COMPUTE_DESTROY,Cdn:oe.CDN_DESTROY},go=class{static DEPLOYMENT_STEPS=new Map([["application-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.DETECT_CONFIG,name:lr.PREPARE_DEPLOY},{id:oe.TARGET_READINESS,name:lr.TARGET_READINESS,conditions:{requiresInfra:!0}},{id:oe.BOOTSTRAP,name:lr.BOOTSTRAP,conditions:{requiresInfra:!0}},{id:Yr(ge.NETWORK,"deploy"),name:Kr(ge.NETWORK,"deploy"),conditions:{requiresInfra:!0,requiresNetwork:!0}},{id:Yr(ge.STORAGE,"deploy"),name:Kr(ge.STORAGE,"deploy"),conditions:{requiresInfra:!0,requiresStorage:!0}},{id:Yr(ge.MESSAGING,"deploy"),name:Kr(ge.MESSAGING,"deploy"),conditions:{requiresInfra:!0,requiresMessaging:!0}},{id:Yr(ge.DATABASE,"deploy"),name:Kr(ge.DATABASE,"deploy"),conditions:{requiresInfra:!0,requiresDatabase:!0}},{id:oe.DOCKER_OPERATIONS,name:"Docker operations",conditions:{requiresDocker:!0,requiresCompute:!0,skipForInfraOnly:!0}},{id:oe.TAG_ECR_IMAGES,name:"Tagging container images",conditions:{requiresImageTagging:!0,requiresCompute:!0,skipForInfraOnly:!0}},{id:Yr(ge.COMPUTE,"deploy"),name:Kr(ge.COMPUTE,"deploy"),conditions:{requiresInfra:!0,requiresCompute:!0}},{id:Yr(ge.CDN,"deploy"),name:Kr(ge.CDN,"deploy"),conditions:{requiresInfra:!0,requiresCdn:!0}}]],["application-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.DETECT_CONFIG,name:lr.CHECK_INFRA_STATE},{id:Yr(ge.CDN,"destroy"),name:Kr(ge.CDN,"destroy"),conditions:{requiresCdn:!0}},{id:Yr(ge.COMPUTE,"destroy"),name:Kr(ge.COMPUTE,"destroy")},{id:Yr(ge.DATABASE,"destroy"),name:Kr(ge.DATABASE,"destroy")},{id:Yr(ge.MESSAGING,"destroy"),name:Kr(ge.MESSAGING,"destroy"),conditions:{requiresMessaging:!0}},{id:Yr(ge.STORAGE,"destroy"),name:Kr(ge.STORAGE,"destroy"),conditions:{requiresStorage:!0}},{id:Yr(ge.NETWORK,"destroy"),name:Kr(ge.NETWORK,"destroy")}]],["organisation-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.ORG_SETUP,name:lr.ORG_SETUP},{id:oe.PREPARE_ENVIRONMENT,name:Os.PREPARE},{id:oe.ORG_DEPLOY,name:lr.ORG_DEPLOY,conditions:{requiresOrgChanges:!0}},{id:oe.CASCADE_PLATFORM,name:lr.CASCADE_PLATFORM,conditions:{requiresPlatformAccount:!0}},{id:oe.CASCADE_ACCOUNTS,name:lr.CASCADE_ACCOUNTS,conditions:{requiresMemberAccounts:!0}}]],["organisation-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CFN_CHECK,name:lr.CHECK_INFRA_STATE},{id:oe.CASCADE_ACCOUNTS,name:"Destroying account infrastructure",conditions:{requiresMemberAccounts:!0}},{id:oe.CASCADE_PLATFORM,name:"Destroying platform infrastructure",conditions:{requiresPlatformAccount:!0}},{id:oe.DESTROY,name:"Destroying organisation infrastructure"}]],["platform-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CONNECT,name:Os.CONNECT},{id:oe.PREPARE_ENVIRONMENT,name:Os.PREPARE},{id:oe.DEPLOY,name:Os.DEPLOY},{id:oe.MONITORING,name:Os.MONITORING}]],["platform-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CFN_CHECK,name:"Checking infrastructure state"},{id:oe.ORG_DESTROY,name:"Destroying platform infrastructure"}]],["account-deploy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CONNECT,name:Os.CONNECT},{id:oe.PREPARE_ENVIRONMENT,name:Os.PREPARE},{id:oe.DEPLOY,name:Os.DEPLOY},{id:oe.MONITORING,name:Os.MONITORING}]],["account-destroy",[{id:oe.AUTH,name:lr.AUTH},{id:oe.CFN_CHECK,name:"Checking infrastructure state"},{id:oe.ORG_DESTROY,name:"Destroying account infrastructure"}]]]);static getSteps(e){if(e.deploymentType==="application"&&e.operation==="deploy"&&e.deployOnly)return[{id:oe.AUTH,name:lr.AUTH},{id:oe.DOCKER_OPERATIONS,name:"Build and push Docker container"},{id:Yr(ge.COMPUTE,"deploy"),name:Kr(ge.COMPUTE,"deploy")}];let r=`${e.deploymentType}-${e.operation}`;return(this.DEPLOYMENT_STEPS.get(r)??[]).filter(n=>{if(e.deploymentType==="application"){let a=e.builderName==="opennext";if(n.conditions?.requiresInfra&&e.deployOnly)return!1;if(e.resources){let o=e.resources;if(n.conditions?.requiresNetwork&&!o.hasNetwork||n.conditions?.requiresCompute&&!o.hasCompute||n.conditions?.requiresDatabase&&!o.hasDatabase||n.conditions?.requiresStorage&&!o.hasStorage||n.conditions?.requiresMessaging&&!o.hasMessaging||n.conditions?.requiresCdn&&!o.hasCdn)return!1}else if(e.operation==="deploy"&&!a&&(n.conditions?.requiresNetwork||n.conditions?.requiresCompute||n.conditions?.requiresDatabase||n.conditions?.requiresStorage||n.conditions?.requiresMessaging||n.conditions?.requiresCdn))return!1;if(n.conditions?.requiresDocker||n.id===oe.DOCKER_OPERATIONS)return a||e.infraOnly||e.resources&&!e.resources.hasCompute?!1:e.deployOnly?e.hasDockerfile===!0:e.hasDockerfile===!0||e.hasDockerfile===!1&&!e.isManagedAccount;if(n.conditions?.requiresImageTagging)return e.infraOnly||a||e.resources&&!e.resources.hasCompute?!1:e.hasDockerfile===!1}return!(n.conditions?.requiresMemberAccounts&&!e.hasMemberAccounts||n.conditions?.requiresPlatformAccount&&!e.hasPlatformAccount||n.conditions?.requiresOrgChanges&&e.hasOrgChanges!==!0||n.conditions?.requiresPlatformChanges&&e.hasPlatformChanges!==!0||n.conditions?.requiresAccountChanges&&e.hasAccountChanges!==!0||n.conditions?.requiresDomainConfiguration&&!e.hasDomainConfiguration||n.conditions?.requiresDomainChanges&&e.hasDomainChanges!==!0)}).map(n=>n.id===oe.DOCKER_OPERATIONS?{...n,name:e.hasDockerfile?"Building and pushing Docker image":"Initialising container repository"}:n)}static getStepNames(e){return this.getSteps(e).map(r=>r.name)}static getStepIndex(e,r){return this.getSteps(r).findIndex(n=>n.id===e)}static getStepById(e,r="application"){let n=`${r}-deploy`,a=(this.DEPLOYMENT_STEPS.get(n)||[]).find(s=>s.id===e);if(a)return a;let o=`${r}-destroy`;return(this.DEPLOYMENT_STEPS.get(o)||[]).find(s=>s.id===e)}static isStepIncluded(e,r){return this.getSteps(r).some(n=>n.id===e)}static createContext(e,r,n){return{deploymentType:e,operation:r,deployOnly:n?.deployOnly??!1,infraOnly:n?.infraOnly??!1,isManagedAccount:n?.isManagedAccount??!1,hasDockerfile:n?.hasDockerfile??!1,pattern:n?.pattern??null,builderName:n?.builderName,resources:n?.resources}}static getDeploymentTypes(){return["application","organisation","platform","account"]}static getStackNames(e){switch(e){case"application":return[...S0];case"organisation":return["Organisation"];case"platform":return["Platform"];case"account":return["Account"];default:return[]}}static getInfraStepIds(){return[oe.CFN_CHECK,oe.TARGET_READINESS,oe.BOOTSTRAP,oe.DIFF,oe.NETWORK,oe.STORAGE,oe.MESSAGING,oe.DATABASE,oe.COMPUTE,oe.CDN]}static getDockerStepIds(){return[oe.ECR_INIT,oe.DOCKER_DEPLOY]}}});import{join as IOe}from"path";import{BackupClient as m0t}from"@aws-sdk/client-backup";function Uc(t){let e=t.find(n=>Lt(n)==="platform"),r=t.filter(n=>Lt(n)==="account");return{platformAccount:e,memberAccounts:r}}function Lf(t){let e=t?.primaryRegion??ze,r=t?.secondaryRegions??[],n=new Set([e,...r]),a=t?.disasterRecoveryRegion;return a&&n.add(a),[...n]}function Ru(t){return Lf(t)[0]??ze}function KS(t,e){return`${t} (${e})`}function oC(t,e){let r=[];for(let n of e)for(let a of t)r.push({account:a,region:n});return r}async function POe(t,e,r,n){r.onLog?.(`Verifying cascade role access for ${e.length} account(s)\u2026`,"info");let a=await kd(e,xR,async s=>Gg(t.awsProvider,s.id,s.region??t.awsProvider.getRegion(),`fjall-preflight-${s.name}`,n)),o=[];return a.forEach((s,i)=>{let c=e[i];if(c){if(s.status==="rejected"){o.push({accountId:c.id,accountName:c.name,error:s.reason instanceof Error?s.reason.message:String(s.reason)});return}s.value.success||o.push({accountId:c.id,accountName:c.name,error:s.value.error.message})}}),o.length===0&&r.onLog?.(`Cascade role access verified for ${e.length} account(s)`,"info"),o}async function yre(t,e,r,n,a,o,s){let i=s?.region??n.region??e.awsProvider.getRegion(),c=KS(n.name,i),l=s?.orgConfig??t.orgConfig,u=s?.ipamPoolId;o.onCascadeAccountStart?.(c,n.id,i,a);let p=await Gg(e.awsProvider,n.id,i,`fjall-cascade-${n.name}`,t.abortSignal);if(!p.success)return o.onCascadeAccountComplete?.(c,!1,E(p.error.message),i),v(new Error(`Failed to assume role for ${n.name}: ${E(p.error.message)}`));let{provider:d,credentials:m}=p.data,f=IOe(t.workingDirectory,"fjall",a==="platform"?$t.PLATFORM:$t.ACCOUNT),g=IOe(f,`cdk.out.${n.id}.${Tg(i)}`),y=Fs.buildDeploymentContext({deployType:a,target:r.target,path:f,assemblyDir:g,environment:n.environment??void 0,region:i,accountName:n.name,callerIdentity:zi(n.id),ipamPoolId:u,..._u({orgConfig:l,identity:t.identity,skipOidc:t.options?.skipOidc,region:i,primaryRegion:s?.primaryRegion,trailLifecycle:n.trailLifecycle})},{verbose:t.options?.verbose},l);if(V0(n.environment,l?.disasterRecoveryRegion)){let M=await hU(d.getClient(m0t),t.abortSignal);if(!M.success)return o.onCascadeAccountComplete?.(c,!1,E(M.error.message),i),v(new Error(`Backup vault probe failed for ${n.name}: ${E(M.error.message)}`));y.fjallAdoptBackupVault=M.data}o.onCascadeAccountPhaseChange?.(c,"synth",i);let S=await e.cdkService.runCdkSynth(y,Ms(o),m);if(!S.success)return o.onCascadeAccountComplete?.(c,!1,E(`Synth failed: ${S.error}`),i),v(new Error(`Synth failed for ${n.name}: ${E(S.error)}`));let x=wn(a==="platform"?$t.PLATFORM:$t.ACCOUNT),C=ADe(f,n.id,i),w=new Vd(d),{changed:T,currentHash:P}=await e.hashService.compareCascadeStack(g,x,C);if(!T&&t.options?.force!==!0&&await w.stackExists(x)){let M=await w.getStackOutputs(x);M.success||K.debug("cascadeHelpers","Failed to read outputs for skipped cascade account (non-critical)",{stackName:x,account:n.name});let U=ER(M);return o.onLog?.(`${n.name}: no infrastructure changes \u2014 skipping deploy`,"info"),o.onCascadeAccountComplete?.(c,!0,void 0,i,U,!0),A({outputs:U,skipped:!0})}o.onCascadeAccountPhaseChange?.(c,"bootstrap",i);let _=await e.cdkService.runCdkBootstrap(y,Ms(o),m);if(!_.success)return o.onCascadeAccountComplete?.(c,!1,E(`Bootstrap failed: ${_.error}`),i),v(new Error(`Bootstrap failed for ${n.name}: ${E(_.error)}`));o.onCascadeAccountPhaseChange?.(c,"deploy",i);let R=await e.cdkService.runCdkDeploy(y,x,Ms(o),M=>o.onCascadeAccountResourceProgress?.(c,M,i),d,m);if(!R.success)return o.onCascadeAccountComplete?.(c,!1,E(R.error),i),v(new Error(E(R.error)));let O=await w.getStackOutputs(x);O.success||K.debug("cascadeHelpers","Failed to read cascade account stack outputs (non-critical)",{stackName:x,account:n.name});let $=ER(O);return P!==void 0&&((await e.hashService.persistCascadeStack(C,x,P)).success||K.debug("cascadeHelpers","Failed to persist cascade hash state (non-critical)",{stackName:x,account:n.name})),o.onCascadeAccountComplete?.(c,!0,void 0,i,$,!1),A({outputs:$,skipped:!1})}async function _Oe(t,e,r,n){let a=new Map,o=t.awsProvider.getRegion(),s=await Gg(t.awsProvider,e.id,o,`fjall-ipam-read-${e.name}`,n);if(!s.success)return K.debug("organisationDeploy",`Cannot read Platform outputs: ${s.error.message}`),a;let i=new Vd(s.data.provider),c=wn($t.PLATFORM),l=await i.getStackOutputs(c);if(!l.success)return K.debug("organisationDeploy",`Failed to read Platform stack outputs: ${l.error.message}`),a;let u=/^IpamPoolId(\d{12})(\w+)$/;for(let p of l.data){let d=p.OutputKey?.match(u);if(d&&p.OutputValue){let m=`${d[1]}-${d[2]}`;a.set(m,p.OutputValue)}}return a.size>0&&r.onLog?.(`Read ${a.size} IPAM pool ID(s) from Platform stack`,"info"),a}async function ROe(t,e){let r=t.getDomains();if(r.length===0)return{domainsDeployed:0,errors:[]};e.onCascadePhaseStart?.("domains");let n=r.filter(i=>i.type==="apex"),a=r.filter(i=>i.type==="delegated"),o=0,s=[];for(let i of n){let c=await t.deployDomain(i.name,e);c.success?o++:s.push(`${i.name}: ${c.error.message}`)}if(a.length>0){let i=await Promise.allSettled(a.map(c=>t.deployDomain(c.name,e)));for(let c=0;c<i.length;c++){let l=i[c],u=a[c];if(!(!l||!u))if(l.status==="fulfilled")l.value.success?o++:s.push(`${u.name}: ${l.value.error.message}`);else{let p=l.reason instanceof Error?l.reason.message:String(l.reason);s.push(`${u.name}: ${p}`)}}}return e.onCascadePhaseComplete?.("domains"),{domainsDeployed:o,errors:s}}var xR,qg=b(()=>{"use strict";xe();er();N();no();Lg();xf();DU();IS();W0();jc();N();bU();jc();xR=4});async function sC(t,e,r,n){t.onStepStart?.(e.stepId,e.stepName,e.stepIndex,e.totalSteps);let a;try{a=await r()}catch(o){let s=o instanceof Error?o:new Error(String(o));return OOe(t,e,s,n)}return a.kind==="error"?OOe(t,e,a.error,n):(t.onStepComplete?.(e.stepId,e.stepName,a.kind,e.stepIndex,e.totalSteps),A(a.data))}function OOe(t,e,r,n){let a=Gt(n);return t.onStepComplete?.(e.stepId,e.stepName,a?"cancelled":"error",e.stepIndex,e.totalSteps),a||t.onError?.(r),v(r)}var WU=b(()=>{"use strict";xe();ar()});var Ou,YS,iC,vre,Sre,Bf=b(()=>{"use strict";Ou="DockerCli",YS="DockerCli.buildx",iC="0.13.0",vre="fjall",Sre="docker"});var Ere,TOr,bre,f0t,h0t,xre=b(()=>{"use strict";Mt();Ere=h.enum(["buildx_unavailable","daemon_unreachable","build_failed","push_failed","pull_failed","tag_failed","inspect_failed","auth_failed","abort","timeout","validation","metadata_missing","metadata_malformed","metadata_missing_digest"]),TOr=new Set(Ere.options),bre=h.object({contextPath:h.string().min(1),dockerfilePath:h.string().min(1),target:h.string().min(1).optional(),platforms:h.array(h.string().min(1)).min(1),tags:h.array(h.string().min(1)),buildArgs:h.record(h.string(),h.string()),cacheFrom:h.array(h.string().min(1)).optional(),cacheTo:h.array(h.string().min(1)).optional(),secrets:h.array(h.object({id:h.string().min(1),source:h.discriminatedUnion("kind",[h.object({kind:h.literal("file"),path:h.string().min(1)}).strict(),h.object({kind:h.literal("env"),name:h.string().min(1)}).strict()])}).strict()).optional(),dockerfileChecks:h.array(h.string().min(1)).optional(),provenance:h.boolean(),sbom:h.boolean(),push:h.boolean(),load:h.boolean(),pushByDigest:h.boolean().optional(),imageName:h.string().min(1).optional(),builder:h.string().min(1,"Builder name cannot be empty").optional(),metadataFile:h.string().min(1)}).strict().refine(t=>!(t.platforms.length>1&&t.load),{message:"Multi-arch builds cannot use load:true (Docker limitation); use push:true or omit both for cache-only"}).refine(t=>!(t.push&&t.load),{message:"push and load are mutually exclusive"}).refine(t=>t.pushByDigest!==!0||t.imageName!==void 0,{message:"pushByDigest requires imageName (the registry repo to push to)"}).refine(t=>t.pushByDigest===!0||t.tags.length>=1,{message:"tags must be non-empty unless pushByDigest is set"}),f0t=h.object({digest:h.string(),imageDigests:h.record(h.string(),h.string()),metadata:h.record(h.string(),h.unknown()),platforms:h.array(h.string()),cacheHits:h.number().int().nonnegative(),cacheMisses:h.number().int().nonnegative()}).strict(),h0t=h.object({kind:Ere,message:h.string(),stderrTail:h.array(h.string()).optional(),details:h.unknown().optional()}).strict()});function Are(t){let e=["buildx","build"];e.push("--builder",t.builder??vre),e.push("--progress=rawjson"),e.push("--metadata-file",t.metadataFile),e.push("--platform",t.platforms.join(","));for(let r of t.tags)e.push("-t",r);e.push("-f",t.dockerfilePath),t.pushByDigest===!0&&t.imageName!==void 0&&e.push("--output",`type=image,name=${t.imageName},push-by-digest=true,push=true`);for(let[r,n]of Object.entries(t.buildArgs))e.push("--build-arg",`${r}=${n}`);if(t.dockerfileChecks!==void 0&&t.dockerfileChecks.length>0&&e.push("--build-arg",`BUILDKIT_DOCKERFILE_CHECK=${t.dockerfileChecks.join(";")}`),t.target!==void 0&&e.push("--target",t.target),t.cacheFrom!==void 0)for(let r of t.cacheFrom)e.push("--cache-from",r);if(t.cacheTo!==void 0)for(let r of t.cacheTo)e.push("--cache-to",r);if(t.secrets!==void 0)for(let r of t.secrets){let n=r.source.kind==="file"?`src=${r.source.path}`:`env=${r.source.name}`;e.push("--secret",`id=${r.id},${n}`)}return e.push(`--provenance=${t.provenance?"true":"false"}`),e.push(`--sbom=${t.sbom?"true":"false"}`),t.pushByDigest!==!0&&(t.push&&e.push("--push"),t.load&&e.push("--load")),e.push(t.contextPath),e}var Cre=b(()=>{"use strict";Bf()});function cC(t){return GU.some(e=>t.startsWith(e))}var GU,wre=b(()=>{"use strict";GU=["VITE_","NEXT_PUBLIC_","PUBLIC_"]});function AR(t,e){let r=[],n=[];if(t===void 0)return{findings:r,warnings:n};for(let[a,o]of Object.entries(t)){if(typeof o=="object"){if(o.acknowledgePublic===!0)continue;if(o.ssm!==void 0||o.secretsManager!==void 0){r.push({key:a,reason:"sourced-ref",message:`buildArg "${a}" (app "${e}") is sourced from a secret store (SSM/Secrets Manager) but baked via --build-arg \u2014 ${Hg}. Move it to docker.buildSecrets (BuildKit --secret mount, never baked), or, if the value is genuinely public-but-sensitive and must ship in the client bundle, set acknowledgePublic: true to bake it deliberately.`});continue}cC(a)||n.push({key:a,message:NOe(a)});continue}if(E(o)!==o){r.push({key:a,reason:"credential-shape",message:$Oe(a,e)});continue}cC(a)||n.push({key:a,message:NOe(a)})}return{findings:r,warnings:n}}function NOe(t){return`buildArg "${t}" does not start with a public prefix (${GU.join(", ")}) and is frozen into the image at build time \u2014 ${Hg}. If this value should vary per deploy, use a runtime env var (ECS task environment) instead of baking it.`}function $Oe(t,e){return`buildArg "${t}" (app "${e}") has a value that looks like a credential but would be baked via --build-arg \u2014 ${Hg}. Move it to docker.buildSecrets (BuildKit --secret mount, never baked). If it is a genuinely public-but-sensitive value, use the object form { ssm/secretsManager/env, acknowledgePublic: true } to bake it deliberately.`}function CR(t){let e=new Set;if(t===void 0)return e;for(let[r,n]of Object.entries(t))typeof n=="object"&&n.acknowledgePublic===!0&&e.add(r);return e}function wR(t,e,r){let n=[];for(let[a,o]of Object.entries(t))r.has(a)||E(o)!==o&&n.push({key:a,reason:"credential-shape",message:$Oe(a,e)});return n}var Hg,FOe=b(()=>{"use strict";Dp();wre();Hg="baked values are world-readable in `docker history`, image provenance/SBOM, and the `<app>-cache` mode=max ECR cache repo"});function Tre(t){let e=t.trim();if(e==="")return null;let r;try{r=JSON.parse(e)}catch{return null}if(r===null||typeof r!="object"||Array.isArray(r))return null;let n=r,a={};for(let[o,s]of Object.entries(n))g0t.has(o)||(a[o]=s);return{...Array.isArray(n.vertexes)&&{vertexes:n.vertexes},...Array.isArray(n.statuses)&&{statuses:n.statuses},...Array.isArray(n.logs)&&{logs:n.logs},...Array.isArray(n.warnings)&&{warnings:n.warnings},extra:a}}var g0t,Dre=b(()=>{"use strict";g0t=new Set(["vertexes","statuses","logs","warnings"])});function y0t(t){return typeof t.digest!="string"||t.digest===""||typeof t.name!="string"||t.name===""?null:{digest:t.digest,name:t.name,...typeof t.started=="string"&&{started:t.started},...typeof t.completed=="string"&&{completed:t.completed},...typeof t.cached=="boolean"&&{cached:t.cached},...typeof t.error=="string"&&{error:t.error},...Array.isArray(t.inputs)&&{inputs:t.inputs}}}function v0t(t){return typeof t.id!="string"||t.id===""||typeof t.vertex!="string"||t.vertex===""||typeof t.name!="string"||typeof t.current!="number"?null:{id:t.id,vertex:t.vertex,name:t.name,current:t.current,...typeof t.total=="number"&&{total:t.total},...typeof t.started=="string"&&{started:t.started},...typeof t.completed=="string"&&{completed:t.completed}}}function S0t(t){if(typeof t.vertex!="string"||t.vertex===""||typeof t.data!="string")return null;let e=t.stream===2?"stderr":"stdout";return{vertex:t.vertex,stream:e,data:t.data,...typeof t.timestamp=="string"&&{timestamp:t.timestamp}}}function E0t(t){return typeof t.vertex!="string"||t.vertex===""||typeof t.short!="string"?null:{vertex:t.vertex,level:typeof t.level=="string"?t.level:"warning",short:t.short}}function kre(t){let e=[];for(let o of t.vertexes??[]){let s=y0t(o);s!==null&&e.push(s)}let r=[];for(let o of t.statuses??[]){let s=v0t(o);s!==null&&r.push(s)}let n=[];for(let o of t.logs??[]){let s=S0t(o);s!==null&&n.push(s)}let a=[];for(let o of t.warnings??[]){let s=E0t(o);s!==null&&a.push(s)}return e.length===0&&r.length===0&&n.length===0&&a.length===0?null:{vertexes:e,statuses:r,logs:n,warnings:a}}var Ire=b(()=>{"use strict"});import{spawnSync as b0t}from"node:child_process";function qU(t,e=process.platform){if(t.pid===void 0)return;if(t.stdout&&t.stdout.destroy(),t.stderr&&t.stderr.destroy(),e==="win32"){b0t("taskkill",["/T","/F","/PID",String(t.pid)],{shell:!1});return}t.kill("SIGTERM");let r=setTimeout(()=>{t.killed||t.kill("SIGKILL")},5e3);t.once("exit",()=>clearTimeout(r))}var Pre=b(()=>{"use strict";Bf()});import{rm as x0t}from"node:fs/promises";function BOe(t){return t instanceof Error?t.message:String(t)}async function jOe(t,e,r){let n=bre.safeParse(e);if(!n.success){let u=E(n.error.message);return it(Vt("validation",`Invalid BuildxBuildArgs: ${u}`,{issues:n.error.issues}))}let a=Are(n.data),o=0,s=0,i=new Set,c=u=>{let p=Tre(u);if(p===null){u.trim()!==""&&t.logger.debug(YS,"Skipping malformed rawjson line",{line:E(u)});return}let d=kre(p);if(d!==null){for(let m of d.vertexes)m.completed!==void 0&&!i.has(m.digest)&&(i.add(m.digest),m.cached===!0?o++:s++),r({type:"vertex",message:Kg(m.name),vertex:m.digest});for(let m of d.logs)r({type:"log",message:Kg(m.data),vertex:m.vertex});for(let m of d.statuses)r({type:"status",message:Kg(`${m.name} ${m.current}`),vertex:m.vertex});for(let m of d.warnings)r({type:"warning",message:Kg(m.short),vertex:m.vertex})}},l;try{l=n.data.metadataFile;let u=await TR(t,{args:a,timeoutMs:6e5},c);if(u.spawnError!==void 0)return it(Vt("daemon_unreachable",`Docker CLI is not available: ${u.spawnError}`,{stderrTail:u.stderrTail}));if(u.aborted||u.exitCode===null)return it(Vt("abort","docker buildx build was aborted",{stderrTail:u.stderrTail}));if(u.exitCode!==0)return it(Vt("build_failed",`docker buildx build failed (exit ${u.exitCode})`,{stderrTail:u.stderrTail}));let p=await _re(n.data.metadataFile);if(!p.success)return p;let d=p.data,m=d["containerimage.digest"];if(typeof m!="string"||m==="")return it(Vt("metadata_missing_digest","Buildx metadata file does not contain containerimage.digest",{metadataFile:n.data.metadataFile}));let f={};for(let g of n.data.tags)f[g]=m;return Ia({digest:m,imageDigests:f,metadata:d,platforms:n.data.platforms,cacheHits:o,cacheMisses:s})}finally{l!==void 0&&await x0t(l,{force:!0}).catch(u=>{t.logger.warn(YS,"Failed to clean up buildx metadata file",{path:l,error:E(BOe(u))})})}}async function UOe(t,e,r,n){if(e.trim()==="")return it(Vt("validation","tagByDigest: sourceImage must be non-empty"));if(!r.startsWith("sha256:"))return it(Vt("validation",`tagByDigest: expected sha256:... digest, got ${r.slice(0,32)}`));if(n.length===0)return it(Vt("validation","tagByDigest: tags must be a non-empty list"));for(let c of n)if(typeof c!="string"||c.trim()==="")return it(Vt("validation","tagByDigest: every tag must be non-empty"));let a=`${e}@${r}`,o=[];for(let c of n)o.push("--tag",c);let s=["buildx","imagetools","create",...o,a],i=await wl(t,{args:s,timeoutMs:3e4});return i.spawnError!==void 0?it(zc(i)):i.exitCode===null?it(Vt("abort",`docker buildx imagetools create for ${a} was aborted`,{stderrTail:i.stderrTail})):i.exitCode!==0?it(Vt("tag_failed",`docker buildx imagetools create for ${a} failed (exit ${i.exitCode})`,{stderrTail:i.stderrTail})):Ia(void 0)}async function zOe(t,e){let r=await wl(t,{args:["buildx","imagetools","inspect",e,"--raw"],timeoutMs:3e4});if(r.spawnError!==void 0)return it(Vt("daemon_unreachable",`Docker CLI is not available: ${r.spawnError}`,{stderrTail:r.stderrTail}));if(r.exitCode===null)return it(Vt("abort",`docker buildx imagetools inspect ${e} was aborted`,{stderrTail:r.stderrTail}));if(r.exitCode!==0)return it(Vt("inspect_failed",`docker buildx imagetools inspect ${e} failed (exit ${r.exitCode})`,{stderrTail:r.stderrTail}));let n,a;try{let o=JSON.parse(r.stdout);typeof o.mediaType=="string"&&(n=o.mediaType),typeof o.digest=="string"&&(a=o.digest)}catch(o){t.logger.debug(YS,"imagetools inspect output is not JSON; preserving raw",{error:E(BOe(o))})}return Ia({raw:r.stdout,...n!==void 0&&{mediaType:n},...a!==void 0&&{digest:a}})}var VOe=b(()=>{"use strict";Cre();xre();Bf();Rre();Dre();Ire();Dp();JS()});function WOe(t){let e=t.startsWith("v")?t.slice(1):t,r=/^(\d+)\.(\d+)\.(\d+)/.exec(e);return r===null?null:[parseInt(r[1]??"0",10),parseInt(r[2]??"0",10),parseInt(r[3]??"0",10)]}function A0t(t,e){for(let r=0;r<3;r++){let n=t[r]??0,a=e[r]??0;if(n!==a)return n-a}return 0}function C0t(t){let e=/github\.com\/docker\/buildx\s+(v?\d+\.\d+\.\d+)/.exec(t);return e!==null&&e[1]!==void 0?e[1]:/(\d+\.\d+\.\d+)/.exec(t)?.[1]??null}async function GOe(t){let e=await wl(t,{args:["buildx","version"],timeoutMs:3e4});if(e.spawnError!==void 0)return it(zc(e));if(e.exitCode===null)return it(Vt("abort","docker buildx version was aborted",{stderrTail:e.stderrTail}));if(e.exitCode!==0){let o=await wl(t,{args:["version","--format","{{.Server.Version}}"],timeoutMs:1e4});return o.spawnError!==void 0?it(zc(o)):o.exitCode!==0?it(Vt("daemon_unreachable","Docker daemon is not running or not installed",{stderrTail:o.stderrTail})):it(Vt("buildx_unavailable",`Docker Buildx plugin is not installed (need >= ${iC})`,{stderrTail:e.stderrTail}))}let r=C0t(e.stdout);if(r===null)return it(Vt("buildx_unavailable","Could not parse docker buildx version output",{stdout:e.stdout}));let n=WOe(r),a=WOe(iC);return n===null||a===null?it(Vt("buildx_unavailable",`Could not parse buildx version "${r}"`,{stdout:e.stdout})):A0t(n,a)<0?it(Vt("buildx_unavailable",`Docker Buildx ${r} is below the required ${iC} floor`,{observed:r,floor:iC})):(t.logger.debug(YS,"buildx available",{version:r}),Ia({version:r}))}async function qOe(t){let e=await wl(t,{args:["version","--format","json"],timeoutMs:1e4});if(e.spawnError!==void 0)return it(zc(e));if(e.exitCode===null)return it(Vt("abort","docker version was aborted",{stderrTail:e.stderrTail}));if(e.exitCode!==0)return it(Vt("daemon_unreachable","Docker daemon is not running or not installed",{stderrTail:e.stderrTail}));let r;try{r=JSON.parse(e.stdout)}catch(s){let i=E(s instanceof Error?s.message:String(s));return it(Vt("daemon_unreachable",`docker version output is not valid JSON: ${i}`,{stdout:e.stdout}))}if(r===null||typeof r!="object")return it(Vt("daemon_unreachable","docker version did not return a JSON object"));let n=r,a=n.Server?.Name??"Docker",o=n.Server?.Version??"unknown";return a==="Podman Engine"?it(Vt("buildx_unavailable","Podman is not supported; install Docker Engine 23+ with the buildx plugin")):Ia({serverName:a,serverVersion:o})}async function HOe(t,e){let r=await wl(t,{args:["buildx","inspect",e],timeoutMs:3e4});if(r.spawnError!==void 0)return it(zc(r));if(r.exitCode===0){if(/Driver:\s*docker-container/.test(r.stdout))return Ia({created:!1});t.logger.warn(Ou,"Replacing buildx builder with wrong driver",{name:e});let a=await wl(t,{args:["buildx","rm",e],timeoutMs:3e4});if(a.spawnError!==void 0)return it(zc(a));if(a.exitCode!==0)return it(Vt("buildx_unavailable",`Failed to remove existing buildx builder ${e}`,{stderrTail:a.stderrTail}))}let n=await wl(t,{args:["buildx","create","--name",e,"--driver","docker-container","--use"],timeoutMs:3e4});return n.spawnError!==void 0?it(zc(n)):n.exitCode!==0?it(Vt("buildx_unavailable",`Failed to create buildx builder ${e}`,{stderrTail:n.stderrTail})):Ia({created:!0})}var KOe=b(()=>{"use strict";Dp();Bf();JS()});import{mkdtemp as w0t,readFile as T0t,rm as YOe,stat as D0t,symlink as k0t,writeFile as I0t}from"node:fs/promises";import{homedir as P0t,tmpdir as _0t}from"node:os";import{join as XS}from"node:path";function Nre(t){return E(t instanceof Error?t.message:String(t))}function R0t(t){let e=t.replace(/^https?:\/\//i,""),r=e.indexOf("/");return r!==-1&&(e=e.slice(0,r)),e}function O0t(t){let e=t.DOCKER_CONFIG;if(e!==void 0&&e!=="")return e;let r=t.HOME!==void 0&&t.HOME!==""?t.HOME:P0t();return XS(r,".docker")}function N0t(t,e){let r=t.BUILDX_CONFIG;return r!==void 0&&r!==""?r:XS(e,"buildx")}async function $0t(t,e){let r;try{r=await T0t(XS(t,"config.json"),"utf8")}catch{return{}}try{let n=JSON.parse(r);return n===null||typeof n!="object"||Array.isArray(n)?{}:n}catch(n){return e.warn(Ou,"Real docker config.json is not valid JSON; using a minimal ephemeral config",{error:Nre(n)}),{}}}async function F0t(t,e,r){let n=XS(t,"contexts");try{if(!(await D0t(n)).isDirectory())return}catch{return}try{await k0t(n,XS(e,"contexts"),"dir")}catch(a){r.warn(Ou,"Could not link docker contexts into the ephemeral config; a non-default docker context may not resolve for this build",{error:Nre(a)})}}async function $re(t){let{registry:e,username:r,password:n,baseEnv:a,logger:o}=t,s=R0t(e),i=O0t(a),c=N0t(a,i),l=await $0t(i,o),{credsStore:u,credHelpers:p,auths:d,...m}=l,f={...p??{}};delete f[s];let g=Buffer.from(`${r}:${n}`,"utf8").toString("base64"),y={...d??{},[s]:{auth:g}},S={...m,auths:y,...Object.keys(f).length>0?{credHelpers:f}:{}},x;try{let C=await w0t(XS(_0t(),"fjall-ecr-auth-"));x=C,await I0t(XS(C,"config.json"),JSON.stringify(S),{mode:384}),await F0t(i,C,o),o.debug(Ou,"Established ephemeral ECR credential context",{registry:s,dockerConfig:C,buildxConfig:c});let w=!1;return{env:{DOCKER_CONFIG:C,BUILDX_CONFIG:c},async dispose(){w||(w=!0,await YOe(C,{recursive:!0,force:!0}).catch(T=>{o.warn(Ou,"Failed to remove ephemeral ECR credential dir",{path:C,error:Nre(T)})}))}}}catch(C){throw x!==void 0&&await YOe(x,{recursive:!0,force:!0}).catch(()=>{}),C}}var Fre=b(()=>{"use strict";Dp();Bf()});async function ZOe(t,e,r){let n=await wl(t,{args:["tag",e,r],timeoutMs:3e4});return n.spawnError!==void 0?it(zc(n)):n.exitCode===null?it(Vt("abort",`docker tag ${e} ${r} was aborted`,{stderrTail:n.stderrTail})):n.exitCode!==0?it(Vt("tag_failed",`docker tag ${e} ${r} failed (exit ${n.exitCode})`,{stderrTail:n.stderrTail})):Ia(void 0)}async function QOe(t,e,r){let n,a=await TR(t,{args:["push",e],timeoutMs:3e5},o=>{if(o==="")return;let s;try{s=JSON.parse(o)}catch{t.logger.debug(Ou,"Skipping malformed push progress line",{line:E(o)});return}if(s===null||typeof s!="object")return;let i=s;i.aux?.digest!==void 0&&(n=i.aux.digest),r!==void 0&&i.id!==void 0&&i.status!==void 0&&r({id:i.id,status:Kg(i.status),...i.progressDetail?.current!==void 0&&{current:i.progressDetail.current},...i.progressDetail?.total!==void 0&&{total:i.progressDetail.total}})});return a.spawnError!==void 0?it(zc(a)):a.aborted||a.exitCode===null?it(Vt("abort",`docker push ${e} was aborted`,{stderrTail:a.stderrTail})):a.exitCode!==0?a.stderrTail.join(`
|
|
453
453
|
`).toLowerCase().includes("unauthorized")?it(Vt("auth_failed",`docker push ${e} unauthorized`,{stderrTail:a.stderrTail})):it(Vt("push_failed",`docker push ${e} failed (exit ${a.exitCode})`,{stderrTail:a.stderrTail})):n===void 0?it(Vt("push_failed",`docker push ${e} succeeded but no digest was reported`,{stderrTail:a.stderrTail})):Ia({digest:n})}async function eNe(t,e,r,n){let a=["pull"];r!==void 0&&r!==""&&a.push("--platform",r),a.push(e);let o="",s=await TR(t,{args:a,timeoutMs:3e5},c=>{o+=`${c}
|
|
454
454
|
`,!(n===void 0||c==="")&&n({id:e,status:Kg(c)})});if(s.spawnError!==void 0)return it(zc(s));if(s.aborted||s.exitCode===null)return it(Vt("abort",`docker pull ${e} was aborted`,{stderrTail:s.stderrTail}));if(s.exitCode!==0)return it(Vt("pull_failed",`docker pull ${e} failed (exit ${s.exitCode})`,{stderrTail:s.stderrTail}));let i=/sha256:[0-9a-f]{64}/.exec(o);return Ia({imageId:i?.[0]??e})}async function tNe(t,e){let r=await wl(t,{args:["image","inspect","--format","{{json .}}",e],timeoutMs:3e4});if(r.spawnError!==void 0)return it(zc(r));if(r.exitCode===null)return it(Vt("abort",`docker image inspect ${e} was aborted`,{stderrTail:r.stderrTail}));if(r.exitCode!==0)return r.stderr.includes("No such image:")?Ia({exists:!1}):it(Vt("inspect_failed",`docker image inspect ${e} failed (exit ${r.exitCode})`,{stderrTail:r.stderrTail}));let n=/"Id":"(sha256:[0-9a-f]{64})"/.exec(r.stdout);return Ia({exists:!0,...n?.[1]!==void 0&&{digest:n[1]}})}async function rNe(t,e){try{let r=await $re({registry:e.registry,username:e.username,password:e.password,baseEnv:t.env,logger:t.logger}),n=t.ecrSession;return t.ecrSession=r,n!==void 0&&await n.dispose(),Ia(void 0)}catch(r){return it(Vt("auth_failed",`Failed to configure ECR credentials for ${e.registry}: ${E(r instanceof Error?r.message:String(r))}`))}}var nNe=b(()=>{"use strict";Dp();Bf();Fre();JS()});import{spawn as oNe}from"node:child_process";function M0t(t){let e=E(t);return e.length>2e3?e.slice(0,2e3)+"\u2026":e}function Vt(t,e,r){let n,a=r;if(r!==void 0&&Array.isArray(r.stderrTail)&&r.stderrTail.every(o=>typeof o=="string")){n=r.stderrTail.map(M0t);let{stderrTail:o,...s}=r;a=Object.keys(s).length>0?s:void 0}return{kind:t,message:e,...n!==void 0&&{stderrTail:n},...a!==void 0&&{details:a}}}function zc(t){return Vt("daemon_unreachable",`Docker CLI is not available: ${t.spawnError??"unknown spawn failure"}`,{stderrTail:t.stderrTail})}function sNe(t,e){if(t==="")return[];let r=t.split(/\r?\n/);for(;r.length>0&&r[r.length-1]==="";)r.pop();return r.slice(-e)}function Kg(t){return E(t)}function iNe(t){return t.ecrSession!==void 0?{...t.env,...t.ecrSession.env}:t.env}function wl(t,e){return new Promise(r=>{let n=!1,a=!1,o=cNe(t.abortSignal,e.timeoutMs),s;try{s=oNe(t.dockerBin,e.args,{shell:!1,env:iNe(t)})}catch(u){let p=u instanceof Error?u.message:String(u);r({exitCode:null,stdout:"",stderr:p,stderrTail:[p],aborted:!1,spawnError:p});return}let i="",c="";s.stdout?.on("data",u=>{i+=u.toString()}),s.stderr?.on("data",u=>{c+=u.toString()}),e.stdin!==void 0&&(s.stdin?.on("error",u=>{t.logger.debug(Ou,"stdin write error (typically EPIPE on early child exit)",{error:u.message})}),s.stdin?.write(e.stdin),s.stdin?.end());let l=()=>{n=!0,qU(s)};o!==void 0&&(o.aborted?l():o.addEventListener("abort",l,{once:!0})),s.once("error",u=>{if(a)return;a=!0,o!==void 0&&o.removeEventListener("abort",l);let p=u instanceof Error?u.message:String(u);r({exitCode:null,stdout:i,stderr:p,stderrTail:[p],aborted:n,spawnError:p})}),s.once("close",u=>{a||(a=!0,o!==void 0&&o.removeEventListener("abort",l),r({exitCode:u,stdout:i,stderr:c,stderrTail:sNe(c,50),aborted:n}))})})}function TR(t,e,r,n){return new Promise(a=>{let o=!1,s=!1,i=cNe(t.abortSignal,e.timeoutMs),c;try{c=oNe(t.dockerBin,e.args,{shell:!1,env:iNe(t)})}catch(m){let f=m instanceof Error?m.message:String(m);a({exitCode:null,stderrTail:[f],aborted:!1,spawnError:f,child:null});return}let l="",u="",p="";c.stdout?.on("data",m=>{l+=m.toString();let f=l.split(/\r?\n/);l=f.pop()??"";for(let g of f)r(g)}),c.stderr?.on("data",m=>{let f=m.toString();if(u+=f,n!==void 0){p+=f;let g=p.split(/\r?\n/);p=g.pop()??"";for(let y of g)n(y)}});let d=()=>{o=!0,qU(c)};i!==void 0&&(i.aborted?d():i.addEventListener("abort",d,{once:!0})),c.once("error",m=>{if(s)return;s=!0,i!==void 0&&i.removeEventListener("abort",d);let f=m instanceof Error?m.message:String(m);a({exitCode:null,stderrTail:[f],aborted:o,spawnError:f,child:c})}),c.once("close",m=>{s||(s=!0,l!==""&&r(l),n!==void 0&&p!==""&&n(p),i!==void 0&&i.removeEventListener("abort",d),a({exitCode:m,stderrTail:sNe(u,50),aborted:o,child:c}))})})}function cNe(t,e){if(!(t===void 0&&e===void 0))return t===void 0?AbortSignal.timeout(e):e===void 0?t:AbortSignal.any([t,AbortSignal.timeout(e)])}var DR,JS=b(()=>{"use strict";Dp();Pre();Bf();VOe();KOe();nNe();g0();DR=class{state;constructor(e){let r=e.dockerBin!==void 0&&e.dockerBin!==""?e.dockerBin:Sre,n=or(e.env??process.env);this.state={logger:e.logger,dockerBin:r,env:n,abortSignal:e.abortSignal,ecrSession:void 0}}async buildxBuild(e,r){return jOe(this.state,e,r)}async tag(e,r){return ZOe(this.state,e,r)}async tagByDigest(e,r,n){return UOe(this.state,e,r,n)}async push(e,r){return QOe(this.state,e,r)}async pull(e,r,n){return eNe(this.state,e,r,n)}async imageInspect(e){return tNe(this.state,e)}async imagetoolsInspect(e){return zOe(this.state,e)}async loginEcr(e){return rNe(this.state,e)}async logoutEcr(){let e=this.state.ecrSession;this.state.ecrSession=void 0,e!==void 0&&await e.dispose()}async ensureBuilder(e){return HOe(this.state,e)}async assertBuildxAvailable(){return GOe(this.state)}async detectDaemon(){return qOe(this.state)}}});import{readFile as L0t}from"node:fs/promises";async function _re(t){let e;try{e=await L0t(t,"utf8")}catch(n){if(n?.code==="ENOENT")return it(Vt("metadata_missing",`Buildx metadata file not found at ${t}`,{path:t}));let a=E(n instanceof Error?n.message:String(n));return it(Vt("inspect_failed",`Failed to read buildx metadata file at ${t}: ${a}`,{path:t}))}let r;try{r=JSON.parse(e)}catch(n){let a=E(n instanceof Error?n.message:String(n));return it(Vt("metadata_malformed",`Buildx metadata file at ${t} is not valid JSON: ${a}`,{path:t}))}return r===null||typeof r!="object"||Array.isArray(r)?it(Vt("metadata_malformed",`Buildx metadata file at ${t} is not a JSON object`,{path:t})):Ia(r)}var Rre=b(()=>{"use strict";Dp();JS();g0()});var lNe=b(()=>{"use strict";JS();g0()});var lC=b(()=>{"use strict";g0();Bf();xre();Cre();FOe();wre();Dre();Ire();Rre();lNe();Pre();JS();Fre()});function uC(t){return t.startsWith("cn-")?"aws-cn":"aws"}function HU(t,e){let{region:r,accountId:n,partition:a}=t,o=Yn(t.appName),s=`arn:${a}:ssm:${r}:${n}:parameter/${o}/*`,i=`arn:${a}:secretsmanager:${r}:${n}:secret:fjall-${o}-*`,c=new Set;for(let p of e){if(p.ssm!==void 0&&p.ssm!==""){let d=p.ssm.startsWith("/")?p.ssm.slice(1):p.ssm;d.startsWith(`${o}/`)||c.add(`arn:${a}:ssm:${r}:${n}:parameter/${d}`)}if(p.secretsManagerArn!==void 0&&p.secretsManagerArn!==""){let d=i.replace(/\*$/,"");p.secretsManagerArn.startsWith(d)||c.add(p.secretsManagerArn)}p.secretsManagerName!==void 0&&p.secretsManagerName!==""&&!p.secretsManagerName.startsWith(`fjall-${o}-`)&&c.add(`arn:${a}:secretsmanager:${r}:${n}:secret:${p.secretsManagerName}-*`)}let l=[{Sid:"FjallBuildSsmRead",Effect:"Allow",Action:["ssm:GetParameter","ssm:GetParameters"],Resource:[s,...[...c].filter(B0t)]},{Sid:"FjallBuildSecretsManagerRead",Effect:"Allow",Action:["secretsmanager:GetSecretValue"],Resource:[i,...[...c].filter(j0t)]},{Sid:"FjallBuildKmsDecrypt",Effect:"Allow",Action:["kms:Decrypt"],Resource:"*",Condition:{StringEquals:{"kms:ViaService":[`ssm.${r}.amazonaws.com`,`secretsmanager.${r}.amazonaws.com`]}}}],u=JSON.stringify({Version:"2012-10-17",Statement:l});return u.length>pNe?v(new Error(`Build-secret session policy is ${u.length} chars, exceeding the ${pNe}-char AWS inline-policy limit. Reduce the number of out-of-prefix secret/parameter references for this build.`)):A(u)}function B0t(t){return t.includes(":ssm:")}function j0t(t){return t.includes(":secretsmanager:")}var pNe,KU=b(()=>{"use strict";xe();N();pNe=2048});import{mkdtemp as U0t,writeFile as z0t,rm as dNe}from"node:fs/promises";import{tmpdir as V0t}from"node:os";import{join as mNe}from"node:path";import{SecretsManagerClient as W0t,GetSecretValueCommand as G0t}from"@aws-sdk/client-secrets-manager";import{SSMClient as q0t,GetParameterCommand as H0t}from"@aws-sdk/client-ssm";function pC(t){return t===void 0?[]:Object.entries(t).flatMap(([e,r])=>typeof r=="string"||r.env!==void 0?[]:r.ssm!==void 0?[{id:e,ssm:r.ssm}]:r.secretsManager!==void 0?[{id:e,secretsManager:r.secretsManager}]:[])}function Y0t(t){return t.flatMap(e=>e.ssm!==void 0?[{ssm:e.ssm}]:e.secretsManager!==void 0?[{...e.secretsManager.name!==void 0&&{secretsManagerName:e.secretsManager.name},...e.secretsManager.arn!==void 0&&{secretsManagerArn:e.secretsManager.arn}}]:[])}async function ZS(t,e,r){if(r===void 0||t.assumeScopedBuildSecretSession===void 0)return A(t);let n=HU(r,Y0t(e));if(!n.success)return v(n.error);try{let a=await t.assumeScopedBuildSecretSession(n.data,K0t);return A(a)}catch(a){return v(new Error(`Failed to assume scoped build-secret session: ${E(D(a))}`))}}async function dC(t,e,r,n){if(e.length===0)return A({resolved:[],cleanup:()=>Promise.resolve()});let a=await ZS(t,e,n);if(!a.success)return v(a.error);let o=a.data,s;try{let i=await U0t(mNe(V0t(),"fjall-build-secret-"));s=i;let c=()=>dNe(i,{recursive:!0,force:!0}),l=[];for(let u of e){let p=await hNe(o,u,r);if(!p.success)return await c(),v(p.error);let d=mNe(i,u.id);await z0t(d,p.data,{mode:384}),l.push({id:u.id,source:{kind:"file",path:d}})}return A({resolved:l,cleanup:c})}catch(i){return s!==void 0&&await dNe(s,{recursive:!0,force:!0}).catch(()=>{}),v(new Error(`Failed to resolve build secrets: ${E(D(i))}`))}}async function mC(t,e,r){return hNe(t,e,r)}async function hNe(t,e,r){if(e.ssm!==void 0)return J0t(t,e.ssm,r);if(e.secretsManager!==void 0)return X0t(t,e.id,e.secretsManager,r);if(e.env!==void 0){let n=process.env[e.env];return n===void 0||n===""?v(new Error(`Build secret "${e.id}" reads env var "${e.env}", which is unset or empty.`)):A(n)}return v(new Error(`Build secret "${e.id}" has no resolvable source.`))}async function J0t(t,e,r){let n=t.getClient(q0t);try{let a=(await n.send(new H0t({Name:e,WithDecryption:!0}),{abortSignal:$e(r,fNe)})).Parameter?.Value;return a===void 0||a===""?v(new Error(`SSM parameter "${e}" returned no value.`)):A(a)}catch(a){return v(gNe("SSM parameter",e,a))}}async function X0t(t,e,r,n){let a=r.arn??r.name;if(a===void 0)return v(new Error(`Build secret "${e}" secretsManager has neither name nor arn.`));let o=t.getClient(W0t);try{let s=(await o.send(new G0t({SecretId:a}),{abortSignal:$e(n,fNe)})).SecretString;return s===void 0||s===""?v(new Error(`Secret "${a}" returned no string value.`)):r.field===void 0?A(s):Z0t(s,r.field,a)}catch(s){return v(gNe("secret",a,s))}}function Z0t(t,e,r){let n;try{n=JSON.parse(t)}catch{return v(new Error(`Secret "${r}" is not valid JSON; cannot extract field.`))}if(typeof n!="object"||n===null||Array.isArray(n)||!(e in n))return v(new Error(`Secret "${r}" has no field "${e}".`));let a=n[e];return typeof a!="string"||a===""?v(new Error(`Secret "${r}" field "${e}" is empty or not a string.`)):A(a)}function gNe(t,e,r){let n=r instanceof Error?r.name:"";return n==="ResourceNotFoundException"||n==="ParameterNotFound"?new Error(`${t} "${e}" does not exist in this account/region \u2014 create it or fix the reference.`):n==="AccessDeniedException"||n==="AccessDenied"?new Error(`The deploy identity lacks read access to ${t} "${e}" \u2014 grant the build-time read on this reference.`):new Error(`Failed to resolve ${t} "${e}": ${E(D(r))}`)}var K0t,fNe,Lre=b(()=>{"use strict";xe();N();ar();KU();K0t="fjall-build-secret-read",fNe=3e4});import{readFile as Q0t}from"node:fs/promises";import{join as eCt}from"node:path";async function fC(t){let e=t.manifestBuildArgs??{},r=t.flagBuildArgs??{},n,a;try{n=await yNe(t,[".env",".env.production"]),a=t.stage!==void 0&&t.stage!==""?await yNe(t,[`.env.${t.stage}`]):{}}catch(l){return v(new Error(`Failed to read .env build-arg sources: ${E(D(l))}`))}let o=new Set([...Object.keys(e),...Object.keys(r)]),s=[];for(let l of new Set([...Object.keys(a),...Object.keys(n)]))o.has(l)||cC(l)&&s.push(l);let i=new Set([...o,...s]);if(i.size===0)return A({buildArgs:{},inferredDotenvKeys:[]});let c={};for(let l of i){let u=kR(r[l]);if(u!==void 0){c[l]=u;continue}let p=kR(t.shellEnv[l]);if(p!==void 0){c[l]=p;continue}let d=kR(a[l]);if(d!==void 0){c[l]=d;continue}let m=kR(n[l]);if(m!==void 0){c[l]=m;continue}let f=e[l];if(f===void 0)continue;if(typeof f=="string"){let y=kR(f);y!==void 0&&(c[l]=y);continue}if(t.resolveSourcedValue===void 0)return v(new Error(`buildArg "${l}" is sourced from a secret store but no resolver was provided to read it.`));let g=await t.resolveSourcedValue(l,f);if(!g.success)return v(g.error);c[l]=g.data}return A({buildArgs:c,inferredDotenvKeys:s})}function kR(t){return t!==void 0&&t!==""?t:void 0}async function yNe(t,e){let r=[t.serviceDir,...t.appDir?[t.appDir]:[]];for(let n of r)for(let a of e){let o=await tCt(eCt(n,a));if(o!==void 0)return rCt(o)}return{}}async function tCt(t){try{return await Q0t(t,"utf8")}catch{return}}function rCt(t){let e={};for(let r of t.split(/\r?\n/)){let n=r.trim();if(n===""||n.startsWith("#"))continue;let a=n.replace(/^export\s+/,""),o=a.indexOf("=");if(o<=0)continue;let s=a.slice(0,o).trim();if(s==="")continue;let i=a.slice(o+1).trim();i.length>=2&&(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),e[s]=i}return e}var Bre=b(()=>{"use strict";xe();N();lC()});import{existsSync as nCt,statSync as aCt}from"node:fs";function vNe(t){return jre({buildArgs:t.buildArgs??null,buildSecrets:t.buildSecrets??null})}function jre(t){return Array.isArray(t)?`[${t.map(jre).join(",")}]`:t!==null&&typeof t=="object"?`{${Object.keys(t).sort().map(e=>`${JSON.stringify(e)}:${jre(t[e])}`).join(",")}}`:JSON.stringify(t)}function hC(t){let e=t.buildSecrets??[];for(let o of e)if(!J2.test(o.id))return v(new Error(`Build secret id "${o.id}" for service '${t.serviceName}' contains characters outside the allowed BuildKit set [A-Za-z0-9_.-]; rename it (no comma, '=', or whitespace, which break the buildx --secret argv).`));let r=new Set;for(let o of e){if(r.has(o.id))return v(new Error(`Duplicate build secret id "${o.id}" for service '${t.serviceName}'; each buildSecrets[].id must be unique within a build group (the resolver writes each value to a temp file keyed by id, so a duplicate is silently overwritten).`));r.add(o.id)}let n=t.buildArgs??{};for(let o of Object.keys(n))if(r.has(o))return v(new Error(`buildArg key "${o}" for service '${t.serviceName}' collides with a buildSecrets[].id; a public --build-arg would shadow the secret mount of the same name. Rename one of them.`));if(!nCt(t.buildContext)||!aCt(t.buildContext).isDirectory())return v(new Error(`Build context "${t.buildContext}" for service '${t.serviceName}' is not an existing directory.`));let a=t.members;if(a!==void 0&&a.length>0){let o=vNe({serviceName:t.serviceName,...t.buildArgs!==void 0&&{buildArgs:t.buildArgs},...t.buildSecrets!==void 0&&{buildSecrets:t.buildSecrets}});for(let s of a)if(s.serviceName!==t.serviceName&&vNe(s)!==o)return v(new Error(`Service '${s.serviceName}' shares a build group with leader '${t.serviceName}' but declares different docker buildArgs/buildSecrets. Only the group leader's docker inputs are resolved and built, so '${s.serviceName}' would ship an image built with the leader's inputs, not its own. Give it a distinct Dockerfile path, context, or target so it builds independently, or align its buildArgs/buildSecrets with the leader.`))}return A(void 0)}var Ure=b(()=>{"use strict";xe();sS()});import{isAbsolute as SNe,join as Vre,dirname as oCt,resolve as zre}from"node:path";import{existsSync as Wre}from"node:fs";function sCt(t,e,r){let n=Vre(e,t);if(Wre(n))return{path:n,base:e};if(r!==""&&r!==e){let a=Vre(r,t);if(Wre(a))return{path:a,base:r}}return{path:n,base:e}}function iCt(t,e,r){let n=t.docker.path,a=t.docker.context,o,s;if(SNe(n))o=n,s=e;else{let i=sCt(n,e,r);o=i.path,s=i.base}return{buildContext:a?SNe(a)?zre(a):zre(s,a):zre(oCt(o)),dockerfilePath:o,target:t.docker.target,resolvedViaFallback:s!==e}}function cCt(t){return`${t.buildContext}|${t.dockerfilePath}|${t.target??""}`}function lCt(t,e){return`Dockerfile not found for service '${t}' at ${e}. Checked the synth directory and the working directory. If your Dockerfile lives at the project root with the CDK app in a subdirectory, set an absolute docker.context (the build context must share the Dockerfile's directory).`}function uCt(t){return t.startsWith("cn-")?"amazonaws.com.cn":"amazonaws.com"}function pCt(t,e,r){return`${t}.dkr.ecr.${e}.${uCt(e)}/${Yn(r)}`}function dCt(t,e,r){let n=new Map;for(let a of t){let o=iCt(a,e,r),s=cCt(o),i=n.get(s);i?i.members.push(a):n.set(s,{identity:o,members:[a]})}return Array.from(n.values())}async function mCt(t,e,r,n,a){let o=await t.buildAndPush({appName:e.appName,appPath:e.path,region:r,accountId:n},(s,i,c,l)=>{a.onDockerProgress?.(E(s),i,c,l)});return o.success?A({imageUri:o.data.imageUri,imageTag:o.data.imageTag}):v(o.error)}async function fCt(t,e,r,n,a,o,s,i,c,l,u,p){let d=t.members[0];if(!Wre(t.identity.dockerfilePath))return v(new Error(lCt(d.name,t.identity.dockerfilePath)));t.identity.resolvedViaFallback&&s.onLog?.(`Building service '${d.name}' from ${t.identity.dockerfilePath} (resolved at the project root).`,"info");let m=[...d.docker.buildSecrets??[],...p??[]],f=hC({serviceName:d.name,dockerfilePath:t.identity.dockerfilePath,buildContext:t.identity.buildContext,...t.identity.target!==void 0&&{target:t.identity.target},...d.docker.buildArgs!==void 0&&{buildArgs:d.docker.buildArgs},...m.length>0&&{buildSecrets:m},members:t.members.map(O=>({serviceName:O.name,...O.docker.buildArgs!==void 0&&{buildArgs:O.docker.buildArgs},...O.docker.buildSecrets!==void 0&&{buildSecrets:O.docker.buildSecrets}}))});if(!f.success)return v(f.error);let g=AR(d.docker.buildArgs,Yn(r.appName));for(let O of g.warnings)s.onLog?.(E(O.message),"warn");if(g.findings.length>0)return v(new Error(E(g.findings.map(O=>O.message).join(" "))));let y=m,S=pC(d.docker.buildArgs),x={appName:r.appName,region:n,accountId:a,partition:uC(n)},C=await ZS(i,[...y,...S],x);if(!C.success)return v(C.error);let w=C.data,T=await fC({manifestBuildArgs:d.docker.buildArgs,serviceDir:t.identity.buildContext,appDir:r.path,...l!==void 0&&{stage:l},shellEnv:process.env,...u!==void 0&&{flagBuildArgs:u},resolveSourcedValue:(O,$)=>mC(w,{id:O,...$},c)});if(!T.success)return v(T.error);let P=T.data.buildArgs;for(let O of T.data.inferredDotenvKeys)s.onLog?.(E(`buildArg "${O}" was auto-declared from a .env file and will be baked into the image \u2014 ${Hg}.`),"warn");let _=wR(P,Yn(r.appName),CR(d.docker.buildArgs));if(_.length>0)return v(new Error(E(_.map(O=>O.message).join(" "))));let R;if(y.length>0){let O=await dC(w,y,c);if(!O.success)return v(O.error);R=O.data}try{let O={appName:r.appName,appPath:t.identity.buildContext,region:n,accountId:a,buildContext:t.identity.buildContext,dockerfilePath:t.identity.dockerfilePath,pushByDigest:!0,serviceName:d.name,...t.identity.target!==void 0&&{target:t.identity.target},...Object.keys(P).length>0&&{buildArgs:P},...R!==void 0&&{buildSecrets:R.resolved}};return await hCt(t,O,e,o,s)}finally{R!==void 0&&await R.cleanup().catch(()=>s.onLog?.("Build-secret cleanup failed.","warn"))}}async function hCt(t,e,r,n,a){let o=await r.buildAndPush(e,(u,p,d,m)=>{a.onDockerProgress?.(E(u),p,d,m)});if(!o.success)return v(o.error);let s=o.data.imageDigest;if(typeof s!="string"||!s.startsWith("sha256:"))return v(new Error(`Buildx push succeeded but returned an invalid digest: ${E(String(s))}`));let i={},c=[];for(let u of t.members){let p=u.docker.target,d=IA(s,u.name,p);if(!d.success)return v(d.error);let m=d.data,f=u.name;i[f]=m,c.push(`${n}:${m}`)}let l=await r.tagByDigest({sourceImage:n,digest:s,tags:c});return l.success?A({contentHashTagsByService:i}):v(l.error)}async function JU(t,e,r,n){let a=t.dockerProvider;if(!a)return A({});let o=e.awsProvider.getAccountId();if(!o)return n.onLog?.("Skipping Docker build \u2014 account ID not available","warn"),A({});let s=e.awsProvider.getRegion(),i=Vre(r.path,"cdk.out"),c=qd(i),l=pCt(o,s,r.appName);if(K.debug(YU,"runDockerBuild starting",{appName:r.appName,appPath:r.path,accountId:o,region:s,cdkOutPath:i,manifestServiceCount:c.length,manifestServices:c.map(m=>({name:m.name,path:m.docker.path,context:m.docker.context,target:m.docker.target})),stepId:oe.DOCKER_OPERATIONS,stepName:Hd}),n.onStepStart?.(oe.DOCKER_OPERATIONS,Hd),c.length===0){n.onLog?.("Initialising ECR repository\u2026","info");let m=await a.initialiseECR({appName:r.appName,region:s,accountId:o});m.success||n.onLog?.(`ECR initialisation failed: ${E(m.error.message)}`,"warn"),n.onLog?.("Building and pushing Docker image\u2026","info");let f=await mCt(a,r,s,o,n);if(!f.success){K.debug(YU,"Docker buildAndPush (legacy) failed",{appName:r.appName,error:E(f.error.message)}),n.onStepComplete?.(oe.DOCKER_OPERATIONS,Hd,"error");let g=new Error(E(f.error.message));return n.onError?.(g),v(g)}return n.onStepComplete?.(oe.DOCKER_OPERATIONS,Hd,"completed"),n.onLog?.(`Docker image pushed: ${f.data.imageUri}`,"info"),A({})}let u=await a.preflight?.();if(u!==void 0&&!u.success){n.onStepComplete?.(oe.DOCKER_OPERATIONS,Hd,"error");let m=new Error(E(u.error.message));return n.onError?.(m),v(m)}let p=dCt(c,r.path,t.workingDirectory);n.onLog?.(`Building and pushing ${c.length} service image(s) in ${p.length} group(s)\u2026`,"info");let d={};for(let m=0;m<p.length;m++){let f=p[m],g=f.members.map(S=>S.name).join(", ");n.onLog?.(`Building group ${m+1}/${p.length} (${g})\u2026`,"info");let y=await fCt(f,a,r,s,o,l,n,e.awsProvider,t.abortSignal,t.options?.environment,t.options?.flagBuildArgs,t.options?.flagBuildSecrets);if(!y.success){K.debug(YU,"Docker buildAndPush failed",{appName:r.appName,leader:f.members[0]?.name,members:g,error:E(y.error.message)}),n.onStepComplete?.(oe.DOCKER_OPERATIONS,Hd,"error");let S=new Error(E(y.error.message));return n.onError?.(S),v(S)}for(let[S,x]of Object.entries(y.data.contentHashTagsByService))d[S]=x}return K.debug(YU,"Docker buildAndPush succeeded",{appName:r.appName,services:c.map(m=>m.name),groupCount:p.length,contentHashTags:d}),n.onStepComplete?.(oe.DOCKER_OPERATIONS,Hd,"completed"),n.onLog?.(`Docker images pushed for ${c.length} service(s)`,"info"),A(d)}var YU,Hd,Gre=b(()=>{"use strict";xe();N();lC();er();rC();Ag();Lre();KU();Bre();Ure();YU="dockerBuildHelper",Hd="Building and pushing Docker image"});async function ENe(t,e,r,n){let a=t.dockerProvider;if(!a)return A(void 0);let o=e.awsProvider.getAccountId();if(!o)return n.onLog?.("Skipping ECR initialisation \u2014 account ID not available","warn"),A(void 0);let s=e.awsProvider.getRegion();n.onStepStart?.(oe.DOCKER_OPERATIONS,"Initialising container repository"),n.onLog?.("Initialising ECR repository with welcome image\u2026","info");let i=await a.initialiseECR({appName:r.appName,region:s,accountId:o});if(i.success||n.onLog?.(E(`ECR initialisation warning: ${i.error.message}`),"warn"),n.onStepComplete?.(oe.DOCKER_OPERATIONS,"Initialising container repository","completed"),a.tagImages){n.onStepStart?.(oe.TAG_ECR_IMAGES,qre),n.onLog?.("Tagging ECR images for ECS services\u2026","info");let c=u=>{n.onLog?.(E(u),"info")},l=await a.tagImages({appName:r.appName,appPath:r.path,region:s,accountId:o},c);if(!l.success){let u=new Error(E(l.error.message));return n.onError?.(u),n.onStepComplete?.(oe.TAG_ECR_IMAGES,qre,"error"),v(u)}n.onLog?.(`Tagged ${l.data.taggedServices.length} service(s): ${l.data.taggedServices.join(", ")}`,"info");for(let u of l.data.taggedServices)n.onStepStart?.(`tag-ecr-images-${u}`,`Tagged ${u}`),n.onStepComplete?.(`tag-ecr-images-${u}`,`Tagged ${u}`,"completed");n.onStepComplete?.(oe.TAG_ECR_IMAGES,qre,"completed")}return A(void 0)}var qre,bNe=b(()=>{"use strict";xe();N();Ag();qre="Tagging container images"});function xNe(t,e,r,n,a){let o=new Set(CS.PHASE_2.stacks),s=[];for(let i=e;i<t.length&&o.has(t[i]);i++)s.push(t[i]);if(s.length<2)return[];if(!a){let i=s.filter(c=>{let l=Wr(n,c);return r.get(l)!==!1});return i.length>=2?i:[]}return s}async function ANe(t,e,r,n,a,o,s,i,c,l){for(let d=0;d<t.length;d++){let m=t[d],f=Yr(m,"deploy"),g=Kr(m,"deploy");a.onStepStart?.(f,g,o+d,s)}Bg(a,"Deploying infrastructure in parallel\u2026"),a.onParallelPhaseStart?.(t,"Storage and database resources (parallel)");let u=await r.stackService.deployStacksInParallel(t,n,{onOutput:Ms(a),onResourceProgress:(d,m)=>{a.onResourceProgress?.(d),m&&a.onParallelStackResourceProgress?.(m,d)},onStackComplete:(d,m,f,g)=>{let y=Yr(d,"deploy"),S=Kr(d,"deploy"),x=o+t.indexOf(d),C=Gt(r.abortSignal);a.onStepComplete?.(y,S,m?"completed":C?"cancelled":"error",x,s),!m&&g&&!C&&a.onError?.(new Error(E(g.message)))}});if(!u.success)return a.onParallelPhaseComplete?.([]),v(u.error);let p=u.data.filter(d=>!d.success);if(a.onParallelPhaseComplete?.(u.data.map(d=>({stack:d.stack,success:d.success,error:d.error}))),p.length>0){let d=p.map(f=>f.stack).join(", "),m=p.map(f=>`${f.stack}: ${E(f.error?.message??"Unknown error")}`).join(`
|
|
455
455
|
`);return v(new Error(`Failed to deploy stacks: ${d}
|