Files
cloudflare__vinext/tests/server-external-packages.test.ts
T
James Anderson ffd28c133f fix(app-router): match dynamic request analysis parity (#2253)
* fix(app-router): ignore fully dynamic requests

* fix(app-router): match dynamic request analysis semantics

* fix(app-router): complete dynamic request analysis

* fix(app-router): complete dynamic request analysis

* fix(app-router): avoid unsafe dynamic request folding

* fix(build): respect static block request bindings

* fix(build): scope static block var bindings

* fix(build): scope dynamic request parameter defaults

* fix(build): honor dynamic request ignore comments

* fix(build): parse dynamic request comments safely

* perf(build): skip irrelevant dynamic request modules

* refactor(build): scope dynamic request analysis

* fix(build): track TypeScript value bindings

* fix(build): preserve bounded concat requests

* fix(build): harden dynamic request analysis

* fix(build): harden dynamic request analysis

* fix(build): preserve switch discriminant scope

* fix(build): resolve constant dynamic request expressions

* fix(build): align unary dynamic requests

* fix(build): preserve negative numeric dynamic requests

* fix(build): align remaining dynamic request analysis

* fix(build): align dynamic request sequence analysis

* fix(build): resolve constant string predicates

* fix(build): bound dynamic request alias resolution

* fix(build): resolve dynamic request aliases lexically

* fix(build): align dynamic request global constants

* fix(build): align NaN dynamic request predicates

* fix(build): include optimized transpile packages

* fix(build): align Turbopack package classification

* fix(build): align server transpile precedence
2026-06-24 19:24:10 +01:00

34 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { mergeServerExternalPackages } from "../packages/vinext/src/config/server-external-packages.js";
describe("mergeServerExternalPackages", () => {
it("includes Next.js defaults and appends unique user packages", () => {
const packages = mergeServerExternalPackages(["typescript", "custom-package"]);
expect(packages).toContain("shiki");
expect(packages).toContain("ts-morph");
expect(packages).toContain("typescript");
expect(packages).toContain("custom-package");
expect(packages.filter((name) => name === "typescript")).toHaveLength(1);
});
it("lets transpilePackages override default externals", () => {
const packages = mergeServerExternalPackages([], ["typescript", "shiki"]);
expect(packages).not.toContain("shiki");
expect(packages).not.toContain("typescript");
});
it("lets default and optimized transpile packages override externals", () => {
const packages = mergeServerExternalPackages([], ["geist", "shiki"]);
expect(packages).not.toContain("shiki");
});
it("rejects conflicts between explicit externals and transpiled packages", () => {
expect(() => mergeServerExternalPackages(["typescript"], ["typescript"])).toThrow(
"The packages specified in the 'transpilePackages' conflict with the 'serverExternalPackages': typescript",
);
});
});