diff --git a/lerna.json b/lerna.json index 4ddb451f9e..48ef50e999 100644 --- a/lerna.json +++ b/lerna.json @@ -8,6 +8,7 @@ "packages/idempotency", "packages/batch", "packages/testing", + "packages/jmespath", "examples/cdk", "examples/sam", "layers", @@ -16,4 +17,4 @@ "version": "2.0.2", "npmClient": "npm", "message": "chore(release): %s [skip ci]" -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f0cf618927..51c442979c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "packages/idempotency", "packages/batch", "packages/testing", + "packages/jmespath", "docs/snippets", "layers", "examples/cdk", @@ -292,6 +293,10 @@ "resolved": "packages/idempotency", "link": true }, + "node_modules/@aws-lambda-powertools/jmespath": { + "resolved": "packages/jmespath", + "link": true + }, "node_modules/@aws-lambda-powertools/logger": { "resolved": "packages/logger", "link": true @@ -17202,6 +17207,14 @@ } } }, + "packages/jmespath": { + "name": "@aws-lambda-powertools/jmespath", + "version": "2.0.2", + "license": "MIT-0", + "dependencies": { + "@aws-lambda-powertools/commons": "^2.0.2" + } + }, "packages/logger": { "name": "@aws-lambda-powertools/logger", "version": "2.0.2", diff --git a/package.json b/package.json index 83a79ec13a..ab1a0d6d40 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "packages/idempotency", "packages/batch", "packages/testing", + "packages/jmespath", "docs/snippets", "layers", "examples/cdk", diff --git a/packages/jmespath/jest.config.cjs b/packages/jmespath/jest.config.cjs new file mode 100644 index 0000000000..9b345debe4 --- /dev/null +++ b/packages/jmespath/jest.config.cjs @@ -0,0 +1,34 @@ +module.exports = { + displayName: { + name: 'Powertools for AWS Lambda (TypeScript) utility: JMESPATH', + color: 'purple', + }, + runner: 'groups', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + transform: { + '^.+\\.ts?$': 'ts-jest', + }, + moduleFileExtensions: ['js', 'ts'], + collectCoverageFrom: ['**/src/**/*.ts', '!**/node_modules/**'], + testMatch: ['**/?(*.)+(spec|test).ts'], + roots: ['/src', '/tests'], + testPathIgnorePatterns: ['/node_modules/'], + testEnvironment: 'node', + coveragePathIgnorePatterns: [ + '/node_modules/', + 'src/index.ts', + 'src/types/index.ts', + ], + coverageThreshold: { + global: { + statements: 100, + branches: 100, + functions: 100, + lines: 100, + }, + }, + coverageReporters: ['json-summary', 'text', 'lcov'], + setupFiles: ['/tests/helpers/populateEnvironmentVariables.ts'], +}; diff --git a/packages/jmespath/package.json b/packages/jmespath/package.json new file mode 100644 index 0000000000..b63353c6b0 --- /dev/null +++ b/packages/jmespath/package.json @@ -0,0 +1,93 @@ +{ + "name": "@aws-lambda-powertools/jmespath", + "version": "2.0.2", + "description": "A type safe and modern jmespath module to parse and extract data from JSON documents using JMESPath", + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com" + }, + "private": true, + "scripts": { + "test": "npm run test:unit", + "test:unit": "jest --group=unit --detectOpenHandles --coverage", + "jest": "jest --detectOpenHandles --verbose", + "test:e2e": "echo 'Not applicable for this package'", + "watch": "jest --watch --group=unit", + "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": "eslint --ext .ts,.js --no-error-on-unmatched-pattern .", + "lint-fix": "eslint --fix --ext .ts,.js --no-error-on-unmatched-pattern .", + "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + }, + "lint-staged": { + "*.{js,ts}": "npm run lint-fix" + }, + "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript", + "license": "MIT-0", + "type": "module", + "exports": { + ".": { + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + }, + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + } + }, + "./envelopes": { + "import": "./lib/esm/envelopes.js", + "require": "./lib/cjs/envelopes.js" + }, + "./functions": { + "import": "./lib/esm/PowertoolsFunctions.js", + "require": "./lib/cjs/PowertoolsFunctions.js" + }, + "./types": { + "import": "./lib/esm/types.js", + "require": "./lib/cjs/types.js" + } + }, + "typesVersions": { + "*": { + "envelopes": [ + "lib/cjs/envelopes.d.ts", + "lib/esm/envelopes.d.ts" + ], + "functions": [ + "lib/cjs/PowertoolsFunctions.d.ts", + "lib/esm/PowertoolsFunctions.d.ts" + ], + "types": [ + "lib/cjs/types.d.ts", + "lib/esm/types.d.ts" + ] + } + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", + "files": [ + "lib" + ], + "dependencies": { + "@aws-lambda-powertools/commons": "^2.0.2" + }, + "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/jmespath/tests/helpers/populateEnvironmentVariables.ts b/packages/jmespath/tests/helpers/populateEnvironmentVariables.ts new file mode 100644 index 0000000000..a6715813ef --- /dev/null +++ b/packages/jmespath/tests/helpers/populateEnvironmentVariables.ts @@ -0,0 +1 @@ +// Powertools for AWS Lambda (TypeScript) variables diff --git a/packages/jmespath/tsconfig.esm.json b/packages/jmespath/tsconfig.esm.json new file mode 100644 index 0000000000..123291b0cf --- /dev/null +++ b/packages/jmespath/tsconfig.esm.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.esm.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./lib/esm", + "rootDir": "./src", + "tsBuildInfoFile": ".tsbuildinfo/esm.json" + }, + "include": [ + "./src/**/*" + ] +} \ No newline at end of file diff --git a/packages/jmespath/tsconfig.json b/packages/jmespath/tsconfig.json new file mode 100644 index 0000000000..d56a564ef6 --- /dev/null +++ b/packages/jmespath/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./lib/cjs/", + "rootDir": "./src", + "tsBuildInfoFile": ".tsbuildinfo/cjs.json" + }, + "include": [ + "./src/**/*" + ] +} \ No newline at end of file diff --git a/packages/jmespath/typedoc.json b/packages/jmespath/typedoc.json new file mode 100644 index 0000000000..737729805a --- /dev/null +++ b/packages/jmespath/typedoc.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "../../typedoc.base.json" + ], + "entryPoints": [ + "./src/index.ts", + "./src/types.ts", + "./src/envelopes.ts", + "./src/PowertoolsFunctions.ts", + ], + "readme": "README.md" +} \ No newline at end of file