From b3682c2116ecda91bc8f7b36eb500bc5e8615e88 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 00:55:41 +0200 Subject: [PATCH 01/11] chore(logger): adapt logger to commons exports --- packages/logger/jest.config.cjs | 10 ++-------- packages/logger/package.json | 3 +-- packages/logger/src/index.ts | 4 +--- packages/logger/src/middleware/middy.ts | 4 ++-- packages/logger/src/types/Logger.ts | 4 ++-- .../e2e/sampleRate.decorator.test.FunctionCode.ts | 2 +- packages/logger/tests/unit/Logger.test.ts | 8 ++++---- .../unit/formatter/PowertoolsLogFormatter.test.ts | 2 ++ packages/logger/tests/unit/middleware/middy.test.ts | 2 +- 9 files changed, 16 insertions(+), 23 deletions(-) diff --git a/packages/logger/jest.config.cjs b/packages/logger/jest.config.cjs index 272f582c6c..deb2a416a5 100644 --- a/packages/logger/jest.config.cjs +++ b/packages/logger/jest.config.cjs @@ -4,17 +4,11 @@ module.exports = { color: 'cyan', }, runner: 'groups', - extensionsToTreatAsEsm: ['.ts'], moduleNameMapper: { '^(\\.{1,2}/.*)\\.js$': '$1', }, transform: { - '^.+\\.[tj]sx?$': [ - 'ts-jest', - { - useESM: true, - }, - ], + '^.+\\.ts?$': 'ts-jest', }, moduleFileExtensions: ['js', 'ts'], collectCoverageFrom: ['**/src/**/*.ts', '!**/node_modules/**'], @@ -22,7 +16,7 @@ module.exports = { roots: ['/src', '/tests'], testPathIgnorePatterns: ['/node_modules/'], testEnvironment: 'node', - coveragePathIgnorePatterns: ['/node_modules/', '/types/'], + coveragePathIgnorePatterns: ['/node_modules/', 'src/types/index.ts'], coverageThreshold: { global: { statements: 100, diff --git a/packages/logger/package.json b/packages/logger/package.json index 563ffa7e48..62c72dae32 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -22,8 +22,7 @@ "lint": "eslint --ext .ts,.js --no-error-on-unmatched-pattern .", "lint-fix": "eslint --fix --ext .ts,.js --no-error-on-unmatched-pattern .", "prebuild": "rimraf ./lib", - "postbuild": "rimraf ./lib/*.tsbuildinfo", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "prepack": "rimraf ./lib/*.tsbuildinfo && node ../../.github/scripts/release_patch_package_json.js ." }, "lint-staged": { "*.{js,ts}": "npm run lint-fix" diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index dfedabfdff..096d26bb30 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -1,5 +1,3 @@ export { Logger } from './Logger.js'; -export { injectLambdaContext } from './middleware/middy.js'; -export { PowertoolsLogFormatter } from './formatter/PowertoolsLogFormatter.js'; export { LogFormatter } from './formatter/LogFormatter.js'; -export { LogFormatterInterface } from './formatter/LogFormatterInterface.js'; +export { LogItem } from './log/LogItem.js'; diff --git a/packages/logger/src/middleware/middy.ts b/packages/logger/src/middleware/middy.ts index 9e49dcbf63..7d8b3099da 100644 --- a/packages/logger/src/middleware/middy.ts +++ b/packages/logger/src/middleware/middy.ts @@ -1,11 +1,11 @@ import { Logger } from '../Logger.js'; import { LogAttributes } from '../types/Log.js'; import { HandlerOptions } from '../types/Logger.js'; -import { LOGGER_KEY } from '@aws-lambda-powertools/commons/lib/middleware'; +import { LOGGER_KEY } from '@aws-lambda-powertools/commons'; import type { MiddlewareLikeObj, MiddyLikeRequest, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; /** * A middy middleware that helps emitting CloudWatch EMF metrics in your logs. diff --git a/packages/logger/src/types/Logger.ts b/packages/logger/src/types/Logger.ts index 60f681dc60..193d72daef 100644 --- a/packages/logger/src/types/Logger.ts +++ b/packages/logger/src/types/Logger.ts @@ -1,8 +1,8 @@ -import { +import type { AsyncHandler, LambdaInterface, SyncHandler, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; import { Handler } from 'aws-lambda'; import { ConfigServiceInterface } from '../config/ConfigServiceInterface.js'; import { LogFormatterInterface } from '../formatter/LogFormatterInterface.js'; diff --git a/packages/logger/tests/e2e/sampleRate.decorator.test.FunctionCode.ts b/packages/logger/tests/e2e/sampleRate.decorator.test.FunctionCode.ts index 810e739bdf..32256a17ae 100644 --- a/packages/logger/tests/e2e/sampleRate.decorator.test.FunctionCode.ts +++ b/packages/logger/tests/e2e/sampleRate.decorator.test.FunctionCode.ts @@ -1,7 +1,7 @@ import { Logger } from '../../src'; import { TestEvent, TestOutput } from '../helpers/types'; import { Context } from 'aws-lambda'; -import { LambdaInterface } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; const SAMPLE_RATE = parseFloat(process.env.SAMPLE_RATE || '0.1'); const LOG_MSG = process.env.LOG_MSG || 'Hello World'; diff --git a/packages/logger/tests/unit/Logger.test.ts b/packages/logger/tests/unit/Logger.test.ts index 531215667a..6538b74fc4 100644 --- a/packages/logger/tests/unit/Logger.test.ts +++ b/packages/logger/tests/unit/Logger.test.ts @@ -6,13 +6,13 @@ import { ContextExamples as dummyContext, Events as dummyEvent, - LambdaInterface, } from '@aws-lambda-powertools/commons'; -import { Logger } from '../../src/Logger.js'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; +import { Logger } from '../../src/index.js'; import { ConfigServiceInterface } from '../../src/config/ConfigServiceInterface.js'; import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; import { PowertoolsLogFormatter } from '../../src/formatter/PowertoolsLogFormatter.js'; -import { LogFormatter } from '../../src/formatter/LogFormatter.js'; +import { LogFormatter } from '../../src/index.js'; import { LogLevelThresholds, LogLevel } from '../../src/types/Log.js'; import { ClassThatLogs, @@ -20,7 +20,7 @@ import { ConstructorOptions, } from '../../src/types/Logger.js'; import type { Context } from 'aws-lambda'; -import { Console } from 'console'; +import { Console } from 'node:console'; const mockDate = new Date(1466424490000); const dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => mockDate); diff --git a/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts b/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts index d361a9439f..d3a11b1a45 100644 --- a/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts +++ b/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts @@ -5,6 +5,7 @@ */ import { AssertionError, strictEqual } from 'assert'; import { PowertoolsLogFormatter } from '../../../src/formatter/PowertoolsLogFormatter.js'; +import { LogItem } from '../../../src/index.js'; import { UnformattedAttributes } from '../../../src/types/Logger.js'; import { LogAttributes } from '../../../src/types/Log.js'; @@ -52,6 +53,7 @@ describe('Class: PowertoolsLogFormatter', () => { timestamp: '2016-06-20T12:08:10.000Z', xray_trace_id: '1-5759e988-bd862e3fe1be46a994272793', }); + expect(value).toBeInstanceOf(LogItem); }); test('when optional parameters DO have a value set, it returns an object with expected structure and values', () => { diff --git a/packages/logger/tests/unit/middleware/middy.test.ts b/packages/logger/tests/unit/middleware/middy.test.ts index 9d4aaa604b..c5c32eab4a 100644 --- a/packages/logger/tests/unit/middleware/middy.test.ts +++ b/packages/logger/tests/unit/middleware/middy.test.ts @@ -6,8 +6,8 @@ import { ContextExamples as dummyContext, Events as dummyEvent, + cleanupMiddlewares, } from '@aws-lambda-powertools/commons'; -import { cleanupMiddlewares } from '@aws-lambda-powertools/commons/lib/middleware'; import { ConfigServiceInterface } from '../../../src/config/ConfigServiceInterface.js'; import { EnvironmentVariablesService } from '../../../src/config/EnvironmentVariablesService.js'; import { injectLambdaContext } from '../../../src/middleware/middy.js'; From c8421ae0497f7cc52a2c785ef3f965836edf9e54 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 00:58:21 +0200 Subject: [PATCH 02/11] feat(commons): add esmodule support --- .../{jest.config.js => jest.config.cjs} | 5 ++- packages/commons/package.json | 36 ++++++++++++++++--- packages/commons/src/awsSdk/index.ts | 2 -- packages/commons/src/awsSdk/utils.ts | 25 ------------- .../userAgentMiddleware.ts => awsSdkUtils.ts} | 29 ++++++++++++--- .../src/config/EnvironmentVariablesService.ts | 2 +- packages/commons/src/config/index.ts | 2 -- .../commons/src/{types/utils.ts => guards.ts} | 7 ---- packages/commons/src/index.ts | 21 ++++++----- .../src/middleware/cleanupMiddlewares.ts | 4 +-- packages/commons/src/middleware/index.ts | 2 -- .../src/samples/resources/contexts/index.ts | 2 +- .../src/samples/resources/events/index.ts | 2 +- .../lambda => types}/LambdaInterface.ts | 0 packages/commons/src/types/index.ts | 4 +++ packages/commons/src/types/json.ts | 6 ++++ packages/commons/src/utils/lambda/index.ts | 1 - .../EnvironmentVariablesService.test.ts | 4 +-- .../tests/unit/LambdaInterface.test.ts | 30 +++++++--------- packages/commons/tests/unit/Utility.test.ts | 2 +- .../{awsSdk.test.ts => awsSdkUtils.test.ts} | 6 ++-- .../tests/unit/cleanupMiddlewares.test.ts | 12 ++++++- .../unit/{utils.test.ts => guards.test.ts} | 8 ++--- packages/commons/tsconfig.esm.json | 11 ++++++ packages/commons/tsconfig.json | 2 +- 25 files changed, 133 insertions(+), 92 deletions(-) rename packages/commons/{jest.config.js => jest.config.cjs} (83%) delete mode 100644 packages/commons/src/awsSdk/index.ts delete mode 100644 packages/commons/src/awsSdk/utils.ts rename packages/commons/src/{awsSdk/userAgentMiddleware.ts => awsSdkUtils.ts} (59%) delete mode 100644 packages/commons/src/config/index.ts rename packages/commons/src/{types/utils.ts => guards.ts} (81%) delete mode 100644 packages/commons/src/middleware/index.ts rename packages/commons/src/{utils/lambda => types}/LambdaInterface.ts (100%) create mode 100644 packages/commons/src/types/index.ts create mode 100644 packages/commons/src/types/json.ts delete mode 100644 packages/commons/src/utils/lambda/index.ts rename packages/commons/tests/unit/{config => }/EnvironmentVariablesService.test.ts (97%) rename packages/commons/tests/unit/{awsSdk.test.ts => awsSdkUtils.test.ts} (94%) rename packages/commons/tests/unit/{utils.test.ts => guards.test.ts} (95%) create mode 100644 packages/commons/tsconfig.esm.json diff --git a/packages/commons/jest.config.js b/packages/commons/jest.config.cjs similarity index 83% rename from packages/commons/jest.config.js rename to packages/commons/jest.config.cjs index 512b4ab601..957bbe96d7 100644 --- a/packages/commons/jest.config.js +++ b/packages/commons/jest.config.cjs @@ -4,6 +4,9 @@ module.exports = { color: 'red', }, preset: 'ts-jest', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, transform: { '^.+\\.ts?$': 'ts-jest', }, @@ -13,7 +16,7 @@ module.exports = { roots: ['/src', '/tests'], testPathIgnorePatterns: ['/node_modules/'], testEnvironment: 'node', - coveragePathIgnorePatterns: ['/node_modules/'], + coveragePathIgnorePatterns: ['/node_modules/', 'src/types/index.ts'], coverageThreshold: { global: { statements: 100, diff --git a/packages/commons/package.json b/packages/commons/package.json index 850cf00255..d7a3bab71c 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -15,19 +15,45 @@ "test:e2e": "echo 'Not Applicable'", "watch": "jest --watch", "generateVersionFile": "echo \"// this file is auto generated, do not modify\nexport const PT_VERSION = '$(jq -r '.version' package.json)';\" > src/version.ts", - "build": "tsc --build --force", + "build:cjs": "tsc --build --force && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", + "build:esm": "tsc --project 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 .", - "prebuild": "rimraf ./lib", - "prepack": "node ../../.github/scripts/release_patch_package_json.js ." + "prepack": "rimraf ./lib/*.tsbuildinfo && 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/tree/main/packages/metrics#readme", "license": "MIT-0", - "main": "./lib/index.js", - "types": "./lib/index.d.ts", + "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" + } + }, + "./types": { + "import": "./lib/esm/types/index.js", + "require": "./lib/cjs/types/index.js" + } + }, + "typesVersions": { + "*": { + "types": [ + "lib/cjs/types/index.d.ts", + "lib/esm/types/index.d.ts" + ] + } + }, + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", "files": [ "lib" ], diff --git a/packages/commons/src/awsSdk/index.ts b/packages/commons/src/awsSdk/index.ts deleted file mode 100644 index 6a771c2265..0000000000 --- a/packages/commons/src/awsSdk/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { addUserAgentMiddleware } from './userAgentMiddleware'; -export { isSdkClient } from './utils'; diff --git a/packages/commons/src/awsSdk/utils.ts b/packages/commons/src/awsSdk/utils.ts deleted file mode 100644 index 611525abe1..0000000000 --- a/packages/commons/src/awsSdk/utils.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { SdkClient } from '../types/awsSdk'; - -/** - * @internal - * Type guard to check if the client provided is a valid AWS SDK v3 client - */ -const isSdkClient = (client: unknown): client is SdkClient => - typeof client === 'object' && - client !== null && - 'send' in client && - typeof client.send === 'function' && - 'config' in client && - client.config !== undefined && - typeof client.config === 'object' && - client.config !== null && - 'middlewareStack' in client && - client.middlewareStack !== undefined && - typeof client.middlewareStack === 'object' && - client.middlewareStack !== null && - 'identify' in client.middlewareStack && - typeof client.middlewareStack.identify === 'function' && - 'addRelativeTo' in client.middlewareStack && - typeof client.middlewareStack.addRelativeTo === 'function'; - -export { isSdkClient }; diff --git a/packages/commons/src/awsSdk/userAgentMiddleware.ts b/packages/commons/src/awsSdkUtils.ts similarity index 59% rename from packages/commons/src/awsSdk/userAgentMiddleware.ts rename to packages/commons/src/awsSdkUtils.ts index 5ed76d1f1e..ce50c5de33 100644 --- a/packages/commons/src/awsSdk/userAgentMiddleware.ts +++ b/packages/commons/src/awsSdkUtils.ts @@ -1,6 +1,5 @@ -import { PT_VERSION } from '../version'; -import { isSdkClient } from './utils'; -import type { MiddlewareArgsLike } from '../types/awsSdk'; +import { PT_VERSION } from './version.js'; +import type { MiddlewareArgsLike, SdkClient } from './types/awsSdk.js'; /** * @internal @@ -13,6 +12,28 @@ const middlewareOptions = { tags: ['POWERTOOLS', 'USER_AGENT'], }; +/** + * @internal + * Type guard to check if the client provided is a valid AWS SDK v3 client + */ +const isSdkClient = (client: unknown): client is SdkClient => + typeof client === 'object' && + client !== null && + 'send' in client && + typeof client.send === 'function' && + 'config' in client && + client.config !== undefined && + typeof client.config === 'object' && + client.config !== null && + 'middlewareStack' in client && + client.middlewareStack !== undefined && + typeof client.middlewareStack === 'object' && + client.middlewareStack !== null && + 'identify' in client.middlewareStack && + typeof client.middlewareStack.identify === 'function' && + 'addRelativeTo' in client.middlewareStack && + typeof client.middlewareStack.addRelativeTo === 'function'; + /** * @internal * returns a middleware function for the MiddlewareStack, that can be used for the SDK clients @@ -54,4 +75,4 @@ const addUserAgentMiddleware = (client: unknown, feature: string): void => { } }; -export { customUserAgentMiddleware, addUserAgentMiddleware }; +export { customUserAgentMiddleware, addUserAgentMiddleware, isSdkClient }; diff --git a/packages/commons/src/config/EnvironmentVariablesService.ts b/packages/commons/src/config/EnvironmentVariablesService.ts index 3e1be7af6c..c422163ad3 100644 --- a/packages/commons/src/config/EnvironmentVariablesService.ts +++ b/packages/commons/src/config/EnvironmentVariablesService.ts @@ -1,4 +1,4 @@ -import { ConfigService } from './ConfigService'; +import { ConfigService } from './ConfigService.js'; /** * Class EnvironmentVariablesService diff --git a/packages/commons/src/config/index.ts b/packages/commons/src/config/index.ts deleted file mode 100644 index 1530e49ebf..0000000000 --- a/packages/commons/src/config/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './ConfigService'; -export * from './EnvironmentVariablesService'; diff --git a/packages/commons/src/types/utils.ts b/packages/commons/src/guards.ts similarity index 81% rename from packages/commons/src/types/utils.ts rename to packages/commons/src/guards.ts index 7da5fd17ab..7776280e8b 100644 --- a/packages/commons/src/types/utils.ts +++ b/packages/commons/src/guards.ts @@ -50,10 +50,3 @@ const isString = (value: unknown): value is string => { }; export { isRecord, isString, isTruthy, isNullOrUndefined }; - -type JSONPrimitive = string | number | boolean | null | undefined; -type JSONValue = JSONPrimitive | JSONObject | JSONArray; -type JSONObject = { [key: number | string]: JSONValue }; -type JSONArray = Array; - -export type { JSONPrimitive, JSONValue, JSONObject, JSONArray }; diff --git a/packages/commons/src/index.ts b/packages/commons/src/index.ts index 0549592bf2..b11c1ccdec 100644 --- a/packages/commons/src/index.ts +++ b/packages/commons/src/index.ts @@ -1,8 +1,13 @@ -export * from './utils/lambda'; -export * from './Utility'; -export * from './config'; -export * as ContextExamples from './samples/resources/contexts'; -export * as Events from './samples/resources/events'; -export * from './types/middy'; -export * from './types/utils'; -export * from './awsSdk'; +export { isRecord, isString, isTruthy, isNullOrUndefined } from './guards.js'; +export { Utility } from './Utility.js'; +export { EnvironmentVariablesService } from './config/EnvironmentVariablesService.js'; +export * as ContextExamples from './samples/resources/contexts/index.js'; +export * as Events from './samples/resources/events/index.js'; +export { addUserAgentMiddleware, isSdkClient } from './awsSdkUtils.js'; +export { cleanupMiddlewares } from './middleware/cleanupMiddlewares.js'; +export { + TRACER_KEY, + LOGGER_KEY, + METRICS_KEY, + IDEMPOTENCY_KEY, +} from './middleware/constants.js'; diff --git a/packages/commons/src/middleware/cleanupMiddlewares.ts b/packages/commons/src/middleware/cleanupMiddlewares.ts index e35719b9d7..4f1046e6f1 100644 --- a/packages/commons/src/middleware/cleanupMiddlewares.ts +++ b/packages/commons/src/middleware/cleanupMiddlewares.ts @@ -3,8 +3,8 @@ import { METRICS_KEY, LOGGER_KEY, IDEMPOTENCY_KEY, -} from './constants'; -import type { MiddyLikeRequest, CleanupFunction } from '../types/middy'; +} from './constants.js'; +import type { MiddyLikeRequest, CleanupFunction } from '../types/middy.js'; // Typeguard to assert that an object is of Function type const isFunction = (obj: unknown): obj is CleanupFunction => { diff --git a/packages/commons/src/middleware/index.ts b/packages/commons/src/middleware/index.ts deleted file mode 100644 index 85f7388af3..0000000000 --- a/packages/commons/src/middleware/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './cleanupMiddlewares'; -export * from './constants'; diff --git a/packages/commons/src/samples/resources/contexts/index.ts b/packages/commons/src/samples/resources/contexts/index.ts index 436927eee2..910f356d2c 100644 --- a/packages/commons/src/samples/resources/contexts/index.ts +++ b/packages/commons/src/samples/resources/contexts/index.ts @@ -1 +1 @@ -export * from './hello-world'; +export * from './hello-world.js'; diff --git a/packages/commons/src/samples/resources/events/index.ts b/packages/commons/src/samples/resources/events/index.ts index 45582e4428..94b087e514 100644 --- a/packages/commons/src/samples/resources/events/index.ts +++ b/packages/commons/src/samples/resources/events/index.ts @@ -1 +1 @@ -export * as Custom from './custom'; +export * as Custom from './custom/index.js'; diff --git a/packages/commons/src/utils/lambda/LambdaInterface.ts b/packages/commons/src/types/LambdaInterface.ts similarity index 100% rename from packages/commons/src/utils/lambda/LambdaInterface.ts rename to packages/commons/src/types/LambdaInterface.ts diff --git a/packages/commons/src/types/index.ts b/packages/commons/src/types/index.ts new file mode 100644 index 0000000000..a3f660eeda --- /dev/null +++ b/packages/commons/src/types/index.ts @@ -0,0 +1,4 @@ +export * from './middy.js'; +export * from './awsSdk.js'; +export * from './json.js'; +export * from './LambdaInterface.js'; diff --git a/packages/commons/src/types/json.ts b/packages/commons/src/types/json.ts new file mode 100644 index 0000000000..765491c699 --- /dev/null +++ b/packages/commons/src/types/json.ts @@ -0,0 +1,6 @@ +type JSONPrimitive = string | number | boolean | null | undefined; +type JSONValue = JSONPrimitive | JSONObject | JSONArray; +type JSONObject = { [key: number | string]: JSONValue }; +type JSONArray = Array; + +export type { JSONPrimitive, JSONValue, JSONObject, JSONArray }; diff --git a/packages/commons/src/utils/lambda/index.ts b/packages/commons/src/utils/lambda/index.ts deleted file mode 100644 index f57f966d0c..0000000000 --- a/packages/commons/src/utils/lambda/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './LambdaInterface'; diff --git a/packages/commons/tests/unit/config/EnvironmentVariablesService.test.ts b/packages/commons/tests/unit/EnvironmentVariablesService.test.ts similarity index 97% rename from packages/commons/tests/unit/config/EnvironmentVariablesService.test.ts rename to packages/commons/tests/unit/EnvironmentVariablesService.test.ts index 055a57ac61..c9592374d1 100644 --- a/packages/commons/tests/unit/config/EnvironmentVariablesService.test.ts +++ b/packages/commons/tests/unit/EnvironmentVariablesService.test.ts @@ -1,10 +1,10 @@ /** * Test EnvironmentVariablesService class * - * @group unit/commons/all + * @group unit/commons/environmentService */ -import { EnvironmentVariablesService } from '../../../src/config'; +import { EnvironmentVariablesService } from '../../src/index.js'; describe('Class: EnvironmentVariablesService', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/commons/tests/unit/LambdaInterface.test.ts b/packages/commons/tests/unit/LambdaInterface.test.ts index 52049aadc0..fe09bae1e1 100644 --- a/packages/commons/tests/unit/LambdaInterface.test.ts +++ b/packages/commons/tests/unit/LambdaInterface.test.ts @@ -5,12 +5,12 @@ */ import { Handler } from 'aws-lambda'; import { Callback, Context } from 'aws-lambda'; -import { - ContextExamples, +import { helloworldContext as context } from '../../src/samples/resources/contexts/hello-world'; +import type { SyncHandler, AsyncHandler, LambdaInterface, -} from '../../src'; +} from '../../src/types/index.js'; describe('LambdaInterface with arrow function', () => { test('it compiles when given a callback', async () => { @@ -28,10 +28,8 @@ describe('LambdaInterface with arrow function', () => { }; } - await new LambdaFunction().handler( - {}, - ContextExamples.helloworldContext, - () => console.log('Lambda invoked!') + await new LambdaFunction().handler({}, context, () => + console.log('Lambda invoked!') ); }); @@ -45,7 +43,7 @@ describe('LambdaInterface with arrow function', () => { }; } - await new LambdaFunction().handler({}, ContextExamples.helloworldContext); + await new LambdaFunction().handler({}, context); }); }); @@ -62,10 +60,8 @@ describe('LambdaInterface with standard function', () => { } } - await new LambdaFunction().handler( - {}, - ContextExamples.helloworldContext, - () => console.log('Lambda invoked!') + await new LambdaFunction().handler({}, context, () => + console.log('Lambda invoked!') ); }); @@ -80,7 +76,7 @@ describe('LambdaInterface with standard function', () => { } } - await new LambdaFunction().handler({}, ContextExamples.helloworldContext); + await new LambdaFunction().handler({}, context); }); }); @@ -138,7 +134,7 @@ describe('LambdaInterface with decorator', () => { } } - await new LambdaFunction().handler({}, ContextExamples.helloworldContext); + await new LambdaFunction().handler({}, context); }); test('decorator with callback compile', async () => { @@ -154,10 +150,8 @@ describe('LambdaInterface with decorator', () => { } } - await new LambdaFunction().handler( - {}, - ContextExamples.helloworldContext, - () => console.log('Lambda invoked!') + await new LambdaFunction().handler({}, context, () => + console.log('Lambda invoked!') ); }); }); diff --git a/packages/commons/tests/unit/Utility.test.ts b/packages/commons/tests/unit/Utility.test.ts index f289d15d85..9e9d18194e 100644 --- a/packages/commons/tests/unit/Utility.test.ts +++ b/packages/commons/tests/unit/Utility.test.ts @@ -3,7 +3,7 @@ * * @group unit/commons/utility */ -import { Utility } from '../../src'; +import { Utility } from '../../src/index.js'; describe('Class: Utility', () => { beforeEach(() => { diff --git a/packages/commons/tests/unit/awsSdk.test.ts b/packages/commons/tests/unit/awsSdkUtils.test.ts similarity index 94% rename from packages/commons/tests/unit/awsSdk.test.ts rename to packages/commons/tests/unit/awsSdkUtils.test.ts index fd02efd9ab..953bbff79d 100644 --- a/packages/commons/tests/unit/awsSdk.test.ts +++ b/packages/commons/tests/unit/awsSdkUtils.test.ts @@ -1,6 +1,6 @@ -import { addUserAgentMiddleware, isSdkClient } from '../../src/awsSdk'; -import { PT_VERSION as version } from '../../src/version'; -import { customUserAgentMiddleware } from '../../src/awsSdk/userAgentMiddleware'; +import { addUserAgentMiddleware, isSdkClient } from '../../src/index.js'; +import { customUserAgentMiddleware } from '../../src/awsSdkUtils.js'; +import { PT_VERSION as version } from '../../src/version.js'; describe('Helpers: awsSdk', () => { describe('Function: userAgentMiddleware', () => { diff --git a/packages/commons/tests/unit/cleanupMiddlewares.test.ts b/packages/commons/tests/unit/cleanupMiddlewares.test.ts index 12583d9107..c3f92f965f 100644 --- a/packages/commons/tests/unit/cleanupMiddlewares.test.ts +++ b/packages/commons/tests/unit/cleanupMiddlewares.test.ts @@ -7,7 +7,9 @@ import { cleanupMiddlewares, TRACER_KEY, METRICS_KEY, -} from '../../src/middleware'; + LOGGER_KEY, + IDEMPOTENCY_KEY, +} from '../../src/index.js'; import { helloworldContext as context } from '../../src/samples/resources/contexts/hello-world'; describe('Function: cleanupMiddlewares', () => { @@ -15,6 +17,8 @@ describe('Function: cleanupMiddlewares', () => { // Prepare const mockCleanupFunction1 = jest.fn(); const mockCleanupFunction2 = jest.fn(); + const mockCleanupFunction3 = jest.fn(); + const mockCleanupFunction4 = jest.fn(); const mockRequest = { event: {}, context: context, @@ -23,6 +27,8 @@ describe('Function: cleanupMiddlewares', () => { internal: { [TRACER_KEY]: mockCleanupFunction1, [METRICS_KEY]: mockCleanupFunction2, + [LOGGER_KEY]: mockCleanupFunction3, + [IDEMPOTENCY_KEY]: mockCleanupFunction4, }, }; @@ -34,6 +40,10 @@ describe('Function: cleanupMiddlewares', () => { expect(mockCleanupFunction1).toHaveBeenCalledWith(mockRequest); expect(mockCleanupFunction2).toHaveBeenCalledTimes(1); expect(mockCleanupFunction2).toHaveBeenCalledWith(mockRequest); + expect(mockCleanupFunction3).toHaveBeenCalledTimes(1); + expect(mockCleanupFunction3).toHaveBeenCalledWith(mockRequest); + expect(mockCleanupFunction4).toHaveBeenCalledTimes(1); + expect(mockCleanupFunction4).toHaveBeenCalledWith(mockRequest); }); it('resolves successfully if no cleanup function is present', async () => { // Prepare diff --git a/packages/commons/tests/unit/utils.test.ts b/packages/commons/tests/unit/guards.test.ts similarity index 95% rename from packages/commons/tests/unit/utils.test.ts rename to packages/commons/tests/unit/guards.test.ts index 464b05958f..53e248e643 100644 --- a/packages/commons/tests/unit/utils.test.ts +++ b/packages/commons/tests/unit/guards.test.ts @@ -1,16 +1,16 @@ /** - * Test utils functions + * Test guards functions * - * @group unit/commons/utils + * @group unit/commons/guards */ import { isRecord, isTruthy, isNullOrUndefined, isString, -} from '../../src/types/utils'; +} from '../../src/index.js'; -describe('Functions: utils', () => { +describe('Functions: guards', () => { beforeEach(() => { jest.clearAllMocks(); jest.resetModules(); diff --git a/packages/commons/tsconfig.esm.json b/packages/commons/tsconfig.esm.json new file mode 100644 index 0000000000..9bed8e4da4 --- /dev/null +++ b/packages/commons/tsconfig.esm.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.esm.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "./lib/esm", + "rootDir": "./src" + }, + "include": [ + "./src/**/*" + ] +} \ No newline at end of file diff --git a/packages/commons/tsconfig.json b/packages/commons/tsconfig.json index 1cb9d72773..5be842b9f8 100644 --- a/packages/commons/tsconfig.json +++ b/packages/commons/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/cjs/", "rootDir": "./src", }, "include": [ From e14b07ed79eae57b6bd79f89c24a3a87fe948fca Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:16:33 +0200 Subject: [PATCH 03/11] chore: address sonar findings --- .../tests/unit/LambdaInterface.test.ts | 7 ++- packages/logger/src/Logger.ts | 2 +- packages/logger/tests/unit/Logger.test.ts | 3 +- .../formatter/PowertoolsLogFormatter.test.ts | 60 +++++++------------ 4 files changed, 26 insertions(+), 46 deletions(-) diff --git a/packages/commons/tests/unit/LambdaInterface.test.ts b/packages/commons/tests/unit/LambdaInterface.test.ts index fe09bae1e1..376d35bf52 100644 --- a/packages/commons/tests/unit/LambdaInterface.test.ts +++ b/packages/commons/tests/unit/LambdaInterface.test.ts @@ -13,6 +13,7 @@ import type { } from '../../src/types/index.js'; describe('LambdaInterface with arrow function', () => { + jest.spyOn(console, 'log').mockImplementation(); test('it compiles when given a callback', async () => { class LambdaFunction implements LambdaInterface { public handler: SyncHandler = async ( @@ -28,7 +29,7 @@ describe('LambdaInterface with arrow function', () => { }; } - await new LambdaFunction().handler({}, context, () => + new LambdaFunction().handler({}, context, () => console.log('Lambda invoked!') ); }); @@ -60,7 +61,7 @@ describe('LambdaInterface with standard function', () => { } } - await new LambdaFunction().handler({}, context, () => + new LambdaFunction().handler({}, context, () => console.log('Lambda invoked!') ); }); @@ -150,7 +151,7 @@ describe('LambdaInterface with decorator', () => { } } - await new LambdaFunction().handler({}, context, () => + new LambdaFunction().handler({}, context, () => console.log('Lambda invoked!') ); }); diff --git a/packages/logger/src/Logger.ts b/packages/logger/src/Logger.ts index b864c997b6..3bf7b3caf9 100644 --- a/packages/logger/src/Logger.ts +++ b/packages/logger/src/Logger.ts @@ -930,7 +930,7 @@ class Logger extends Utility implements ClassThatLogs { * @returns {void} */ private setLogFormatter(logFormatter?: LogFormatterInterface): void { - this.logFormatter = logFormatter || new PowertoolsLogFormatter(); + this.logFormatter = logFormatter ?? new PowertoolsLogFormatter(); } /** diff --git a/packages/logger/tests/unit/Logger.test.ts b/packages/logger/tests/unit/Logger.test.ts index 6538b74fc4..1bcbc0fe4b 100644 --- a/packages/logger/tests/unit/Logger.test.ts +++ b/packages/logger/tests/unit/Logger.test.ts @@ -8,11 +8,10 @@ import { Events as dummyEvent, } from '@aws-lambda-powertools/commons'; import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; -import { Logger } from '../../src/index.js'; +import { Logger, LogFormatter } from '../../src/index.js'; import { ConfigServiceInterface } from '../../src/config/ConfigServiceInterface.js'; import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; import { PowertoolsLogFormatter } from '../../src/formatter/PowertoolsLogFormatter.js'; -import { LogFormatter } from '../../src/index.js'; import { LogLevelThresholds, LogLevel } from '../../src/types/Log.js'; import { ClassThatLogs, diff --git a/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts b/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts index d3a11b1a45..1d66414797 100644 --- a/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts +++ b/packages/logger/tests/unit/formatter/PowertoolsLogFormatter.test.ts @@ -121,12 +121,12 @@ describe('Class: PowertoolsLogFormatter', () => { const formattedError = formatter.formatError(error); expect(formattedError).toEqual({ location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+$/ + /PowertoolsLogFormatter.test.ts:\d+$/ ), message: 'Ouch!', name: 'Error', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -153,12 +153,12 @@ describe('Class: PowertoolsLogFormatter', () => { const formattedReferenceError = formatter.formatError(error); expect(formattedReferenceError).toEqual({ location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+$/ + /PowertoolsLogFormatter.test.ts:\d+$/ ), message: 'doesNotExist is not defined', name: 'ReferenceError', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -183,15 +183,13 @@ describe('Class: PowertoolsLogFormatter', () => { error ); expect(formattedAssertionError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: expect.stringMatching( /Expected values to be strictly equal/ ), name: 'AssertionError', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -214,13 +212,11 @@ describe('Class: PowertoolsLogFormatter', () => { expect(error).toBeInstanceOf(RangeError); const formattedRangeError = formatter.formatError(error); expect(formattedRangeError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: 'The argument must be between 10 and 20', name: 'RangeError', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -243,13 +239,11 @@ describe('Class: PowertoolsLogFormatter', () => { expect(error).toBeInstanceOf(SyntaxError); const formattedSyntaxError = formatter.formatError(error); expect(formattedSyntaxError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: 'Unexpected identifier', name: 'SyntaxError', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -276,13 +270,11 @@ describe('Class: PowertoolsLogFormatter', () => { expect(error).toBeInstanceOf(Error); const formattedTypeError = formatter.formatError(error); expect(formattedTypeError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: expect.stringMatching(/Cannot read propert/), name: 'TypeError', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -305,13 +297,11 @@ describe('Class: PowertoolsLogFormatter', () => { expect(error).toBeInstanceOf(URIError); const formattedURIError = formatter.formatError(error); expect(formattedURIError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: 'URI malformed', name: 'URIError', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }); } @@ -337,22 +327,16 @@ describe('Class: PowertoolsLogFormatter', () => { // Assess expect(formattedURIError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: 'foo', name: 'Error', - stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ - ), + stack: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+:\d+/), cause: { - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: 'bar', name: 'Error', stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ + /PowertoolsLogFormatter.test.ts:\d+:\d+/ ), }, }); @@ -376,14 +360,10 @@ describe('Class: PowertoolsLogFormatter', () => { // Assess expect(formattedURIError).toEqual({ - location: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+/ - ), + location: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+/), message: 'foo', name: 'Error', - stack: expect.stringMatching( - /PowertoolsLogFormatter.test.ts:[0-9]+:[0-9]+/ - ), + stack: expect.stringMatching(/PowertoolsLogFormatter.test.ts:\d+:\d+/), cause: 'bar', }); }); From a10c55fef4cbd63da5eafe6ec5769a2e2c735044 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:24:08 +0200 Subject: [PATCH 04/11] chore(commons): exported version --- packages/commons/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/commons/src/index.ts b/packages/commons/src/index.ts index b11c1ccdec..f6ff7df34e 100644 --- a/packages/commons/src/index.ts +++ b/packages/commons/src/index.ts @@ -11,3 +11,4 @@ export { METRICS_KEY, IDEMPOTENCY_KEY, } from './middleware/constants.js'; +export { PT_VERSION } from './version.js'; From b1123c85928d8825311b9421111c515cd0e0b737 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:24:24 +0200 Subject: [PATCH 05/11] chore: fixed imports in examples --- examples/cdk/functions/common/powertools.ts | 2 +- examples/cdk/functions/get-all-items.ts | 2 +- examples/cdk/functions/get-by-id.ts | 2 +- examples/cdk/functions/uuid.ts | 2 +- examples/sam/src/common/powertools.ts | 2 +- examples/sam/src/get-all-items.ts | 2 +- examples/sam/src/get-by-id.ts | 2 +- examples/sam/src/get-uuid.ts | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/cdk/functions/common/powertools.ts b/examples/cdk/functions/common/powertools.ts index 01949a91ac..fa0b798afa 100644 --- a/examples/cdk/functions/common/powertools.ts +++ b/examples/cdk/functions/common/powertools.ts @@ -1,7 +1,7 @@ import { Logger } from '@aws-lambda-powertools/logger'; import { Metrics } from '@aws-lambda-powertools/metrics'; import { Tracer } from '@aws-lambda-powertools/tracer'; -import { PT_VERSION } from '@aws-lambda-powertools/commons/lib/version'; +import { PT_VERSION } from '@aws-lambda-powertools/commons'; const defaultValues = { region: process.env.AWS_REGION || 'N/A', diff --git a/examples/cdk/functions/get-all-items.ts b/examples/cdk/functions/get-all-items.ts index d0b1acb4b8..a31269d7a2 100644 --- a/examples/cdk/functions/get-all-items.ts +++ b/examples/cdk/functions/get-all-items.ts @@ -1,4 +1,4 @@ -import { injectLambdaContext } from '@aws-lambda-powertools/logger'; +import { injectLambdaContext } from '@aws-lambda-powertools/logger/middleware'; import { logMetrics } from '@aws-lambda-powertools/metrics'; import { captureLambdaHandler } from '@aws-lambda-powertools/tracer'; import { ScanCommand } from '@aws-sdk/lib-dynamodb'; diff --git a/examples/cdk/functions/get-by-id.ts b/examples/cdk/functions/get-by-id.ts index 9ad13fcb2f..d2f043a991 100644 --- a/examples/cdk/functions/get-by-id.ts +++ b/examples/cdk/functions/get-by-id.ts @@ -1,4 +1,4 @@ -import { LambdaInterface } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import { GetCommand } from '@aws-sdk/lib-dynamodb'; import { APIGatewayProxyEvent, diff --git a/examples/cdk/functions/uuid.ts b/examples/cdk/functions/uuid.ts index 58e017dbea..04ab559e1f 100644 --- a/examples/cdk/functions/uuid.ts +++ b/examples/cdk/functions/uuid.ts @@ -1,6 +1,6 @@ import { randomUUID } from 'node:crypto'; -exports.handler = async (_event) => { +exports.handler = async () => { return { statusCode: 200, body: JSON.stringify(randomUUID()), diff --git a/examples/sam/src/common/powertools.ts b/examples/sam/src/common/powertools.ts index 01949a91ac..fa0b798afa 100644 --- a/examples/sam/src/common/powertools.ts +++ b/examples/sam/src/common/powertools.ts @@ -1,7 +1,7 @@ import { Logger } from '@aws-lambda-powertools/logger'; import { Metrics } from '@aws-lambda-powertools/metrics'; import { Tracer } from '@aws-lambda-powertools/tracer'; -import { PT_VERSION } from '@aws-lambda-powertools/commons/lib/version'; +import { PT_VERSION } from '@aws-lambda-powertools/commons'; const defaultValues = { region: process.env.AWS_REGION || 'N/A', diff --git a/examples/sam/src/get-all-items.ts b/examples/sam/src/get-all-items.ts index b0e3ec9ae6..6984c2d54d 100644 --- a/examples/sam/src/get-all-items.ts +++ b/examples/sam/src/get-all-items.ts @@ -7,7 +7,7 @@ import middy from '@middy/core'; import { tableName } from './common/constants'; import { logger, tracer, metrics } from './common/powertools'; import { logMetrics } from '@aws-lambda-powertools/metrics'; -import { injectLambdaContext } from '@aws-lambda-powertools/logger'; +import { injectLambdaContext } from '@aws-lambda-powertools/logger/middleware'; import { captureLambdaHandler } from '@aws-lambda-powertools/tracer'; import { docClient } from './common/dynamodb-client'; import { ScanCommand } from '@aws-sdk/lib-dynamodb'; diff --git a/examples/sam/src/get-by-id.ts b/examples/sam/src/get-by-id.ts index 9ad13fcb2f..d2f043a991 100644 --- a/examples/sam/src/get-by-id.ts +++ b/examples/sam/src/get-by-id.ts @@ -1,4 +1,4 @@ -import { LambdaInterface } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import { GetCommand } from '@aws-sdk/lib-dynamodb'; import { APIGatewayProxyEvent, diff --git a/examples/sam/src/get-uuid.ts b/examples/sam/src/get-uuid.ts index 58e017dbea..04ab559e1f 100644 --- a/examples/sam/src/get-uuid.ts +++ b/examples/sam/src/get-uuid.ts @@ -1,6 +1,6 @@ import { randomUUID } from 'node:crypto'; -exports.handler = async (_event) => { +exports.handler = async () => { return { statusCode: 200, body: JSON.stringify(randomUUID()), From 0f13ef3b0074b69cd8d3a4150fa8c5bfee189ed9 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:24:38 +0200 Subject: [PATCH 06/11] chore(parameters): fixed imports --- packages/parameters/src/base/transformValue.ts | 2 +- packages/parameters/src/dynamodb/DynamoDBProvider.ts | 2 +- packages/parameters/src/types/AppConfigProvider.ts | 2 +- packages/parameters/src/types/DynamoDBProvider.ts | 2 +- packages/parameters/src/types/SSMProvider.ts | 2 +- packages/parameters/src/types/SecretsProvider.ts | 2 +- packages/parameters/tests/unit/getAppConfig.test.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/parameters/src/base/transformValue.ts b/packages/parameters/src/base/transformValue.ts index a3b767ddbd..0d5a175106 100644 --- a/packages/parameters/src/base/transformValue.ts +++ b/packages/parameters/src/base/transformValue.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import { isString } from '@aws-lambda-powertools/commons'; import { fromBase64 } from '@aws-sdk/util-base64-node'; import { TRANSFORM_METHOD_BINARY, TRANSFORM_METHOD_JSON } from '../constants'; diff --git a/packages/parameters/src/dynamodb/DynamoDBProvider.ts b/packages/parameters/src/dynamodb/DynamoDBProvider.ts index 40e5338b9b..500ba64398 100644 --- a/packages/parameters/src/dynamodb/DynamoDBProvider.ts +++ b/packages/parameters/src/dynamodb/DynamoDBProvider.ts @@ -17,7 +17,7 @@ import type { QueryCommandInput, } from '@aws-sdk/client-dynamodb'; import type { PaginationConfiguration } from '@aws-sdk/types'; -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import { addUserAgentMiddleware, isSdkClient, diff --git a/packages/parameters/src/types/AppConfigProvider.ts b/packages/parameters/src/types/AppConfigProvider.ts index d0d6f5a6cb..08979b7407 100644 --- a/packages/parameters/src/types/AppConfigProvider.ts +++ b/packages/parameters/src/types/AppConfigProvider.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import type { AppConfigDataClient, AppConfigDataClientConfig, diff --git a/packages/parameters/src/types/DynamoDBProvider.ts b/packages/parameters/src/types/DynamoDBProvider.ts index d6bf2d17ab..1115acafa0 100644 --- a/packages/parameters/src/types/DynamoDBProvider.ts +++ b/packages/parameters/src/types/DynamoDBProvider.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import type { DynamoDBClient, DynamoDBClientConfig, diff --git a/packages/parameters/src/types/SSMProvider.ts b/packages/parameters/src/types/SSMProvider.ts index 25c3756491..8b0169dc27 100644 --- a/packages/parameters/src/types/SSMProvider.ts +++ b/packages/parameters/src/types/SSMProvider.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import type { GetParameterCommandInput, GetParametersByPathCommandInput, diff --git a/packages/parameters/src/types/SecretsProvider.ts b/packages/parameters/src/types/SecretsProvider.ts index f33aad811b..cd06bb88e3 100644 --- a/packages/parameters/src/types/SecretsProvider.ts +++ b/packages/parameters/src/types/SecretsProvider.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import type { GetSecretValueCommandInput, SecretsManagerClient, diff --git a/packages/parameters/tests/unit/getAppConfig.test.ts b/packages/parameters/tests/unit/getAppConfig.test.ts index 5884a9e30e..3243f38f0b 100644 --- a/packages/parameters/tests/unit/getAppConfig.test.ts +++ b/packages/parameters/tests/unit/getAppConfig.test.ts @@ -18,7 +18,7 @@ import { mockClient } from 'aws-sdk-client-mock'; import 'aws-sdk-client-mock-jest'; import { toBase64 } from '@aws-sdk/util-base64-node'; import { Uint8ArrayBlobAdapter } from '@smithy/util-stream'; -import { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; describe('Function: getAppConfig', () => { const client = mockClient(AppConfigDataClient); From 659b2db43b974b31bd42a52349a6ee0c6e818383 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:29:43 +0200 Subject: [PATCH 07/11] chore(metrics): fixed imports --- packages/metrics/src/middleware/middy.ts | 4 +- packages/metrics/src/types/Metrics.ts | 2 +- .../metrics/tests/helpers/metricsUtils.ts | 2 +- packages/metrics/tests/unit/Metrics.test.ts | 2 +- .../tests/unit/middleware/middy.test.ts | 42 ++++++++++--------- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/packages/metrics/src/middleware/middy.ts b/packages/metrics/src/middleware/middy.ts index 0da5c04828..5a2bbbaec4 100644 --- a/packages/metrics/src/middleware/middy.ts +++ b/packages/metrics/src/middleware/middy.ts @@ -1,10 +1,10 @@ -import { METRICS_KEY } from '@aws-lambda-powertools/commons/lib/middleware'; +import { METRICS_KEY } from '@aws-lambda-powertools/commons'; import type { Metrics } from '../Metrics'; import type { ExtraOptions } from '../types'; import type { MiddlewareLikeObj, MiddyLikeRequest, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; /** * A middy middleware automating capture of metadata and annotations on segments or subsegments for a Lambda Handler. diff --git a/packages/metrics/src/types/Metrics.ts b/packages/metrics/src/types/Metrics.ts index ef5e7d5454..73d8b60d10 100644 --- a/packages/metrics/src/types/Metrics.ts +++ b/packages/metrics/src/types/Metrics.ts @@ -3,7 +3,7 @@ import type { LambdaInterface, AsyncHandler, SyncHandler, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; import { ConfigServiceInterface } from '../config'; import { MetricUnit } from './MetricUnit'; import { MetricResolution } from './MetricResolution'; diff --git a/packages/metrics/tests/helpers/metricsUtils.ts b/packages/metrics/tests/helpers/metricsUtils.ts index 5254b474cb..8172fb3451 100644 --- a/packages/metrics/tests/helpers/metricsUtils.ts +++ b/packages/metrics/tests/helpers/metricsUtils.ts @@ -7,7 +7,7 @@ import { } from '@aws-sdk/client-cloudwatch'; import type { ListMetricsCommandOutput } from '@aws-sdk/client-cloudwatch'; import type { Context, Handler } from 'aws-lambda'; -import type { LambdaInterface } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; const getMetrics = async ( cloudWatchClient: CloudWatchClient, diff --git a/packages/metrics/tests/unit/Metrics.test.ts b/packages/metrics/tests/unit/Metrics.test.ts index 81808a0f5c..286f618d65 100644 --- a/packages/metrics/tests/unit/Metrics.test.ts +++ b/packages/metrics/tests/unit/Metrics.test.ts @@ -4,10 +4,10 @@ * @group unit/metrics/class */ import { - LambdaInterface, ContextExamples as dummyContext, Events as dummyEvent, } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import { MetricResolution, MetricUnits, Metrics } from '../../src/'; import { Context, Handler } from 'aws-lambda'; import { Dimensions, EmfOutput, MetricsOptions } from '../../src/types'; diff --git a/packages/metrics/tests/unit/middleware/middy.test.ts b/packages/metrics/tests/unit/middleware/middy.test.ts index 5713bcbe9c..1c5b83e6f5 100644 --- a/packages/metrics/tests/unit/middleware/middy.test.ts +++ b/packages/metrics/tests/unit/middleware/middy.test.ts @@ -11,9 +11,11 @@ import { } from '../../../../metrics/src'; import middy from '@middy/core'; import { ExtraOptions } from '../../../src/types'; -import { cleanupMiddlewares } from '@aws-lambda-powertools/commons/lib/middleware'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts/hello-world'; -import { CustomEvent as dummyEvent } from '@aws-lambda-powertools/commons/lib/samples/resources/events/custom/index'; +import { + cleanupMiddlewares, + ContextExamples as dummyContext, + Events as dummyEvent, +} from '@aws-lambda-powertools/commons'; const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(); @@ -43,7 +45,7 @@ describe('Middy middleware', () => { ); try { - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); } catch (e) { @@ -69,7 +71,7 @@ describe('Middy middleware', () => { ); try { - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); } catch (e) { @@ -90,7 +92,7 @@ describe('Middy middleware', () => { // Act & Assess await expect( - handler(dummyEvent, dummyContext) + handler(dummyEvent, dummyContext.helloworldContext) ).resolves.not.toThrowError(); expect(consoleWarnSpy).toBeCalledTimes(1); expect(consoleWarnSpy).toBeCalledWith( @@ -115,10 +117,10 @@ describe('Middy middleware', () => { logMetrics(metrics, { captureColdStartMetric: true }) ); - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked! again') ); const loggedData = [ @@ -152,10 +154,10 @@ describe('Middy middleware', () => { logMetrics(metrics, { captureColdStartMetric: false }) ); - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked! again') ); const loggedData = [ @@ -179,10 +181,10 @@ describe('Middy middleware', () => { const handler = middy(lambdaHandler).use(logMetrics(metrics)); - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked! again') ); const loggedData = [ @@ -210,7 +212,7 @@ describe('Middy middleware', () => { const handler = middy(lambdaHandler).use(logMetrics(metrics)); // Act - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); @@ -254,7 +256,7 @@ describe('Middy middleware', () => { ); // Act - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); @@ -316,7 +318,7 @@ describe('Middy middleware', () => { const handler = middy(lambdaHandler).use(logMetrics(metrics)); // Act - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); @@ -358,7 +360,7 @@ describe('Middy middleware', () => { ); // Act - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); @@ -419,8 +421,8 @@ describe('Middy middleware', () => { .use(myCustomMiddleware()); // Act - await handler({ ...dummyEvent, idx: 0 }, dummyContext); - await handler({ ...dummyEvent, idx: 1 }, dummyContext); + await handler({ ...dummyEvent, idx: 0 }, dummyContext.helloworldContext); + await handler({ ...dummyEvent, idx: 1 }, dummyContext.helloworldContext); // Assess expect(publishStoredMetricsSpy).toBeCalledTimes(2); @@ -446,7 +448,7 @@ describe('Middy middleware', () => { const handler = middy(lambdaHandler).use(logMetrics(metrics)); // Act - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); @@ -493,7 +495,7 @@ describe('Middy middleware', () => { const handler = middy(lambdaHandler).use(logMetrics(metrics)); // Act - await handler(dummyEvent, dummyContext, () => + await handler(dummyEvent, dummyContext.helloworldContext, () => console.log('Lambda invoked!') ); From 230d0a69c661888337fb17bd10248230a2e7ea59 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:31:58 +0200 Subject: [PATCH 08/11] chore(tracer): fixed imports --- packages/tracer/src/Tracer.ts | 10 +++++----- packages/tracer/src/middleware/middy.ts | 4 ++-- packages/tracer/src/types/Tracer.ts | 2 +- packages/tracer/tests/unit/Tracer.test.ts | 2 +- packages/tracer/tests/unit/middy.test.ts | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/tracer/src/Tracer.ts b/packages/tracer/src/Tracer.ts index 41415facfa..71de957ca5 100644 --- a/packages/tracer/src/Tracer.ts +++ b/packages/tracer/src/Tracer.ts @@ -1,9 +1,9 @@ import type { Handler } from 'aws-lambda'; -import { - type AsyncHandler, - type SyncHandler, - Utility, -} from '@aws-lambda-powertools/commons'; +import { Utility } from '@aws-lambda-powertools/commons'; +import type { + AsyncHandler, + SyncHandler, +} from '@aws-lambda-powertools/commons/types'; import type { TracerInterface } from '.'; import { type ConfigServiceInterface, diff --git a/packages/tracer/src/middleware/middy.ts b/packages/tracer/src/middleware/middy.ts index cc0477f01f..6bf9c22cfa 100644 --- a/packages/tracer/src/middleware/middy.ts +++ b/packages/tracer/src/middleware/middy.ts @@ -1,11 +1,11 @@ -import { TRACER_KEY } from '@aws-lambda-powertools/commons/lib/middleware'; +import { TRACER_KEY } from '@aws-lambda-powertools/commons'; import type { Tracer } from '../Tracer'; import type { Segment, Subsegment } from 'aws-xray-sdk-core'; import type { CaptureLambdaHandlerOptions } from '../types'; import type { MiddlewareLikeObj, MiddyLikeRequest, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; /** * A middy middleware automating capture of metadata and annotations on segments or subsegments for a Lambda Handler. diff --git a/packages/tracer/src/types/Tracer.ts b/packages/tracer/src/types/Tracer.ts index e31c06c4e7..9f15b927ad 100644 --- a/packages/tracer/src/types/Tracer.ts +++ b/packages/tracer/src/types/Tracer.ts @@ -4,7 +4,7 @@ import type { AsyncHandler, LambdaInterface, SyncHandler, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; /** * Options for the tracer class to be used during initialization. diff --git a/packages/tracer/tests/unit/Tracer.test.ts b/packages/tracer/tests/unit/Tracer.test.ts index e08a888457..f83aaf9240 100644 --- a/packages/tracer/tests/unit/Tracer.test.ts +++ b/packages/tracer/tests/unit/Tracer.test.ts @@ -6,8 +6,8 @@ import { ContextExamples as dummyContext, Events as dummyEvent, - LambdaInterface, } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import { Tracer } from './../../src'; import type { Callback, Context } from 'aws-lambda/handler'; import { diff --git a/packages/tracer/tests/unit/middy.test.ts b/packages/tracer/tests/unit/middy.test.ts index dc7af9d553..fe717e656b 100644 --- a/packages/tracer/tests/unit/middy.test.ts +++ b/packages/tracer/tests/unit/middy.test.ts @@ -12,7 +12,7 @@ import { setContextMissingStrategy, Subsegment, } from 'aws-xray-sdk-core'; -import { cleanupMiddlewares } from '@aws-lambda-powertools/commons/lib/middleware'; +import { cleanupMiddlewares } from '@aws-lambda-powertools/commons'; jest.spyOn(console, 'debug').mockImplementation(() => null); jest.spyOn(console, 'warn').mockImplementation(() => null); From 1fda26e597fd4bf67663ad22f5c3fb8a9756c21b Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:36:49 +0200 Subject: [PATCH 09/11] chore(idempotency): fixed imports --- packages/idempotency/src/IdempotencyHandler.ts | 2 +- .../src/middleware/makeHandlerIdempotent.ts | 4 ++-- .../src/persistence/BasePersistenceLayer.ts | 2 +- .../idempotency/src/persistence/IdempotencyRecord.ts | 2 +- packages/idempotency/src/types/IdempotencyOptions.ts | 2 +- packages/idempotency/src/types/IdempotencyRecord.ts | 2 +- .../tests/e2e/idempotentDecorator.test.FunctionCode.ts | 2 +- .../tests/unit/idempotencyDecorator.test.ts | 4 ++-- .../tests/unit/makeHandlerIdempotent.test.ts | 10 ++++++---- packages/idempotency/tests/unit/makeIdempotent.test.ts | 10 ++++++---- 10 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/idempotency/src/IdempotencyHandler.ts b/packages/idempotency/src/IdempotencyHandler.ts index 7deb2c53f7..c2e85dfeb0 100644 --- a/packages/idempotency/src/IdempotencyHandler.ts +++ b/packages/idempotency/src/IdempotencyHandler.ts @@ -1,7 +1,7 @@ import type { JSONValue, MiddyLikeRequest, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; import type { AnyFunction, IdempotencyHandlerOptions } from './types'; import { IdempotencyAlreadyInProgressError, diff --git a/packages/idempotency/src/middleware/makeHandlerIdempotent.ts b/packages/idempotency/src/middleware/makeHandlerIdempotent.ts index 25c4525f58..55edb314dc 100644 --- a/packages/idempotency/src/middleware/makeHandlerIdempotent.ts +++ b/packages/idempotency/src/middleware/makeHandlerIdempotent.ts @@ -3,13 +3,13 @@ import { IdempotencyConfig } from '../IdempotencyConfig'; import { cleanupMiddlewares, IDEMPOTENCY_KEY, -} from '@aws-lambda-powertools/commons/lib/middleware'; +} from '@aws-lambda-powertools/commons'; import type { AnyFunction, IdempotencyLambdaHandlerOptions } from '../types'; import type { MiddlewareLikeObj, MiddyLikeRequest, JSONValue, -} from '@aws-lambda-powertools/commons'; +} from '@aws-lambda-powertools/commons/types'; /** * @internal diff --git a/packages/idempotency/src/persistence/BasePersistenceLayer.ts b/packages/idempotency/src/persistence/BasePersistenceLayer.ts index e90118d042..1f1ff33e84 100644 --- a/packages/idempotency/src/persistence/BasePersistenceLayer.ts +++ b/packages/idempotency/src/persistence/BasePersistenceLayer.ts @@ -10,7 +10,7 @@ import { IdempotencyValidationError, } from '../errors'; import { LRUCache } from './LRUCache'; -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; /** * Base class for all persistence layers. This class provides the basic functionality for diff --git a/packages/idempotency/src/persistence/IdempotencyRecord.ts b/packages/idempotency/src/persistence/IdempotencyRecord.ts index 7811bc7413..feb618ddf5 100644 --- a/packages/idempotency/src/persistence/IdempotencyRecord.ts +++ b/packages/idempotency/src/persistence/IdempotencyRecord.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import type { IdempotencyRecordOptions, IdempotencyRecordStatusValue, diff --git a/packages/idempotency/src/types/IdempotencyOptions.ts b/packages/idempotency/src/types/IdempotencyOptions.ts index 959d014321..ea929f765b 100644 --- a/packages/idempotency/src/types/IdempotencyOptions.ts +++ b/packages/idempotency/src/types/IdempotencyOptions.ts @@ -1,7 +1,7 @@ import type { Context } from 'aws-lambda'; import { BasePersistenceLayer } from '../persistence/BasePersistenceLayer'; import { IdempotencyConfig } from '../IdempotencyConfig'; -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; /** * Configuration options for the idempotency utility. diff --git a/packages/idempotency/src/types/IdempotencyRecord.ts b/packages/idempotency/src/types/IdempotencyRecord.ts index 251d9c3c45..b7fc48b0dc 100644 --- a/packages/idempotency/src/types/IdempotencyRecord.ts +++ b/packages/idempotency/src/types/IdempotencyRecord.ts @@ -1,4 +1,4 @@ -import type { JSONValue } from '@aws-lambda-powertools/commons'; +import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import { IdempotencyRecordStatus } from '../constants'; type IdempotencyRecordStatusValue = diff --git a/packages/idempotency/tests/e2e/idempotentDecorator.test.FunctionCode.ts b/packages/idempotency/tests/e2e/idempotentDecorator.test.FunctionCode.ts index 8dd29c0b29..4a6a64f1a9 100644 --- a/packages/idempotency/tests/e2e/idempotentDecorator.test.FunctionCode.ts +++ b/packages/idempotency/tests/e2e/idempotentDecorator.test.FunctionCode.ts @@ -1,5 +1,5 @@ import type { Context } from 'aws-lambda'; -import { LambdaInterface } from '@aws-lambda-powertools/commons'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import { idempotent } from '../../src'; import { Logger } from '../../../logger'; import { DynamoDBPersistenceLayer } from '../../src/persistence/DynamoDBPersistenceLayer'; diff --git a/packages/idempotency/tests/unit/idempotencyDecorator.test.ts b/packages/idempotency/tests/unit/idempotencyDecorator.test.ts index 1a293d8569..f12b9ae6d3 100644 --- a/packages/idempotency/tests/unit/idempotencyDecorator.test.ts +++ b/packages/idempotency/tests/unit/idempotencyDecorator.test.ts @@ -15,7 +15,7 @@ import { } from '../../src/errors'; import { IdempotencyConfig } from '../../src'; import { Context } from 'aws-lambda'; -import { helloworldContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; +import { ContextExamples as context } from '@aws-lambda-powertools/commons'; import { IdempotencyRecordStatus } from '../../src/constants'; const mockSaveInProgress = jest @@ -28,7 +28,7 @@ const mockGetRecord = jest .spyOn(BasePersistenceLayer.prototype, 'getRecord') .mockImplementation(); -const dummyContext = helloworldContext; +const dummyContext = context.helloworldContext; const mockConfig: IdempotencyConfig = new IdempotencyConfig({}); diff --git a/packages/idempotency/tests/unit/makeHandlerIdempotent.test.ts b/packages/idempotency/tests/unit/makeHandlerIdempotent.test.ts index db064e6f38..ae628dd121 100644 --- a/packages/idempotency/tests/unit/makeHandlerIdempotent.test.ts +++ b/packages/idempotency/tests/unit/makeHandlerIdempotent.test.ts @@ -4,8 +4,10 @@ * @group unit/idempotency/makeHandlerIdempotent */ import { makeHandlerIdempotent } from '../../src/middleware'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; -import { Custom as dummyEvent } from '@aws-lambda-powertools/commons/lib/samples/resources/events'; +import { + ContextExamples as dummyContext, + Events as dummyEvent, +} from '@aws-lambda-powertools/commons'; import { IdempotencyRecord } from '../../src/persistence'; import { IdempotencyInconsistentStateError, @@ -25,8 +27,8 @@ const remainingTImeInMillis = 1234; describe('Middleware: makeHandlerIdempotent', () => { const ENVIRONMENT_VARIABLES = process.env; - const context = dummyContext; - const event = dummyEvent.CustomEvent; + const context = dummyContext.helloworldContext; + const event = dummyEvent.Custom; beforeEach(() => { jest.clearAllMocks(); diff --git a/packages/idempotency/tests/unit/makeIdempotent.test.ts b/packages/idempotency/tests/unit/makeIdempotent.test.ts index d46bc7ad6b..da7b3ef194 100644 --- a/packages/idempotency/tests/unit/makeIdempotent.test.ts +++ b/packages/idempotency/tests/unit/makeIdempotent.test.ts @@ -11,8 +11,10 @@ import { IdempotencyPersistenceLayerError, } from '../../src/errors'; import { IdempotencyConfig } from '../../src'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; -import { Custom as dummyEvent } from '@aws-lambda-powertools/commons/lib/samples/resources/events'; +import { + ContextExamples as dummyContext, + Events as dummyEvent, +} from '@aws-lambda-powertools/commons'; import { MAX_RETRIES, IdempotencyRecordStatus } from '../../src/constants'; import { PersistenceLayerTestClass } from '../helpers/idempotencyUtils'; import type { Context } from 'aws-lambda'; @@ -24,8 +26,8 @@ const remainingTImeInMillis = 1234; describe('Function: makeIdempotent', () => { const ENVIRONMENT_VARIABLES = process.env; - const context = dummyContext; - const event = dummyEvent.CustomEvent; + const context = dummyContext.helloworldContext; + const event = dummyEvent.Custom; beforeEach(() => { jest.clearAllMocks(); From d0933ad89557bc62cb33e066d4e48f3975a1774c Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:38:03 +0200 Subject: [PATCH 10/11] chore(commons): test coverage --- packages/commons/tests/unit/awsSdkUtils.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/commons/tests/unit/awsSdkUtils.test.ts b/packages/commons/tests/unit/awsSdkUtils.test.ts index 953bbff79d..ca9dfbd401 100644 --- a/packages/commons/tests/unit/awsSdkUtils.test.ts +++ b/packages/commons/tests/unit/awsSdkUtils.test.ts @@ -1,6 +1,9 @@ -import { addUserAgentMiddleware, isSdkClient } from '../../src/index.js'; +import { + addUserAgentMiddleware, + isSdkClient, + PT_VERSION as version, +} from '../../src/index.js'; import { customUserAgentMiddleware } from '../../src/awsSdkUtils.js'; -import { PT_VERSION as version } from '../../src/version.js'; describe('Helpers: awsSdk', () => { describe('Function: userAgentMiddleware', () => { From 6ba910ab797857cddc2a338d59f7bdedc2e0d809 Mon Sep 17 00:00:00 2001 From: Andrea Amorosi Date: Thu, 12 Oct 2023 01:42:13 +0200 Subject: [PATCH 11/11] chore(batch): fix imports --- .../batch/tests/unit/BatchProcessor.test.ts | 6 +++-- .../tests/unit/BatchProcessorSync.test.ts | 6 +++-- .../tests/unit/processPartialResponse.test.ts | 22 ++++++++++------- .../unit/processPartialResponseSync.test.ts | 24 ++++++++++++------- 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/packages/batch/tests/unit/BatchProcessor.test.ts b/packages/batch/tests/unit/BatchProcessor.test.ts index 99cb2245e5..3243c1a4a0 100644 --- a/packages/batch/tests/unit/BatchProcessor.test.ts +++ b/packages/batch/tests/unit/BatchProcessor.test.ts @@ -4,7 +4,7 @@ * @group unit/batch/class/asyncBatchProcessor */ import type { Context } from 'aws-lambda'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; +import { ContextExamples as dummyContext } from '@aws-lambda-powertools/commons'; import { BatchProcessor } from '../../src/BatchProcessor'; import { EventType } from '../../src/constants'; import { BatchProcessingError, FullBatchFailureError } from '../../src/errors'; @@ -23,7 +23,9 @@ import { describe('Class: AsyncBatchProcessor', () => { const ENVIRONMENT_VARIABLES = process.env; - const options: BatchProcessingOptions = { context: dummyContext }; + const options: BatchProcessingOptions = { + context: dummyContext.helloworldContext, + }; beforeEach(() => { jest.clearAllMocks(); diff --git a/packages/batch/tests/unit/BatchProcessorSync.test.ts b/packages/batch/tests/unit/BatchProcessorSync.test.ts index 4f77d299cc..506e192d02 100644 --- a/packages/batch/tests/unit/BatchProcessorSync.test.ts +++ b/packages/batch/tests/unit/BatchProcessorSync.test.ts @@ -4,7 +4,7 @@ * @group unit/batch/class/batchprocessor */ import type { Context } from 'aws-lambda'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; +import { ContextExamples as dummyContext } from '@aws-lambda-powertools/commons'; import { BatchProcessorSync } from '../../src/BatchProcessorSync'; import { EventType } from '../../src/constants'; import { BatchProcessingError, FullBatchFailureError } from '../../src/errors'; @@ -23,7 +23,9 @@ import { describe('Class: BatchProcessor', () => { const ENVIRONMENT_VARIABLES = process.env; - const options: BatchProcessingOptions = { context: dummyContext }; + const options: BatchProcessingOptions = { + context: dummyContext.helloworldContext, + }; beforeEach(() => { jest.clearAllMocks(); diff --git a/packages/batch/tests/unit/processPartialResponse.test.ts b/packages/batch/tests/unit/processPartialResponse.test.ts index 2dbe585b45..d344eb7883 100644 --- a/packages/batch/tests/unit/processPartialResponse.test.ts +++ b/packages/batch/tests/unit/processPartialResponse.test.ts @@ -9,8 +9,10 @@ import type { KinesisStreamEvent, SQSEvent, } from 'aws-lambda'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; -import { Custom as dummyEvent } from '@aws-lambda-powertools/commons/lib/samples/resources/events'; +import { + ContextExamples as dummyContext, + Events as dummyEvent, +} from '@aws-lambda-powertools/commons'; import { BatchProcessor } from '../../src/BatchProcessor'; import { processPartialResponse } from '../../src/processPartialResponse'; import { EventType } from '../../src/constants'; @@ -33,7 +35,9 @@ import { describe('Function: processPartialResponse()', () => { const ENVIRONMENT_VARIABLES = process.env; const context = dummyContext; - const options: BatchProcessingOptions = { context: dummyContext }; + const options: BatchProcessingOptions = { + context: dummyContext.helloworldContext, + }; beforeEach(() => { jest.clearAllMocks(); @@ -106,7 +110,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = await handler(event, context); + const result = await handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); @@ -133,7 +137,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = await handler(event, context); + const result = await handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); @@ -160,7 +164,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = await handler(event, context); + const result = await handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); @@ -169,7 +173,7 @@ describe('Function: processPartialResponse()', () => { test('Process partial response through handler for SQS records with incorrect event type', async () => { // Prepare const processor = new BatchProcessor(EventType.SQS); - const event = dummyEvent; + const event = dummyEvent.Custom; const handler = async ( event: SQSEvent, @@ -184,7 +188,7 @@ describe('Function: processPartialResponse()', () => { // Act & Assess await expect(() => - handler(event as unknown as SQSEvent, context) + handler(event as unknown as SQSEvent, context.helloworldContext) ).rejects.toThrowError( `Unexpected batch type. Possible values are: ${Object.keys( EventType @@ -216,7 +220,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = await handler(event, context); + const result = await handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); diff --git a/packages/batch/tests/unit/processPartialResponseSync.test.ts b/packages/batch/tests/unit/processPartialResponseSync.test.ts index 4c3e9a47a5..426428f5d4 100644 --- a/packages/batch/tests/unit/processPartialResponseSync.test.ts +++ b/packages/batch/tests/unit/processPartialResponseSync.test.ts @@ -9,8 +9,10 @@ import type { KinesisStreamEvent, SQSEvent, } from 'aws-lambda'; -import { helloworldContext as dummyContext } from '@aws-lambda-powertools/commons/lib/samples/resources/contexts'; -import { Custom as dummyEvent } from '@aws-lambda-powertools/commons/lib/samples/resources/events'; +import { + ContextExamples as dummyContext, + Events as dummyEvent, +} from '@aws-lambda-powertools/commons'; import { BatchProcessorSync } from '../../src/BatchProcessorSync'; import { processPartialResponseSync } from '../../src/processPartialResponseSync'; import { EventType } from '../../src/constants'; @@ -33,7 +35,9 @@ import { describe('Function: processPartialResponse()', () => { const ENVIRONMENT_VARIABLES = process.env; const context = dummyContext; - const options: BatchProcessingOptions = { context: dummyContext }; + const options: BatchProcessingOptions = { + context: dummyContext.helloworldContext, + }; beforeEach(() => { jest.clearAllMocks(); @@ -106,7 +110,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = handler(event, context); + const result = handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); @@ -133,7 +137,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = handler(event, context); + const result = handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); @@ -160,7 +164,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = handler(event, context); + const result = handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] }); @@ -169,7 +173,7 @@ describe('Function: processPartialResponse()', () => { test('Process partial response through handler for SQS records with incorrect event type', () => { // Prepare const processor = new BatchProcessorSync(EventType.SQS); - const event = dummyEvent; + const event = dummyEvent.Custom; const handler = ( event: SQSEvent, @@ -179,7 +183,9 @@ describe('Function: processPartialResponse()', () => { }; // Act & Assess - expect(() => handler(event as unknown as SQSEvent, context)).toThrowError( + expect(() => + handler(event as unknown as SQSEvent, context.helloworldContext) + ).toThrowError( `Unexpected batch type. Possible values are: ${Object.keys( EventType ).join(', ')}` @@ -210,7 +216,7 @@ describe('Function: processPartialResponse()', () => { }; // Act - const result = handler(event, context); + const result = handler(event, context.helloworldContext); // Assess expect(result).toStrictEqual({ batchItemFailures: [] });