Skip to content

Commit 0bc7960

Browse files
authored
feat(logger): add esmodule support (#1734)
* feat(logger): add esm build output * fix(Logger): Remove barrel files update references * test(Logger): update jest/ts-jest to use ESM * chore(Logger): remove unused lodash.merge * fix(logger): reinstate lodash.merge * chore(logger): revert TS assertion * chore(logger): revert format changes * chore(logger): update postbuild to remove incremental tsbuildinfo files * fix(logger): correct reference to types output * feat(logging): add middleware export * chore(logger): replace postbuild script with echo statement * feat(logger): add typesVersions property and barrel files to /types * chore(logger): file not used, can be added back if needed * chore(logger): add space back to README * chore(logger): revert space in README
1 parent 50aa3e7 commit 0bc7960

31 files changed

+179
-146
lines changed

Diff for: .gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ site
4949
tmp
5050

5151
# TS build files
52-
tsconfig.tsbuildinfo
52+
tsconfig.tsbuildinfo
53+
tsconfig.esm.tsbuildinfo

Diff for: package-lock.json

+14-51
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: packages/logger/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,4 @@ Credits for the Powertools for AWS Lambda (TypeScript) idea go to [DAZN](https:/
114114

115115
## License
116116

117-
This library is licensed under the MIT-0 License. See the LICENSE file.
117+
This library is licensed under the MIT-0 License. See the LICENSE file.

Diff for: packages/logger/jest.config.js renamed to packages/logger/jest.config.cjs

+10-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,17 @@ module.exports = {
44
color: 'cyan',
55
},
66
runner: 'groups',
7-
preset: 'ts-jest',
7+
extensionsToTreatAsEsm: ['.ts'],
8+
moduleNameMapper: {
9+
'^(\\.{1,2}/.*)\\.js$': '$1',
10+
},
811
transform: {
9-
'^.+\\.ts?$': 'ts-jest',
12+
'^.+\\.[tj]sx?$': [
13+
'ts-jest',
14+
{
15+
useESM: true,
16+
},
17+
],
1018
},
1119
moduleFileExtensions: ['js', 'ts'],
1220
collectCoverageFrom: ['**/src/**/*.ts', '!**/node_modules/**'],

Diff for: packages/logger/package.json

+40-4
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,55 @@
1616
"test:e2e:nodejs18x": "RUNTIME=nodejs18x jest --group=e2e",
1717
"test:e2e": "jest --group=e2e",
1818
"watch": "jest --watch --group=unit",
19-
"build": "tsc --build --force",
19+
"build:cjs": "tsc --build --force && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json",
20+
"build:esm": "tsc --project tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json",
21+
"build": "npm run build:esm & npm run build:cjs",
2022
"lint": "eslint --ext .ts,.js --no-error-on-unmatched-pattern .",
2123
"lint-fix": "eslint --fix --ext .ts,.js --no-error-on-unmatched-pattern .",
2224
"prebuild": "rimraf ./lib",
25+
"postbuild": "rimraf ./lib/*.tsbuildinfo",
2326
"prepack": "node ../../.github/scripts/release_patch_package_json.js ."
2427
},
2528
"lint-staged": {
2629
"*.{js,ts}": "npm run lint-fix"
2730
},
2831
"homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/logger#readme",
2932
"license": "MIT-0",
30-
"main": "./lib/index.js",
31-
"types": "./lib/index.d.ts",
33+
"type": "module",
34+
"exports": {
35+
".": {
36+
"require": {
37+
"types": "./lib/cjs/index.d.ts",
38+
"default": "./lib/cjs/index.js"
39+
},
40+
"import": {
41+
"types": "./lib/esm/index.d.ts",
42+
"default": "./lib/esm/index.js"
43+
}
44+
},
45+
"./middleware": {
46+
"import": "./lib/esm/middleware/middy.js",
47+
"require": "./lib/cjs/middleware/middy.js"
48+
},
49+
"./types": {
50+
"import": "./lib/esm/types/index.js",
51+
"require": "./lib/cjs/types/index.js"
52+
}
53+
},
54+
"typesVersions": {
55+
"*": {
56+
"middleware": [
57+
"lib/cjs/middleware/middy.d.ts",
58+
"lib/esm/middleware/middy.d.ts"
59+
],
60+
"types": [
61+
"lib/cjs/types/index.d.ts",
62+
"lib/esm/types/index.d.ts"
63+
]
64+
}
65+
},
66+
"types": "./lib/cjs/index.d.ts",
67+
"main": "./lib/cjs/index.js",
3268
"devDependencies": {
3369
"@aws-lambda-powertools/testing-utils": "file:../testing",
3470
"@types/lodash.merge": "^4.6.7"
@@ -64,4 +100,4 @@
64100
"serverless",
65101
"nodejs"
66102
]
67-
}
103+
}

Diff for: packages/logger/src/Logger.ts

+13-10
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,29 @@ import { randomInt } from 'node:crypto';
22
import { Console } from 'node:console';
33
import type { Context, Handler } from 'aws-lambda';
44
import { Utility } from '@aws-lambda-powertools/commons';
5-
import { LogFormatterInterface, PowertoolsLogFormatter } from './formatter';
6-
import { LogItem } from './log';
5+
import { PowertoolsLogFormatter } from './formatter/PowertoolsLogFormatter.js';
6+
import { LogFormatterInterface } from './formatter/LogFormatterInterface.js';
7+
import { LogItem } from './log/LogItem.js';
78
import merge from 'lodash.merge';
8-
import { ConfigServiceInterface, EnvironmentVariablesService } from './config';
9-
import { LogJsonIndent } from './types';
9+
import { ConfigServiceInterface } from './config/ConfigServiceInterface.js';
10+
import { EnvironmentVariablesService } from './config/EnvironmentVariablesService.js';
11+
import { LogJsonIndent } from './types/Logger.js';
1012
import type {
11-
ClassThatLogs,
1213
Environment,
14+
LogAttributes,
15+
LogLevel,
16+
LogLevelThresholds,
17+
} from './types/Log.js';
18+
import type {
19+
ClassThatLogs,
1320
HandlerMethodDecorator,
1421
LambdaFunctionContext,
15-
LogAttributes,
1622
ConstructorOptions,
1723
LogItemExtraInput,
1824
LogItemMessage,
19-
LogLevel,
20-
LogLevelThresholds,
2125
PowertoolLogData,
2226
HandlerOptions,
23-
} from './types';
24-
27+
} from './types/Logger.js';
2528
/**
2629
* ## Intro
2730
* The Logger utility provides an opinionated logger with output structured as JSON.

Diff for: packages/logger/src/config/EnvironmentVariablesService.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ConfigServiceInterface } from './ConfigServiceInterface';
1+
import { ConfigServiceInterface } from './ConfigServiceInterface.js';
22
import { EnvironmentVariablesService as CommonEnvironmentVariablesService } from '@aws-lambda-powertools/commons';
33

44
/**

Diff for: packages/logger/src/config/index.ts

-2
This file was deleted.

Diff for: packages/logger/src/formatter/LogFormatter.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { LogFormatterInterface } from '.';
2-
import { LogAttributes, UnformattedAttributes } from '../types';
3-
import { LogItem } from '../log';
1+
import { LogFormatterInterface } from './LogFormatterInterface.js';
2+
import { LogAttributes } from '../types/Log.js';
3+
import { UnformattedAttributes } from '../types/Logger.js';
4+
import { LogItem } from '../log/LogItem.js';
45

56
/**
67
* Typeguard to monkey patch Error to add a cause property.

0 commit comments

Comments
 (0)