diff --git a/dotcom-rendering/cdk/bin/cdk.ts b/dotcom-rendering/cdk/bin/cdk.ts index 72d4349dc91..9bc82cd7a17 100644 --- a/dotcom-rendering/cdk/bin/cdk.ts +++ b/dotcom-rendering/cdk/bin/cdk.ts @@ -1,4 +1,4 @@ -import { App } from 'aws-cdk-lib'; +import { App, Duration } from 'aws-cdk-lib'; import { InstanceClass, InstanceSize, InstanceType } from 'aws-cdk-lib/aws-ec2'; import type { RenderingCDKStackProps } from '../lib/renderingStack'; import { RenderingCDKStack } from '../lib/renderingStack'; @@ -115,6 +115,15 @@ export const TagPageRenderingPropsCODE: RenderingCDKStackProps = { imageIdentifier: getImageIdentifier(), taskCpu: 1024, taskMemoryLimitMiB: 2048, + scaling: { + minimumTasks: 1, + maximumTasks: 9, + cpuScaling: { + targetValue: 20, + scaleInCooldown: Duration.seconds(60), + scaleOutCooldown: Duration.seconds(60), + }, + }, }, }; @@ -158,6 +167,17 @@ export const TagPageRenderingPropsPROD: RenderingCDKStackProps = { imageIdentifier: getImageIdentifier(), taskCpu: 2048, taskMemoryLimitMiB: 4096, + scaling: { + minimumTasks: 9, + maximumTasks: 90, + cpuScaling: { + targetValue: 20, + // TODO: Tune cooldown values. + // https://docs.aws.amazon.com/autoscaling/application/userguide/target-tracking-scaling-policy-overview.html#target-tracking-cooldown + scaleInCooldown: Duration.seconds(60), + scaleOutCooldown: Duration.seconds(60), + }, + }, }, }; diff --git a/dotcom-rendering/cdk/lib/__snapshots__/renderingStack.test.ts.snap b/dotcom-rendering/cdk/lib/__snapshots__/renderingStack.test.ts.snap index bd3743c9fc7..12a9eecac0c 100644 --- a/dotcom-rendering/cdk/lib/__snapshots__/renderingStack.test.ts.snap +++ b/dotcom-rendering/cdk/lib/__snapshots__/renderingStack.test.ts.snap @@ -2109,7 +2109,7 @@ exports[`The RenderingCDKStack matches the snapshot for Tag Page Rendering CODE "EcsTaskDefinitionTaskRoleB7B6D8DD", ], "Properties": { - "MaxCapacity": 2, + "MaxCapacity": 9, "MinCapacity": 1, "ResourceId": { "Fn::Join": [ @@ -3667,6 +3667,24 @@ systemctl start tag-page-rendering", }, "Type": "AWS::IAM::InstanceProfile", }, + "tagpagerenderingCpuScaling1742C101": { + "Properties": { + "PolicyName": "TagPageRenderingCODEtagpagerenderingCpuScalingAFEBC723", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "EcsServiceTaskCountTarget02FCCE22", + }, + "TargetTrackingScalingPolicyConfiguration": { + "PredefinedMetricSpecification": { + "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution", + }, + "ScaleInCooldown": 60, + "ScaleOutCooldown": 60, + "TargetValue": 20, + }, + }, + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + }, "tagpagerenderingEcsClusterE7696595": { "Properties": { "ClusterSettings": [ @@ -4260,8 +4278,8 @@ exports[`The RenderingCDKStack matches the snapshot for Tag Page Rendering PROD "EcsTaskDefinitionTaskRoleB7B6D8DD", ], "Properties": { - "MaxCapacity": 2, - "MinCapacity": 1, + "MaxCapacity": 90, + "MinCapacity": 9, "ResourceId": { "Fn::Join": [ "", @@ -6261,6 +6279,24 @@ systemctl start tag-page-rendering", }, "Type": "AWS::IAM::InstanceProfile", }, + "tagpagerenderingCpuScaling1742C101": { + "Properties": { + "PolicyName": "TagPageRenderingPRODtagpagerenderingCpuScaling4582D272", + "PolicyType": "TargetTrackingScaling", + "ScalingTargetId": { + "Ref": "EcsServiceTaskCountTarget02FCCE22", + }, + "TargetTrackingScalingPolicyConfiguration": { + "PredefinedMetricSpecification": { + "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution", + }, + "ScaleInCooldown": 60, + "ScaleOutCooldown": 60, + "TargetValue": 20, + }, + }, + "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", + }, "tagpagerenderingEcsClusterE7696595": { "Properties": { "ClusterSettings": [ diff --git a/dotcom-rendering/cdk/lib/renderingStack.ts b/dotcom-rendering/cdk/lib/renderingStack.ts index 9585b65e789..2acd6f517ca 100644 --- a/dotcom-rendering/cdk/lib/renderingStack.ts +++ b/dotcom-rendering/cdk/lib/renderingStack.ts @@ -8,6 +8,7 @@ import { } from '@guardian/cdk/lib/constructs/core'; import { GuCname } from '@guardian/cdk/lib/constructs/dns/dns-records'; import { GuAllowPolicy } from '@guardian/cdk/lib/constructs/iam'; +import type { GuLoadBalancedAppExperimentalProps } from '@guardian/cdk/lib/experimental/patterns/gu-load-balanced-app'; import { GuLoadBalancedAppExperimental } from '@guardian/cdk/lib/experimental/patterns/gu-load-balanced-app'; import type { GuAsgCapacity } from '@guardian/cdk/lib/types'; import { aws_cloudwatch, type App as CDKApp, Duration } from 'aws-cdk-lib'; @@ -67,6 +68,10 @@ export interface RenderingCDKStackProps extends Omit { * Memory in MB for ECS task */ taskMemoryLimitMiB: number; + + scaling: NonNullable< + GuLoadBalancedAppExperimentalProps['ecsProps'] + >['scaling']; }; } @@ -296,10 +301,7 @@ export class RenderingCDKStack extends CDKStack { memoryLimitMiB: ecsProps.taskMemoryLimitMiB, cpu: ecsProps.taskCpu, - scaling: { - minimumTasks: 1, - maximumTasks: 2, - }, + scaling: ecsProps.scaling, }, // Route all traffic to EC2 @@ -312,7 +314,6 @@ export class RenderingCDKStack extends CDKStack { if (app.ecsService) { const { taskDefinition } = app.ecsService; - const ecsEnvVars: Record = { // Custom environment variables needed by the application NODE_ENV: 'production', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d9c7b041dd..ae40a74bcbc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -171,8 +171,8 @@ catalogs: specifier: 3.995.0 version: 3.995.0 '@guardian/cdk': - specifier: 64.6.0 - version: 64.6.0 + specifier: 64.7.0 + version: 64.7.0 '@guardian/eslint-config': specifier: 14.0.1 version: 14.0.1 @@ -279,7 +279,7 @@ importers: version: 3.995.0 '@guardian/cdk': specifier: 'catalog:' - version: 64.6.0(aws-cdk-lib@2.267.0(constructs@10.8.1))(aws-cdk@2.1139.0)(constructs@10.8.1) + version: 64.7.0(aws-cdk-lib@2.267.0(constructs@10.8.1))(aws-cdk@2.1139.0)(constructs@10.8.1) '@guardian/tsconfig': specifier: 'catalog:' version: 1.0.1 @@ -483,7 +483,7 @@ importers: version: 6.1.0(browserslist@4.28.8)(tslib@2.6.2) '@guardian/cdk': specifier: 'catalog:' - version: 64.6.0(aws-cdk-lib@2.267.0(constructs@10.8.1))(aws-cdk@2.1139.0)(constructs@10.8.1) + version: 64.7.0(aws-cdk-lib@2.267.0(constructs@10.8.1))(aws-cdk@2.1139.0)(constructs@10.8.1) '@guardian/commercial-core': specifier: 35.1.0 version: 35.1.0(@guardian/consent-manager@2.1.1(@guardian/ophan-tracker-js@5.1.3)(tslib@2.6.2)(typescript@6.0.3))(@guardian/libs@32.0.0(@guardian/ophan-tracker-js@5.1.3)(tslib@2.6.2)(typescript@6.0.3)) @@ -1811,15 +1811,15 @@ packages: resolution: {integrity: sha512-gLNsunvwf3mCi5u5o46/Z/JcJMnhbHSaZ69rkgPzNM3J4s8hWwpPUQB6/tt0EDFyCiWzxANlx+2LJwpYj4zS1w==} engines: {node: '>=20.19.0'} - '@csstools/css-calc@3.3.0': - resolution: {integrity: sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==} + '@csstools/css-calc@3.4.0': + resolution: {integrity: sha512-XQKj5B7QiZcHiegCOCAzcAOJdhGgWOHbbu62h5e5mkHnn8lWcfiJhllkqWmxu5zWR9jucPHuo1iTB56P033hcg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@4.2.2': - resolution: {integrity: sha512-3QKjR/vxyjcSXBLgb6lP0S3MGdvwbmqSsvLPbYdVORqPDc8FX1HAJ0Spk38bxaRXgvENTA47tlhhbb5Z2e8hEg==} + '@csstools/css-color-parser@4.2.3': + resolution: {integrity: sha512-y4LpL+lmpuyKDiEFq2PnZUVFdAjsoB/qQJod79yLNokXyW7jewi+/WJ69EfItj8A2unWtxXnGjw6LYXgXu5ZjA==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -2498,8 +2498,8 @@ packages: browserslist: ^4.22.2 tslib: ^2.6.2 - '@guardian/cdk@64.6.0': - resolution: {integrity: sha512-tTeCPVvRECwpwpG/UuHtlsUXjUruDBqrYN3HEvU4M9NISt1mrQ/9yriEBl/d2ECfTahGej9mzBGW2NyPRKFWag==} + '@guardian/cdk@64.7.0': + resolution: {integrity: sha512-PEtkOdwuGOmdIO38/rWc6rQZ4//xkA/SpQC9hjWOhH1W3UOtTt0xbKBdD6V4bF7N8S5u3Tqn5C+f8Pv2yU0CfQ==} hasBin: true peerDependencies: aws-cdk: ^2.1135.0 @@ -2830,50 +2830,50 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/fs-core@4.76.0': - resolution: {integrity: sha512-pXo9gYLUxLQfUDZG40an+VV1DA5hvAsspkfpuTpDTNMR9ZmIUo2QGKRQB5kwWjh5pPIXZXeTvS2au6Vp7DurAg==} + '@jsonjoy.com/fs-core@4.77.0': + resolution: {integrity: sha512-Y8nAB7e6gfxBC+eQKG2R7NcontJo/k4J1bb1hz8451Ivd1KQca196EQlv0R7oTJixyvfYgq/SUh54XaXp0ZB/w==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-fsa@4.76.0': - resolution: {integrity: sha512-CTcvtizrAnr0zNkroYRpPoqAHWoNm8WNBVn1LJTdKka4G7Yho8cV1qdQpfSWOVcIcKF7VuOqfNvvMx4YUoeBDQ==} + '@jsonjoy.com/fs-fsa@4.77.0': + resolution: {integrity: sha512-layta9p+iX4ybe9vmCfS5CTQMdE/eW+/C3ts6Rk4sIiuOTaK304dQYCz8iXXAIw/qev9qvT0d3xiboE+EGHTHQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node-builtins@4.76.0': - resolution: {integrity: sha512-yA+MnjUomZsXL3m4FXeDoS45s58k+3NrxEMYVZaBMnIIqhFs1hdz5+pTTPUPClqSgH87LIGq6nitDZq+T8ImJQ==} + '@jsonjoy.com/fs-node-builtins@4.77.0': + resolution: {integrity: sha512-3gX7Ms/wLCVb8gtFTFQtv1wh6ODfFArA1GEJk+74eiJcs3RfVe6rF3L6UrBVL/xf07qhdm8ykWsfvDj3bBkroA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node-to-fsa@4.76.0': - resolution: {integrity: sha512-yZhyt2W1DKI+QKv1fN/YsJ36PU9nqfUstU3dRF2BM3jnc9abfT0ri6u+E/r2BdmZ3PyIq9H+b5FDxwST/H3OUw==} + '@jsonjoy.com/fs-node-to-fsa@4.77.0': + resolution: {integrity: sha512-4KQrymJELJyp/QUq1f5VoK7sy9pzTL/SN+AYg8S+ISqUjgkomI4X4pnES07Q59EY3CiHNWelte4KFTJreucOOQ==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node-utils@4.76.0': - resolution: {integrity: sha512-xjxvUNDqklDrGh3bhkVQ/IQZd8+XUYXUU1emRBan+gYvePf+H2mWB33JxKgOQ59x2sJuokjUq7mA4b6PlYwatw==} + '@jsonjoy.com/fs-node-utils@4.77.0': + resolution: {integrity: sha512-ZenZouChwBpO1WblCa0K4bMWdCdHOuQYBgKCArQl5ol8tBKOi8faz/H40iDXjl8+vcmRO5jo4kFr1EFE4nrFaw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-node@4.76.0': - resolution: {integrity: sha512-ongwZm58vGpi1Ibmib4eMsbif6pRvARvdQnnJ0Y8BqnZGNmyoIADoZlAVG3bWz1kAG3cBnYZLiTE9qoXFvkCcg==} + '@jsonjoy.com/fs-node@4.77.0': + resolution: {integrity: sha512-HVf6AIlKS7zzEGW0KM3D6W+7I2wFmFv6gnqVYy47j420Rm7+aHqKKlkI/94Lt4zfU61iSxEEVHUbf71kZ2uiWg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-print@4.76.0': - resolution: {integrity: sha512-zZYQ8XHZs2EqAE4gzvykcxgR1r5DOPwc9bg3j0LKLFeUr7Ak8CJsZXC0zhnxIH14XYZh4WAu+GburaKppKO8fA==} + '@jsonjoy.com/fs-print@4.77.0': + resolution: {integrity: sha512-bpctLICANt8JdePLrHu3QsPMDxYNU9B5KAHKd2OBKPVkdj/M9z4/AlvGdPojhED7ur7j2cfjha5pxuLbNON9DA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' - '@jsonjoy.com/fs-snapshot@4.76.0': - resolution: {integrity: sha512-W0zFE+Cr1JRSIePN6pukCXqtzqu5sCZL4QXLb1FdYxUhqtpkPVXc12gbBlJg5k+bPTHihmCe3LDFu61siD9IBg==} + '@jsonjoy.com/fs-snapshot@4.77.0': + resolution: {integrity: sha512-PcoEoQS85KV6Xqh/NJMoXA1V01LcdCSgstV5zxnijeJIJ3+heu1Ed2Xst82GkH43czsHOaC9cKhBI24MsVejlA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -4517,8 +4517,8 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -6069,8 +6069,8 @@ packages: endent@2.1.0: resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} - enhanced-resolve@5.25.0: - resolution: {integrity: sha512-ghq3mhs649mvbarTCAlZn2wRhbfHmzAFiKxoWA14B3VtqnxtZt+wz8BroKXU0tF3GiJsnUldjVncQGZ8qk4rdA==} + enhanced-resolve@5.25.1: + resolution: {integrity: sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -6668,8 +6668,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob-to-regex.js@1.2.0: - resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + glob-to-regex.js@1.3.1: + resolution: {integrity: sha512-zhWhMRsgnOym+1txhUmYJGD6eUsbUdrZv55gCYKuJX8t2p3+M8My23PD09bEIsreGUs5pnSa/idmcfp2/IlqGg==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -7633,8 +7633,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memfs@4.76.0: - resolution: {integrity: sha512-g2rDa/iTAM+vuzCdFgYy4lRvTLGR3vrrWtyv2971iviMtdCplYaPlwdo/W0VcRjPk6iWxLvTUbM6zvUFDelAVg==} + memfs@4.77.0: + resolution: {integrity: sha512-6fzXx9E2AzDHZRZZz9EVpJCVqqobjp2tMkHxdT14HfKiygSfO0mIhyaMo7iiL239sHFrF6iCdGXKuv8s6kfM9A==} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -8644,8 +8644,8 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.4.0: - resolution: {integrity: sha512-ZzWFVzFgyRHi/T2Ecxm37lL6J9+hZO0P9L7LCuLxAbC6XWxkvxcaQBCXhQxMGn/Tdt9nD7zIBk0ELwhMQ3UEDg==} + schema-utils@4.5.0: + resolution: {integrity: sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==} engines: {node: '>= 10.13.0'} screenfull@6.0.2: @@ -9862,8 +9862,8 @@ snapshots: '@asamuzakjp/css-color@5.1.11': dependencies: '@asamuzakjp/generational-cache': 1.0.1 - '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-calc': 3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.2.3(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -11349,15 +11349,15 @@ snapshots: '@csstools/color-helpers@6.1.1': {} - '@csstools/css-calc@3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-calc@3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-color-parser@4.2.3(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/color-helpers': 6.1.1 - '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-calc': 3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 @@ -11820,7 +11820,7 @@ snapshots: browserslist: 4.28.8 tslib: 2.6.2 - '@guardian/cdk@64.6.0(aws-cdk-lib@2.267.0(constructs@10.8.1))(aws-cdk@2.1139.0)(constructs@10.8.1)': + '@guardian/cdk@64.7.0(aws-cdk-lib@2.267.0(constructs@10.8.1))(aws-cdk@2.1139.0)(constructs@10.8.1)': dependencies: '@aws-sdk/client-ec2': 3.1131.0 '@aws-sdk/client-ssm': 3.1131.0 @@ -12229,59 +12229,59 @@ snapshots: dependencies: tslib: 2.6.2 - '@jsonjoy.com/fs-core@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-core@4.77.0(tslib@2.6.2)': dependencies: - '@jsonjoy.com/fs-node-builtins': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-builtins': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) thingies: 2.6.1(tslib@2.6.2) tslib: 2.6.2 - '@jsonjoy.com/fs-fsa@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-fsa@4.77.0(tslib@2.6.2)': dependencies: - '@jsonjoy.com/fs-core': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) + '@jsonjoy.com/fs-core': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-builtins': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) thingies: 2.6.1(tslib@2.6.2) tslib: 2.6.2 - '@jsonjoy.com/fs-node-builtins@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-node-builtins@4.77.0(tslib@2.6.2)': dependencies: tslib: 2.6.2 - '@jsonjoy.com/fs-node-to-fsa@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-node-to-fsa@4.77.0(tslib@2.6.2)': dependencies: - '@jsonjoy.com/fs-fsa': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) + '@jsonjoy.com/fs-fsa': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-builtins': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) tslib: 2.6.2 - '@jsonjoy.com/fs-node-utils@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-node-utils@4.77.0(tslib@2.6.2)': dependencies: - '@jsonjoy.com/fs-node-builtins': 4.76.0(tslib@2.6.2) - glob-to-regex.js: 1.2.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-builtins': 4.77.0(tslib@2.6.2) + glob-to-regex.js: 1.3.1(tslib@2.6.2) tslib: 2.6.2 - '@jsonjoy.com/fs-node@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-node@4.77.0(tslib@2.6.2)': dependencies: - '@jsonjoy.com/fs-core': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-print': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-snapshot': 4.76.0(tslib@2.6.2) - glob-to-regex.js: 1.2.0(tslib@2.6.2) + '@jsonjoy.com/fs-core': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-builtins': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-print': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-snapshot': 4.77.0(tslib@2.6.2) + glob-to-regex.js: 1.3.1(tslib@2.6.2) thingies: 2.6.1(tslib@2.6.2) tslib: 2.6.2 - '@jsonjoy.com/fs-print@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-print@4.77.0(tslib@2.6.2)': dependencies: - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) tree-dump: 1.1.0(tslib@2.6.2) tslib: 2.6.2 - '@jsonjoy.com/fs-snapshot@4.76.0(tslib@2.6.2)': + '@jsonjoy.com/fs-snapshot@4.77.0(tslib@2.6.2)': dependencies: '@jsonjoy.com/buffers': 17.67.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) '@jsonjoy.com/json-pack': 17.67.0(tslib@2.6.2) '@jsonjoy.com/util': 17.67.0(tslib@2.6.2) tslib: 2.6.2 @@ -12428,21 +12428,21 @@ snapshots: dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.3 + '@tybys/wasm-util': 0.10.4 optional: true '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': dependencies: '@emnapi/core': 1.11.0 '@emnapi/runtime': 1.11.0 - '@tybys/wasm-util': 0.10.3 + '@tybys/wasm-util': 0.10.4 optional: true '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: '@emnapi/core': 1.9.2 '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.3 + '@tybys/wasm-util': 0.10.4 optional: true '@noble/hashes@1.4.0': {} @@ -13907,7 +13907,7 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@tybys/wasm-util@0.10.3': + '@tybys/wasm-util@0.10.4': dependencies: tslib: 2.8.1 optional: true @@ -15578,7 +15578,7 @@ snapshots: fast-json-parse: 1.0.3 objectorarray: 1.0.5 - enhanced-resolve@5.25.0: + enhanced-resolve@5.25.1: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -16459,7 +16459,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-to-regex.js@1.2.0(tslib@2.6.2): + glob-to-regex.js@1.3.1(tslib@2.6.2): dependencies: tslib: 2.6.2 @@ -17682,19 +17682,19 @@ snapshots: dependencies: fs-monkey: 1.1.0 - memfs@4.76.0: + memfs@4.77.0: dependencies: - '@jsonjoy.com/fs-core': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-fsa': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-builtins': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-to-fsa': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-node-utils': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-print': 4.76.0(tslib@2.6.2) - '@jsonjoy.com/fs-snapshot': 4.76.0(tslib@2.6.2) + '@jsonjoy.com/fs-core': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-fsa': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-builtins': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-to-fsa': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-node-utils': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-print': 4.77.0(tslib@2.6.2) + '@jsonjoy.com/fs-snapshot': 4.77.0(tslib@2.6.2) '@jsonjoy.com/json-pack': 1.21.0(tslib@2.6.2) '@jsonjoy.com/util': 1.9.0(tslib@2.6.2) - glob-to-regex.js: 1.2.0(tslib@2.6.2) + glob-to-regex.js: 1.3.1(tslib@2.6.2) thingies: 2.6.1(tslib@2.6.2) tree-dump: 1.1.0(tslib@2.6.2) tslib: 2.6.2 @@ -17885,7 +17885,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.4.0 + schema-utils: 4.5.0 terser: 5.51.2 webpack: 5.110.2(@swc/core@1.16.1)(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.2)(html-minifier-terser@7.2.0)(postcss@8.5.28)(svgo@3.3.5)(webpack-cli@7.2.3) optionalDependencies: @@ -18869,7 +18869,7 @@ snapshots: ajv: 6.15.0 ajv-keywords: 3.5.2(ajv@6.15.0) - schema-utils@4.4.0: + schema-utils@4.5.0: dependencies: '@types/json-schema': 7.0.15 ajv: 8.20.0 @@ -19412,7 +19412,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.4.0 + schema-utils: 4.5.0 terser: 5.51.2 webpack: 5.110.2(@swc/core@1.16.1)(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.2)(html-minifier-terser@7.2.0)(postcss@8.5.28)(svgo@3.3.5)(webpack-cli@7.2.3) optionalDependencies: @@ -19927,7 +19927,7 @@ snapshots: dependencies: deepmerge: 4.3.1 proper-lockfile: 4.1.2 - schema-utils: 4.4.0 + schema-utils: 4.5.0 tapable: 2.3.3 webpack: 5.110.2(@swc/core@1.16.1)(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.2)(html-minifier-terser@7.2.0)(postcss@8.5.28)(svgo@3.3.5)(webpack-cli@7.2.3) @@ -19970,17 +19970,17 @@ snapshots: memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.3.0 - schema-utils: 4.4.0 + schema-utils: 4.5.0 optionalDependencies: webpack: 5.110.2(@swc/core@1.16.1)(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.2)(html-minifier-terser@7.2.0)(postcss@8.5.28)(svgo@3.3.5)(webpack-cli@7.2.3) webpack-dev-middleware@8.3.0(webpack@5.110.2): dependencies: ansi-html-community: 0.0.8 - memfs: 4.76.0 + memfs: 4.77.0 mime-types: 3.0.2 range-parser: 1.3.0 - schema-utils: 4.4.0 + schema-utils: 4.5.0 optionalDependencies: webpack: 5.110.2(@swc/core@1.16.1)(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.2)(html-minifier-terser@7.2.0)(postcss@8.5.28)(svgo@3.3.5)(webpack-cli@7.2.3) @@ -20005,7 +20005,7 @@ snapshots: launch-editor: 2.14.1 open: 11.0.3 p-retry: 8.0.1 - schema-utils: 4.4.0 + schema-utils: 4.5.0 selfsigned: 5.5.0 serve-index: 1.9.2(supports-color@8.1.1) tinyglobby: 0.2.17 @@ -20072,14 +20072,14 @@ snapshots: acorn: 8.18.0 browserslist: 4.28.8 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.25.0 + enhanced-resolve: 5.25.1 es-module-lexer: 2.3.2 events: 3.3.0 graceful-fs: 4.2.11 mime-db: 1.54.0 minimizer-webpack-plugin: 5.10.1(@swc/core@1.16.1)(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.2)(html-minifier-terser@7.2.0)(postcss@8.5.28)(svgo@3.3.5)(webpack@5.110.2) neo-async: 2.6.2 - schema-utils: 4.4.0 + schema-utils: 4.5.0 tapable: 2.3.3 watchpack: 2.5.2 webpack-sources: 3.5.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c83a1c4c59f..89c4a1016e3 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -12,7 +12,7 @@ blockExoticSubdeps: true catalog: '@aws-sdk/client-s3': 3.995.0 '@aws-sdk/client-ssm': 3.995.0 - '@guardian/cdk': 64.6.0 + '@guardian/cdk': 64.7.0 '@guardian/eslint-config': 14.0.1 '@guardian/tsconfig': 1.0.1 '@rollup/plugin-commonjs': 29.0.0