@mastra/deployer 1.0.0-beta.10 → 1.0.0-beta.13
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/CHANGELOG.md +36 -0
- package/dist/build/analyze/analyzeEntry.d.ts.map +1 -1
- package/dist/build/analyze/bundleExternals.d.ts +4 -5
- package/dist/build/analyze/bundleExternals.d.ts.map +1 -1
- package/dist/build/analyze.cjs +2 -2
- package/dist/build/analyze.d.ts +2 -2
- package/dist/build/analyze.d.ts.map +1 -1
- package/dist/build/analyze.js +1 -1
- package/dist/build/bundler.cjs +3 -3
- package/dist/build/bundler.d.ts +2 -1
- package/dist/build/bundler.d.ts.map +1 -1
- package/dist/build/bundler.js +1 -1
- package/dist/build/index.cjs +15 -10
- package/dist/build/index.d.ts +1 -0
- package/dist/build/index.d.ts.map +1 -1
- package/dist/build/index.js +4 -3
- package/dist/build/package-info.d.ts +9 -0
- package/dist/build/package-info.d.ts.map +1 -0
- package/dist/build/plugins/node-modules-extension-resolver.d.ts +7 -0
- package/dist/build/plugins/node-modules-extension-resolver.d.ts.map +1 -1
- package/dist/build/utils.d.ts +18 -4
- package/dist/build/utils.d.ts.map +1 -1
- package/dist/build/watcher.d.ts.map +1 -1
- package/dist/bundler/index.cjs +2 -2
- package/dist/bundler/index.d.ts +5 -5
- package/dist/bundler/index.d.ts.map +1 -1
- package/dist/bundler/index.js +1 -1
- package/dist/chunk-24GY667C.cjs +123 -0
- package/dist/chunk-24GY667C.cjs.map +1 -0
- package/dist/{chunk-SS22TD6R.cjs → chunk-3GOE3SL2.cjs} +27 -23
- package/dist/chunk-3GOE3SL2.cjs.map +1 -0
- package/dist/{chunk-5CWPEG6R.js → chunk-HHA2Y3AS.js} +23 -24
- package/dist/chunk-HHA2Y3AS.js.map +1 -0
- package/dist/{chunk-MUWNMVNL.cjs → chunk-KCGBR2X6.cjs} +130 -58
- package/dist/chunk-KCGBR2X6.cjs.map +1 -0
- package/dist/chunk-LENVOSFH.cjs +261 -0
- package/dist/chunk-LENVOSFH.cjs.map +1 -0
- package/dist/chunk-R6O3XWXM.js +249 -0
- package/dist/chunk-R6O3XWXM.js.map +1 -0
- package/dist/{chunk-TK2CCU7I.js → chunk-RGUNHE4Y.js} +111 -40
- package/dist/chunk-RGUNHE4Y.js.map +1 -0
- package/dist/{chunk-X5QU7B2W.js → chunk-SRPOHKWH.js} +6 -76
- package/dist/chunk-SRPOHKWH.js.map +1 -0
- package/dist/{chunk-2OTEFUER.cjs → chunk-VA2CSOKJ.cjs} +24 -24
- package/dist/chunk-VA2CSOKJ.cjs.map +1 -0
- package/dist/{chunk-RBPCXFN7.js → chunk-XTXGU6QF.js} +19 -15
- package/dist/chunk-XTXGU6QF.js.map +1 -0
- package/dist/index.cjs +5 -5
- package/dist/index.js +2 -2
- package/dist/server/index.cjs +40 -23
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +40 -23
- package/dist/server/index.js.map +1 -1
- package/dist/validator/custom-resolver.cjs +2 -2
- package/dist/validator/custom-resolver.js +1 -1
- package/package.json +5 -6
- package/dist/chunk-2OTEFUER.cjs.map +0 -1
- package/dist/chunk-5CWPEG6R.js.map +0 -1
- package/dist/chunk-BFQ2S5UD.cjs +0 -157
- package/dist/chunk-BFQ2S5UD.cjs.map +0 -1
- package/dist/chunk-MUWNMVNL.cjs.map +0 -1
- package/dist/chunk-RBPCXFN7.js.map +0 -1
- package/dist/chunk-SS22TD6R.cjs.map +0 -1
- package/dist/chunk-TK2CCU7I.js.map +0 -1
- package/dist/chunk-UQZGTSBF.js +0 -147
- package/dist/chunk-UQZGTSBF.js.map +0 -1
- package/dist/chunk-X4TNUYQL.cjs +0 -196
- package/dist/chunk-X4TNUYQL.cjs.map +0 -1
- package/dist/chunk-X5QU7B2W.js.map +0 -1
- package/dist/server/handlers/prompt.d.ts +0 -3
- package/dist/server/handlers/prompt.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/build/plugins/node-modules-extension-resolver.ts","../src/build/bundler.ts"],"names":["resolveFrom","dirname","readFileSync","nodeResolve","isBuiltinModule","extname","getPackageName","resolved","slash","subpathExternalsResolver","join","pathToFileURL","alias","fileURLToPath","tsConfigPaths","esbuild","optimizeLodashImports","commonjs","esmShim","json","removeDeployer","rollup"],"mappings":"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","file":"chunk-LENVOSFH.cjs","sourcesContent":["import { dirname, extname } from 'node:path';\nimport { readFileSync } from 'node:fs';\nimport resolveFrom from 'resolve-from';\nimport type { Plugin } from 'rollup';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport { getPackageName, isBuiltinModule } from '../utils';\n\nconst JS_EXTENSIONS = new Set(['.js', '.mjs', '.cjs']);\n\nconst packageExportsCache = new Map<string, boolean>();\nconst resolveCache = new Map<string, string | null>();\n\nfunction safeResolve(id: string, importer: string): string | null {\n const cacheKey = `${id}\\0${importer}`;\n const cached = resolveCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n let result: string | null;\n try {\n result = resolveFrom(importer, id);\n } catch {\n result = null;\n }\n resolveCache.set(cacheKey, result);\n return result;\n}\n\n/**\n * Check if a package has an exports field in its package.json.\n * Results are cached to avoid repeated filesystem reads.\n */\nfunction packageHasExports(pkgName: string, importer: string): boolean {\n const pkgMainPath = safeResolve(pkgName, importer);\n if (!pkgMainPath) return false;\n // Find package.json and cache by its directory\n let dir = pkgMainPath;\n for (let i = 0; i < 10; i++) {\n dir = dirname(dir);\n const cached = packageExportsCache.get(dir);\n if (cached !== undefined) return cached;\n\n try {\n const pkgJson = JSON.parse(readFileSync(`${dir}/package.json`, 'utf-8'));\n if (pkgJson.name === pkgName) {\n const result = !!pkgJson.exports;\n packageExportsCache.set(dir, result);\n return result;\n }\n } catch {\n // continue up\n }\n }\n return false;\n}\n\n/**\n * Rollup plugin that resolves module extensions for external dependencies.\n *\n * This plugin handles ESM compatibility for external imports when node-resolve is not used:\n * - Packages WITH exports field (e.g., hono, date-fns): Keep imports as-is or strip redundant extensions\n * - Packages WITHOUT exports field (e.g., lodash): Add .js extension for direct file imports\n */\nexport function nodeModulesExtensionResolver(): Plugin {\n // Create a single instance of node-resolve to reuse\n const nodeResolvePlugin = nodeResolve();\n\n return {\n name: 'node-modules-extension-resolver',\n async resolveId(id, importer, options) {\n // Skip relative imports, absolute paths, no importer, or builtin modules\n if (!importer || id.startsWith('.') || id.startsWith('/') || isBuiltinModule(id)) {\n return null;\n }\n\n // Skip direct package imports (e.g., 'lodash', '@mastra/core')\n const parts = id.split('/');\n const isScoped = id.startsWith('@');\n if ((isScoped && parts.length === 2) || (!isScoped && parts.length === 1)) {\n return null;\n }\n\n const foundExt = extname(id);\n const pkgName = getPackageName(id);\n\n // Handle imports that already have a JS extension\n if (foundExt && JS_EXTENSIONS.has(foundExt)) {\n // If package has exports, strip the extension to avoid double-extension issues\n // (e.g., hono/utils/mime.js -> hono/dist/utils/mime.js.js)\n if (pkgName && packageHasExports(pkgName, importer)) {\n return {\n id: id.slice(0, -foundExt.length),\n external: true,\n };\n }\n // For packages without exports, keep the extension as-is\n return { id, external: true };\n }\n\n // Try import.meta.resolve first - if it works, the import is valid as-is\n // This respects ESM exports maps correctly\n try {\n const resolved = import.meta.resolve(id);\n if (resolved && extname(resolved)) {\n return { id, external: true };\n }\n } catch {\n // import.meta.resolve failed, continue with fallback logic\n }\n\n // Fallback: For imports without extension, check if we need to add one\n // @ts-expect-error - resolveId.handler exists but isn't typed\n const nodeResolved = await nodeResolvePlugin.resolveId?.handler?.call(this, id, importer, options);\n\n if (!nodeResolved?.id) {\n return null;\n }\n\n const resolved = safeResolve(id, importer);\n if (!resolved) {\n // Try adding extensions manually\n for (const ext of JS_EXTENSIONS) {\n if (safeResolve(id + ext, importer)) {\n return { id: id + ext, external: true };\n }\n }\n return null;\n }\n\n const resolvedExt = extname(resolved);\n\n // No JS extension in resolved path - keep as-is\n if (!resolvedExt || !JS_EXTENSIONS.has(resolvedExt)) {\n return { id, external: true };\n }\n\n // Package has exports - let Node.js resolve via exports map\n if (pkgName && packageHasExports(pkgName, importer)) {\n return { id, external: true };\n }\n\n // Check if this is a direct file reference that needs the extension\n // e.g., lodash/fp/get resolves to .../lodash/fp/get.js\n const subpath = pkgName ? id.slice(pkgName.length + 1) : '';\n if (subpath && resolved.endsWith(`/${subpath}${resolvedExt}`)) {\n return { id: id + resolvedExt, external: true };\n }\n\n return { id, external: true };\n },\n };\n}\n","import alias from '@rollup/plugin-alias';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport { esmShim } from './plugins/esm-shim';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { rollup, type InputOptions, type OutputOptions, type Plugin } from 'rollup';\nimport { esbuild } from './plugins/esbuild';\nimport { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';\nimport { analyzeBundle } from './analyze';\nimport { removeDeployer } from './plugins/remove-deployer';\nimport { tsConfigPaths } from './plugins/tsconfig-paths';\nimport { join } from 'node:path';\nimport { slash } from './utils';\nimport { subpathExternalsResolver } from './plugins/subpath-externals-resolver';\nimport { nodeModulesExtensionResolver } from './plugins/node-modules-extension-resolver';\n\nexport async function getInputOptions(\n entryFile: string,\n analyzedBundleInfo: Awaited<ReturnType<typeof analyzeBundle>>,\n platform: 'node' | 'browser',\n env: Record<string, string> = { 'process.env.NODE_ENV': JSON.stringify('production') },\n {\n sourcemap = false,\n isDev = false,\n projectRoot,\n workspaceRoot = undefined,\n enableEsmShim = true,\n externalsPreset = false,\n }: {\n sourcemap?: boolean;\n isDev?: boolean;\n workspaceRoot?: string;\n projectRoot: string;\n enableEsmShim?: boolean;\n externalsPreset?: boolean;\n },\n): Promise<InputOptions> {\n let nodeResolvePlugin =\n platform === 'node'\n ? nodeResolve({\n preferBuiltins: true,\n exportConditions: ['node'],\n })\n : nodeResolve({\n preferBuiltins: false,\n browser: true,\n });\n\n const externalsCopy = new Set<string>(analyzedBundleInfo.externalDependencies);\n const externals = externalsPreset ? [] : Array.from(externalsCopy);\n\n const normalizedEntryFile = slash(entryFile);\n return {\n logLevel: process.env.MASTRA_BUNDLER_DEBUG === 'true' ? 'debug' : 'silent',\n treeshake: 'smallest',\n preserveSymlinks: true,\n external: externals,\n plugins: [\n subpathExternalsResolver(externals),\n {\n name: 'alias-optimized-deps',\n resolveId(id: string) {\n if (!analyzedBundleInfo.dependencies.has(id)) {\n return null;\n }\n\n const filename = analyzedBundleInfo.dependencies.get(id)!;\n const absolutePath = join(workspaceRoot || projectRoot, filename);\n\n // During `mastra dev` we want to keep deps as external\n if (isDev) {\n return {\n id: process.platform === 'win32' ? pathToFileURL(absolutePath).href : absolutePath,\n external: true,\n };\n }\n\n // For production builds return the absolute path as-is so Rollup can handle itself\n return {\n id: absolutePath,\n external: false,\n };\n },\n } satisfies Plugin,\n alias({\n entries: [\n {\n find: /^\\#server$/,\n replacement: slash(fileURLToPath(import.meta.resolve('@mastra/deployer/server'))),\n },\n {\n find: /^\\@mastra\\/server\\/(.*)/,\n replacement: `@mastra/server/$1`,\n customResolver: id => {\n if (id.startsWith('@mastra/server')) {\n return {\n id: fileURLToPath(import.meta.resolve(id)),\n };\n }\n },\n },\n { find: /^\\#mastra$/, replacement: normalizedEntryFile },\n ],\n }),\n tsConfigPaths(),\n {\n name: 'tools-rewriter',\n resolveId(id: string) {\n if (id === '#tools') {\n return {\n id: './tools.mjs',\n external: true,\n };\n }\n },\n } satisfies Plugin,\n esbuild({\n platform,\n define: env,\n }),\n optimizeLodashImports({\n include: '**/*.{js,ts,mjs,cjs}',\n }),\n commonjs({\n extensions: ['.js', '.ts'],\n transformMixedEsModules: true,\n esmExternals(id) {\n return externals.includes(id);\n },\n }),\n enableEsmShim ? esmShim() : undefined,\n externalsPreset ? nodeModulesExtensionResolver() : nodeResolvePlugin,\n // for debugging\n // {\n // name: 'logger',\n // //@ts-ignore\n // resolveId(id, ...args) {\n // console.log({ id, args });\n // },\n // // @ts-ignore\n // transform(code, id) {\n // if (code.includes('class Duplexify ')) {\n // console.log({ duplex: id });\n // }\n // },\n // },\n json(),\n removeDeployer(entryFile, { sourcemap }),\n // treeshake unused imports\n esbuild({\n include: entryFile,\n platform,\n }),\n ].filter(Boolean),\n } satisfies InputOptions;\n}\n\nexport async function createBundler(\n inputOptions: InputOptions,\n outputOptions: Partial<OutputOptions> & { dir: string },\n) {\n const bundler = await rollup(inputOptions);\n\n return {\n write: () => {\n return bundler.write({\n ...outputOptions,\n format: 'esm',\n entryFileNames: '[name].mjs',\n chunkFileNames: '[name].mjs',\n });\n },\n close: () => {\n return bundler.close();\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { subpathExternalsResolver, tsConfigPaths, esbuild, esmShim, removeDeployer } from './chunk-RGUNHE4Y.js';
|
|
2
|
+
import { isBuiltinModule, getPackageName, slash } from './chunk-HHA2Y3AS.js';
|
|
3
|
+
import alias from '@rollup/plugin-alias';
|
|
4
|
+
import commonjs from '@rollup/plugin-commonjs';
|
|
5
|
+
import json from '@rollup/plugin-json';
|
|
6
|
+
import nodeResolve2 from '@rollup/plugin-node-resolve';
|
|
7
|
+
import { pathToFileURL, fileURLToPath } from 'url';
|
|
8
|
+
import { rollup } from 'rollup';
|
|
9
|
+
import { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';
|
|
10
|
+
import { extname, join, dirname } from 'path';
|
|
11
|
+
import { readFileSync } from 'fs';
|
|
12
|
+
import resolveFrom from 'resolve-from';
|
|
13
|
+
|
|
14
|
+
var JS_EXTENSIONS = /* @__PURE__ */ new Set([".js", ".mjs", ".cjs"]);
|
|
15
|
+
var packageExportsCache = /* @__PURE__ */ new Map();
|
|
16
|
+
var resolveCache = /* @__PURE__ */ new Map();
|
|
17
|
+
function safeResolve(id, importer) {
|
|
18
|
+
const cacheKey = `${id}\0${importer}`;
|
|
19
|
+
const cached = resolveCache.get(cacheKey);
|
|
20
|
+
if (cached !== void 0) {
|
|
21
|
+
return cached;
|
|
22
|
+
}
|
|
23
|
+
let result;
|
|
24
|
+
try {
|
|
25
|
+
result = resolveFrom(importer, id);
|
|
26
|
+
} catch {
|
|
27
|
+
result = null;
|
|
28
|
+
}
|
|
29
|
+
resolveCache.set(cacheKey, result);
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
function packageHasExports(pkgName, importer) {
|
|
33
|
+
const pkgMainPath = safeResolve(pkgName, importer);
|
|
34
|
+
if (!pkgMainPath) return false;
|
|
35
|
+
let dir = pkgMainPath;
|
|
36
|
+
for (let i = 0; i < 10; i++) {
|
|
37
|
+
dir = dirname(dir);
|
|
38
|
+
const cached = packageExportsCache.get(dir);
|
|
39
|
+
if (cached !== void 0) return cached;
|
|
40
|
+
try {
|
|
41
|
+
const pkgJson = JSON.parse(readFileSync(`${dir}/package.json`, "utf-8"));
|
|
42
|
+
if (pkgJson.name === pkgName) {
|
|
43
|
+
const result = !!pkgJson.exports;
|
|
44
|
+
packageExportsCache.set(dir, result);
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
} catch {
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
function nodeModulesExtensionResolver() {
|
|
53
|
+
const nodeResolvePlugin = nodeResolve2();
|
|
54
|
+
return {
|
|
55
|
+
name: "node-modules-extension-resolver",
|
|
56
|
+
async resolveId(id, importer, options) {
|
|
57
|
+
if (!importer || id.startsWith(".") || id.startsWith("/") || isBuiltinModule(id)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const parts = id.split("/");
|
|
61
|
+
const isScoped = id.startsWith("@");
|
|
62
|
+
if (isScoped && parts.length === 2 || !isScoped && parts.length === 1) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const foundExt = extname(id);
|
|
66
|
+
const pkgName = getPackageName(id);
|
|
67
|
+
if (foundExt && JS_EXTENSIONS.has(foundExt)) {
|
|
68
|
+
if (pkgName && packageHasExports(pkgName, importer)) {
|
|
69
|
+
return {
|
|
70
|
+
id: id.slice(0, -foundExt.length),
|
|
71
|
+
external: true
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return { id, external: true };
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const resolved2 = import.meta.resolve(id);
|
|
78
|
+
if (resolved2 && extname(resolved2)) {
|
|
79
|
+
return { id, external: true };
|
|
80
|
+
}
|
|
81
|
+
} catch {
|
|
82
|
+
}
|
|
83
|
+
const nodeResolved = await nodeResolvePlugin.resolveId?.handler?.call(this, id, importer, options);
|
|
84
|
+
if (!nodeResolved?.id) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const resolved = safeResolve(id, importer);
|
|
88
|
+
if (!resolved) {
|
|
89
|
+
for (const ext of JS_EXTENSIONS) {
|
|
90
|
+
if (safeResolve(id + ext, importer)) {
|
|
91
|
+
return { id: id + ext, external: true };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const resolvedExt = extname(resolved);
|
|
97
|
+
if (!resolvedExt || !JS_EXTENSIONS.has(resolvedExt)) {
|
|
98
|
+
return { id, external: true };
|
|
99
|
+
}
|
|
100
|
+
if (pkgName && packageHasExports(pkgName, importer)) {
|
|
101
|
+
return { id, external: true };
|
|
102
|
+
}
|
|
103
|
+
const subpath = pkgName ? id.slice(pkgName.length + 1) : "";
|
|
104
|
+
if (subpath && resolved.endsWith(`/${subpath}${resolvedExt}`)) {
|
|
105
|
+
return { id: id + resolvedExt, external: true };
|
|
106
|
+
}
|
|
107
|
+
return { id, external: true };
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// src/build/bundler.ts
|
|
113
|
+
async function getInputOptions(entryFile, analyzedBundleInfo, platform, env = { "process.env.NODE_ENV": JSON.stringify("production") }, {
|
|
114
|
+
sourcemap = false,
|
|
115
|
+
isDev = false,
|
|
116
|
+
projectRoot,
|
|
117
|
+
workspaceRoot = void 0,
|
|
118
|
+
enableEsmShim = true,
|
|
119
|
+
externalsPreset = false
|
|
120
|
+
}) {
|
|
121
|
+
let nodeResolvePlugin = platform === "node" ? nodeResolve2({
|
|
122
|
+
preferBuiltins: true,
|
|
123
|
+
exportConditions: ["node"]
|
|
124
|
+
}) : nodeResolve2({
|
|
125
|
+
preferBuiltins: false,
|
|
126
|
+
browser: true
|
|
127
|
+
});
|
|
128
|
+
const externalsCopy = new Set(analyzedBundleInfo.externalDependencies);
|
|
129
|
+
const externals = externalsPreset ? [] : Array.from(externalsCopy);
|
|
130
|
+
const normalizedEntryFile = slash(entryFile);
|
|
131
|
+
return {
|
|
132
|
+
logLevel: process.env.MASTRA_BUNDLER_DEBUG === "true" ? "debug" : "silent",
|
|
133
|
+
treeshake: "smallest",
|
|
134
|
+
preserveSymlinks: true,
|
|
135
|
+
external: externals,
|
|
136
|
+
plugins: [
|
|
137
|
+
subpathExternalsResolver(externals),
|
|
138
|
+
{
|
|
139
|
+
name: "alias-optimized-deps",
|
|
140
|
+
resolveId(id) {
|
|
141
|
+
if (!analyzedBundleInfo.dependencies.has(id)) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
const filename = analyzedBundleInfo.dependencies.get(id);
|
|
145
|
+
const absolutePath = join(workspaceRoot || projectRoot, filename);
|
|
146
|
+
if (isDev) {
|
|
147
|
+
return {
|
|
148
|
+
id: process.platform === "win32" ? pathToFileURL(absolutePath).href : absolutePath,
|
|
149
|
+
external: true
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
id: absolutePath,
|
|
154
|
+
external: false
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
alias({
|
|
159
|
+
entries: [
|
|
160
|
+
{
|
|
161
|
+
find: /^\#server$/,
|
|
162
|
+
replacement: slash(fileURLToPath(import.meta.resolve("@mastra/deployer/server")))
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
find: /^\@mastra\/server\/(.*)/,
|
|
166
|
+
replacement: `@mastra/server/$1`,
|
|
167
|
+
customResolver: (id) => {
|
|
168
|
+
if (id.startsWith("@mastra/server")) {
|
|
169
|
+
return {
|
|
170
|
+
id: fileURLToPath(import.meta.resolve(id))
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
{ find: /^\#mastra$/, replacement: normalizedEntryFile }
|
|
176
|
+
]
|
|
177
|
+
}),
|
|
178
|
+
tsConfigPaths(),
|
|
179
|
+
{
|
|
180
|
+
name: "tools-rewriter",
|
|
181
|
+
resolveId(id) {
|
|
182
|
+
if (id === "#tools") {
|
|
183
|
+
return {
|
|
184
|
+
id: "./tools.mjs",
|
|
185
|
+
external: true
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
esbuild({
|
|
191
|
+
platform,
|
|
192
|
+
define: env
|
|
193
|
+
}),
|
|
194
|
+
optimizeLodashImports({
|
|
195
|
+
include: "**/*.{js,ts,mjs,cjs}"
|
|
196
|
+
}),
|
|
197
|
+
commonjs({
|
|
198
|
+
extensions: [".js", ".ts"],
|
|
199
|
+
transformMixedEsModules: true,
|
|
200
|
+
esmExternals(id) {
|
|
201
|
+
return externals.includes(id);
|
|
202
|
+
}
|
|
203
|
+
}),
|
|
204
|
+
enableEsmShim ? esmShim() : void 0,
|
|
205
|
+
externalsPreset ? nodeModulesExtensionResolver() : nodeResolvePlugin,
|
|
206
|
+
// for debugging
|
|
207
|
+
// {
|
|
208
|
+
// name: 'logger',
|
|
209
|
+
// //@ts-ignore
|
|
210
|
+
// resolveId(id, ...args) {
|
|
211
|
+
// console.log({ id, args });
|
|
212
|
+
// },
|
|
213
|
+
// // @ts-ignore
|
|
214
|
+
// transform(code, id) {
|
|
215
|
+
// if (code.includes('class Duplexify ')) {
|
|
216
|
+
// console.log({ duplex: id });
|
|
217
|
+
// }
|
|
218
|
+
// },
|
|
219
|
+
// },
|
|
220
|
+
json(),
|
|
221
|
+
removeDeployer(entryFile, { sourcemap }),
|
|
222
|
+
// treeshake unused imports
|
|
223
|
+
esbuild({
|
|
224
|
+
include: entryFile,
|
|
225
|
+
platform
|
|
226
|
+
})
|
|
227
|
+
].filter(Boolean)
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
async function createBundler(inputOptions, outputOptions) {
|
|
231
|
+
const bundler = await rollup(inputOptions);
|
|
232
|
+
return {
|
|
233
|
+
write: () => {
|
|
234
|
+
return bundler.write({
|
|
235
|
+
...outputOptions,
|
|
236
|
+
format: "esm",
|
|
237
|
+
entryFileNames: "[name].mjs",
|
|
238
|
+
chunkFileNames: "[name].mjs"
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
close: () => {
|
|
242
|
+
return bundler.close();
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export { createBundler, getInputOptions, nodeModulesExtensionResolver };
|
|
248
|
+
//# sourceMappingURL=chunk-R6O3XWXM.js.map
|
|
249
|
+
//# sourceMappingURL=chunk-R6O3XWXM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/build/plugins/node-modules-extension-resolver.ts","../src/build/bundler.ts"],"names":["nodeResolve","resolved"],"mappings":"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","file":"chunk-R6O3XWXM.js","sourcesContent":["import { dirname, extname } from 'node:path';\nimport { readFileSync } from 'node:fs';\nimport resolveFrom from 'resolve-from';\nimport type { Plugin } from 'rollup';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport { getPackageName, isBuiltinModule } from '../utils';\n\nconst JS_EXTENSIONS = new Set(['.js', '.mjs', '.cjs']);\n\nconst packageExportsCache = new Map<string, boolean>();\nconst resolveCache = new Map<string, string | null>();\n\nfunction safeResolve(id: string, importer: string): string | null {\n const cacheKey = `${id}\\0${importer}`;\n const cached = resolveCache.get(cacheKey);\n if (cached !== undefined) {\n return cached;\n }\n let result: string | null;\n try {\n result = resolveFrom(importer, id);\n } catch {\n result = null;\n }\n resolveCache.set(cacheKey, result);\n return result;\n}\n\n/**\n * Check if a package has an exports field in its package.json.\n * Results are cached to avoid repeated filesystem reads.\n */\nfunction packageHasExports(pkgName: string, importer: string): boolean {\n const pkgMainPath = safeResolve(pkgName, importer);\n if (!pkgMainPath) return false;\n // Find package.json and cache by its directory\n let dir = pkgMainPath;\n for (let i = 0; i < 10; i++) {\n dir = dirname(dir);\n const cached = packageExportsCache.get(dir);\n if (cached !== undefined) return cached;\n\n try {\n const pkgJson = JSON.parse(readFileSync(`${dir}/package.json`, 'utf-8'));\n if (pkgJson.name === pkgName) {\n const result = !!pkgJson.exports;\n packageExportsCache.set(dir, result);\n return result;\n }\n } catch {\n // continue up\n }\n }\n return false;\n}\n\n/**\n * Rollup plugin that resolves module extensions for external dependencies.\n *\n * This plugin handles ESM compatibility for external imports when node-resolve is not used:\n * - Packages WITH exports field (e.g., hono, date-fns): Keep imports as-is or strip redundant extensions\n * - Packages WITHOUT exports field (e.g., lodash): Add .js extension for direct file imports\n */\nexport function nodeModulesExtensionResolver(): Plugin {\n // Create a single instance of node-resolve to reuse\n const nodeResolvePlugin = nodeResolve();\n\n return {\n name: 'node-modules-extension-resolver',\n async resolveId(id, importer, options) {\n // Skip relative imports, absolute paths, no importer, or builtin modules\n if (!importer || id.startsWith('.') || id.startsWith('/') || isBuiltinModule(id)) {\n return null;\n }\n\n // Skip direct package imports (e.g., 'lodash', '@mastra/core')\n const parts = id.split('/');\n const isScoped = id.startsWith('@');\n if ((isScoped && parts.length === 2) || (!isScoped && parts.length === 1)) {\n return null;\n }\n\n const foundExt = extname(id);\n const pkgName = getPackageName(id);\n\n // Handle imports that already have a JS extension\n if (foundExt && JS_EXTENSIONS.has(foundExt)) {\n // If package has exports, strip the extension to avoid double-extension issues\n // (e.g., hono/utils/mime.js -> hono/dist/utils/mime.js.js)\n if (pkgName && packageHasExports(pkgName, importer)) {\n return {\n id: id.slice(0, -foundExt.length),\n external: true,\n };\n }\n // For packages without exports, keep the extension as-is\n return { id, external: true };\n }\n\n // Try import.meta.resolve first - if it works, the import is valid as-is\n // This respects ESM exports maps correctly\n try {\n const resolved = import.meta.resolve(id);\n if (resolved && extname(resolved)) {\n return { id, external: true };\n }\n } catch {\n // import.meta.resolve failed, continue with fallback logic\n }\n\n // Fallback: For imports without extension, check if we need to add one\n // @ts-expect-error - resolveId.handler exists but isn't typed\n const nodeResolved = await nodeResolvePlugin.resolveId?.handler?.call(this, id, importer, options);\n\n if (!nodeResolved?.id) {\n return null;\n }\n\n const resolved = safeResolve(id, importer);\n if (!resolved) {\n // Try adding extensions manually\n for (const ext of JS_EXTENSIONS) {\n if (safeResolve(id + ext, importer)) {\n return { id: id + ext, external: true };\n }\n }\n return null;\n }\n\n const resolvedExt = extname(resolved);\n\n // No JS extension in resolved path - keep as-is\n if (!resolvedExt || !JS_EXTENSIONS.has(resolvedExt)) {\n return { id, external: true };\n }\n\n // Package has exports - let Node.js resolve via exports map\n if (pkgName && packageHasExports(pkgName, importer)) {\n return { id, external: true };\n }\n\n // Check if this is a direct file reference that needs the extension\n // e.g., lodash/fp/get resolves to .../lodash/fp/get.js\n const subpath = pkgName ? id.slice(pkgName.length + 1) : '';\n if (subpath && resolved.endsWith(`/${subpath}${resolvedExt}`)) {\n return { id: id + resolvedExt, external: true };\n }\n\n return { id, external: true };\n },\n };\n}\n","import alias from '@rollup/plugin-alias';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport { esmShim } from './plugins/esm-shim';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { rollup, type InputOptions, type OutputOptions, type Plugin } from 'rollup';\nimport { esbuild } from './plugins/esbuild';\nimport { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';\nimport { analyzeBundle } from './analyze';\nimport { removeDeployer } from './plugins/remove-deployer';\nimport { tsConfigPaths } from './plugins/tsconfig-paths';\nimport { join } from 'node:path';\nimport { slash } from './utils';\nimport { subpathExternalsResolver } from './plugins/subpath-externals-resolver';\nimport { nodeModulesExtensionResolver } from './plugins/node-modules-extension-resolver';\n\nexport async function getInputOptions(\n entryFile: string,\n analyzedBundleInfo: Awaited<ReturnType<typeof analyzeBundle>>,\n platform: 'node' | 'browser',\n env: Record<string, string> = { 'process.env.NODE_ENV': JSON.stringify('production') },\n {\n sourcemap = false,\n isDev = false,\n projectRoot,\n workspaceRoot = undefined,\n enableEsmShim = true,\n externalsPreset = false,\n }: {\n sourcemap?: boolean;\n isDev?: boolean;\n workspaceRoot?: string;\n projectRoot: string;\n enableEsmShim?: boolean;\n externalsPreset?: boolean;\n },\n): Promise<InputOptions> {\n let nodeResolvePlugin =\n platform === 'node'\n ? nodeResolve({\n preferBuiltins: true,\n exportConditions: ['node'],\n })\n : nodeResolve({\n preferBuiltins: false,\n browser: true,\n });\n\n const externalsCopy = new Set<string>(analyzedBundleInfo.externalDependencies);\n const externals = externalsPreset ? [] : Array.from(externalsCopy);\n\n const normalizedEntryFile = slash(entryFile);\n return {\n logLevel: process.env.MASTRA_BUNDLER_DEBUG === 'true' ? 'debug' : 'silent',\n treeshake: 'smallest',\n preserveSymlinks: true,\n external: externals,\n plugins: [\n subpathExternalsResolver(externals),\n {\n name: 'alias-optimized-deps',\n resolveId(id: string) {\n if (!analyzedBundleInfo.dependencies.has(id)) {\n return null;\n }\n\n const filename = analyzedBundleInfo.dependencies.get(id)!;\n const absolutePath = join(workspaceRoot || projectRoot, filename);\n\n // During `mastra dev` we want to keep deps as external\n if (isDev) {\n return {\n id: process.platform === 'win32' ? pathToFileURL(absolutePath).href : absolutePath,\n external: true,\n };\n }\n\n // For production builds return the absolute path as-is so Rollup can handle itself\n return {\n id: absolutePath,\n external: false,\n };\n },\n } satisfies Plugin,\n alias({\n entries: [\n {\n find: /^\\#server$/,\n replacement: slash(fileURLToPath(import.meta.resolve('@mastra/deployer/server'))),\n },\n {\n find: /^\\@mastra\\/server\\/(.*)/,\n replacement: `@mastra/server/$1`,\n customResolver: id => {\n if (id.startsWith('@mastra/server')) {\n return {\n id: fileURLToPath(import.meta.resolve(id)),\n };\n }\n },\n },\n { find: /^\\#mastra$/, replacement: normalizedEntryFile },\n ],\n }),\n tsConfigPaths(),\n {\n name: 'tools-rewriter',\n resolveId(id: string) {\n if (id === '#tools') {\n return {\n id: './tools.mjs',\n external: true,\n };\n }\n },\n } satisfies Plugin,\n esbuild({\n platform,\n define: env,\n }),\n optimizeLodashImports({\n include: '**/*.{js,ts,mjs,cjs}',\n }),\n commonjs({\n extensions: ['.js', '.ts'],\n transformMixedEsModules: true,\n esmExternals(id) {\n return externals.includes(id);\n },\n }),\n enableEsmShim ? esmShim() : undefined,\n externalsPreset ? nodeModulesExtensionResolver() : nodeResolvePlugin,\n // for debugging\n // {\n // name: 'logger',\n // //@ts-ignore\n // resolveId(id, ...args) {\n // console.log({ id, args });\n // },\n // // @ts-ignore\n // transform(code, id) {\n // if (code.includes('class Duplexify ')) {\n // console.log({ duplex: id });\n // }\n // },\n // },\n json(),\n removeDeployer(entryFile, { sourcemap }),\n // treeshake unused imports\n esbuild({\n include: entryFile,\n platform,\n }),\n ].filter(Boolean),\n } satisfies InputOptions;\n}\n\nexport async function createBundler(\n inputOptions: InputOptions,\n outputOptions: Partial<OutputOptions> & { dir: string },\n) {\n const bundler = await rollup(inputOptions);\n\n return {\n write: () => {\n return bundler.write({\n ...outputOptions,\n format: 'esm',\n entryFileNames: '[name].mjs',\n chunkFileNames: '[name].mjs',\n });\n },\n close: () => {\n return bundler.close();\n },\n };\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { slash, isDependencyPartOfPackage,
|
|
1
|
+
import { slash, isDependencyPartOfPackage, isBuiltinModule, getPackageName, getCompiledDepCachePath, rollupSafeName } from './chunk-HHA2Y3AS.js';
|
|
2
2
|
import * as babel from '@babel/core';
|
|
3
3
|
import babel__default from '@babel/core';
|
|
4
4
|
import fs, { existsSync } from 'fs';
|
|
5
5
|
import { readFile, writeFile } from 'fs/promises';
|
|
6
6
|
import * as path2 from 'path';
|
|
7
|
-
import path2__default, { dirname, join, normalize, basename as basename$1 } from 'path';
|
|
7
|
+
import path2__default, { dirname, join, relative, normalize, basename as basename$1 } from 'path';
|
|
8
8
|
import { spawn as spawn$1 } from 'child_process';
|
|
9
9
|
import { rollup } from 'rollup';
|
|
10
10
|
import originalEsbuild from 'rollup-plugin-esbuild';
|
|
@@ -14,17 +14,17 @@ import stripJsonComments from 'strip-json-comments';
|
|
|
14
14
|
import { createHandler } from 'typescript-paths';
|
|
15
15
|
import { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';
|
|
16
16
|
import json from '@rollup/plugin-json';
|
|
17
|
-
import {
|
|
17
|
+
import { pathToFileURL, fileURLToPath } from 'url';
|
|
18
18
|
import * as pkg from 'empathic/package';
|
|
19
19
|
import { createWorkspacesCache, findWorkspaces, findWorkspacesRoot } from 'find-workspaces';
|
|
20
20
|
import { noopLogger } from '@mastra/core/logger';
|
|
21
21
|
import virtual from '@rollup/plugin-virtual';
|
|
22
22
|
import { builtinModules } from 'module';
|
|
23
|
+
import { getPackageInfo } from 'local-pkg';
|
|
23
24
|
import nodeResolve from '@rollup/plugin-node-resolve';
|
|
24
25
|
import originalEsmShim from '@rollup/plugin-esm-shim';
|
|
25
26
|
import { basename } from 'path/posix';
|
|
26
27
|
import * as resolve from 'resolve.exports';
|
|
27
|
-
import { getPackageInfo } from 'local-pkg';
|
|
28
28
|
import { MastraBaseError, ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';
|
|
29
29
|
|
|
30
30
|
var ValidationError = class extends Error {
|
|
@@ -642,6 +642,25 @@ function removeDeployer2(mastraEntry, options) {
|
|
|
642
642
|
}
|
|
643
643
|
};
|
|
644
644
|
}
|
|
645
|
+
async function getPackageRootPath(packageName, parentPath) {
|
|
646
|
+
let rootPath;
|
|
647
|
+
try {
|
|
648
|
+
let options = void 0;
|
|
649
|
+
if (parentPath) {
|
|
650
|
+
if (!parentPath.startsWith("file://")) {
|
|
651
|
+
parentPath = pathToFileURL(parentPath).href;
|
|
652
|
+
}
|
|
653
|
+
options = {
|
|
654
|
+
paths: [parentPath]
|
|
655
|
+
};
|
|
656
|
+
}
|
|
657
|
+
const pkg2 = await getPackageInfo(packageName, options);
|
|
658
|
+
rootPath = pkg2?.rootPath ?? null;
|
|
659
|
+
} catch (e) {
|
|
660
|
+
rootPath = null;
|
|
661
|
+
}
|
|
662
|
+
return rootPath;
|
|
663
|
+
}
|
|
645
664
|
|
|
646
665
|
// src/build/analyze/constants.ts
|
|
647
666
|
var DEPS_TO_IGNORE = ["#tools"];
|
|
@@ -987,7 +1006,7 @@ function createVirtualDependencies(depsToOptimize, {
|
|
|
987
1006
|
outputDir,
|
|
988
1007
|
bundlerOptions
|
|
989
1008
|
}) {
|
|
990
|
-
const { isDev = false } = bundlerOptions || {};
|
|
1009
|
+
const { isDev = false, externalsPreset = false } = bundlerOptions || {};
|
|
991
1010
|
const fileNameToDependencyMap = /* @__PURE__ */ new Map();
|
|
992
1011
|
const optimizedDependencyEntries = /* @__PURE__ */ new Map();
|
|
993
1012
|
const rootDir = workspaceRoot || projectRoot;
|
|
@@ -1019,7 +1038,7 @@ function createVirtualDependencies(depsToOptimize, {
|
|
|
1019
1038
|
virtual: virtualFile.join("\n")
|
|
1020
1039
|
});
|
|
1021
1040
|
}
|
|
1022
|
-
if (isDev) {
|
|
1041
|
+
if (isDev || externalsPreset) {
|
|
1023
1042
|
for (const [dep, { isWorkspace, rootPath }] of depsToOptimize.entries()) {
|
|
1024
1043
|
if (!isWorkspace || !rootPath || !workspaceRoot) {
|
|
1025
1044
|
continue;
|
|
@@ -1076,7 +1095,7 @@ async function getInputPlugins2(virtualDependencies, {
|
|
|
1076
1095
|
}
|
|
1077
1096
|
})
|
|
1078
1097
|
}) : null,
|
|
1079
|
-
bundlerOptions.
|
|
1098
|
+
bundlerOptions.noBundling ? {
|
|
1080
1099
|
name: "alias-optimized-deps",
|
|
1081
1100
|
async resolveId(id, importer, options) {
|
|
1082
1101
|
if (!virtualDependencies.has(id)) {
|
|
@@ -1106,11 +1125,11 @@ async function getInputPlugins2(virtualDependencies, {
|
|
|
1106
1125
|
transformMixedEsModules: true,
|
|
1107
1126
|
ignoreTryCatch: false
|
|
1108
1127
|
}),
|
|
1109
|
-
bundlerOptions.
|
|
1128
|
+
bundlerOptions.noBundling ? null : nodeResolve({
|
|
1110
1129
|
preferBuiltins: true,
|
|
1111
1130
|
exportConditions: ["node"]
|
|
1112
1131
|
}),
|
|
1113
|
-
bundlerOptions.
|
|
1132
|
+
bundlerOptions.noBundling ? esmShim() : null,
|
|
1114
1133
|
// hono is imported from deployer, so we need to resolve from here instead of the project root
|
|
1115
1134
|
aliasHono(),
|
|
1116
1135
|
json(),
|
|
@@ -1163,6 +1182,16 @@ async function buildExternalDependencies(virtualDependencies, {
|
|
|
1163
1182
|
if (virtualDependencies.size === 0) {
|
|
1164
1183
|
return [];
|
|
1165
1184
|
}
|
|
1185
|
+
const noBundling = bundlerOptions.isDev || bundlerOptions.externalsPreset;
|
|
1186
|
+
const plugins = await getInputPlugins2(virtualDependencies, {
|
|
1187
|
+
transpilePackages: packagesToTranspile,
|
|
1188
|
+
workspaceMap,
|
|
1189
|
+
bundlerOptions: {
|
|
1190
|
+
noBundling
|
|
1191
|
+
},
|
|
1192
|
+
rootDir,
|
|
1193
|
+
externals
|
|
1194
|
+
});
|
|
1166
1195
|
const bundler = await rollup({
|
|
1167
1196
|
logLevel: process.env.MASTRA_BUNDLER_DEBUG === "true" ? "debug" : "silent",
|
|
1168
1197
|
input: Array.from(virtualDependencies.entries()).reduce(
|
|
@@ -1173,14 +1202,8 @@ async function buildExternalDependencies(virtualDependencies, {
|
|
|
1173
1202
|
{}
|
|
1174
1203
|
),
|
|
1175
1204
|
external: externals,
|
|
1176
|
-
treeshake:
|
|
1177
|
-
plugins
|
|
1178
|
-
transpilePackages: packagesToTranspile,
|
|
1179
|
-
workspaceMap,
|
|
1180
|
-
bundlerOptions,
|
|
1181
|
-
rootDir,
|
|
1182
|
-
externals
|
|
1183
|
-
})
|
|
1205
|
+
treeshake: noBundling ? false : "safest",
|
|
1206
|
+
plugins
|
|
1184
1207
|
});
|
|
1185
1208
|
const outputDirRelative = prepareEntryFileName(outputDir, rootDir);
|
|
1186
1209
|
const { output } = await bundler.write({
|
|
@@ -1194,7 +1217,7 @@ async function buildExternalDependencies(virtualDependencies, {
|
|
|
1194
1217
|
* So we want to write them to the `.mastra/output` folder as well.
|
|
1195
1218
|
*/
|
|
1196
1219
|
chunkFileNames: (chunkInfo) => {
|
|
1197
|
-
if (
|
|
1220
|
+
if (noBundling) {
|
|
1198
1221
|
const importedFromPackages = /* @__PURE__ */ new Set();
|
|
1199
1222
|
for (const moduleId of chunkInfo.moduleIds) {
|
|
1200
1223
|
const normalized = slash(moduleId);
|
|
@@ -1256,19 +1279,31 @@ function findExternalImporter(module, external, allOutputs) {
|
|
|
1256
1279
|
}
|
|
1257
1280
|
async function bundleExternals(depsToOptimize, outputDir, options) {
|
|
1258
1281
|
const { workspaceRoot = null, workspaceMap = /* @__PURE__ */ new Map(), projectRoot = outputDir, bundlerOptions = {} } = options;
|
|
1259
|
-
const {
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1282
|
+
const { externals: customExternals = [], transpilePackages = [], isDev = false } = bundlerOptions || {};
|
|
1283
|
+
let externalsPreset = false;
|
|
1284
|
+
if (customExternals === true) {
|
|
1285
|
+
externalsPreset = true;
|
|
1286
|
+
}
|
|
1287
|
+
const externalsList = Array.isArray(customExternals) ? customExternals : [];
|
|
1288
|
+
const allExternals = [...GLOBAL_EXTERNALS, ...DEPRECATED_EXTERNALS, ...externalsList];
|
|
1264
1289
|
const workspacePackagesNames = Array.from(workspaceMap.keys());
|
|
1265
1290
|
const packagesToTranspile = /* @__PURE__ */ new Set([...transpilePackages, ...workspacePackagesNames]);
|
|
1291
|
+
const extractedExternals = /* @__PURE__ */ new Map();
|
|
1292
|
+
if (externalsPreset) {
|
|
1293
|
+
for (const [dep, metadata] of depsToOptimize.entries()) {
|
|
1294
|
+
if (!metadata.isWorkspace) {
|
|
1295
|
+
extractedExternals.set(dep, metadata.rootPath ?? dep);
|
|
1296
|
+
depsToOptimize.delete(dep);
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1266
1300
|
const { optimizedDependencyEntries, fileNameToDependencyMap } = createVirtualDependencies(depsToOptimize, {
|
|
1267
1301
|
workspaceRoot,
|
|
1268
1302
|
outputDir,
|
|
1269
1303
|
projectRoot,
|
|
1270
1304
|
bundlerOptions: {
|
|
1271
|
-
isDev
|
|
1305
|
+
isDev,
|
|
1306
|
+
externalsPreset
|
|
1272
1307
|
}
|
|
1273
1308
|
});
|
|
1274
1309
|
const output = await buildExternalDependencies(optimizedDependencyEntries, {
|
|
@@ -1278,7 +1313,8 @@ async function bundleExternals(depsToOptimize, outputDir, options) {
|
|
|
1278
1313
|
rootDir: workspaceRoot || projectRoot,
|
|
1279
1314
|
outputDir,
|
|
1280
1315
|
bundlerOptions: {
|
|
1281
|
-
isDev
|
|
1316
|
+
isDev,
|
|
1317
|
+
externalsPreset
|
|
1282
1318
|
}
|
|
1283
1319
|
});
|
|
1284
1320
|
const moduleResolveMap2 = /* @__PURE__ */ new Map();
|
|
@@ -1313,6 +1349,14 @@ async function bundleExternals(depsToOptimize, outputDir, options) {
|
|
|
1313
1349
|
}
|
|
1314
1350
|
usedExternals[fullPath] = innerObj;
|
|
1315
1351
|
}
|
|
1352
|
+
if (extractedExternals.size > 0) {
|
|
1353
|
+
const syntheticPath = path2.join(workspaceRoot || projectRoot, "__externals__");
|
|
1354
|
+
const externalsObj = /* @__PURE__ */ Object.create(null);
|
|
1355
|
+
for (const [dep, rootPath] of extractedExternals) {
|
|
1356
|
+
externalsObj[dep] = rootPath;
|
|
1357
|
+
}
|
|
1358
|
+
usedExternals[syntheticPath] = externalsObj;
|
|
1359
|
+
}
|
|
1316
1360
|
return { output, fileNameToDependencyMap, usedExternals };
|
|
1317
1361
|
}
|
|
1318
1362
|
|
|
@@ -1588,7 +1632,7 @@ async function analyzeBundle(entries, mastraEntry, {
|
|
|
1588
1632
|
outputDir,
|
|
1589
1633
|
projectRoot,
|
|
1590
1634
|
isDev = false,
|
|
1591
|
-
bundlerOptions:
|
|
1635
|
+
bundlerOptions: internalBundlerOptions
|
|
1592
1636
|
}, logger) {
|
|
1593
1637
|
const mastraConfig = await readFile(mastraEntry, "utf-8");
|
|
1594
1638
|
const mastraConfigResult = {
|
|
@@ -1607,28 +1651,33 @@ export const mastra = new Mastra({
|
|
|
1607
1651
|
|
|
1608
1652
|
If you think your configuration is valid, please open an issue.`);
|
|
1609
1653
|
}
|
|
1610
|
-
const {
|
|
1611
|
-
const
|
|
1654
|
+
const { externals: _bundlerExternals = [] } = internalBundlerOptions || {};
|
|
1655
|
+
const userBundlerOptions = await getBundlerOptions(mastraEntry, outputDir);
|
|
1612
1656
|
const { workspaceMap, workspaceRoot } = await getWorkspaceInformation({ mastraEntryFile: mastraEntry });
|
|
1657
|
+
let externalsPreset = false;
|
|
1658
|
+
if (userBundlerOptions?.externals === true) {
|
|
1659
|
+
externalsPreset = true;
|
|
1660
|
+
}
|
|
1613
1661
|
let index = 0;
|
|
1614
1662
|
const depsToOptimize = /* @__PURE__ */ new Map();
|
|
1615
|
-
const
|
|
1616
|
-
const
|
|
1663
|
+
const bundlerExternals = Array.isArray(_bundlerExternals) ? _bundlerExternals : [];
|
|
1664
|
+
const userExternals = Array.isArray(userBundlerOptions?.externals) ? userBundlerOptions?.externals : [];
|
|
1665
|
+
const allExternals = [...GLOBAL_EXTERNALS, ...bundlerExternals, ...userExternals];
|
|
1617
1666
|
logger.info("Analyzing dependencies...");
|
|
1618
1667
|
const allUsedExternals = /* @__PURE__ */ new Set();
|
|
1619
1668
|
for (const entry of entries) {
|
|
1620
1669
|
const isVirtualFile = entry.includes("\n") || !existsSync(entry);
|
|
1621
1670
|
const analyzeResult = await analyzeEntry({ entry, isVirtualFile }, mastraEntry, {
|
|
1622
1671
|
logger,
|
|
1623
|
-
sourcemapEnabled:
|
|
1672
|
+
sourcemapEnabled: userBundlerOptions?.sourcemap ?? false,
|
|
1624
1673
|
workspaceMap,
|
|
1625
1674
|
projectRoot,
|
|
1626
|
-
shouldCheckTransitiveDependencies: isDev
|
|
1675
|
+
shouldCheckTransitiveDependencies: isDev || externalsPreset
|
|
1627
1676
|
});
|
|
1628
1677
|
await writeFile(join(outputDir, `entry-${index++}.mjs`), analyzeResult.output.code);
|
|
1629
1678
|
for (const [dep, metadata] of analyzeResult.dependencies.entries()) {
|
|
1630
1679
|
const isPartOfExternals = allExternals.some((external) => isDependencyPartOfPackage(dep, external));
|
|
1631
|
-
if (isPartOfExternals) {
|
|
1680
|
+
if (isPartOfExternals || externalsPreset && !metadata.isWorkspace) {
|
|
1632
1681
|
allUsedExternals.add(dep);
|
|
1633
1682
|
continue;
|
|
1634
1683
|
}
|
|
@@ -1643,7 +1692,7 @@ If you think your configuration is valid, please open an issue.`);
|
|
|
1643
1692
|
}
|
|
1644
1693
|
}
|
|
1645
1694
|
}
|
|
1646
|
-
if (isDev) {
|
|
1695
|
+
if (isDev || externalsPreset) {
|
|
1647
1696
|
for (const [dep, metadata] of depsToOptimize.entries()) {
|
|
1648
1697
|
if (!metadata.isWorkspace) {
|
|
1649
1698
|
depsToOptimize.delete(dep);
|
|
@@ -1655,15 +1704,37 @@ If you think your configuration is valid, please open an issue.`);
|
|
|
1655
1704
|
logger.debug(`${sortedDeps.map((key) => `- ${key}`).join("\n")}`);
|
|
1656
1705
|
const { output, fileNameToDependencyMap, usedExternals } = await bundleExternals(depsToOptimize, outputDir, {
|
|
1657
1706
|
bundlerOptions: {
|
|
1658
|
-
...
|
|
1659
|
-
externals: allExternals,
|
|
1660
|
-
enableEsmShim,
|
|
1707
|
+
...userBundlerOptions,
|
|
1708
|
+
externals: userBundlerOptions?.externals ?? allExternals,
|
|
1661
1709
|
isDev
|
|
1662
1710
|
},
|
|
1663
1711
|
projectRoot,
|
|
1664
1712
|
workspaceRoot,
|
|
1665
1713
|
workspaceMap
|
|
1666
1714
|
});
|
|
1715
|
+
const relativeWorkspaceFolderPaths = Array.from(workspaceMap.values()).map(
|
|
1716
|
+
(pkgInfo) => relative(workspaceRoot || projectRoot, pkgInfo.location)
|
|
1717
|
+
);
|
|
1718
|
+
for (const o of output) {
|
|
1719
|
+
if (o.type === "asset") {
|
|
1720
|
+
continue;
|
|
1721
|
+
}
|
|
1722
|
+
for (const i of o.imports) {
|
|
1723
|
+
if (isBuiltinModule(i)) {
|
|
1724
|
+
continue;
|
|
1725
|
+
}
|
|
1726
|
+
if (i.startsWith(".") || i.startsWith("/")) {
|
|
1727
|
+
continue;
|
|
1728
|
+
}
|
|
1729
|
+
if (relativeWorkspaceFolderPaths.some((workspacePath) => i.startsWith(workspacePath))) {
|
|
1730
|
+
continue;
|
|
1731
|
+
}
|
|
1732
|
+
const pkgName = getPackageName(i);
|
|
1733
|
+
if (pkgName) {
|
|
1734
|
+
allUsedExternals.add(pkgName);
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1667
1738
|
const result = await validateOutput(
|
|
1668
1739
|
{
|
|
1669
1740
|
output,
|
|
@@ -1681,6 +1752,6 @@ If you think your configuration is valid, please open an issue.`);
|
|
|
1681
1752
|
};
|
|
1682
1753
|
}
|
|
1683
1754
|
|
|
1684
|
-
export { aliasHono, analyzeBundle, esbuild, esmShim, extractMastraOption, getBundlerOptions, getWorkspaceInformation, removeAllOptionsFromMastraExcept, removeDeployer2 as removeDeployer, subpathExternalsResolver, tsConfigPaths };
|
|
1685
|
-
//# sourceMappingURL=chunk-
|
|
1686
|
-
//# sourceMappingURL=chunk-
|
|
1755
|
+
export { aliasHono, analyzeBundle, esbuild, esmShim, extractMastraOption, getBundlerOptions, getPackageRootPath, getWorkspaceInformation, removeAllOptionsFromMastraExcept, removeDeployer2 as removeDeployer, subpathExternalsResolver, tsConfigPaths };
|
|
1756
|
+
//# sourceMappingURL=chunk-RGUNHE4Y.js.map
|
|
1757
|
+
//# sourceMappingURL=chunk-RGUNHE4Y.js.map
|