@reckona/mreact-router 0.0.156 → 0.0.158

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.
@@ -6,6 +6,7 @@ export interface AppRouterImportPolicy {
6
6
  export interface AppRouterImportPolicyPluginOptions {
7
7
  allowedSourceDirs?: readonly string[] | undefined;
8
8
  appDir: string;
9
+ externalizeAllowedPackages?: boolean | undefined;
9
10
  importPolicy?: AppRouterImportPolicy | undefined;
10
11
  label: string;
11
12
  projectRoot?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"import-policy.d.ts","sourceRoot":"","sources":["../src/import-policy.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,kCAAkC;IACjD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,kCAAkC;;oBAiBzE;QACd,SAAS,CACP,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE;YACf,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;SACpB,KAAK;YAAE,MAAM,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,GACxF,IAAI,CAAC;KACT;EAkEJ"}
1
+ {"version":3,"file":"import-policy.d.ts","sourceRoot":"","sources":["../src/import-policy.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,kCAAkC;IACjD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjD,YAAY,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,kCAAkC;;oBAiBzE;QACd,SAAS,CACP,OAAO,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE;YACf,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;SACpB,KAAK;YAAE,MAAM,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,GACxF,IAAI,CAAC;KACT;EAoEJ"}
@@ -69,10 +69,12 @@ export function createAppRouterImportPolicyPlugin(options) {
69
69
  if (resolvedPackage === undefined) {
70
70
  return undefined;
71
71
  }
72
- return {
73
- external: true,
74
- path: pathToFileURL(resolvedPackage).href,
75
- };
72
+ return options.externalizeAllowedPackages === false
73
+ ? undefined
74
+ : {
75
+ external: true,
76
+ path: pathToFileURL(resolvedPackage).href,
77
+ };
76
78
  });
77
79
  },
78
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"import-policy.js","sourceRoot":"","sources":["../src/import-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import { builtinModules, createRequire } from \"node:module\";\nimport { dirname, join, relative, resolve, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { resolveWorkspacePackageFile } from \"./workspace-packages.js\";\n\nconst builtinModuleNames = new Set(builtinModules.flatMap((name) => [name, `node:${name}`]));\nconst alwaysAllowedPackages = new Set([\n \"@reckona/mreact\",\n \"@reckona/mreact-auth\",\n \"@reckona/mreact-query\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-router\",\n]);\n\nexport interface AppRouterImportPolicy {\n allowedPackages?: readonly string[] | undefined;\n allowedSourceDirs?: readonly string[] | undefined;\n projectRoot?: string | undefined;\n}\n\nexport interface AppRouterImportPolicyPluginOptions {\n allowedSourceDirs?: readonly string[] | undefined;\n appDir: string;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: string;\n projectRoot?: string | undefined;\n}\n\nexport function createAppRouterImportPolicyPlugin(options: AppRouterImportPolicyPluginOptions) {\n const projectRoot = resolve(\n options.importPolicy?.projectRoot ?? options.projectRoot ?? options.appDir,\n );\n const configuredAllowedSourceDirs =\n options.importPolicy?.allowedSourceDirs ?? options.allowedSourceDirs;\n const allowedSourceDirs = (configuredAllowedSourceDirs ?? [options.appDir]).map((directory) =>\n resolve(projectRoot, directory),\n );\n const allowedPackages = new Set([\n ...alwaysAllowedPackages,\n ...(options.importPolicy?.allowedPackages ?? []),\n ]);\n const customAllowedSourceDirs = configuredAllowedSourceDirs !== undefined;\n\n return {\n name: `mreact-router-${options.label}-import-policy`,\n setup(buildApi: {\n onResolve(\n options: { filter: RegExp },\n callback: (args: {\n path: string;\n resolveDir: string;\n }) => { errors?: Array<{ text: string }>; external?: boolean; path?: string } | undefined,\n ): void;\n }) {\n buildApi.onResolve({ filter: /.*/ }, (args) => {\n if (isRelativeImport(args.path)) {\n const baseDir = args.resolveDir === \"\" ? options.appDir : args.resolveDir;\n if (!isInsideAnyDirectory(allowedSourceDirs, baseDir)) {\n return undefined;\n }\n\n const resolvedPath = resolve(baseDir, args.path);\n\n return !isInsideDirectory(projectRoot, resolvedPath) ||\n !isInsideAnyDirectory(allowedSourceDirs, resolvedPath)\n ? {\n errors: [\n {\n text: customAllowedSourceDirs\n ? `${options.label} imports must stay inside allowed source directories: ${args.path}`\n : `${options.label} imports must stay inside the app directory: ${args.path}`,\n },\n ],\n }\n : undefined;\n }\n\n if (isAbsoluteOrProtocolImport(args.path)) {\n return undefined;\n }\n\n if (builtinModuleNames.has(args.path)) {\n return { external: true, path: args.path };\n }\n\n const workspacePath = workspacePackagePath(args.path, args.resolveDir);\n if (workspacePath !== undefined) {\n return { path: workspacePath };\n }\n\n if (args.resolveDir !== \"\" && !isInsideAnyDirectory(allowedSourceDirs, args.resolveDir)) {\n return undefined;\n }\n\n const packageName = packageNameForSpecifier(args.path);\n\n if (!allowedPackages.has(packageName)) {\n return {\n errors: [\n {\n text: importPolicyPackageError(options.label, packageName),\n },\n ],\n };\n }\n\n const resolvedPackage = resolvePackageSpecifier(args.path, args.resolveDir, options.appDir);\n\n if (resolvedPackage === undefined) {\n return undefined;\n }\n\n return {\n external: true,\n path: pathToFileURL(resolvedPackage).href,\n };\n });\n },\n };\n}\n\nfunction resolvePackageSpecifier(\n specifier: string,\n resolveDir: string,\n appDir: string,\n): string | undefined {\n const baseDir = resolveDir === \"\" ? appDir : resolveDir;\n\n try {\n return createRequire(join(baseDir, \"__mreact_resolve__.cjs\")).resolve(specifier);\n } catch {\n return undefined;\n }\n}\n\nfunction importPolicyPackageError(label: string, packageName: string): string {\n const normalizedLabel = label.toLowerCase();\n const moduleKind =\n normalizedLabel.includes(\"loader\") ||\n normalizedLabel.includes(\"middleware\") ||\n normalizedLabel.includes(\"route\") ||\n normalizedLabel.includes(\"metadata\") ||\n normalizedLabel.includes(\"action\")\n ? normalizedLabel\n : `${normalizedLabel} module`;\n const aliasHint =\n packageName === \"~\" || packageName === \"@\"\n ? [\n \"\",\n 'This looks like an app-local alias import. Use a relative import such as \"./\" or \"../\" in server-side route code, or move the import behind a supported client boundary.',\n ]\n : [];\n\n return [\n `\"${packageName}\" is imported by a ${moduleKind} but is not allowed by the app-router import policy.`,\n \"\",\n \"The policy blocks server-side static imports from loader, middleware, route handler, metadata, and server action modules unless the package is explicitly allowed.\",\n ...aliasHint,\n \"\",\n \"Allow it in the Vite plugin config:\",\n \" mreactRouter({\",\n ` importPolicy: { allowedPackages: [${JSON.stringify(packageName)}] },`,\n \" })\",\n \"\",\n \"For production builds, also declare the package in package.json dependencies so mreact-router build can derive the generated policy and the package is installed in the runtime artifact.\",\n ].join(\"\\n\");\n}\n\nfunction workspacePackagePath(specifier: string, resolveDir: string): string | undefined {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const packageRoot = dirname(currentDir);\n const entries = new Map<\n string,\n string | { entry: string; monorepoDir: string; packageName: string }\n >([\n [\n \"@reckona/mreact-auth\",\n { entry: \"index\", monorepoDir: \"auth\", packageName: \"@reckona/mreact-auth\" },\n ],\n [\n \"@reckona/mreact-compiler\",\n { entry: \"index\", monorepoDir: \"compiler\", packageName: \"@reckona/mreact-compiler\" },\n ],\n [\n \"@reckona/mreact-query\",\n { entry: \"index\", monorepoDir: \"query\", packageName: \"@reckona/mreact-query\" },\n ],\n [\n \"@reckona/mreact-reactive-core\",\n {\n entry: \"index\",\n monorepoDir: \"reactive-core\",\n packageName: \"@reckona/mreact-reactive-core\",\n },\n ],\n [\n \"@reckona/mreact-router\",\n join(packageRoot, currentDir.endsWith(`${sep}dist`) ? \"dist/index.js\" : \"src/index.ts\"),\n ],\n [\n \"@reckona/mreact-router/app-router-globals\",\n join(\n packageRoot,\n currentDir.endsWith(`${sep}dist`)\n ? \"dist/app-router-globals.js\"\n : \"src/app-router-globals.ts\",\n ),\n ],\n [\n \"@reckona/mreact-router/link\",\n join(packageRoot, currentDir.endsWith(`${sep}dist`) ? \"dist/link.js\" : \"src/link.ts\"),\n ],\n [\n \"@reckona/mreact-router/navigation-state\",\n join(\n packageRoot,\n currentDir.endsWith(`${sep}dist`) ? \"dist/navigation-state.js\" : \"src/navigation-state.ts\",\n ),\n ],\n [\n \"@reckona/mreact-router/stream-list\",\n join(\n packageRoot,\n currentDir.endsWith(`${sep}dist`) ? \"dist/stream-list.js\" : \"src/stream-list.ts\",\n ),\n ],\n [\n \"@reckona/mreact-server\",\n { entry: \"index\", monorepoDir: \"server\", packageName: \"@reckona/mreact-server\" },\n ],\n ]);\n const entry = entries.get(specifier);\n\n if (entry === undefined || typeof entry === \"string\") {\n return entry;\n }\n\n return resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry: entry.entry,\n monorepoDir: entry.monorepoDir,\n packageName: entry.packageName,\n resolveDir,\n specifier,\n });\n}\n\nfunction isRelativeImport(path: string): boolean {\n return path === \".\" || path === \"..\" || path.startsWith(\"./\") || path.startsWith(\"../\");\n}\n\nfunction isAbsoluteOrProtocolImport(path: string): boolean {\n return path.startsWith(\"/\") || /^[A-Za-z][A-Za-z0-9+.-]*:/.test(path);\n}\n\nfunction packageNameForSpecifier(specifier: string): string {\n if (!specifier.startsWith(\"@\")) {\n return specifier.split(\"/\")[0] ?? specifier;\n }\n\n const [scope, name] = specifier.split(\"/\");\n\n return scope !== undefined && name !== undefined ? `${scope}/${name}` : specifier;\n}\n\nfunction isInsideDirectory(directory: string, candidate: string): boolean {\n const relativePath = relative(directory, candidate);\n\n return relativePath === \"\" || (!relativePath.startsWith(\"..\") && !relativePath.startsWith(sep));\n}\n\nfunction isInsideAnyDirectory(directories: readonly string[], candidate: string): boolean {\n return directories.some((directory) => isInsideDirectory(directory, candidate));\n}\n"]}
1
+ {"version":3,"file":"import-policy.js","sourceRoot":"","sources":["../src/import-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import { builtinModules, createRequire } from \"node:module\";\nimport { dirname, join, relative, resolve, sep } from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { resolveWorkspacePackageFile } from \"./workspace-packages.js\";\n\nconst builtinModuleNames = new Set(builtinModules.flatMap((name) => [name, `node:${name}`]));\nconst alwaysAllowedPackages = new Set([\n \"@reckona/mreact\",\n \"@reckona/mreact-auth\",\n \"@reckona/mreact-query\",\n \"@reckona/mreact-reactive-core\",\n \"@reckona/mreact-router\",\n]);\n\nexport interface AppRouterImportPolicy {\n allowedPackages?: readonly string[] | undefined;\n allowedSourceDirs?: readonly string[] | undefined;\n projectRoot?: string | undefined;\n}\n\nexport interface AppRouterImportPolicyPluginOptions {\n allowedSourceDirs?: readonly string[] | undefined;\n appDir: string;\n externalizeAllowedPackages?: boolean | undefined;\n importPolicy?: AppRouterImportPolicy | undefined;\n label: string;\n projectRoot?: string | undefined;\n}\n\nexport function createAppRouterImportPolicyPlugin(options: AppRouterImportPolicyPluginOptions) {\n const projectRoot = resolve(\n options.importPolicy?.projectRoot ?? options.projectRoot ?? options.appDir,\n );\n const configuredAllowedSourceDirs =\n options.importPolicy?.allowedSourceDirs ?? options.allowedSourceDirs;\n const allowedSourceDirs = (configuredAllowedSourceDirs ?? [options.appDir]).map((directory) =>\n resolve(projectRoot, directory),\n );\n const allowedPackages = new Set([\n ...alwaysAllowedPackages,\n ...(options.importPolicy?.allowedPackages ?? []),\n ]);\n const customAllowedSourceDirs = configuredAllowedSourceDirs !== undefined;\n\n return {\n name: `mreact-router-${options.label}-import-policy`,\n setup(buildApi: {\n onResolve(\n options: { filter: RegExp },\n callback: (args: {\n path: string;\n resolveDir: string;\n }) => { errors?: Array<{ text: string }>; external?: boolean; path?: string } | undefined,\n ): void;\n }) {\n buildApi.onResolve({ filter: /.*/ }, (args) => {\n if (isRelativeImport(args.path)) {\n const baseDir = args.resolveDir === \"\" ? options.appDir : args.resolveDir;\n if (!isInsideAnyDirectory(allowedSourceDirs, baseDir)) {\n return undefined;\n }\n\n const resolvedPath = resolve(baseDir, args.path);\n\n return !isInsideDirectory(projectRoot, resolvedPath) ||\n !isInsideAnyDirectory(allowedSourceDirs, resolvedPath)\n ? {\n errors: [\n {\n text: customAllowedSourceDirs\n ? `${options.label} imports must stay inside allowed source directories: ${args.path}`\n : `${options.label} imports must stay inside the app directory: ${args.path}`,\n },\n ],\n }\n : undefined;\n }\n\n if (isAbsoluteOrProtocolImport(args.path)) {\n return undefined;\n }\n\n if (builtinModuleNames.has(args.path)) {\n return { external: true, path: args.path };\n }\n\n const workspacePath = workspacePackagePath(args.path, args.resolveDir);\n if (workspacePath !== undefined) {\n return { path: workspacePath };\n }\n\n if (args.resolveDir !== \"\" && !isInsideAnyDirectory(allowedSourceDirs, args.resolveDir)) {\n return undefined;\n }\n\n const packageName = packageNameForSpecifier(args.path);\n\n if (!allowedPackages.has(packageName)) {\n return {\n errors: [\n {\n text: importPolicyPackageError(options.label, packageName),\n },\n ],\n };\n }\n\n const resolvedPackage = resolvePackageSpecifier(args.path, args.resolveDir, options.appDir);\n\n if (resolvedPackage === undefined) {\n return undefined;\n }\n\n return options.externalizeAllowedPackages === false\n ? undefined\n : {\n external: true,\n path: pathToFileURL(resolvedPackage).href,\n };\n });\n },\n };\n}\n\nfunction resolvePackageSpecifier(\n specifier: string,\n resolveDir: string,\n appDir: string,\n): string | undefined {\n const baseDir = resolveDir === \"\" ? appDir : resolveDir;\n\n try {\n return createRequire(join(baseDir, \"__mreact_resolve__.cjs\")).resolve(specifier);\n } catch {\n return undefined;\n }\n}\n\nfunction importPolicyPackageError(label: string, packageName: string): string {\n const normalizedLabel = label.toLowerCase();\n const moduleKind =\n normalizedLabel.includes(\"loader\") ||\n normalizedLabel.includes(\"middleware\") ||\n normalizedLabel.includes(\"route\") ||\n normalizedLabel.includes(\"metadata\") ||\n normalizedLabel.includes(\"action\")\n ? normalizedLabel\n : `${normalizedLabel} module`;\n const aliasHint =\n packageName === \"~\" || packageName === \"@\"\n ? [\n \"\",\n 'This looks like an app-local alias import. Use a relative import such as \"./\" or \"../\" in server-side route code, or move the import behind a supported client boundary.',\n ]\n : [];\n\n return [\n `\"${packageName}\" is imported by a ${moduleKind} but is not allowed by the app-router import policy.`,\n \"\",\n \"The policy blocks server-side static imports from loader, middleware, route handler, metadata, and server action modules unless the package is explicitly allowed.\",\n ...aliasHint,\n \"\",\n \"Allow it in the Vite plugin config:\",\n \" mreactRouter({\",\n ` importPolicy: { allowedPackages: [${JSON.stringify(packageName)}] },`,\n \" })\",\n \"\",\n \"For production builds, also declare the package in package.json dependencies so mreact-router build can derive the generated policy and the package is installed in the runtime artifact.\",\n ].join(\"\\n\");\n}\n\nfunction workspacePackagePath(specifier: string, resolveDir: string): string | undefined {\n const currentDir = dirname(fileURLToPath(import.meta.url));\n const packageRoot = dirname(currentDir);\n const entries = new Map<\n string,\n string | { entry: string; monorepoDir: string; packageName: string }\n >([\n [\n \"@reckona/mreact-auth\",\n { entry: \"index\", monorepoDir: \"auth\", packageName: \"@reckona/mreact-auth\" },\n ],\n [\n \"@reckona/mreact-compiler\",\n { entry: \"index\", monorepoDir: \"compiler\", packageName: \"@reckona/mreact-compiler\" },\n ],\n [\n \"@reckona/mreact-query\",\n { entry: \"index\", monorepoDir: \"query\", packageName: \"@reckona/mreact-query\" },\n ],\n [\n \"@reckona/mreact-reactive-core\",\n {\n entry: \"index\",\n monorepoDir: \"reactive-core\",\n packageName: \"@reckona/mreact-reactive-core\",\n },\n ],\n [\n \"@reckona/mreact-router\",\n join(packageRoot, currentDir.endsWith(`${sep}dist`) ? \"dist/index.js\" : \"src/index.ts\"),\n ],\n [\n \"@reckona/mreact-router/app-router-globals\",\n join(\n packageRoot,\n currentDir.endsWith(`${sep}dist`)\n ? \"dist/app-router-globals.js\"\n : \"src/app-router-globals.ts\",\n ),\n ],\n [\n \"@reckona/mreact-router/link\",\n join(packageRoot, currentDir.endsWith(`${sep}dist`) ? \"dist/link.js\" : \"src/link.ts\"),\n ],\n [\n \"@reckona/mreact-router/navigation-state\",\n join(\n packageRoot,\n currentDir.endsWith(`${sep}dist`) ? \"dist/navigation-state.js\" : \"src/navigation-state.ts\",\n ),\n ],\n [\n \"@reckona/mreact-router/stream-list\",\n join(\n packageRoot,\n currentDir.endsWith(`${sep}dist`) ? \"dist/stream-list.js\" : \"src/stream-list.ts\",\n ),\n ],\n [\n \"@reckona/mreact-server\",\n { entry: \"index\", monorepoDir: \"server\", packageName: \"@reckona/mreact-server\" },\n ],\n ]);\n const entry = entries.get(specifier);\n\n if (entry === undefined || typeof entry === \"string\") {\n return entry;\n }\n\n return resolveWorkspacePackageFile({\n currentFileUrl: import.meta.url,\n entry: entry.entry,\n monorepoDir: entry.monorepoDir,\n packageName: entry.packageName,\n resolveDir,\n specifier,\n });\n}\n\nfunction isRelativeImport(path: string): boolean {\n return path === \".\" || path === \"..\" || path.startsWith(\"./\") || path.startsWith(\"../\");\n}\n\nfunction isAbsoluteOrProtocolImport(path: string): boolean {\n return path.startsWith(\"/\") || /^[A-Za-z][A-Za-z0-9+.-]*:/.test(path);\n}\n\nfunction packageNameForSpecifier(specifier: string): string {\n if (!specifier.startsWith(\"@\")) {\n return specifier.split(\"/\")[0] ?? specifier;\n }\n\n const [scope, name] = specifier.split(\"/\");\n\n return scope !== undefined && name !== undefined ? `${scope}/${name}` : specifier;\n}\n\nfunction isInsideDirectory(directory: string, candidate: string): boolean {\n const relativePath = relative(directory, candidate);\n\n return relativePath === \"\" || (!relativePath.startsWith(\"..\") && !relativePath.startsWith(sep));\n}\n\nfunction isInsideAnyDirectory(directories: readonly string[], candidate: string): boolean {\n return directories.some((directory) => isInsideDirectory(directory, candidate));\n}\n"]}
package/dist/render.d.ts CHANGED
@@ -90,6 +90,7 @@ export declare function bundleMiddlewareModuleCode(options: {
90
90
  appDir: string;
91
91
  code: string;
92
92
  define?: UserConfig["define"] | undefined;
93
+ externalizeAllowedPackages?: boolean | undefined;
93
94
  file: string;
94
95
  importPolicy?: AppRouterImportPolicy | undefined;
95
96
  vitePlugins?: readonly PluginOption[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/dist/render.js CHANGED
@@ -1671,6 +1671,7 @@ export async function bundleMiddlewareModuleCode(options) {
1671
1671
  fileImportMetaUrlPlugin(),
1672
1672
  createAppRouterImportPolicyPlugin({
1673
1673
  appDir: options.appDir,
1674
+ externalizeAllowedPackages: options.externalizeAllowedPackages,
1674
1675
  importPolicy: options.importPolicy,
1675
1676
  label: "Middleware",
1676
1677
  }),
@@ -2187,7 +2188,11 @@ async function renderVisibleOutOfOrderFragment(sink, id, value, render, options)
2187
2188
  const fragmentSink = createStringSink();
2188
2189
  await renderAsyncBoundary(fragmentSink, value, render, options.catch === undefined ? {} : { catch: options.catch });
2189
2190
  await fragmentSink.drain();
2190
- sink.append(`<template data-mreact-oob-fragment="${escapeHtmlAttribute(id)}">${fragmentSink.toString()}</template>`);
2191
+ sink.append(renderVisibleOutOfOrderFragmentHtml(id, fragmentSink.toString()));
2192
+ }
2193
+ function renderVisibleOutOfOrderFragmentHtml(id, html) {
2194
+ const escapedId = escapeHtmlAttribute(id);
2195
+ return `<template data-mreact-oob-fragment="${escapedId}">${html}</template><mreact-oob-complete hidden data-mreact-oob-complete="${escapedId}"></mreact-oob-complete>`;
2191
2196
  }
2192
2197
  async function appendServerStreamModule(code, sink, props, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, importPolicy) {
2193
2198
  const module = await loadServerStreamModule(code, sourcefile, serverModules, serverModuleCacheVersion, define, vitePlugins, importPolicy);