From 97dcbf06ef5939524efef1c8c0cc1756c3cc4723 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Fri, 2 Jun 2023 17:32:01 +0000 Subject: [PATCH 1/4] feat: top-level exports --- packages/idempotency/package.json | 149 ++++++++++-------- packages/idempotency/src/dynamodb.ts | 1 + packages/idempotency/src/index.ts | 4 + packages/idempotency/src/persistence.ts | 3 + packages/idempotency/src/persistence/index.ts | 4 - .../idempotencyDecorator.test.FunctionCode.ts | 9 +- ...akeFunctionIdempotent.test.FunctionCode.ts | 6 +- .../tests/unit/IdempotencyConfig.test.ts | 2 +- .../tests/unit/IdempotencyHandler.test.ts | 2 +- .../tests/unit/idempotentDecorator.test.ts | 2 +- .../tests/unit/makeFunctionIdempotent.test.ts | 2 +- .../persistence/BasePersistenceLayer.test.ts | 2 +- .../DynamoDbPersistenceLayer.test.ts | 4 +- .../persistence/IdempotencyRecord.test.ts | 2 +- 14 files changed, 108 insertions(+), 84 deletions(-) create mode 100644 packages/idempotency/src/dynamodb.ts create mode 100644 packages/idempotency/src/index.ts create mode 100644 packages/idempotency/src/persistence.ts delete mode 100644 packages/idempotency/src/persistence/index.ts diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 8613cdf583..26f782824f 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -1,64 +1,87 @@ -{ - "name": "@aws-lambda-powertools/idempotency", - "version": "0.0.11", - "description": "The idempotency package for the Powertools for AWS Lambda (TypeScript) library. It provides options to make your Lambda functions idempotent and safe to retry.", - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com" - }, - "publishConfig": { - "access": "public" - }, - "scripts": { - "commit": "commit", - "test": "npm run test:unit", - "test:unit": "jest --group=unit --detectOpenHandles --coverage --verbose", - "test:e2e:nodejs14x": "RUNTIME=nodejs14x jest --group=e2e", - "test:e2e:nodejs16x": "RUNTIME=nodejs16x jest --group=e2e", - "test:e2e:nodejs18x": "RUNTIME=nodejs18x jest --group=e2e", - "test:e2e": "jest --group=e2e --detectOpenHandles", - "watch": "jest --watch --group=unit", - "build": "tsc", - "lint": "eslint --ext .ts,.js --no-error-on-unmatched-pattern .", - "lint-fix": "eslint --fix --ext .ts,.js --no-error-on-unmatched-pattern .", - "package": "mkdir -p dist/ && npm pack && mv *.tgz dist/", - "package-bundle": "../../package-bundler.sh idempotency-bundle ./dist", - "prepare": "npm run build" - }, - "lint-staged": { - "*.ts": "npm run lint-fix" - }, - "homepage": "https://github.com/awslabs/aws-lambda-powertools-typescript/tree/main/packages/idempotency#readme", - "license": "MIT", - "main": "./lib/index.js", - "types": "./lib/index.d.ts", - "typedocMain": "src/file_that_does_not_exist_so_its_ignored_from_api_docs.ts", - "files": [ - "lib" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/awslabs/aws-lambda-powertools-typescript.git" - }, - "bugs": { - "url": "https://github.com/awslabs/aws-lambda-powertools-typescript/issues" - }, - "dependencies": { - "@aws-lambda-powertools/commons": "^1.5.0", - "@aws-sdk/lib-dynamodb": "^3.231.0", - "jmespath": "^0.16.0" - }, - "keywords": [ - "aws", - "lambda", - "powertools", - "serverless", - "nodejs" - ], - "devDependencies": { - "@types/jmespath": "^0.15.0", - "@aws-sdk/client-dynamodb": "^3.231.0", - "aws-sdk-client-mock": "^2.0.1", - "aws-sdk-client-mock-jest": "^2.0.1" - } +{ + "name": "@aws-lambda-powertools/idempotency", + "version": "1.8.0", + "description": "The idempotency package for the Powertools for AWS Lambda (TypeScript) library. It provides options to make your Lambda functions idempotent and safe to retry.", + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "commit": "commit", + "test": "npm run test:unit", + "test:unit": "jest --group=unit --detectOpenHandles --coverage --verbose", + "test:e2e:nodejs14x": "RUNTIME=nodejs14x jest --group=e2e", + "test:e2e:nodejs16x": "RUNTIME=nodejs16x jest --group=e2e", + "test:e2e:nodejs18x": "RUNTIME=nodejs18x jest --group=e2e", + "test:e2e": "jest --group=e2e --detectOpenHandles", + "watch": "jest --watch --group=unit", + "build": "tsc", + "lint": "eslint --ext .ts,.js --no-error-on-unmatched-pattern .", + "lint-fix": "eslint --fix --ext .ts,.js --no-error-on-unmatched-pattern .", + "package": "mkdir -p dist/ && npm pack && mv *.tgz dist/", + "package-bundle": "../../package-bundler.sh idempotency-bundle ./dist", + "preprepare": "rm -rf ./lib", + "prepare": "npm run build" + }, + "lint-staged": { + "*.ts": "npm run lint-fix", + "*.js": "npm run lint-fix" + }, + "homepage": "https://github.com/awslabs/aws-lambda-powertools-typescript/tree/main/packages/idempotency#readme", + "license": "MIT", + "exports": { + ".": "./lib/index.js", + "./persistence": "./lib/persistence.js", + "./dynamodb": "./lib/dynamodb.js", + "./*": "./lib/*.js" + }, + "types": "./lib/index.d.ts", + "typesVersions": { + "*": { + "lib/index.d.ts": [ + "lib/index.d.ts" + ], + "lib/persistence.d.ts": [ + "lib/persistence.d.ts" + ], + "lib/dynamodb.d.ts": [ + "lib/dynamodb.d.ts" + ], + "*": [ + "lib/*" + ] + } + }, + "typedocMain": "src/file_that_does_not_exist_so_its_ignored_from_api_docs.ts", + "files": [ + "lib" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/awslabs/aws-lambda-powertools-typescript.git" + }, + "bugs": { + "url": "https://github.com/awslabs/aws-lambda-powertools-typescript/issues" + }, + "dependencies": { + "@aws-lambda-powertools/commons": "^1.5.0", + "@aws-sdk/lib-dynamodb": "^3.231.0", + "jmespath": "^0.16.0" + }, + "keywords": [ + "aws", + "lambda", + "powertools", + "serverless", + "nodejs" + ], + "devDependencies": { + "@types/jmespath": "^0.15.0", + "@aws-sdk/client-dynamodb": "^3.231.0", + "aws-sdk-client-mock": "^2.0.1", + "aws-sdk-client-mock-jest": "^2.0.1" + } } \ No newline at end of file diff --git a/packages/idempotency/src/dynamodb.ts b/packages/idempotency/src/dynamodb.ts new file mode 100644 index 0000000000..06361fcf30 --- /dev/null +++ b/packages/idempotency/src/dynamodb.ts @@ -0,0 +1 @@ +export * from './persistence/DynamoDBPersistenceLayer'; diff --git a/packages/idempotency/src/index.ts b/packages/idempotency/src/index.ts new file mode 100644 index 0000000000..02f3b0e01e --- /dev/null +++ b/packages/idempotency/src/index.ts @@ -0,0 +1,4 @@ +export * from './Exceptions'; +export * from './IdempotencyConfig'; +export * from './idempotentDecorator'; +export * from './makeFunctionIdempotent'; diff --git a/packages/idempotency/src/persistence.ts b/packages/idempotency/src/persistence.ts new file mode 100644 index 0000000000..fd78a121e0 --- /dev/null +++ b/packages/idempotency/src/persistence.ts @@ -0,0 +1,3 @@ +export * from './persistence/BasePersistenceLayer'; +export * from './persistence/BasePersistenceLayerInterface'; +export * from './persistence/IdempotencyRecord'; diff --git a/packages/idempotency/src/persistence/index.ts b/packages/idempotency/src/persistence/index.ts deleted file mode 100644 index 8dd10b0fe2..0000000000 --- a/packages/idempotency/src/persistence/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './DynamoDBPersistenceLayer'; -export * from './BasePersistenceLayer'; -export * from './BasePersistenceLayerInterface'; -export * from './IdempotencyRecord'; diff --git a/packages/idempotency/tests/e2e/idempotencyDecorator.test.FunctionCode.ts b/packages/idempotency/tests/e2e/idempotencyDecorator.test.FunctionCode.ts index 9145cc9db8..a75a72b026 100644 --- a/packages/idempotency/tests/e2e/idempotencyDecorator.test.FunctionCode.ts +++ b/packages/idempotency/tests/e2e/idempotencyDecorator.test.FunctionCode.ts @@ -1,10 +1,7 @@ +import type { Context } from 'aws-lambda'; import { LambdaInterface } from '@aws-lambda-powertools/commons'; -import { DynamoDBPersistenceLayer } from '../../src/persistence'; -import { - idempotentFunction, - idempotentLambdaHandler, -} from '../../src/idempotentDecorator'; -import { Context } from 'aws-lambda'; +import { DynamoDBPersistenceLayer } from '../../src/dynamodb'; +import { idempotentFunction, idempotentLambdaHandler } from '../../src'; import { Logger } from '../../../logger'; const IDEMPOTENCY_TABLE_NAME = diff --git a/packages/idempotency/tests/e2e/makeFunctionIdempotent.test.FunctionCode.ts b/packages/idempotency/tests/e2e/makeFunctionIdempotent.test.FunctionCode.ts index 10768e1705..897499ccfc 100644 --- a/packages/idempotency/tests/e2e/makeFunctionIdempotent.test.FunctionCode.ts +++ b/packages/idempotency/tests/e2e/makeFunctionIdempotent.test.FunctionCode.ts @@ -1,7 +1,7 @@ -import { DynamoDBPersistenceLayer } from '../../src/persistence'; -import { makeFunctionIdempotent } from '../../src/makeFunctionIdempotent'; +import type { Context } from 'aws-lambda'; +import { DynamoDBPersistenceLayer } from '../../src/dynamodb'; +import { makeFunctionIdempotent } from '../../src'; import { Logger } from '@aws-lambda-powertools/logger'; -import { Context } from 'aws-lambda'; const IDEMPOTENCY_TABLE_NAME = process.env.IDEMPOTENCY_TABLE_NAME || 'table_name'; diff --git a/packages/idempotency/tests/unit/IdempotencyConfig.test.ts b/packages/idempotency/tests/unit/IdempotencyConfig.test.ts index 0da250a058..17b6252947 100644 --- a/packages/idempotency/tests/unit/IdempotencyConfig.test.ts +++ b/packages/idempotency/tests/unit/IdempotencyConfig.test.ts @@ -4,7 +4,7 @@ * @group unit/idempotency/config */ import { ContextExamples as dummyContext } from '@aws-lambda-powertools/commons'; -import { IdempotencyConfig } from '../../src/IdempotencyConfig'; +import { IdempotencyConfig } from '../../src'; import type { IdempotencyConfigOptions } from '../../src/types'; describe('Class: IdempotencyConfig', () => { diff --git a/packages/idempotency/tests/unit/IdempotencyHandler.test.ts b/packages/idempotency/tests/unit/IdempotencyHandler.test.ts index 6e43e01cc6..f47bc9c3ec 100644 --- a/packages/idempotency/tests/unit/IdempotencyHandler.test.ts +++ b/packages/idempotency/tests/unit/IdempotencyHandler.test.ts @@ -12,7 +12,7 @@ import { import { IdempotencyRecordStatus } from '../../src/types'; import { BasePersistenceLayer, IdempotencyRecord } from '../../src/persistence'; import { IdempotencyHandler } from '../../src/IdempotencyHandler'; -import { IdempotencyConfig } from '../../src/IdempotencyConfig'; +import { IdempotencyConfig } from '../../src'; class PersistenceLayerTestClass extends BasePersistenceLayer { protected _deleteRecord = jest.fn(); diff --git a/packages/idempotency/tests/unit/idempotentDecorator.test.ts b/packages/idempotency/tests/unit/idempotentDecorator.test.ts index 42f8d92cba..712f7c8552 100644 --- a/packages/idempotency/tests/unit/idempotentDecorator.test.ts +++ b/packages/idempotency/tests/unit/idempotentDecorator.test.ts @@ -17,7 +17,7 @@ import { IdempotencyItemAlreadyExistsError, IdempotencyPersistenceLayerError, } from '../../src/Exceptions'; -import { IdempotencyConfig } from '../../src/IdempotencyConfig'; +import { IdempotencyConfig } from '../../src'; const mockSaveInProgress = jest .spyOn(BasePersistenceLayer.prototype, 'saveInProgress') diff --git a/packages/idempotency/tests/unit/makeFunctionIdempotent.test.ts b/packages/idempotency/tests/unit/makeFunctionIdempotent.test.ts index b0c77acbf1..9c45384b4d 100644 --- a/packages/idempotency/tests/unit/makeFunctionIdempotent.test.ts +++ b/packages/idempotency/tests/unit/makeFunctionIdempotent.test.ts @@ -5,7 +5,7 @@ */ import { IdempotencyFunctionOptions } from '../../src/types/IdempotencyOptions'; import { BasePersistenceLayer, IdempotencyRecord } from '../../src/persistence'; -import { makeFunctionIdempotent } from '../../src/makeFunctionIdempotent'; +import { makeFunctionIdempotent } from '../../src'; import type { AnyIdempotentFunction, IdempotencyRecordOptions, diff --git a/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts b/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts index 347d8e22d3..ff3954ea77 100644 --- a/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts +++ b/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts @@ -4,7 +4,7 @@ * @group unit/idempotency/persistence/base */ import { ContextExamples as dummyContext } from '@aws-lambda-powertools/commons'; -import { IdempotencyConfig } from '../../../src/IdempotencyConfig'; +import { IdempotencyConfig } from '../../../src'; import { IdempotencyRecord, BasePersistenceLayer, diff --git a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts index 09bfb999bc..2d7d97ad93 100644 --- a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts +++ b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts @@ -3,12 +3,12 @@ * * @group unit/idempotency/persistence/dynamodb */ -import { DynamoDBPersistenceLayer } from '../../../src/persistence/DynamoDBPersistenceLayer'; +import { DynamoDBPersistenceLayer } from '../../../src/dynamodb'; import { IdempotencyItemAlreadyExistsError, IdempotencyItemNotFoundError, } from '../../../src/Exceptions'; -import { IdempotencyRecord } from '../../../src/persistence/IdempotencyRecord'; +import { IdempotencyRecord } from '../../../src/persistence'; import type { DynamoPersistenceOptions } from '../../../src/types'; import { IdempotencyRecordStatus } from '../../../src/types'; import { diff --git a/packages/idempotency/tests/unit/persistence/IdempotencyRecord.test.ts b/packages/idempotency/tests/unit/persistence/IdempotencyRecord.test.ts index 4836ae3e9e..52063066d6 100644 --- a/packages/idempotency/tests/unit/persistence/IdempotencyRecord.test.ts +++ b/packages/idempotency/tests/unit/persistence/IdempotencyRecord.test.ts @@ -4,7 +4,7 @@ * @group unit/idempotency/persistence/idempotencyRecord */ import { IdempotencyInvalidStatusError } from '../../../src/Exceptions'; -import { IdempotencyRecord } from '../../../src/persistence/IdempotencyRecord'; +import { IdempotencyRecord } from '../../../src/persistence'; import { IdempotencyRecordStatus } from '../../../src/types'; const mockIdempotencyKey = '123'; From 42bd1a3a4bfc69e1f368b9a7ec15067fef375ff5 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Fri, 2 Jun 2023 17:32:47 +0000 Subject: [PATCH 2/4] chore: version --- packages/idempotency/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 26f782824f..3676cb87c4 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/idempotency", - "version": "1.8.0", + "version": "1.8.0-alpha.0", "description": "The idempotency package for the Powertools for AWS Lambda (TypeScript) library. It provides options to make your Lambda functions idempotent and safe to retry.", "author": { "name": "Amazon Web Services", From 266fbd60cfb15f12fe3b584794e81854cf0fe01a Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Fri, 2 Jun 2023 20:59:54 +0200 Subject: [PATCH 3/4] feat: exports --- packages/idempotency/package.json | 35 ++++++++++--------- packages/idempotency/src/dynamodb.ts | 1 - packages/idempotency/src/persistence.ts | 3 -- packages/idempotency/src/persistence/index.ts | 3 ++ .../DynamoDbPersistenceLayer.test.ts | 2 +- 5 files changed, 23 insertions(+), 21 deletions(-) delete mode 100644 packages/idempotency/src/dynamodb.ts delete mode 100644 packages/idempotency/src/persistence.ts create mode 100644 packages/idempotency/src/persistence/index.ts diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 3676cb87c4..9b3ca7cfef 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -33,28 +33,31 @@ "homepage": "https://github.com/awslabs/aws-lambda-powertools-typescript/tree/main/packages/idempotency#readme", "license": "MIT", "exports": { - ".": "./lib/index.js", - "./persistence": "./lib/persistence.js", - "./dynamodb": "./lib/dynamodb.js", - "./*": "./lib/*.js" + ".": { + "import": "./lib/index.js", + "require": "./lib/index.js" + }, + "./persistence": { + "import": "./lib/persistence/index.js", + "require": "./lib/persistence/index.js" + }, + "./dynamodb": { + "import": "./lib/persistence/DynamoDbPersistenceLayer.js", + "require": "./lib/persistence/DynamoDbPersistenceLayer.js" + } }, - "types": "./lib/index.d.ts", "typesVersions": { "*": { - "lib/index.d.ts": [ - "lib/index.d.ts" - ], - "lib/persistence.d.ts": [ - "lib/persistence.d.ts" - ], - "lib/dynamodb.d.ts": [ - "lib/dynamodb.d.ts" + "persistence": [ + "lib/persistence/index.d.ts" ], - "*": [ - "lib/*" + "dynamodb": [ + "lib/persistence/DynamoDbPersistenceLayer.d.ts" ] } }, + "main": "./lib/index.js", + "types": "./lib/index.d.ts", "typedocMain": "src/file_that_does_not_exist_so_its_ignored_from_api_docs.ts", "files": [ "lib" @@ -79,8 +82,8 @@ "nodejs" ], "devDependencies": { - "@types/jmespath": "^0.15.0", "@aws-sdk/client-dynamodb": "^3.231.0", + "@types/jmespath": "^0.15.0", "aws-sdk-client-mock": "^2.0.1", "aws-sdk-client-mock-jest": "^2.0.1" } diff --git a/packages/idempotency/src/dynamodb.ts b/packages/idempotency/src/dynamodb.ts deleted file mode 100644 index 06361fcf30..0000000000 --- a/packages/idempotency/src/dynamodb.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './persistence/DynamoDBPersistenceLayer'; diff --git a/packages/idempotency/src/persistence.ts b/packages/idempotency/src/persistence.ts deleted file mode 100644 index fd78a121e0..0000000000 --- a/packages/idempotency/src/persistence.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './persistence/BasePersistenceLayer'; -export * from './persistence/BasePersistenceLayerInterface'; -export * from './persistence/IdempotencyRecord'; diff --git a/packages/idempotency/src/persistence/index.ts b/packages/idempotency/src/persistence/index.ts new file mode 100644 index 0000000000..72ea36e01f --- /dev/null +++ b/packages/idempotency/src/persistence/index.ts @@ -0,0 +1,3 @@ +export * from './BasePersistenceLayer'; +export * from './BasePersistenceLayerInterface'; +export * from './IdempotencyRecord'; diff --git a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts index 2d7d97ad93..6d612de1c8 100644 --- a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts +++ b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts @@ -3,7 +3,7 @@ * * @group unit/idempotency/persistence/dynamodb */ -import { DynamoDBPersistenceLayer } from '../../../src/dynamodb'; +import { DynamoDBPersistenceLayer } from '../../../src/persistence/DynamoDBPersistenceLayer'; import { IdempotencyItemAlreadyExistsError, IdempotencyItemNotFoundError, From af5c38061048b997ae4ee6bc818c03f08b792da7 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Fri, 2 Jun 2023 21:07:11 +0200 Subject: [PATCH 4/4] chore: license field --- packages/idempotency/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 9b3ca7cfef..74d3a23be4 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -31,7 +31,7 @@ "*.js": "npm run lint-fix" }, "homepage": "https://github.com/awslabs/aws-lambda-powertools-typescript/tree/main/packages/idempotency#readme", - "license": "MIT", + "license": "MIT-0", "exports": { ".": { "import": "./lib/index.js",