From 942d062c39a8ee5ff816a286251c91ef0ca31783 Mon Sep 17 00:00:00 2001 From: Luke Shay Date: Tue, 10 Oct 2023 15:30:44 -0500 Subject: [PATCH] Added support for AWS Lambda response streaming --- .changeset/cool-plants-behave.md | 6 + .vscode/settings.json | 6 +- apps/docs/package.json | 2 +- .../content/docs/guides/01-getting-started.md | 1 - .../docs/reference/packages/adapter.md | 96 ++ .../docs/reference/packages/constructs.md | 82 +- apps/infra/cdk.json | 26 +- apps/infra/src/lib/constants/environments.ts | 12 +- apps/infra/src/lib/stacks/website-stack.ts | 33 +- .../src/lib/types/astro-aws-stack-props.ts | 2 +- apps/infra/tsconfig.build.json | 4 +- examples/base/astro.config.ts | 8 +- examples/base/package.json | 10 +- package.json | 15 +- packages/adapter/README.md | 96 ++ packages/adapter/package.json | 5 +- packages/adapter/src/__tests__/index.test.ts | 6 - packages/adapter/src/args.ts | 6 +- packages/adapter/src/index.ts | 3 +- packages/adapter/src/lambda/handler.ts | 256 ++- packages/adapter/src/lambda/helpers.ts | 24 +- packages/adapter/src/lambda/index.ts | 12 +- packages/adapter/src/lambda/logger.ts | 7 + packages/adapter/src/lambda/types.d.ts | 30 + packages/constructs/README.md | 82 +- .../astro-aws-cloudfront-distribution.ts | 3 +- .../src/constructs/astro-aws-origin.ts | 8 +- .../constructs/src/constructs/astro-aws.ts | 20 +- .../src/types/astro-aws-construct.ts | 6 +- patches/@lshay__prettier-config@0.6.0.patch | 12 - pnpm-lock.yaml | 1525 ++++++++--------- renovate.json | 4 +- turbo.json | 21 +- 33 files changed, 1302 insertions(+), 1127 deletions(-) create mode 100644 .changeset/cool-plants-behave.md create mode 100644 packages/adapter/src/lambda/logger.ts create mode 100644 packages/adapter/src/lambda/types.d.ts delete mode 100644 patches/@lshay__prettier-config@0.6.0.patch diff --git a/.changeset/cool-plants-behave.md b/.changeset/cool-plants-behave.md new file mode 100644 index 0000000..3c53aed --- /dev/null +++ b/.changeset/cool-plants-behave.md @@ -0,0 +1,6 @@ +--- +"@astro-aws/constructs": minor +"@astro-aws/adapter": minor +--- + +Added support for AWS Lambda response streaming diff --git a/.vscode/settings.json b/.vscode/settings.json index 5fc268a..8d1f776 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,11 @@ { - "cSpell.words": ["astro"], + "cSpell.words": ["astro", "awslambda", "streamify"], "files.associations": { "*.mdx": "markdown" }, "search.exclude": { - "**/.yarn": true, - "**/.pnp.*": true + "**/.pnp.*": true, + "**/.yarn": true }, "typescript.enablePromptUseWorkspaceTsdk": true, "typescript.tsdk": "node_modules/typescript/lib" diff --git a/apps/docs/package.json b/apps/docs/package.json index 5d629fc..ae168a1 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "@astrojs/starlight": "^0.11.0", - "astro": "^3.2.3", + "astro": "^3.2.4", "sharp": "^0.32.6" }, "devDependencies": { diff --git a/apps/docs/src/content/docs/guides/01-getting-started.md b/apps/docs/src/content/docs/guides/01-getting-started.md index 4684300..c3d700a 100644 --- a/apps/docs/src/content/docs/guides/01-getting-started.md +++ b/apps/docs/src/content/docs/guides/01-getting-started.md @@ -87,7 +87,6 @@ export class HelloCdkStack extends Stack { super(scope, id, props) new AstroAWSConstruct(this, "AstroAWSConstruct", { - output: "server", websiteDir: "../my-astro-project", }) } diff --git a/apps/docs/src/content/docs/reference/packages/adapter.md b/apps/docs/src/content/docs/reference/packages/adapter.md index 4f4cd91..0da5d56 100644 --- a/apps/docs/src/content/docs/reference/packages/adapter.md +++ b/apps/docs/src/content/docs/reference/packages/adapter.md @@ -52,6 +52,102 @@ export default defineConfig({ }) ``` +### SSR Usage + +1. Install the package. + +``` +# Using NPM +npm install -D @astro-aws/adapter + +# Using Yarn +yarn add -D @astro-aws/adapter + +# Using PNPM +pnpm add -D @astro-aws/adapter + +# Using Bun +bun add -D @astro-aws/adapter +``` + +2. Add the following to your `astro.config.mjs` file. + +```js +import { defineConfig } from "astro/config" +import astroAws from "@astro-aws/adapter" + +export default defineConfig({ + output: "server", + adapter: astroAws({ + mode: "ssr", + }), +}) +``` + +### SSR Stream Usage + +1. Install the package. + +``` +# Using NPM +npm install -D @astro-aws/adapter + +# Using Yarn +yarn add -D @astro-aws/adapter + +# Using PNPM +pnpm add -D @astro-aws/adapter + +# Using Bun +bun add -D @astro-aws/adapter +``` + +2. Add the following to your `astro.config.mjs` file. + +```js +import { defineConfig } from "astro/config" +import astroAws from "@astro-aws/adapter" + +export default defineConfig({ + output: "server", + adapter: astroAws({ + mode: "ssr-stream", + }), +}) +``` + +### Edge Usage + +1. Install the package. + +``` +# Using NPM +npm install -D @astro-aws/adapter + +# Using Yarn +yarn add -D @astro-aws/adapter + +# Using PNPM +pnpm add -D @astro-aws/adapter + +# Using Bun +bun add -D @astro-aws/adapter +``` + +2. Add the following to your `astro.config.mjs` file. + +```js +import { defineConfig } from "astro/config" +import astroAws from "@astro-aws/adapter" + +export default defineConfig({ + output: "server", + adapter: astroAws({ + mode: "edge", + }), +}) +``` + ## Example See [the source code of this site](https://github.com/lukeshay/astro-aws/blob/main/apps/www/astro.config.ts) diff --git a/apps/docs/src/content/docs/reference/packages/constructs.md b/apps/docs/src/content/docs/reference/packages/constructs.md index f77b161..c46d530 100644 --- a/apps/docs/src/content/docs/reference/packages/constructs.md +++ b/apps/docs/src/content/docs/reference/packages/constructs.md @@ -6,7 +6,7 @@ description: "NPM package @astro-aws/constructs" Constructs for deploying your [Astro](https://astro.build/) project that is built using [@astro-aws/adapter](https://www.npmjs.com/package/@astro-aws/adapter). -## SSR Usage +## Usage 1. Install this package and it's peer dependencies in your AWS CDK project. @@ -38,85 +38,6 @@ export class MyAstroStack extends Stack { super(scope, id, props) new AstroAWS(this, "AstroAWS", { - output: "server", - websitePath: "..", // Replace with the path to your website code. - }) - } -} -``` - -## SSR Edge Usage - -1. Install this package and it's peer dependencies in your AWS CDK project. - -```sh -# Using NPM -npm install @astro-aws/constructs constructs aws-cdk-lib - -# Using Yarn -yarn add @astro-aws/constructs constructs aws-cdk-lib - -# Using PNPM -pnpm add @astro-aws/constructs constructs aws-cdk-lib - -# Using Bun -bun add @astro-aws/constructs constructs aws-cdk-lib -``` - -2. Add the construct to your CDK stack. - -```ts -import { Stack } from "aws-cdk-lib/core" -import type { StackProps } from "aws-cdk-lib/core" -import { AstroAWS } from "@astro-aws/constructs" - -export interface MyAstroStackProps extends StackProps {} - -export class MyAstroStack extends Stack { - public constructor(scope: Construct, id: string, props: MyAstroStackProps) { - super(scope, id, props) - - new AstroAWS(this, "AstroAWS", { - output: "edge", - websitePath: "..", // Replace with the path to your website code. - }) - } -} -``` - -## Static Usage - -1. Install this package and it's peer dependencies in your AWS CDK project. - -```sh -# Using NPM -npm install @astro-aws/constructs constructs aws-cdk-lib - -# Using Yarn -yarn add @astro-aws/constructs constructs aws-cdk-lib - -# Using PNPM -pnpm add @astro-aws/constructs constructs aws-cdk-lib - -# Using Bun -bun add @astro-aws/constructs constructs aws-cdk-lib -``` - -2. Add the construct to your CDK stack. - -```ts -import { Stack } from "aws-cdk-lib/core" -import type { StackProps } from "aws-cdk-lib/core" -import { AstroAWS } from "@astro-aws/constructs" - -export interface MyAstroStackProps extends StackProps {} - -export class MyAstroStack extends Stack { - public constructor(scope: Construct, id: string, props: MyAstroStackProps) { - super(scope, id, props) - - new AstroAWS(this, "AstroAWS", { - output: "static", websitePath: "..", // Replace with the path to your website code. }) } @@ -144,7 +65,6 @@ export class MyAstroStack extends Stack { memorySize: 1024, }, }, - output: "server", websitePath: "..", // Replace with the path to your website code. }) diff --git a/apps/infra/cdk.json b/apps/infra/cdk.json index ae8025d..1f0d31f 100644 --- a/apps/infra/cdk.json +++ b/apps/infra/cdk.json @@ -1,27 +1,26 @@ { "app": "node --enable-source-maps --es-module-specifier-resolution node dist/bin/infra.js", "context": { + "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true, + "@aws-cdk/aws-apigateway:disableCloudWatchRole": true, "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true, - "@aws-cdk/core:stackRelativeExports": true, - "@aws-cdk/aws-rds:lowercaseDbIdentifier": true, - "@aws-cdk/aws-lambda:recognizeVersionProps": true, - "@aws-cdk/aws-lambda:recognizeLayerVersion": true, "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": true, - "@aws-cdk-containers/ecs-service-extensions:enableDefaultLogDriver": true, + "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true, "@aws-cdk/aws-ec2:uniqueImdsv2TemplateName": true, - "@aws-cdk/core:checkSecretUsage": true, - "@aws-cdk/aws-iam:minimizePolicies": true, "@aws-cdk/aws-ecs:arnFormatIncludesClusterName": true, - "@aws-cdk/core:validateSnapshotRemovalPolicy": true, - "@aws-cdk/aws-codepipeline:crossAccountKeyAliasStackSafeResourceName": true, + "@aws-cdk/aws-iam:minimizePolicies": true, + "@aws-cdk/aws-lambda:recognizeLayerVersion": true, + "@aws-cdk/aws-lambda:recognizeVersionProps": true, + "@aws-cdk/aws-rds:lowercaseDbIdentifier": true, "@aws-cdk/aws-s3:createDefaultLoggingPolicy": true, "@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption": true, - "@aws-cdk/aws-apigateway:disableCloudWatchRole": true, + "@aws-cdk/core:checkSecretUsage": true, "@aws-cdk/core:enablePartitionLiterals": true, - "@aws-cdk/core:target-partitions": ["aws", "aws-cn"] + "@aws-cdk/core:stackRelativeExports": true, + "@aws-cdk/core:target-partitions": ["aws", "aws-cn"], + "@aws-cdk/core:validateSnapshotRemovalPolicy": true }, "watch": { - "include": ["**"], "exclude": [ "README.md", "cdk*.json", @@ -32,6 +31,7 @@ "yarn.lock", "node_modules", "test" - ] + ], + "include": ["**"] } } diff --git a/apps/infra/src/lib/constants/environments.ts b/apps/infra/src/lib/constants/environments.ts index 89cd935..e5c0814 100644 --- a/apps/infra/src/lib/constants/environments.ts +++ b/apps/infra/src/lib/constants/environments.ts @@ -18,6 +18,7 @@ const Environments = { PERSONAL: "PERSONAL", PROD: "PROD", SSR: "SSR", + STREAM: "STREAM", } as const type Environment = (typeof Environments)[keyof typeof Environments] @@ -33,7 +34,7 @@ const ENVIRONMENT_PROPS: Record = { [Environments.EDGE]: { ...base, alias: "edge.dev", - edge: true, + distDir: "dist/edge", env: { ...base.env, region: "us-east-1", @@ -56,10 +57,19 @@ const ENVIRONMENT_PROPS: Record = { [Environments.SSR]: { ...base, alias: "ssr.dev", + distDir: "dist/ssr", environment: Environments.SSR, hostedZoneName: "astro-aws.org", package: "@astro-aws/examples-base", }, + [Environments.STREAM]: { + ...base, + alias: "stream.dev", + distDir: "dist/ssr-stream", + environment: Environments.STREAM, + hostedZoneName: "astro-aws.org", + package: "@astro-aws/examples-base", + }, } as const export { Environments, ENVIRONMENT_PROPS, type Environment } diff --git a/apps/infra/src/lib/stacks/website-stack.ts b/apps/infra/src/lib/stacks/website-stack.ts index 29d54aa..b340e86 100644 --- a/apps/infra/src/lib/stacks/website-stack.ts +++ b/apps/infra/src/lib/stacks/website-stack.ts @@ -11,7 +11,8 @@ import { import { Architecture } from "aws-cdk-lib/aws-lambda" import type { Construct } from "constructs" import { AstroAWS } from "@astro-aws/constructs" -import type { Dashboard } from "aws-cdk-lib/aws-cloudwatch" +import { LogQueryWidget } from "aws-cdk-lib/aws-cloudwatch" +import type { ConcreteWidget, Dashboard } from "aws-cdk-lib/aws-cloudwatch" import type { IHostedZone } from "aws-cdk-lib/aws-route53" import { AaaaRecord, ARecord, RecordTarget } from "aws-cdk-lib/aws-route53" import { CloudFrontTarget } from "aws-cdk-lib/aws-route53-targets" @@ -40,13 +41,13 @@ export class WebsiteStack extends Stack { super(scope, id, props) const { - hostedZoneName, alias, + certificate, cloudwatchDashboard, + distDir, environment, - edge, - certificate, hostedZone, + hostedZoneName, } = props const domainName = [alias, hostedZoneName].filter(Boolean).join(".") @@ -112,15 +113,19 @@ export class WebsiteStack extends Stack { : undefined, }, lambdaFunction: { - architecture: edge ? Architecture.X86_64 : Architecture.ARM_64, + architecture: Architecture.ARM_64, + environment: { + ASTRO_AWS_LOG_LEVEL: "trace", + }, }, s3Bucket: { serverAccessLogsBucket: accessLogBucket, serverAccessLogsPrefix: "s3/", }, }, - edge, - outDir: `${this.#getWorkspacePath(props.package)}/dist`, + outDir: [this.#getWorkspacePath(props.package), distDir ?? "dist"].join( + "/", + ), }) if (hostedZone) { @@ -157,12 +162,22 @@ export class WebsiteStack extends Stack { statistic: "Sum", }) - const widgets = [ + const widgets: ConcreteWidget[] = [ new BasicGraphWidget({ metric: distribution5xxErrorRateMetric }), new BasicGraphWidget({ metric: distributionRequestsMetric }), ] if (astroAwsConstruct.cdk.lambdaFunction) { + const lambdaLogQueryWidget = new LogQueryWidget({ + height: 12, + logGroupNames: [ + astroAwsConstruct.cdk.lambdaFunction.logGroup.logGroupName, + ], + queryLines: ["fields @timestamp, @message", "sort @timestamp desc"], + title: "Lambda logs", + width: 24, + }) + const lambdaFailureRateMetric = astroAwsConstruct.cdk.lambdaFunction.metricErrors({ label: "Lambda failure rate", @@ -191,6 +206,8 @@ export class WebsiteStack extends Stack { statistic: "sum", }) + widgets.unshift(lambdaLogQueryWidget) + widgets.push( new BasicGraphWidget({ metric: lambdaFailureRateMetric }), new BasicGraphWidget({ metric: lambdaInvocationsMetric }), diff --git a/apps/infra/src/lib/types/astro-aws-stack-props.ts b/apps/infra/src/lib/types/astro-aws-stack-props.ts index 9cbbbba..7bed7ad 100644 --- a/apps/infra/src/lib/types/astro-aws-stack-props.ts +++ b/apps/infra/src/lib/types/astro-aws-stack-props.ts @@ -5,13 +5,13 @@ import type { Environment } from "../constants/environments.js" export type AstroAWSStackProps = Readonly< Omit & { alias?: string + distDir?: string env: { account: string region: string } environment: Environment hostedZoneName?: string - edge?: boolean package: string skipDashboard?: boolean } diff --git a/apps/infra/tsconfig.build.json b/apps/infra/tsconfig.build.json index f6f4ed0..8085c7d 100644 --- a/apps/infra/tsconfig.build.json +++ b/apps/infra/tsconfig.build.json @@ -1,7 +1,7 @@ { "compilerOptions": { - "outDir": "dist", - "inlineSourceMap": true + "inlineSourceMap": true, + "outDir": "dist" }, "extends": "../../tsconfig.base.json", "include": ["lib/**/*", "bin/**/*"] diff --git a/examples/base/astro.config.ts b/examples/base/astro.config.ts index 03cad8c..4d2dce2 100644 --- a/examples/base/astro.config.ts +++ b/examples/base/astro.config.ts @@ -1,13 +1,17 @@ +import { env } from "node:process" + import { defineConfig } from "astro/config" import aws from "@astro-aws/adapter" import tailwind from "@astrojs/tailwind" +const mode = env.MODE as "edge" | "ssr-stream" | "ssr" + // https://astro.build/config export default defineConfig({ adapter: aws({ - logFnRequest: true, - logFnResponse: true, + mode, }), integrations: [tailwind()], + outDir: `./dist/${mode}`, output: "hybrid", }) diff --git a/examples/base/package.json b/examples/base/package.json index 8614a68..03aedea 100644 --- a/examples/base/package.json +++ b/examples/base/package.json @@ -20,8 +20,11 @@ "root": false }, "scripts": { + "build:edge": "MODE=edge astro build", + "build:ssr": "MODE=ssr astro build", + "build:ssr-stream": "MODE=ssr-stream astro build", "astro": "astro", - "build": "pnpm run clean && astro build", + "build": "pnpm run clean && run-p build:*", "check": "astro check && tsc", "clean": "rimraf dist", "dev": "astro dev", @@ -30,9 +33,9 @@ "start": "astro dev" }, "dependencies": { - "@astrojs/tailwind": "^5.0.1", + "@astrojs/tailwind": "^5.0.2", "@faker-js/faker": "^8.1.0", - "astro": "^3.2.3", + "astro": "^3.2.4", "daisyui": "^3.9.2", "tailwindcss": "^3.3.3" }, @@ -40,6 +43,7 @@ "@astro-aws/adapter": "workspace:^", "@astrojs/check": "^0.2.0", "eslint": "^8.51.0", + "npm-run-all": "^4.1.5", "prettier": "^3.0.3", "rimraf": "^5.0.5", "typescript": "^5.2.2" diff --git a/package.json b/package.json index 796075c..b912382 100644 --- a/package.json +++ b/package.json @@ -46,21 +46,16 @@ "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.2", "@lshay/eslint-config": "^0.2.5", - "@lshay/prettier-config": "^0.6.0", - "@rushstack/eslint-patch": "^1.4.0", - "eslint": "^8.49.0", - "eslint-import-resolver-typescript": "^3.6.0", + "@lshay/prettier-config": "^0.6.1", + "@rushstack/eslint-patch": "^1.5.1", + "eslint": "^8.51.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.28.1", "prettier": "^3.0.3", - "turbo": "^1.10.14", + "turbo": "^1.10.15", "typescript": "^5.2.2" }, "engines": { "node": "18.x" - }, - "pnpm": { - "patchedDependencies": { - "@lshay/prettier-config@0.6.0": "patches/@lshay__prettier-config@0.6.0.patch" - } } } diff --git a/packages/adapter/README.md b/packages/adapter/README.md index 2686f38..b969f01 100644 --- a/packages/adapter/README.md +++ b/packages/adapter/README.md @@ -48,6 +48,102 @@ export default defineConfig({ }) ``` +### SSR Usage + +1. Install the package. + +``` +# Using NPM +npm install -D @astro-aws/adapter + +# Using Yarn +yarn add -D @astro-aws/adapter + +# Using PNPM +pnpm add -D @astro-aws/adapter + +# Using Bun +bun add -D @astro-aws/adapter +``` + +2. Add the following to your `astro.config.mjs` file. + +```js +import { defineConfig } from "astro/config" +import astroAws from "@astro-aws/adapter" + +export default defineConfig({ + output: "server", + adapter: astroAws({ + mode: "ssr", + }), +}) +``` + +### SSR Stream Usage + +1. Install the package. + +``` +# Using NPM +npm install -D @astro-aws/adapter + +# Using Yarn +yarn add -D @astro-aws/adapter + +# Using PNPM +pnpm add -D @astro-aws/adapter + +# Using Bun +bun add -D @astro-aws/adapter +``` + +2. Add the following to your `astro.config.mjs` file. + +```js +import { defineConfig } from "astro/config" +import astroAws from "@astro-aws/adapter" + +export default defineConfig({ + output: "server", + adapter: astroAws({ + mode: "ssr-stream", + }), +}) +``` + +### Edge Usage + +1. Install the package. + +``` +# Using NPM +npm install -D @astro-aws/adapter + +# Using Yarn +yarn add -D @astro-aws/adapter + +# Using PNPM +pnpm add -D @astro-aws/adapter + +# Using Bun +bun add -D @astro-aws/adapter +``` + +2. Add the following to your `astro.config.mjs` file. + +```js +import { defineConfig } from "astro/config" +import astroAws from "@astro-aws/adapter" + +export default defineConfig({ + output: "server", + adapter: astroAws({ + mode: "edge", + }), +}) +``` + ## Example See [the source code of this site](https://github.com/lukeshay/astro-aws/blob/main/apps/www/astro.config.ts) diff --git a/packages/adapter/package.json b/packages/adapter/package.json index 6c73a7d..9e2257b 100644 --- a/packages/adapter/package.json +++ b/packages/adapter/package.json @@ -49,14 +49,15 @@ "dependencies": { "@astrojs/webapi": "^2.2.0", "esbuild": "^0.19.4", - "merge-anything": "^5.1.7" + "merge-anything": "^5.1.7", + "pino": "^8.16.0" }, "devDependencies": { "@astro-aws/scripts": "workspace:^", "@faker-js/faker": "^8.1.0", "@types/aws-lambda": "^8.10.124", "@types/node": "^18.18.0", - "astro": "^3.2.3", + "astro": "^3.2.4", "aws-lambda": "^1.0.7", "eslint": "^8.51.0", "prettier": "^3.0.3", diff --git a/packages/adapter/src/__tests__/index.test.ts b/packages/adapter/src/__tests__/index.test.ts index 4500081..d8b458e 100644 --- a/packages/adapter/src/__tests__/index.test.ts +++ b/packages/adapter/src/__tests__/index.test.ts @@ -36,8 +36,6 @@ describe("index.ts", () => { args: { ...args, esBuildOptions: {}, - logFnRequest: false, - logFnResponse: false, }, exports: ["handler"], name: ADAPTER_NAME, @@ -68,8 +66,6 @@ describe("index.ts", () => { args: { binaryMediaTypes: [], esBuildOptions: {}, - logFnRequest: false, - logFnResponse: false, }, exports: ["handler"], name: ADAPTER_NAME, @@ -214,8 +210,6 @@ describe("index.ts", () => { { ...args, esBuildOptions: {}, - logFnRequest: false, - logFnResponse: false, }, ) }) diff --git a/packages/adapter/src/args.ts b/packages/adapter/src/args.ts index 0479176..13ba452 100644 --- a/packages/adapter/src/args.ts +++ b/packages/adapter/src/args.ts @@ -10,10 +10,8 @@ type Args = { binaryMediaTypes: string[] /** Configures ESBuild options that are not configured automatically. */ esBuildOptions: EsBuildOptions - /** Enables a log message that prints the request the lambda receives. */ - logFnRequest: boolean - /** Enables a log message that prints the response the lambda returns. */ - logFnResponse: boolean + /** Specifies where you want your app deployed to. */ + mode: "edge" | "ssr-stream" | "ssr" } export { type EsBuildOptions, type Args } diff --git a/packages/adapter/src/index.ts b/packages/adapter/src/index.ts index 6b923bc..17932bf 100644 --- a/packages/adapter/src/index.ts +++ b/packages/adapter/src/index.ts @@ -11,8 +11,7 @@ import { warn } from "./log.js" const DEFAULT_ARGS: Args = { binaryMediaTypes: [], esBuildOptions: {}, - logFnRequest: false, - logFnResponse: false, + mode: "ssr", } const getAdapter = (args: Partial = {}): AstroAdapter => ({ diff --git a/packages/adapter/src/lambda/handler.ts b/packages/adapter/src/lambda/handler.ts index f3768fb..491c8b7 100644 --- a/packages/adapter/src/lambda/handler.ts +++ b/packages/adapter/src/lambda/handler.ts @@ -1,127 +1,207 @@ import type { NodeApp } from "astro/app/node" -import type { APIGatewayProxyEventV2, CloudFrontRequestEvent } from "aws-lambda" +import type { + APIGatewayProxyEventV2, + APIGatewayProxyStructuredResultV2, + CloudFrontRequestEvent, +} from "aws-lambda" import type { Args } from "../args.js" -import { log } from "../log.js" import { createLambdaEdgeFunctionResponse, + createLambdaFunctionHeaders, createLambdaFunctionResponse, createRequestBody, } from "./helpers.js" +import { logger } from "./logger.js" -export const createHandler = - ( - app: NodeApp, - knownBinaryMediaTypes: Set, - { logFnResponse, logFnRequest }: Args, +const streamResponse = ( + responseStream: ResponseStream, + body: ArrayBuffer | string, + metadata: Omit, +) => { + const stream = awslambda.HttpResponseStream.from(responseStream, metadata) + + stream.write(body) + stream.end() + + return stream +} + +const withLog = + ( + fn: (event: TEvent, stream: TStream) => Promise, ) => - async (originalEvent: APIGatewayProxyEventV2 | CloudFrontRequestEvent) => { - if (logFnRequest) { - log("function request", JSON.stringify(originalEvent, undefined, 2)) + async (event: TEvent, stream: TStream) => { + logger.info(event, "fnRequest") + + const result = await fn(event, stream) + + if (result) { + logger.info(result, "fnResponse") + } + + return result + } + +const createCloudFrontRequestEvent = ( + app: NodeApp, + knownBinaryMediaTypes: Set, +) => + withLog(async (originalEvent: CloudFrontRequestEvent) => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const cloudfrontRequest = originalEvent.Records[0]!.cf.request + + const { + body, + headers: eventHeaders, + querystring, + uri, + method, + } = cloudfrontRequest + + const headers = new Headers( + Object.fromEntries( + Object.entries(eventHeaders).map(([key, value]) => [ + value[0]?.key ?? key, + value[0]?.value, + ]), + ) as HeadersInit, + ) + + const scheme = headers.get("x-forwarded-protocol") ?? "https" + const host = headers.get("x-forwarded-host") ?? headers.get("host") ?? "" + const qs = querystring.length ? `?${querystring}` : "" + const url = new URL(`${uri}${qs}`, `${scheme}://${host}`) + + const request = new Request(url, { + body: body?.data + ? createRequestBody(method, body.data, body.encoding) + : undefined, + headers, + method, + }) + const routeData = app.match(request) + + if (!routeData) { + return cloudfrontRequest } - if ("Records" in originalEvent) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const cloudfrontRequest = originalEvent.Records[0]!.cf.request + const response = await app.render(request, routeData) + const fnResponse = await createLambdaEdgeFunctionResponse( + app, + response, + knownBinaryMediaTypes, + ) + + return fnResponse + }) + +const createAPIGatewayProxyEventV2Handler = ( + args: Args, + app: NodeApp, + knownBinaryMediaTypes: Set, +) => { + const shouldStream = args.mode === "ssr-stream" + + const handler = withLog( + async ( + originalEvent: APIGatewayProxyEventV2, + responseStream: ResponseStream, + ) => { + logger.debug("Handling AWS Lambda event") + + const event = originalEvent const { - body, + body: requestBody, + cookies, headers: eventHeaders, - querystring, - uri, - method, - } = cloudfrontRequest - - const headers = new Headers( - Object.fromEntries( - Object.entries(eventHeaders).map(([key, value]) => [ - value[0]?.key ?? key, - value[0]?.value, - ]), - ) as HeadersInit, - ) + isBase64Encoded, + rawQueryString, + rawPath, + requestContext: { + http: { method }, + }, + } = event + + const headers = new Headers({ + ...eventHeaders, + cookie: cookies?.join("; ") ?? "", + }) - const scheme = headers.get("x-forwarded-protocol") ?? "https" - const host = headers.get("x-forwarded-host") ?? headers.get("host") ?? "" - const qs = querystring.length ? `?${querystring}` : "" - const url = new URL(`${uri}${qs}`, `${scheme}://${host}`) + const scheme = eventHeaders["x-forwarded-protocol"] ?? "https" + const host = eventHeaders["x-forwarded-host"] ?? eventHeaders.host ?? "" + const qs = rawQueryString.length ? `?${rawQueryString}` : "" + const url = new URL(`${rawPath}${qs}`, `${scheme}://${host}`) const request = new Request(url, { - body: body?.data - ? createRequestBody(method, body.data, body.encoding) - : undefined, + body: createRequestBody(method, requestBody, isBase64Encoded), headers, method, }) const routeData = app.match(request) if (!routeData) { - return cloudfrontRequest + if (shouldStream) { + logger.debug("Streaming response") + + const metadata = { + headers: { + "content-type": "text/plain", + }, + statusCode: 404, + } + + logger.info(metadata, "fnResponse") + + streamResponse(responseStream, "Not found", metadata) + + return + } + + // eslint-disable-next-line consistent-return + return { + body: "Not found", + statusCode: 404, + } } const response = await app.render(request, routeData) - const fnResponse = await createLambdaEdgeFunctionResponse( - app, - response, - knownBinaryMediaTypes, - ) - if (logFnResponse) { - log("function response", JSON.stringify(fnResponse, undefined, 2)) - } + if (shouldStream) { + logger.debug("Streaming response") - return fnResponse - } + const { cookies: responseCookies, headers: responseHeaders } = + createLambdaFunctionHeaders(app, response, knownBinaryMediaTypes) - const event = originalEvent + const metadata = { + cookies: responseCookies, + headers: responseHeaders, + statusCode: response.status, + } - const { - body: requestBody, - cookies, - headers: eventHeaders, - isBase64Encoded, - rawQueryString, - rawPath, - requestContext: { - http: { method }, - }, - } = event - - const headers = new Headers({ - ...eventHeaders, - cookie: cookies?.join("; ") ?? "", - }) + logger.info(metadata, "fnResponse") - const scheme = eventHeaders["x-forwarded-protocol"] ?? "https" - const host = eventHeaders["x-forwarded-host"] ?? eventHeaders.host ?? "" - const qs = rawQueryString.length ? `?${rawQueryString}` : "" - const url = new URL(`${rawPath}${qs}`, `${scheme}://${host}`) + const body = await response.arrayBuffer() - const request = new Request(url, { - body: createRequestBody(method, requestBody, isBase64Encoded), - headers, - method, - }) - const routeData = app.match(request) + streamResponse(responseStream, body, metadata) - if (!routeData) { - return { - body: "Not found", - statusCode: 404, + return } - } - const response = await app.render(request, routeData) - const fnResponse = await createLambdaFunctionResponse( - app, - response, - knownBinaryMediaTypes, - ) + const fnResponse = await createLambdaFunctionResponse( + app, + response, + knownBinaryMediaTypes, + ) - if (logFnResponse) { - log("function response", JSON.stringify(fnResponse, undefined, 2)) - } + // eslint-disable-next-line consistent-return + return fnResponse + }, + ) - return fnResponse - } + return shouldStream ? awslambda.streamifyResponse(handler) : handler +} + +export { createCloudFrontRequestEvent, createAPIGatewayProxyEventV2Handler } diff --git a/packages/adapter/src/lambda/helpers.ts b/packages/adapter/src/lambda/helpers.ts index 1cfc544..6f28d6f 100644 --- a/packages/adapter/src/lambda/helpers.ts +++ b/packages/adapter/src/lambda/helpers.ts @@ -30,11 +30,11 @@ const createRequestBody = ( return undefined } -const createLambdaFunctionResponse = async ( +const createLambdaFunctionHeaders = ( app: NodeApp, response: Response, knownBinaryMediaTypes: Set, -): Promise => { +) => { const cookies = [...app.setCookieHeaders(response)] response.headers.delete("Set-Cookie") @@ -42,6 +42,25 @@ const createLambdaFunctionResponse = async ( const headers = Object.fromEntries(response.headers.entries()) const responseContentType = parseContentType(headers["content-type"]) const isBase64Encoded = knownBinaryMediaTypes.has(responseContentType) + + return { + cookies, + headers, + isBase64Encoded, + responseContentType, + } +} + +const createLambdaFunctionResponse = async ( + app: NodeApp, + response: Response, + knownBinaryMediaTypes: Set, +): Promise => { + const { cookies, headers, isBase64Encoded } = createLambdaFunctionHeaders( + app, + response, + knownBinaryMediaTypes, + ) const body = isBase64Encoded ? Buffer.from(await response.arrayBuffer()).toString("base64") : ((await response.text()) as string) @@ -109,4 +128,5 @@ export { createRequestBody, createLambdaFunctionResponse, createLambdaEdgeFunctionResponse, + createLambdaFunctionHeaders, } diff --git a/packages/adapter/src/lambda/index.ts b/packages/adapter/src/lambda/index.ts index d31597d..11f4fdd 100644 --- a/packages/adapter/src/lambda/index.ts +++ b/packages/adapter/src/lambda/index.ts @@ -4,7 +4,10 @@ import { NodeApp } from "astro/app/node" import type { Args } from "../args.js" -import { createHandler } from "./handler.js" +import { + createAPIGatewayProxyEventV2Handler, + createCloudFrontRequestEvent, +} from "./handler.js" polyfill(globalThis, { exclude: "window document", @@ -13,7 +16,7 @@ polyfill(globalThis, { export const createExports = (manifest: SSRManifest, args: Args) => { const app = new NodeApp(manifest) - const { binaryMediaTypes = [] } = args + const { binaryMediaTypes, mode } = args const knownBinaryMediaTypes = new Set([ "application/epub+zip", @@ -68,7 +71,10 @@ export const createExports = (manifest: SSRManifest, args: Args) => { ...binaryMediaTypes, ]) - const handler = createHandler(app, knownBinaryMediaTypes, args) + const handler = + mode === "edge" + ? createCloudFrontRequestEvent(app, knownBinaryMediaTypes) + : createAPIGatewayProxyEventV2Handler(args, app, knownBinaryMediaTypes) return { handler } } diff --git a/packages/adapter/src/lambda/logger.ts b/packages/adapter/src/lambda/logger.ts new file mode 100644 index 0000000..873722c --- /dev/null +++ b/packages/adapter/src/lambda/logger.ts @@ -0,0 +1,7 @@ +import { env } from "node:process" + +import { pino } from "pino" + +export const logger = pino({ + level: env.ASTRO_AWS_LOG_LEVEL ?? "fatal", +}) diff --git a/packages/adapter/src/lambda/types.d.ts b/packages/adapter/src/lambda/types.d.ts new file mode 100644 index 0000000..219c7c8 --- /dev/null +++ b/packages/adapter/src/lambda/types.d.ts @@ -0,0 +1,30 @@ +import type { Writable } from "node:stream" + +import type { + APIGatewayProxyEventV2, + APIGatewayProxyStructuredResultV2, +} from "aws-lambda" + +declare global { + type ResponseStream = Writable + + type AWSLambda = { + HttpResponseStream: { + from: ( + responseStream: ResponseStream, + metadata: Omit< + APIGatewayProxyStructuredResultV2, + "body" | "isBase64Encoded" + >, + ) => ResponseStream + } + streamifyResponse: ( + fn: ( + event: APIGatewayProxyEventV2, + stream: ResponseStream, + ) => Promise, + ) => (event: APIGatewayProxyEventV2) => Promise + } + + const awslambda: AWSLambda +} diff --git a/packages/constructs/README.md b/packages/constructs/README.md index 6169856..e9ca08a 100644 --- a/packages/constructs/README.md +++ b/packages/constructs/README.md @@ -2,7 +2,7 @@ Constructs for deploying your [Astro](https://astro.build/) project that is built using [@astro-aws/adapter](https://www.npmjs.com/package/@astro-aws/adapter). -## SSR Usage +## Usage 1. Install this package and it's peer dependencies in your AWS CDK project. @@ -34,85 +34,6 @@ export class MyAstroStack extends Stack { super(scope, id, props) new AstroAWS(this, "AstroAWS", { - output: "server", - websitePath: "..", // Replace with the path to your website code. - }) - } -} -``` - -## SSR Edge Usage - -1. Install this package and it's peer dependencies in your AWS CDK project. - -```sh -# Using NPM -npm install @astro-aws/constructs constructs aws-cdk-lib - -# Using Yarn -yarn add @astro-aws/constructs constructs aws-cdk-lib - -# Using PNPM -pnpm add @astro-aws/constructs constructs aws-cdk-lib - -# Using Bun -bun add @astro-aws/constructs constructs aws-cdk-lib -``` - -2. Add the construct to your CDK stack. - -```ts -import { Stack } from "aws-cdk-lib/core" -import type { StackProps } from "aws-cdk-lib/core" -import { AstroAWS } from "@astro-aws/constructs" - -export interface MyAstroStackProps extends StackProps {} - -export class MyAstroStack extends Stack { - public constructor(scope: Construct, id: string, props: MyAstroStackProps) { - super(scope, id, props) - - new AstroAWS(this, "AstroAWS", { - output: "edge", - websitePath: "..", // Replace with the path to your website code. - }) - } -} -``` - -## Static Usage - -1. Install this package and it's peer dependencies in your AWS CDK project. - -```sh -# Using NPM -npm install @astro-aws/constructs constructs aws-cdk-lib - -# Using Yarn -yarn add @astro-aws/constructs constructs aws-cdk-lib - -# Using PNPM -pnpm add @astro-aws/constructs constructs aws-cdk-lib - -# Using Bun -bun add @astro-aws/constructs constructs aws-cdk-lib -``` - -2. Add the construct to your CDK stack. - -```ts -import { Stack } from "aws-cdk-lib/core" -import type { StackProps } from "aws-cdk-lib/core" -import { AstroAWS } from "@astro-aws/constructs" - -export interface MyAstroStackProps extends StackProps {} - -export class MyAstroStack extends Stack { - public constructor(scope: Construct, id: string, props: MyAstroStackProps) { - super(scope, id, props) - - new AstroAWS(this, "AstroAWS", { - output: "static", websitePath: "..", // Replace with the path to your website code. }) } @@ -140,7 +61,6 @@ export class MyAstroStack extends Stack { memorySize: 1024, }, }, - output: "server", websitePath: "..", // Replace with the path to your website code. }) diff --git a/packages/constructs/src/constructs/astro-aws-cloudfront-distribution.ts b/packages/constructs/src/constructs/astro-aws-cloudfront-distribution.ts index 247baf2..74141dc 100644 --- a/packages/constructs/src/constructs/astro-aws-cloudfront-distribution.ts +++ b/packages/constructs/src/constructs/astro-aws-cloudfront-distribution.ts @@ -33,7 +33,6 @@ type AstroAWSCloudfrontDistributionCdkProps = { } type AstroAWSCloudfrontDistributionProps = AstroAWSBaseConstructProps & { - edge?: boolean lambdaFunction?: Function origin: IOrigin lambdaFunctionOrigin?: IOrigin @@ -92,7 +91,7 @@ class AstroAWSCloudfrontDistribution extends AstroAWSBaseConstruct< const edgeLambdas: EdgeLambda[] = this.props.cdk?.cloudfrontDistribution?.defaultBehavior?.edgeLambdas ?? [] - if (this.props.edge && this.props.lambdaFunction) { + if (this.metadata?.args.mode === "edge" && this.props.lambdaFunction) { edgeLambdas.push({ eventType: LambdaEdgeEventType.ORIGIN_REQUEST, functionVersion: this.props.lambdaFunction.currentVersion, diff --git a/packages/constructs/src/constructs/astro-aws-origin.ts b/packages/constructs/src/constructs/astro-aws-origin.ts index c7b1f97..db028b1 100644 --- a/packages/constructs/src/constructs/astro-aws-origin.ts +++ b/packages/constructs/src/constructs/astro-aws-origin.ts @@ -2,6 +2,7 @@ import { type Construct } from "constructs" import { type FunctionUrl, FunctionUrlAuthType, + InvokeMode, type FunctionUrlOptions, type Function, } from "aws-cdk-lib/aws-lambda" @@ -30,7 +31,6 @@ type AstroAWSOriginCdkProps = { } type AstroAWSOriginProps = AstroAWSBaseConstructProps & { - edge?: boolean lambdaFunction?: Function s3Bucket: Bucket cdk?: AstroAWSOriginCdkProps @@ -62,6 +62,10 @@ class AstroAWSOrigin extends AstroAWSBaseConstruct< if (this.props.lambdaFunction && this.isSSR) { this.#lambdaFunctionUrl = this.props.lambdaFunction.addFunctionUrl({ authType: FunctionUrlAuthType.NONE, + invokeMode: + this.metadata?.args.mode === "ssr-stream" + ? InvokeMode.RESPONSE_STREAM + : InvokeMode.BUFFERED, ...this.props.cdk?.lambdaFunctionUrl, }) @@ -70,7 +74,7 @@ class AstroAWSOrigin extends AstroAWSBaseConstruct< this.props.cdk?.lambdaFunctionOrigin, ) - if (!this.props.edge) { + if (this.metadata?.args.mode.includes("ssr")) { this.#originGroup = new OriginGroup({ ...this.props.cdk?.originGroup, fallbackOrigin: this.#s3Origin, diff --git a/packages/constructs/src/constructs/astro-aws.ts b/packages/constructs/src/constructs/astro-aws.ts index b22e78c..5f0a8e8 100644 --- a/packages/constructs/src/constructs/astro-aws.ts +++ b/packages/constructs/src/constructs/astro-aws.ts @@ -5,6 +5,7 @@ import { Code, Function, Runtime, + Architecture, } from "aws-cdk-lib/aws-lambda" import { type Construct } from "constructs" @@ -39,7 +40,6 @@ type AstroAWSProps = { /** Passed through to the Bucket Origin. */ websiteDir?: string outDir?: string - edge?: boolean cdk?: AstroAWSCdkProps & AstroAWSCloudfrontDistributionCdkProps & AstroAWSOriginCdkProps & @@ -125,14 +125,30 @@ class AstroAWS extends AstroAWSBaseConstruct { } private createSSROnlyResources() { + const { + environment = {}, + architecture, + ...givenProps + } = this.props.cdk?.lambdaFunction ?? {} + this.#lambdaFunction = new Function(this, "Function", { description: "SSR Lambda Function", memorySize: 512, runtime: Runtime.NODEJS_18_X, - ...this.props.cdk?.lambdaFunction, + ...givenProps, + architecture: + this.metadata?.args.mode === "edge" + ? Architecture.X86_64 + : architecture, code: Code.fromAsset(resolve(this.distDir, "lambda")), handler: "entry.handler", }) + + Object.entries(environment).forEach(([key, value]) => { + this.#lambdaFunction?.addEnvironment(key, value, { + removeInEdge: true, + }) + }) } } diff --git a/packages/constructs/src/types/astro-aws-construct.ts b/packages/constructs/src/types/astro-aws-construct.ts index 2fc49d5..4421606 100644 --- a/packages/constructs/src/types/astro-aws-construct.ts +++ b/packages/constructs/src/types/astro-aws-construct.ts @@ -15,10 +15,8 @@ type Args = { binaryMediaTypes: string[] /** Configures ESBuild options that are not configured automatically. */ esBuildOptions: Record - /** Enables a log message that prints the request the lambda receives. */ - logFnRequest: boolean - /** Enables a log message that prints the response the lambda returns. */ - logFnResponse: boolean + /** Specifies where you want your app deployed to. */ + mode: "edge" | "ssr-stream" | "ssr" } type Metadata = { diff --git a/patches/@lshay__prettier-config@0.6.0.patch b/patches/@lshay__prettier-config@0.6.0.patch deleted file mode 100644 index 2b90cfd..0000000 --- a/patches/@lshay__prettier-config@0.6.0.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/index.cjs b/index.cjs -index dc5af5e9efbe0a50e91fff2ff77c0b87cd2653d2..b27670ca3f780624d0ce8256ae6c7380069348e3 100644 ---- a/index.cjs -+++ b/index.cjs -@@ -33,7 +33,6 @@ const config = { - plugins: [ - require.resolve("prettier-plugin-tailwindcss"), - require.resolve("prettier-plugin-sh"), -- require.resolve("prettier-plugin-jsdoc"), - ], - printWidth: 80, - proseWrap: "preserve", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3c9d7cd..956a1ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,11 +4,6 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false -patchedDependencies: - "@lshay/prettier-config@0.6.0": - hash: b76wl3x4uq2cuar22uggmnnfx4 - path: patches/@lshay__prettier-config@0.6.0.patch - importers: .: dependencies: @@ -23,28 +18,28 @@ importers: version: 2.26.2 "@lshay/eslint-config": specifier: ^0.2.5 - version: 0.2.5(eslint@8.49.0)(typescript@5.2.2) + version: 0.2.5(eslint@8.51.0)(typescript@5.2.2) "@lshay/prettier-config": - specifier: ^0.6.0 - version: 0.6.0(patch_hash=b76wl3x4uq2cuar22uggmnnfx4)(prettier@3.0.3) + specifier: ^0.6.1 + version: 0.6.1(prettier@3.0.3) "@rushstack/eslint-patch": - specifier: ^1.4.0 - version: 1.4.0 + specifier: ^1.5.1 + version: 1.5.1 eslint: - specifier: ^8.49.0 - version: 8.49.0 + specifier: ^8.51.0 + version: 8.51.0 eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + version: 2.28.1(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) prettier: specifier: ^3.0.3 version: 3.0.3 turbo: - specifier: ^1.10.14 - version: 1.10.14 + specifier: ^1.10.15 + version: 1.10.15 typescript: specifier: ^5.2.2 version: 5.2.2 @@ -53,10 +48,10 @@ importers: dependencies: "@astrojs/starlight": specifier: ^0.11.0 - version: 0.11.0(astro@3.2.3) + version: 0.11.0(astro@3.2.4) astro: - specifier: ^3.2.3 - version: 3.2.3(@types/node@18.18.4) + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.18.4) sharp: specifier: ^0.32.6 version: 0.32.6 @@ -117,14 +112,14 @@ importers: examples/base: dependencies: "@astrojs/tailwind": - specifier: ^5.0.1 - version: 5.0.1(astro@3.2.3)(tailwindcss@3.3.3) + specifier: ^5.0.2 + version: 5.0.2(astro@3.2.4)(tailwindcss@3.3.3) "@faker-js/faker": specifier: ^8.1.0 version: 8.1.0 astro: - specifier: ^3.2.3 - version: 3.2.3(@types/node@18.18.4) + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.18.4) daisyui: specifier: ^3.9.2 version: 3.9.2 @@ -141,6 +136,9 @@ importers: eslint: specifier: ^8.51.0 version: 8.51.0 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 prettier: specifier: ^3.0.3 version: 3.0.3 @@ -162,6 +160,9 @@ importers: merge-anything: specifier: ^5.1.7 version: 5.1.7 + pino: + specifier: ^8.16.0 + version: 8.16.0 devDependencies: "@astro-aws/scripts": specifier: workspace:^ @@ -176,8 +177,8 @@ importers: specifier: ^18.18.0 version: 18.18.4 astro: - specifier: ^3.2.3 - version: 3.2.3(@types/node@18.18.4) + specifier: ^3.2.4 + version: 3.2.4(@types/node@18.18.4) aws-lambda: specifier: ^1.0.7 version: 1.0.7 @@ -359,7 +360,7 @@ packages: - typescript dev: true - /@astrojs/markdown-remark@3.2.1(astro@3.2.3): + /@astrojs/markdown-remark@3.2.1(astro@3.2.4): resolution: { integrity: sha512-Z4YNMRtgFZeHhB29uCZl0B9MbMZddW9ZKCNucapoysbvygbDFF1gGtqpVnf+Lyv3rUBHwM/J5qWB2MSZuTuz1g==, @@ -368,7 +369,7 @@ packages: astro: ^3.2.3 dependencies: "@astrojs/prism": 3.0.0 - astro: 3.2.3(@types/node@18.18.4) + astro: 3.2.4(@types/node@18.18.4) github-slugger: 2.0.0 import-meta-resolve: 3.0.0 mdast-util-definitions: 6.0.0 @@ -385,7 +386,7 @@ packages: transitivePeerDependencies: - supports-color - /@astrojs/mdx@1.1.1(astro@3.2.3): + /@astrojs/mdx@1.1.1(astro@3.2.4): resolution: { integrity: sha512-3dfL12ZqI6NCjx0iVOYVSyljlVgsxds5mOhe78xoCVjyqSpZZsxzz4Dt5WfGxDon2nc2bD6XGiZ2PIy8fmX6NQ==, @@ -394,10 +395,10 @@ packages: peerDependencies: astro: ^3.2.3 dependencies: - "@astrojs/markdown-remark": 3.2.1(astro@3.2.3) + "@astrojs/markdown-remark": 3.2.1(astro@3.2.4) "@mdx-js/mdx": 2.3.0 acorn: 8.10.0 - astro: 3.2.3(@types/node@18.18.4) + astro: 3.2.4(@types/node@18.18.4) es-module-lexer: 1.3.1 estree-util-visit: 1.2.1 github-slugger: 2.0.0 @@ -433,7 +434,7 @@ packages: zod: 3.21.1 dev: false - /@astrojs/starlight@0.11.0(astro@3.2.3): + /@astrojs/starlight@0.11.0(astro@3.2.4): resolution: { integrity: sha512-ZnYB1AHetRujy25fSW4uvJTn2ry8nFspMCySWkeB1VT7QzTTgol9y19o1HTWVessViJhlavayHAjd42Pru1rww==, @@ -441,11 +442,11 @@ packages: peerDependencies: astro: ^3.2.0 dependencies: - "@astrojs/mdx": 1.1.1(astro@3.2.3) + "@astrojs/mdx": 1.1.1(astro@3.2.4) "@astrojs/sitemap": 3.0.0 "@pagefind/default-ui": 1.0.3 "@types/mdast": 3.0.12 - astro: 3.2.3(@types/node@18.18.4) + astro: 3.2.4(@types/node@18.18.4) bcp-47: 2.1.0 execa: 7.2.0 hast-util-select: 5.0.5 @@ -461,16 +462,16 @@ packages: - supports-color dev: false - /@astrojs/tailwind@5.0.1(astro@3.2.3)(tailwindcss@3.3.3): + /@astrojs/tailwind@5.0.2(astro@3.2.4)(tailwindcss@3.3.3): resolution: { - integrity: sha512-HzguDH+q1v8NhZIu245UtXfz5tuy4IAd/TND92z5vyftYtGdjDLdBeHhMH4Wd91/0sIPPNRz9NUfToprI636YQ==, + integrity: sha512-oXqeqmBlkQmsltrsU9nEWeXOtrZIAHW8dcmX7BCdrjzPnU6dPwWzAwhddNQ9ihKiWwsLnlbwQZIo2CDigcZlIA==, } peerDependencies: - astro: ^3.2.3 + astro: ^3.2.4 tailwindcss: ^3.0.24 dependencies: - astro: 3.2.3(@types/node@18.18.4) + astro: 3.2.4(@types/node@18.18.4) autoprefixer: 10.4.16(postcss@8.4.29) postcss: 8.4.29 postcss-load-config: 4.0.1(postcss@8.4.29) @@ -590,23 +591,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.17.0(@babel/core@7.17.0)(eslint@8.49.0): - resolution: - { - integrity: sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==, - } - engines: { node: ^10.13.0 || ^12.13.0 || >=14.0.0 } - peerDependencies: - "@babel/core": ">=7.11.0" - eslint: ^7.5.0 || ^8.0.0 - dependencies: - "@babel/core": 7.17.0 - eslint: 8.49.0 - eslint-scope: 5.1.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - dev: false - /@babel/eslint-parser@7.17.0(@babel/core@7.17.0)(eslint@8.51.0): resolution: { @@ -622,7 +606,6 @@ packages: eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - dev: true /@babel/generator@7.22.15: resolution: @@ -1751,18 +1734,6 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.49.0 - eslint-visitor-keys: 3.4.3 - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: { @@ -1801,13 +1772,6 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js@8.49.0: - resolution: - { - integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - /@eslint/js@8.51.0: resolution: { @@ -1913,7 +1877,7 @@ packages: "@jridgewell/resolve-uri": 3.1.1 "@jridgewell/sourcemap-codec": 1.4.15 - /@lshay/eslint-config@0.2.5(eslint@8.49.0)(typescript@5.2.2): + /@lshay/eslint-config@0.2.5(eslint@8.51.0)(typescript@5.2.2): resolution: { integrity: sha512-v+2JeLXw3FM4cP44pXp6nQ8VqRFvxPHfIiJdbVAXvHhhkMmwpbasVIJDDF5C5gOUKNLK64LkAeC3g7PtSsNvPA==, @@ -1923,12 +1887,12 @@ packages: eslint: 8.x dependencies: "@next/eslint-plugin-next": 13.2.4 - "@typescript-eslint/eslint-plugin": 5.55.0(@typescript-eslint/parser@5.55.0)(eslint@8.49.0)(typescript@5.2.2) - "@typescript-eslint/parser": 5.55.0(eslint@8.49.0)(typescript@5.2.2) - eslint: 8.49.0 - eslint-config-get-off-my-lawn: 7.2.0(eslint@8.49.0) - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.49.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.49.0) + "@typescript-eslint/eslint-plugin": 5.55.0(@typescript-eslint/parser@5.55.0)(eslint@8.51.0)(typescript@5.2.2) + "@typescript-eslint/parser": 5.55.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-config-get-off-my-lawn: 7.2.0(eslint@8.51.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.51.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.51.0) transitivePeerDependencies: - eslint-import-resolver-webpack - jest @@ -1936,10 +1900,10 @@ packages: - typescript dev: false - /@lshay/prettier-config@0.6.0(patch_hash=b76wl3x4uq2cuar22uggmnnfx4)(prettier@3.0.3): + /@lshay/prettier-config@0.6.1(prettier@3.0.3): resolution: { - integrity: sha512-yUOtGazjkNg11KZvcpAuxErKYh/CN5ObT7xqg1uf+x93R5L6E2DSGhUfAhxPVbY3/iI0HKqL1avdAgXoLqlWHA==, + integrity: sha512-DWMN6W1PCg7LhlQPHd5jGU64yTlkediMxQnT2VfF8yuoZa2Nesk9c3Y95bQpN+dayP6bZGsgFSMdlF8YKhlqVw==, } engines: { node: 16.x || 18.x || 20.x } peerDependencies: @@ -1947,12 +1911,12 @@ packages: dependencies: merge-anything: 5.1.7 prettier: 3.0.3 - prettier-plugin-astro: 0.11.1 - prettier-plugin-jsdoc: 0.4.2(prettier@3.0.3) + prettier-plugin-astro: 0.12.0 + prettier-plugin-jsdoc: 1.1.1(prettier@3.0.3) prettier-plugin-packagejson: 2.4.5(prettier@3.0.3) prettier-plugin-sh: 0.13.1(prettier@3.0.3) - prettier-plugin-sort-json: 1.0.0(prettier@3.0.3) - prettier-plugin-tailwindcss: 0.4.1(prettier-plugin-astro@0.11.1)(prettier-plugin-jsdoc@0.4.2)(prettier@3.0.3) + prettier-plugin-sort-json: 3.1.0(prettier@3.0.3) + prettier-plugin-tailwindcss: 0.5.5(prettier-plugin-astro@0.12.0)(prettier-plugin-jsdoc@1.1.1)(prettier@3.0.3) transitivePeerDependencies: - "@ianvs/prettier-plugin-sort-imports" - "@prettier/plugin-pug" @@ -1969,7 +1933,6 @@ packages: - prettier-plugin-twig-melody - supports-color dev: false - patched: true /@manypkg/find-root@1.1.0: resolution: @@ -2161,10 +2124,10 @@ packages: integrity: sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==, } - /@rushstack/eslint-patch@1.4.0: + /@rushstack/eslint-patch@1.5.1: resolution: { - integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==, + integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==, } dev: false @@ -2378,13 +2341,6 @@ packages: integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==, } - /@types/prettier@2.7.3: - resolution: - { - integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==, - } - dev: false - /@types/resolve@1.20.2: resolution: { @@ -2418,36 +2374,6 @@ packages: integrity: sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==, } - /@typescript-eslint/eslint-plugin@5.10.2(@typescript-eslint/parser@5.10.2)(eslint@8.49.0)(typescript@4.5.5): - resolution: - { - integrity: sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/parser": 5.10.2(eslint@8.49.0)(typescript@4.5.5) - "@typescript-eslint/scope-manager": 5.10.2 - "@typescript-eslint/type-utils": 5.10.2(eslint@8.49.0)(typescript@4.5.5) - "@typescript-eslint/utils": 5.10.2(eslint@8.49.0)(typescript@4.5.5) - debug: 4.3.4 - eslint: 8.49.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.4 - regexpp: 3.2.0 - semver: 7.5.4 - tsutils: 3.21.0(typescript@4.5.5) - typescript: 4.5.5 - transitivePeerDependencies: - - supports-color - dev: false - /@typescript-eslint/eslint-plugin@5.10.2(@typescript-eslint/parser@5.10.2)(eslint@8.51.0)(typescript@4.5.5): resolution: { @@ -2476,9 +2402,8 @@ packages: typescript: 4.5.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/eslint-plugin@5.55.0(@typescript-eslint/parser@5.55.0)(eslint@8.49.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@5.55.0(@typescript-eslint/parser@5.55.0)(eslint@8.51.0)(typescript@5.2.2): resolution: { integrity: sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==, @@ -2493,12 +2418,12 @@ packages: optional: true dependencies: "@eslint-community/regexpp": 4.8.1 - "@typescript-eslint/parser": 5.55.0(eslint@8.49.0)(typescript@5.2.2) + "@typescript-eslint/parser": 5.55.0(eslint@8.51.0)(typescript@5.2.2) "@typescript-eslint/scope-manager": 5.55.0 - "@typescript-eslint/type-utils": 5.55.0(eslint@8.49.0)(typescript@5.2.2) - "@typescript-eslint/utils": 5.55.0(eslint@8.49.0)(typescript@5.2.2) + "@typescript-eslint/type-utils": 5.55.0(eslint@8.51.0)(typescript@5.2.2) + "@typescript-eslint/utils": 5.55.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -2509,29 +2434,6 @@ packages: - supports-color dev: false - /@typescript-eslint/parser@5.10.2(eslint@8.49.0)(typescript@4.5.5): - resolution: - { - integrity: sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/scope-manager": 5.10.2 - "@typescript-eslint/types": 5.10.2 - "@typescript-eslint/typescript-estree": 5.10.2(typescript@4.5.5) - debug: 4.3.4 - eslint: 8.49.0 - typescript: 4.5.5 - transitivePeerDependencies: - - supports-color - dev: false - /@typescript-eslint/parser@5.10.2(eslint@8.51.0)(typescript@5.2.2): resolution: { @@ -2553,9 +2455,8 @@ packages: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@5.55.0(eslint@8.49.0)(typescript@5.2.2): + /@typescript-eslint/parser@5.55.0(eslint@8.51.0)(typescript@5.2.2): resolution: { integrity: sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==, @@ -2572,7 +2473,7 @@ packages: "@typescript-eslint/types": 5.55.0 "@typescript-eslint/typescript-estree": 5.55.0(typescript@5.2.2) debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -2607,28 +2508,6 @@ packages: "@typescript-eslint/types": 5.62.0 "@typescript-eslint/visitor-keys": 5.62.0 - /@typescript-eslint/type-utils@5.10.2(eslint@8.49.0)(typescript@4.5.5): - resolution: - { - integrity: sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: "*" - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - dependencies: - "@typescript-eslint/utils": 5.10.2(eslint@8.49.0)(typescript@4.5.5) - debug: 4.3.4 - eslint: 8.49.0 - tsutils: 3.21.0(typescript@4.5.5) - typescript: 4.5.5 - transitivePeerDependencies: - - supports-color - dev: false - /@typescript-eslint/type-utils@5.10.2(eslint@8.51.0)(typescript@4.5.5): resolution: { @@ -2649,9 +2528,8 @@ packages: typescript: 4.5.5 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/type-utils@5.55.0(eslint@8.49.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@5.55.0(eslint@8.51.0)(typescript@5.2.2): resolution: { integrity: sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==, @@ -2665,9 +2543,9 @@ packages: optional: true dependencies: "@typescript-eslint/typescript-estree": 5.55.0(typescript@5.2.2) - "@typescript-eslint/utils": 5.55.0(eslint@8.49.0)(typescript@5.2.2) + "@typescript-eslint/utils": 5.55.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 tsutils: 3.21.0(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -2740,7 +2618,6 @@ packages: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/typescript-estree@5.55.0(typescript@5.2.2): resolution: @@ -2788,27 +2665,6 @@ packages: transitivePeerDependencies: - supports-color - /@typescript-eslint/utils@5.10.2(eslint@8.49.0)(typescript@4.5.5): - resolution: - { - integrity: sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - "@types/json-schema": 7.0.12 - "@typescript-eslint/scope-manager": 5.10.2 - "@typescript-eslint/types": 5.10.2 - "@typescript-eslint/typescript-estree": 5.10.2(typescript@4.5.5) - eslint: 8.49.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.49.0) - transitivePeerDependencies: - - supports-color - - typescript - dev: false - /@typescript-eslint/utils@5.10.2(eslint@8.51.0)(typescript@4.5.5): resolution: { @@ -2828,9 +2684,8 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/utils@5.55.0(eslint@8.49.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.55.0(eslint@8.51.0)(typescript@5.2.2): resolution: { integrity: sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==, @@ -2839,36 +2694,13 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.49.0) + "@eslint-community/eslint-utils": 4.4.0(eslint@8.51.0) "@types/json-schema": 7.0.12 "@types/semver": 7.5.1 "@typescript-eslint/scope-manager": 5.55.0 "@typescript-eslint/types": 5.55.0 "@typescript-eslint/typescript-estree": 5.55.0(typescript@5.2.2) - eslint: 8.49.0 - eslint-scope: 5.1.1 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: false - - /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@4.5.5): - resolution: - { - integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.49.0) - "@types/json-schema": 7.0.12 - "@types/semver": 7.5.1 - "@typescript-eslint/scope-manager": 5.62.0 - "@typescript-eslint/types": 5.62.0 - "@typescript-eslint/typescript-estree": 5.62.0(typescript@4.5.5) - eslint: 8.49.0 + eslint: 8.51.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -2897,7 +2729,6 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true /@typescript-eslint/visitor-keys@5.10.2: resolution: @@ -3089,6 +2920,16 @@ packages: } dev: false + /abort-controller@3.0.0: + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: ">=6.5" } + dependencies: + event-target-shim: 5.0.1 + dev: false + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: { @@ -3377,17 +3218,17 @@ packages: hasBin: true dev: false - /astro@3.2.3(@types/node@18.18.4): + /astro@3.2.4(@types/node@18.18.4): resolution: { - integrity: sha512-1epnxQhTbfzgdmLP1yu51E8zjIOKYxZyA8hMTD4S2E+F5gMp/D81H4hekPbbq89GDxNJiHDRNZDHtS5vrU5E5w==, + integrity: sha512-e95Yz6tYG6Q2SEOCzujqCHq9/HOB2z085KP1K36kGuGtu0qaa3mmnz3R9FpKM/W5SbmrNgUv4QaP207EUkMp5Q==, } engines: { node: ">=18.14.1", npm: ">=6.14.0" } hasBin: true dependencies: "@astrojs/compiler": 2.1.0 "@astrojs/internal-helpers": 0.2.1 - "@astrojs/markdown-remark": 3.2.1(astro@3.2.3) + "@astrojs/markdown-remark": 3.2.1(astro@3.2.4) "@astrojs/telemetry": 3.0.3 "@babel/core": 7.22.17 "@babel/generator": 7.22.15 @@ -3452,6 +3293,14 @@ packages: - supports-color - terser + /atomic-sleep@1.0.0: + resolution: + { + integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==, + } + engines: { node: ">=8.0.0" } + dev: false + /autoprefixer@10.4.16(postcss@8.4.29): resolution: { @@ -4234,6 +4083,20 @@ packages: which: 1.3.1 dev: false + /cross-spawn@6.0.5: + resolution: + { + integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==, + } + engines: { node: ">=4.8" } + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + /cross-spawn@7.0.3: resolution: { @@ -4540,6 +4403,15 @@ packages: integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==, } + /devlop@1.1.0: + resolution: + { + integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, + } + dependencies: + dequal: 2.0.3 + dev: false + /didyoumean@1.2.2: resolution: { @@ -4879,50 +4751,6 @@ packages: } engines: { node: ">=12" } - /eslint-config-get-off-my-lawn@7.2.0(eslint@8.49.0): - resolution: - { - integrity: sha512-bKY9toOU0Skw0OyVHJmMNB+XBW7ZG6PHZUe70Eqp5WuEIRe7HibR7UBTkjehdN+BjJXdmf6blJlTd5SoNiZ7Fg==, - } - engines: { node: ">=12.20.0" } - peerDependencies: - eslint: ">=8.7.0" - dependencies: - "@babel/core": 7.17.0 - "@babel/eslint-parser": 7.17.0(@babel/core@7.17.0)(eslint@8.49.0) - "@babel/preset-react": 7.16.7(@babel/core@7.17.0) - "@next/eslint-plugin-next": 12.0.10 - "@rushstack/eslint-patch": 1.1.0 - "@typescript-eslint/eslint-plugin": 5.10.2(@typescript-eslint/parser@5.10.2)(eslint@8.49.0)(typescript@4.5.5) - "@typescript-eslint/parser": 5.10.2(eslint@8.49.0)(typescript@4.5.5) - confusing-browser-globals: 1.0.11 - eslint: 8.49.0 - eslint-config-prettier: 8.3.0(eslint@8.49.0) - eslint-import-resolver-typescript: 2.5.0(eslint-plugin-import@2.25.4)(eslint@8.49.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.49.0) - eslint-plugin-get-off-my-lawn: 3.0.0(eslint@8.49.0) - eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@2.5.0)(eslint@8.49.0) - eslint-plugin-jest: 26.0.0(@typescript-eslint/eslint-plugin@5.10.2)(eslint@8.49.0)(typescript@4.5.5) - eslint-plugin-jest-formatting: 3.1.0(eslint@8.49.0) - eslint-plugin-jsonc: 2.1.0(eslint@8.49.0) - eslint-plugin-jsx-a11y: 6.5.1(eslint@8.49.0) - eslint-plugin-node: 11.1.0(eslint@8.49.0) - eslint-plugin-objects: 1.1.1(eslint@8.49.0) - eslint-plugin-react: 7.28.0(eslint@8.49.0) - eslint-plugin-react-hooks: 4.3.0(eslint@8.49.0) - eslint-plugin-react-native: 4.0.0(eslint@8.49.0) - eslint-plugin-security: 1.4.0 - eslint-plugin-unicorn: 40.1.0(eslint@8.49.0) - fs-extra: 10.0.0 - merge-anything: 4.0.5 - semver: 7.3.5 - typescript: 4.5.5 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - jest - - supports-color - dev: false - /eslint-config-get-off-my-lawn@7.2.0(eslint@8.51.0): resolution: { @@ -4945,7 +4773,7 @@ packages: eslint-import-resolver-typescript: 2.5.0(eslint-plugin-import@2.25.4)(eslint@8.51.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) eslint-plugin-get-off-my-lawn: 3.0.0(eslint@8.51.0) - eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0) + eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) eslint-plugin-jest: 26.0.0(@typescript-eslint/eslint-plugin@5.10.2)(eslint@8.51.0)(typescript@4.5.5) eslint-plugin-jest-formatting: 3.1.0(eslint@8.51.0) eslint-plugin-jsonc: 2.1.0(eslint@8.51.0) @@ -4965,19 +4793,6 @@ packages: - eslint-import-resolver-webpack - jest - supports-color - dev: true - - /eslint-config-prettier@8.3.0(eslint@8.49.0): - resolution: - { - integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==, - } - hasBin: true - peerDependencies: - eslint: ">=7.0.0" - dependencies: - eslint: 8.49.0 - dev: false /eslint-config-prettier@8.3.0(eslint@8.51.0): resolution: @@ -4989,7 +4804,6 @@ packages: eslint: ">=7.0.0" dependencies: eslint: 8.51.0 - dev: true /eslint-import-resolver-node@0.3.9: resolution: @@ -5003,27 +4817,6 @@ packages: transitivePeerDependencies: - supports-color - /eslint-import-resolver-typescript@2.5.0(eslint-plugin-import@2.25.4)(eslint@8.49.0): - resolution: - { - integrity: sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==, - } - engines: { node: ">=4" } - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - dependencies: - debug: 4.3.4 - eslint: 8.49.0 - eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@2.5.0)(eslint@8.49.0) - glob: 7.2.3 - is-glob: 4.0.3 - resolve: 1.22.4 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - supports-color - dev: false - /eslint-import-resolver-typescript@2.5.0(eslint-plugin-import@2.25.4)(eslint@8.51.0): resolution: { @@ -5036,16 +4829,15 @@ packages: dependencies: debug: 4.3.4 eslint: 8.51.0 - eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0) + eslint-plugin-import: 2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) glob: 7.2.3 is-glob: 4.0.3 resolve: 1.22.4 tsconfig-paths: 3.14.2 transitivePeerDependencies: - supports-color - dev: true - /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.49.0): + /eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.27.5)(eslint@8.51.0): resolution: { integrity: sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==, @@ -5057,9 +4849,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.49.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.49.0) - get-tsconfig: 4.7.0 + eslint: 8.51.0 + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.51.0) + get-tsconfig: 4.7.2 globby: 13.2.2 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -5068,10 +4860,10 @@ packages: - supports-color dev: false - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0): resolution: { - integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==, + integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==, } engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: @@ -5080,11 +4872,11 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.49.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint: 8.51.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) fast-glob: 3.3.1 - get-tsconfig: 4.7.0 + get-tsconfig: 4.7.2 is-core-module: 2.13.0 is-glob: 4.0.3 transitivePeerDependencies: @@ -5093,7 +4885,7 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.5.0)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): resolution: { integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, @@ -5117,16 +4909,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - "@typescript-eslint/parser": 5.10.2(eslint@8.49.0)(typescript@4.5.5) + "@typescript-eslint/parser": 5.10.2(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.49.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 2.5.0(eslint-plugin-import@2.25.4)(eslint@8.49.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0) transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.3)(eslint@8.51.0): resolution: { integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, @@ -5150,16 +4941,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - "@typescript-eslint/parser": 5.10.2(eslint@8.51.0)(typescript@5.2.2) + "@typescript-eslint/parser": 5.55.0(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7 eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.51.0) transitivePeerDependencies: - supports-color - dev: true + dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.3)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): resolution: { integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, @@ -5183,88 +4974,26 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - "@typescript-eslint/parser": 5.55.0(eslint@8.49.0)(typescript@5.2.2) + "@typescript-eslint/parser": 5.55.0(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.49.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.27.5)(eslint@8.49.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.51.0) transitivePeerDependencies: - supports-color - dev: false - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-plugin-es@3.0.1(eslint@8.51.0): resolution: { - integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==, } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: "*" - eslint-import-resolver-node: "*" - eslint-import-resolver-typescript: "*" - eslint-import-resolver-webpack: "*" - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - "@typescript-eslint/parser": 5.55.0(eslint@8.49.0)(typescript@5.2.2) - debug: 3.2.7 - eslint: 8.49.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@5.55.0)(eslint-plugin-import@2.28.1)(eslint@8.49.0) - transitivePeerDependencies: - - supports-color - - /eslint-plugin-es@3.0.1(eslint@8.49.0): - resolution: - { - integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==, - } - engines: { node: ">=8.10.0" } - peerDependencies: - eslint: ">=4.19.1" - dependencies: - eslint: 8.49.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - dev: false - - /eslint-plugin-es@3.0.1(eslint@8.51.0): - resolution: - { - integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==, - } - engines: { node: ">=8.10.0" } + engines: { node: ">=8.10.0" } peerDependencies: eslint: ">=4.19.1" dependencies: eslint: 8.51.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - dev: true - - /eslint-plugin-eslint-comments@3.2.0(eslint@8.49.0): - resolution: - { - integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==, - } - engines: { node: ">=6.5.0" } - peerDependencies: - eslint: ">=4.19.1" - dependencies: - escape-string-regexp: 1.0.5 - eslint: 8.49.0 - ignore: 5.2.4 - dev: false /eslint-plugin-eslint-comments@3.2.0(eslint@8.51.0): resolution: @@ -5278,21 +5007,6 @@ packages: escape-string-regexp: 1.0.5 eslint: 8.51.0 ignore: 5.2.4 - dev: true - - /eslint-plugin-get-off-my-lawn@3.0.0(eslint@8.49.0): - resolution: - { - integrity: sha512-U3dt1cHDHyjY0b6KsvPm/LI59oR95XhYiviCmPpWnk7hgKftfY4TXYlD3XNS7veLfdbQRnQLDK5SgTnntaR6NQ==, - } - engines: { node: ">=12.20.0" } - peerDependencies: - eslint: ">=7.29.0" - dependencies: - dot-prop: 6.0.1 - eslint: 8.49.0 - import-modules: 2.1.0 - dev: false /eslint-plugin-get-off-my-lawn@3.0.0(eslint@8.51.0): resolution: @@ -5306,43 +5020,8 @@ packages: dot-prop: 6.0.1 eslint: 8.51.0 import-modules: 2.1.0 - dev: true - - /eslint-plugin-import@2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@2.5.0)(eslint@8.49.0): - resolution: - { - integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==, - } - engines: { node: ">=4" } - peerDependencies: - "@typescript-eslint/parser": "*" - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - "@typescript-eslint/parser": - optional: true - dependencies: - "@typescript-eslint/parser": 5.10.2(eslint@8.49.0)(typescript@4.5.5) - array-includes: 3.1.7 - array.prototype.flat: 1.3.2 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 8.49.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@2.5.0)(eslint@8.49.0) - has: 1.0.3 - is-core-module: 2.13.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.7 - resolve: 1.22.4 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: false - /eslint-plugin-import@2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0): + /eslint-plugin-import@2.25.4(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): resolution: { integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==, @@ -5362,7 +5041,7 @@ packages: doctrine: 2.1.0 eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.51.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.10.2)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -5374,9 +5053,8 @@ packages: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.49.0): + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.51.0): resolution: { integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==, @@ -5389,15 +5067,15 @@ packages: "@typescript-eslint/parser": optional: true dependencies: - "@typescript-eslint/parser": 5.55.0(eslint@8.49.0)(typescript@5.2.2) + "@typescript-eslint/parser": 5.55.0(eslint@8.51.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.49.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.3)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.3)(eslint@8.51.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -5412,7 +5090,7 @@ packages: - supports-color dev: false - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): resolution: { integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==, @@ -5425,16 +5103,16 @@ packages: "@typescript-eslint/parser": optional: true dependencies: - "@typescript-eslint/parser": 5.55.0(eslint@8.49.0)(typescript@5.2.2) + "@typescript-eslint/parser": 5.55.0(eslint@8.51.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.49.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.55.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -5449,18 +5127,6 @@ packages: - eslint-import-resolver-webpack - supports-color - /eslint-plugin-jest-formatting@3.1.0(eslint@8.49.0): - resolution: - { - integrity: sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ">=0.8.0" - dependencies: - eslint: 8.49.0 - dev: false - /eslint-plugin-jest-formatting@3.1.0(eslint@8.51.0): resolution: { @@ -5471,31 +5137,6 @@ packages: eslint: ">=0.8.0" dependencies: eslint: 8.51.0 - dev: true - - /eslint-plugin-jest@26.0.0(@typescript-eslint/eslint-plugin@5.10.2)(eslint@8.49.0)(typescript@4.5.5): - resolution: - { - integrity: sha512-Fvs0YgJ/nw9FTrnqTuMGVrkozkd07jkQzWm0ajqyHlfcsdkxGfAuv30fgfWHOnHiCr9+1YQ365CcDX7vrNhqQg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - jest: "*" - peerDependenciesMeta: - "@typescript-eslint/eslint-plugin": - optional: true - jest: - optional: true - dependencies: - "@typescript-eslint/eslint-plugin": 5.10.2(@typescript-eslint/parser@5.10.2)(eslint@8.49.0)(typescript@4.5.5) - "@typescript-eslint/utils": 5.62.0(eslint@8.49.0)(typescript@4.5.5) - eslint: 8.49.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: false /eslint-plugin-jest@26.0.0(@typescript-eslint/eslint-plugin@5.10.2)(eslint@8.51.0)(typescript@4.5.5): resolution: @@ -5519,22 +5160,6 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - - /eslint-plugin-jsonc@2.1.0(eslint@8.49.0): - resolution: - { - integrity: sha512-ueuFWW+u/hjU9+j5Ov+ZoWIukMlaWrB+MS/wfKYWqKkAVr7U9zYqUu4ZwLh2AHU3+FjvmS8+1Va5bP6J/ERVyg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ">=6.0.0" - dependencies: - eslint: 8.49.0 - eslint-utils: 3.0.0(eslint@8.49.0) - jsonc-eslint-parser: 2.3.0 - natural-compare: 1.4.0 - dev: false /eslint-plugin-jsonc@2.1.0(eslint@8.51.0): resolution: @@ -5549,31 +5174,6 @@ packages: eslint-utils: 3.0.0(eslint@8.51.0) jsonc-eslint-parser: 2.3.0 natural-compare: 1.4.0 - dev: true - - /eslint-plugin-jsx-a11y@6.5.1(eslint@8.49.0): - resolution: - { - integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==, - } - engines: { node: ">=4.0" } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - "@babel/runtime": 7.22.15 - aria-query: 4.2.2 - array-includes: 3.1.7 - ast-types-flow: 0.0.7 - axe-core: 4.8.1 - axobject-query: 2.2.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 8.49.0 - has: 1.0.3 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - dev: false /eslint-plugin-jsx-a11y@6.5.1(eslint@8.51.0): resolution: @@ -5597,25 +5197,6 @@ packages: jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - dev: true - - /eslint-plugin-node@11.1.0(eslint@8.49.0): - resolution: - { - integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==, - } - engines: { node: ">=8.10.0" } - peerDependencies: - eslint: ">=5.16.0" - dependencies: - eslint: 8.49.0 - eslint-plugin-es: 3.0.1(eslint@8.49.0) - eslint-utils: 2.1.0 - ignore: 5.2.4 - minimatch: 3.1.2 - resolve: 1.22.4 - semver: 6.3.1 - dev: false /eslint-plugin-node@11.1.0(eslint@8.51.0): resolution: @@ -5633,15 +5214,6 @@ packages: minimatch: 3.1.2 resolve: 1.22.4 semver: 6.3.1 - dev: true - - /eslint-plugin-objects@1.1.1(eslint@8.49.0): - resolution: { integrity: sha1-EqZrUqo4PaoOEw06M+dQ/0Tqk5U= } - peerDependencies: - eslint: ">=0.8.1" - dependencies: - eslint: 8.49.0 - dev: false /eslint-plugin-objects@1.1.1(eslint@8.51.0): resolution: { integrity: sha1-EqZrUqo4PaoOEw06M+dQ/0Tqk5U= } @@ -5649,19 +5221,6 @@ packages: eslint: ">=0.8.1" dependencies: eslint: 8.51.0 - dev: true - - /eslint-plugin-react-hooks@4.3.0(eslint@8.49.0): - resolution: - { - integrity: sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==, - } - engines: { node: ">=10" } - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.49.0 - dev: false /eslint-plugin-react-hooks@4.3.0(eslint@8.51.0): resolution: @@ -5673,7 +5232,6 @@ packages: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: eslint: 8.51.0 - dev: true /eslint-plugin-react-native-globals@0.1.2: resolution: @@ -5681,21 +5239,6 @@ packages: integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==, } - /eslint-plugin-react-native@4.0.0(eslint@8.49.0): - resolution: - { - integrity: sha512-kMmdxrSY7A1WgdqaGC+rY/28rh7kBGNBRsk48ovqkQmdg5j4K+DaFmegENDzMrdLkoufKGRNkKX6bgSwQTCAxQ==, - } - peerDependencies: - eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - "@babel/traverse": 7.22.17 - eslint: 8.49.0 - eslint-plugin-react-native-globals: 0.1.2 - transitivePeerDependencies: - - supports-color - dev: false - /eslint-plugin-react-native@4.0.0(eslint@8.51.0): resolution: { @@ -5709,33 +5252,6 @@ packages: eslint-plugin-react-native-globals: 0.1.2 transitivePeerDependencies: - supports-color - dev: true - - /eslint-plugin-react@7.28.0(eslint@8.49.0): - resolution: - { - integrity: sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==, - } - engines: { node: ">=4" } - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - doctrine: 2.1.0 - eslint: 8.49.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 - dev: false /eslint-plugin-react@7.28.0(eslint@8.51.0): resolution: @@ -5761,7 +5277,6 @@ packages: resolve: 2.0.0-next.4 semver: 6.3.1 string.prototype.matchall: 4.0.10 - dev: true /eslint-plugin-security@1.4.0: resolution: @@ -5771,32 +5286,6 @@ packages: dependencies: safe-regex: 1.1.0 - /eslint-plugin-unicorn@40.1.0(eslint@8.49.0): - resolution: - { - integrity: sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==, - } - engines: { node: ">=12" } - peerDependencies: - eslint: ">=7.32.0" - dependencies: - "@babel/helper-validator-identifier": 7.22.15 - ci-info: 3.8.0 - clean-regexp: 1.0.0 - eslint: 8.49.0 - eslint-utils: 3.0.0(eslint@8.49.0) - esquery: 1.5.0 - indent-string: 4.0.0 - is-builtin-module: 3.2.1 - lodash: 4.17.21 - pluralize: 8.0.0 - read-pkg-up: 7.0.1 - regexp-tree: 0.1.27 - safe-regex: 2.1.1 - semver: 7.5.4 - strip-indent: 3.0.0 - dev: false - /eslint-plugin-unicorn@40.1.0(eslint@8.51.0): resolution: { @@ -5821,7 +5310,6 @@ packages: safe-regex: 2.1.1 semver: 7.5.4 strip-indent: 3.0.0 - dev: true /eslint-scope@5.1.1: resolution: @@ -5852,19 +5340,6 @@ packages: dependencies: eslint-visitor-keys: 1.3.0 - /eslint-utils@3.0.0(eslint@8.49.0): - resolution: - { - integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==, - } - engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } - peerDependencies: - eslint: ">=5" - dependencies: - eslint: 8.49.0 - eslint-visitor-keys: 2.1.0 - dev: false - /eslint-utils@3.0.0(eslint@8.51.0): resolution: { @@ -5876,7 +5351,6 @@ packages: dependencies: eslint: 8.51.0 eslint-visitor-keys: 2.1.0 - dev: true /eslint-visitor-keys@1.3.0: resolution: @@ -5899,54 +5373,6 @@ packages: } engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - /eslint@8.49.0: - resolution: - { - integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - dependencies: - "@eslint-community/eslint-utils": 4.4.0(eslint@8.49.0) - "@eslint-community/regexpp": 4.8.1 - "@eslint/eslintrc": 2.1.2 - "@eslint/js": 8.49.0 - "@humanwhocodes/config-array": 0.11.11 - "@humanwhocodes/module-importer": 1.0.1 - "@nodelib/fs.walk": 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.21.0 - graphemer: 1.4.0 - ignore: 5.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - /eslint@8.51.0: resolution: { @@ -6109,6 +5535,14 @@ packages: } engines: { node: ">=0.10.0" } + /event-target-shim@5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: ">=6" } + dev: false + /events@1.1.1: resolution: { @@ -6117,6 +5551,14 @@ packages: engines: { node: ">=0.4.x" } dev: true + /events@3.3.0: + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + } + engines: { node: ">=0.8.x" } + dev: false + /execa@5.1.1: resolution: { @@ -6248,6 +5690,14 @@ packages: integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, } + /fast-redact@3.3.0: + resolution: + { + integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==, + } + engines: { node: ">=6" } + dev: false + /fastparse@1.1.2: resolution: { @@ -6527,14 +5977,6 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-tsconfig@4.7.0: - resolution: - { - integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==, - } - dependencies: - resolve-pkg-maps: 1.0.0 - /get-tsconfig@4.7.2: resolution: { @@ -6542,7 +5984,6 @@ packages: } dependencies: resolve-pkg-maps: 1.0.0 - dev: true /git-hooks-list@3.1.0: resolution: @@ -7639,6 +7080,13 @@ packages: integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, } + /json-parse-better-errors@1.0.2: + resolution: + { + integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, + } + dev: true + /json-parse-even-better-errors@2.3.1: resolution: { @@ -7810,6 +7258,19 @@ packages: integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } + /load-json-file@4.0.0: + resolution: + { + integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==, + } + engines: { node: ">=4" } + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + /load-yaml-file@0.2.0: resolution: { @@ -8050,6 +7511,28 @@ packages: transitivePeerDependencies: - supports-color + /mdast-util-from-markdown@2.0.0: + resolution: + { + integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==, + } + dependencies: + "@types/mdast": 4.0.0 + "@types/unist": 3.0.0 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.0 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /mdast-util-gfm-autolink-literal@1.0.3: resolution: { @@ -8232,6 +7715,23 @@ packages: dependencies: "@types/mdast": 3.0.12 + /mdast-util-to-string@4.0.0: + resolution: + { + integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==, + } + dependencies: + "@types/mdast": 4.0.0 + dev: false + + /memorystream@0.3.1: + resolution: + { + integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==, + } + engines: { node: ">= 0.10.0" } + dev: true + /meow@6.1.1: resolution: { @@ -8307,6 +7807,30 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 + /micromark-core-commonmark@2.0.0: + resolution: + { + integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==, + } + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-extension-directive@2.2.1: resolution: { @@ -8494,6 +8018,17 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-factory-destination@2.0.0: + resolution: + { + integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==, + } + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-label@1.1.0: resolution: { @@ -8505,6 +8040,18 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 + /micromark-factory-label@2.0.0: + resolution: + { + integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==, + } + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-mdx-expression@1.0.9: resolution: { @@ -8530,6 +8077,16 @@ packages: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 + /micromark-factory-space@2.0.0: + resolution: + { + integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==, + } + dependencies: + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-title@1.1.0: resolution: { @@ -8541,6 +8098,18 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-factory-title@2.0.0: + resolution: + { + integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==, + } + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-factory-whitespace@1.1.0: resolution: { @@ -8552,22 +8121,53 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - /micromark-util-character@1.2.0: + /micromark-factory-whitespace@2.0.0: + resolution: + { + integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==, + } + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-character@1.2.0: + resolution: + { + integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==, + } + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + /micromark-util-character@2.0.1: + resolution: + { + integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==, + } + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@1.1.0: resolution: { - integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==, + integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==, } dependencies: micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - /micromark-util-chunked@1.1.0: + /micromark-util-chunked@2.0.0: resolution: { - integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==, + integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==, } dependencies: - micromark-util-symbol: 1.1.0 + micromark-util-symbol: 2.0.0 + dev: false /micromark-util-classify-character@1.1.0: resolution: @@ -8579,6 +8179,17 @@ packages: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + /micromark-util-classify-character@2.0.0: + resolution: + { + integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==, + } + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-combine-extensions@1.1.0: resolution: { @@ -8588,6 +8199,16 @@ packages: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 + /micromark-util-combine-extensions@2.0.0: + resolution: + { + integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==, + } + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-decode-numeric-character-reference@1.1.0: resolution: { @@ -8596,6 +8217,15 @@ packages: dependencies: micromark-util-symbol: 1.1.0 + /micromark-util-decode-numeric-character-reference@2.0.0: + resolution: + { + integrity: sha512-pIgcsGxpHEtTG/rPJRz/HOLSqp5VTuIIjXlPI+6JSDlK2oljApusG6KzpS8AF0ENUMCHlC/IBb5B9xdFiVlm5Q==, + } + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-decode-string@1.1.0: resolution: { @@ -8607,12 +8237,31 @@ packages: micromark-util-decode-numeric-character-reference: 1.1.0 micromark-util-symbol: 1.1.0 + /micromark-util-decode-string@2.0.0: + resolution: + { + integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==, + } + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-encode@1.1.0: resolution: { integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==, } + /micromark-util-encode@2.0.0: + resolution: + { + integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==, + } + dev: false + /micromark-util-events-to-acorn@1.2.3: resolution: { @@ -8635,6 +8284,13 @@ packages: integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==, } + /micromark-util-html-tag-name@2.0.0: + resolution: + { + integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==, + } + dev: false + /micromark-util-normalize-identifier@1.1.0: resolution: { @@ -8643,6 +8299,15 @@ packages: dependencies: micromark-util-symbol: 1.1.0 + /micromark-util-normalize-identifier@2.0.0: + resolution: + { + integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==, + } + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-resolve-all@1.1.0: resolution: { @@ -8651,6 +8316,15 @@ packages: dependencies: micromark-util-types: 1.1.0 + /micromark-util-resolve-all@2.0.0: + resolution: + { + integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==, + } + dependencies: + micromark-util-types: 2.0.0 + dev: false + /micromark-util-sanitize-uri@1.2.0: resolution: { @@ -8661,6 +8335,17 @@ packages: micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 + /micromark-util-sanitize-uri@2.0.0: + resolution: + { + integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==, + } + dependencies: + micromark-util-character: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + /micromark-util-subtokenize@1.1.0: resolution: { @@ -8672,18 +8357,44 @@ packages: micromark-util-types: 1.1.0 uvu: 0.5.6 + /micromark-util-subtokenize@2.0.0: + resolution: + { + integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==, + } + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + /micromark-util-symbol@1.1.0: resolution: { integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==, } + /micromark-util-symbol@2.0.0: + resolution: + { + integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==, + } + dev: false + /micromark-util-types@1.1.0: resolution: { integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==, } + /micromark-util-types@2.0.0: + resolution: + { + integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==, + } + dev: false + /micromark@3.2.0: resolution: { @@ -8710,6 +8421,33 @@ packages: transitivePeerDependencies: - supports-color + /micromark@4.0.0: + resolution: + { + integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==, + } + dependencies: + "@types/debug": 4.1.8 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.0 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /micromatch@4.0.5: resolution: { @@ -8917,6 +8655,13 @@ packages: transitivePeerDependencies: - supports-color + /nice-try@1.0.5: + resolution: + { + integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==, + } + dev: true + /nlcst-to-string@3.1.1: resolution: { @@ -8994,6 +8739,25 @@ packages: } dev: false + /npm-run-all@4.1.5: + resolution: + { + integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==, + } + engines: { node: ">= 4" } + hasBin: true + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.5 + dev: true + /npm-run-path@4.0.1: resolution: { @@ -9115,6 +8879,14 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.1 + /on-exit-leak-free@2.1.2: + resolution: + { + integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==, + } + engines: { node: ">=14.0.0" } + dev: false + /once@1.4.0: resolution: { @@ -9309,6 +9081,17 @@ packages: is-hexadecimal: 2.0.1 dev: false + /parse-json@4.0.0: + resolution: + { + integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, + } + engines: { node: ">=4" } + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + /parse-json@5.2.0: resolution: { @@ -9369,6 +9152,14 @@ packages: } engines: { node: ">=0.10.0" } + /path-key@2.0.1: + resolution: + { + integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==, + } + engines: { node: ">=4" } + dev: true + /path-key@3.1.1: resolution: { @@ -9406,6 +9197,16 @@ packages: integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==, } + /path-type@3.0.0: + resolution: + { + integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, + } + engines: { node: ">=4" } + dependencies: + pify: 3.0.0 + dev: true + /path-type@4.0.0: resolution: { @@ -9451,6 +9252,15 @@ packages: } engines: { node: ">=8.6" } + /pidtree@0.3.1: + resolution: + { + integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==, + } + engines: { node: ">=0.10" } + hasBin: true + dev: true + /pify@2.3.0: resolution: { @@ -9459,6 +9269,14 @@ packages: engines: { node: ">=0.10.0" } dev: false + /pify@3.0.0: + resolution: + { + integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, + } + engines: { node: ">=4" } + dev: true + /pify@4.0.1: resolution: { @@ -9466,6 +9284,43 @@ packages: } engines: { node: ">=6" } + /pino-abstract-transport@1.1.0: + resolution: + { + integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==, + } + dependencies: + readable-stream: 4.4.2 + split2: 4.2.0 + dev: false + + /pino-std-serializers@6.2.2: + resolution: + { + integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==, + } + dev: false + + /pino@8.16.0: + resolution: + { + integrity: sha512-UUmvQ/7KTZt/vHjhRrnyS7h+J7qPBQnpG80V56xmIC+o9IqYmQOw/UIny9S9zYDfRBR0ClouCr464EkBMIT7Fw==, + } + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.3.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pino-std-serializers: 6.2.2 + process-warning: 2.2.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 3.7.0 + thread-stream: 2.4.1 + dev: false + /pirates@4.0.6: resolution: { @@ -9631,10 +9486,10 @@ packages: } engines: { node: ">= 0.8.0" } - /prettier-plugin-astro@0.11.1: + /prettier-plugin-astro@0.12.0: resolution: { - integrity: sha512-28sf624jQz9uP4hkQiRPRVuG1/4XJpnS6DfoXPgeDAeQ+eQ1o21bpioUbxze57y2EN+BCHeEw6x3a1MhM08Liw==, + integrity: sha512-8E+9YQR6/5CPZJs8XsfBw579zrwZkc0Wb7x0fRVm/51JC8Iys4lBw4ecV8fHwpbQnzve86TUa4fJ08BJzqfWnA==, } engines: { node: ^14.15.0 || >=16.0.0 } dependencies: @@ -9643,18 +9498,18 @@ packages: sass-formatter: 0.7.8 dev: false - /prettier-plugin-jsdoc@0.4.2(prettier@3.0.3): + /prettier-plugin-jsdoc@1.1.1(prettier@3.0.3): resolution: { - integrity: sha512-w2jnAQm3z0GAG0bhzVJeehzDtrhGMSxJjit5ApCc2oxWfc7+jmLAkbtdOXaSpfwZz3IWkk+PiQPeRrLNpbM+Mw==, + integrity: sha512-yA13k0StQ+g0RJBrmo2IldVSp3ANXlJdsNzQNhGtQ0LY7JFC+u01No/1Z9xp0ZhT4u98BXlPAc4SC0iambqy5A==, } - engines: { node: ">=12.0.0" } + engines: { node: ">=14.13.1 || >=16.0.0" } peerDependencies: - prettier: ">=2.1.2" + prettier: ^3.0.0 dependencies: binary-searching: 2.0.5 comment-parser: 1.4.0 - mdast-util-from-markdown: 1.3.1 + mdast-util-from-markdown: 2.0.0 prettier: 3.0.3 transitivePeerDependencies: - supports-color @@ -9690,32 +9545,31 @@ packages: sh-syntax: 0.4.1 dev: false - /prettier-plugin-sort-json@1.0.0(prettier@3.0.3): + /prettier-plugin-sort-json@3.1.0(prettier@3.0.3): resolution: { - integrity: sha512-XgcaF/Sojax1vD6j53wNIByx0rp7ecang+A8W0eM+Ks3yBFu/qXjJNvUtC1lEWeYbNfmRs/d8FyYJCYozAVENw==, + integrity: sha512-eIDEUjwzekiVd+oKrpd0aoACBTp5zOW71wDTNy+qQ5C9Q8oqt9n9wCm4F+SeRZbXfgblh/WYIguJynImlBXrvQ==, } - engines: { node: ">=14.0.0" } + engines: { node: ">=16.0.0" } peerDependencies: - prettier: ^2.3.2 + prettier: ^3.0.0 dependencies: - "@types/prettier": 2.7.3 prettier: 3.0.3 dev: false - /prettier-plugin-tailwindcss@0.4.1(prettier-plugin-astro@0.11.1)(prettier-plugin-jsdoc@0.4.2)(prettier@3.0.3): + /prettier-plugin-tailwindcss@0.5.5(prettier-plugin-astro@0.12.0)(prettier-plugin-jsdoc@1.1.1)(prettier@3.0.3): resolution: { - integrity: sha512-hwn2EiJmv8M+AW4YDkbjJ6HlZCTzLyz1QlySn9sMuKV/Px0fjwldlB7tol8GzdgqtkdPtzT3iJ4UzdnYXP25Ag==, + integrity: sha512-voy0CjWv/CM8yeaduv5ZwovovpTGMR5LbzlhGF+LtEvMJt9wBeVTVnW781hL38R/RcDXCJwN2rolsgr94B/n0Q==, } - engines: { node: ">=12.17.0" } + engines: { node: ">=14.21.3" } peerDependencies: "@ianvs/prettier-plugin-sort-imports": "*" "@prettier/plugin-pug": "*" "@shopify/prettier-plugin-liquid": "*" "@shufo/prettier-plugin-blade": "*" "@trivago/prettier-plugin-sort-imports": "*" - prettier: ^2.2 || ^3.0 + prettier: ^3.0 prettier-plugin-astro: "*" prettier-plugin-css-order: "*" prettier-plugin-import-sort: "*" @@ -9759,8 +9613,8 @@ packages: optional: true dependencies: prettier: 3.0.3 - prettier-plugin-astro: 0.11.1 - prettier-plugin-jsdoc: 0.4.2(prettier@3.0.3) + prettier-plugin-astro: 0.12.0 + prettier-plugin-jsdoc: 1.1.1(prettier@3.0.3) dev: false /prettier@2.8.8: @@ -9811,6 +9665,21 @@ packages: transitivePeerDependencies: - supports-color + /process-warning@2.2.0: + resolution: + { + integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==, + } + dev: false + + /process@0.11.10: + resolution: + { + integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, + } + engines: { node: ">= 0.6.0" } + dev: false + /prompts@2.4.2: resolution: { @@ -9895,6 +9764,13 @@ packages: integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==, } + /quick-format-unescaped@4.0.4: + resolution: + { + integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==, + } + dev: false + /quick-lru@4.0.1: resolution: { @@ -9948,6 +9824,18 @@ packages: read-pkg: 5.2.0 type-fest: 0.8.1 + /read-pkg@3.0.0: + resolution: + { + integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==, + } + engines: { node: ">=4" } + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + /read-pkg@5.2.0: resolution: { @@ -9984,6 +9872,20 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.4.2: + resolution: + { + integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + /readdirp@3.6.0: resolution: { @@ -9993,6 +9895,14 @@ packages: dependencies: picomatch: 2.3.1 + /real-require@0.2.0: + resolution: + { + integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==, + } + engines: { node: ">= 12.13.0" } + dev: false + /redent@3.0.0: resolution: { @@ -10396,6 +10306,14 @@ packages: dependencies: regexp-tree: 0.1.27 + /safe-stable-stringify@2.4.3: + resolution: + { + integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==, + } + engines: { node: ">=10" } + dev: false + /safer-buffer@2.1.2: resolution: { @@ -10527,7 +10445,6 @@ packages: engines: { node: ">=0.10.0" } dependencies: shebang-regex: 1.0.0 - dev: false /shebang-command@2.0.0: resolution: @@ -10544,7 +10461,6 @@ packages: integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, } engines: { node: ">=0.10.0" } - dev: false /shebang-regex@3.0.0: resolution: @@ -10553,6 +10469,13 @@ packages: } engines: { node: ">=8" } + /shell-quote@1.8.1: + resolution: + { + integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==, + } + dev: true + /shiki@0.14.4: resolution: { @@ -10680,6 +10603,15 @@ packages: yargs: 15.4.1 dev: false + /sonic-boom@3.7.0: + resolution: + { + integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==, + } + dependencies: + atomic-sleep: 1.0.0 + dev: false + /sort-object-keys@1.1.3: resolution: { @@ -10782,6 +10714,14 @@ packages: integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==, } + /split2@4.2.0: + resolution: + { + integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, + } + engines: { node: ">= 10.x" } + dev: false + /sprintf-js@1.0.3: resolution: { @@ -10896,6 +10836,18 @@ packages: set-function-name: 2.0.1 side-channel: 1.0.4 + /string.prototype.padend@3.1.5: + resolution: + { + integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.1 + dev: true + /string.prototype.trim@1.2.8: resolution: { @@ -11232,6 +11184,15 @@ packages: any-promise: 1.3.0 dev: false + /thread-stream@2.4.1: + resolution: + { + integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==, + } + dependencies: + real-require: 0.2.0 + dev: false + /tinybench@2.5.1: resolution: { @@ -11429,10 +11390,10 @@ packages: dependencies: safe-buffer: 5.2.1 - /turbo-darwin-64@1.10.14: + /turbo-darwin-64@1.10.15: resolution: { - integrity: sha512-I8RtFk1b9UILAExPdG/XRgGQz95nmXPE7OiGb6ytjtNIR5/UZBS/xVX/7HYpCdmfriKdVwBKhalCoV4oDvAGEg==, + integrity: sha512-Sik5uogjkRTe1XVP9TC2GryEMOJCaKE2pM/O9uLn4koQDnWKGcLQv+mDU+H+9DXvKLnJnKCD18OVRkwK5tdpoA==, } cpu: [x64] os: [darwin] @@ -11440,10 +11401,10 @@ packages: dev: false optional: true - /turbo-darwin-arm64@1.10.14: + /turbo-darwin-arm64@1.10.15: resolution: { - integrity: sha512-KAdUWryJi/XX7OD0alOuOa0aJ5TLyd4DNIYkHPHYcM6/d7YAovYvxRNwmx9iv6Vx6IkzTnLeTiUB8zy69QkG9Q==, + integrity: sha512-xwqyFDYUcl2xwXyGPmHkmgnNm4Cy0oNzMpMOBGRr5x64SErS7QQLR4VHb0ubiR+VAb8M+ECPklU6vD1Gm+wekg==, } cpu: [arm64] os: [darwin] @@ -11451,10 +11412,10 @@ packages: dev: false optional: true - /turbo-linux-64@1.10.14: + /turbo-linux-64@1.10.15: resolution: { - integrity: sha512-BOBzoREC2u4Vgpap/WDxM6wETVqVMRcM8OZw4hWzqCj2bqbQ6L0wxs1LCLWVrghQf93JBQtIGAdFFLyCSBXjWQ==, + integrity: sha512-dM07SiO3RMAJ09Z+uB2LNUSkPp3I1IMF8goH5eLj+d8Kkwoxd/+qbUZOj9RvInyxU/IhlnO9w3PGd3Hp14m/nA==, } cpu: [x64] os: [linux] @@ -11462,10 +11423,10 @@ packages: dev: false optional: true - /turbo-linux-arm64@1.10.14: + /turbo-linux-arm64@1.10.15: resolution: { - integrity: sha512-D8T6XxoTdN5D4V5qE2VZG+/lbZX/89BkAEHzXcsSUTRjrwfMepT3d2z8aT6hxv4yu8EDdooZq/2Bn/vjMI32xw==, + integrity: sha512-MkzKLkKYKyrz4lwfjNXH8aTny5+Hmiu4SFBZbx+5C0vOlyp6fV5jZANDBvLXWiDDL4DSEAuCEK/2cmN6FVH1ow==, } cpu: [arm64] os: [linux] @@ -11473,10 +11434,10 @@ packages: dev: false optional: true - /turbo-windows-64@1.10.14: + /turbo-windows-64@1.10.15: resolution: { - integrity: sha512-zKNS3c1w4i6432N0cexZ20r/aIhV62g69opUn82FLVs/zk3Ie0GVkSB6h0rqIvMalCp7enIR87LkPSDGz9K4UA==, + integrity: sha512-3TdVU+WEH9ThvQGwV3ieX/XHebtYNHv9HARHauPwmVj3kakoALkpGxLclkHFBLdLKkqDvmHmXtcsfs6cXXRHJg==, } cpu: [x64] os: [win32] @@ -11484,10 +11445,10 @@ packages: dev: false optional: true - /turbo-windows-arm64@1.10.14: + /turbo-windows-arm64@1.10.15: resolution: { - integrity: sha512-rkBwrTPTxNSOUF7of8eVvvM+BkfkhA2OvpHM94if8tVsU+khrjglilp8MTVPHlyS9byfemPAmFN90oRIPB05BA==, + integrity: sha512-l+7UOBCbfadvPMYsX08hyLD+UIoAkg6ojfH+E8aud3gcA1padpjCJTh9gMpm3QdMbKwZteT5uUM+wyi6Rbbyww==, } cpu: [arm64] os: [win32] @@ -11495,19 +11456,19 @@ packages: dev: false optional: true - /turbo@1.10.14: + /turbo@1.10.15: resolution: { - integrity: sha512-hr9wDNYcsee+vLkCDIm8qTtwhJ6+UAMJc3nIY6+PNgUTtXcQgHxCq8BGoL7gbABvNWv76CNbK5qL4Lp9G3ZYRA==, + integrity: sha512-mKKkqsuDAQy1wCCIjCdG+jOCwUflhckDMSRoeBPcIL/CnCl7c5yRDFe7SyaXloUUkt4tUR0rvNIhVCcT7YeQpg==, } hasBin: true optionalDependencies: - turbo-darwin-64: 1.10.14 - turbo-darwin-arm64: 1.10.14 - turbo-linux-64: 1.10.14 - turbo-linux-arm64: 1.10.14 - turbo-windows-64: 1.10.14 - turbo-windows-arm64: 1.10.14 + turbo-darwin-64: 1.10.15 + turbo-darwin-arm64: 1.10.15 + turbo-linux-64: 1.10.15 + turbo-linux-arm64: 1.10.15 + turbo-windows-64: 1.10.15 + turbo-windows-arm64: 1.10.15 dev: false /type-check@0.4.0: @@ -11765,6 +11726,15 @@ packages: dependencies: "@types/unist": 2.0.8 + /unist-util-stringify-position@4.0.0: + resolution: + { + integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, + } + dependencies: + "@types/unist": 3.0.0 + dev: false + /unist-util-visit-children@2.0.2: resolution: { @@ -12397,7 +12367,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: false /which@2.0.2: resolution: diff --git a/renovate.json b/renovate.json index ee40528..5d325de 100644 --- a/renovate.json +++ b/renovate.json @@ -1,5 +1,5 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base"], - "addLabels": ["renovate"] + "addLabels": ["renovate"], + "extends": ["config:base"] } diff --git a/turbo.json b/turbo.json index 1dc9d1a..3817860 100644 --- a/turbo.json +++ b/turbo.json @@ -2,28 +2,27 @@ "$schema": "https://turbo.build/schema.json", "pipeline": { "build": { - "cache": false, "dependsOn": ["^build"], "outputs": ["dist/**", "cdk.out/**"] }, - "test": { + "deploy": { + "cache": false, + "dependsOn": ["synth"] + }, + "dev": { + "cache": false, "dependsOn": ["^build"] }, "lint": { "dependsOn": ["^build"] }, + "lint:fix": { + "dependsOn": ["^build"] + }, "synth": { "dependsOn": ["build"] }, - "deploy": { - "dependsOn": ["synth"], - "cache": false - }, - "dev": { - "dependsOn": ["^build"], - "cache": false - }, - "lint:fix": { + "test": { "dependsOn": ["^build"] } }