diff --git a/REFACTORING_NOTES.md b/REFACTORING_NOTES.md new file mode 100644 index 0000000..95b0c1c --- /dev/null +++ b/REFACTORING_NOTES.md @@ -0,0 +1,93 @@ +# Refactoring Summary: Server-Side Transformation + +## Overview +Moved the job transformation logic from the Electron app to the Lambda function to enable server-side processing and sharing of types between codebases. + +## Changes Made + +### 1. Shared Types Directory (`/shared/types/`) +Created a shared types directory that both the Electron app and serverless Lambda can use: + +- **`raw-job-data.interface.ts`** - Defines the `RawJobDataObject` interface with all fields from the decoded job data +- **`es-job-object.interface.ts`** - Defines the `ESJobObject` interface for the transformed estimate scrubber format +- **`index.ts`** - Exports all shared types for easy importing + +### 2. Serverless Changes + +#### `serverless/src/lib/transformEstimate.ts` +- Moved transformation logic from `src/main/estimate-scrubber/es-transformer.ts` +- Exports `transformJobForEstimateScrubber()` function +- Imports shared types from `../../../shared/types` +- Handles all field omissions and transformations server-side + +#### `serverless/src/handlers/scrub.ts` +- Updated to receive `rawJob` instead of pre-transformed `estimate` +- Calls `transformJobForEstimateScrubber()` to transform on the server +- Sets `v_type` using the existing `getVehicleType()` function +- Updated TypeScript interfaces to use shared types + +#### `serverless/package.json` +- Added `lodash` dependency +- Added `@types/lodash` dev dependency + +#### `serverless/tsconfig.json` +- Updated `include` to add `"../shared/**/*"` for shared types access + +### 3. Electron App Changes + +#### `src/main/estimate-scrubber/estimate-scrubber.ts` +- Removed call to `TransformJobForEstimateScrubber()` +- Now sends raw job object directly to Lambda as `rawJob` +- Removed import of `es-transformer` +- Transformation now happens server-side + +#### `tsconfig.node.json` +- Updated `include` array to add `"shared/**/*"` for shared types access + +### 4. Files That Can Be Deprecated (Optional) +- `src/main/estimate-scrubber/es-transformer.ts` - Logic moved to serverless +- `src/main/estimate-scrubber/es-job-object.interface.ts` - Moved to shared types + +## Benefits + +1. **Single Source of Truth**: Types are defined once in `/shared/types/` and used by both codebases +2. **Server-Side Processing**: Transformation logic runs on Lambda, reducing client-side processing +3. **Easier Maintenance**: Updates to transformation logic or types only need to be made in one place +4. **Type Safety**: Both Electron app and Lambda use the same TypeScript interfaces +5. **Reduced Bundle Size**: Electron app no longer includes transformation logic + +## API Contract Changes + +### Before +```typescript +POST /scrub +{ + esApiKey: string, + estimate: ESJobObject, // Pre-transformed + fileName: string +} +``` + +### After +```typescript +POST /scrub +{ + esApiKey: string, + rawJob: RawJobDataObject // Raw, untransformed +} +``` + +## Migration Notes + +- The Lambda function now handles all transformation logic +- Ensure both codebases have access to the `/shared/types/` directory +- Run `npm install` in the serverless directory to get new dependencies +- The `fileName` parameter is now generated server-side based on the raw job data + +## Testing Recommendations + +1. Test that raw job objects are correctly sent from Electron to Lambda +2. Verify transformation logic produces identical output to previous version +3. Ensure PDF generation and report URLs are working correctly +4. Check that error handling still works as expected +5. Validate that logs are being written correctly with transformed data diff --git a/serverless/package-lock.json b/serverless/package-lock.json index 49dd538..bdc4f5f 100644 --- a/serverless/package-lock.json +++ b/serverless/package-lock.json @@ -9,24 +9,25 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@aws-sdk/client-s3": "^3.965.0", - "@aws-sdk/client-secrets-manager": "^3.965.0", - "@aws-sdk/s3-request-presigner": "^3.965.0", + "@aws-sdk/client-s3": "^3.971.0", + "@aws-sdk/client-secrets-manager": "^3.971.0", + "@aws-sdk/s3-request-presigner": "^3.971.0", "axios": "^1.13.2", - "drizzle-orm": "^0.44.5", - "form-data": "^4.0.1" + "form-data": "^4.0.5", + "lodash": "^4.17.21" }, "devDependencies": { "@eslint/js": "^9.39.2", - "@types/aws-lambda": "^8.10.159", - "@types/node": "^25.0.8", - "@typescript-eslint/eslint-plugin": "^8.53.0", - "@typescript-eslint/parser": "^8.53.0", + "@types/aws-lambda": "^8.10.160", + "@types/lodash": "^4.17.23", + "@types/node": "^25.0.9", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", "esbuild": "^0.27.2", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.7.4", + "eslint-plugin-prettier": "^5.5.5", + "prettier": "^3.8.0", "serverless-esbuild": "^1.57.0", "ts-node": "^10.9.2", "typescript": "^5.9.3" @@ -235,114 +236,114 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.965.0.tgz", - "integrity": "sha512-BTeaaU1iK0BfatTCrtYjNkIHCoZH256qOI18l9bK4z6mVOgpHkYN4RvOu+NnKgyX58n+HWfOuhtKUD4OE33Vdw==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.971.0.tgz", + "integrity": "sha512-BBUne390fKa4C4QvZlUZ5gKcu+Uyid4IyQ20N4jl0vS7SK2xpfXlJcgKqPW5ts6kx6hWTQBk6sH5Lf12RvuJxg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/credential-provider-node": "3.965.0", - "@aws-sdk/middleware-bucket-endpoint": "3.965.0", - "@aws-sdk/middleware-expect-continue": "3.965.0", - "@aws-sdk/middleware-flexible-checksums": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-location-constraint": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-sdk-s3": "3.965.0", - "@aws-sdk/middleware-ssec": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/signature-v4-multi-region": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/eventstream-serde-browser": "^4.2.7", - "@smithy/eventstream-serde-config-resolver": "^4.3.7", - "@smithy/eventstream-serde-node": "^4.2.7", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-blob-browser": "^4.2.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/hash-stream-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/md5-js": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/credential-provider-node": "3.971.0", + "@aws-sdk/middleware-bucket-endpoint": "3.969.0", + "@aws-sdk/middleware-expect-continue": "3.969.0", + "@aws-sdk/middleware-flexible-checksums": "3.971.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-location-constraint": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-sdk-s3": "3.970.0", + "@aws-sdk/middleware-ssec": "3.971.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/signature-v4-multi-region": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.971.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/eventstream-serde-config-resolver": "^4.3.8", + "@smithy/eventstream-serde-node": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-blob-browser": "^4.2.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/hash-stream-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/md5-js": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.7", + "@smithy/util-waiter": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.968.0.tgz", - "integrity": "sha512-TfMOTqwhlgFFhhNgWspOlaMpJEggw3C26MkY5ja6574zo4ybirW/UhkC793UtANxke874g1M0qZofPKtKh6aOg==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.971.0.tgz", + "integrity": "sha512-Afv8K2rYJxtNlEQ+3FatK+bPdYdUF80SxgcZH3adu56x0BZzQ75KDCXLRWDYjNrLn+8OH0eStX/NbAZdwPX9uA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.968.0", - "@aws-sdk/credential-provider-node": "3.968.0", - "@aws-sdk/middleware-host-header": "3.968.0", - "@aws-sdk/middleware-logger": "3.968.0", - "@aws-sdk/middleware-recursion-detection": "3.968.0", - "@aws-sdk/middleware-user-agent": "3.968.0", - "@aws-sdk/region-config-resolver": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@aws-sdk/util-endpoints": "3.968.0", - "@aws-sdk/util-user-agent-browser": "3.968.0", - "@aws-sdk/util-user-agent-node": "3.968.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.3", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.4", - "@smithy/middleware-retry": "^4.4.20", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.5", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/credential-provider-node": "3.971.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.971.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.19", - "@smithy/util-defaults-mode-node": "^4.2.22", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -350,1053 +351,597 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.968.0.tgz", - "integrity": "sha512-y+k23MvMzpn1WpeQ9sdEXg1Bbw7dfi0ZH2uwyBv78F/kz0mZOI+RJ1KJg8DgSD8XvdxB8gX5GQ8rzo0LnDothA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.968.0", - "@aws-sdk/middleware-host-header": "3.968.0", - "@aws-sdk/middleware-logger": "3.968.0", - "@aws-sdk/middleware-recursion-detection": "3.968.0", - "@aws-sdk/middleware-user-agent": "3.968.0", - "@aws-sdk/region-config-resolver": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@aws-sdk/util-endpoints": "3.968.0", - "@aws-sdk/util-user-agent-browser": "3.968.0", - "@aws-sdk/util-user-agent-node": "3.968.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.3", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.4", - "@smithy/middleware-retry": "^4.4.20", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.5", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.19", - "@smithy/util-defaults-mode-node": "^4.2.22", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.968.0.tgz", - "integrity": "sha512-u4lIpvGqMMHZN523/RxW70xNoVXHBXucIWZsxFKc373E6TWYEb16ddFhXTELioS5TU93qkd/6yDQZzI6AAhbkw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@aws-sdk/xml-builder": "3.968.0", - "@smithy/core": "^3.20.3", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/smithy-client": "^4.10.5", - "@smithy/types": "^4.11.0", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.968.0.tgz", - "integrity": "sha512-G+zgXEniQxBHFtHo+0yImkYutvJZLvWqvkPUP8/cG+IaYg54OY7L/GPIAZJh0U3m0Uepao98NbL15zjM+uplqQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.968.0.tgz", - "integrity": "sha512-79teHBx/EtsNRR3Bq8fQdmMHtUcYwvohm9EwXXFt2Jd3BEOBH872IjIlfKdAvdkM+jW1QeeWOZBAxXGPir7GcQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.5", - "@smithy/types": "^4.11.0", - "@smithy/util-stream": "^4.5.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.968.0.tgz", - "integrity": "sha512-9J9pcweoEN8yG7Qliux1zl9J3DT8X6OLcDN2RVXdTd5xzWBaYlupnUiJzoP6lvXdMnEmlDZaV7IMtoBdG7MY6g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/credential-provider-env": "3.968.0", - "@aws-sdk/credential-provider-http": "3.968.0", - "@aws-sdk/credential-provider-login": "3.968.0", - "@aws-sdk/credential-provider-process": "3.968.0", - "@aws-sdk/credential-provider-sso": "3.968.0", - "@aws-sdk/credential-provider-web-identity": "3.968.0", - "@aws-sdk/nested-clients": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-login": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.968.0.tgz", - "integrity": "sha512-YxBaR0IMuHPOVTG+73Ve0QfllweN+EdwBRnHFhUGnahMGAcTmcaRdotqwqWfiws+9ud44IFKjxXR3t8jaGpFnQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/nested-clients": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.968.0.tgz", - "integrity": "sha512-wei6v0c9vDEam8pM5eWe9bt+5ixg8nL0q+DFPzI6iwdLUqmJsPoAzWPEyMkgp03iE02SS2fMqPWpmRjz/NVyUw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.968.0", - "@aws-sdk/credential-provider-http": "3.968.0", - "@aws-sdk/credential-provider-ini": "3.968.0", - "@aws-sdk/credential-provider-process": "3.968.0", - "@aws-sdk/credential-provider-sso": "3.968.0", - "@aws-sdk/credential-provider-web-identity": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.968.0.tgz", - "integrity": "sha512-my9M/ijRyEACoyeEWiC2sTVM3+eck5IWPGTPQrlYMKivy4LLlZchohtIopuqTom+JZzLZD508j1s9aDvl7BA0w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.968.0.tgz", - "integrity": "sha512-XPYPcxfWIt5jBbofoP2xhAHlFYos0dzwbHsoE18Cera/XnaCEbsUpdROo30t0Kjdbv0EWMYLMPDi9G+vPRDnhQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.968.0", - "@aws-sdk/core": "3.968.0", - "@aws-sdk/token-providers": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.968.0.tgz", - "integrity": "sha512-9HNAP6mx2jsBW4moWnRg5ycyZ0C1EbtMIegIHa93ga13B/8VZF9Y0iDnwW73yQYzCEt9UrDiFeRck/ChZup3rA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/nested-clients": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.968.0.tgz", - "integrity": "sha512-ujlNT215VtE/2D2jEhFVcTuPPB36HJyLBM0ytnni/WPIjzq89iJrKR1tEhxpk8uct6A5NSQ6w9Y7g2Rw1rkSoQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-logger": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.968.0.tgz", - "integrity": "sha512-zvhhEPZgvaRDxzf27m2WmgaXoN7upFt/gvG7ofBN5zCBlkh3JtFamMh5KWYVQwMhc4eQBK3NjH0oIUKZSVztag==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.968.0.tgz", - "integrity": "sha512-KygPiwpSAPGobgodK/oLb7OLiwK29pNJeNtP+GZ9pxpceDRqhN0Ub8Eo84dBbWq+jbzAqBYHzy+B1VsbQ/hLWA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.968.0.tgz", - "integrity": "sha512-4h5/B8FyxMjLxtXd5jbM2R69aO57qQiHoAJQTtkpuxmM7vhvjSxEQtMM9L1kuMXoMVNE7xM4886h0+gbmmxplg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@aws-sdk/util-endpoints": "3.968.0", - "@smithy/core": "^3.20.3", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/nested-clients": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.968.0.tgz", - "integrity": "sha512-LLppm+8MzD3afD2IA/tYDp5AoVPOybK7MHQz5DVB4HsZ+fHvwYlvau2ZUK8nKwJSk5c1kWcxCZkyuJQjFu37ng==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.968.0", - "@aws-sdk/middleware-host-header": "3.968.0", - "@aws-sdk/middleware-logger": "3.968.0", - "@aws-sdk/middleware-recursion-detection": "3.968.0", - "@aws-sdk/middleware-user-agent": "3.968.0", - "@aws-sdk/region-config-resolver": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@aws-sdk/util-endpoints": "3.968.0", - "@aws-sdk/util-user-agent-browser": "3.968.0", - "@aws-sdk/util-user-agent-node": "3.968.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.3", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.4", - "@smithy/middleware-retry": "^4.4.20", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.5", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.19", - "@smithy/util-defaults-mode-node": "^4.2.22", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.968.0.tgz", - "integrity": "sha512-BzrCpxEsAHbi+yDGtgXJ+/5AvLPjfhcT6DlL+Fc4g13J5Z0VwiO95Wem+Q4KK7WDZH7/sZ/1WFvfitjLTKZbEw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.968.0.tgz", - "integrity": "sha512-lXUZqB2qTFmZYNXPnVT0suSHGiuQAPrL2DhmhbjqOdR7+GKDHL5KbeKFvPisy7Y4neliJqT4Q1VPWa0nqYaiZg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.968.0", - "@aws-sdk/nested-clients": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.968.0.tgz", - "integrity": "sha512-Wuumj/1cuiuXTMdHmvH88zbEl+5Pw++fOFQuMCF4yP0R+9k1lwX8rVst+oy99xaxtdluJZXrsccoZoA67ST1Ow==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.968.0.tgz", - "integrity": "sha512-9IdilgylS0crFSeI59vtr8qhDYMYYOvnvkl1dLp59+EmLH1IdXz7+4cR5oh5PkoqD7DRzc5Uzm2GnZhK6I0oVQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-endpoints": "^3.2.7", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.968.0.tgz", - "integrity": "sha512-nRxjs8Jpq8ZHFsa/0uiww2f4+40D6Dt6bQmepAJHIE/D+atwPINDKsfamCjFnxrjKU3WBWpGYEf/QDO0XZsFMw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.968.0", - "@smithy/types": "^4.11.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.968.0.tgz", - "integrity": "sha512-oaIkPGraGhZgkDmxVhTIlakaUNWKO9aMN+uB6I+eS26MWi/lpMK66HTZeXEnaTrmt5/kl99YC0N37zScz58Tdg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "3.968.0", - "@aws-sdk/types": "3.968.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/xml-builder": { - "version": "3.968.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.968.0.tgz", - "integrity": "sha512-bZQKn41ebPh/uW9uWUE5oLuaBr44Gt78dkw2amu5zcwo1J/d8s6FdzZcRDmz0rHE2NHJWYkdQYeVQo7jhMziqA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.11.0", - "fast-xml-parser": "5.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/client-sso": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.965.0.tgz", - "integrity": "sha512-iv2tr+n4aZ+nPUFFvG00hISPuEd4DU+1/Q8rPAYKXsM+vEPJ2nAnP5duUOa2fbOLIUCRxX3dcQaQaghVHDHzQw==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.971.0.tgz", + "integrity": "sha512-Xx+w6DQqJxDdymYyIxyKJnRzPvVJ4e/Aw0czO7aC9L/iraaV7AG8QtRe93OGW6aoHSh72CIiinnpJJfLsQqP4g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.971.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/core": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.965.0.tgz", - "integrity": "sha512-aq9BhQxdHit8UUJ9C0im9TtuKeK0pT6NXmNJxMTCFeStI7GG7ImIsSislg3BZTIifVg1P6VLdzMyz9de85iutQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.970.0.tgz", + "integrity": "sha512-klpzObldOq8HXzDjDlY6K8rMhYZU6mXRz6P9F9N+tWnjoYFfeBMra8wYApydElTUYQKP1O7RLHwH1OKFfKcqIA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@aws-sdk/xml-builder": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/xml-builder": "3.969.0", + "@smithy/core": "^3.20.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-middleware": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.965.0.tgz", - "integrity": "sha512-9FbIyJ/Zz1AdEIrb0+Pn7wRi+F/0Y566ooepg0hDyHUzRV3ZXKjOlu3wJH3YwTz2UkdwQmldfUos2yDJps7RyA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.969.0.tgz", + "integrity": "sha512-IGNkP54HD3uuLnrPCYsv3ZD478UYq+9WwKrIVJ9Pdi3hxPg8562CH3ZHf8hEgfePN31P9Kj+Zu9kq2Qcjjt61A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.965.0.tgz", - "integrity": "sha512-mdGnaIjMxTIjsb70dEj3VsWPWpoq1V5MWzBSfJq2H8zgMBXjn6d5/qHP8HMf53l9PrsgqzMpXGv3Av549A2x1g==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.970.0.tgz", + "integrity": "sha512-rtVzXzEtAfZBfh+lq3DAvRar4c3jyptweOAJR2DweyXx71QSMY+O879hjpMwES7jl07a3O1zlnFIDo4KP/96kQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.965.0.tgz", - "integrity": "sha512-YuGQel9EgA/z25oeLM+GYYQS750+8AESvr7ZEmVnRPL0sg+K3DmGqdv+9gFjFd0UkLjTlC/jtbP2cuY6UcPiHQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.970.0.tgz", + "integrity": "sha512-CjDbWL7JxjLc9ZxQilMusWSw05yRvUJKRpz59IxDpWUnSMHC9JMMUUkOy5Izk8UAtzi6gupRWArp4NG4labt9Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/util-stream": "^4.5.8", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.965.0.tgz", - "integrity": "sha512-xRo72Prer5s0xYVSCxCymVIRSqrVlevK5cmU0GWq9yJtaBNpnx02jwdJg80t/Ni7pgbkQyFWRMcq38c1tc6M/w==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.971.0.tgz", + "integrity": "sha512-c0TGJG4xyfTZz3SInXfGU8i5iOFRrLmy4Bo7lMyH+IpngohYMYGYl61omXqf2zdwMbDv+YJ9AviQTcCaEUKi8w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/credential-provider-env": "3.965.0", - "@aws-sdk/credential-provider-http": "3.965.0", - "@aws-sdk/credential-provider-login": "3.965.0", - "@aws-sdk/credential-provider-process": "3.965.0", - "@aws-sdk/credential-provider-sso": "3.965.0", - "@aws-sdk/credential-provider-web-identity": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/credential-provider-env": "3.970.0", + "@aws-sdk/credential-provider-http": "3.970.0", + "@aws-sdk/credential-provider-login": "3.971.0", + "@aws-sdk/credential-provider-process": "3.970.0", + "@aws-sdk/credential-provider-sso": "3.971.0", + "@aws-sdk/credential-provider-web-identity": "3.971.0", + "@aws-sdk/nested-clients": "3.971.0", + "@aws-sdk/types": "3.969.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.965.0.tgz", - "integrity": "sha512-43/H8Qku8LHyugbhLo8kjD+eauhybCeVkmrnvWl8bXNHJP7xi1jCdtBQJKKJqiIHZws4MOEwkji8kFdAVRCe6g==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.971.0.tgz", + "integrity": "sha512-yhbzmDOsk0RXD3rTPhZra4AWVnVAC4nFWbTp+sUty1hrOPurUmhuz8bjpLqYTHGnlMbJp+UqkQONhS2+2LzW2g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/nested-clients": "3.971.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.965.0.tgz", - "integrity": "sha512-cRxmMHF+Zh2lkkkEVduKl+8OQdtg/DhYA69+/7SPSQURlgyjFQGlRQ58B7q8abuNlrGT3sV+UzeOylZpJbV61Q==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.971.0.tgz", + "integrity": "sha512-epUJBAKivtJqalnEBRsYIULKYV063o/5mXNJshZfyvkAgNIzc27CmmKRXTN4zaNOZg8g/UprFp25BGsi19x3nQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.965.0", - "@aws-sdk/credential-provider-http": "3.965.0", - "@aws-sdk/credential-provider-ini": "3.965.0", - "@aws-sdk/credential-provider-process": "3.965.0", - "@aws-sdk/credential-provider-sso": "3.965.0", - "@aws-sdk/credential-provider-web-identity": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/credential-provider-imds": "^4.2.7", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/credential-provider-env": "3.970.0", + "@aws-sdk/credential-provider-http": "3.970.0", + "@aws-sdk/credential-provider-ini": "3.971.0", + "@aws-sdk/credential-provider-process": "3.970.0", + "@aws-sdk/credential-provider-sso": "3.971.0", + "@aws-sdk/credential-provider-web-identity": "3.971.0", + "@aws-sdk/types": "3.969.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.965.0.tgz", - "integrity": "sha512-gmkPmdiR0yxnTzLPDb7rwrDhGuCUjtgnj8qWP+m0gSz/W43rR4jRPVEf6DUX2iC+ImQhxo3NFhuB3V42Kzo3TQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.970.0.tgz", + "integrity": "sha512-0XeT8OaT9iMA62DFV9+m6mZfJhrD0WNKf4IvsIpj2Z7XbaYfz3CoDDvNoALf3rPY9NzyMHgDxOspmqdvXP00mw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.965.0.tgz", - "integrity": "sha512-N01AYvtCqG3Wo/s/LvYt19ity18/FqggiXT+elAs3X9Om/Wfx+hw9G+i7jaDmy+/xewmv8AdQ2SK5Q30dXw/Fw==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.971.0.tgz", + "integrity": "sha512-dY0hMQ7dLVPQNJ8GyqXADxa9w5wNfmukgQniLxGVn+dMRx3YLViMp5ZpTSQpFhCWNF0oKQrYAI5cHhUJU1hETw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.965.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/token-providers": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/client-sso": "3.971.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/token-providers": "3.971.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.965.0.tgz", - "integrity": "sha512-T4gMZ2JzXnfxe1oTD+EDGLSxFfk1+WkLZdiHXEMZp8bFI1swP/3YyDFXI+Ib9Uq1JhnAmrCXtOnkicKEhDkdhQ==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.971.0.tgz", + "integrity": "sha512-F1AwfNLr7H52T640LNON/h34YDiMuIqW/ZreGzhRR6vnFGaSPtNSKAKB2ssAMkLM8EVg8MjEAYD3NCUiEo+t/w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/nested-clients": "3.971.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.965.0.tgz", - "integrity": "sha512-gbdv3Dl8l8xmg4oH60fXvfDyTxfx28w5/Hxdymx3vurM07tAyd4qld8zEXejnSpraTo45QcHRtk5auELIMfeag==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.969.0.tgz", + "integrity": "sha512-MlbrlixtkTVhYhoasblKOkr7n2yydvUZjjxTnBhIuHmkyBS1619oGnTfq/uLeGYb4NYXdeQ5OYcqsRGvmWSuTw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-arn-parser": "3.965.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-arn-parser": "3.968.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.965.0.tgz", - "integrity": "sha512-UBxVytsmhEmFwkBnt+aV0eAJ7uc+ouNokCqMBrQ7Oc5A77qhlcHfOgXIKz2SxqsiYTsDq+a0lWFM/XpyRWraqA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.969.0.tgz", + "integrity": "sha512-qXygzSi8osok7tH9oeuS3HoKw6jRfbvg5Me/X5RlHOvSSqQz8c5O9f3MjUApaCUSwbAU92KrbZWasw2PKiaVHg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.965.0.tgz", - "integrity": "sha512-5rzEW08trcpHMe6jkQyYc4PL1KG/H7BbnySFSzhih+r/gktQEiE36sb1BNf7av9I0Vk2Ccmt7wocB5PIT7GDkQ==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.971.0.tgz", + "integrity": "sha512-+hGUDUxeIw8s2kkjfeXym0XZxdh0cqkHkDpEanWYdS1gnWkIR+gf9u/DKbKqGHXILPaqHXhWpLTQTVlaB4sI7Q==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/crc64-nvme": "3.965.0", - "@aws-sdk/types": "3.965.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/crc64-nvme": "3.969.0", + "@aws-sdk/types": "3.969.0", "@smithy/is-array-buffer": "^4.2.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.965.0.tgz", - "integrity": "sha512-SfpSYqoPOAmdb3DBsnNsZ0vix+1VAtkUkzXM79JL3R5IfacpyKE2zytOgVAQx/FjhhlpSTwuXd+LRhUEVb3MaA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.969.0.tgz", + "integrity": "sha512-AWa4rVsAfBR4xqm7pybQ8sUNJYnjyP/bJjfAw34qPuh3M9XrfGbAHG0aiAfQGrBnmS28jlO6Kz69o+c6PRw1dw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.965.0.tgz", - "integrity": "sha512-07T1rwAarQs33mVg5U28AsSdLB5JUXu9yBTBmspFGajKVsEahIyntf53j9mAXF1N2KR0bNdP0J4A0kst4t43UQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.969.0.tgz", + "integrity": "sha512-zH7pDfMLG/C4GWMOpvJEoYcSpj7XsNP9+irlgqwi667sUQ6doHQJ3yyDut3yiTk0maq1VgmriPFELyI9lrvH/g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.965.0.tgz", - "integrity": "sha512-gjUvJRZT1bUABKewnvkj51LAynFrfz2h5DYAg5/2F4Utx6UOGByTSr9Rq8JCLbURvvzAbCtcMkkIJRxw+8Zuzw==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.969.0.tgz", + "integrity": "sha512-xwrxfip7Y2iTtCMJ+iifN1E1XMOuhxIHY9DreMCvgdl4r7+48x2S1bCYPWH3eNY85/7CapBWdJ8cerpEl12sQQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.965.0.tgz", - "integrity": "sha512-6dvD+18Ni14KCRu+tfEoNxq1sIGVp9tvoZDZ7aMvpnA7mDXuRLrOjRQ/TAZqXwr9ENKVGyxcPl0cRK8jk1YWjA==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.969.0.tgz", + "integrity": "sha512-2r3PuNquU3CcS1Am4vn/KHFwLi8QFjMdA/R+CRDXT4AFO/0qxevF/YStW3gAKntQIgWgQV8ZdEtKAoJvLI4UWg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", + "@aws-sdk/types": "3.969.0", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.965.0.tgz", - "integrity": "sha512-dXEgnojaaVRl+OlOx35mg3rYEbfffIN4X6tLmIfDnaKz0hMaDMvsE9jJXb/vBvokbdO1sVB27/2FEM4ttLSLnw==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.970.0.tgz", + "integrity": "sha512-v/Y5F1lbFFY7vMeG5yYxuhnn0CAshz6KMxkz1pDyPxejNE9HtA0w8R6OTBh/bVdIm44QpjhbI7qeLdOE/PLzXQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-arn-parser": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-arn-parser": "3.968.0", + "@smithy/core": "^3.20.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-stream": "^4.5.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.965.0.tgz", - "integrity": "sha512-dke++CTw26y+a2D1DdVuZ4+2TkgItdx6TeuE0zOl4lsqXGvTBUG4eaIZalt7ZOAW5ys2pbDOk1bPuh4opoD3pQ==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.971.0.tgz", + "integrity": "sha512-QGVhvRveYG64ZhnS/b971PxXM6N2NU79Fxck4EfQ7am8v1Br0ctoeDDAn9nXNblLGw87we9Z65F7hMxxiFHd3w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.965.0.tgz", - "integrity": "sha512-RBEYVGgu/WeAt+H/qLrGc+t8LqAUkbyvh3wBfTiuAD+uBcWsKnvnB1iSBX75FearC0fmoxzXRUc0PMxMdqpjJQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.970.0.tgz", + "integrity": "sha512-dnSJGGUGSFGEX2NzvjwSefH+hmZQ347AwbLhAsi0cdnISSge+pcGfOFrJt2XfBIypwFe27chQhlfuf/gWdzpZg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@smithy/core": "^3.20.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@smithy/core": "^3.20.6", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.965.0.tgz", - "integrity": "sha512-muNVUjUEU+/KLFrLzQ8PMXyw4+a/MP6t4GIvwLtyx/kH0rpSy5s0YmqacMXheuIe6F/5QT8uksXGNAQenitkGQ==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.971.0.tgz", + "integrity": "sha512-TWaILL8GyYlhGrxxnmbkazM4QsXatwQgoWUvo251FXmUOsiXDFDVX3hoGIfB3CaJhV2pJPfebHUNJtY6TjZ11g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.965.0", - "@aws-sdk/middleware-host-header": "3.965.0", - "@aws-sdk/middleware-logger": "3.965.0", - "@aws-sdk/middleware-recursion-detection": "3.965.0", - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/region-config-resolver": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-endpoints": "3.965.0", - "@aws-sdk/util-user-agent-browser": "3.965.0", - "@aws-sdk/util-user-agent-node": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/core": "^3.20.0", - "@smithy/fetch-http-handler": "^5.3.8", - "@smithy/hash-node": "^4.2.7", - "@smithy/invalid-dependency": "^4.2.7", - "@smithy/middleware-content-length": "^4.2.7", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/middleware-retry": "^4.4.17", - "@smithy/middleware-serde": "^4.2.8", - "@smithy/middleware-stack": "^4.2.7", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/node-http-handler": "^4.4.7", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/middleware-host-header": "3.969.0", + "@aws-sdk/middleware-logger": "3.969.0", + "@aws-sdk/middleware-recursion-detection": "3.969.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/region-config-resolver": "3.969.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-endpoints": "3.970.0", + "@aws-sdk/util-user-agent-browser": "3.969.0", + "@aws-sdk/util-user-agent-node": "3.971.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.16", - "@smithy/util-defaults-mode-node": "^4.2.19", - "@smithy/util-endpoints": "^3.2.7", - "@smithy/util-middleware": "^4.2.7", - "@smithy/util-retry": "^4.2.7", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.965.0.tgz", - "integrity": "sha512-RoMhu9ly2B0coxn8ctXosPP2WmDD0MkQlZGLjoYHQUOCBmty5qmCxOqBmBDa6wbWbB8xKtMQ/4VXloQOgzjHXg==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.969.0.tgz", + "integrity": "sha512-scj9OXqKpcjJ4jsFLtqYWz3IaNvNOQTFFvEY8XMJXTv+3qF5I7/x9SJtKzTRJEBF3spjzBUYPtGFbs9sj4fisQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/config-resolver": "^4.4.5", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.965.0.tgz", - "integrity": "sha512-aQ9vvXjeoQsAaRHS18l8doY+E/6mmNMSDMU6eJsSUDgvgGRMHhsKjiVh7DJGbZRRogdrES4KAfx6raIB4kBz5Q==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.971.0.tgz", + "integrity": "sha512-j4wCCoQ//xm03JQn7/Jq6BJ0HV3VzlI/HrIQSQupWWjZTrdxyqa9PXBhcYNNtvZtF1adA/cRpYTMS+2SUsZGRg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@aws-sdk/util-format-url": "3.965.0", - "@smithy/middleware-endpoint": "^4.4.1", - "@smithy/protocol-http": "^5.3.7", - "@smithy/smithy-client": "^4.10.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/signature-v4-multi-region": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@aws-sdk/util-format-url": "3.969.0", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.965.0.tgz", - "integrity": "sha512-hgbAThbsUrWtNpFBQxzXevIfd5Qgr4TLbXY1AIbmpSX9fPVC114pdieRMpopJ0fYaJ7v5/blTiS6wzVdXleZ/w==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.970.0.tgz", + "integrity": "sha512-z3syXfuK/x/IsKf/AeYmgc2NT7fcJ+3fHaGO+fkghkV9WEba3fPyOwtTBX4KpFMNb2t50zDGZwbzW1/5ighcUQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/signature-v4": "^5.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/middleware-sdk-s3": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.965.0.tgz", - "integrity": "sha512-aR0qxg0b8flkXJVE+CM1gzo7uJ57md50z2eyCwofC0QIz5Y0P7/7vvb9/dmUQt6eT9XRN5iRcUqq2IVxVDvJOw==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.971.0.tgz", + "integrity": "sha512-4hKGWZbmuDdONMJV0HJ+9jwTDb0zLfKxcCLx2GEnBY31Gt9GeyIQ+DZ97Bb++0voawj6pnZToFikXTyrEq2x+w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.965.0", - "@aws-sdk/nested-clients": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/property-provider": "^4.2.7", - "@smithy/shared-ini-file-loader": "^4.4.2", - "@smithy/types": "^4.11.0", + "@aws-sdk/core": "3.970.0", + "@aws-sdk/nested-clients": "3.971.0", + "@aws-sdk/types": "3.969.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.965.0.tgz", - "integrity": "sha512-jvodoJdMavvg8faN7co58vVJRO5MVep4JFPRzUNCzpJ98BDqWDk/ad045aMJcmxkLzYLS2UAnUmqjJ/tUPNlzQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.969.0.tgz", + "integrity": "sha512-7IIzM5TdiXn+VtgPdVLjmE6uUBUtnga0f4RiSEI1WW10RPuNvZ9U+pL3SwDiRDAdoGrOF9tSLJOFZmfuwYuVYQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.965.0.tgz", - "integrity": "sha512-bNGKr5Tct28jGLkL8xIkGu7swpDgBpkTVbGaofhzr/X80iclbOv656RGxhMpDvmc4S9UuQnqLRXyceNFNF2V7Q==", + "version": "3.968.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.968.0.tgz", + "integrity": "sha512-gqqvYcitIIM2K4lrDX9de9YvOfXBcVdxfT/iLnvHJd4YHvSXlt+gs+AsL4FfPCxG4IG9A+FyulP9Sb1MEA75vw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.965.0.tgz", - "integrity": "sha512-WqSCB0XIsGUwZWvrYkuoofi2vzoVHqyeJ2kN+WyoOsxPLTiQSBIoqm/01R/qJvoxwK/gOOF7su9i84Vw2NQQpQ==", + "version": "3.970.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.970.0.tgz", + "integrity": "sha512-TZNZqFcMUtjvhZoZRtpEGQAdULYiy6rcGiXAbLU7e9LSpIYlRqpLa207oMNfgbzlL2PnHko+eVg8rajDiSOYCg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", - "@smithy/url-parser": "^4.2.7", - "@smithy/util-endpoints": "^3.2.7", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-format-url": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.965.0.tgz", - "integrity": "sha512-KiplV4xYGXdNCcz5eRP8WfAejT5EkE2gQxC4IY6WsuxYprzQKsnGaAzEQ+giR5GgQLIRBkPaWT0xHEYkMiCQ1Q==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.969.0.tgz", + "integrity": "sha512-C7ZiE8orcrEF9In+XDlIKrZhMjp0HCPUH6u74pgadE3T2LRre5TmOQcTt785/wVS2G0we9cxkjlzMrfDsfPvFw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/querystring-builder": "^4.2.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { @@ -1412,31 +957,31 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.965.0.tgz", - "integrity": "sha512-Xiza/zMntQGpkd2dETQeAK8So1pg5+STTzpcdGWxj5q0jGO5ayjqT/q1Q7BrsX5KIr6PvRkl9/V7lLCv04wGjQ==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.969.0.tgz", + "integrity": "sha512-bpJGjuKmFr0rA6UKUCmN8D19HQFMLXMx5hKBXqBlPFdalMhxJSjcxzX9DbQh0Fn6bJtxCguFmRGOBdQqNOt49g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.965.0", - "@smithy/types": "^4.11.0", + "@aws-sdk/types": "3.969.0", + "@smithy/types": "^4.12.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.965.0.tgz", - "integrity": "sha512-kokIHUfNT3/P55E4fUJJrFHuuA9BbjFKUIxoLrd3UaRfdafT0ScRfg2eaZie6arf60EuhlUIZH0yALxttMEjxQ==", + "version": "3.971.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.971.0.tgz", + "integrity": "sha512-Eygjo9mFzQYjbGY3MYO6CsIhnTwAMd3WmuFalCykqEmj2r5zf0leWrhPaqvA5P68V5JdGfPYgj7vhNOd6CtRBQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.965.0", - "@aws-sdk/types": "3.965.0", - "@smithy/node-config-provider": "^4.3.7", - "@smithy/types": "^4.11.0", + "@aws-sdk/middleware-user-agent": "3.970.0", + "@aws-sdk/types": "3.969.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -1448,23 +993,23 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.965.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.965.0.tgz", - "integrity": "sha512-Tcod25/BTupraQwtb+Q+GX8bmEZfxIFjjJ/AvkhUZsZlkPeVluzq1uu3Oeqf145DCdMjzLIN6vab5MrykbDP+g==", + "version": "3.969.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.969.0.tgz", + "integrity": "sha512-BSe4Lx/qdRQQdX8cSSI7Et20vqBspzAjBy8ZmXVoyLkol3y4sXBXzn+BiLtR+oh60ExQn6o2DU4QjdOZbXaKIQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.2.tgz", - "integrity": "sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", + "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -2671,9 +2216,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.20.5", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.20.5.tgz", - "integrity": "sha512-0Tz77Td8ynHaowXfOdrD0F1IH4tgWGUhwmLwmpFyTbr+U9WHXNNp9u/k2VjBXGnSe7BwjBERRpXsokGTXzNjhA==", + "version": "3.20.7", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.20.7.tgz", + "integrity": "sha512-aO7jmh3CtrmPsIJxUwYIzI5WVlMK8BMCPQ4D4nTzqTqBhbzvxHNzBMGcEg13yg/z9R2Qsz49NUFl0F0lVbTVFw==", "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^4.2.9", @@ -2708,13 +2253,13 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.7.tgz", - "integrity": "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", + "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" }, @@ -2723,13 +2268,13 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.7.tgz", - "integrity": "sha512-ujzPk8seYoDBmABDE5YqlhQZAXLOrtxtJLrbhHMKjBoG5b4dK4i6/mEU+6/7yXIAkqOO8sJ6YxZl+h0QQ1IJ7g==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", + "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2737,12 +2282,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.7.tgz", - "integrity": "sha512-x7BtAiIPSaNaWuzm24Q/mtSkv+BrISO/fmheiJ39PKRNH3RmH2Hph/bUKSOBOBC9unqfIYDhKTHwpyZycLGPVQ==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", + "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2750,13 +2295,13 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.7.tgz", - "integrity": "sha512-roySCtHC5+pQq5lK4be1fZ/WR6s/AxnPaLfCODIPArtN2du8s5Ot4mKVK3pPtijL/L654ws592JHJ1PbZFF6+A==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", + "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2764,13 +2309,13 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.7.tgz", - "integrity": "sha512-QVD+g3+icFkThoy4r8wVFZMsIP08taHVKjE6Jpmz8h5CgX/kk6pTODq5cht0OMtcapUx+xrPzUTQdA+TmO0m1g==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", + "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2794,14 +2339,14 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.8.tgz", - "integrity": "sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", + "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", "@smithy/chunked-blob-reader-native": "^4.2.1", - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2809,12 +2354,12 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.7.tgz", - "integrity": "sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -2824,12 +2369,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.7.tgz", - "integrity": "sha512-ZQVoAwNYnFMIbd4DUc517HuwNelJUY6YOzwqrbcAgCnVn+79/OK7UjwA93SPpdTOpKDVkLIzavWm/Ck7SmnDPQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", + "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -2838,12 +2383,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.7.tgz", - "integrity": "sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2863,12 +2408,12 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.7.tgz", - "integrity": "sha512-Wv6JcUxtOLTnxvNjDnAiATUsk8gvA6EeS8zzHig07dotpByYsLot+m0AaQEniUBjx97AC41MQR4hW0baraD1Xw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", + "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.11.0", + "@smithy/types": "^4.12.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -2877,13 +2422,13 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.7.tgz", - "integrity": "sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -2891,12 +2436,12 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.6.tgz", - "integrity": "sha512-dpq3bHqbEOBqGBjRVHVFP3eUSPpX0BYtg1D5d5Irgk6orGGAuZfY22rC4sErhg+ZfY/Y0kPqm1XpAmDZg7DeuA==", + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.8.tgz", + "integrity": "sha512-TV44qwB/T0OMMzjIuI+JeS0ort3bvlPJ8XIH0MSlGADraXpZqmyND27ueuAL3E14optleADWqtd7dUgc2w+qhQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.20.5", + "@smithy/core": "^3.20.7", "@smithy/middleware-serde": "^4.2.9", "@smithy/node-config-provider": "^4.3.8", "@smithy/shared-ini-file-loader": "^4.4.3", @@ -2910,15 +2455,15 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.22", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.22.tgz", - "integrity": "sha512-vwWDMaObSMjw6WCC/3Ae9G7uul5Sk95jr07CDk1gkIMpaDic0phPS1MpVAZ6+YkF7PAzRlpsDjxPwRlh/S11FQ==", + "version": "4.4.24", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.24.tgz", + "integrity": "sha512-yiUY1UvnbUFfP5izoKLtfxDSTRv724YRRwyiC/5HYY6vdsVDcDOXKSXmkJl/Hovcxt5r+8tZEUAdrOaCJwrl9Q==", "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.8", "@smithy/protocol-http": "^5.3.8", "@smithy/service-error-classification": "^4.2.8", - "@smithy/smithy-client": "^4.10.7", + "@smithy/smithy-client": "^4.10.9", "@smithy/types": "^4.12.0", "@smithy/util-middleware": "^4.2.8", "@smithy/util-retry": "^4.2.8", @@ -3066,16 +2611,16 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.7.tgz", - "integrity": "sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.7", - "@smithy/types": "^4.11.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.7", + "@smithy/util-middleware": "^4.2.8", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -3085,13 +2630,13 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.10.7", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.7.tgz", - "integrity": "sha512-Uznt0I9z3os3Z+8pbXrOSCTXCA6vrjyN7Ub+8l2pRDum44vLv8qw0qGVkJN0/tZBZotaEFHrDPKUoPNueTr5Vg==", + "version": "4.10.9", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.9.tgz", + "integrity": "sha512-Je0EvGXVJ0Vrrr2lsubq43JGRIluJ/hX17aN/W/A0WfE+JpoMdI8kwk2t9F0zTX9232sJDGcoH4zZre6m6f/sg==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.20.5", - "@smithy/middleware-endpoint": "^4.4.6", + "@smithy/core": "^3.20.7", + "@smithy/middleware-endpoint": "^4.4.8", "@smithy/middleware-stack": "^4.2.8", "@smithy/protocol-http": "^5.3.8", "@smithy/types": "^4.12.0", @@ -3192,13 +2737,13 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.21.tgz", - "integrity": "sha512-DtmVJarzqtjghtGjCw/PFJolcJkP7GkZgy+hWTAN3YLXNH+IC82uMoMhFoC3ZtIz5mOgCm5+hOGi1wfhVYgrxw==", + "version": "4.3.23", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.23.tgz", + "integrity": "sha512-mMg+r/qDfjfF/0psMbV4zd7F/i+rpyp7Hjh0Wry7eY15UnzTEId+xmQTGDU8IdZtDfbGQxuWNfgBZKBj+WuYbA==", "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.8", - "@smithy/smithy-client": "^4.10.7", + "@smithy/smithy-client": "^4.10.9", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, @@ -3207,16 +2752,16 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.24", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.24.tgz", - "integrity": "sha512-JelBDKPAVswVY666rezBvY6b0nF/v9TXjUbNwDNAyme7qqKYEX687wJv0uze8lBIZVbg30wlWnlYfVSjjpKYFA==", + "version": "4.2.26", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.26.tgz", + "integrity": "sha512-EQqe/WkbCinah0h1lMWh9ICl0Ob4lyl20/10WTB35SC9vDQfD8zWsOT+x2FIOXKAoZQ8z/y0EFMoodbcqWJY/w==", "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^4.4.6", "@smithy/credential-provider-imds": "^4.2.8", "@smithy/node-config-provider": "^4.3.8", "@smithy/property-provider": "^4.2.8", - "@smithy/smithy-client": "^4.10.7", + "@smithy/smithy-client": "^4.10.9", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, @@ -3322,13 +2867,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.7.tgz", - "integrity": "sha512-vHJFXi9b7kUEpHWUCY3Twl+9NPOZvQ0SAi+Ewtn48mbiJk4JY9MZmKQjGB4SCvVb9WPiSphZJYY6RIbs+grrzw==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.7", - "@smithy/types": "^4.11.0", + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { @@ -3383,9 +2928,9 @@ "license": "MIT" }, "node_modules/@types/aws-lambda": { - "version": "8.10.159", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.159.tgz", - "integrity": "sha512-SAP22WSGNN12OQ8PlCzGzRCZ7QDCwI85dQZbmpz7+mAk+L7j+wI7qnvmdKh+o7A5LaOp6QnOZ2NJphAZQTTHQg==", + "version": "8.10.160", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.160.tgz", + "integrity": "sha512-uoO4QVQNWFPJMh26pXtmtrRfGshPUSpMZGUyUQY20FhfHEElEBOPKgVmFs1z+kbpyBsRs2JnoOPT7++Z4GA9pA==", "dev": true, "license": "MIT" }, @@ -3403,10 +2948,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { - "version": "25.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.8.tgz", - "integrity": "sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg==", + "version": "25.0.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", + "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", "dev": true, "license": "MIT", "dependencies": { @@ -3414,17 +2966,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.0.tgz", - "integrity": "sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz", + "integrity": "sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/type-utils": "8.53.0", - "@typescript-eslint/utils": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/type-utils": "8.53.1", + "@typescript-eslint/utils": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -3437,22 +2989,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.53.0", + "@typescript-eslint/parser": "^8.53.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.0.tgz", - "integrity": "sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.53.1.tgz", + "integrity": "sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3" }, "engines": { @@ -3468,14 +3020,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.0.tgz", - "integrity": "sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.53.1.tgz", + "integrity": "sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.53.0", - "@typescript-eslint/types": "^8.53.0", + "@typescript-eslint/tsconfig-utils": "^8.53.1", + "@typescript-eslint/types": "^8.53.1", "debug": "^4.4.3" }, "engines": { @@ -3490,14 +3042,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.0.tgz", - "integrity": "sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz", + "integrity": "sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0" + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3508,9 +3060,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.0.tgz", - "integrity": "sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz", + "integrity": "sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==", "dev": true, "license": "MIT", "engines": { @@ -3525,15 +3077,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.0.tgz", - "integrity": "sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz", + "integrity": "sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0", - "@typescript-eslint/utils": "8.53.0", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1", + "@typescript-eslint/utils": "8.53.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -3550,9 +3102,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", - "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.1.tgz", + "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", "dev": true, "license": "MIT", "engines": { @@ -3564,16 +3116,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.0.tgz", - "integrity": "sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz", + "integrity": "sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.53.0", - "@typescript-eslint/tsconfig-utils": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/visitor-keys": "8.53.0", + "@typescript-eslint/project-service": "8.53.1", + "@typescript-eslint/tsconfig-utils": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/visitor-keys": "8.53.1", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", @@ -3592,16 +3144,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.0.tgz", - "integrity": "sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.53.1.tgz", + "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.53.0", - "@typescript-eslint/types": "8.53.0", - "@typescript-eslint/typescript-estree": "8.53.0" + "@typescript-eslint/scope-manager": "8.53.1", + "@typescript-eslint/types": "8.53.1", + "@typescript-eslint/typescript-estree": "8.53.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3616,13 +3168,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.0.tgz", - "integrity": "sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==", + "version": "8.53.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz", + "integrity": "sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.53.0", + "@typescript-eslint/types": "8.53.1", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -4303,131 +3855,6 @@ "node": ">=8" } }, - "node_modules/drizzle-orm": { - "version": "0.44.7", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.44.7.tgz", - "integrity": "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==", - "license": "Apache-2.0", - "peerDependencies": { - "@aws-sdk/client-rds-data": ">=3", - "@cloudflare/workers-types": ">=4", - "@electric-sql/pglite": ">=0.2.0", - "@libsql/client": ">=0.10.0", - "@libsql/client-wasm": ">=0.10.0", - "@neondatabase/serverless": ">=0.10.0", - "@op-engineering/op-sqlite": ">=2", - "@opentelemetry/api": "^1.4.1", - "@planetscale/database": ">=1.13", - "@prisma/client": "*", - "@tidbcloud/serverless": "*", - "@types/better-sqlite3": "*", - "@types/pg": "*", - "@types/sql.js": "*", - "@upstash/redis": ">=1.34.7", - "@vercel/postgres": ">=0.8.0", - "@xata.io/client": "*", - "better-sqlite3": ">=7", - "bun-types": "*", - "expo-sqlite": ">=14.0.0", - "gel": ">=2", - "knex": "*", - "kysely": "*", - "mysql2": ">=2", - "pg": ">=8", - "postgres": ">=3", - "sql.js": ">=1", - "sqlite3": ">=5" - }, - "peerDependenciesMeta": { - "@aws-sdk/client-rds-data": { - "optional": true - }, - "@cloudflare/workers-types": { - "optional": true - }, - "@electric-sql/pglite": { - "optional": true - }, - "@libsql/client": { - "optional": true - }, - "@libsql/client-wasm": { - "optional": true - }, - "@neondatabase/serverless": { - "optional": true - }, - "@op-engineering/op-sqlite": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@prisma/client": { - "optional": true - }, - "@tidbcloud/serverless": { - "optional": true - }, - "@types/better-sqlite3": { - "optional": true - }, - "@types/pg": { - "optional": true - }, - "@types/sql.js": { - "optional": true - }, - "@upstash/redis": { - "optional": true - }, - "@vercel/postgres": { - "optional": true - }, - "@xata.io/client": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "bun-types": { - "optional": true - }, - "expo-sqlite": { - "optional": true - }, - "gel": { - "optional": true - }, - "knex": { - "optional": true - }, - "kysely": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "postgres": { - "optional": true - }, - "prisma": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - } - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -4657,14 +4084,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -5696,6 +5123,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -6054,110 +5487,6 @@ "node": ">=8" } }, - "node_modules/pg": { - "version": "8.16.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", - "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "pg-connection-string": "^2.9.1", - "pg-pool": "^3.10.1", - "pg-protocol": "^1.10.3", - "pg-types": "2.2.0", - "pgpass": "1.0.5" - }, - "engines": { - "node": ">= 16.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.2.7" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", - "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/pg-connection-string": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", - "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", - "optional": true, - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", - "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", - "license": "MIT", - "optional": true, - "peer": true, - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "split2": "^4.1.0" - } - }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -6171,53 +5500,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", - "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6229,9 +5511,9 @@ } }, "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.0.tgz", + "integrity": "sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==", "dev": true, "license": "MIT", "bin": { @@ -6559,17 +5841,6 @@ "node": ">=8" } }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "optional": true, - "peer": true, - "engines": { - "node": ">= 10.x" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -6657,9 +5928,9 @@ } }, "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6933,17 +6204,6 @@ } } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/serverless/package.json b/serverless/package.json index d3e11e8..00019d1 100644 --- a/serverless/package.json +++ b/serverless/package.json @@ -19,24 +19,25 @@ "license": "ISC", "type": "commonjs", "dependencies": { - "@aws-sdk/client-s3": "^3.965.0", - "@aws-sdk/client-secrets-manager": "^3.965.0", - "@aws-sdk/s3-request-presigner": "^3.965.0", + "@aws-sdk/client-s3": "^3.971.0", + "@aws-sdk/client-secrets-manager": "^3.971.0", + "@aws-sdk/s3-request-presigner": "^3.971.0", "axios": "^1.13.2", - "drizzle-orm": "^0.44.5", - "form-data": "^4.0.1" + "form-data": "^4.0.5", + "lodash": "^4.17.21" }, "devDependencies": { "@eslint/js": "^9.39.2", - "@types/aws-lambda": "^8.10.159", - "@types/node": "^25.0.8", - "@typescript-eslint/eslint-plugin": "^8.53.0", - "@typescript-eslint/parser": "^8.53.0", + "@types/aws-lambda": "^8.10.160", + "@types/lodash": "^4.17.23", + "@types/node": "^25.0.9", + "@typescript-eslint/eslint-plugin": "^8.53.1", + "@typescript-eslint/parser": "^8.53.1", "esbuild": "^0.27.2", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", - "eslint-plugin-prettier": "^5.5.4", - "prettier": "^3.7.4", + "eslint-plugin-prettier": "^5.5.5", + "prettier": "^3.8.0", "serverless-esbuild": "^1.57.0", "ts-node": "^10.9.2", "typescript": "^5.9.3" diff --git a/serverless/serverless.yml b/serverless/serverless.yml index fd98441..96ff850 100644 --- a/serverless/serverless.yml +++ b/serverless/serverless.yml @@ -2,43 +2,55 @@ service: esdp-api app: esdp-api-app frameworkVersion: '4' -# Common parameters shared across all stages -custom: - commonParams: - es_user: Imex2 - es_password: Patrick - hasura_secret_arn: arn:aws:secretsmanager:ca-central-1:714144183158:secret:esdp-hasura-credentials-s81i1u-BDFgPi - stages: prod: # Enables observability in the prod stage observability: true - # Stage-specific parameter values for prod + # Sepcify parameter values to be used in the prod stage params: es_endpoint: https://insurtechtoolkit.com domain: es.imex.online + es_user: Imex2 + es_password: Patrick beta: + # Enables observability in the prod stage observability: false - # Stage-specific parameter values for beta + # Sepcify parameter values to be used in the prod stage params: es_endpoint: https://4284-79073.el-alt.com domain: beta.es.imex.online + es_user: Imex2 + es_password: Patrick alpha: + # Enables observability in the prod stage observability: false - - # Stage-specific parameter values for alpha + # Sepcify parameter values to be used in the prod stage params: es_endpoint: https://4284-79287.el-alt.com domain: alpha.es.imex.online + es_user: Imex2 + es_password: Patrick dev: + # Enables observability in the prod stage observability: false - - # Stage-specific parameter values for dev + # Sepcify parameter values to be used in the prod stage params: es_endpoint: https://4284-79287.el-alt.com domain: dev.es.imex.online + es_user: Imex2 + es_password: Patrick + +# params: +# dev: +# domain: dev.es.imex.online +# alpha: +# domain: alpha.es.imex.online +# beta: +# domain: beta.es.imex.online +# prod: +# domain: es.imex.online provider: name: aws @@ -69,8 +81,8 @@ functions: handler: src/handlers/scrub.handler environment: ES_ENDPOINT: ${param:es_endpoint} - ES_USER: ${self:custom.commonParams.es_user} - ES_PASSWORD: ${self:custom.commonParams.es_password} + ES_USER: ${param:es_user} + ES_PASSWORD: ${param:es_password} events: - httpApi: path: /scrub diff --git a/serverless/src/db/schema/index.ts b/serverless/src/db/schema/index.ts deleted file mode 100644 index 5bc8021..0000000 --- a/serverless/src/db/schema/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AnyPgColumn, boolean, pgTable, text, timestamp, uuid, index } from 'drizzle-orm/pg-core'; - -export const shops = pgTable('shops', { - id: uuid('id').defaultRandom().primaryKey(), - createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), - esApiKey: text('es_api_key').notNull().unique(), - active: boolean('active').notNull().default(true), -}); - -export const jobs = pgTable( - 'jobs', - { - id: uuid('id').defaultRandom().primaryKey(), - shopId: uuid('shopId') - .references((): AnyPgColumn => shops.id) - .notNull(), - createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), - clm_no: text('clm_no'), - ciecaid: text('ciecaid'), - }, - (table) => [index('clm_no_idx').on(table.clm_no)] -); - -export const joblines = pgTable('joblines', { - id: uuid('id').defaultRandom().primaryKey(), - createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(), - jobId: uuid('jobId') - .references((): AnyPgColumn => jobs.id) - .notNull(), - line_desc: text('line_desc'), -}); diff --git a/serverless/src/handlers/dbMigrate.ts b/serverless/src/handlers/dbMigrate.ts deleted file mode 100644 index c58d576..0000000 --- a/serverless/src/handlers/dbMigrate.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { APIGatewayProxyResult } from 'aws-lambda'; -import { migrate } from 'drizzle-orm/node-postgres/migrator'; - -import { getDb } from '../lib/db'; - -export const handler = async (): Promise => { - try { - const db = await getDb(); - await migrate(db, { migrationsFolder: 'drizzle' }); - - return { - statusCode: 200, - body: JSON.stringify({ success: true, message: 'Migrations applied.' }), - }; - } catch (error) { - const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - return { - statusCode: 500, - body: JSON.stringify({ success: false, error: errorMessage }), - }; - } -}; diff --git a/serverless/src/handlers/dbPing.ts b/serverless/src/handlers/dbPing.ts deleted file mode 100644 index 5af6a24..0000000 --- a/serverless/src/handlers/dbPing.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { APIGatewayProxyResult } from 'aws-lambda'; - -import { sql } from 'drizzle-orm'; - -import { getDb } from '../lib/db'; - -export const handler = async (): Promise => { - try { - const db = await getDb(); - const ping = await db.execute(sql`select 1 as ok`); - - const schemaRows = await db.execute(sql` - select - table_schema, - table_name, - column_name, - data_type, - is_nullable, - ordinal_position - from information_schema.columns - where table_schema not in ('pg_catalog', 'information_schema') - order by table_schema, table_name, ordinal_position - `); - - type ColumnInfo = { - name: string; - type: string; - nullable: boolean; - position: number; - }; - - type TableInfo = { - schema: string; - name: string; - columns: ColumnInfo[]; - }; - - const tableMap = new Map(); - const rows = (schemaRows as unknown as { rows?: unknown[] })?.rows ?? []; - for (const row of rows as Array>) { - const tableSchema = String(row.table_schema ?? ''); - const tableName = String(row.table_name ?? ''); - if (!tableSchema || !tableName) continue; - - const key = `${tableSchema}.${tableName}`; - const existing = tableMap.get(key); - const tableInfo: TableInfo = existing ?? { - schema: tableSchema, - name: tableName, - columns: [], - }; - - tableInfo.columns.push({ - name: String(row.column_name ?? ''), - type: String(row.data_type ?? ''), - nullable: String(row.is_nullable ?? '') === 'YES', - position: Number(row.ordinal_position ?? 0), - }); - - if (!existing) tableMap.set(key, tableInfo); - } - - const tables = [...tableMap.values()]; - - return { - statusCode: 200, - body: JSON.stringify({ success: true, ping, schema: { tables } }), - }; - } catch (error) { - const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - const maybeAny = error as unknown as { cause?: unknown; code?: unknown }; - const causeMessage = - maybeAny?.cause instanceof Error - ? maybeAny.cause.message - : typeof maybeAny?.cause === 'string' - ? maybeAny.cause - : undefined; - const causeCode = - typeof (maybeAny?.cause as { code?: unknown } | undefined)?.code === 'string' - ? (maybeAny.cause as { code?: string }).code - : typeof maybeAny?.code === 'string' - ? maybeAny.code - : undefined; - return { - statusCode: 500, - body: JSON.stringify({ - success: false, - error: errorMessage, - cause: causeMessage, - code: causeCode, - }), - }; - } -}; diff --git a/serverless/src/handlers/scrub.ts b/serverless/src/handlers/scrub.ts index 14c1d45..dfdb3f4 100644 --- a/serverless/src/handlers/scrub.ts +++ b/serverless/src/handlers/scrub.ts @@ -1,23 +1,18 @@ import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda'; import axios, { AxiosError } from 'axios'; import FormData from 'form-data'; + +import { ESJobObject, RawJobDataObject } from '../../../shared/types'; +import { transformJobForEstimateScrubber } from '../lib/transformEstimate'; import { getVehicleType } from '../lib/vehicleTypes/vehicleType'; const ES_USER = process.env.ES_USER || ''; const ES_PASSWORD = process.env.ES_PASSWORD || ''; const ES_ENDPOINT = process.env.ES_ENDPOINT || ''; -interface Estimate { - v_type?: string; - v_model: string; - clm_no: string; - sendingEntityId?: string; - [key: string]: unknown; -} - interface ScrubRequest { esApiKey: string; - estimate: Estimate; + rawJob: RawJobDataObject; } interface ScrubResponse { @@ -27,13 +22,16 @@ interface ScrubResponse { export const handler = async (event: APIGatewayProxyEvent): Promise => { try { - const { esApiKey, estimate } = JSON.parse(event.body || '{}') as ScrubRequest; + const { esApiKey, rawJob } = JSON.parse(event.body || '{}') as ScrubRequest; + + // Transform the raw job object to ES format + const estimate: ESJobObject = await transformJobForEstimateScrubber(rawJob); // Set vehicle type and sending entity ID - estimate.v_type = getVehicleType(estimate.v_model).type; - estimate.sendingEntityId = '87330f61-412b-4251-baaa-d026565b23c5'; + estimate.v_type = getVehicleType(estimate.v_model || '').type; + estimate.sending_entity_id = '87330f61-412b-4251-baaa-d026565b23c5'; - const fileName = `${esApiKey}-${estimate.clm_no}-${Date.now()}`; + const fileName = `${esApiKey}-${rawJob.clm_no}-${Date.now()}`; const formData = new FormData(); const jsonString = JSON.stringify(estimate); diff --git a/serverless/src/lib/db.ts b/serverless/src/lib/db.ts deleted file mode 100644 index e7346bc..0000000 --- a/serverless/src/lib/db.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { SecretsManagerClient, GetSecretValueCommand } from '@aws-sdk/client-secrets-manager'; -import { drizzle, NodePgDatabase } from 'drizzle-orm/node-postgres'; -import { Pool } from 'pg'; - -import * as schema from '../db/schema'; - -type DbSecret = { - username: string; - password: string; -}; - -let cachedSecret: DbSecret | undefined; -let cachedPool: Pool | undefined; -let cachedDb: NodePgDatabase | undefined; - -function requireEnv(name: string): string { - const value = process.env[name]; - if (!value) { - throw new Error(`Missing required env var: ${name}`); - } - return value; -} - -async function getDbSecret(): Promise { - if (cachedSecret) return cachedSecret; - - const secretArn = requireEnv('DB_SECRET_ARN'); - const client = new SecretsManagerClient({}); - const result = await client.send( - new GetSecretValueCommand({ - SecretId: secretArn, - }) - ); - - if (!result.SecretString) { - throw new Error('SecretString was empty for DB_SECRET_ARN'); - } - - const parsed = JSON.parse(result.SecretString) as Partial; - if (!parsed.username || !parsed.password) { - throw new Error('DB secret missing username/password'); - } - - cachedSecret = { username: parsed.username, password: parsed.password }; - return cachedSecret; -} - -export async function getPool(): Promise { - if (cachedPool) return cachedPool; - - const host = requireEnv('DB_HOST'); - const port = Number.parseInt(requireEnv('DB_PORT'), 10); - const database = requireEnv('DB_NAME'); - const { username: user, password } = await getDbSecret(); - - cachedPool = new Pool({ - host, - port, - database, - user, - password, - ssl: { - rejectUnauthorized: true, - }, - max: 5, - idleTimeoutMillis: 30_000, - connectionTimeoutMillis: 10_000, - }); - - return cachedPool; -} - -export async function getDb(): Promise> { - if (cachedDb) return cachedDb; - const pool = await getPool(); - cachedDb = drizzle(pool, { schema }); - return cachedDb; -} diff --git a/serverless/src/lib/transformEstimate.ts b/serverless/src/lib/transformEstimate.ts new file mode 100644 index 0000000..22ce43e --- /dev/null +++ b/serverless/src/lib/transformEstimate.ts @@ -0,0 +1,239 @@ +import _ from 'lodash'; +import { RawJobDataObject, ESJobObject } from '../../../shared/types'; + +export async function transformJobForEstimateScrubber(job: RawJobDataObject): Promise { + // Take the job object and strip off everything we don't need. + const omittedJob = _.omit(job, [ + 'cat_no', + 'ciecaid', + 'agt_co_id', + 'agt_co_nm', + 'agt_addr1', + 'agt_addr2', + 'agt_city', + 'agt_st', + 'agt_zip', + 'agt_ctry', + 'agt_ph1', + 'agt_ph1x', + 'agt_ph2', + 'agt_ph2x', + 'agt_fax', + 'agt_faxx', + 'agt_ct_ln', + 'agt_ct_fn', + 'agt_ct_ph', + 'agt_ct_phx', + 'agt_ea', + 'agt_lic_no', + 'adj_g_disc', + 'adj_strdis', + 'adj_towdis', + 'asgn_date', + 'asgn_no', + 'asgn_type', + 'clm_addr1', + 'clm_addr2', + 'clm_city', + 'clm_ct_fn', + 'clm_ct_ln', + 'clm_ct_ph', + 'clm_ct_phx', + 'clm_ctry', + 'clm_ea', + 'clm_fax', + 'clm_faxx', + 'clm_ofc_id', + 'clm_ofc_nm', + 'clm_ph1', + 'clm_ph1x', + 'clm_ph2', + 'clm_ph2x', + 'clm_st', + 'clm_title', + 'clm_zip', + 'cust_pr', + 'date_estimated', + 'ded_status', + 'depreciation_taxes', + 'est_addr1', + 'est_addr2', + 'est_city', + 'est_co_nm', + 'est_ct_fn', + 'est_ct_ln', + 'est_ctry', + 'est_ea', + 'est_ph1', + 'est_st', + 'est_zip', + 'federal_tax_rate', + 'ins_addr1', + 'ins_addr2', + 'ins_city', + 'ins_co_id', + 'ins_ct_fn', + 'ins_ct_ln', + 'ins_ct_ph', + 'ins_ct_phx', + 'ins_ctry', + 'ins_ea', + 'ins_fax', + 'ins_faxx', + 'ins_ph1', + 'ins_ph1x', + 'ins_ph2', + 'ins_ph2x', + 'ins_st', + 'ins_title', + 'ins_zip', + 'insd_fax', + 'insd_faxx', + 'kmin', + 'loss_cat', + 'loss_type', + 'ownr_addr2', + 'ownr_co_nm', + 'ownr_ctry', + 'ownr_ea', + 'ownr_ph2', + 'ownr_st', + 'ownr_title', + 'ownr_zip', + 'pay_amt', + 'pay_chknm', + 'pay_date', + 'pay_type', + 'payee_nms', + 'plate_no', + 'plate_st', + 'policy_no', + 'rate_la1', + 'rate_la2', + 'rate_la3', + 'rate_la4', + 'rate_laa', + 'rate_lab', + 'rate_lad', + 'rate_lae', + 'rate_laf', + 'rate_lag', + 'rate_lam', + 'rate_lar', + 'rate_las', + 'rate_lau', + 'rate_ma2s', + 'rate_ma2t', + 'rate_ma3s', + 'rate_mabl', + 'rate_macs', + 'rate_mahw', + 'rate_mapa', + 'rate_mash', + 'tax_lbr_rt', + 'tax_levies_rt', + 'tax_paint_mat_rt', + 'tax_predis', + 'tax_prethr', + 'tax_pstthr', + 'tax_shop_mat_rt', + 'tax_str_rt', + 'tax_sub_rt', + 'tax_thramt', + 'tax_tow_rt', + 'theft_ind', + 'v_color', + 'tlos_ind', + 'v_make_desc', + 'v_model_desc', + 'shopid', + 'est_system', + // Object fields + 'owner', + 'vehicle', + 'bodyshop', + 'area_of_damage', + 'joblines', + 'clm_total', + // CIECA Fields + 'cieca_pft', + 'cieca_pfl', + 'cieca_pfm', + 'cieca_pfo', + 'cieca_stl', + 'cieca_ttl', + 'parts_tax_rates', + 'materials', + ]); + + // Apply the ES specific transformations needed. + const rates = [ + ...(job.cieca_pfm?.map((pfm) => ({ + cal_prethr: pfm.cal_prethr, + mat_type: pfm.matl_type, // Rename required - presumed typo in ES API. + })) || []), + ...(Object.keys(job.cieca_pfl || {}).map((key) => + _.pick(job.cieca_pfl![key], ['lbr_desc', 'lbr_rate', 'lbr_type']) + ) || []), + ]; + + const supp_amt = job.cieca_ttl?.data?.supp_amt || 0; + const totals = + job.cieca_stl?.data?.map((ttl) => + _.pick(ttl, ['nt_hrs', 't_amt', 't_hrs', 'ttl_typecd']) + ) || []; + + const now = new Date().toISOString(); + + return { + ...omittedJob, + impact_1: job.area_of_damage?.impact1, + impact_2: job.area_of_damage?.impact2, + close_date: null, + created_at: now, + id: '00000000-0000-0000-0000-000000000000', // Placeholder ID + updated_at: now, + v_age: -1, // Needed? RPS calc. + v_type: 'TBD', // Will be set by caller + v_makedesc: job.v_make_desc, + v_model: job.v_model_desc, + rates, + supp_amt, + totals, + ro_number: null, + requires_reimport: false, + v_mileage: job.kmin?.toString() || '', + sending_entity_id: '', + sending_entity_accept_terms_of_use: true, + association_switch: 'ATAM', + rf_ph1: '2043792253', + rf_zip: 'R0G 1Z0', + g_ttl_amt: job.clm_total || 0, + source_system: job.est_system || 'M', + joblines: + job.joblines?.data?.map((line) => ({ + ..._.omit(line, [ + 'lbr_tax', + 'lbr_typ_j', + 'line_ref', + 'misc_sublt', + 'misc_tax', + 'prt_dsmk_m', + 'prt_dsmk_p', + 'tran_code', + 'unq_seq', + 'alt_co_id', + 'alt_overrd', + 'alt_part_i', + 'alt_partm', + 'bett_type', + 'bett_pctg', + 'bett_amt', + 'bett_tax', + 'op_code_desc', + 'paint_stg', + 'paint_tone', + ]), + })) || [], + } as ESJobObject; +} diff --git a/serverless/tsconfig.json b/serverless/tsconfig.json index 7be9c38..fc508b7 100644 --- a/serverless/tsconfig.json +++ b/serverless/tsconfig.json @@ -1,24 +1,24 @@ { - "compilerOptions": { - "target": "ES2022", - "module": "commonjs", - "lib": ["ES2022"], - "moduleResolution": "node", - "rootDir": "./src", - "outDir": "./dist", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", ".serverless"] + "compilerOptions": { + "target": "ES2022", + "module": "commonjs", + "lib": ["ES2022"], + "moduleResolution": "node", + "rootDir": "./src", + "outDir": "./dist", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*", "../shared/**/*"], + "exclude": ["node_modules", "dist", ".serverless"] } diff --git a/shared/types/es-job-object.interface.ts b/shared/types/es-job-object.interface.ts new file mode 100644 index 0000000..75ffe74 --- /dev/null +++ b/shared/types/es-job-object.interface.ts @@ -0,0 +1,243 @@ +import { JobLine, RawJobDataObject } from "./raw-job-data.interface"; + +// ES Job Object with transformed fields +export interface ESJobObject extends Omit< + RawJobDataObject, + // Agent fields + | "cat_no" + | "ciecaid" + | "agt_co_id" + | "agt_co_nm" + | "agt_addr1" + | "agt_addr2" + | "agt_city" + | "agt_st" + | "agt_zip" + | "agt_ctry" + | "agt_ph1" + | "agt_ph1x" + | "agt_ph2" + | "agt_ph2x" + | "agt_fax" + | "agt_faxx" + | "agt_ct_ln" + | "agt_ct_fn" + | "agt_ct_ph" + | "agt_ct_phx" + | "agt_ea" + | "agt_lic_no" + // Adjustment fields + | "adj_g_disc" + | "adj_strdis" + | "adj_towdis" + // Assignment fields + | "asgn_date" + | "asgn_no" + | "asgn_type" + // Claim fields + | "clm_addr1" + | "clm_addr2" + | "clm_city" + | "clm_ct_fn" + | "clm_ct_ln" + | "clm_ct_ph" + | "clm_ct_phx" + | "clm_ctry" + | "clm_ea" + | "clm_fax" + | "clm_faxx" + | "clm_ofc_id" + | "clm_ofc_nm" + | "clm_ph1" + | "clm_ph1x" + | "clm_ph2" + | "clm_ph2x" + | "clm_st" + | "clm_title" + | "clm_zip" + | "clm_total" + // Misc fields + | "cust_pr" + | "date_estimated" + | "ded_status" + | "depreciation_taxes" + // Estimator fields + | "est_addr1" + | "est_addr2" + | "est_city" + | "est_co_nm" + | "est_ct_fn" + | "est_ct_ln" + | "est_ctry" + | "est_ea" + | "est_ph1" + | "est_st" + | "est_zip" + | "federal_tax_rate" + // Insurance fields + | "ins_addr1" + | "ins_addr2" + | "ins_city" + | "ins_co_id" + | "ins_ct_fn" + | "ins_ct_ln" + | "ins_ct_ph" + | "ins_ct_phx" + | "ins_ctry" + | "ins_ea" + | "ins_fax" + | "ins_faxx" + | "ins_ph1" + | "ins_ph1x" + | "ins_ph2" + | "ins_ph2x" + | "ins_st" + | "ins_title" + | "ins_zip" + | "insd_fax" + | "insd_faxx" + // Loss fields + | "kmin" + | "loss_cat" + | "loss_type" + // Owner fields + | "ownr_addr2" + | "ownr_co_nm" + | "ownr_ctry" + | "ownr_ea" + | "ownr_ph2" + | "ownr_st" + | "ownr_title" + | "ownr_zip" + // Payment fields + | "pay_amt" + | "pay_chknm" + | "pay_date" + | "pay_type" + | "payee_nms" + // Vehicle fields + | "plate_no" + | "plate_st" + | "policy_no" + // Rate fields + | "rate_la1" + | "rate_la2" + | "rate_la3" + | "rate_la4" + | "rate_laa" + | "rate_lab" + | "rate_lad" + | "rate_lae" + | "rate_laf" + | "rate_lag" + | "rate_lam" + | "rate_lar" + | "rate_las" + | "rate_lau" + | "rate_ma2s" + | "rate_ma2t" + | "rate_ma3s" + | "rate_mabl" + | "rate_macs" + | "rate_mahw" + | "rate_mapa" + | "rate_mash" + // Tax fields + | "tax_lbr_rt" + | "tax_levies_rt" + | "tax_paint_mat_rt" + | "tax_predis" + | "tax_prethr" + | "tax_pstthr" + | "tax_shop_mat_rt" + | "tax_str_rt" + | "tax_sub_rt" + | "tax_thramt" + | "tax_tow_rt" + // Additional vehicle fields + | "theft_ind" + | "v_color" + | "tlos_ind" + | "v_make_desc" + | "v_model_desc" + | "shopid" + | "est_system" + // Object fields + | "owner" + | "vehicle" + | "bodyshop" + | "area_of_damage" + | "joblines" + // CIECA fields + | "cieca_pft" + | "cieca_pfl" + | "cieca_pfm" + | "cieca_pfo" + | "cieca_stl" + | "cieca_ttl" + | "parts_tax_rates" + | "materials" +> { + // Fields added by the transformer + impact_1?: string; + impact_2?: string; + close_date: string | null; + created_at: string; + id: string; + group?: string; + group_verified?: boolean; + updated_at: string; + v_age: number; + v_type: string; + v_makedesc?: string; + v_model?: string; + supp_amt: number; + ro_number: string | null; + requires_reimport: boolean; + v_mileage: string; + id_pro_nam?: string; + g_ttl_amt: number; + source_system: string; + rf_ph1: string; + rf_zip: string; + association_switch: string; + sending_entity_id: string; + sending_entity_accept_terms_of_use: boolean; + + // Transformed arrays + joblines: Omit< + JobLine, + | "lbr_tax" + | "lbr_typ_j" + | "line_ref" + | "misc_sublt" + | "misc_tax" + | "prt_dsmk_m" + | "prt_dsmk_p" + | "tran_code" + | "unq_seq" + | "alt_co_id" + | "alt_overrd" + | "alt_part_i" + | "alt_partm" + | "bett_type" + | "bett_pctg" + | "bett_amt" + | "bett_tax" + | "op_code_desc" + | "paint_stg" + | "paint_tone" + >[]; + + totals: Array<{ + nt_hrs?: number; + t_amt?: number; + t_hrs?: number; + ttl_typecd?: string; + }>; + + rates: Array< + | { cal_prethr?: number; mat_type?: string } + | { lbr_desc?: string; lbr_rate?: number; lbr_type?: string } + >; +} diff --git a/shared/types/index.ts b/shared/types/index.ts new file mode 100644 index 0000000..ff7d76e --- /dev/null +++ b/shared/types/index.ts @@ -0,0 +1,2 @@ +export * from "./raw-job-data.interface"; +export * from "./es-job-object.interface"; diff --git a/shared/types/raw-job-data.interface.ts b/shared/types/raw-job-data.interface.ts new file mode 100644 index 0000000..4281599 --- /dev/null +++ b/shared/types/raw-job-data.interface.ts @@ -0,0 +1,312 @@ +import { UUID } from "crypto"; + +// Re-export interfaces needed for RawJobDataObject +// Note: The decoder interfaces would need to be moved to shared as well +// or we define the minimal structure here + +export interface RawJobDataObject { + // From DecodedEnv + insp_date?: string; + loss_date?: string; + rf_city?: string; + rf_zip?: string; + rf_st?: string; + rf_ln?: string; + rf_fn?: string; + rf_ph1?: string; + rf_ph2?: string; + rf_addr1?: string; + rf_ctry?: string; + ins_co_nm?: string; + clm_no?: string; + est_system?: string; + + // From other decoders + cat_no?: string; + ciecaid?: string; + agt_co_id?: string; + agt_co_nm?: string; + agt_addr1?: string; + agt_addr2?: string; + agt_city?: string; + agt_st?: string; + agt_zip?: string; + agt_ctry?: string; + agt_ph1?: string; + agt_ph1x?: string; + agt_ph2?: string; + agt_ph2x?: string; + agt_fax?: string; + agt_faxx?: string; + agt_ct_ln?: string; + agt_ct_fn?: string; + agt_ct_ph?: string; + agt_ct_phx?: string; + agt_ea?: string; + agt_lic_no?: string; + adj_g_disc?: number; + adj_strdis?: number; + adj_towdis?: number; + asgn_date?: string; + asgn_no?: string; + asgn_type?: string; + clm_addr1?: string; + clm_addr2?: string; + clm_city?: string; + clm_ct_fn?: string; + clm_ct_ln?: string; + clm_ct_ph?: string; + clm_ct_phx?: string; + clm_ctry?: string; + clm_ea?: string; + clm_fax?: string; + clm_faxx?: string; + clm_ofc_id?: string; + clm_ofc_nm?: string; + clm_ph1?: string; + clm_ph1x?: string; + clm_ph2?: string; + clm_ph2x?: string; + clm_st?: string; + clm_title?: string; + clm_zip?: string; + cust_pr?: string; + date_estimated?: string; + ded_status?: string; + depreciation_taxes?: number; + est_addr1?: string; + est_addr2?: string; + est_city?: string; + est_co_nm?: string; + est_ct_fn?: string; + est_ct_ln?: string; + est_ctry?: string; + est_ea?: string; + est_ph1?: string; + est_st?: string; + est_zip?: string; + federal_tax_rate?: number; + ins_addr1?: string; + ins_addr2?: string; + ins_city?: string; + ins_co_id?: string; + ins_ct_fn?: string; + ins_ct_ln?: string; + ins_ct_ph?: string; + ins_ct_phx?: string; + ins_ctry?: string; + ins_ea?: string; + ins_fax?: string; + ins_faxx?: string; + ins_ph1?: string; + ins_ph1x?: string; + ins_ph2?: string; + ins_ph2x?: string; + ins_st?: string; + ins_title?: string; + ins_zip?: string; + insd_fax?: string; + insd_faxx?: string; + kmin?: number; + loss_cat?: string; + loss_type?: string; + ownr_addr1?: string; + ownr_addr2?: string; + ownr_co_nm?: string; + ownr_ctry?: string; + ownr_ea?: string; + ownr_ph1?: string; + ownr_ph2?: string; + ownr_st?: string; + ownr_title?: string; + ownr_zip?: string; + ownr_ln?: string; + ownr_fn?: string; + ownr_city?: string; + pay_amt?: number; + pay_chknm?: string; + pay_date?: string; + pay_type?: string; + payee_nms?: string; + plate_no?: string; + plate_st?: string; + policy_no?: string; + rate_la1?: number; + rate_la2?: number; + rate_la3?: number; + rate_la4?: number; + rate_laa?: number; + rate_lab?: number; + rate_lad?: number; + rate_lae?: number; + rate_laf?: number; + rate_lag?: number; + rate_lam?: number; + rate_lar?: number; + rate_las?: number; + rate_lau?: number; + rate_ma2s?: number; + rate_ma2t?: number; + rate_ma3s?: number; + rate_mabl?: number; + rate_macs?: number; + rate_mahw?: number; + rate_mapa?: number; + rate_mash?: number; + tax_lbr_rt?: number; + tax_levies_rt?: number; + tax_paint_mat_rt?: number; + tax_predis?: number; + tax_prethr?: number; + tax_pstthr?: number; + tax_shop_mat_rt?: number; + tax_str_rt?: number; + tax_sub_rt?: number; + tax_thramt?: number; + tax_tow_rt?: number; + theft_ind?: boolean; + v_color?: string; + tlos_ind?: boolean; + v_make_desc?: string; + v_model_desc?: string; + v_year?: string; + + // Claimant fields + clmt_ln?: string; + clmt_fn?: string; + clmt_title?: string; + clmt_co_nm?: string; + clmt_addr1?: string; + clmt_addr2?: string; + clmt_city?: string; + clmt_st?: string; + clmt_zip?: string; + clmt_ctry?: string; + clmt_ph1?: string; + clmt_ph2?: string; + clmt_ea?: string; + + // Insured fields + insd_ln?: string; + insd_fn?: string; + insd_title?: string; + insd_co_nm?: string; + insd_addr1?: string; + insd_addr2?: string; + insd_city?: string; + insd_st?: string; + insd_zip?: string; + insd_ctry?: string; + insd_ph1?: string; + insd_ph2?: string; + insd_ea?: string; + + // Object fields + owner?: { + data?: Record; + }; + vehicle?: Record; + bodyshop?: Record; + area_of_damage?: { + impact1?: string; + impact2?: string; + }; + joblines?: { + data?: JobLine[]; + }; + clm_total?: number; + + // CIECA fields + cieca_pft?: CiecaPft; + cieca_pfl?: Record; + cieca_pfm?: CiecaPfm[]; + cieca_pfo?: CiecaPfo; + cieca_stl?: CiecaStl; + cieca_ttl?: CiecaTtl; + parts_tax_rates?: Record; + materials?: Record; + + vehicleid?: UUID; + shopid?: UUID; +} + +export interface JobLine { + line_no?: string; + line_ind?: string; + line_ref?: string; + tran_code?: string; + db_ref?: string; + unq_seq?: string; + line_desc?: string; + part_type?: string; + glass_flag?: boolean; + oem_partno?: string; + price_inc?: boolean; + alt_part_i?: boolean; + tax_part?: boolean; + db_price?: number; + act_price?: number; + price_j?: boolean; + cert_part?: boolean; + part_qty?: number; + alt_co_id?: string; + alt_partno?: string; + alt_overrd?: boolean; + alt_partm?: string; + prt_dsmk_p?: string; + prt_dsmk_m?: string; + mod_lbr_ty?: string; + db_hrs?: number; + mod_lb_hrs?: number; + lbr_inc?: boolean; + lbr_op?: string; + lbr_hrs_j?: boolean; + lbr_typ_j?: boolean; + lbr_op_j?: boolean; + paint_stg?: string; + paint_tone?: string; + lbr_tax?: boolean; + lbr_amt?: number; + misc_amt?: number; + misc_sublt?: string; + misc_tax?: boolean; + bett_type?: string; + bett_pctg?: string | number; + bett_amt?: number; + bett_tax?: boolean; + op_code_desc?: string; +} + +export interface CiecaPft { + data?: Record; +} + +export interface CiecaPfl { + lbr_desc?: string; + lbr_rate?: number; + lbr_type?: string; +} + +export interface CiecaPfm { + cal_prethr?: number; + matl_type?: string; +} + +export interface CiecaPfo { + data?: Record; +} + +export interface CiecaStl { + data?: Array<{ + nt_hrs?: number; + t_amt?: number; + t_hrs?: number; + ttl_typecd?: string; + }>; +} + +export interface CiecaTtl { + data?: { + supp_amt?: number; + }; +} diff --git a/src/main/estimate-scrubber/estimate-scrubber.ts b/src/main/estimate-scrubber/estimate-scrubber.ts index 66666dc..9da9161 100644 --- a/src/main/estimate-scrubber/estimate-scrubber.ts +++ b/src/main/estimate-scrubber/estimate-scrubber.ts @@ -6,7 +6,6 @@ import { promises as fsPromises } from "fs"; import path from "path"; import { RawJobDataObject } from "../decoder/decoder"; import store from "../store/store"; -import TransformJobForEstimateScrubber from "./es-transformer"; // Function to write job object to logs subfolder async function writeJobToLogsFolder(job, fileName): Promise { @@ -37,13 +36,13 @@ async function writeJobToLogsFolder(job, fileName): Promise { throw error; } } + async function ScrubEstimate({ job, }: { job: RawJobDataObject; }): Promise { - const transformedJob = await TransformJobForEstimateScrubber(job); //Job should be transformed server side. - + // No transformation here - send raw job to Lambda const currentChannel = autoUpdater.channel; let estimateScrubberUrl: string; switch (currentChannel) { @@ -67,29 +66,30 @@ async function ScrubEstimate({ try { const esApiKey = store.get("settings.esApiKey") as string; - //Perform data manipulation on the job object - if (!transformedJob) { + + if (!job) { console.error("No job provided to ScrubEstimate"); return; } - const fileName = `${esApiKey}-${transformedJob.clm_no}-${Date.now()}`; + const fileName = `${esApiKey}-${job.clm_no}-${Date.now()}`; // Write job object to logs subfolder try { - await writeJobToLogsFolder(transformedJob, fileName); + await writeJobToLogsFolder(job, fileName); } catch (error) { log.error("Failed to write job to logs folder:", error); // Continue with the rest of the function even if this fails } + // Send raw job to Lambda - transformation happens server-side const result = await axios.post(estimateScrubberUrl, { esApiKey, - estimate: transformedJob, - fileName, + rawJob: job, // Changed from 'estimate' to 'rawJob' }); - const { resultPDFUrl, reportIssueUrl } = result?.data ?? {}; + const { resultPDFUrl, reportIssueUrl, identified_item } = + result?.data ?? {}; // log.log("Estimate Scrubber Result:", result.data, resultPDFUrl); // const b = BrowserWindow.getAllWindows()[0]; diff --git a/tsconfig.node.json b/tsconfig.node.json index d7105fc..99ab9b8 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -7,7 +7,8 @@ "src/util/**/*", "src/interfaces/**/*", "tests/index.spec.ts", - "/resources/**/*" + "/resources/**/*", + "shared/**/*" ], "compilerOptions": { "resolveJsonModule": true,