Skip to content

Commit da523b8

Browse files
antstanleydreamorosi
authored andcommitted
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 6c2709d commit da523b8

30 files changed

+13024
-939
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,8 @@ tmp
5050

5151
# TS build files
5252
tsconfig.tsbuildinfo
53-
.tsbuildinfo
53+
<<<<<<< HEAD
54+
.tsbuildinfo
55+
=======
56+
tsconfig.esm.tsbuildinfo
57+
>>>>>>> 0bc7960c (feat(logger): add esmodule support (#1734))

package-lock.json

Lines changed: 12859 additions & 846 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/logger/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,4 @@ Credits for the Powertools for AWS Lambda (TypeScript) idea go to [DAZN](https:/
117117

118118
## License
119119

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

packages/logger/jest.config.js renamed to packages/logger/jest.config.cjs

Lines changed: 10 additions & 2 deletions
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/**'],

packages/logger/package.json

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,55 @@
1818
"test:e2e:nodejs20x": "RUNTIME=nodejs20x jest --group=e2e",
1919
"test:e2e": "jest --group=e2e",
2020
"watch": "jest --watch --group=unit",
21-
"build": "tsc --build --force",
21+
"build:cjs": "tsc --build --force && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json",
22+
"build:esm": "tsc --project tsconfig.esm.json && echo '{ \"type\": \"module\" }' > lib/esm/package.json",
23+
"build": "npm run build:esm & npm run build:cjs",
2224
"lint": "eslint --ext .ts,.js --no-error-on-unmatched-pattern .",
2325
"lint-fix": "eslint --fix --ext .ts,.js --no-error-on-unmatched-pattern .",
2426
"prebuild": "rimraf ./lib",
27+
"postbuild": "rimraf ./lib/*.tsbuildinfo",
2528
"prepack": "node ../../.github/scripts/release_patch_package_json.js ."
2629
},
2730
"lint-staged": {
2831
"*.{js,ts}": "npm run lint-fix"
2932
},
3033
"homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/logger#readme",
3134
"license": "MIT-0",
32-
"main": "./lib/index.js",
33-
"types": "./lib/index.d.ts",
35+
"type": "module",
36+
"exports": {
37+
".": {
38+
"require": {
39+
"types": "./lib/cjs/index.d.ts",
40+
"default": "./lib/cjs/index.js"
41+
},
42+
"import": {
43+
"types": "./lib/esm/index.d.ts",
44+
"default": "./lib/esm/index.js"
45+
}
46+
},
47+
"./middleware": {
48+
"import": "./lib/esm/middleware/middy.js",
49+
"require": "./lib/cjs/middleware/middy.js"
50+
},
51+
"./types": {
52+
"import": "./lib/esm/types/index.js",
53+
"require": "./lib/cjs/types/index.js"
54+
}
55+
},
56+
"typesVersions": {
57+
"*": {
58+
"middleware": [
59+
"lib/cjs/middleware/middy.d.ts",
60+
"lib/esm/middleware/middy.d.ts"
61+
],
62+
"types": [
63+
"lib/cjs/types/index.d.ts",
64+
"lib/esm/types/index.d.ts"
65+
]
66+
}
67+
},
68+
"types": "./lib/cjs/index.d.ts",
69+
"main": "./lib/cjs/index.js",
3470
"devDependencies": {
3571
"@aws-lambda-powertools/testing-utils": "file:../testing",
3672
"@types/lodash.merge": "^4.6.9"
@@ -66,4 +102,4 @@
66102
"serverless",
67103
"nodejs"
68104
]
69-
}
105+
}

packages/logger/src/Logger.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,29 @@ import { Console } from 'node:console';
33
import { format } from 'node:util';
44
import type { Context, Handler } from 'aws-lambda';
55
import { Utility } from '@aws-lambda-powertools/commons';
6-
import { LogFormatterInterface, PowertoolsLogFormatter } from './formatter';
7-
import { LogItem } from './log';
6+
import { PowertoolsLogFormatter } from './formatter/PowertoolsLogFormatter.js';
7+
import { LogFormatterInterface } from './formatter/LogFormatterInterface.js';
8+
import { LogItem } from './log/LogItem.js';
89
import merge from 'lodash.merge';
9-
import { ConfigServiceInterface, EnvironmentVariablesService } from './config';
10-
import { LogJsonIndent } from './types';
10+
import { ConfigServiceInterface } from './config/ConfigServiceInterface.js';
11+
import { EnvironmentVariablesService } from './config/EnvironmentVariablesService.js';
12+
import { LogJsonIndent } from './types/Logger.js';
1113
import type {
12-
ClassThatLogs,
1314
Environment,
15+
LogAttributes,
16+
LogLevel,
17+
LogLevelThresholds,
18+
} from './types/Log.js';
19+
import type {
20+
ClassThatLogs,
1421
HandlerMethodDecorator,
1522
LambdaFunctionContext,
16-
LogAttributes,
1723
ConstructorOptions,
1824
LogItemExtraInput,
1925
LogItemMessage,
20-
LogLevel,
21-
LogLevelThresholds,
2226
PowertoolLogData,
2327
HandlerOptions,
24-
} from './types';
25-
28+
} from './types/Logger.js';
2629
/**
2730
* ## Intro
2831
* The Logger utility provides an opinionated logger with output structured as JSON.

packages/logger/src/config/EnvironmentVariablesService.ts

Lines changed: 1 addition & 1 deletion
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
/**

packages/logger/src/config/index.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/logger/src/formatter/LogFormatter.ts

Lines changed: 4 additions & 3 deletions
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.

packages/logger/src/formatter/LogFormatterInterface.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { LogAttributes, UnformattedAttributes } from '../types';
2-
import { LogItem } from '../log';
1+
import { LogAttributes } from '../types/Log.js';
2+
import { UnformattedAttributes } from '../types/Logger.js';
3+
import { LogItem } from '../log/LogItem.js';
34

45
/**
56
* @interface

0 commit comments

Comments
 (0)