@mastra/deployer 1.0.0-beta.11 → 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 +26 -0
- 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 +12 -12
- package/dist/build/index.js +4 -4
- 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 +6 -0
- 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-PK3AX3KO.cjs → chunk-3GOE3SL2.cjs} +27 -23
- package/dist/chunk-3GOE3SL2.cjs.map +1 -0
- package/dist/{chunk-NM6R77PX.js → chunk-HHA2Y3AS.js} +7 -3
- package/dist/chunk-HHA2Y3AS.js.map +1 -0
- package/dist/{chunk-EHZKDGGA.cjs → chunk-KCGBR2X6.cjs} +106 -54
- 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-3KATYU33.js → chunk-RGUNHE4Y.js} +89 -37
- package/dist/chunk-RGUNHE4Y.js.map +1 -0
- package/dist/{chunk-HFP6WWM5.js → chunk-SRPOHKWH.js} +6 -76
- package/dist/chunk-SRPOHKWH.js.map +1 -0
- package/dist/{chunk-F2LCS2DV.cjs → chunk-VA2CSOKJ.cjs} +7 -2
- package/dist/chunk-VA2CSOKJ.cjs.map +1 -0
- package/dist/{chunk-5OGQ7IFB.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 +4 -4
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +2 -2
- 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 +4 -5
- package/dist/chunk-3KATYU33.js.map +0 -1
- package/dist/chunk-5OGQ7IFB.js.map +0 -1
- package/dist/chunk-EHZKDGGA.cjs.map +0 -1
- package/dist/chunk-F2LCS2DV.cjs.map +0 -1
- package/dist/chunk-HFP6WWM5.js.map +0 -1
- package/dist/chunk-NM6R77PX.js.map +0 -1
- package/dist/chunk-PK3AX3KO.cjs.map +0 -1
- package/dist/chunk-UG72ONP7.js +0 -147
- package/dist/chunk-UG72ONP7.js.map +0 -1
- package/dist/chunk-Z33LQHGJ.cjs +0 -196
- package/dist/chunk-Z33LQHGJ.cjs.map +0 -1
- package/dist/chunk-ZPUTJSEC.cjs +0 -157
- package/dist/chunk-ZPUTJSEC.cjs.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, getPackageName, getCompiledDepCachePath, rollupSafeName } from './chunk-
|
|
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';
|
|
@@ -1006,7 +1006,7 @@ function createVirtualDependencies(depsToOptimize, {
|
|
|
1006
1006
|
outputDir,
|
|
1007
1007
|
bundlerOptions
|
|
1008
1008
|
}) {
|
|
1009
|
-
const { isDev = false } = bundlerOptions || {};
|
|
1009
|
+
const { isDev = false, externalsPreset = false } = bundlerOptions || {};
|
|
1010
1010
|
const fileNameToDependencyMap = /* @__PURE__ */ new Map();
|
|
1011
1011
|
const optimizedDependencyEntries = /* @__PURE__ */ new Map();
|
|
1012
1012
|
const rootDir = workspaceRoot || projectRoot;
|
|
@@ -1038,7 +1038,7 @@ function createVirtualDependencies(depsToOptimize, {
|
|
|
1038
1038
|
virtual: virtualFile.join("\n")
|
|
1039
1039
|
});
|
|
1040
1040
|
}
|
|
1041
|
-
if (isDev) {
|
|
1041
|
+
if (isDev || externalsPreset) {
|
|
1042
1042
|
for (const [dep, { isWorkspace, rootPath }] of depsToOptimize.entries()) {
|
|
1043
1043
|
if (!isWorkspace || !rootPath || !workspaceRoot) {
|
|
1044
1044
|
continue;
|
|
@@ -1095,7 +1095,7 @@ async function getInputPlugins2(virtualDependencies, {
|
|
|
1095
1095
|
}
|
|
1096
1096
|
})
|
|
1097
1097
|
}) : null,
|
|
1098
|
-
bundlerOptions.
|
|
1098
|
+
bundlerOptions.noBundling ? {
|
|
1099
1099
|
name: "alias-optimized-deps",
|
|
1100
1100
|
async resolveId(id, importer, options) {
|
|
1101
1101
|
if (!virtualDependencies.has(id)) {
|
|
@@ -1125,11 +1125,11 @@ async function getInputPlugins2(virtualDependencies, {
|
|
|
1125
1125
|
transformMixedEsModules: true,
|
|
1126
1126
|
ignoreTryCatch: false
|
|
1127
1127
|
}),
|
|
1128
|
-
bundlerOptions.
|
|
1128
|
+
bundlerOptions.noBundling ? null : nodeResolve({
|
|
1129
1129
|
preferBuiltins: true,
|
|
1130
1130
|
exportConditions: ["node"]
|
|
1131
1131
|
}),
|
|
1132
|
-
bundlerOptions.
|
|
1132
|
+
bundlerOptions.noBundling ? esmShim() : null,
|
|
1133
1133
|
// hono is imported from deployer, so we need to resolve from here instead of the project root
|
|
1134
1134
|
aliasHono(),
|
|
1135
1135
|
json(),
|
|
@@ -1182,6 +1182,16 @@ async function buildExternalDependencies(virtualDependencies, {
|
|
|
1182
1182
|
if (virtualDependencies.size === 0) {
|
|
1183
1183
|
return [];
|
|
1184
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
|
+
});
|
|
1185
1195
|
const bundler = await rollup({
|
|
1186
1196
|
logLevel: process.env.MASTRA_BUNDLER_DEBUG === "true" ? "debug" : "silent",
|
|
1187
1197
|
input: Array.from(virtualDependencies.entries()).reduce(
|
|
@@ -1192,14 +1202,8 @@ async function buildExternalDependencies(virtualDependencies, {
|
|
|
1192
1202
|
{}
|
|
1193
1203
|
),
|
|
1194
1204
|
external: externals,
|
|
1195
|
-
treeshake:
|
|
1196
|
-
plugins
|
|
1197
|
-
transpilePackages: packagesToTranspile,
|
|
1198
|
-
workspaceMap,
|
|
1199
|
-
bundlerOptions,
|
|
1200
|
-
rootDir,
|
|
1201
|
-
externals
|
|
1202
|
-
})
|
|
1205
|
+
treeshake: noBundling ? false : "safest",
|
|
1206
|
+
plugins
|
|
1203
1207
|
});
|
|
1204
1208
|
const outputDirRelative = prepareEntryFileName(outputDir, rootDir);
|
|
1205
1209
|
const { output } = await bundler.write({
|
|
@@ -1213,7 +1217,7 @@ async function buildExternalDependencies(virtualDependencies, {
|
|
|
1213
1217
|
* So we want to write them to the `.mastra/output` folder as well.
|
|
1214
1218
|
*/
|
|
1215
1219
|
chunkFileNames: (chunkInfo) => {
|
|
1216
|
-
if (
|
|
1220
|
+
if (noBundling) {
|
|
1217
1221
|
const importedFromPackages = /* @__PURE__ */ new Set();
|
|
1218
1222
|
for (const moduleId of chunkInfo.moduleIds) {
|
|
1219
1223
|
const normalized = slash(moduleId);
|
|
@@ -1275,19 +1279,31 @@ function findExternalImporter(module, external, allOutputs) {
|
|
|
1275
1279
|
}
|
|
1276
1280
|
async function bundleExternals(depsToOptimize, outputDir, options) {
|
|
1277
1281
|
const { workspaceRoot = null, workspaceMap = /* @__PURE__ */ new Map(), projectRoot = outputDir, bundlerOptions = {} } = options;
|
|
1278
|
-
const {
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
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];
|
|
1283
1289
|
const workspacePackagesNames = Array.from(workspaceMap.keys());
|
|
1284
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
|
+
}
|
|
1285
1300
|
const { optimizedDependencyEntries, fileNameToDependencyMap } = createVirtualDependencies(depsToOptimize, {
|
|
1286
1301
|
workspaceRoot,
|
|
1287
1302
|
outputDir,
|
|
1288
1303
|
projectRoot,
|
|
1289
1304
|
bundlerOptions: {
|
|
1290
|
-
isDev
|
|
1305
|
+
isDev,
|
|
1306
|
+
externalsPreset
|
|
1291
1307
|
}
|
|
1292
1308
|
});
|
|
1293
1309
|
const output = await buildExternalDependencies(optimizedDependencyEntries, {
|
|
@@ -1297,7 +1313,8 @@ async function bundleExternals(depsToOptimize, outputDir, options) {
|
|
|
1297
1313
|
rootDir: workspaceRoot || projectRoot,
|
|
1298
1314
|
outputDir,
|
|
1299
1315
|
bundlerOptions: {
|
|
1300
|
-
isDev
|
|
1316
|
+
isDev,
|
|
1317
|
+
externalsPreset
|
|
1301
1318
|
}
|
|
1302
1319
|
});
|
|
1303
1320
|
const moduleResolveMap2 = /* @__PURE__ */ new Map();
|
|
@@ -1332,6 +1349,14 @@ async function bundleExternals(depsToOptimize, outputDir, options) {
|
|
|
1332
1349
|
}
|
|
1333
1350
|
usedExternals[fullPath] = innerObj;
|
|
1334
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
|
+
}
|
|
1335
1360
|
return { output, fileNameToDependencyMap, usedExternals };
|
|
1336
1361
|
}
|
|
1337
1362
|
|
|
@@ -1607,7 +1632,7 @@ async function analyzeBundle(entries, mastraEntry, {
|
|
|
1607
1632
|
outputDir,
|
|
1608
1633
|
projectRoot,
|
|
1609
1634
|
isDev = false,
|
|
1610
|
-
bundlerOptions:
|
|
1635
|
+
bundlerOptions: internalBundlerOptions
|
|
1611
1636
|
}, logger) {
|
|
1612
1637
|
const mastraConfig = await readFile(mastraEntry, "utf-8");
|
|
1613
1638
|
const mastraConfigResult = {
|
|
@@ -1626,28 +1651,33 @@ export const mastra = new Mastra({
|
|
|
1626
1651
|
|
|
1627
1652
|
If you think your configuration is valid, please open an issue.`);
|
|
1628
1653
|
}
|
|
1629
|
-
const {
|
|
1630
|
-
const
|
|
1654
|
+
const { externals: _bundlerExternals = [] } = internalBundlerOptions || {};
|
|
1655
|
+
const userBundlerOptions = await getBundlerOptions(mastraEntry, outputDir);
|
|
1631
1656
|
const { workspaceMap, workspaceRoot } = await getWorkspaceInformation({ mastraEntryFile: mastraEntry });
|
|
1657
|
+
let externalsPreset = false;
|
|
1658
|
+
if (userBundlerOptions?.externals === true) {
|
|
1659
|
+
externalsPreset = true;
|
|
1660
|
+
}
|
|
1632
1661
|
let index = 0;
|
|
1633
1662
|
const depsToOptimize = /* @__PURE__ */ new Map();
|
|
1634
|
-
const
|
|
1635
|
-
const
|
|
1663
|
+
const bundlerExternals = Array.isArray(_bundlerExternals) ? _bundlerExternals : [];
|
|
1664
|
+
const userExternals = Array.isArray(userBundlerOptions?.externals) ? userBundlerOptions?.externals : [];
|
|
1665
|
+
const allExternals = [...GLOBAL_EXTERNALS, ...bundlerExternals, ...userExternals];
|
|
1636
1666
|
logger.info("Analyzing dependencies...");
|
|
1637
1667
|
const allUsedExternals = /* @__PURE__ */ new Set();
|
|
1638
1668
|
for (const entry of entries) {
|
|
1639
1669
|
const isVirtualFile = entry.includes("\n") || !existsSync(entry);
|
|
1640
1670
|
const analyzeResult = await analyzeEntry({ entry, isVirtualFile }, mastraEntry, {
|
|
1641
1671
|
logger,
|
|
1642
|
-
sourcemapEnabled:
|
|
1672
|
+
sourcemapEnabled: userBundlerOptions?.sourcemap ?? false,
|
|
1643
1673
|
workspaceMap,
|
|
1644
1674
|
projectRoot,
|
|
1645
|
-
shouldCheckTransitiveDependencies: isDev
|
|
1675
|
+
shouldCheckTransitiveDependencies: isDev || externalsPreset
|
|
1646
1676
|
});
|
|
1647
1677
|
await writeFile(join(outputDir, `entry-${index++}.mjs`), analyzeResult.output.code);
|
|
1648
1678
|
for (const [dep, metadata] of analyzeResult.dependencies.entries()) {
|
|
1649
1679
|
const isPartOfExternals = allExternals.some((external) => isDependencyPartOfPackage(dep, external));
|
|
1650
|
-
if (isPartOfExternals) {
|
|
1680
|
+
if (isPartOfExternals || externalsPreset && !metadata.isWorkspace) {
|
|
1651
1681
|
allUsedExternals.add(dep);
|
|
1652
1682
|
continue;
|
|
1653
1683
|
}
|
|
@@ -1662,7 +1692,7 @@ If you think your configuration is valid, please open an issue.`);
|
|
|
1662
1692
|
}
|
|
1663
1693
|
}
|
|
1664
1694
|
}
|
|
1665
|
-
if (isDev) {
|
|
1695
|
+
if (isDev || externalsPreset) {
|
|
1666
1696
|
for (const [dep, metadata] of depsToOptimize.entries()) {
|
|
1667
1697
|
if (!metadata.isWorkspace) {
|
|
1668
1698
|
depsToOptimize.delete(dep);
|
|
@@ -1674,15 +1704,37 @@ If you think your configuration is valid, please open an issue.`);
|
|
|
1674
1704
|
logger.debug(`${sortedDeps.map((key) => `- ${key}`).join("\n")}`);
|
|
1675
1705
|
const { output, fileNameToDependencyMap, usedExternals } = await bundleExternals(depsToOptimize, outputDir, {
|
|
1676
1706
|
bundlerOptions: {
|
|
1677
|
-
...
|
|
1678
|
-
externals: allExternals,
|
|
1679
|
-
enableEsmShim,
|
|
1707
|
+
...userBundlerOptions,
|
|
1708
|
+
externals: userBundlerOptions?.externals ?? allExternals,
|
|
1680
1709
|
isDev
|
|
1681
1710
|
},
|
|
1682
1711
|
projectRoot,
|
|
1683
1712
|
workspaceRoot,
|
|
1684
1713
|
workspaceMap
|
|
1685
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
|
+
}
|
|
1686
1738
|
const result = await validateOutput(
|
|
1687
1739
|
{
|
|
1688
1740
|
output,
|
|
@@ -1701,5 +1753,5 @@ If you think your configuration is valid, please open an issue.`);
|
|
|
1701
1753
|
}
|
|
1702
1754
|
|
|
1703
1755
|
export { aliasHono, analyzeBundle, esbuild, esmShim, extractMastraOption, getBundlerOptions, getPackageRootPath, getWorkspaceInformation, removeAllOptionsFromMastraExcept, removeDeployer2 as removeDeployer, subpathExternalsResolver, tsConfigPaths };
|
|
1704
|
-
//# sourceMappingURL=chunk-
|
|
1705
|
-
//# sourceMappingURL=chunk-
|
|
1756
|
+
//# sourceMappingURL=chunk-RGUNHE4Y.js.map
|
|
1757
|
+
//# sourceMappingURL=chunk-RGUNHE4Y.js.map
|