@btc-embedded/cdk-extensions 0.23.5 → 0.23.7
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/.githooks/pre-commit +2 -0
- package/.jsii +583 -13
- package/API.md +880 -49
- package/CHANGELOG.md +26 -0
- package/assets/cli/catnip.js +2 -2
- package/assets/test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda/index.js +13 -122
- package/assets/test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda/index.js +13 -122
- package/assets/test/constructs/api-keys/integration/api-key-management-runner.lambda/index.js +67 -122
- package/assets/test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda/index.js +13 -122
- package/lib/constructs/EventPipe.js +3 -4
- package/lib/constructs/ExportedService.js +7 -4
- package/lib/constructs/S3Bucket.js +2 -4
- package/lib/constructs/SecureRestApi.js +7 -4
- package/lib/constructs/SecureRestApiV2.js +5 -4
- package/lib/constructs/api-keys/ApiKeyClientAuthorization.js +3 -4
- package/lib/constructs/api-keys/ApiKeyManagement.js +6 -4
- package/lib/constructs/api-keys/ApiKeyPreTokenHandler.js +2 -4
- package/lib/constructs/api-keys/ApiKeyStore.js +4 -4
- package/lib/constructs/api-keys/lambdas/api-client-authorization-function.d.ts +0 -5
- package/lib/constructs/api-keys/lambdas/api-client-authorization-function.js +37 -5
- package/lib/constructs/api-keys/lambdas/api-key-creation-function.d.ts +0 -5
- package/lib/constructs/api-keys/lambdas/api-key-creation-function.js +37 -5
- package/lib/constructs/api-keys/lambdas/api-key-update-function.d.ts +0 -5
- package/lib/constructs/api-keys/lambdas/api-key-update-function.js +37 -5
- package/lib/constructs/api-keys/lambdas/pre-token-function.d.ts +0 -5
- package/lib/constructs/api-keys/lambdas/pre-token-function.js +37 -5
- package/lib/constructs/api-keys/lambdas/pre-token.lambda.js +5 -2
- package/lib/extensions/ApiGatewayExtension.js +3 -4
- package/lib/extensions/ApplicationContainer.js +3 -4
- package/lib/extensions/ApplicationLoadBalancerExtension.js +9 -4
- package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +3 -4
- package/lib/extensions/CloudMapExtension.js +9 -4
- package/lib/extensions/DeactivatableServiceExtension.js +2 -4
- package/lib/extensions/DeploymentConfigExtension.js +3 -4
- package/lib/extensions/DocumentDbAccessExtension.js +39 -5
- package/lib/extensions/DomainEventMessagingExtension.js +8 -6
- package/lib/extensions/EfsMountExtension.js +6 -4
- package/lib/extensions/ExecExtension.js +3 -1
- package/lib/extensions/ExtraContainerExtension.js +38 -5
- package/lib/extensions/HTTPApiExtension.js +3 -4
- package/lib/extensions/LogExtension.js +40 -5
- package/lib/extensions/ModifyContainerDefinitionExtension.js +4 -4
- package/lib/extensions/ModifyTaskDefinitionExtension.js +3 -4
- package/lib/extensions/OpenIdExtension.js +44 -5
- package/lib/extensions/OpenTelemetryExtension.js +4 -4
- package/lib/extensions/PostgresDbAccessExtension.js +50 -5
- package/lib/extensions/SharedVolumeExtension.js +4 -4
- package/lib/extensions/TcpKeepAliveExtension.js +4 -4
- package/lib/platform/ApiGateway.js +20 -18
- package/lib/platform/ApiGatewayVpcLink.js +19 -23
- package/lib/platform/ApplicationLoadBalancer.js +4 -4
- package/lib/platform/ApplicationLoadBalancerV2.d.ts +1 -0
- package/lib/platform/ApplicationLoadBalancerV2.js +41 -37
- package/lib/platform/AuroraPostgresDB.js +80 -40
- package/lib/platform/BTCLogGroup.js +7 -9
- package/lib/platform/CognitoUserPool.js +45 -45
- package/lib/platform/DefaultUserPoolClients.js +4 -4
- package/lib/platform/DocumentDB.js +20 -21
- package/lib/platform/EcsCluster.js +15 -19
- package/lib/platform/EfsFileSystem.js +4 -4
- package/lib/platform/HostedZone.js +17 -21
- package/lib/platform/PrivateDnsNamespace.js +23 -27
- package/lib/platform/ResourceServer.js +4 -4
- package/lib/platform/Vpc.js +23 -24
- package/lib/platform/VpcV2.js +11 -15
- package/lib/stacks/ApplicationStack.js +2 -4
- package/lib/utils/BasePlatformStackResolver.js +2 -4
- package/lib/utils/StackParameter.js +4 -4
- package/lib/utils/configFileParsing.js +37 -4
- package/package.json +72 -65
- package/renovate.json5 +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.23.6](https://github.com/btc-embedded/cdk-extensions/compare/v0.23.5...v0.23.6) (2026-05-28)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* export alb full name fro monitoring ([afbe801](https://github.com/btc-embedded/cdk-extensions/commit/afbe8019782c143abae53dcd24179565e3697dd6))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* fixed generated documentation ([25e91bd](https://github.com/btc-embedded/cdk-extensions/commit/25e91bda3c29dbfdfb66ef2435fa5983ffb53c33))
|
|
13
|
+
|
|
14
|
+
## [0.23.5](https://github.com/btc-embedded/cdk-extensions/compare/v0.23.4...v0.23.5) (2026-05-27)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* export alb arn ([d7fdd2b](https://github.com/btc-embedded/cdk-extensions/commit/d7fdd2bb17895fcbdb3aa91720403b01f37be251))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* fixed documentation ([9c86d56](https://github.com/btc-embedded/cdk-extensions/commit/9c86d5649e17a9e2d2d57e225e9f8557d61390b3))
|
|
25
|
+
* reverted yarn.lock file ([f86cc4a](https://github.com/btc-embedded/cdk-extensions/commit/f86cc4a0d757a9c487aaf26bb725035912ecc393))
|
|
26
|
+
* update fast-xml dependency ([38bad2b](https://github.com/btc-embedded/cdk-extensions/commit/38bad2b41c8ca025d83b6c8f8781bb8854b22ab0))
|
|
27
|
+
|
|
2
28
|
## [0.23.4](https://github.com/btc-embedded/cdk-extensions/compare/v0.23.3...v0.23.4) (2026-05-06)
|
|
3
29
|
|
|
4
30
|
|
package/assets/cli/catnip.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var $Ft=Object.create;var $N=Object.defineProperty;var OFt=Object.getOwnPropertyDescriptor;var NFt=Object.getOwnPropertyNames;var LFt=Object.getPrototypeOf,kFt=Object.prototype.hasOwnProperty;var R=(t,e)=>()=>(t&&(e=t(t=0)),e);var O=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Et=(t,e)=>{for(var r in e)$N(t,r,{get:e[r],enumerable:!0})},iAe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of NFt(e))!kFt.call(t,s)&&s!==r&&$N(t,s,{get:()=>e[s],enumerable:!(n=OFt(e,s))||n.enumerable});return t};var T=(t,e,r)=>(r=t!=null?$Ft(LFt(t)):{},iAe(e||!t||!t.__esModule?$N(r,"default",{value:t,enumerable:!0}):r,t)),ne=t=>iAe($N({},"__esModule",{value:!0}),t);var jI=O(M7=>{var ON=class extends Error{constructor(e,r,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=e,this.nestedError=void 0}},k7=class extends ON{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};M7.CommanderError=ON;M7.InvalidArgumentError=k7});var NN=O(F7=>{var{InvalidArgumentError:MFt}=jI(),U7=class{constructor(e,r){switch(this.description=r||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,r){return r===this.defaultValue||!Array.isArray(r)?[e]:(r.push(e),r)}default(e,r){return this.defaultValue=e,this.defaultValueDescription=r,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(r,n)=>{if(!this.argChoices.includes(r))throw new MFt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,n):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function UFt(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}F7.Argument=U7;F7.humanReadableArgName=UFt});var B7=O(G7=>{var{humanReadableArgName:FFt}=NN(),q7=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let r=e.commands.filter(s=>!s._hidden),n=e._getHelpCommand();return n&&!n._hidden&&r.push(n),this.sortSubcommands&&r.sort((s,o)=>s.name().localeCompare(o.name())),r}compareOptions(e,r){let n=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return n(e).localeCompare(n(r))}visibleOptions(e){let r=e.options.filter(s=>!s.hidden),n=e._getHelpOption();if(n&&!n.hidden){let s=n.short&&e._findOption(n.short),o=n.long&&e._findOption(n.long);!s&&!o?r.push(n):n.long&&!o?r.push(e.createOption(n.long,n.description)):n.short&&!s&&r.push(e.createOption(n.short,n.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let r=[];for(let n=e.parent;n;n=n.parent){let s=n.options.filter(o=>!o.hidden);r.push(...s)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(r=>{r.description=r.description||e._argsDescription[r.name()]||""}),e.registeredArguments.find(r=>r.description)?e.registeredArguments:[]}subcommandTerm(e){let r=e.registeredArguments.map(n=>FFt(n)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,r){return r.visibleCommands(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(s)))),0)}longestOptionTermLength(e,r){return r.visibleOptions(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestGlobalOptionTermLength(e,r){return r.visibleGlobalOptions(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestArgumentTermLength(e,r){return r.visibleArguments(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(s)))),0)}commandUsage(e){let r=e._name;e._aliases[0]&&(r=r+"|"+e._aliases[0]);let n="";for(let s=e.parent;s;s=s.parent)n=s.name()+" "+n;return n+r+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&r.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&r.push(`env: ${e.envVar}`),r.length>0){let n=`(${r.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}argumentDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),r.length>0){let n=`(${r.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}formatItemList(e,r,n){return r.length===0?[]:[n.styleTitle(e),...r,""]}groupItems(e,r,n){let s=new Map;return e.forEach(o=>{let i=n(o);s.has(i)||s.set(i,[])}),r.forEach(o=>{let i=n(o);s.has(i)||s.set(i,[]),s.get(i).push(o)}),s}formatHelp(e,r){let n=r.padWidth(e,r),s=r.helpWidth??80;function o(d,g){return r.formatItem(d,n,g,r)}let i=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(e))}`,""],a=r.commandDescription(e);a.length>0&&(i=i.concat([r.boxWrap(r.styleCommandDescription(a),s),""]));let c=r.visibleArguments(e).map(d=>o(r.styleArgumentTerm(r.argumentTerm(d)),r.styleArgumentDescription(r.argumentDescription(d))));if(i=i.concat(this.formatItemList("Arguments:",c,r)),this.groupItems(e.options,r.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,g)=>{let S=d.map(y=>o(r.styleOptionTerm(r.optionTerm(y)),r.styleOptionDescription(r.optionDescription(y))));i=i.concat(this.formatItemList(g,S,r))}),r.showGlobalOptions){let d=r.visibleGlobalOptions(e).map(g=>o(r.styleOptionTerm(r.optionTerm(g)),r.styleOptionDescription(r.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",d,r))}return this.groupItems(e.commands,r.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,g)=>{let S=d.map(y=>o(r.styleSubcommandTerm(r.subcommandTerm(y)),r.styleSubcommandDescription(r.subcommandDescription(y))));i=i.concat(this.formatItemList(g,S,r))}),i.join(`
|
|
2
|
+
"use strict";var $Ft=Object.create;var $N=Object.defineProperty;var OFt=Object.getOwnPropertyDescriptor;var NFt=Object.getOwnPropertyNames;var LFt=Object.getPrototypeOf,kFt=Object.prototype.hasOwnProperty;var R=(t,e)=>()=>(t&&(e=t(t=0)),e);var O=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Et=(t,e)=>{for(var r in e)$N(t,r,{get:e[r],enumerable:!0})},iAe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of NFt(e))!kFt.call(t,s)&&s!==r&&$N(t,s,{get:()=>e[s],enumerable:!(n=OFt(e,s))||n.enumerable});return t};var T=(t,e,r)=>(r=t!=null?$Ft(LFt(t)):{},iAe(e||!t||!t.__esModule?$N(r,"default",{value:t,enumerable:!0}):r,t)),ne=t=>iAe($N({},"__esModule",{value:!0}),t);var jI=O(M7=>{var ON=class extends Error{constructor(e,r,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=e,this.nestedError=void 0}},k7=class extends ON{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};M7.CommanderError=ON;M7.InvalidArgumentError=k7});var NN=O(F7=>{var{InvalidArgumentError:MFt}=jI(),U7=class{constructor(e,r){switch(this.description=r||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,r){return r===this.defaultValue||!Array.isArray(r)?[e]:(r.push(e),r)}default(e,r){return this.defaultValue=e,this.defaultValueDescription=r,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(r,n)=>{if(!this.argChoices.includes(r))throw new MFt(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,n):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function UFt(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}F7.Argument=U7;F7.humanReadableArgName=UFt});var B7=O(G7=>{var{humanReadableArgName:FFt}=NN(),q7=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let r=e.commands.filter(s=>!s._hidden),n=e._getHelpCommand();return n&&!n._hidden&&r.push(n),this.sortSubcommands&&r.sort((s,o)=>s.name().localeCompare(o.name())),r}compareOptions(e,r){let n=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return n(e).localeCompare(n(r))}visibleOptions(e){let r=e.options.filter(s=>!s.hidden),n=e._getHelpOption();if(n&&!n.hidden){let s=n.short&&e._findOption(n.short),o=n.long&&e._findOption(n.long);!s&&!o?r.push(n):n.long&&!o?r.push(e.createOption(n.long,n.description)):n.short&&!s&&r.push(e.createOption(n.short,n.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let r=[];for(let n=e.parent;n;n=n.parent){let s=n.options.filter(o=>!o.hidden);r.push(...s)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(r=>{r.description=r.description||e._argsDescription[r.name()]||""}),e.registeredArguments.find(r=>r.description)?e.registeredArguments:[]}subcommandTerm(e){let r=e.registeredArguments.map(n=>FFt(n)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,r){return r.visibleCommands(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(s)))),0)}longestOptionTermLength(e,r){return r.visibleOptions(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestGlobalOptionTermLength(e,r){return r.visibleGlobalOptions(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleOptionTerm(r.optionTerm(s)))),0)}longestArgumentTermLength(e,r){return r.visibleArguments(e).reduce((n,s)=>Math.max(n,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(s)))),0)}commandUsage(e){let r=e._name;e._aliases[0]&&(r=r+"|"+e._aliases[0]);let n="";for(let s=e.parent;s;s=s.parent)n=s.name()+" "+n;return n+r+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&r.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&r.push(`env: ${e.envVar}`),r.length>0){let n=`(${r.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}argumentDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),r.length>0){let n=`(${r.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}formatItemList(e,r,n){return r.length===0?[]:[n.styleTitle(e),...r,""]}groupItems(e,r,n){let s=new Map;return e.forEach(o=>{let i=n(o);s.has(i)||s.set(i,[])}),r.forEach(o=>{let i=n(o);s.has(i)||s.set(i,[]),s.get(i).push(o)}),s}formatHelp(e,r){let n=r.padWidth(e,r),s=r.helpWidth??80;function o(d,g){return r.formatItem(d,n,g,r)}let i=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(e))}`,""],a=r.commandDescription(e);a.length>0&&(i=i.concat([r.boxWrap(r.styleCommandDescription(a),s),""]));let c=r.visibleArguments(e).map(d=>o(r.styleArgumentTerm(r.argumentTerm(d)),r.styleArgumentDescription(r.argumentDescription(d))));if(i=i.concat(this.formatItemList("Arguments:",c,r)),this.groupItems(e.options,r.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,g)=>{let S=d.map(y=>o(r.styleOptionTerm(r.optionTerm(y)),r.styleOptionDescription(r.optionDescription(y))));i=i.concat(this.formatItemList(g,S,r))}),r.showGlobalOptions){let d=r.visibleGlobalOptions(e).map(g=>o(r.styleOptionTerm(r.optionTerm(g)),r.styleOptionDescription(r.optionDescription(g))));i=i.concat(this.formatItemList("Global Options:",d,r))}return this.groupItems(e.commands,r.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,g)=>{let S=d.map(y=>o(r.styleSubcommandTerm(r.subcommandTerm(y)),r.styleSubcommandDescription(r.subcommandDescription(y))));i=i.concat(this.formatItemList(g,S,r))}),i.join(`
|
|
3
3
|
`)}displayWidth(e){return aAe(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,r){return Math.max(r.longestOptionTermLength(e,r),r.longestGlobalOptionTermLength(e,r),r.longestSubcommandTermLength(e,r),r.longestArgumentTermLength(e,r))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,r,n,s){let i=" ".repeat(2);if(!n)return i+e;let a=e.padEnd(r+e.length-s.displayWidth(e)),c=2,p=(this.helpWidth??80)-r-c-2,d;return p<this.minWidthToWrap||s.preformatted(n)?d=n:d=s.boxWrap(n,p).replace(/\n/g,`
|
|
4
4
|
`+" ".repeat(r+c)),i+a+" ".repeat(c)+d.replace(/\n/g,`
|
|
5
5
|
${i}`)}boxWrap(e,r){if(r<this.minWidthToWrap)return e;let n=e.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,o=[];return n.forEach(i=>{let a=i.match(s);if(a===null){o.push("");return}let c=[a.shift()],l=this.displayWidth(c[0]);a.forEach(p=>{let d=this.displayWidth(p);if(l+d<=r){c.push(p),l+=d;return}o.push(c.join(""));let g=p.trimStart();c=[g],l=this.displayWidth(g)}),o.push(c.join(""))}),o.join(`
|
|
@@ -236,7 +236,7 @@ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.ht
|
|
|
236
236
|
`),Ic={insert:"+ ",delete:"- ",replace:"! ",equal:" "},Yn=!1,Dn=[],Va=new s(null,z,K).getGroupedOpcodes(),Kr=0,cn=Va.length;Kr<cn;Kr++)if(ft=Va[Kr],!Yn){if(Yn=!0,Ye=H?` ${H}`:"",xi=Q?` ${Q}`:"",Dn.push(`*** ${L}${Ye}${Ne}`),Dn.push(`--- ${G}${xi}${Ne}`),[xt,Dr]=[ft[0],ft[ft.length-1]],Dn.push("***************"+Ne),Le=l(xt[1],Dr[2]),Dn.push(`*** ${Le} ****${Ne}`),o((function(){var Di,js,hn;for(hn=[],js=0,Di=ft.length;js<Di;js++)[In,ve,ve,ve,ve]=ft[js],hn.push(In==="replace"||In==="delete");return hn})())){for(Mo=0,mo=ft.length;Mo<mo;Mo++)if([In,Mt,tr,ve,ve]=ft[Mo],In!=="insert")for(Pc=z.slice(Mt,tr),Hs=0,cs=Pc.length;Hs<cs;Hs++)us=Pc[Hs],Dn.push(Ic[In]+us)}if(Ue=l(xt[3],Dr[4]),Dn.push(`--- ${Ue} ----${Ne}`),o((function(){var Di,js,hn;for(hn=[],js=0,Di=ft.length;js<Di;js++)[In,ve,ve,ve,ve]=ft[js],hn.push(In==="replace"||In==="insert");return hn})())){for(ws=0,Mu=ft.length;ws<Mu;ws++)if([In,ve,ve,xr,er]=ft[ws],In!=="delete")for(Vs=K.slice(xr,er),Ha=0,fo=Vs.length;Ha<fo;Ha++)us=Vs[Ha],Dn.push(Ic[In]+us)}}return Dn},$=function(z,K,L,G=r){return new t(L,G).compare(z,K)},B=function(z,K){var L,G,H,Q,fe,Ne,ve;if(ve={1:"- ",2:"+ "}[K],!ve)throw new Error(`unknow delta choice (must be 1 or 2): ${K}`);for(fe=[" ",ve],Q=[],L=0,G=z.length;L<G;L++)H=z[L],Ne=H.slice(0,2),W.call(fe,Ne)>=0&&Q.push(H.slice(2));return Q},Ea._arrayCmp=i,Ea.SequenceMatcher=s,Ea.getCloseMatches=I,Ea._countLeading=c,Ea.Differ=t,Ea.IS_LINE_JUNK=n,Ea.IS_CHARACTER_JUNK=r,Ea._formatRangeUnified=p,Ea.unifiedDiff=j,Ea._formatRangeContext=l,Ea.contextDiff=S,Ea.ndiff=$,Ea.restore=B}).call(Ea)});var RUt=O((iUs,_Ut)=>{_Ut.exports=yUt()});var zPe=O((aUs,CUt)=>{var VKn=function(t){let e=typeof t;return t==null?"null":e==="object"&&t.constructor===Array?"array":e==="object"&&t instanceof Date?"date":e},WPe=function(t,e){let r=typeof t;if(r==="array")return t.map(n=>WPe(n,e));if(r==="object"){for(let n in t)t[n]=WPe(t[n],e);return t}else return r==="number"&&Number.isFinite(t)&&!Number.isInteger(t)?+t.toFixed(e):t};CUt.exports={extendedTypeOf:VKn,roundObj:WPe}});var AUt=O((cUs,PUt)=>{var IUt={};PUt.exports=IUt;var TUt={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(TUt).forEach(function(t){var e=TUt[t],r=IUt[t]=[];r.open="\x1B["+e[0]+"m",r.close="\x1B["+e[1]+"m"})});var bUt=O((uUs,vUt)=>{"use strict";vUt.exports=function(t,e){e=e||process.argv;var r=e.indexOf("--"),n=/^-{1,2}/.test(t)?"":"--",s=e.indexOf(n+t);return s!==-1&&(r===-1?!0:s<r)}});var DUt=O((lUs,xUt)=>{"use strict";var jKn=require("os"),kl=bUt(),ya=process.env,LI=void 0;kl("no-color")||kl("no-colors")||kl("color=false")?LI=!1:(kl("color")||kl("colors")||kl("color=true")||kl("color=always"))&&(LI=!0);"FORCE_COLOR"in ya&&(LI=ya.FORCE_COLOR.length===0||parseInt(ya.FORCE_COLOR,10)!==0);function WKn(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function zKn(t){if(LI===!1)return 0;if(kl("color=16m")||kl("color=full")||kl("color=truecolor"))return 3;if(kl("color=256"))return 2;if(t&&!t.isTTY&&LI!==!0)return 0;var e=LI?1:0;if(process.platform==="win32"){var r=jKn.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in ya)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(function(s){return s in ya})||ya.CI_NAME==="codeship"?1:e;if("TEAMCITY_VERSION"in ya)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ya.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in ya){var n=parseInt((ya.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ya.TERM_PROGRAM){case"iTerm.app":return n>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ya.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(ya.TERM)||"COLORTERM"in ya?1:(ya.TERM==="dumb",e)}function KPe(t){var e=zKn(t);return WKn(e)}xUt.exports={supportsColor:KPe,stdout:KPe(process.stdout),stderr:KPe(process.stderr)}});var $Ut=O((dUs,wUt)=>{wUt.exports=function(e,r){var n="";e=e||"Run the trap, drop the bass",e=e.split("");var s={a:["@","\u0104","\u023A","\u0245","\u0394","\u039B","\u0414"],b:["\xDF","\u0181","\u0243","\u026E","\u03B2","\u0E3F"],c:["\xA9","\u023B","\u03FE"],d:["\xD0","\u018A","\u0500","\u0501","\u0502","\u0503"],e:["\xCB","\u0115","\u018E","\u0258","\u03A3","\u03BE","\u04BC","\u0A6C"],f:["\u04FA"],g:["\u0262"],h:["\u0126","\u0195","\u04A2","\u04BA","\u04C7","\u050A"],i:["\u0F0F"],j:["\u0134"],k:["\u0138","\u04A0","\u04C3","\u051E"],l:["\u0139"],m:["\u028D","\u04CD","\u04CE","\u0520","\u0521","\u0D69"],n:["\xD1","\u014B","\u019D","\u0376","\u03A0","\u048A"],o:["\xD8","\xF5","\xF8","\u01FE","\u0298","\u047A","\u05DD","\u06DD","\u0E4F"],p:["\u01F7","\u048E"],q:["\u09CD"],r:["\xAE","\u01A6","\u0210","\u024C","\u0280","\u042F"],s:["\xA7","\u03DE","\u03DF","\u03E8"],t:["\u0141","\u0166","\u0373"],u:["\u01B1","\u054D"],v:["\u05D8"],w:["\u0428","\u0460","\u047C","\u0D70"],x:["\u04B2","\u04FE","\u04FC","\u04FD"],y:["\xA5","\u04B0","\u04CB"],z:["\u01B5","\u0240"]};return e.forEach(function(o){o=o.toLowerCase();var i=s[o]||[" "],a=Math.floor(Math.random()*i.length);typeof s[o]<"u"?n+=s[o][a]:n+=o}),n}});var NUt=O((pUs,OUt)=>{OUt.exports=function(e,r){e=e||" he is here ";var n={up:["\u030D","\u030E","\u0304","\u0305","\u033F","\u0311","\u0306","\u0310","\u0352","\u0357","\u0351","\u0307","\u0308","\u030A","\u0342","\u0313","\u0308","\u034A","\u034B","\u034C","\u0303","\u0302","\u030C","\u0350","\u0300","\u0301","\u030B","\u030F","\u0312","\u0313","\u0314","\u033D","\u0309","\u0363","\u0364","\u0365","\u0366","\u0367","\u0368","\u0369","\u036A","\u036B","\u036C","\u036D","\u036E","\u036F","\u033E","\u035B","\u0346","\u031A"],down:["\u0316","\u0317","\u0318","\u0319","\u031C","\u031D","\u031E","\u031F","\u0320","\u0324","\u0325","\u0326","\u0329","\u032A","\u032B","\u032C","\u032D","\u032E","\u032F","\u0330","\u0331","\u0332","\u0333","\u0339","\u033A","\u033B","\u033C","\u0345","\u0347","\u0348","\u0349","\u034D","\u034E","\u0353","\u0354","\u0355","\u0356","\u0359","\u035A","\u0323"],mid:["\u0315","\u031B","\u0300","\u0301","\u0358","\u0321","\u0322","\u0327","\u0328","\u0334","\u0335","\u0336","\u035C","\u035D","\u035E","\u035F","\u0360","\u0362","\u0338","\u0337","\u0361"," \u0489"]},s=[].concat(n.up,n.down,n.mid);function o(c){var l=Math.floor(Math.random()*c);return l}function i(c){var l=!1;return s.filter(function(p){l=p===c}),l}function a(c,l){var p="",d,g;l=l||{},l.up=typeof l.up<"u"?l.up:!0,l.mid=typeof l.mid<"u"?l.mid:!0,l.down=typeof l.down<"u"?l.down:!0,l.size=typeof l.size<"u"?l.size:"maxi",c=c.split("");for(g in c)if(!i(g)){switch(p=p+c[g],d={up:0,down:0,mid:0},l.size){case"mini":d.up=o(8),d.mid=o(2),d.down=o(8);break;case"maxi":d.up=o(16)+3,d.mid=o(4)+1,d.down=o(64)+3;break;default:d.up=o(8)+1,d.mid=o(6)/2,d.down=o(8)+1;break}var S=["up","mid","down"];for(var y in S)for(var I=S[y],A=0;A<=d[I];A++)l[I]&&(p=p+n[I][o(n[I].length)])}return p}return a(e,r)}});var kUt=O((mUs,LUt)=>{LUt.exports=function(t){return function(e,r,n){if(e===" ")return e;switch(r%3){case 0:return t.red(e);case 1:return t.white(e);case 2:return t.blue(e)}}}});var UUt=O((fUs,MUt)=>{MUt.exports=function(t){return function(e,r,n){return r%2===0?e:t.inverse(e)}}});var qUt=O((gUs,FUt)=>{FUt.exports=function(t){var e=["red","yellow","green","blue","magenta"];return function(r,n,s){return r===" "?r:t[e[n++%e.length]](r)}}});var BUt=O((hUs,GUt)=>{GUt.exports=function(t){var e=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(r,n,s){return r===" "?r:t[e[Math.round(Math.random()*(e.length-2))]](r)}}});var KUt=O((EUs,zUt)=>{var Qt={};zUt.exports=Qt;Qt.themes={};var KKn=require("util"),$_=Qt.styles=AUt(),VUt=Object.defineProperties,QKn=new RegExp(/[\r\n]+/g);Qt.supportsColor=DUt().supportsColor;typeof Qt.enabled>"u"&&(Qt.enabled=Qt.supportsColor()!==!1);Qt.enable=function(){Qt.enabled=!0};Qt.disable=function(){Qt.enabled=!1};Qt.stripColors=Qt.strip=function(t){return(""+t).replace(/\x1B\[\d+m/g,"")};var SUs=Qt.stylize=function(e,r){if(!Qt.enabled)return e+"";var n=$_[r];return!n&&r in Qt?Qt[r](e):n.open+e+n.close},YKn=/[|\\{}()[\]^$+*?.]/g,JKn=function(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(YKn,"\\$&")};function jUt(t){var e=function r(){return ZKn.apply(r,arguments)};return e._styles=t,e.__proto__=XKn,e}var WUt=(function(){var t={};return $_.grey=$_.gray,Object.keys($_).forEach(function(e){$_[e].closeRe=new RegExp(JKn($_[e].close),"g"),t[e]={get:function(){return jUt(this._styles.concat(e))}}}),t})(),XKn=VUt(function(){},WUt);function ZKn(){var t=Array.prototype.slice.call(arguments),e=t.map(function(i){return i!=null&&i.constructor===String?i:KKn.inspect(i)}).join(" ");if(!Qt.enabled||!e)return e;for(var r=e.indexOf(`
|
|
237
237
|
`)!=-1,n=this._styles,s=n.length;s--;){var o=$_[n[s]];e=o.open+e.replace(o.closeRe,o.open)+o.close,r&&(e=e.replace(QKn,function(i){return o.close+i+o.open}))}return e}Qt.setTheme=function(t){if(typeof t=="string"){console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));");return}for(var e in t)(function(r){Qt[r]=function(n){if(typeof t[r]=="object"){var s=n;for(var o in t[r])s=Qt[t[r][o]](s);return s}return Qt[t[r]](n)}})(e)};function e8n(){var t={};return Object.keys(WUt).forEach(function(e){t[e]={get:function(){return jUt([e])}}}),t}var t8n=function(e,r){var n=r.split("");return n=n.map(e),n.join("")};Qt.trap=$Ut();Qt.zalgo=NUt();Qt.maps={};Qt.maps.america=kUt()(Qt);Qt.maps.zebra=UUt()(Qt);Qt.maps.rainbow=qUt()(Qt);Qt.maps.random=BUt()(Qt);for(HUt in Qt.maps)(function(t){Qt[t]=function(e){return t8n(Qt.maps[t],e)}})(HUt);var HUt;VUt(Qt,e8n())});var YUt=O((yUs,QUt)=>{var r8n=KUt();QUt.exports=r8n});var eFt=O((_Us,ZUt)=>{var JUt=YUt(),{extendedTypeOf:XUt}=zPe(),n8n={" "(t){return t},"+":JUt.green,"-":JUt.red},VS=function(t,e,r,n,s,o){let i,a=e?`${e}: `:"",c=o+" ",l=p=>{let d=t.maxElisions===void 0?1/0:t.maxElisions;if(p<d)for(let g=0;g<p;g++)n(" ",c+"...");else n(" ",c+`... (${p} entries)`)};switch(XUt(r)){case"object":if("__old"in r&&"__new"in r&&Object.keys(r).length===2)return VS(t,e,r.__old,n,"-",o),VS(t,e,r.__new,n,"+",o);n(s,`${o}${a}{`);for(let p of Object.keys(r)){let d;i=r[p],(d=p.match(/^(.*)__deleted$/))?VS(t,d[1],i,n,"-",c):(d=p.match(/^(.*)__added$/))?VS(t,d[1],i,n,"+",c):VS(t,p,i,n,s,c)}return n(s,`${o}}`);case"array":{n(s,`${o}${a}[`);let p=!0;for(let d of r)(XUt(d)!=="array"||!(d.length===2||d.length===1&&d[0]===" ")||typeof d[0]!="string"||d[0].length!==1||![" ","-","+","~"].includes(d[0]))&&(p=!1);if(p){let d,g=0;for([d,i]of r)if(d===" "&&i==null)g++;else{if(g>0&&l(g),g=0,![" ","~","+","-"].includes(d))throw new Error(`Unexpected op '${d}' in ${JSON.stringify(r,null,2)}`);d==="~"&&(d=" "),VS(t,"",i,n,d,c)}g>0&&l(g)}else for(i of r)VS(t,"",i,n,s,c);return n(s,`${o}]`)}default:if(r===0||r===null||r===!1||r===""||r)return n(s,o+a+JSON.stringify(r))}},QPe=(t,e,r)=>VS(e,"",t,r," ",""),s8n=function(t,e={}){let r=[];return QPe(t,e,(n,s)=>r.push(`${n}${s}`)),r},o8n=function(t,e={}){let r=[];return QPe(t,e,function(n,s){return e.color==null||e.color?r.push(((e.theme!=null?e.theme[n]:void 0)!=null?e.theme!=null?e.theme[n]:void 0:n8n[n])(`${n}${s}`)+`
|
|
238
238
|
`):r.push(`${n}${s}
|
|
239
|
-
`)}),r.join("")};ZUt.exports={colorize:o8n,colorizeToArray:s8n,colorizeToCallback:QPe}});var oFt=O((RUs,sFt)=>{var{SequenceMatcher:i8n}=RUt(),{extendedTypeOf:A7,roundObj:tFt}=zPe(),{colorize:rFt,colorizeToCallback:a8n}=eFt(),YPe=class{constructor(e){e.outputKeys=e.outputKeys||[],e.excludeKeys=e.excludeKeys||[],this.options=e}isScalar(e){return typeof e!="object"||e===null}objectDiff(e,r){let n={},s=0,o=!0;for(let[i,a]of Object.entries(e))if(!this.options.outputNewOnly){let c="__deleted";!(i in r)&&!this.options.excludeKeys.includes(i)&&(n[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(r)){let c=this.options.outputNewOnly?"":"__added";!(i in e)&&!this.options.excludeKeys.includes(i)&&(n[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(e))if(i in r){if(this.options.excludeKeys.includes(i))continue;s+=20;let c=r[i],l=this.diff(a,c);l.equal?(this.options.full||this.options.outputKeys.includes(i))&&(n[i]=a):(n[i]=l.result,o=!1),s+=Math.min(20,Math.max(-10,l.score/5))}return o?(s=100*Math.max(Object.keys(e).length,.5),this.options.full||(n=void 0)):s=Math.max(0,s),{score:s,result:n,equal:o}}findMatchingObject(e,r,n){let s=null;for(let[o,{item:i,index:a}]of Object.entries(n))if(o!=="__next"){let c=Math.abs(a-r);if(A7(e)===A7(i)){let{score:l}=this.diff(e,i);(!s||l>s.score||l===s.score&&c<s.indexDistance)&&(s={score:l,key:o,indexDistance:c})}}return s}scalarize(e,r,n){let s=[];if(n){let i={};for(let a=0;a<e.length;a++){let c=e[a];if(this.isScalar(c))continue;let l=this.findMatchingObject(c,a,n);l&&(!i[l.key]||l.score>i[l.key].score)&&(i[l.key]={score:l.score,index:a})}for(let[a,c]of Object.entries(i))s[c.index]=a}let o=[];for(let i=0;i<e.length;i++){let a=e[i];if(this.isScalar(a))o.push(a);else{let c=s[i]||"__$!SCALAR"+r.__next++;r[c]={item:a,index:i},o.push(c)}}return o}isScalarized(e,r){return typeof e=="string"&&e in r}descalarize(e,r){return this.isScalarized(e,r)?r[e].item:e}arrayDiff(e,r){let n={__next:1},s=this.scalarize(e,n),o={__next:n.__next},i=this.scalarize(r,o,n);this.options.sort&&(s.sort(),i.sort());let a=new i8n(null,s,i).getOpcodes(),c=[],l=0,p=!0;for(let[d,g,S,y,I]of a){let A,w,$,B,j,W,z,K;switch(d==="equal"||this.options.keysOnly&&d==="replace"||(p=!1),d){case"equal":for(A=g,B=S,$=g<=B;$?A<B:A>B;$?A++:A--){let L=s[A];if(this.isScalarized(L,n)){if(!this.isScalarized(L,o))throw new Error(`internal bug: isScalarized(item, originals1) != isScalarized(item, originals2) for item ${JSON.stringify(L)}`);let G=this.descalarize(L,n),H=this.descalarize(L,o),Q=this.diff(G,H);Q.equal?this.options.full||this.options.keepUnchangedValues?c.push([" ",G]):c.push([" "]):(c.push(["~",Q.result]),p=!1)}else this.options.full||this.options.keepUnchangedValues?c.push([" ",L]):c.push([" "]);l+=10}break;case"delete":for(A=g,W=S,j=g<=W;j?A<W:A>W;j?A++:A--)c.push(["-",this.descalarize(s[A],n)]),l-=5;break;case"insert":for(w=y,K=I,z=y<=K;z?w<K:w>K;z?w++:w--)c.push(["+",this.descalarize(i[w],o)]),l-=5;break;case"replace":if(this.options.keysOnly){let L,G;for(A=g,G=S,L=g<=G;L?A<G:A>G;L?A++:A--){let H=this.diff(this.descalarize(s[A],n),this.descalarize(i[A-g+y],o));H.equal?c.push([" "]):(c.push(["~",H.result]),p=!1)}}else{let L,G,H,Q;for(A=g,G=S,L=g<=G;L?A<G:A>G;L?A++:A--)c.push(["-",this.descalarize(s[A],n)]),l-=5;for(w=y,Q=I,H=y<=Q;H?w<Q:w>Q;H?w++:w--)c.push(["+",this.descalarize(i[w],o)]),l-=5}break}}return p||a.length===0?(this.options.full?c=e:c=void 0,l=100):l=Math.max(0,l),{score:l,result:c,equal:p}}diff(e,r){let n=A7(e),s=A7(r);if(n===s)switch(n){case"object":return this.objectDiff(e,r);case"array":return this.arrayDiff(e,r)}let o=100,i=e,a;return this.options.keysOnly?(a=!0,i=void 0):(n==="date"&&s==="date"?a=e.getTime()===r.getTime():a=e===r,a?this.options.full||(i=void 0):(o=0,this.options.outputNewOnly?i=r:i={__old:e,__new:r})),{score:o,result:i,equal:a}}};function nFt(t,e,r={}){return r.precision!==void 0&&(t=tFt(t,r.precision),e=tFt(e,r.precision)),new YPe(r).diff(t,e).result}function c8n(t,e,r={}){return rFt(nFt(t,e,r),r)}sFt.exports={diff:nFt,diffString:c8n,colorize:rFt,colorizeToCallback:a8n}});var lFt=O(($Us,R8n)=>{R8n.exports={name:"@btc-embedded/cdk-extensions",description:"A collection of useful CDK extensions and common logic",repository:{type:"git",url:"https://github.com/btc-embedded/cdk-extensions.git"},bin:{catnip:"assets/cli/catnip.js"},scripts:{build:"npx projen build",bump:"npx projen bump",bundle:"npx projen bundle","bundle:cli/catnip":"npx projen bundle:cli/catnip","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-creation.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda","bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-update.lambda":"npx projen bundle:constructs/api-keys/lambdas/api-key-update.lambda","bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch","bundle:constructs/api-keys/lambdas/pre-token.lambda":"npx projen bundle:constructs/api-keys/lambdas/pre-token.lambda","bundle:constructs/api-keys/lambdas/pre-token.lambda:watch":"npx projen bundle:constructs/api-keys/lambdas/pre-token.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda":"npx projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch":"npx projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch",clobber:"npx projen clobber",compat:"npx projen compat",compile:"npx projen compile",default:"npx projen default",docgen:"npx projen docgen",eject:"npx projen eject",eslint:"npx projen eslint","eslint:ci":"npx projen eslint:ci",integ:"npx projen integ","integ:update":"npx projen integ:update",package:"npx projen package","package-all":"npx projen package-all","package:js":"npx projen package:js","post-compile":"npx projen post-compile","post-upgrade":"npx projen post-upgrade","pre-compile":"npx projen pre-compile","publish:git":"npx projen publish:git",release:"npx projen release",test:"npx projen test","test:watch":"npx projen test:watch",typecheck:"npx projen typecheck",unbump:"npx projen unbump","update-docs":"npx projen update-docs",upgrade:"npx projen upgrade",watch:"npx projen watch","yalc:watch":"npx projen yalc:watch",projen:"npx projen"},author:{name:"BTC Embedded Systems AG",url:"https://www.btc-embedded.com",organization:!0},devDependencies:{"@aws-cdk-containers/ecs-service-extensions":"2.0.1-alpha.535","@aws-cdk/integ-runner":"latest","@aws-cdk/integ-tests-alpha":"latest","@aws-sdk/client-cloudformation":"^3.993.0","@aws-sdk/client-cloudwatch-logs":"^3.993.0","@aws-sdk/client-ecs":"^3.993.0","@aws-sdk/client-ssm":"^3.999.0","@aws-sdk/credential-providers":"^3.993.0","@types/aws-api-gateway-client":"^0.3.3","@types/jest":"^30.0.0","@types/json-diff":"^1.0.3","@types/node":"^24.10.9","@types/url-template":"^3.0.0","@typescript-eslint/eslint-plugin":"^8","@typescript-eslint/parser":"^8","aws-api-gateway-client":"^0.3.7","aws-cdk-lib":"2.232.1","aws-sdk-client-mock":"^4.1.0","cdk-nag":"^2.37.55",commander:"^14.0.3","commit-and-tag-version":"^12",constructs:"10.0.5",esbuild:"^0.27.1",eslint:"^9","eslint-config-prettier":"^10.1.8","eslint-formatter-gitlab":"^7.0.1","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5",jest:"^30.2.0","jest-junit":"^16",jsii:"~5.9.0","jsii-diff":"^1.125.0","jsii-docgen":"^10.5.0","jsii-pacmak":"^1.125.0","jsii-rosetta":"~5.9.0","json-diff":"^1.0.6",nodemon:"^3.1.11",prettier:"^3.8.0",projen:"^0.99.3","ts-jest":"^29.4.6","ts-node":"^10.9.2",typedoc:"^0.28.16","typedoc-plugin-markdown":"^4.9.0",typescript:"^5.9.3","url-template":"^3.1.1",yalc:"^1.0.0-pre.53"},peerDependencies:{"@aws-cdk-containers/ecs-service-extensions":">=2.0.1-alpha.535","aws-cdk-lib":"^2.232.1",constructs:"^10.0.5"},dependencies:{"@aws-lambda-powertools/logger":"^2.30.2","@aws-lambda-powertools/parameters":"^2.30.2","@aws-lambda-powertools/parser":"^2.30.2","@aws-sdk/client-cognito-identity-provider":"^3.965.0","@aws-sdk/client-dynamodb":"^3.948.0","@aws-sdk/client-secrets-manager":"^3.971.0","@aws-sdk/lib-dynamodb":"^3.948.0","@types/aws-lambda":"^8.10.159",yaml:"^2.8.2",zod:"~3"},bundledDependencies:["@aws-lambda-powertools/logger","@aws-lambda-powertools/parameters","@aws-lambda-powertools/parser","@aws-sdk/client-cognito-identity-provider","@aws-sdk/client-dynamodb","@aws-sdk/client-secrets-manager","@aws-sdk/lib-dynamodb","@types/aws-lambda","yaml","zod"],resolutions:{"@smithy/types":"^4.12.0","fast-xml-parser":"^5.3.5"},keywords:["cdk"],main:"lib/index.js",license:"Apache-2.0",version:"0.23.5",jest:{coverageProvider:"v8",maxWorkers:4,collectCoverageFrom:["src/**/*.ts"],coveragePathIgnorePatterns:["/node_modules/","\\.generated\\.[jt]s$","<rootDir>/test/","\\.warnings\\.jsii\\.js$"],testMatch:["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],clearMocks:!0,collectCoverage:!0,coverageReporters:["json","lcov","clover","cobertura","text"],coverageDirectory:"coverage",testPathIgnorePatterns:["/node_modules/"],watchPathIgnorePatterns:["/node_modules/"],reporters:["default",["jest-junit",{outputDirectory:"test-reports"}]],transform:{"^.+\\.[t]sx?$":["ts-jest",{tsconfig:"tsconfig.dev.json",diagnostics:!1}]}},types:"lib/index.d.ts",stability:"experimental",jsii:{outdir:"dist",targets:{},tsc:{outDir:"lib",rootDir:"src"},excludeTypescript:["src/cli/**"]},"//":'~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".'}});var yAe=T(EAe(),1),{program:$8n,createCommand:O8n,createArgument:N8n,createOption:L8n,CommanderError:k8n,InvalidArgumentError:M8n,InvalidOptionArgumentError:U8n,Command:_Ae,Argument:F8n,Option:q8n,Help:G8n}=yAe.default;var c1t=T(IE()),u1t=T(b3()),l1t=T(Ape()),d1t=T(Xx()),p1t=T(ZSe()),m1t=T(vPe()),f1t=T(nse());function DI(t){return{...t.region&&{region:t.region},...t.profile&&{credentials:(0,f1t.fromIni)({profile:t.profile})}}}function FS(t){return new c1t.CloudFormationClient(DI(t))}function wI(t){return new d1t.ECSClient(DI(t))}function p7(t){return new u1t.CloudWatchLogsClient(DI(t))}function g1t(t){return new l1t.CognitoIdentityProviderClient(DI(t))}function h1t(t){return new p1t.SecretsManagerClient(DI(t))}function S1t(t){return new m1t.SSMClient(DI(t))}function bPe(t){return{cfClient:FS(t),ecsClient:wI(t),logsClient:p7(t)}}var $I=T(Xx());var xN=T(b3());async function*bN(t,e={}){let r,n=0;for(;;){if(e.maxPages!==void 0&&n>=e.maxPages)return;let s=await t(r);if(n+=1,yield{...s,page:n},!s.nextToken)return;r=s.nextToken}}async function*vi(t,e={}){for await(let r of bN(t,e))for(let n of r.items)yield n}var M6n=50,U6n=10;async function E1t(t,e,r,n,s=U6n){let o=[];for await(let i of bN(async a=>{let c=await t.send(new xN.DescribeLogStreamsCommand({logGroupName:e,orderBy:"LastEventTime",descending:!0,limit:M6n,nextToken:a}));return{items:c.logStreams??[],nextToken:c.nextToken}},{maxPages:s})){let a=i.items;o.push(a.map(l=>l.logStreamName).filter(l=>l!==void 0));let c=a.find(l=>n?l.logStreamName?.endsWith(`/${n}/${r}`):l.logStreamName?.includes(r));if(c?.logStreamName)return c.logStreamName}return o.flatMap(i=>i).find(i=>i.includes(r))}async function xPe(t,e,r){let n=await t.send(new xN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,limit:r,startFromHead:!1}));return{state:{key:e.key,serviceName:e.serviceName,containerName:e.containerName,logGroup:e.logGroup,logStreamName:e.logStreamName,nextToken:n.nextForwardToken},events:n.events??[]}}async function y1t(t,e){let r=await t.send(new xN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,nextToken:e.nextToken}));return{events:r.events??[],nextToken:r.nextForwardToken}}function _1t(t){return new Map(t.map(e=>[e.key,e]))}function F6n(t){let e=t.split("/");return e.length>=3?e[e.length-2]:void 0}async function q6n(t,e,r){let n=[];for await(let s of vi(async o=>{let i=await t.send(new $I.ListTasksCommand({cluster:e,serviceName:r,desiredStatus:"RUNNING",nextToken:o}));return{items:i.taskArns??[],nextToken:i.nextToken}}))n.push(s);return n}async function R1t(t,e){let r=e.split("/").pop()??e,n=F6n(e),o=(await t.send(new $I.DescribeServicesCommand({...n&&{cluster:n},services:[e]}))).services?.[0];if(!o)return{context:void 0,warning:`[${r}] Could not retrieve service details, skipping.`};let i=o.clusterArn??n;if(!i)return{context:void 0,warning:`[${r}] Could not determine cluster, skipping.`};let a=o.taskDefinition;if(!a)return{context:void 0,warning:`[${r}] Missing task definition, skipping.`};let l=((await t.send(new $I.DescribeTaskDefinitionCommand({taskDefinition:a}))).taskDefinition?.containerDefinitions??[]).flatMap(p=>{let d=p.logConfiguration?.options?.["awslogs-group"];return!p.name||!d||p.logConfiguration?.logDriver!=="awslogs"?[]:[{containerName:p.name,logGroup:d}]});return l.length===0?{context:void 0,warning:`[${r}] No awslogs container configuration found, skipping.`}:{context:{serviceArn:e,serviceName:r,clusterArn:i,logConfigs:l},warning:void 0}}async function DPe(t,e,r){let n=await q6n(t,r.clusterArn,r.serviceArn),s=[],o=new Set;for(let i of n){let a=i.split("/").pop()??i;for(let{containerName:c,logGroup:l}of r.logConfigs){let p=await E1t(e,l,a,c);if(!p)continue;let d=`${l}::${p}`;o.has(d)||(o.add(d),s.push({key:d,serviceName:r.serviceName,containerName:c,logGroup:l,logStreamName:p}))}}return s}var C1t=T(IE());async function T1t(t,e){let r=[];for await(let n of vi(async s=>{let o=await t.send(new C1t.ListStackResourcesCommand({StackName:e,NextToken:s}));return{items:o.StackResourceSummaries??[],nextToken:o.NextToken}}))n.ResourceType==="AWS::ECS::Service"&&n.PhysicalResourceId&&r.push(n.PhysicalResourceId);return r}var G6n=2e3,B6n=1e4;function H6n(t,e,r){if(!e)return t;let n=t.filter(s=>s.includes(e));if(n.length===0)throw new Error(`No ECS services matching '${e}' found in stack '${r}'.`);return n}function V6n(t,e){let r=[];for(let n of t)n.warning&&e.displayServiceWarning(n.warning),n.context&&r.push(n.context);return r}function wPe(t,e,r,n){t.displayLogEvents({serviceName:e.serviceName,containerName:e.containerName,events:r,mode:n})}async function j6n(t,e,r,n,s,o){let i=new Map;for(let a of t){let c=await DPe(e.ecsClient,e.logsClient,a);if(c.length===0){r.displayNoRunningStreams(a.serviceName);continue}(await Promise.all(c.map(async p=>{try{return{key:p.key,...await xPe(e.logsClient,p,o)}}catch(d){r.displayPrimeError(p,n.toErrorMessage(d));return}}))).filter(p=>p!==void 0).forEach(p=>{wPe(r,p.state,p.events,s),i.set(p.key,p.state)})}return i}async function W6n(t,e,r,n,s,o){(await Promise.all(Array.from(t.values()).filter(()=>o()).map(async a=>{try{let c=await y1t(e.logsClient,a);return wPe(r,a,c.events,s),{key:a.key,nextToken:c.nextToken}}catch(c){r.displayPollError(a,n.toErrorMessage(c));return}}))).filter(a=>a!==void 0).forEach(a=>{let c=t.get(a.key);c&&(c.nextToken=a.nextToken)})}async function z6n(t,e,r,n,s,o,i){let a=await Promise.all(t.map(async d=>{try{return await DPe(r.ecsClient,r.logsClient,d)}catch(g){return n.displayReconcileError(d.serviceName,s.toErrorMessage(g)),[]}})),c=_1t(a.flatMap(d=>d)),l=Array.from(c.entries()).filter(([d])=>!e.has(d));(await Promise.all(l.map(async([d,g])=>{try{return{key:d,stream:g,...await xPe(r.logsClient,g,i)}}catch(S){n.displayPrimeNewStreamError(g,s.toErrorMessage(S));return}}))).filter(d=>d!==void 0).forEach(d=>{wPe(n,d.state,d.events,o),e.set(d.key,d.state),n.displayStreamStarted(d.stream)}),Array.from(e.keys()).filter(d=>!c.has(d)).forEach(d=>{let g=e.get(d);e.delete(d),g&&n.displayStreamEnded(g)})}async function I1t(t,e,r,n,s=()=>!0){r.displayCommandContext({commandName:"ecs-logs",stackName:t.stackName,region:t.region});let o=await T1t(e.cfClient,t.stackName);if(o.length===0)throw new Error(`No ECS services found in stack '${t.stackName}'.`);let i=H6n(o,t.service,t.stackName);t.output==="raw"&&i.length>1&&r.displayInterleavingWarning();let a=await Promise.all(i.map(d=>R1t(e.ecsClient,d))),c=V6n(a,r),l=await j6n(c,e,r,n,t.output,t.tail);if(!t.follow)return;l.size===0&&r.displayNoStreamsToFollow();let p=Date.now();for(;s()&&(await n.sleep(G6n),!!s());)await W6n(l,e,r,n,t.output,s),!(Date.now()-p<B6n)&&(await z6n(c,l,e,r,n,t.output,t.tail),p=Date.now())}var DN="\x1B[0m",m7="\x1B[1m",K6n="\x1B[2m",Q6n="\x1B[31m",Y6n="\x1B[36m";function wN(){return process.env.NO_COLOR!==void 0?!1:!!process.stdout.isTTY}function OI(t){let e=` \u{1F431} catnip \u2014 ${t} `,r=Math.max(e.length+2,44),n="\u2550".repeat(r);if(!wN()){console.log(`\u2554${n}\u2557`),console.log(`\u2551${e.padEnd(r)}\u2551`),console.log(`\u255A${n}\u255D`);return}console.log(`${Y6n}${m7}\u2554${n}\u2557`),console.log(`\u2551${e.padEnd(r)}\u2551`),console.log(`\u255A${n}\u255D${DN}`)}function cf(t){if(!wN()){console.log(`
|
|
239
|
+
`)}),r.join("")};ZUt.exports={colorize:o8n,colorizeToArray:s8n,colorizeToCallback:QPe}});var oFt=O((RUs,sFt)=>{var{SequenceMatcher:i8n}=RUt(),{extendedTypeOf:A7,roundObj:tFt}=zPe(),{colorize:rFt,colorizeToCallback:a8n}=eFt(),YPe=class{constructor(e){e.outputKeys=e.outputKeys||[],e.excludeKeys=e.excludeKeys||[],this.options=e}isScalar(e){return typeof e!="object"||e===null}objectDiff(e,r){let n={},s=0,o=!0;for(let[i,a]of Object.entries(e))if(!this.options.outputNewOnly){let c="__deleted";!(i in r)&&!this.options.excludeKeys.includes(i)&&(n[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(r)){let c=this.options.outputNewOnly?"":"__added";!(i in e)&&!this.options.excludeKeys.includes(i)&&(n[`${i}${c}`]=a,s-=30,o=!1)}for(let[i,a]of Object.entries(e))if(i in r){if(this.options.excludeKeys.includes(i))continue;s+=20;let c=r[i],l=this.diff(a,c);l.equal?(this.options.full||this.options.outputKeys.includes(i))&&(n[i]=a):(n[i]=l.result,o=!1),s+=Math.min(20,Math.max(-10,l.score/5))}return o?(s=100*Math.max(Object.keys(e).length,.5),this.options.full||(n=void 0)):s=Math.max(0,s),{score:s,result:n,equal:o}}findMatchingObject(e,r,n){let s=null;for(let[o,{item:i,index:a}]of Object.entries(n))if(o!=="__next"){let c=Math.abs(a-r);if(A7(e)===A7(i)){let{score:l}=this.diff(e,i);(!s||l>s.score||l===s.score&&c<s.indexDistance)&&(s={score:l,key:o,indexDistance:c})}}return s}scalarize(e,r,n){let s=[];if(n){let i={};for(let a=0;a<e.length;a++){let c=e[a];if(this.isScalar(c))continue;let l=this.findMatchingObject(c,a,n);l&&(!i[l.key]||l.score>i[l.key].score)&&(i[l.key]={score:l.score,index:a})}for(let[a,c]of Object.entries(i))s[c.index]=a}let o=[];for(let i=0;i<e.length;i++){let a=e[i];if(this.isScalar(a))o.push(a);else{let c=s[i]||"__$!SCALAR"+r.__next++;r[c]={item:a,index:i},o.push(c)}}return o}isScalarized(e,r){return typeof e=="string"&&e in r}descalarize(e,r){return this.isScalarized(e,r)?r[e].item:e}arrayDiff(e,r){let n={__next:1},s=this.scalarize(e,n),o={__next:n.__next},i=this.scalarize(r,o,n);this.options.sort&&(s.sort(),i.sort());let a=new i8n(null,s,i).getOpcodes(),c=[],l=0,p=!0;for(let[d,g,S,y,I]of a){let A,w,$,B,j,W,z,K;switch(d==="equal"||this.options.keysOnly&&d==="replace"||(p=!1),d){case"equal":for(A=g,B=S,$=g<=B;$?A<B:A>B;$?A++:A--){let L=s[A];if(this.isScalarized(L,n)){if(!this.isScalarized(L,o))throw new Error(`internal bug: isScalarized(item, originals1) != isScalarized(item, originals2) for item ${JSON.stringify(L)}`);let G=this.descalarize(L,n),H=this.descalarize(L,o),Q=this.diff(G,H);Q.equal?this.options.full||this.options.keepUnchangedValues?c.push([" ",G]):c.push([" "]):(c.push(["~",Q.result]),p=!1)}else this.options.full||this.options.keepUnchangedValues?c.push([" ",L]):c.push([" "]);l+=10}break;case"delete":for(A=g,W=S,j=g<=W;j?A<W:A>W;j?A++:A--)c.push(["-",this.descalarize(s[A],n)]),l-=5;break;case"insert":for(w=y,K=I,z=y<=K;z?w<K:w>K;z?w++:w--)c.push(["+",this.descalarize(i[w],o)]),l-=5;break;case"replace":if(this.options.keysOnly){let L,G;for(A=g,G=S,L=g<=G;L?A<G:A>G;L?A++:A--){let H=this.diff(this.descalarize(s[A],n),this.descalarize(i[A-g+y],o));H.equal?c.push([" "]):(c.push(["~",H.result]),p=!1)}}else{let L,G,H,Q;for(A=g,G=S,L=g<=G;L?A<G:A>G;L?A++:A--)c.push(["-",this.descalarize(s[A],n)]),l-=5;for(w=y,Q=I,H=y<=Q;H?w<Q:w>Q;H?w++:w--)c.push(["+",this.descalarize(i[w],o)]),l-=5}break}}return p||a.length===0?(this.options.full?c=e:c=void 0,l=100):l=Math.max(0,l),{score:l,result:c,equal:p}}diff(e,r){let n=A7(e),s=A7(r);if(n===s)switch(n){case"object":return this.objectDiff(e,r);case"array":return this.arrayDiff(e,r)}let o=100,i=e,a;return this.options.keysOnly?(a=!0,i=void 0):(n==="date"&&s==="date"?a=e.getTime()===r.getTime():a=e===r,a?this.options.full||(i=void 0):(o=0,this.options.outputNewOnly?i=r:i={__old:e,__new:r})),{score:o,result:i,equal:a}}};function nFt(t,e,r={}){return r.precision!==void 0&&(t=tFt(t,r.precision),e=tFt(e,r.precision)),new YPe(r).diff(t,e).result}function c8n(t,e,r={}){return rFt(nFt(t,e,r),r)}sFt.exports={diff:nFt,diffString:c8n,colorize:rFt,colorizeToCallback:a8n}});var lFt=O(($Us,R8n)=>{R8n.exports={name:"@btc-embedded/cdk-extensions",description:"A collection of useful CDK extensions and common logic",repository:{type:"git",url:"https://github.com/btc-embedded/cdk-extensions.git"},bin:{catnip:"assets/cli/catnip.js"},scripts:{build:"projen build",bump:"projen bump",bundle:"projen bundle","bundle:cli/catnip":"projen bundle:cli/catnip","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda":"projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda","bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch":"projen bundle:constructs/api-keys/lambdas/api-client-authorization.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-creation.lambda":"projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda","bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch":"projen bundle:constructs/api-keys/lambdas/api-key-creation.lambda:watch","bundle:constructs/api-keys/lambdas/api-key-update.lambda":"projen bundle:constructs/api-keys/lambdas/api-key-update.lambda","bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch":"projen bundle:constructs/api-keys/lambdas/api-key-update.lambda:watch","bundle:constructs/api-keys/lambdas/pre-token.lambda":"projen bundle:constructs/api-keys/lambdas/pre-token.lambda","bundle:constructs/api-keys/lambdas/pre-token.lambda:watch":"projen bundle:constructs/api-keys/lambdas/pre-token.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda":"projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch":"projen bundle:test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda":"projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch":"projen bundle:test/constructs/api-keys/integration/api-key-management-runner-unauthorized.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda":"projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch":"projen bundle:test/constructs/api-keys/integration/api-key-management-runner.lambda:watch","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda":"projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda","bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch":"projen bundle:test/constructs/api-keys/integration/api-key-pre-token-handler-runner.lambda:watch",clobber:"projen clobber",compat:"projen compat",compile:"projen compile",default:"projen default",docgen:"projen docgen",eject:"projen eject",eslint:"projen eslint","eslint:ci":"projen eslint:ci",integ:"projen integ","integ:update":"projen integ:update",package:"projen package","package-all":"projen package-all","package:js":"projen package:js","post-compile":"projen post-compile","post-upgrade":"projen post-upgrade","pre-compile":"projen pre-compile","publish:git":"projen publish:git",release:"projen release",test:"projen test","test:watch":"projen test:watch",typecheck:"projen typecheck",unbump:"projen unbump","update-docs":"projen update-docs",upgrade:"projen upgrade",watch:"projen watch","yalc:watch":"projen yalc:watch",projen:"projen",postinstall:"git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath .githooks || true","lint-staged":"lint-staged"},author:{name:"BTC Embedded Systems AG",url:"https://www.btc-embedded.com",organization:!0},devDependencies:{"@aws-cdk-containers/ecs-service-extensions":"2.0.1-alpha.535","@aws-cdk/integ-runner":"latest","@aws-cdk/integ-tests-alpha":"latest","@aws-sdk/client-cloudformation":"^3.993.0","@aws-sdk/client-cloudwatch-logs":"^3.993.0","@aws-sdk/client-ecs":"^3.993.0","@aws-sdk/client-ssm":"^3.999.0","@aws-sdk/credential-providers":"^3.993.0","@types/aws-api-gateway-client":"^0.3.3","@types/jest":"^30.0.0","@types/json-diff":"^1.0.3","@types/node":"^24.10.9","@typescript-eslint/eslint-plugin":"^8","@typescript-eslint/parser":"^8","aws-api-gateway-client":"^0.3.7","aws-cdk-lib":"2.260.0","aws-sdk-client-mock":"^4.1.0","cdk-nag":"^3",commander:"^14.0.3","commit-and-tag-version":"^12",constructs:"10.5.1",esbuild:"^0.27.1",eslint:"^9","eslint-config-prettier":"^10.1.8","eslint-formatter-gitlab":"^7.0.1","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.5.5",jest:"^30.2.0","jest-junit":"^17",jsii:"~5.9.0","jsii-diff":"^1.125.0","jsii-docgen":"^10.5.0","jsii-pacmak":"^1.125.0","jsii-rosetta":"~5.9.0","json-diff":"^1.0.6","lint-staged":"^17",nodemon:"^3.1.11",prettier:"^3.8.0",projen:"0.100.2","ts-jest":"^29.4.6","ts-node":"^10.9.2",typedoc:"^0.28.16","typedoc-plugin-markdown":"^4.9.0",typescript:"^5.9.3",yalc:"^1.0.0-pre.53"},peerDependencies:{"@aws-cdk-containers/ecs-service-extensions":">=2.0.1-alpha.535","aws-cdk-lib":"^2.260.0",constructs:"^10.5.1"},dependencies:{"@aws-lambda-powertools/logger":"^2.30.2","@aws-lambda-powertools/parameters":"^2.30.2","@aws-lambda-powertools/parser":"^2.30.2","@aws-sdk/client-cognito-identity-provider":"^3.965.0","@aws-sdk/client-dynamodb":"^3.948.0","@aws-sdk/client-secrets-manager":"^3.971.0","@aws-sdk/lib-dynamodb":"^3.948.0","@types/aws-lambda":"^8.10.159",yaml:"^2.8.2",zod:"~3"},bundledDependencies:["@aws-lambda-powertools/logger","@aws-lambda-powertools/parameters","@aws-lambda-powertools/parser","@aws-sdk/client-cognito-identity-provider","@aws-sdk/client-dynamodb","@aws-sdk/client-secrets-manager","@aws-sdk/lib-dynamodb","@types/aws-lambda","yaml","zod"],resolutions:{"@smithy/types":"^4.12.0","fast-xml-parser":"^5.3.5"},keywords:["cdk"],devEngines:{packageManager:{name:"yarn",version:"1.22.22",onFail:"ignore"}},main:"lib/index.js",license:"Apache-2.0",stability:"experimental",version:"0.23.7",jest:{coverageProvider:"v8",maxWorkers:4,collectCoverageFrom:["src/**/*.ts"],coveragePathIgnorePatterns:["/node_modules/","\\.generated\\.[jt]s$","<rootDir>/test/","\\.warnings\\.jsii\\.js$"],testMatch:["<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)","<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)","<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"],clearMocks:!0,collectCoverage:!0,coverageReporters:["json","lcov","clover","cobertura","text"],coverageDirectory:"coverage",testPathIgnorePatterns:["/node_modules/"],watchPathIgnorePatterns:["/node_modules/"],reporters:["default",["jest-junit",{outputDirectory:"test-reports"}]],transform:{"^.+\\.[t]sx?$":["ts-jest",{tsconfig:"tsconfig.dev.json",diagnostics:!1}]}},types:"lib/index.d.ts",jsii:{outdir:"dist",targets:{},tsconfig:"tsconfig.json",validateTsconfig:"strict"},"lint-staged":{"*.{ts,tsx}":"env ESLINT_USE_FLAT_CONFIG=false NODE_NO_WARNINGS=1 eslint --max-warnings=0"},packageManager:"yarn@1.22.22","//":'~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".'}});var yAe=T(EAe(),1),{program:$8n,createCommand:O8n,createArgument:N8n,createOption:L8n,CommanderError:k8n,InvalidArgumentError:M8n,InvalidOptionArgumentError:U8n,Command:_Ae,Argument:F8n,Option:q8n,Help:G8n}=yAe.default;var c1t=T(IE()),u1t=T(b3()),l1t=T(Ape()),d1t=T(Xx()),p1t=T(ZSe()),m1t=T(vPe()),f1t=T(nse());function DI(t){return{...t.region&&{region:t.region},...t.profile&&{credentials:(0,f1t.fromIni)({profile:t.profile})}}}function FS(t){return new c1t.CloudFormationClient(DI(t))}function wI(t){return new d1t.ECSClient(DI(t))}function p7(t){return new u1t.CloudWatchLogsClient(DI(t))}function g1t(t){return new l1t.CognitoIdentityProviderClient(DI(t))}function h1t(t){return new p1t.SecretsManagerClient(DI(t))}function S1t(t){return new m1t.SSMClient(DI(t))}function bPe(t){return{cfClient:FS(t),ecsClient:wI(t),logsClient:p7(t)}}var $I=T(Xx());var xN=T(b3());async function*bN(t,e={}){let r,n=0;for(;;){if(e.maxPages!==void 0&&n>=e.maxPages)return;let s=await t(r);if(n+=1,yield{...s,page:n},!s.nextToken)return;r=s.nextToken}}async function*vi(t,e={}){for await(let r of bN(t,e))for(let n of r.items)yield n}var M6n=50,U6n=10;async function E1t(t,e,r,n,s=U6n){let o=[];for await(let i of bN(async a=>{let c=await t.send(new xN.DescribeLogStreamsCommand({logGroupName:e,orderBy:"LastEventTime",descending:!0,limit:M6n,nextToken:a}));return{items:c.logStreams??[],nextToken:c.nextToken}},{maxPages:s})){let a=i.items;o.push(a.map(l=>l.logStreamName).filter(l=>l!==void 0));let c=a.find(l=>n?l.logStreamName?.endsWith(`/${n}/${r}`):l.logStreamName?.includes(r));if(c?.logStreamName)return c.logStreamName}return o.flatMap(i=>i).find(i=>i.includes(r))}async function xPe(t,e,r){let n=await t.send(new xN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,limit:r,startFromHead:!1}));return{state:{key:e.key,serviceName:e.serviceName,containerName:e.containerName,logGroup:e.logGroup,logStreamName:e.logStreamName,nextToken:n.nextForwardToken},events:n.events??[]}}async function y1t(t,e){let r=await t.send(new xN.GetLogEventsCommand({logGroupName:e.logGroup,logStreamName:e.logStreamName,nextToken:e.nextToken}));return{events:r.events??[],nextToken:r.nextForwardToken}}function _1t(t){return new Map(t.map(e=>[e.key,e]))}function F6n(t){let e=t.split("/");return e.length>=3?e[e.length-2]:void 0}async function q6n(t,e,r){let n=[];for await(let s of vi(async o=>{let i=await t.send(new $I.ListTasksCommand({cluster:e,serviceName:r,desiredStatus:"RUNNING",nextToken:o}));return{items:i.taskArns??[],nextToken:i.nextToken}}))n.push(s);return n}async function R1t(t,e){let r=e.split("/").pop()??e,n=F6n(e),o=(await t.send(new $I.DescribeServicesCommand({...n&&{cluster:n},services:[e]}))).services?.[0];if(!o)return{context:void 0,warning:`[${r}] Could not retrieve service details, skipping.`};let i=o.clusterArn??n;if(!i)return{context:void 0,warning:`[${r}] Could not determine cluster, skipping.`};let a=o.taskDefinition;if(!a)return{context:void 0,warning:`[${r}] Missing task definition, skipping.`};let l=((await t.send(new $I.DescribeTaskDefinitionCommand({taskDefinition:a}))).taskDefinition?.containerDefinitions??[]).flatMap(p=>{let d=p.logConfiguration?.options?.["awslogs-group"];return!p.name||!d||p.logConfiguration?.logDriver!=="awslogs"?[]:[{containerName:p.name,logGroup:d}]});return l.length===0?{context:void 0,warning:`[${r}] No awslogs container configuration found, skipping.`}:{context:{serviceArn:e,serviceName:r,clusterArn:i,logConfigs:l},warning:void 0}}async function DPe(t,e,r){let n=await q6n(t,r.clusterArn,r.serviceArn),s=[],o=new Set;for(let i of n){let a=i.split("/").pop()??i;for(let{containerName:c,logGroup:l}of r.logConfigs){let p=await E1t(e,l,a,c);if(!p)continue;let d=`${l}::${p}`;o.has(d)||(o.add(d),s.push({key:d,serviceName:r.serviceName,containerName:c,logGroup:l,logStreamName:p}))}}return s}var C1t=T(IE());async function T1t(t,e){let r=[];for await(let n of vi(async s=>{let o=await t.send(new C1t.ListStackResourcesCommand({StackName:e,NextToken:s}));return{items:o.StackResourceSummaries??[],nextToken:o.NextToken}}))n.ResourceType==="AWS::ECS::Service"&&n.PhysicalResourceId&&r.push(n.PhysicalResourceId);return r}var G6n=2e3,B6n=1e4;function H6n(t,e,r){if(!e)return t;let n=t.filter(s=>s.includes(e));if(n.length===0)throw new Error(`No ECS services matching '${e}' found in stack '${r}'.`);return n}function V6n(t,e){let r=[];for(let n of t)n.warning&&e.displayServiceWarning(n.warning),n.context&&r.push(n.context);return r}function wPe(t,e,r,n){t.displayLogEvents({serviceName:e.serviceName,containerName:e.containerName,events:r,mode:n})}async function j6n(t,e,r,n,s,o){let i=new Map;for(let a of t){let c=await DPe(e.ecsClient,e.logsClient,a);if(c.length===0){r.displayNoRunningStreams(a.serviceName);continue}(await Promise.all(c.map(async p=>{try{return{key:p.key,...await xPe(e.logsClient,p,o)}}catch(d){r.displayPrimeError(p,n.toErrorMessage(d));return}}))).filter(p=>p!==void 0).forEach(p=>{wPe(r,p.state,p.events,s),i.set(p.key,p.state)})}return i}async function W6n(t,e,r,n,s,o){(await Promise.all(Array.from(t.values()).filter(()=>o()).map(async a=>{try{let c=await y1t(e.logsClient,a);return wPe(r,a,c.events,s),{key:a.key,nextToken:c.nextToken}}catch(c){r.displayPollError(a,n.toErrorMessage(c));return}}))).filter(a=>a!==void 0).forEach(a=>{let c=t.get(a.key);c&&(c.nextToken=a.nextToken)})}async function z6n(t,e,r,n,s,o,i){let a=await Promise.all(t.map(async d=>{try{return await DPe(r.ecsClient,r.logsClient,d)}catch(g){return n.displayReconcileError(d.serviceName,s.toErrorMessage(g)),[]}})),c=_1t(a.flatMap(d=>d)),l=Array.from(c.entries()).filter(([d])=>!e.has(d));(await Promise.all(l.map(async([d,g])=>{try{return{key:d,stream:g,...await xPe(r.logsClient,g,i)}}catch(S){n.displayPrimeNewStreamError(g,s.toErrorMessage(S));return}}))).filter(d=>d!==void 0).forEach(d=>{wPe(n,d.state,d.events,o),e.set(d.key,d.state),n.displayStreamStarted(d.stream)}),Array.from(e.keys()).filter(d=>!c.has(d)).forEach(d=>{let g=e.get(d);e.delete(d),g&&n.displayStreamEnded(g)})}async function I1t(t,e,r,n,s=()=>!0){r.displayCommandContext({commandName:"ecs-logs",stackName:t.stackName,region:t.region});let o=await T1t(e.cfClient,t.stackName);if(o.length===0)throw new Error(`No ECS services found in stack '${t.stackName}'.`);let i=H6n(o,t.service,t.stackName);t.output==="raw"&&i.length>1&&r.displayInterleavingWarning();let a=await Promise.all(i.map(d=>R1t(e.ecsClient,d))),c=V6n(a,r),l=await j6n(c,e,r,n,t.output,t.tail);if(!t.follow)return;l.size===0&&r.displayNoStreamsToFollow();let p=Date.now();for(;s()&&(await n.sleep(G6n),!!s());)await W6n(l,e,r,n,t.output,s),!(Date.now()-p<B6n)&&(await z6n(c,l,e,r,n,t.output,t.tail),p=Date.now())}var DN="\x1B[0m",m7="\x1B[1m",K6n="\x1B[2m",Q6n="\x1B[31m",Y6n="\x1B[36m";function wN(){return process.env.NO_COLOR!==void 0?!1:!!process.stdout.isTTY}function OI(t){let e=` \u{1F431} catnip \u2014 ${t} `,r=Math.max(e.length+2,44),n="\u2550".repeat(r);if(!wN()){console.log(`\u2554${n}\u2557`),console.log(`\u2551${e.padEnd(r)}\u2551`),console.log(`\u255A${n}\u255D`);return}console.log(`${Y6n}${m7}\u2554${n}\u2557`),console.log(`\u2551${e.padEnd(r)}\u2551`),console.log(`\u255A${n}\u255D${DN}`)}function cf(t){if(!wN()){console.log(`
|
|
240
240
|
${t}`);return}console.log(`
|
|
241
241
|
${m7}${t}${DN}`)}function qS(t){if(!wN()){process.stderr.write(`Error: ${t}
|
|
242
242
|
`);return}process.stderr.write(`${Q6n}${m7}Error:${DN} ${t}
|
|
@@ -59,9 +59,9 @@ var require_typeof = __commonJS({
|
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
61
|
|
|
62
|
-
// node_modules/
|
|
62
|
+
// node_modules/url-template/lib/url-template.js
|
|
63
63
|
var require_url_template = __commonJS({
|
|
64
|
-
"node_modules/
|
|
64
|
+
"node_modules/url-template/lib/url-template.js"(exports2, module2) {
|
|
65
65
|
"use strict";
|
|
66
66
|
(function(root, factory) {
|
|
67
67
|
if (typeof exports2 === "object") {
|
|
@@ -7318,137 +7318,28 @@ var Logger = class _Logger extends Utility {
|
|
|
7318
7318
|
// test/constructs/api-keys/integration/api-key-client-authorization-runner.lambda.ts
|
|
7319
7319
|
var import_aws_api_gateway_client = __toESM(require_apigClient());
|
|
7320
7320
|
|
|
7321
|
-
//
|
|
7322
|
-
|
|
7323
|
-
|
|
7324
|
-
|
|
7325
|
-
|
|
7321
|
+
// test/constructs/api-keys/integration/common.ts
|
|
7322
|
+
var logger = new Logger({ logLevel: LogLevel.INFO });
|
|
7323
|
+
function expandPathTemplate(path, parameters) {
|
|
7324
|
+
return path.replace(/\{([^}]+)\}/g, (_match, key) => {
|
|
7325
|
+
const value = parameters[key];
|
|
7326
|
+
if (value === void 0) {
|
|
7327
|
+
throw new Error(`Missing path parameter '${key}' for path '${path}'.`);
|
|
7326
7328
|
}
|
|
7327
|
-
return
|
|
7328
|
-
}).join("");
|
|
7329
|
-
}
|
|
7330
|
-
function encodeUnreserved(str) {
|
|
7331
|
-
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
|
|
7332
|
-
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
7329
|
+
return encodeURIComponent(String(value));
|
|
7333
7330
|
});
|
|
7334
7331
|
}
|
|
7335
|
-
function encodeValue(operator, value, key) {
|
|
7336
|
-
value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
|
|
7337
|
-
if (key) {
|
|
7338
|
-
return encodeUnreserved(key) + "=" + value;
|
|
7339
|
-
} else {
|
|
7340
|
-
return value;
|
|
7341
|
-
}
|
|
7342
|
-
}
|
|
7343
|
-
function isDefined(value) {
|
|
7344
|
-
return value !== void 0 && value !== null;
|
|
7345
|
-
}
|
|
7346
|
-
function isKeyOperator(operator) {
|
|
7347
|
-
return operator === ";" || operator === "&" || operator === "?";
|
|
7348
|
-
}
|
|
7349
|
-
function getValues(context, operator, key, modifier) {
|
|
7350
|
-
var value = context[key], result = [];
|
|
7351
|
-
if (isDefined(value) && value !== "") {
|
|
7352
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
7353
|
-
value = value.toString();
|
|
7354
|
-
if (modifier && modifier !== "*") {
|
|
7355
|
-
value = value.substring(0, parseInt(modifier, 10));
|
|
7356
|
-
}
|
|
7357
|
-
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));
|
|
7358
|
-
} else {
|
|
7359
|
-
if (modifier === "*") {
|
|
7360
|
-
if (Array.isArray(value)) {
|
|
7361
|
-
value.filter(isDefined).forEach(function(value2) {
|
|
7362
|
-
result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : null));
|
|
7363
|
-
});
|
|
7364
|
-
} else {
|
|
7365
|
-
Object.keys(value).forEach(function(k) {
|
|
7366
|
-
if (isDefined(value[k])) {
|
|
7367
|
-
result.push(encodeValue(operator, value[k], k));
|
|
7368
|
-
}
|
|
7369
|
-
});
|
|
7370
|
-
}
|
|
7371
|
-
} else {
|
|
7372
|
-
var tmp = [];
|
|
7373
|
-
if (Array.isArray(value)) {
|
|
7374
|
-
value.filter(isDefined).forEach(function(value2) {
|
|
7375
|
-
tmp.push(encodeValue(operator, value2));
|
|
7376
|
-
});
|
|
7377
|
-
} else {
|
|
7378
|
-
Object.keys(value).forEach(function(k) {
|
|
7379
|
-
if (isDefined(value[k])) {
|
|
7380
|
-
tmp.push(encodeUnreserved(k));
|
|
7381
|
-
tmp.push(encodeValue(operator, value[k].toString()));
|
|
7382
|
-
}
|
|
7383
|
-
});
|
|
7384
|
-
}
|
|
7385
|
-
if (isKeyOperator(operator)) {
|
|
7386
|
-
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
|
|
7387
|
-
} else if (tmp.length !== 0) {
|
|
7388
|
-
result.push(tmp.join(","));
|
|
7389
|
-
}
|
|
7390
|
-
}
|
|
7391
|
-
}
|
|
7392
|
-
} else {
|
|
7393
|
-
if (operator === ";") {
|
|
7394
|
-
if (isDefined(value)) {
|
|
7395
|
-
result.push(encodeUnreserved(key));
|
|
7396
|
-
}
|
|
7397
|
-
} else if (value === "" && (operator === "&" || operator === "?")) {
|
|
7398
|
-
result.push(encodeUnreserved(key) + "=");
|
|
7399
|
-
} else if (value === "") {
|
|
7400
|
-
result.push("");
|
|
7401
|
-
}
|
|
7402
|
-
}
|
|
7403
|
-
return result;
|
|
7404
|
-
}
|
|
7405
|
-
function parseTemplate(template) {
|
|
7406
|
-
var operators = ["+", "#", ".", "/", ";", "?", "&"];
|
|
7407
|
-
return {
|
|
7408
|
-
expand: function(context) {
|
|
7409
|
-
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function(_, expression, literal) {
|
|
7410
|
-
if (expression) {
|
|
7411
|
-
var operator = null, values = [];
|
|
7412
|
-
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
|
7413
|
-
operator = expression.charAt(0);
|
|
7414
|
-
expression = expression.substr(1);
|
|
7415
|
-
}
|
|
7416
|
-
expression.split(/,/g).forEach(function(variable) {
|
|
7417
|
-
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
|
|
7418
|
-
values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
|
7419
|
-
});
|
|
7420
|
-
if (operator && operator !== "+") {
|
|
7421
|
-
var separator = ",";
|
|
7422
|
-
if (operator === "?") {
|
|
7423
|
-
separator = "&";
|
|
7424
|
-
} else if (operator !== "#") {
|
|
7425
|
-
separator = operator;
|
|
7426
|
-
}
|
|
7427
|
-
return (values.length !== 0 ? operator : "") + values.join(separator);
|
|
7428
|
-
} else {
|
|
7429
|
-
return values.join(",");
|
|
7430
|
-
}
|
|
7431
|
-
} else {
|
|
7432
|
-
return encodeReserved(literal);
|
|
7433
|
-
}
|
|
7434
|
-
});
|
|
7435
|
-
}
|
|
7436
|
-
};
|
|
7437
|
-
}
|
|
7438
|
-
|
|
7439
|
-
// test/constructs/api-keys/integration/common.ts
|
|
7440
|
-
var logger = new Logger({ logLevel: LogLevel.INFO });
|
|
7441
7332
|
async function callAndValidate(client2, name, requestOptions, validationOptions) {
|
|
7442
7333
|
logger.info(`Executing test "${name}".`);
|
|
7443
|
-
const path = requestOptions.pathParameters ?
|
|
7334
|
+
const path = requestOptions.pathParameters ? expandPathTemplate(requestOptions.path, requestOptions.pathParameters) : requestOptions.path;
|
|
7444
7335
|
logger.info(`calling ${requestOptions.method} /${path}`);
|
|
7445
|
-
await client2.invokeApi({}, path, requestOptions.method, {}, requestOptions.body).then(function(result) {
|
|
7336
|
+
await client2.invokeApi({}, path, requestOptions.method, {}, requestOptions.body).then(async function(result) {
|
|
7446
7337
|
if (result.status !== validationOptions.code) {
|
|
7447
7338
|
throw new ValidationError(
|
|
7448
7339
|
`Invalid API response code: ${result.status}`
|
|
7449
7340
|
);
|
|
7450
7341
|
}
|
|
7451
|
-
validationOptions.validation(result.data);
|
|
7342
|
+
await validationOptions.validation(result.data);
|
|
7452
7343
|
logger.info(`Test "${name}" has been executed.`);
|
|
7453
7344
|
}).catch(function(error) {
|
|
7454
7345
|
if (error.name == ValidationError.name) {
|
|
@@ -59,9 +59,9 @@ var require_typeof = __commonJS({
|
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
61
|
|
|
62
|
-
// node_modules/
|
|
62
|
+
// node_modules/url-template/lib/url-template.js
|
|
63
63
|
var require_url_template = __commonJS({
|
|
64
|
-
"node_modules/
|
|
64
|
+
"node_modules/url-template/lib/url-template.js"(exports2, module2) {
|
|
65
65
|
"use strict";
|
|
66
66
|
(function(root, factory) {
|
|
67
67
|
if (typeof exports2 === "object") {
|
|
@@ -7316,137 +7316,28 @@ var Logger = class _Logger extends Utility {
|
|
|
7316
7316
|
}
|
|
7317
7317
|
};
|
|
7318
7318
|
|
|
7319
|
-
//
|
|
7320
|
-
|
|
7321
|
-
|
|
7322
|
-
|
|
7323
|
-
|
|
7319
|
+
// test/constructs/api-keys/integration/common.ts
|
|
7320
|
+
var logger = new Logger({ logLevel: LogLevel.INFO });
|
|
7321
|
+
function expandPathTemplate(path, parameters) {
|
|
7322
|
+
return path.replace(/\{([^}]+)\}/g, (_match, key) => {
|
|
7323
|
+
const value = parameters[key];
|
|
7324
|
+
if (value === void 0) {
|
|
7325
|
+
throw new Error(`Missing path parameter '${key}' for path '${path}'.`);
|
|
7324
7326
|
}
|
|
7325
|
-
return
|
|
7326
|
-
}).join("");
|
|
7327
|
-
}
|
|
7328
|
-
function encodeUnreserved(str) {
|
|
7329
|
-
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
|
|
7330
|
-
return "%" + c.charCodeAt(0).toString(16).toUpperCase();
|
|
7327
|
+
return encodeURIComponent(String(value));
|
|
7331
7328
|
});
|
|
7332
7329
|
}
|
|
7333
|
-
function encodeValue(operator, value, key) {
|
|
7334
|
-
value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
|
|
7335
|
-
if (key) {
|
|
7336
|
-
return encodeUnreserved(key) + "=" + value;
|
|
7337
|
-
} else {
|
|
7338
|
-
return value;
|
|
7339
|
-
}
|
|
7340
|
-
}
|
|
7341
|
-
function isDefined(value) {
|
|
7342
|
-
return value !== void 0 && value !== null;
|
|
7343
|
-
}
|
|
7344
|
-
function isKeyOperator(operator) {
|
|
7345
|
-
return operator === ";" || operator === "&" || operator === "?";
|
|
7346
|
-
}
|
|
7347
|
-
function getValues(context, operator, key, modifier) {
|
|
7348
|
-
var value = context[key], result = [];
|
|
7349
|
-
if (isDefined(value) && value !== "") {
|
|
7350
|
-
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
7351
|
-
value = value.toString();
|
|
7352
|
-
if (modifier && modifier !== "*") {
|
|
7353
|
-
value = value.substring(0, parseInt(modifier, 10));
|
|
7354
|
-
}
|
|
7355
|
-
result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));
|
|
7356
|
-
} else {
|
|
7357
|
-
if (modifier === "*") {
|
|
7358
|
-
if (Array.isArray(value)) {
|
|
7359
|
-
value.filter(isDefined).forEach(function(value2) {
|
|
7360
|
-
result.push(encodeValue(operator, value2, isKeyOperator(operator) ? key : null));
|
|
7361
|
-
});
|
|
7362
|
-
} else {
|
|
7363
|
-
Object.keys(value).forEach(function(k) {
|
|
7364
|
-
if (isDefined(value[k])) {
|
|
7365
|
-
result.push(encodeValue(operator, value[k], k));
|
|
7366
|
-
}
|
|
7367
|
-
});
|
|
7368
|
-
}
|
|
7369
|
-
} else {
|
|
7370
|
-
var tmp = [];
|
|
7371
|
-
if (Array.isArray(value)) {
|
|
7372
|
-
value.filter(isDefined).forEach(function(value2) {
|
|
7373
|
-
tmp.push(encodeValue(operator, value2));
|
|
7374
|
-
});
|
|
7375
|
-
} else {
|
|
7376
|
-
Object.keys(value).forEach(function(k) {
|
|
7377
|
-
if (isDefined(value[k])) {
|
|
7378
|
-
tmp.push(encodeUnreserved(k));
|
|
7379
|
-
tmp.push(encodeValue(operator, value[k].toString()));
|
|
7380
|
-
}
|
|
7381
|
-
});
|
|
7382
|
-
}
|
|
7383
|
-
if (isKeyOperator(operator)) {
|
|
7384
|
-
result.push(encodeUnreserved(key) + "=" + tmp.join(","));
|
|
7385
|
-
} else if (tmp.length !== 0) {
|
|
7386
|
-
result.push(tmp.join(","));
|
|
7387
|
-
}
|
|
7388
|
-
}
|
|
7389
|
-
}
|
|
7390
|
-
} else {
|
|
7391
|
-
if (operator === ";") {
|
|
7392
|
-
if (isDefined(value)) {
|
|
7393
|
-
result.push(encodeUnreserved(key));
|
|
7394
|
-
}
|
|
7395
|
-
} else if (value === "" && (operator === "&" || operator === "?")) {
|
|
7396
|
-
result.push(encodeUnreserved(key) + "=");
|
|
7397
|
-
} else if (value === "") {
|
|
7398
|
-
result.push("");
|
|
7399
|
-
}
|
|
7400
|
-
}
|
|
7401
|
-
return result;
|
|
7402
|
-
}
|
|
7403
|
-
function parseTemplate(template) {
|
|
7404
|
-
var operators = ["+", "#", ".", "/", ";", "?", "&"];
|
|
7405
|
-
return {
|
|
7406
|
-
expand: function(context) {
|
|
7407
|
-
return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function(_, expression, literal) {
|
|
7408
|
-
if (expression) {
|
|
7409
|
-
var operator = null, values = [];
|
|
7410
|
-
if (operators.indexOf(expression.charAt(0)) !== -1) {
|
|
7411
|
-
operator = expression.charAt(0);
|
|
7412
|
-
expression = expression.substr(1);
|
|
7413
|
-
}
|
|
7414
|
-
expression.split(/,/g).forEach(function(variable) {
|
|
7415
|
-
var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
|
|
7416
|
-
values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
|
|
7417
|
-
});
|
|
7418
|
-
if (operator && operator !== "+") {
|
|
7419
|
-
var separator = ",";
|
|
7420
|
-
if (operator === "?") {
|
|
7421
|
-
separator = "&";
|
|
7422
|
-
} else if (operator !== "#") {
|
|
7423
|
-
separator = operator;
|
|
7424
|
-
}
|
|
7425
|
-
return (values.length !== 0 ? operator : "") + values.join(separator);
|
|
7426
|
-
} else {
|
|
7427
|
-
return values.join(",");
|
|
7428
|
-
}
|
|
7429
|
-
} else {
|
|
7430
|
-
return encodeReserved(literal);
|
|
7431
|
-
}
|
|
7432
|
-
});
|
|
7433
|
-
}
|
|
7434
|
-
};
|
|
7435
|
-
}
|
|
7436
|
-
|
|
7437
|
-
// test/constructs/api-keys/integration/common.ts
|
|
7438
|
-
var logger = new Logger({ logLevel: LogLevel.INFO });
|
|
7439
7330
|
async function callAndValidate(client2, name, requestOptions, validationOptions) {
|
|
7440
7331
|
logger.info(`Executing test "${name}".`);
|
|
7441
|
-
const path = requestOptions.pathParameters ?
|
|
7332
|
+
const path = requestOptions.pathParameters ? expandPathTemplate(requestOptions.path, requestOptions.pathParameters) : requestOptions.path;
|
|
7442
7333
|
logger.info(`calling ${requestOptions.method} /${path}`);
|
|
7443
|
-
await client2.invokeApi({}, path, requestOptions.method, {}, requestOptions.body).then(function(result) {
|
|
7334
|
+
await client2.invokeApi({}, path, requestOptions.method, {}, requestOptions.body).then(async function(result) {
|
|
7444
7335
|
if (result.status !== validationOptions.code) {
|
|
7445
7336
|
throw new ValidationError(
|
|
7446
7337
|
`Invalid API response code: ${result.status}`
|
|
7447
7338
|
);
|
|
7448
7339
|
}
|
|
7449
|
-
validationOptions.validation(result.data);
|
|
7340
|
+
await validationOptions.validation(result.data);
|
|
7450
7341
|
logger.info(`Test "${name}" has been executed.`);
|
|
7451
7342
|
}).catch(function(error) {
|
|
7452
7343
|
if (error.name == ValidationError.name) {
|