From f58af61db160d9f3e6e14bb7347b71975c959108 Mon Sep 17 00:00:00 2001 From: Vatsal Goel <144617902+VatsalGoel3@users.noreply.github.com> Date: Sat, 8 Feb 2025 22:44:27 -0700 Subject: [PATCH 1/4] feat(parser): add TransferFamilySchema with type definitions, tests, and docs - Implemented TransferFamilySchema using Zod for AWS Transfer Family events. - Updated type definitions, package exports, and documentation. - Added unit tests and a test event JSON file to ensure validation. --- docs/utilities/parser.md | 1 + package-lock.json | 5 +- package.json | 3 + packages/batch/package.json | 66 +++------ packages/commons/package.json | 60 +++----- packages/idempotency/package.json | 108 ++++++-------- packages/jmespath/package.json | 68 ++++----- packages/logger/package.json | 94 +++++------- packages/metrics/package.json | 92 +++++------- packages/parameters/package.json | 136 +++++++----------- packages/parser/package.json | 8 ++ packages/parser/src/schemas/index.ts | 1 + .../parser/src/schemas/transfer-family.ts | 25 ++++ packages/parser/src/types/schema.ts | 4 + .../tests/events/transfer-family/base.json | 8 ++ .../tests/unit/schema/transfer-family.test.ts | 30 ++++ packages/tracer/package.json | 77 ++++------ 17 files changed, 340 insertions(+), 446 deletions(-) create mode 100644 packages/parser/src/schemas/transfer-family.ts create mode 100644 packages/parser/tests/events/transfer-family/base.json create mode 100644 packages/parser/tests/unit/schema/transfer-family.test.ts diff --git a/docs/utilities/parser.md b/docs/utilities/parser.md index 8b6e750cb2..e4dcd5dfdd 100644 --- a/docs/utilities/parser.md +++ b/docs/utilities/parser.md @@ -85,6 +85,7 @@ Parser comes with the following built-in schemas: | **SesSchema** | Lambda Event Source payload for Amazon Simple Email Service | | **SnsSchema** | Lambda Event Source payload for Amazon Simple Notification Service | | **SqsSchema** | Lambda Event Source payload for Amazon SQS | +| **TransferFamilySchema** | Lambda Event Source payload for AWS Transfer Family events | | **VpcLatticeSchema** | Lambda Event Source payload for Amazon VPC Lattice | | **VpcLatticeV2Schema** | Lambda Event Source payload for Amazon VPC Lattice v2 payload | diff --git a/package-lock.json b/package-lock.json index 316d5b4773..76ba34bac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,9 @@ "examples/app", "packages/event-handler" ], + "dependencies": { + "zod": "^3.24.1" + }, "devDependencies": { "@biomejs/biome": "^1.9.4", "@types/aws-lambda": "^8.10.147", @@ -15458,7 +15461,7 @@ "version": "3.24.1", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", - "devOptional": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 04db4550ec..16ab77de7a 100644 --- a/package.json +++ b/package.json @@ -78,5 +78,8 @@ "lerna": { "tar": "6.2.1" } + }, + "dependencies": { + "zod": "^3.24.1" } } diff --git a/packages/batch/package.json b/packages/batch/package.json index b66a1dc739..d4c5929270 100644 --- a/packages/batch/package.json +++ b/packages/batch/package.json @@ -6,27 +6,29 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/batch#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run", - "test:unit": "vitest --run", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "echo 'Not Implemented'", - "test:e2e:nodejs18x": "echo 'Not Implemented'", - "test:e2e:nodejs20x": "echo 'Not Implemented'", - "test:e2e:nodejs22x": "echo 'Not Implemented'", - "test:e2e": "echo 'Not Implemented'", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/batch#readme", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "batch", + "batch-processing", + "serverless", + "nodejs" + ], + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -51,29 +53,5 @@ "lib/esm/types.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "batch", - "batch-processing", - "serverless", - "nodejs" - ], - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing" } -} +} \ No newline at end of file diff --git a/packages/commons/package.json b/packages/commons/package.json index ea7a41d051..5b770e620a 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -6,25 +6,27 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/commons#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run", - "test:unit": "vitest --run", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "vitest --run tests/types --typecheck", - "test:e2e": "echo 'Not Applicable'", - "generateVersionFile": "echo \"// this file is auto generated, do not modify\nexport const PT_VERSION = '$(jq -r '.version' package.json)';\" > src/version.ts", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/commons#readme", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "serverless", + "nodejs" + ], + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -81,27 +83,5 @@ "lib/esm/types/index.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "serverless", - "nodejs" - ], - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing" } -} +} \ No newline at end of file diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 8e523a1247..595ef2bf1c 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -6,28 +6,48 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/idempotency#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run tests/unit", - "test:unit": "vitest --run tests/unit", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "echo 'Not Implemented'", - "test:unit:watch": "vitest tests/unit", - "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", - "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", - "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", - "test:e2e": "vitest --run tests/e2e", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/idempotency#readme", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "idempotency", + "serverless", + "nodejs" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1", + "@aws-lambda-powertools/jmespath": "^2.13.1" + }, + "peerDependencies": { + "@aws-sdk/client-dynamodb": ">=3.x", + "@aws-sdk/lib-dynamodb": ">=3.x", + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-dynamodb": { + "optional": true + }, + "@aws-sdk/lib-dynamodb": { + "optional": true + }, + "@middy/core": { + "optional": true + } + }, + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -84,51 +104,5 @@ "lib/esm/types/index.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1", - "@aws-lambda-powertools/jmespath": "^2.13.1" - }, - "peerDependencies": { - "@aws-sdk/client-dynamodb": ">=3.x", - "@aws-sdk/lib-dynamodb": ">=3.x", - "@middy/core": "4.x || 5.x || 6.x" - }, - "peerDependenciesMeta": { - "@aws-sdk/client-dynamodb": { - "optional": true - }, - "@aws-sdk/lib-dynamodb": { - "optional": true - }, - "@middy/core": { - "optional": true - } - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "idempotency", - "serverless", - "nodejs" - ], - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.743.0", - "@aws-sdk/lib-dynamodb": "^3.743.0", - "aws-sdk-client-mock": "^4.1.0" } -} +} \ No newline at end of file diff --git a/packages/jmespath/package.json b/packages/jmespath/package.json index 4f6832e3b6..b791dc18e8 100644 --- a/packages/jmespath/package.json +++ b/packages/jmespath/package.json @@ -6,24 +6,32 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run", - "test:unit": "vitest --run", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "echo 'Not applicable for this package'", - "test:e2e": "echo 'Not applicable for this package'", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "jmespath", + "serverless", + "typescript", + "nodejs" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1" + }, + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -64,29 +72,5 @@ "lib/esm/types.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "files": [ - "lib" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "jmespath", - "serverless", - "typescript", - "nodejs" - ] -} + } +} \ No newline at end of file diff --git a/packages/logger/package.json b/packages/logger/package.json index 5bd4ae1bcb..74a797b4d1 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -6,28 +6,41 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/logger#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run tests/unit", - "test:unit": "vitest --run tests/unit", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "echo 'Not Implemented'", - "test:unit:watch": "vitest tests/unit", - "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", - "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", - "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", - "test:e2e": "vitest --run tests/e2e", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/logger#readme", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "logger", + "logging", + "serverless", + "nodejs" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1", + "lodash.merge": "^4.6.2" + }, + "peerDependencies": { + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + } + }, + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -60,42 +73,5 @@ "lib/esm/types/index.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing", - "@types/lodash.merge": "^4.6.9" - }, - "peerDependencies": { - "@middy/core": "4.x || 5.x || 6.x" - }, - "peerDependenciesMeta": { - "@middy/core": { - "optional": true - } - }, - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1", - "lodash.merge": "^4.6.2" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "logger", - "logging", - "serverless", - "nodejs" - ] -} + } +} \ No newline at end of file diff --git a/packages/metrics/package.json b/packages/metrics/package.json index eedcdc92a5..2e59afe0cd 100644 --- a/packages/metrics/package.json +++ b/packages/metrics/package.json @@ -6,28 +6,39 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/metrics#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run tests/unit", - "test:unit": "vitest --run tests/unit", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "echo 'Not Implemented'", - "test:unit:watch": "vitest tests/unit", - "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", - "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", - "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", - "test:e2e": "vitest --run tests/e2e", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/metrics#readme", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "metrics", + "serverless", + "nodejs" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1" + }, + "peerDependencies": { + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + } + }, + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -60,42 +71,5 @@ "lib/esm/types/index.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-cloudwatch": "^3.743.0", - "@types/promise-retry": "^1.1.3", - "promise-retry": "^2.0.1" - }, - "peerDependencies": { - "@middy/core": "4.x || 5.x || 6.x" - }, - "peerDependenciesMeta": { - "@middy/core": { - "optional": true - } - }, - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "metrics", - "serverless", - "nodejs" - ] -} + } +} \ No newline at end of file diff --git a/packages/parameters/package.json b/packages/parameters/package.json index 5d0d38f7ce..06d041dba9 100644 --- a/packages/parameters/package.json +++ b/packages/parameters/package.json @@ -6,28 +6,60 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/parameters#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run tests/unit", - "test:unit": "vitest --run tests/unit", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "vitest --run tests/types --typecheck", - "test:unit:watch": "vitest tests/unit", - "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", - "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", - "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", - "test:e2e": "vitest --run tests/e2e", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/parameters#readme", - "license": "MIT-0", + "keywords": [ + "aws", + "lambda", + "powertools", + "ssm", + "secrets", + "serverless", + "nodejs" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1" + }, + "peerDependencies": { + "@aws-sdk/client-appconfigdata": ">=3.x", + "@aws-sdk/client-dynamodb": ">=3.x", + "@aws-sdk/client-secrets-manager": ">=3.x", + "@aws-sdk/client-ssm": ">=3.x", + "@aws-sdk/util-dynamodb": ">=3.x", + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + }, + "@aws-sdk/client-appconfigdata": { + "optional": true + }, + "@aws-sdk/client-dynamodb": { + "optional": true + }, + "@aws-sdk/client-secrets-manager": { + "optional": true + }, + "@aws-sdk/client-ssm": { + "optional": true + }, + "@aws-sdk/util-dynamodb": { + "optional": true + } + }, + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -132,67 +164,5 @@ "lib/esm/errors.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "ssm", - "secrets", - "serverless", - "nodejs" - ], - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-appconfigdata": "^3.743.0", - "@aws-sdk/client-dynamodb": "^3.743.0", - "@aws-sdk/client-secrets-manager": "^3.743.0", - "@aws-sdk/client-ssm": "^3.743.0", - "@aws-sdk/util-dynamodb": "^3.743.0", - "@smithy/util-base64": "^4.0.0", - "aws-sdk-client-mock": "^4.1.0" - }, - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1" - }, - "peerDependencies": { - "@aws-sdk/client-appconfigdata": ">=3.x", - "@aws-sdk/client-dynamodb": ">=3.x", - "@aws-sdk/client-secrets-manager": ">=3.x", - "@aws-sdk/client-ssm": ">=3.x", - "@aws-sdk/util-dynamodb": ">=3.x", - "@middy/core": "4.x || 5.x || 6.x" - }, - "peerDependenciesMeta": { - "@middy/core": { - "optional": true - }, - "@aws-sdk/client-appconfigdata": { - "optional": true - }, - "@aws-sdk/client-dynamodb": { - "optional": true - }, - "@aws-sdk/client-secrets-manager": { - "optional": true - }, - "@aws-sdk/client-ssm": { - "optional": true - }, - "@aws-sdk/util-dynamodb": { - "optional": true - } } -} +} \ No newline at end of file diff --git a/packages/parser/package.json b/packages/parser/package.json index e822c086b4..a77b11e797 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -112,6 +112,10 @@ "require": "./lib/cjs/schemas/sqs.js", "import": "./lib/esm/schemas/sqs.js" }, + "./schemas/transfer-family": { + "require": "./lib/cjs/schemas/transfer-family.js", + "import": "./lib/esm/schemas/transfer-family.js" + }, "./schemas/vpc-lattice": { "require": "./lib/cjs/schemas/vpc-lattice.js", "import": "./lib/esm/schemas/vpc-lattice.js" @@ -323,6 +327,10 @@ "./lib/cjs/envelopes/sqs.d.ts", "./lib/esm/envelopes/sqs.d.ts" ], + "schemas/transfer-family": [ + "./lib/cjs/schemas/transfer-family.d.ts", + "./lib/esm/schemas/transfer-family.d.ts" + ], "envelopes/vpc-lattice": [ "./lib/cjs/envelopes/vpc-lattice.d.ts", "./lib/esm/envelopes/vpc-lattice.d.ts" diff --git a/packages/parser/src/schemas/index.ts b/packages/parser/src/schemas/index.ts index 266a1251fb..18f3a35424 100644 --- a/packages/parser/src/schemas/index.ts +++ b/packages/parser/src/schemas/index.ts @@ -61,5 +61,6 @@ export { SnsNotificationSchema, } from './sns.js'; export { SqsSchema, SqsRecordSchema } from './sqs.js'; +export { TransferFamilySchema } from './transfer-family.js'; export { VpcLatticeSchema } from './vpc-lattice.js'; export { VpcLatticeV2Schema } from './vpc-latticev2.js'; diff --git a/packages/parser/src/schemas/transfer-family.ts b/packages/parser/src/schemas/transfer-family.ts new file mode 100644 index 0000000000..a6372c1c58 --- /dev/null +++ b/packages/parser/src/schemas/transfer-family.ts @@ -0,0 +1,25 @@ +import { z } from 'zod'; + +/** + * TransferFamilySchema validates events coming from AWS Transfer Family. + */ +export const TransferFamilySchema = z.object({ + username: z.string(), + password: z.string(), + protocol: z.string(), + serverId: z.string(), + // Validates that sourceIp is a valid IPv4/IPv6 string. Adjust as needed. + sourceIp: z + .string() + .refine( + (ip) => + /^(\d{1,3}\.){3}\d{1,3}$/.test(ip) || + !!ip.match(/^([0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}$/i), + { message: 'Invalid IP address' } + ), +}); + +/** + * Type alias for TransferFamilyEvent, inferred from this schema. + */ +export type TransferFamilyEvent = z.infer; diff --git a/packages/parser/src/types/schema.ts b/packages/parser/src/types/schema.ts index 5f17f4b6bd..37395bc994 100644 --- a/packages/parser/src/types/schema.ts +++ b/packages/parser/src/types/schema.ts @@ -37,6 +37,7 @@ import type { SnsSqsNotificationSchema, SqsRecordSchema, SqsSchema, + TransferFamilySchema, VpcLatticeSchema, VpcLatticeV2Schema, } from '../schemas/index.js'; @@ -129,6 +130,8 @@ type SqsEvent = z.infer; type SqsRecord = z.infer; +type TransferFamilyEvent = z.infer; + type VpcLatticeEvent = z.infer; type VpcLatticeEventV2 = z.infer; @@ -171,6 +174,7 @@ export type { SnsRecord, SqsEvent, SqsRecord, + TransferFamilyEvent, VpcLatticeEvent, VpcLatticeEventV2, }; diff --git a/packages/parser/tests/events/transfer-family/base.json b/packages/parser/tests/events/transfer-family/base.json new file mode 100644 index 0000000000..e0bf0bd4ae --- /dev/null +++ b/packages/parser/tests/events/transfer-family/base.json @@ -0,0 +1,8 @@ +{ + "username": "value", + "password": "value", + "protocol": "SFTP", + "serverId": "s-abcd123456", + "sourceIp": "192.168.0.100" + } + \ No newline at end of file diff --git a/packages/parser/tests/unit/schema/transfer-family.test.ts b/packages/parser/tests/unit/schema/transfer-family.test.ts new file mode 100644 index 0000000000..059445414b --- /dev/null +++ b/packages/parser/tests/unit/schema/transfer-family.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, it } from 'vitest'; // or jest, depending on the project configuration +import { TransferFamilySchema } from '../../../src/schemas/transfer-family'; + +describe('TransferFamilySchema', () => { + it('should validate a valid TransferFamily event', () => { + const validEvent = { + username: 'testUser', + password: 'testPass', + protocol: 'SFTP', + serverId: 's-abcd123456', + sourceIp: '192.168.0.100', + }; + + // This should not throw an error if the event is valid. + expect(() => TransferFamilySchema.parse(validEvent)).not.toThrow(); + }); + + it('should throw an error for an invalid TransferFamily event', () => { + const invalidEvent = { + username: 'testUser', + // missing password + protocol: 'SFTP', + serverId: 's-abcd123456', + sourceIp: 'invalid-ip', + }; + + // This should throw an error due to missing fields / invalid IP. + expect(() => TransferFamilySchema.parse(invalidEvent)).toThrow(); + }); +}); diff --git a/packages/tracer/package.json b/packages/tracer/package.json index 13b16b01fb..d1f35a175c 100644 --- a/packages/tracer/package.json +++ b/packages/tracer/package.json @@ -6,32 +6,27 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "publishConfig": { - "access": "public" + "license": "MIT-0", + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/tracer#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" }, - "scripts": { - "test": "vitest --run tests/unit", - "test:unit": "vitest --run tests/unit", - "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", - "test:unit:types": "echo 'Not Implemented'", - "test:unit:watch": "vitest tests/unit", - "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", - "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", - "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", - "test:e2e": "vitest --run tests/e2e", - "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", - "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "build": "npm run build:esm & npm run build:cjs", - "lint": "biome lint .", - "lint:fix": "biome check --write .", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/tracer#readme", - "license": "MIT-0", - "devDependencies": { - "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.743.0", - "@aws-sdk/client-xray": "^3.743.0" + "keywords": [ + "aws", + "lambda", + "powertools", + "tracer", + "tracing", + "serverless", + "nodejs" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1", + "aws-xray-sdk-core": "^3.10.3" }, "peerDependencies": { "@middy/core": "4.x || 5.x || 6.x" @@ -41,6 +36,11 @@ "optional": true } }, + "main": "./lib/cjs/index.js", + "types": "./lib/cjs/index.d.ts", + "files": [ + "lib" + ], "type": "module", "exports": { ".": { @@ -73,30 +73,5 @@ "lib/esm/types/index.d.ts" ] } - }, - "types": "./lib/cjs/index.d.ts", - "main": "./lib/cjs/index.js", - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1", - "aws-xray-sdk-core": "^3.10.3" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "tracer", - "tracing", - "serverless", - "nodejs" - ] -} + } +} \ No newline at end of file From b904c85aaba942c3e05b88e7c2133de1a90a60d8 Mon Sep 17 00:00:00 2001 From: Vatsal Goel <144617902+VatsalGoel3@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:24:21 -0700 Subject: [PATCH 2/4] fix: revert unintended changes to package.json, package-lock.json --- package-lock.json | 5 +---- package.json | 3 --- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76ba34bac4..316d5b4773 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,9 +24,6 @@ "examples/app", "packages/event-handler" ], - "dependencies": { - "zod": "^3.24.1" - }, "devDependencies": { "@biomejs/biome": "^1.9.4", "@types/aws-lambda": "^8.10.147", @@ -15461,7 +15458,7 @@ "version": "3.24.1", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", - "license": "MIT", + "devOptional": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 16ab77de7a..04db4550ec 100644 --- a/package.json +++ b/package.json @@ -78,8 +78,5 @@ "lerna": { "tar": "6.2.1" } - }, - "dependencies": { - "zod": "^3.24.1" } } From 94d2e8999bae1c0a61ba87fd38e41dc508aaf3fb Mon Sep 17 00:00:00 2001 From: Vatsal Goel <144617902+VatsalGoel3@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:30:06 -0700 Subject: [PATCH 3/4] fix: revert all unintended package.json changes to match main --- packages/batch/package.json | 66 ++++++++++----- packages/commons/package.json | 60 ++++++++----- packages/idempotency/package.json | 108 +++++++++++++++--------- packages/jmespath/package.json | 68 +++++++++------ packages/logger/package.json | 94 +++++++++++++-------- packages/metrics/package.json | 92 ++++++++++++-------- packages/parameters/package.json | 136 ++++++++++++++++++------------ packages/parser/package.json | 8 -- packages/tracer/package.json | 77 +++++++++++------ 9 files changed, 445 insertions(+), 264 deletions(-) diff --git a/packages/batch/package.json b/packages/batch/package.json index d4c5929270..b66a1dc739 100644 --- a/packages/batch/package.json +++ b/packages/batch/package.json @@ -6,29 +6,27 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/batch#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + "publishConfig": { + "access": "public" }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + "scripts": { + "test": "vitest --run", + "test:unit": "vitest --run", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "echo 'Not Implemented'", + "test:e2e:nodejs18x": "echo 'Not Implemented'", + "test:e2e:nodejs20x": "echo 'Not Implemented'", + "test:e2e:nodejs22x": "echo 'Not Implemented'", + "test:e2e": "echo 'Not Implemented'", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "keywords": [ - "aws", - "lambda", - "powertools", - "batch", - "batch-processing", - "serverless", - "nodejs" - ], - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/batch#readme", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -53,5 +51,29 @@ "lib/esm/types.d.ts" ] } + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "batch", + "batch-processing", + "serverless", + "nodejs" + ], + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing" } -} \ No newline at end of file +} diff --git a/packages/commons/package.json b/packages/commons/package.json index 5b770e620a..ea7a41d051 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -6,27 +6,25 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/commons#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + "publishConfig": { + "access": "public" }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + "scripts": { + "test": "vitest --run", + "test:unit": "vitest --run", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "vitest --run tests/types --typecheck", + "test:e2e": "echo 'Not Applicable'", + "generateVersionFile": "echo \"// this file is auto generated, do not modify\nexport const PT_VERSION = '$(jq -r '.version' package.json)';\" > src/version.ts", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "keywords": [ - "aws", - "lambda", - "powertools", - "serverless", - "nodejs" - ], - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/commons#readme", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -83,5 +81,27 @@ "lib/esm/types/index.d.ts" ] } + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "serverless", + "nodejs" + ], + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing" } -} \ No newline at end of file +} diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 595ef2bf1c..8e523a1247 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -6,48 +6,28 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/idempotency#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "idempotency", - "serverless", - "nodejs" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1", - "@aws-lambda-powertools/jmespath": "^2.13.1" - }, - "peerDependencies": { - "@aws-sdk/client-dynamodb": ">=3.x", - "@aws-sdk/lib-dynamodb": ">=3.x", - "@middy/core": "4.x || 5.x || 6.x" + "publishConfig": { + "access": "public" }, - "peerDependenciesMeta": { - "@aws-sdk/client-dynamodb": { - "optional": true - }, - "@aws-sdk/lib-dynamodb": { - "optional": true - }, - "@middy/core": { - "optional": true - } + "scripts": { + "test": "vitest --run tests/unit", + "test:unit": "vitest --run tests/unit", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "echo 'Not Implemented'", + "test:unit:watch": "vitest tests/unit", + "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", + "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", + "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", + "test:e2e": "vitest --run tests/e2e", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/idempotency#readme", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -104,5 +84,51 @@ "lib/esm/types/index.d.ts" ] } + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1", + "@aws-lambda-powertools/jmespath": "^2.13.1" + }, + "peerDependencies": { + "@aws-sdk/client-dynamodb": ">=3.x", + "@aws-sdk/lib-dynamodb": ">=3.x", + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-dynamodb": { + "optional": true + }, + "@aws-sdk/lib-dynamodb": { + "optional": true + }, + "@middy/core": { + "optional": true + } + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "idempotency", + "serverless", + "nodejs" + ], + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing", + "@aws-sdk/client-dynamodb": "^3.743.0", + "@aws-sdk/lib-dynamodb": "^3.743.0", + "aws-sdk-client-mock": "^4.1.0" } -} \ No newline at end of file +} diff --git a/packages/jmespath/package.json b/packages/jmespath/package.json index b791dc18e8..4f6832e3b6 100644 --- a/packages/jmespath/package.json +++ b/packages/jmespath/package.json @@ -6,32 +6,24 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + "publishConfig": { + "access": "public" }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + "scripts": { + "test": "vitest --run", + "test:unit": "vitest --run", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "echo 'Not applicable for this package'", + "test:e2e": "echo 'Not applicable for this package'", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "keywords": [ - "aws", - "lambda", - "powertools", - "jmespath", - "serverless", - "typescript", - "nodejs" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1" - }, - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -72,5 +64,29 @@ "lib/esm/types.d.ts" ] } - } -} \ No newline at end of file + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "jmespath", + "serverless", + "typescript", + "nodejs" + ] +} diff --git a/packages/logger/package.json b/packages/logger/package.json index 74a797b4d1..5bd4ae1bcb 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -6,41 +6,28 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/logger#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + "publishConfig": { + "access": "public" }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + "scripts": { + "test": "vitest --run tests/unit", + "test:unit": "vitest --run tests/unit", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "echo 'Not Implemented'", + "test:unit:watch": "vitest tests/unit", + "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", + "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", + "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", + "test:e2e": "vitest --run tests/e2e", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "keywords": [ - "aws", - "lambda", - "powertools", - "logger", - "logging", - "serverless", - "nodejs" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1", - "lodash.merge": "^4.6.2" - }, - "peerDependencies": { - "@middy/core": "4.x || 5.x || 6.x" - }, - "peerDependenciesMeta": { - "@middy/core": { - "optional": true - } - }, - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/logger#readme", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -73,5 +60,42 @@ "lib/esm/types/index.d.ts" ] } - } -} \ No newline at end of file + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing", + "@types/lodash.merge": "^4.6.9" + }, + "peerDependencies": { + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + } + }, + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1", + "lodash.merge": "^4.6.2" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "logger", + "logging", + "serverless", + "nodejs" + ] +} diff --git a/packages/metrics/package.json b/packages/metrics/package.json index 2e59afe0cd..eedcdc92a5 100644 --- a/packages/metrics/package.json +++ b/packages/metrics/package.json @@ -6,39 +6,28 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/metrics#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + "publishConfig": { + "access": "public" }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + "scripts": { + "test": "vitest --run tests/unit", + "test:unit": "vitest --run tests/unit", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "echo 'Not Implemented'", + "test:unit:watch": "vitest tests/unit", + "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", + "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", + "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", + "test:e2e": "vitest --run tests/e2e", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "keywords": [ - "aws", - "lambda", - "powertools", - "metrics", - "serverless", - "nodejs" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1" - }, - "peerDependencies": { - "@middy/core": "4.x || 5.x || 6.x" - }, - "peerDependenciesMeta": { - "@middy/core": { - "optional": true - } - }, - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/metrics#readme", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -71,5 +60,42 @@ "lib/esm/types/index.d.ts" ] } - } -} \ No newline at end of file + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing", + "@aws-sdk/client-cloudwatch": "^3.743.0", + "@types/promise-retry": "^1.1.3", + "promise-retry": "^2.0.1" + }, + "peerDependencies": { + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + } + }, + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "metrics", + "serverless", + "nodejs" + ] +} diff --git a/packages/parameters/package.json b/packages/parameters/package.json index 06d041dba9..5d0d38f7ce 100644 --- a/packages/parameters/package.json +++ b/packages/parameters/package.json @@ -6,60 +6,28 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/parameters#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" - }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "ssm", - "secrets", - "serverless", - "nodejs" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1" - }, - "peerDependencies": { - "@aws-sdk/client-appconfigdata": ">=3.x", - "@aws-sdk/client-dynamodb": ">=3.x", - "@aws-sdk/client-secrets-manager": ">=3.x", - "@aws-sdk/client-ssm": ">=3.x", - "@aws-sdk/util-dynamodb": ">=3.x", - "@middy/core": "4.x || 5.x || 6.x" + "publishConfig": { + "access": "public" }, - "peerDependenciesMeta": { - "@middy/core": { - "optional": true - }, - "@aws-sdk/client-appconfigdata": { - "optional": true - }, - "@aws-sdk/client-dynamodb": { - "optional": true - }, - "@aws-sdk/client-secrets-manager": { - "optional": true - }, - "@aws-sdk/client-ssm": { - "optional": true - }, - "@aws-sdk/util-dynamodb": { - "optional": true - } + "scripts": { + "test": "vitest --run tests/unit", + "test:unit": "vitest --run tests/unit", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "vitest --run tests/types --typecheck", + "test:unit:watch": "vitest tests/unit", + "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", + "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", + "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", + "test:e2e": "vitest --run tests/e2e", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/parameters#readme", + "license": "MIT-0", "type": "module", "exports": { ".": { @@ -164,5 +132,67 @@ "lib/esm/errors.d.ts" ] } + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "ssm", + "secrets", + "serverless", + "nodejs" + ], + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing", + "@aws-sdk/client-appconfigdata": "^3.743.0", + "@aws-sdk/client-dynamodb": "^3.743.0", + "@aws-sdk/client-secrets-manager": "^3.743.0", + "@aws-sdk/client-ssm": "^3.743.0", + "@aws-sdk/util-dynamodb": "^3.743.0", + "@smithy/util-base64": "^4.0.0", + "aws-sdk-client-mock": "^4.1.0" + }, + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1" + }, + "peerDependencies": { + "@aws-sdk/client-appconfigdata": ">=3.x", + "@aws-sdk/client-dynamodb": ">=3.x", + "@aws-sdk/client-secrets-manager": ">=3.x", + "@aws-sdk/client-ssm": ">=3.x", + "@aws-sdk/util-dynamodb": ">=3.x", + "@middy/core": "4.x || 5.x || 6.x" + }, + "peerDependenciesMeta": { + "@middy/core": { + "optional": true + }, + "@aws-sdk/client-appconfigdata": { + "optional": true + }, + "@aws-sdk/client-dynamodb": { + "optional": true + }, + "@aws-sdk/client-secrets-manager": { + "optional": true + }, + "@aws-sdk/client-ssm": { + "optional": true + }, + "@aws-sdk/util-dynamodb": { + "optional": true + } } -} \ No newline at end of file +} diff --git a/packages/parser/package.json b/packages/parser/package.json index a77b11e797..e822c086b4 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -112,10 +112,6 @@ "require": "./lib/cjs/schemas/sqs.js", "import": "./lib/esm/schemas/sqs.js" }, - "./schemas/transfer-family": { - "require": "./lib/cjs/schemas/transfer-family.js", - "import": "./lib/esm/schemas/transfer-family.js" - }, "./schemas/vpc-lattice": { "require": "./lib/cjs/schemas/vpc-lattice.js", "import": "./lib/esm/schemas/vpc-lattice.js" @@ -327,10 +323,6 @@ "./lib/cjs/envelopes/sqs.d.ts", "./lib/esm/envelopes/sqs.d.ts" ], - "schemas/transfer-family": [ - "./lib/cjs/schemas/transfer-family.d.ts", - "./lib/esm/schemas/transfer-family.d.ts" - ], "envelopes/vpc-lattice": [ "./lib/cjs/envelopes/vpc-lattice.d.ts", "./lib/esm/envelopes/vpc-lattice.d.ts" diff --git a/packages/tracer/package.json b/packages/tracer/package.json index d1f35a175c..13b16b01fb 100644 --- a/packages/tracer/package.json +++ b/packages/tracer/package.json @@ -6,27 +6,32 @@ "name": "Amazon Web Services", "url": "https://aws.amazon.com" }, - "license": "MIT-0", - "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/tracer#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + "publishConfig": { + "access": "public" }, - "bugs": { - "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + "scripts": { + "test": "vitest --run tests/unit", + "test:unit": "vitest --run tests/unit", + "test:unit:coverage": "vitest --run tests/unit --coverage.enabled --coverage.thresholds.100 --coverage.include='src/**'", + "test:unit:types": "echo 'Not Implemented'", + "test:unit:watch": "vitest tests/unit", + "test:e2e:nodejs18x": "RUNTIME=nodejs18x vitest --run tests/e2e", + "test:e2e:nodejs20x": "RUNTIME=nodejs20x vitest --run tests/e2e", + "test:e2e:nodejs22x": "RUNTIME=nodejs22x vitest --run tests/e2e", + "test:e2e": "vitest --run tests/e2e", + "build:cjs": "tsc --build tsconfig.json && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --build tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json", + "build": "npm run build:esm & npm run build:cjs", + "lint": "biome lint .", + "lint:fix": "biome check --write .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." }, - "keywords": [ - "aws", - "lambda", - "powertools", - "tracer", - "tracing", - "serverless", - "nodejs" - ], - "dependencies": { - "@aws-lambda-powertools/commons": "^2.13.1", - "aws-xray-sdk-core": "^3.10.3" + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/tracer#readme", + "license": "MIT-0", + "devDependencies": { + "@aws-lambda-powertools/testing-utils": "file:../testing", + "@aws-sdk/client-dynamodb": "^3.743.0", + "@aws-sdk/client-xray": "^3.743.0" }, "peerDependencies": { "@middy/core": "4.x || 5.x || 6.x" @@ -36,11 +41,6 @@ "optional": true } }, - "main": "./lib/cjs/index.js", - "types": "./lib/cjs/index.d.ts", - "files": [ - "lib" - ], "type": "module", "exports": { ".": { @@ -73,5 +73,30 @@ "lib/esm/types/index.d.ts" ] } - } -} \ No newline at end of file + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/aws-powertools/powertools-lambda-typescript.git" + }, + "bugs": { + "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" + }, + "dependencies": { + "@aws-lambda-powertools/commons": "^2.13.1", + "aws-xray-sdk-core": "^3.10.3" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "tracer", + "tracing", + "serverless", + "nodejs" + ] +} From 41a172534aa836fc1f662cc060ed4313b80848c5 Mon Sep 17 00:00:00 2001 From: Vatsal Goel <144617902+VatsalGoel3@users.noreply.github.com> Date: Sun, 9 Feb 2025 22:26:10 -0700 Subject: [PATCH 4/4] fix(parser): apply requested changes for TransferFamilySchema --- packages/parser/package.json | 8 +++++ .../parser/src/schemas/transfer-family.ts | 32 +++++++++-------- packages/parser/src/types/index.ts | 1 + .../tests/unit/schema/transfer-family.test.ts | 35 +++++++++++-------- 4 files changed, 47 insertions(+), 29 deletions(-) diff --git a/packages/parser/package.json b/packages/parser/package.json index e822c086b4..a77b11e797 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -112,6 +112,10 @@ "require": "./lib/cjs/schemas/sqs.js", "import": "./lib/esm/schemas/sqs.js" }, + "./schemas/transfer-family": { + "require": "./lib/cjs/schemas/transfer-family.js", + "import": "./lib/esm/schemas/transfer-family.js" + }, "./schemas/vpc-lattice": { "require": "./lib/cjs/schemas/vpc-lattice.js", "import": "./lib/esm/schemas/vpc-lattice.js" @@ -323,6 +327,10 @@ "./lib/cjs/envelopes/sqs.d.ts", "./lib/esm/envelopes/sqs.d.ts" ], + "schemas/transfer-family": [ + "./lib/cjs/schemas/transfer-family.d.ts", + "./lib/esm/schemas/transfer-family.d.ts" + ], "envelopes/vpc-lattice": [ "./lib/cjs/envelopes/vpc-lattice.d.ts", "./lib/esm/envelopes/vpc-lattice.d.ts" diff --git a/packages/parser/src/schemas/transfer-family.ts b/packages/parser/src/schemas/transfer-family.ts index a6372c1c58..145a45d43a 100644 --- a/packages/parser/src/schemas/transfer-family.ts +++ b/packages/parser/src/schemas/transfer-family.ts @@ -1,25 +1,29 @@ import { z } from 'zod'; /** + * + * Zod schema for AWS Transfer Family events. + * + * @example + * ```json + * { + * "username": "testUser", + * "password": "testPass", + * "protocol": "SFTP", + * "serverId": "s-abcd123456", + * "sourceIp": "192.168.0.100" + * } + * ``` + * * TransferFamilySchema validates events coming from AWS Transfer Family. + * */ -export const TransferFamilySchema = z.object({ +const TransferFamilySchema = z.object({ username: z.string(), password: z.string(), protocol: z.string(), serverId: z.string(), - // Validates that sourceIp is a valid IPv4/IPv6 string. Adjust as needed. - sourceIp: z - .string() - .refine( - (ip) => - /^(\d{1,3}\.){3}\d{1,3}$/.test(ip) || - !!ip.match(/^([0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}$/i), - { message: 'Invalid IP address' } - ), + sourceIp: z.string().ip(), }); -/** - * Type alias for TransferFamilyEvent, inferred from this schema. - */ -export type TransferFamilyEvent = z.infer; +export { TransferFamilySchema }; diff --git a/packages/parser/src/types/index.ts b/packages/parser/src/types/index.ts index e4f331e88b..924698b278 100644 --- a/packages/parser/src/types/index.ts +++ b/packages/parser/src/types/index.ts @@ -38,6 +38,7 @@ export type { SnsEvent, SnsSqsNotification, SqsEvent, + TransferFamilyEvent, VpcLatticeEvent, VpcLatticeEventV2, } from './schema.js'; diff --git a/packages/parser/tests/unit/schema/transfer-family.test.ts b/packages/parser/tests/unit/schema/transfer-family.test.ts index 059445414b..f6041433cc 100644 --- a/packages/parser/tests/unit/schema/transfer-family.test.ts +++ b/packages/parser/tests/unit/schema/transfer-family.test.ts @@ -1,30 +1,35 @@ -import { describe, expect, it } from 'vitest'; // or jest, depending on the project configuration +import { describe, expect, it } from 'vitest'; import { TransferFamilySchema } from '../../../src/schemas/transfer-family'; +import type { TransferFamilyEvent } from '../../../src/types/schema.js'; +import { getTestEvent } from '../helpers/utils'; -describe('TransferFamilySchema', () => { - it('should validate a valid TransferFamily event', () => { - const validEvent = { - username: 'testUser', - password: 'testPass', - protocol: 'SFTP', - serverId: 's-abcd123456', - sourceIp: '192.168.0.100', - }; +describe('Schema: TransferFamily', () => { + const baseEvent = getTestEvent({ + eventsPath: 'transfer-family', + filename: 'base', + }); + + it('parses a valid TransferFamily event', () => { + // Prepare + const event = structuredClone(baseEvent); + + // Act + const result = TransferFamilySchema.parse(event); - // This should not throw an error if the event is valid. - expect(() => TransferFamilySchema.parse(validEvent)).not.toThrow(); + // Assess + expect(result).toStrictEqual(event); }); - it('should throw an error for an invalid TransferFamily event', () => { + it('throws if the event is not a valid TransferFamily event', () => { + // Prepare const invalidEvent = { username: 'testUser', - // missing password protocol: 'SFTP', serverId: 's-abcd123456', sourceIp: 'invalid-ip', }; - // This should throw an error due to missing fields / invalid IP. + // Act & Assess expect(() => TransferFamilySchema.parse(invalidEvent)).toThrow(); }); });