Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
e3890aa
chore(build): Use Rolldown
timfish Oct 31, 2025
a14c500
Lint
timfish Oct 31, 2025
4175ead
fixes
timfish Oct 31, 2025
2a785a0
chore: it builds :O
logaretm Nov 11, 2025
45c2da7
fix: bring back preserve modules
logaretm Nov 11, 2025
6e617bc
fix: lint
logaretm Nov 11, 2025
129f1a8
chore: remove ts and terser from replay
logaretm Nov 11, 2025
8349098
chore: remove last uses of rollup replace
logaretm Nov 11, 2025
8e51016
chore: fix replace plugin usage
logaretm Nov 11, 2025
adb78c3
chore: remove unused rollup plugins
logaretm Nov 11, 2025
b3b777a
chore: use defineConfig for type assist
logaretm Nov 11, 2025
b7f2f6a
chore: module preservation root
logaretm Nov 11, 2025
2437665
chore: revert some changes
logaretm Nov 11, 2025
ee8f902
fix: revert more changes
logaretm Nov 11, 2025
03159f8
fix: format
logaretm Nov 11, 2025
85c7284
fix: nextjs build
logaretm Nov 11, 2025
b51f674
chore: upgrade to rolldown 1.0.0-beta.50
logaretm Nov 13, 2025
42e7ba1
chore: properly replace the smallest preset value
logaretm Nov 13, 2025
a1e8b64
chore: remove sucrase, and try out latest preview build
logaretm Nov 17, 2025
f12e113
chore: revert to latest beta
logaretm Nov 17, 2025
8f9c64f
chore: try out latest rolldown preview
logaretm Nov 17, 2025
083a4ab
chore: ensure sub files in externals are treated as externals
logaretm Nov 17, 2025
bf63422
chore: fix astro export for middleware
logaretm Nov 17, 2025
eb518f6
chore: nextjs config
logaretm Nov 17, 2025
0aaa9ab
chore: fix nextjs output
logaretm Nov 18, 2025
4c6314c
chore: bump to rolldown 1.0.0-beta.51
logaretm Nov 19, 2025
0d86fbc
chore: upgrade to latest rolldown release
logaretm Nov 27, 2025
4f32828
fix(remix): properly point to esm and require builds
logaretm Nov 27, 2025
6022042
fix: use custom preseveration logic for nextjs templates
logaretm Nov 27, 2025
9530d92
fix: simplify import placeholder replacers
logaretm Nov 28, 2025
929b47c
fix: send in module conditionally since it may not be available in ES…
logaretm Nov 28, 2025
7196b5e
fix: wrapper tests
logaretm Nov 28, 2025
299b8f5
fix: astro tests
logaretm Nov 28, 2025
6731c41
fix: ensure passing the tsconfig
logaretm Nov 28, 2025
ee7399e
fix: aws-serverless replace plugin
logaretm Nov 28, 2025
1db5957
fix: revert remix change
logaretm Nov 28, 2025
ee2678e
fix: revert astro structure changes
logaretm Nov 28, 2025
bf8e43f
fix: temporary fix remix till i figure it out
logaretm Nov 28, 2025
ac8ba24
fix: ANR replacements
logaretm Nov 28, 2025
0f20e43
fix: spotlight shaking
logaretm Nov 28, 2025
df09223
refactor: remix vite plugin imports
logaretm Dec 1, 2025
a5bad30
chore: use latest rolldown beta 53
logaretm Dec 3, 2025
f92cf51
chore: dedup yarn
logaretm Dec 4, 2025
ba33916
fix: more remix fixes
logaretm Dec 4, 2025
e465263
fix: module compat for remix esm
logaretm Dec 4, 2025
e3093b8
ref: restore no longer needed changes to remix vite configs
logaretm Dec 4, 2025
709f7b8
chore: implement a custom transport for remix tests
logaretm Dec 4, 2025
0e0c1e9
chore: remove strict key
logaretm Dec 4, 2025
ee1eb4b
chore: NODE_ENV replacement for rollup compat
logaretm Dec 4, 2025
2d56bdd
fix: alias preact for feedback bundling
logaretm Dec 4, 2025
f835f89
fix(remix): isolate node-specific imports to their own paths
logaretm Dec 4, 2025
9aa9868
fix: lint errors and nextjs re-export
logaretm Dec 4, 2025
6dbc98a
fix: nextjs commonjs issues
logaretm Dec 4, 2025
4356fe5
chore: include tsconfig into the bundle opts
logaretm Dec 5, 2025
9d008fd
fix: ensure es2020 compat
logaretm Dec 5, 2025
b8ced4b
chore: try oxc minifier
logaretm Dec 5, 2025
7b5d264
chore: added note on rolldown minification
logaretm Dec 5, 2025
5dcc3b3
tests: update minified tests expectations
logaretm Dec 5, 2025
a46d5ac
chore: add dts plugin
logaretm Dec 5, 2025
e9cff2a
chore: update build types commands
logaretm Dec 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ sentryTest('should not add source context lines to errors from script files', as

const exception = eventData.exception?.values?.[0];
const frames = exception?.stacktrace?.frames;
expect(frames).toHaveLength(1);
expect(frames?.length).toBeGreaterThanOrEqual(1);
// Verify the subject.bundle.js frame is present
expect(frames?.some(f => f.filename?.includes('subject.bundle.js'))).toBe(true);
// Core assertion: no context lines should be added for script files
frames?.forEach(f => {
expect(f).not.toHaveProperty('pre_context');
expect(f).not.toHaveProperty('context_line');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,9 @@ sentryTest('should provide module_metadata on stack frames in beforeSend', async
const url = await getLocalTestUrl({ testDir: __dirname });

const errorEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
expect(errorEvent.extra?.['module_metadata_entries']).toEqual([{ foo: 'bar' }]);
// Filter out null entries from internal Sentry frames that don't have module metadata
const metadataEntries = (errorEvent.extra?.['module_metadata_entries'] as Array<unknown>)?.filter(
entry => entry !== null,
);
expect(metadataEntries).toEqual([{ foo: 'bar' }]);
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ sentryTest(
const url = await getLocalTestUrl({ testDir: __dirname });

const errorEvent = await getFirstSentryEnvelopeRequest<Event>(page, url);
expect(errorEvent?.extra?.['module_metadata_entries']).toEqual([{ foo: 'baz' }]);
// Filter out null entries from internal Sentry frames that don't have module metadata
const metadataEntries = (errorEvent?.extra?.['module_metadata_entries'] as Array<unknown>)?.filter(
entry => entry !== null,
);
expect(metadataEntries).toEqual([{ foo: 'baz' }]);
},
);
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/** @type {import("next").NextConfig} */
const config = {};

import { withSentryConfig } from '@sentry/nextjs';
const { withSentryConfig } = require('@sentry/nextjs');

export default withSentryConfig(config, {
module.exports = withSentryConfig(config, {
disableLogger: true,
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"name": "next-orpc",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"build": "next build",
"dev": "next dev -p 3030",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
await import('./src/env.js');
require('./src/env.js');

/** @type {import("next").NextConfig} */
const config = {};

import { withSentryConfig } from '@sentry/nextjs';
const { withSentryConfig } = require('@sentry/nextjs');

export default withSentryConfig(config, {
module.exports = withSentryConfig(config, {
disableLogger: true,
silent: true,
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"name": "t3",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"build": "next build",
"clean": "npx rimraf node_modules pnpm-lock.yaml",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,9 @@ export default defineConfig({
}),
sveltekit(),
],
build: {
rollupOptions: {
external: ['fsevents'],
},
},
});
2 changes: 1 addition & 1 deletion dev-packages/node-core-integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"scripts": {
"build": "run-s build:transpile build:types",
"build:dev": "yarn build",
"build:transpile": "rollup -c rollup.npm.config.mjs",
"build:transpile": "rolldown -c rollup.npm.config.mjs",
"build:types": "tsc -p tsconfig.types.json",
"clean": "rimraf -g **/node_modules && run-p clean:script",
"clean:script": "node scripts/clean.js",
Expand Down
2 changes: 1 addition & 1 deletion dev-packages/node-integration-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"scripts": {
"build": "run-s build:transpile build:types",
"build:dev": "yarn build",
"build:transpile": "rollup -c rollup.npm.config.mjs",
"build:transpile": "rolldown -c rollup.npm.config.mjs",
"build:types": "tsc -p tsconfig.types.json",
"clean": "rimraf -g suites/**/node_modules suites/**/tmp_* && run-p clean:script",
"clean:script": "node scripts/clean.js",
Expand Down
63 changes: 32 additions & 31 deletions dev-packages/rollup-utils/bundleHelpers.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,46 @@
*/

import { builtinModules } from 'module';

import path from 'node:path';
import fs from 'node:fs';
import deepMerge from 'deepmerge';

import {
makeBrowserBuildPlugin,
makeCleanupPlugin,
makeCommonJSPlugin,
makeIsDebugBuildPlugin,
makeLicensePlugin,
makeNodeResolvePlugin,
makeRrwebBuildPlugin,
makeSetSDKSourcePlugin,
makeSucrasePlugin,
makeTerserPlugin,
makeBannerOptions,
makeMinifierOptions,
} from './plugins/index.mjs';
import { mergePlugins } from './utils.mjs';
import { makeProductionReplacePlugin } from './plugins/npmPlugins.mjs';
import { mergePlugins, treeShakePreset } from './utils.mjs';

const BUNDLE_VARIANTS = ['.js', '.min.js', '.debug.min.js'];

const packageDotJSON = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), './package.json'), { encoding: 'utf8' }));

export function makeBaseBundleConfig(options) {
const { bundleType, entrypoints, licenseTitle, outputFileBase, packageSpecificConfig, sucrase } = options;
const { bundleType, entrypoints, licenseTitle, outputFileBase, packageSpecificConfig } = options;

const nodeResolvePlugin = makeNodeResolvePlugin();
const sucrasePlugin = makeSucrasePlugin({}, sucrase);
const cleanupPlugin = makeCleanupPlugin();
const markAsBrowserBuildPlugin = makeBrowserBuildPlugin(true);
const licensePlugin = makeLicensePlugin(licenseTitle);
const banner = makeBannerOptions(licenseTitle, packageDotJSON.version);
const rrwebBuildPlugin = makeRrwebBuildPlugin({
excludeIframe: false,
excludeShadowDom: false,
});
const productionReplacePlugin = makeProductionReplacePlugin();

// The `commonjs` plugin is the `esModuleInterop` of the bundling world. When used with `transformMixedEsModules`, it
// will include all dependencies, imported or required, in the final bundle. (Without it, CJS modules aren't included
// at all, and without `transformMixedEsModules`, they're only included if they're imported, not if they're required.)
const commonJSPlugin = makeCommonJSPlugin({ transformMixedEsModules: true });

// used by `@sentry/browser`
const standAloneBundleConfig = {
output: {
banner,
format: 'iife',
name: 'Sentry',
intro: () => {
return 'exports = window.Sentry || {};';
},
},
context: 'window',
plugins: [rrwebBuildPlugin, markAsBrowserBuildPlugin, licensePlugin],
plugins: [rrwebBuildPlugin, markAsBrowserBuildPlugin],
};

// used by `@sentry/wasm` & pluggable integrations from core/browser (bundles which need to be combined with a stand-alone SDK bundle)
Expand All @@ -63,7 +53,7 @@ export function makeBaseBundleConfig(options) {
format: 'cjs',

// code to add before the CJS wrapper
banner: '(function (__window) {',
banner: `${banner}\n(function (__window) {`,

// code to add just inside the CJS wrapper, before any of the wrapped code
intro: 'var exports = {};',
Expand All @@ -86,40 +76,48 @@ export function makeBaseBundleConfig(options) {
// code to add after the CJS wrapper
footer: '}(window));',
},
plugins: [rrwebBuildPlugin, markAsBrowserBuildPlugin, licensePlugin],
plugins: [rrwebBuildPlugin, markAsBrowserBuildPlugin],
};

const workerBundleConfig = {
output: {
banner,
format: 'esm',
minify: makeMinifierOptions(),
},
plugins: [commonJSPlugin, makeTerserPlugin(), licensePlugin],
// Don't bundle any of Node's core modules
external: builtinModules,
};

const awsLambdaExtensionBundleConfig = {
output: {
format: 'esm',
minify: makeMinifierOptions(),
},
plugins: [commonJSPlugin, makeIsDebugBuildPlugin(true), makeTerserPlugin()],
plugins: [makeIsDebugBuildPlugin(true)],
// Don't bundle any of Node's core modules
external: builtinModules,
};

// used by all bundles
const sharedBundleConfig = {
input: entrypoints,
// Point to the package's tsconfig.json so rolldown respects TypeScript & JSX settings
tsconfig: path.resolve(process.cwd(), './tsconfig.json'),

// Enforce ES2020 target for all builds
transform: {
target: 'es2020',
},

output: {
// a file extension will be added to this base value when we specify either a minified or non-minified build
entryFileNames: outputFileBase,
dir: 'build',
sourcemap: true,
strict: false,
esModule: false,
},
plugins: [productionReplacePlugin, sucrasePlugin, nodeResolvePlugin, cleanupPlugin],
treeshake: 'smallest',
treeshake: treeShakePreset('smallest'),
};

const bundleTypeConfigMap = {
Expand Down Expand Up @@ -149,7 +147,7 @@ export function makeBundleConfigVariants(baseConfig, options = {}) {

const includeDebuggingPlugin = makeIsDebugBuildPlugin(true);
const stripDebuggingPlugin = makeIsDebugBuildPlugin(false);
const terserPlugin = makeTerserPlugin();
const minifierOptions = makeMinifierOptions();
const setSdkSourcePlugin = makeSetSDKSourcePlugin('cdn');

// The additional options to use for each variant we're going to create.
Expand All @@ -164,22 +162,25 @@ export function makeBundleConfigVariants(baseConfig, options = {}) {
'.min.js': {
output: {
entryFileNames: chunkInfo => `${baseConfig.output.entryFileNames(chunkInfo)}.min.js`,
minify: minifierOptions,
},
plugins: [stripDebuggingPlugin, setSdkSourcePlugin, terserPlugin],
plugins: [stripDebuggingPlugin, setSdkSourcePlugin],
},

'.debug.min.js': {
output: {
entryFileNames: chunkInfo => `${baseConfig.output.entryFileNames(chunkInfo)}.debug.min.js`,
minify: minifierOptions,
},
plugins: [includeDebuggingPlugin, setSdkSourcePlugin, terserPlugin],
plugins: [includeDebuggingPlugin, setSdkSourcePlugin],
},
};

return variants.map(variant => {
if (!BUNDLE_VARIANTS.includes(variant)) {
throw new Error(`Unknown bundle variant requested: ${variant}`);
}

return deepMerge(baseConfig, variantSpecificConfigMap[variant], {
// Merge the plugin arrays and make sure the end result is in the correct order. Everything else can use the
// default merge strategy.
Expand Down
7 changes: 2 additions & 5 deletions dev-packages/rollup-utils/index.mjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
// TODO Is this necessary?
import * as plugins from './plugins/index.mjs';
export { plugins };

export * from './plugins/index.mjs';
export * from './bundleHelpers.mjs';
export * from './npmHelpers.mjs';
export { insertAt } from './utils.mjs';
export { insertAt, treeShakePreset } from './utils.mjs';
Loading
Loading