Skip to content

Commit d39ec93

Browse files
authored
session-replay: use ESM modules (#272)
* session-replay: change output to esm, bundle with rollup * session-replay: update tests to use esm --------- Co-authored-by: Sebastian Alex <[email protected]>
1 parent d51f3bf commit d39ec93

10 files changed

+703
-133
lines changed

package-lock.json

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

packages/session-replay/jest.config.js

-5
This file was deleted.
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/** @type {import('ts-jest').JestConfigWithTsJest} */
2+
export default {
3+
preset: 'ts-jest/presets/default-esm',
4+
testEnvironment: 'jsdom',
5+
setupFiles: ['./jest.setup.mjs'],
6+
moduleNameMapper: {
7+
'^(\\.{1,2}/.*)\\.js$': '$1',
8+
},
9+
transform: {
10+
'^.+\\.tsx?$': [
11+
'ts-jest',
12+
{
13+
useESM: true,
14+
},
15+
],
16+
},
17+
};
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import { jest } from '@jest/globals';
2+
global.jest = jest;

packages/session-replay/package.json

+20-8
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22
"name": "@backtrace/session-replay",
33
"version": "0.1.0",
44
"description": "Backtrace-JavaScript Session Replay module",
5-
"main": "lib/index.js",
5+
"main": "lib/bundle.cjs",
6+
"module": "lib/bundle.mjs",
7+
"browser": "lib/bundle.mjs",
68
"types": "lib/index.d.ts",
9+
"type": "module",
710
"scripts": {
8-
"build": "tsc",
11+
"build": "rollup -c rollup.config.mjs",
912
"clean": "tsc -b --clean && rimraf \"lib\"",
1013
"format": "prettier --write '**/*.ts'",
1114
"lint": "eslint . --ext .ts",
12-
"watch": "tsc -w",
13-
"test": "cross-env NODE_ENV=test jest"
15+
"watch": "npm run build -- --watch",
16+
"test": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" NODE_NO_WARNINGS=1 NODE_ENV=test jest"
1417
},
1518
"repository": {
1619
"type": "git",
@@ -25,13 +28,22 @@
2528
"/lib"
2629
],
2730
"homepage": "https://github.com/backtrace-labs/backtrace-javascript#readme",
28-
"peerDependencies": {
29-
"@backtrace/sdk-core": "^0.4.0"
30-
},
3131
"dependencies": {
3232
"rrweb": "^2.0.0-alpha.15"
3333
},
3434
"devDependencies": {
35-
"jest-environment-jsdom": "^29.7.0"
35+
"@backtrace/sdk-core": "^0.4.0",
36+
"@rollup/plugin-commonjs": "^26.0.1",
37+
"@rollup/plugin-json": "^6.1.0",
38+
"@rollup/plugin-node-resolve": "^15.2.3",
39+
"@rollup/plugin-terser": "^0.4.4",
40+
"@types/jest": "^29.5.1",
41+
"@types/ua-parser-js": "^0.7.36",
42+
"jest": "^29.5.0",
43+
"jest-environment-jsdom": "^29.7.0",
44+
"rollup": "^4.21.0",
45+
"rollup-plugin-typescript2": "^0.36.0",
46+
"ts-jest": "^29.1.0",
47+
"typescript": "^5.0.4"
3648
}
3749
}
+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import commonjs from '@rollup/plugin-commonjs';
2+
import json from '@rollup/plugin-json';
3+
import nodeResolve from '@rollup/plugin-node-resolve';
4+
import terser from '@rollup/plugin-terser';
5+
import path from 'path';
6+
import typescript from 'rollup-plugin-typescript2';
7+
8+
const extensions = ['.js', '.ts'];
9+
10+
/** @type {import('rollup').RollupOptions} */
11+
export default {
12+
input: './src/index.ts',
13+
output: [
14+
{
15+
file: 'lib/bundle.mjs',
16+
format: 'esm',
17+
sourcemap: true,
18+
},
19+
{
20+
file: 'lib/bundle.min.mjs',
21+
format: 'esm',
22+
sourcemap: true,
23+
plugins: [terser()],
24+
},
25+
{
26+
file: 'lib/bundle.cjs',
27+
format: 'cjs',
28+
sourcemap: true,
29+
},
30+
{
31+
file: 'lib/bundle.min.cjs',
32+
format: 'cjs',
33+
sourcemap: true,
34+
plugins: [terser()],
35+
},
36+
],
37+
plugins: [
38+
typescript({ tsconfig: './tsconfig.build.json' }),
39+
nodeResolve({
40+
extensions,
41+
preferBuiltins: true,
42+
modulePaths: [path.resolve('./node_modules'), path.resolve('../../node_modules')],
43+
}),
44+
commonjs({ defaultIsModuleExports: true }),
45+
json(),
46+
],
47+
};

packages/session-replay/src/BacktraceSessionReplayModule.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BacktraceModule, BacktraceModuleBindData } from '@backtrace/sdk-core';
1+
import type { BacktraceModule, BacktraceModuleBindData } from '@backtrace/sdk-core';
22
import { BacktraceSessionRecorder } from './BacktraceSessionRecorder';
33
import { BacktraceSessionRecorderOptions } from './options';
44

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "./tsconfig.json",
3+
"exclude": ["node_modules", "tests", "lib"],
4+
"compilerOptions": {
5+
"rootDir": "./src",
6+
"outDir": "./lib"
7+
}
8+
}

packages/session-replay/tsconfig.json

+4-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
{
22
"extends": "../../tsconfig.base.json",
33
"compilerOptions": {
4-
"rootDir": "./src",
5-
"outDir": "./lib",
4+
"target": "ES2015",
5+
"module": "ESNext",
6+
"moduleResolution": "Bundler",
67
"composite": true
78
},
8-
"exclude": ["node_modules", "tests", "lib"],
9-
"references": [
10-
{
11-
"path": "../sdk-core/tsconfig.json"
12-
}
13-
]
9+
"exclude": ["node_modules", "lib"]
1410
}

packages/session-replay/webpack.config.js

-28
This file was deleted.

0 commit comments

Comments
 (0)