@module-federation/treeshake-server 2.0.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -29,14 +29,8 @@ The CLI always embeds the UI. You can only override where it is served from:
29
29
  ## Library usage (custom adapters + middlewares)
30
30
 
31
31
  ```ts
32
- import {
33
- createAdapterRegistry,
34
- createAdapterDeps,
35
- createApp,
36
- createServer,
37
- LocalAdapter,
38
- } from "@module-federation/treeshake-server";
39
- import { createTreeshakeFrontendAdapter } from "@module-federation/treeshake-frontend/adapter";
32
+ import { createAdapterRegistry, createAdapterDeps, createApp, createServer, LocalAdapter } from '@module-federation/treeshake-server';
33
+ import { createTreeshakeFrontendAdapter } from '@module-federation/treeshake-frontend/adapter';
40
34
 
41
35
  const registry = createAdapterRegistry([
42
36
  new LocalAdapter(),
@@ -45,27 +39,27 @@ const registry = createAdapterRegistry([
45
39
 
46
40
  const deps = await createAdapterDeps({
47
41
  registry,
48
- adapterId: "local", // or your custom adapter id
42
+ adapterId: 'local', // or your custom adapter id
49
43
  });
50
44
 
51
45
  const app = createApp(deps, {
52
46
  appExtensions: [
53
47
  (appInstance) => {
54
- appInstance.use("*", async (c, next) => {
55
- c.res.headers.set("x-treeshake", "true");
48
+ appInstance.use('*', async (c, next) => {
49
+ c.res.headers.set('x-treeshake', 'true');
56
50
  await next();
57
51
  });
58
52
  },
59
53
  ],
60
54
  frontendAdapters: [
61
55
  createTreeshakeFrontendAdapter({
62
- basePath: "/tree-shaking",
63
- distDir: "/path/to/treeshake-frontend/dist",
56
+ basePath: '/tree-shaking',
57
+ distDir: '/path/to/treeshake-frontend/dist',
64
58
  }),
65
59
  ],
66
60
  });
67
61
 
68
- createServer({ app, port: 3000, hostname: "0.0.0.0" });
62
+ createServer({ app, port: 3000, hostname: '0.0.0.0' });
69
63
  ```
70
64
 
71
65
  In library mode you control the adapter registry, middleware, and frontend embedding.
@@ -24,7 +24,7 @@ try {
24
24
  'treeshake-server: missing build output at dist/server.js.',
25
25
  '',
26
26
  'Run:',
27
- ' pnpm --filter @module-federation/treeshake-server build',
27
+ ' pnpm exec turbo run build --filter=@module-federation/treeshake-server',
28
28
  '',
29
29
  ].join('\n'),
30
30
  );
package/dist/index.js CHANGED
@@ -829,7 +829,7 @@ async function serveLocalFile(c, rootDir) {
829
829
  if (filePath !== rootResolved && !filePath.startsWith(`${rootResolved}${external_node_path_default().sep}`)) return c.text('Not Found', 404);
830
830
  try {
831
831
  const buf = await external_node_fs_default().promises.readFile(filePath);
832
- return new Response(buf, {
832
+ return new Response(new Uint8Array(buf), {
833
833
  status: 200,
834
834
  headers: {
835
835
  'Content-Type': contentTypeByExt(filePath)
package/dist/index.mjs CHANGED
@@ -780,7 +780,7 @@ async function serveLocalFile(c, rootDir) {
780
780
  if (filePath !== rootResolved && !filePath.startsWith(`${rootResolved}${node_path.sep}`)) return c.text('Not Found', 404);
781
781
  try {
782
782
  const buf = await node_fs.promises.readFile(filePath);
783
- return new Response(buf, {
783
+ return new Response(new Uint8Array(buf), {
784
784
  status: 200,
785
785
  headers: {
786
786
  'Content-Type': contentTypeByExt(filePath)
package/dist/server.js CHANGED
@@ -162,7 +162,7 @@ async function serveLocalFile(c, rootDir) {
162
162
  if (filePath !== rootResolved && !filePath.startsWith(`${rootResolved}${external_node_path_default().sep}`)) return c.text('Not Found', 404);
163
163
  try {
164
164
  const buf = await external_node_fs_default().promises.readFile(filePath);
165
- return new Response(buf, {
165
+ return new Response(new Uint8Array(buf), {
166
166
  status: 200,
167
167
  headers: {
168
168
  'Content-Type': contentTypeByExt(filePath)
@@ -1028,7 +1028,7 @@ function createEmbeddedFrontendAdapter(opts) {
1028
1028
  const stat = await external_node_fs_default().promises.stat(filePath);
1029
1029
  if (stat.isFile()) {
1030
1030
  const buf = await external_node_fs_default().promises.readFile(filePath);
1031
- return new Response(buf, {
1031
+ return new Response(new Uint8Array(buf), {
1032
1032
  status: 200,
1033
1033
  headers: {
1034
1034
  'Content-Type': embeddedAdapter_contentTypeByExt(filePath)
@@ -1041,7 +1041,7 @@ function createEmbeddedFrontendAdapter(opts) {
1041
1041
  if (!fallbackPath) return c.text('Not Found', 404);
1042
1042
  try {
1043
1043
  const buf = await external_node_fs_default().promises.readFile(fallbackPath);
1044
- return new Response(buf, {
1044
+ return new Response(new Uint8Array(buf), {
1045
1045
  status: 200,
1046
1046
  headers: {
1047
1047
  'Content-Type': embeddedAdapter_contentTypeByExt(fallbackPath)
package/dist/server.mjs CHANGED
@@ -148,7 +148,7 @@ async function serveLocalFile(c, rootDir) {
148
148
  if (filePath !== rootResolved && !filePath.startsWith(`${rootResolved}${node_path.sep}`)) return c.text('Not Found', 404);
149
149
  try {
150
150
  const buf = await node_fs.promises.readFile(filePath);
151
- return new Response(buf, {
151
+ return new Response(new Uint8Array(buf), {
152
152
  status: 200,
153
153
  headers: {
154
154
  'Content-Type': contentTypeByExt(filePath)
@@ -999,7 +999,7 @@ function createEmbeddedFrontendAdapter(opts) {
999
999
  const stat = await node_fs.promises.stat(filePath);
1000
1000
  if (stat.isFile()) {
1001
1001
  const buf = await node_fs.promises.readFile(filePath);
1002
- return new Response(buf, {
1002
+ return new Response(new Uint8Array(buf), {
1003
1003
  status: 200,
1004
1004
  headers: {
1005
1005
  'Content-Type': embeddedAdapter_contentTypeByExt(filePath)
@@ -1012,7 +1012,7 @@ function createEmbeddedFrontendAdapter(opts) {
1012
1012
  if (!fallbackPath) return c.text('Not Found', 404);
1013
1013
  try {
1014
1014
  const buf = await node_fs.promises.readFile(fallbackPath);
1015
- return new Response(buf, {
1015
+ return new Response(new Uint8Array(buf), {
1016
1016
  status: 200,
1017
1017
  headers: {
1018
1018
  'Content-Type': embeddedAdapter_contentTypeByExt(fallbackPath)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/treeshake-server",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "description": "Build service powered by Hono that installs dependencies, builds with Rspack, and uploads artifacts.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -24,10 +24,10 @@
24
24
  "author": "",
25
25
  "license": "ISC",
26
26
  "dependencies": {
27
- "@hono/node-server": "1.19.5",
27
+ "@hono/node-server": "1.19.10",
28
28
  "@hono/zod-validator": "0.7.4",
29
29
  "dotenv": "16.4.5",
30
- "hono": "4.11.7",
30
+ "hono": "4.12.7",
31
31
  "json-stable-stringify": "1.3.0",
32
32
  "nanoid": "5.1.6",
33
33
  "p-limit": "^7.2.0",
@@ -58,9 +58,9 @@
58
58
  "directory": "packages/treeshake-server"
59
59
  },
60
60
  "scripts": {
61
- "build": "pnpm -C ../treeshake-frontend build && rslib build && node scripts/copy-frontend.js",
61
+ "build": "rslib build && node scripts/copy-frontend.js",
62
62
  "lint": "biome lint src scripts",
63
- "prestart": "npm run build",
63
+ "prestart": "pnpm exec turbo run build --filter=@module-federation/treeshake-server",
64
64
  "dev": "node scripts/dev.js",
65
65
  "start": "node dist/server.js",
66
66
  "test": "node ../../scripts/ensure-playwright.js && rstest"