diff --git a/packages/parameters/jest.config.js b/packages/parameters/jest.config.cjs similarity index 93% rename from packages/parameters/jest.config.js rename to packages/parameters/jest.config.cjs index 64f709a02..d06944c4d 100644 --- a/packages/parameters/jest.config.js +++ b/packages/parameters/jest.config.cjs @@ -5,6 +5,9 @@ module.exports = { }, runner: 'groups', preset: 'ts-jest', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, transform: { '^.+\\.ts?$': 'ts-jest', }, diff --git a/packages/parameters/package.json b/packages/parameters/package.json index 8cdfca28b..9a6bfb4f5 100644 --- a/packages/parameters/package.json +++ b/packages/parameters/package.json @@ -17,11 +17,13 @@ "test:e2e:nodejs20x": "RUNTIME=nodejs20x jest --group=e2e", "test:e2e": "jest --group=e2e", "watch": "jest --watch", - "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" @@ -30,93 +32,110 @@ "license": "MIT-0", "exports": { ".": { - "import": "./lib/index.js", - "require": "./lib/index.js" + "require": { + "types": "./lib/cjs/index.d.ts", + "default": "./lib/cjs/index.js" + }, + "import": { + "types": "./lib/esm/index.d.ts", + "default": "./lib/esm/index.js" + } }, "./base/types": { - "import": "./lib/types/BaseProvider.d.ts", - "require": "./lib/types/BaseProvider.d.ts" + "import": "./lib/esm/types/BaseProvider.d.ts", + "require": "./lib/cjs/types/BaseProvider.d.ts" }, "./base": { - "import": "./lib/base/index.js", - "require": "./lib/base/index.js" + "import": "./lib/esm/base/index.js", + "require": "./lib/cjs/base/index.js" }, "./ssm/types": { - "import": "./lib/types/SSMProvider.d.ts", - "require": "./lib/types/SSMProvider.d.ts" + "import": "./lib/esm/types/SSMProvider.d.ts", + "require": "./lib/cjs/types/SSMProvider.d.ts" }, "./ssm": { - "import": "./lib/ssm/index.js", - "require": "./lib/ssm/index.js" + "import": "./lib/esm/ssm/index.js", + "require": "./lib/cjs/ssm/index.js" }, "./secrets/types": { - "import": "./lib/types/SecretsProvider.d.ts", - "require": "./lib/types/SecretsProvider.d.ts" + "import": "./lib/esm/types/SecretsProvider.d.ts", + "require": "./lib/cjs/types/SecretsProvider.d.ts" }, "./secrets": { - "import": "./lib/secrets/index.js", - "require": "./lib/secrets/index.js" + "import": "./lib/esm/secrets/index.js", + "require": "./lib/cjs/secrets/index.js" }, "./dynamodb/types": { - "import": "./lib/types/AppConfigProvider.d.ts", - "require": "./lib/types/AppConfigProvider.d.ts" + "import": "./lib/esm/types/AppConfigProvider.d.ts", + "require": "./lib/cjs/types/AppConfigProvider.d.ts" }, "./dynamodb": { - "import": "./lib/dynamodb/index.js", - "require": "./lib/dynamodb/index.js" + "import": "./lib/esm/dynamodb/index.js", + "require": "./lib/cjs/dynamodb/index.js" }, "./appconfig/types": { - "import": "./lib/appconfig/index.js", - "require": "./lib/appconfig/index.js" + "import": "./lib/esm/appconfig/index.js", + "require": "./lib/cjs/appconfig/index.js" }, "./appconfig": { - "import": "./lib/appconfig/index.js", - "require": "./lib/appconfig/index.js" + "import": "./lib/esm/appconfig/index.js", + "require": "./lib/cjs/appconfig/index.js" }, "./errors": { - "import": "./lib/errors.js", - "require": "./lib/errors.js" + "import": "./lib/esm/errors.js", + "require": "./lib/cjs/errors.js" } }, "typesVersions": { "*": { "base/types": [ - "lib/types/BaseProvider.d.ts" + "lib/cjs/types/BaseProvider.d.ts", + "lib/esm/types/BaseProvider.d.ts" ], "base": [ - "lib/base/index.d.ts" + "lib/cjs/base/index.d.ts", + "lib/esm/base/index.d.ts" ], "ssm/types": [ - "lib/types/SSMProvider.d.ts" + "lib/cjs/types/SSMProvider.d.ts", + "lib/esm/types/SSMProvider.d.ts" ], "ssm": [ - "lib/ssm/index.d.ts" + "lib/cjs/ssm/index.d.ts", + "lib/esm/ssm/index.d.ts" ], "secrets/types": [ - "lib/types/SecretsProvider.d.ts" + "lib/cjs/types/SecretsProvider.d.ts", + "lib/esm/types/SecretsProvider.d.ts" ], "secrets": [ - "lib/secrets/index.d.ts" + "lib/cjs/secrets/index.d.ts", + "lib/esm/secrets/index.d.ts" ], "dynamodb/types": [ - "./lib/types/DynamoDBProvider.d.ts" + "./lib/cjs/types/DynamoDBProvider.d.ts", + "./lib/esm/types/DynamoDBProvider.d.ts" ], "dynamodb": [ - "lib/dynamodb/index.d.ts" + "lib/cjs/dynamodb/index.d.ts", + "lib/esm/dynamodb/index.d.ts" ], "appconfig/types": [ - "./lib/types/AppConfigProvider.d.ts" + "./lib/cjs/types/AppConfigProvider.d.ts", + "./lib/esm/types/AppConfigProvider.d.ts" ], "appconfig": [ - "lib/appconfig/index.d.ts" + "lib/cjs/appconfig/index.d.ts", + "lib/esm/appconfig/index.d.ts" ], "errors": [ - "lib/errors.d.ts" + "lib/cjs/errors.d.ts", + "lib/esm/errors.d.ts" ] } }, - "main": "./lib/index.js", - "types": "./lib/index.d.ts", + "types": "./lib/cjs/index.d.ts", + "main": "./lib/cjs/index.js", "files": [ "lib" ], diff --git a/packages/parameters/src/appconfig/AppConfigProvider.ts b/packages/parameters/src/appconfig/AppConfigProvider.ts index bf61526b6..576bb2210 100644 --- a/packages/parameters/src/appconfig/AppConfigProvider.ts +++ b/packages/parameters/src/appconfig/AppConfigProvider.ts @@ -1,4 +1,4 @@ -import { BaseProvider, DEFAULT_PROVIDERS } from '../base'; +import { BaseProvider } from '../base/BaseProvider.js'; import { AppConfigDataClient, StartConfigurationSessionCommand, @@ -9,8 +9,8 @@ import type { AppConfigProviderOptions, AppConfigGetOptions, AppConfigGetOutput, -} from '../types/AppConfigProvider'; -import { APPCONFIG_TOKEN_EXPIRATION } from '../constants'; +} from '../types/AppConfigProvider.js'; +import { APPCONFIG_TOKEN_EXPIRATION } from '../constants.js'; /** * ## Intro @@ -361,4 +361,4 @@ class AppConfigProvider extends BaseProvider { } } -export { AppConfigProvider, DEFAULT_PROVIDERS }; +export { AppConfigProvider }; diff --git a/packages/parameters/src/appconfig/getAppConfig.ts b/packages/parameters/src/appconfig/getAppConfig.ts index 94d0a95e9..f7ec65f7f 100644 --- a/packages/parameters/src/appconfig/getAppConfig.ts +++ b/packages/parameters/src/appconfig/getAppConfig.ts @@ -1,8 +1,9 @@ -import { AppConfigProvider, DEFAULT_PROVIDERS } from './AppConfigProvider'; +import { AppConfigProvider } from './AppConfigProvider.js'; +import { DEFAULT_PROVIDERS } from '../base/index.js'; import type { AppConfigGetOutput, GetAppConfigOptions, -} from '../types/AppConfigProvider'; +} from '../types/AppConfigProvider.js'; /** * ## Intro diff --git a/packages/parameters/src/appconfig/index.ts b/packages/parameters/src/appconfig/index.ts index 9b8a24a5a..39d7f59dd 100644 --- a/packages/parameters/src/appconfig/index.ts +++ b/packages/parameters/src/appconfig/index.ts @@ -1,2 +1,2 @@ -export * from './AppConfigProvider'; -export * from './getAppConfig'; +export { AppConfigProvider } from './AppConfigProvider.js'; +export { getAppConfig } from './getAppConfig.js'; diff --git a/packages/parameters/src/base/BaseProvider.ts b/packages/parameters/src/base/BaseProvider.ts index 494c44ab0..739913e3a 100644 --- a/packages/parameters/src/base/BaseProvider.ts +++ b/packages/parameters/src/base/BaseProvider.ts @@ -5,17 +5,17 @@ import { isSdkClient, isString, } from '@aws-lambda-powertools/commons'; -import { GetOptions } from './GetOptions'; -import { GetMultipleOptions } from './GetMultipleOptions'; -import { ExpirableValue } from './ExpirableValue'; -import { GetParameterError, TransformParameterError } from '../errors'; -import { EnvironmentVariablesService } from '../config/EnvironmentVariablesService'; -import { transformValue } from './transformValue'; +import { GetOptions } from './GetOptions.js'; +import { GetMultipleOptions } from './GetMultipleOptions.js'; +import { ExpirableValue } from './ExpirableValue.js'; +import { GetParameterError, TransformParameterError } from '../errors.js'; +import { EnvironmentVariablesService } from '../config/EnvironmentVariablesService.js'; +import { transformValue } from './transformValue.js'; import type { BaseProviderInterface, GetMultipleOptionsInterface, GetOptionsInterface, -} from '../types/BaseProvider'; +} from '../types/BaseProvider.js'; /** * Base class for all providers. diff --git a/packages/parameters/src/base/DefaultProviders.ts b/packages/parameters/src/base/DefaultProviders.ts index 692dacdcc..03832b4e8 100644 --- a/packages/parameters/src/base/DefaultProviders.ts +++ b/packages/parameters/src/base/DefaultProviders.ts @@ -1,4 +1,4 @@ -import type { BaseProviderInterface } from '../types/BaseProvider'; +import type { BaseProviderInterface } from '../types/BaseProvider.js'; // These providers are dinamycally intialized on first use of the helper functions const DEFAULT_PROVIDERS: Record = {}; diff --git a/packages/parameters/src/base/ExpirableValue.ts b/packages/parameters/src/base/ExpirableValue.ts index 7793319e5..d9d213c71 100644 --- a/packages/parameters/src/base/ExpirableValue.ts +++ b/packages/parameters/src/base/ExpirableValue.ts @@ -1,4 +1,4 @@ -import type { ExpirableValueInterface } from '../types/BaseProvider'; +import type { ExpirableValueInterface } from '../types/BaseProvider.js'; /** * Class to represent a value that can expire. diff --git a/packages/parameters/src/base/GetMultipleOptions.ts b/packages/parameters/src/base/GetMultipleOptions.ts index d452062e4..1bf2ca551 100644 --- a/packages/parameters/src/base/GetMultipleOptions.ts +++ b/packages/parameters/src/base/GetMultipleOptions.ts @@ -1,6 +1,6 @@ -import { GetOptions } from './GetOptions'; -import { EnvironmentVariablesService } from '../config/EnvironmentVariablesService'; -import type { GetMultipleOptionsInterface } from '../types/BaseProvider'; +import { GetOptions } from './GetOptions.js'; +import { EnvironmentVariablesService } from '../config/EnvironmentVariablesService.js'; +import type { GetMultipleOptionsInterface } from '../types/BaseProvider.js'; /** * Options for the `getMultiple` method. diff --git a/packages/parameters/src/base/GetOptions.ts b/packages/parameters/src/base/GetOptions.ts index e83d0a622..1128f47fa 100644 --- a/packages/parameters/src/base/GetOptions.ts +++ b/packages/parameters/src/base/GetOptions.ts @@ -1,9 +1,9 @@ -import { EnvironmentVariablesService } from '../config/EnvironmentVariablesService'; -import { DEFAULT_MAX_AGE_SECS } from '../constants'; +import { EnvironmentVariablesService } from '../config/EnvironmentVariablesService.js'; +import { DEFAULT_MAX_AGE_SECS } from '../constants.js'; import type { GetOptionsInterface, TransformOptions, -} from '../types/BaseProvider'; +} from '../types/BaseProvider.js'; /** * Options for the `get` method. diff --git a/packages/parameters/src/base/index.ts b/packages/parameters/src/base/index.ts index 2833869ad..9705d1348 100644 --- a/packages/parameters/src/base/index.ts +++ b/packages/parameters/src/base/index.ts @@ -1,4 +1,4 @@ -export * from './DefaultProviders'; -export * from './BaseProvider'; -export * from './GetOptions'; -export * from './GetMultipleOptions'; +export { BaseProvider } from './BaseProvider.js'; +export { DEFAULT_PROVIDERS, clearCaches } from './DefaultProviders.js'; +export { GetOptions } from './GetOptions.js'; +export { GetMultipleOptions } from './GetMultipleOptions.js'; diff --git a/packages/parameters/src/base/transformValue.ts b/packages/parameters/src/base/transformValue.ts index 0d5a17510..3dc1c3fce 100644 --- a/packages/parameters/src/base/transformValue.ts +++ b/packages/parameters/src/base/transformValue.ts @@ -1,9 +1,12 @@ 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'; -import { TransformParameterError } from '../errors'; -import type { TransformOptions } from '../types/BaseProvider'; +import { + TRANSFORM_METHOD_BINARY, + TRANSFORM_METHOD_JSON, +} from '../constants.js'; +import { TransformParameterError } from '../errors.js'; +import type { TransformOptions } from '../types/BaseProvider.js'; /** * Utility function to transform a value. diff --git a/packages/parameters/src/config/EnvironmentVariablesService.ts b/packages/parameters/src/config/EnvironmentVariablesService.ts index 3ae96c5d5..23744e748 100644 --- a/packages/parameters/src/config/EnvironmentVariablesService.ts +++ b/packages/parameters/src/config/EnvironmentVariablesService.ts @@ -1,5 +1,5 @@ -import { ConfigServiceInterface } from './ConfigServiceInterface'; -import { DEFAULT_MAX_AGE_SECS } from '../constants'; +import { ConfigServiceInterface } from '../types/ConfigServiceInterface.js'; +import { DEFAULT_MAX_AGE_SECS } from '../constants.js'; import { EnvironmentVariablesService as CommonEnvironmentVariablesService } from '@aws-lambda-powertools/commons'; class EnvironmentVariablesService diff --git a/packages/parameters/src/dynamodb/DynamoDBProvider.ts b/packages/parameters/src/dynamodb/DynamoDBProvider.ts index 0468c2aab..4bbd0bae2 100644 --- a/packages/parameters/src/dynamodb/DynamoDBProvider.ts +++ b/packages/parameters/src/dynamodb/DynamoDBProvider.ts @@ -1,4 +1,4 @@ -import { BaseProvider } from '../base'; +import { BaseProvider } from '../base/BaseProvider.js'; import { DynamoDBClient, GetItemCommand, @@ -12,7 +12,7 @@ import type { DynamoDBGetMultipleOptions, DynamoDBGetOutput, DynamoDBGetMultipleOutput, -} from '../types/DynamoDBProvider'; +} from '../types/DynamoDBProvider.js'; import type { GetItemCommandInput, QueryCommandInput, diff --git a/packages/parameters/src/dynamodb/index.ts b/packages/parameters/src/dynamodb/index.ts index 65bb79292..2165ec960 100644 --- a/packages/parameters/src/dynamodb/index.ts +++ b/packages/parameters/src/dynamodb/index.ts @@ -1 +1 @@ -export * from './DynamoDBProvider'; +export { DynamoDBProvider } from './DynamoDBProvider.js'; diff --git a/packages/parameters/src/index.ts b/packages/parameters/src/index.ts index 13cad811c..3142feda2 100644 --- a/packages/parameters/src/index.ts +++ b/packages/parameters/src/index.ts @@ -1,2 +1,2 @@ -export * from './errors'; -export * from './constants'; +export * from './errors.js'; +export * from './constants.js'; diff --git a/packages/parameters/src/secrets/SecretsProvider.ts b/packages/parameters/src/secrets/SecretsProvider.ts index fbc6cf095..01a8360af 100644 --- a/packages/parameters/src/secrets/SecretsProvider.ts +++ b/packages/parameters/src/secrets/SecretsProvider.ts @@ -1,4 +1,4 @@ -import { BaseProvider } from '../base'; +import { BaseProvider } from '../base/BaseProvider.js'; import { SecretsManagerClient, GetSecretValueCommand, @@ -8,7 +8,7 @@ import type { SecretsProviderOptions, SecretsGetOptions, SecretsGetOutput, -} from '../types/SecretsProvider'; +} from '../types/SecretsProvider.js'; /** * ## Intro diff --git a/packages/parameters/src/secrets/getSecret.ts b/packages/parameters/src/secrets/getSecret.ts index 1a0432ecf..ef84d5d58 100644 --- a/packages/parameters/src/secrets/getSecret.ts +++ b/packages/parameters/src/secrets/getSecret.ts @@ -1,9 +1,9 @@ -import { DEFAULT_PROVIDERS } from '../base'; -import { SecretsProvider } from './SecretsProvider'; +import { DEFAULT_PROVIDERS } from '../base/DefaultProviders.js'; +import { SecretsProvider } from './SecretsProvider.js'; import type { SecretsGetOptions, SecretsGetOutput, -} from '../types/SecretsProvider'; +} from '../types/SecretsProvider.js'; /** * ## Intro diff --git a/packages/parameters/src/secrets/index.ts b/packages/parameters/src/secrets/index.ts index 5e54bcec5..6bb75d813 100644 --- a/packages/parameters/src/secrets/index.ts +++ b/packages/parameters/src/secrets/index.ts @@ -1,2 +1,2 @@ -export * from './SecretsProvider'; -export * from './getSecret'; +export { SecretsProvider } from './SecretsProvider.js'; +export { getSecret } from './getSecret.js'; diff --git a/packages/parameters/src/ssm/SSMProvider.ts b/packages/parameters/src/ssm/SSMProvider.ts index c3f4c8e87..cb3fb82b2 100644 --- a/packages/parameters/src/ssm/SSMProvider.ts +++ b/packages/parameters/src/ssm/SSMProvider.ts @@ -1,7 +1,7 @@ -import { BaseProvider, DEFAULT_PROVIDERS } from '../base'; -import { transformValue } from '../base/transformValue'; -import { GetParameterError } from '../errors'; -import { DEFAULT_MAX_AGE_SECS } from '../constants'; +import { BaseProvider } from '../base/BaseProvider.js'; +import { transformValue } from '../base/transformValue.js'; +import { GetParameterError } from '../errors.js'; +import { DEFAULT_MAX_AGE_SECS } from '../constants.js'; import { SSMClient, GetParameterCommand, @@ -25,7 +25,7 @@ import type { SSMGetParametersByNameOptions, SSMSplitBatchAndDecryptParametersOutputType, SSMGetParametersByNameFromCacheOutputType, -} from '../types/SSMProvider'; +} from '../types/SSMProvider.js'; import type { PaginationConfiguration } from '@aws-sdk/types'; /** @@ -902,4 +902,4 @@ class SSMProvider extends BaseProvider { } } -export { SSMProvider, DEFAULT_PROVIDERS }; +export { SSMProvider }; diff --git a/packages/parameters/src/ssm/getParameter.ts b/packages/parameters/src/ssm/getParameter.ts index 55144a232..0f9e452a6 100644 --- a/packages/parameters/src/ssm/getParameter.ts +++ b/packages/parameters/src/ssm/getParameter.ts @@ -1,5 +1,6 @@ -import { SSMProvider, DEFAULT_PROVIDERS } from './SSMProvider'; -import type { SSMGetOptions, SSMGetOutput } from '../types/SSMProvider'; +import { DEFAULT_PROVIDERS } from '../base/DefaultProviders.js'; +import { SSMProvider } from './SSMProvider.js'; +import type { SSMGetOptions, SSMGetOutput } from '../types/SSMProvider.js'; /** * ## Intro diff --git a/packages/parameters/src/ssm/getParameters.ts b/packages/parameters/src/ssm/getParameters.ts index 9c93aee93..7f2a3b1fc 100644 --- a/packages/parameters/src/ssm/getParameters.ts +++ b/packages/parameters/src/ssm/getParameters.ts @@ -1,8 +1,9 @@ -import { SSMProvider, DEFAULT_PROVIDERS } from './SSMProvider'; +import { DEFAULT_PROVIDERS } from '../base/DefaultProviders.js'; +import { SSMProvider } from './SSMProvider.js'; import type { SSMGetMultipleOptions, SSMGetMultipleOutput, -} from '../types/SSMProvider'; +} from '../types/SSMProvider.js'; /** * ## Intro diff --git a/packages/parameters/src/ssm/getParametersByName.ts b/packages/parameters/src/ssm/getParametersByName.ts index 973a69019..72128db5a 100644 --- a/packages/parameters/src/ssm/getParametersByName.ts +++ b/packages/parameters/src/ssm/getParametersByName.ts @@ -1,8 +1,9 @@ -import { SSMProvider, DEFAULT_PROVIDERS } from './SSMProvider'; +import { DEFAULT_PROVIDERS } from '../base/DefaultProviders.js'; +import { SSMProvider } from './SSMProvider.js'; import type { SSMGetParametersByNameOptions, SSMGetParametersByNameOutput, -} from '../types/SSMProvider'; +} from '../types/SSMProvider.js'; /** * ## Intro diff --git a/packages/parameters/src/ssm/index.ts b/packages/parameters/src/ssm/index.ts index 2efdcd695..ffa9aba3a 100644 --- a/packages/parameters/src/ssm/index.ts +++ b/packages/parameters/src/ssm/index.ts @@ -1,4 +1,4 @@ -export * from './SSMProvider'; -export * from './getParameter'; -export * from './getParameters'; -export * from './getParametersByName'; +export { SSMProvider } from './SSMProvider.js'; +export { getParameter } from './getParameter.js'; +export { getParameters } from './getParameters.js'; +export { getParametersByName } from './getParametersByName.js'; diff --git a/packages/parameters/src/types/AppConfigProvider.ts b/packages/parameters/src/types/AppConfigProvider.ts index 4796db871..64dc4ee17 100644 --- a/packages/parameters/src/types/AppConfigProvider.ts +++ b/packages/parameters/src/types/AppConfigProvider.ts @@ -4,7 +4,7 @@ import type { AppConfigDataClientConfig, StartConfigurationSessionCommandInput, } from '@aws-sdk/client-appconfigdata'; -import type { GetOptionsInterface } from './BaseProvider'; +import type { GetOptionsInterface } from './BaseProvider.js'; /** * Base interface for AppConfigProviderOptions. diff --git a/packages/parameters/src/types/BaseProvider.ts b/packages/parameters/src/types/BaseProvider.ts index 5a8297046..f773a7267 100644 --- a/packages/parameters/src/types/BaseProvider.ts +++ b/packages/parameters/src/types/BaseProvider.ts @@ -1,4 +1,4 @@ -import { Transform } from '../constants'; +import { Transform } from '../constants.js'; /** * Type for the transform option. diff --git a/packages/parameters/src/config/ConfigServiceInterface.ts b/packages/parameters/src/types/ConfigServiceInterface.ts similarity index 100% rename from packages/parameters/src/config/ConfigServiceInterface.ts rename to packages/parameters/src/types/ConfigServiceInterface.ts diff --git a/packages/parameters/src/types/DynamoDBProvider.ts b/packages/parameters/src/types/DynamoDBProvider.ts index f9c316580..97b624163 100644 --- a/packages/parameters/src/types/DynamoDBProvider.ts +++ b/packages/parameters/src/types/DynamoDBProvider.ts @@ -8,7 +8,7 @@ import type { import type { GetMultipleOptionsInterface, GetOptionsInterface, -} from './BaseProvider'; +} from './BaseProvider.js'; /** * Base interface for DynamoDBProviderOptions. diff --git a/packages/parameters/src/types/SSMProvider.ts b/packages/parameters/src/types/SSMProvider.ts index 7802f085a..b647fe29c 100644 --- a/packages/parameters/src/types/SSMProvider.ts +++ b/packages/parameters/src/types/SSMProvider.ts @@ -9,7 +9,7 @@ import type { GetMultipleOptionsInterface, GetOptionsInterface, TransformOptions, -} from './BaseProvider'; +} from './BaseProvider.js'; /** * Interface for SSMProvider with clientConfig property. diff --git a/packages/parameters/src/types/SecretsProvider.ts b/packages/parameters/src/types/SecretsProvider.ts index 96cd907b2..9e2c492f3 100644 --- a/packages/parameters/src/types/SecretsProvider.ts +++ b/packages/parameters/src/types/SecretsProvider.ts @@ -4,7 +4,7 @@ import type { SecretsManagerClient, SecretsManagerClientConfig, } from '@aws-sdk/client-secrets-manager'; -import type { GetOptionsInterface, TransformOptions } from './BaseProvider'; +import type { GetOptionsInterface, TransformOptions } from './BaseProvider.js'; /** * Base interface for SecretsProviderOptions. diff --git a/packages/parameters/tests/e2e/appConfigProvider.class.test.functionCode.ts b/packages/parameters/tests/e2e/appConfigProvider.class.test.functionCode.ts index 48735b703..c55193326 100644 --- a/packages/parameters/tests/e2e/appConfigProvider.class.test.functionCode.ts +++ b/packages/parameters/tests/e2e/appConfigProvider.class.test.functionCode.ts @@ -1,9 +1,9 @@ import type { Context } from 'aws-lambda'; -import { Transform } from '../../src'; -import { AppConfigProvider } from '../../src/appconfig'; -import { AppConfigGetOptions } from '../../src/types/AppConfigProvider'; -import { TinyLogger } from '../helpers/tinyLogger'; -import { middleware } from '../helpers/sdkMiddlewareRequestCounter'; +import { Transform } from '../../src/constants.js'; +import { AppConfigProvider } from '../../src/appconfig/AppConfigProvider.js'; +import { AppConfigGetOptions } from '../../src/types/AppConfigProvider.js'; +import { TinyLogger } from '../helpers/tinyLogger.js'; +import { middleware } from '../helpers/sdkMiddlewareRequestCounter.js'; import { AppConfigDataClient } from '@aws-sdk/client-appconfigdata'; // We use a custom logger to log pure JSON objects to stdout diff --git a/packages/parameters/tests/e2e/appConfigProvider.class.test.ts b/packages/parameters/tests/e2e/appConfigProvider.class.test.ts index 6d28b3ef0..35c150840 100644 --- a/packages/parameters/tests/e2e/appConfigProvider.class.test.ts +++ b/packages/parameters/tests/e2e/appConfigProvider.class.test.ts @@ -11,13 +11,13 @@ import { } from '@aws-lambda-powertools/testing-utils'; import { toBase64 } from '@aws-sdk/util-base64-node'; import { join } from 'node:path'; -import { TestAppConfigWithProfiles } from '../helpers/resources'; +import { TestAppConfigWithProfiles } from '../helpers/resources.js'; import { RESOURCE_NAME_PREFIX, SETUP_TIMEOUT, TEARDOWN_TIMEOUT, TEST_CASE_TIMEOUT, -} from './constants'; +} from './constants.js'; /** * This test suite deploys a CDK stack with a Lambda function and a number of AppConfig parameters. diff --git a/packages/parameters/tests/e2e/dynamoDBProvider.class.test.functionCode.ts b/packages/parameters/tests/e2e/dynamoDBProvider.class.test.functionCode.ts index 88f1eccd2..808bb188e 100644 --- a/packages/parameters/tests/e2e/dynamoDBProvider.class.test.functionCode.ts +++ b/packages/parameters/tests/e2e/dynamoDBProvider.class.test.functionCode.ts @@ -1,12 +1,12 @@ import type { Context } from 'aws-lambda'; -import { Transform } from '../../src'; -import { DynamoDBProvider } from '../../src/dynamodb'; +import { Transform } from '../../src/constants.js'; +import { DynamoDBProvider } from '../../src/dynamodb/DynamoDBProvider.js'; import { DynamoDBGetOptions, DynamoDBGetMultipleOptions, -} from '../../src/types/DynamoDBProvider'; -import { TinyLogger } from '../helpers/tinyLogger'; -import { middleware } from '../helpers/sdkMiddlewareRequestCounter'; +} from '../../src/types/DynamoDBProvider.js'; +import { TinyLogger } from '../helpers/tinyLogger.js'; +import { middleware } from '../helpers/sdkMiddlewareRequestCounter.js'; import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; // We use a custom logger to log pure JSON objects to stdout diff --git a/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts b/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts index dfc730d46..391d215f7 100644 --- a/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts +++ b/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts @@ -11,13 +11,13 @@ import { } from '@aws-lambda-powertools/testing-utils'; import { AttributeType } from 'aws-cdk-lib/aws-dynamodb'; import { join } from 'node:path'; -import { TestDynamodbTableWithItems } from '../helpers/resources'; +import { TestDynamodbTableWithItems } from '../helpers/resources.js'; import { RESOURCE_NAME_PREFIX, SETUP_TIMEOUT, TEARDOWN_TIMEOUT, TEST_CASE_TIMEOUT, -} from './constants'; +} from './constants.js'; /** * This test suite deploys a CDK stack with a Lambda function and a number of DynamoDB tables. diff --git a/packages/parameters/tests/e2e/secretsProvider.class.test.functionCode.ts b/packages/parameters/tests/e2e/secretsProvider.class.test.functionCode.ts index e7526fdef..4c0448489 100644 --- a/packages/parameters/tests/e2e/secretsProvider.class.test.functionCode.ts +++ b/packages/parameters/tests/e2e/secretsProvider.class.test.functionCode.ts @@ -1,10 +1,10 @@ import { Context } from 'aws-lambda'; -import { TinyLogger } from '../helpers/tinyLogger'; +import { TinyLogger } from '../helpers/tinyLogger.js'; import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager'; -import { middleware } from '../helpers/sdkMiddlewareRequestCounter'; -import { Transform } from '../../src'; -import { SecretsProvider } from '../../src/secrets'; -import { SecretsGetOptions } from '../../src/types/SecretsProvider'; +import { middleware } from '../helpers/sdkMiddlewareRequestCounter.js'; +import { Transform } from '../../src/constants.js'; +import { SecretsProvider } from '../../src/secrets/SecretsProvider.js'; +import { SecretsGetOptions } from '../../src/types/SecretsProvider.js'; const logger = new TinyLogger(); const defaultProvider = new SecretsProvider(); diff --git a/packages/parameters/tests/e2e/secretsProvider.class.test.ts b/packages/parameters/tests/e2e/secretsProvider.class.test.ts index 3b700cdd3..a5f0c539b 100644 --- a/packages/parameters/tests/e2e/secretsProvider.class.test.ts +++ b/packages/parameters/tests/e2e/secretsProvider.class.test.ts @@ -11,13 +11,13 @@ import { } from '@aws-lambda-powertools/testing-utils'; import { SecretValue } from 'aws-cdk-lib'; import { join } from 'node:path'; -import { TestSecret } from '../helpers/resources'; +import { TestSecret } from '../helpers/resources.js'; import { RESOURCE_NAME_PREFIX, SETUP_TIMEOUT, TEARDOWN_TIMEOUT, TEST_CASE_TIMEOUT, -} from './constants'; +} from './constants.js'; /** * Collection of e2e tests for SecretsProvider utility. diff --git a/packages/parameters/tests/e2e/ssmProvider.class.test.functionCode.ts b/packages/parameters/tests/e2e/ssmProvider.class.test.functionCode.ts index a8915c277..f1b6171e0 100644 --- a/packages/parameters/tests/e2e/ssmProvider.class.test.functionCode.ts +++ b/packages/parameters/tests/e2e/ssmProvider.class.test.functionCode.ts @@ -1,12 +1,12 @@ -import { Context } from 'aws-lambda'; -import { SSMProvider } from '../../src/ssm'; +import type { Context } from 'aws-lambda'; +import { SSMProvider } from '../../src/ssm/SSMProvider.js'; import { SSMGetOptions, SSMGetMultipleOptions, SSMGetParametersByNameOptions, -} from '../../src/types/SSMProvider'; -import { TinyLogger } from '../helpers/tinyLogger'; -import { middleware } from '../helpers/sdkMiddlewareRequestCounter'; +} from '../../src/types/SSMProvider.js'; +import { TinyLogger } from '../helpers/tinyLogger.js'; +import { middleware } from '../helpers/sdkMiddlewareRequestCounter.js'; import { SSMClient } from '@aws-sdk/client-ssm'; // We use a custom logger to log pure JSON objects to stdout diff --git a/packages/parameters/tests/e2e/ssmProvider.class.test.ts b/packages/parameters/tests/e2e/ssmProvider.class.test.ts index 771aafd7c..9af29e831 100644 --- a/packages/parameters/tests/e2e/ssmProvider.class.test.ts +++ b/packages/parameters/tests/e2e/ssmProvider.class.test.ts @@ -13,13 +13,13 @@ import { join } from 'node:path'; import { TestSecureStringParameter, TestStringParameter, -} from '../helpers/resources'; +} from '../helpers/resources.js'; import { RESOURCE_NAME_PREFIX, SETUP_TIMEOUT, TEARDOWN_TIMEOUT, TEST_CASE_TIMEOUT, -} from './constants'; +} from './constants.js'; /** * This test suite deploys a CDK stack with a Lambda function and a number of SSM parameters. diff --git a/packages/parameters/tests/helpers/tinyLogger.ts b/packages/parameters/tests/helpers/tinyLogger.ts index 4fd4603d5..c49ec87ed 100644 --- a/packages/parameters/tests/helpers/tinyLogger.ts +++ b/packages/parameters/tests/helpers/tinyLogger.ts @@ -1,4 +1,4 @@ -import { Console } from 'console'; +import { Console } from 'node:console'; /** * A tiny logger that logs to stdout and stderr. diff --git a/packages/parameters/tests/unit/AppConfigProvider.test.ts b/packages/parameters/tests/unit/AppConfigProvider.test.ts index 84e72889d..71881d3c4 100644 --- a/packages/parameters/tests/unit/AppConfigProvider.test.ts +++ b/packages/parameters/tests/unit/AppConfigProvider.test.ts @@ -3,9 +3,9 @@ * * @group unit/parameters/AppConfigProvider/class */ -import { AppConfigProvider } from '../../src/appconfig/index'; -import { ExpirableValue } from '../../src/base/ExpirableValue'; -import { AppConfigProviderOptions } from '../../src/types/AppConfigProvider'; +import { AppConfigProvider } from '../../src/appconfig/index.js'; +import { ExpirableValue } from '../../src/base/ExpirableValue.js'; +import { AppConfigProviderOptions } from '../../src/types/AppConfigProvider.js'; import { AppConfigDataClient, GetLatestConfigurationCommand, diff --git a/packages/parameters/tests/unit/BaseProvider.test.ts b/packages/parameters/tests/unit/BaseProvider.test.ts index 355ae5ca2..f5ef95679 100644 --- a/packages/parameters/tests/unit/BaseProvider.test.ts +++ b/packages/parameters/tests/unit/BaseProvider.test.ts @@ -3,9 +3,20 @@ * * @group unit/parameters/baseProvider/class */ -import { BaseProvider, clearCaches, DEFAULT_PROVIDERS } from '../../src/base'; -import { ExpirableValue } from '../../src/base/ExpirableValue'; -import { GetParameterError, TransformParameterError } from '../../src/errors'; +import { + BaseProvider, + clearCaches, + DEFAULT_PROVIDERS, + GetOptions, + GetMultipleOptions, +} from '../../src/base/index.js'; +import { DEFAULT_MAX_AGE_SECS } from '../../src/index.js'; +import type { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; +import { ExpirableValue } from '../../src/base/ExpirableValue.js'; +import { + GetParameterError, + TransformParameterError, +} from '../../src/errors.js'; import { toBase64 } from '@aws-sdk/util-base64-node'; const encoder = new TextEncoder(); @@ -614,3 +625,35 @@ describe('Function: clearCaches', () => { expect(provider2Spy).toBeCalledTimes(1); }); }); + +describe('Class: GetOptions', () => { + it('should set the default maxAge when not provided', () => { + // Prepare + const envVarsService = { + getParametersMaxAge: jest.fn(), + }; + const options = new GetOptions( + undefined, + envVarsService as unknown as EnvironmentVariablesService + ); + + // Assess + expect(options.maxAge).toBe(DEFAULT_MAX_AGE_SECS); + }); +}); + +describe('Class: GetMultipleOptions', () => { + it('should set throwOnTransformError to false when not provided', () => { + // Prepare + const envVarsService = { + getParametersMaxAge: jest.fn(), + }; + const options = new GetMultipleOptions( + undefined, + envVarsService as unknown as EnvironmentVariablesService + ); + + // Assess + expect(options.throwOnTransformError).toBe(false); + }); +}); diff --git a/packages/parameters/tests/unit/DynamoDBProvider.test.ts b/packages/parameters/tests/unit/DynamoDBProvider.test.ts index b8112b890..12ccd80d0 100644 --- a/packages/parameters/tests/unit/DynamoDBProvider.test.ts +++ b/packages/parameters/tests/unit/DynamoDBProvider.test.ts @@ -3,7 +3,7 @@ * * @group unit/parameters/DynamoDBProvider/class */ -import { DynamoDBProvider } from '../../src/dynamodb'; +import { DynamoDBProvider } from '../../src/dynamodb/index.js'; import { DynamoDBClient, GetItemCommand, @@ -13,7 +13,7 @@ import type { GetItemCommandInput, QueryCommandInput, } from '@aws-sdk/client-dynamodb'; -import type { DynamoDBProviderOptions } from '../../src/types/DynamoDBProvider'; +import type { DynamoDBProviderOptions } from '../../src/types/DynamoDBProvider.js'; import { marshall } from '@aws-sdk/util-dynamodb'; import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; import { mockClient } from 'aws-sdk-client-mock'; diff --git a/packages/parameters/tests/unit/config/EnvironmentVariablesService.test.ts b/packages/parameters/tests/unit/EnvironmentVariablesService.test.ts similarity index 95% rename from packages/parameters/tests/unit/config/EnvironmentVariablesService.test.ts rename to packages/parameters/tests/unit/EnvironmentVariablesService.test.ts index 80e60086c..c8bca2a8e 100644 --- a/packages/parameters/tests/unit/config/EnvironmentVariablesService.test.ts +++ b/packages/parameters/tests/unit/EnvironmentVariablesService.test.ts @@ -3,7 +3,7 @@ * * @group unit/parameters/config */ -import { EnvironmentVariablesService } from '../../../src/config/EnvironmentVariablesService'; +import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; describe('Class: EnvironmentVariablesService', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/parameters/tests/unit/SSMProvider.test.ts b/packages/parameters/tests/unit/SSMProvider.test.ts index c11d2410b..04da68117 100644 --- a/packages/parameters/tests/unit/SSMProvider.test.ts +++ b/packages/parameters/tests/unit/SSMProvider.test.ts @@ -3,7 +3,7 @@ * * @group unit/parameters/ssm/class */ -import { SSMProvider } from '../../src/ssm'; +import { SSMProvider } from '../../src/ssm/index.js'; import { SSMClient, GetParameterCommand, @@ -19,8 +19,8 @@ import type { SSMGetParametersByNameOptions, SSMSplitBatchAndDecryptParametersOutputType, SSMGetParametersByNameOutputInterface, -} from '../../src/types/SSMProvider'; -import { ExpirableValue } from '../../src/base/ExpirableValue'; +} from '../../src/types/SSMProvider.js'; +import { ExpirableValue } from '../../src/base/ExpirableValue.js'; import { toBase64 } from '@aws-sdk/util-base64-node'; import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; diff --git a/packages/parameters/tests/unit/SecretsProvider.test.ts b/packages/parameters/tests/unit/SecretsProvider.test.ts index 9bfd25453..04f54adc2 100644 --- a/packages/parameters/tests/unit/SecretsProvider.test.ts +++ b/packages/parameters/tests/unit/SecretsProvider.test.ts @@ -3,13 +3,13 @@ * * @group unit/parameters/SecretsProvider/class */ -import { SecretsProvider } from '../../src/secrets'; +import { SecretsProvider } from '../../src/secrets/index.js'; import { SecretsManagerClient, GetSecretValueCommand, } from '@aws-sdk/client-secrets-manager'; import type { GetSecretValueCommandInput } from '@aws-sdk/client-secrets-manager'; -import type { SecretsProviderOptions } from '../../src/types/SecretsProvider'; +import type { SecretsProviderOptions } from '../../src/types/SecretsProvider.js'; import { mockClient } from 'aws-sdk-client-mock'; import 'aws-sdk-client-mock-jest'; import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; diff --git a/packages/parameters/tests/unit/getAppConfig.test.ts b/packages/parameters/tests/unit/getAppConfig.test.ts index 3243f38f0..adbc2f6a6 100644 --- a/packages/parameters/tests/unit/getAppConfig.test.ts +++ b/packages/parameters/tests/unit/getAppConfig.test.ts @@ -3,12 +3,9 @@ * * @group unit/parameters/AppConfigProvider/getAppConfig/function */ -import { - AppConfigProvider, - getAppConfig, - DEFAULT_PROVIDERS, -} from '../../src/appconfig'; -import { Transform } from '../../src'; +import { AppConfigProvider, getAppConfig } from '../../src/appconfig/index.js'; +import { DEFAULT_PROVIDERS } from '../../src/base/DefaultProviders.js'; +import { Transform } from '../../src/index.js'; import { AppConfigDataClient, StartConfigurationSessionCommand, diff --git a/packages/parameters/tests/unit/getParameter.test.ts b/packages/parameters/tests/unit/getParameter.test.ts index 175f5e5f4..e02b2b887 100644 --- a/packages/parameters/tests/unit/getParameter.test.ts +++ b/packages/parameters/tests/unit/getParameter.test.ts @@ -3,8 +3,8 @@ * * @group unit/parameters/ssm/getParameter/function */ -import { DEFAULT_PROVIDERS } from '../../src/base'; -import { SSMProvider, getParameter } from '../../src/ssm'; +import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; +import { SSMProvider, getParameter } from '../../src/ssm/index.js'; import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm'; import { mockClient } from 'aws-sdk-client-mock'; import 'aws-sdk-client-mock-jest'; diff --git a/packages/parameters/tests/unit/getParameters.test.ts b/packages/parameters/tests/unit/getParameters.test.ts index f1270b5a0..e8b0d7b43 100644 --- a/packages/parameters/tests/unit/getParameters.test.ts +++ b/packages/parameters/tests/unit/getParameters.test.ts @@ -3,8 +3,8 @@ * * @group unit/parameters/ssm/getParameters/function */ -import { DEFAULT_PROVIDERS } from '../../src/base'; -import { SSMProvider, getParameters } from '../../src/ssm'; +import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; +import { SSMProvider, getParameters } from '../../src/ssm/index.js'; import { SSMClient, GetParametersByPathCommand } from '@aws-sdk/client-ssm'; import { mockClient } from 'aws-sdk-client-mock'; import 'aws-sdk-client-mock-jest'; diff --git a/packages/parameters/tests/unit/getParametersByName.test.ts b/packages/parameters/tests/unit/getParametersByName.test.ts index e0c6201d2..e423dc350 100644 --- a/packages/parameters/tests/unit/getParametersByName.test.ts +++ b/packages/parameters/tests/unit/getParametersByName.test.ts @@ -3,9 +3,9 @@ * * @group unit/parameters/ssm/getParametersByName/function */ -import { DEFAULT_PROVIDERS } from '../../src/base'; -import { SSMProvider, getParametersByName } from '../../src/ssm'; -import type { SSMGetParametersByNameOptions } from '../../src/types/SSMProvider'; +import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; +import { SSMProvider, getParametersByName } from '../../src/ssm/index.js'; +import type { SSMGetParametersByNameOptions } from '../../src/types/SSMProvider.js'; describe('Function: getParametersByName', () => { beforeEach(() => { diff --git a/packages/parameters/tests/unit/getSecret.test.ts b/packages/parameters/tests/unit/getSecret.test.ts index e1cf3b82e..da72fab48 100644 --- a/packages/parameters/tests/unit/getSecret.test.ts +++ b/packages/parameters/tests/unit/getSecret.test.ts @@ -3,8 +3,8 @@ * * @group unit/parameters/SecretsProvider/getSecret/function */ -import { DEFAULT_PROVIDERS } from '../../src/base'; -import { SecretsProvider, getSecret } from '../../src/secrets'; +import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; +import { SecretsProvider, getSecret } from '../../src/secrets/index.js'; import { SecretsManagerClient, GetSecretValueCommand, diff --git a/packages/parameters/tsconfig.esm.json b/packages/parameters/tsconfig.esm.json new file mode 100644 index 000000000..9bed8e4da --- /dev/null +++ b/packages/parameters/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/parameters/tsconfig.json b/packages/parameters/tsconfig.json index 1cb9d7277..5be842b9f 100644 --- a/packages/parameters/tsconfig.json +++ b/packages/parameters/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/cjs/", "rootDir": "./src", }, "include": [