@mastra/deployer 1.54.0-alpha.0 → 1.54.0-alpha.2

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.
Files changed (211) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/analyze-C2q7jxbN.js +1308 -0
  3. package/dist/analyze-C2q7jxbN.js.map +1 -0
  4. package/dist/analyze-DhDZW9TS.cjs +1318 -0
  5. package/dist/analyze-DhDZW9TS.cjs.map +1 -0
  6. package/dist/arktype-aI7TBD0R-BsgjPZ4a.cjs +8 -0
  7. package/dist/arktype-aI7TBD0R-BsgjPZ4a.cjs.map +1 -0
  8. package/dist/arktype-aI7TBD0R-_UZl-wsH.js +8 -0
  9. package/dist/arktype-aI7TBD0R-_UZl-wsH.js.map +1 -0
  10. package/dist/build/analyze/constants.d.ts.map +1 -1
  11. package/dist/build/analyze.cjs +3 -12
  12. package/dist/build/analyze.js +2 -3
  13. package/dist/build/bundler.cjs +6 -24
  14. package/dist/build/bundler.js +2 -3
  15. package/dist/build/index.cjs +29 -101
  16. package/dist/build/index.js +7 -8
  17. package/dist/build-De4AZhfJ.cjs +908 -0
  18. package/dist/build-De4AZhfJ.cjs.map +1 -0
  19. package/dist/build-KCOeHd4N.js +834 -0
  20. package/dist/build-KCOeHd4N.js.map +1 -0
  21. package/dist/bundler/index.cjs +318 -13
  22. package/dist/bundler/index.cjs.map +1 -1
  23. package/dist/bundler/index.js +314 -2
  24. package/dist/bundler/index.js.map +1 -1
  25. package/dist/bundler-BqrDXofn.cjs +792 -0
  26. package/dist/bundler-BqrDXofn.cjs.map +1 -0
  27. package/dist/bundler-D86rFu2J.js +705 -0
  28. package/dist/bundler-D86rFu2J.js.map +1 -0
  29. package/dist/bundlerOptions-aFsEi86t.js +180 -0
  30. package/dist/bundlerOptions-aFsEi86t.js.map +1 -0
  31. package/dist/bundlerOptions-rBmtSyGe.cjs +194 -0
  32. package/dist/bundlerOptions-rBmtSyGe.cjs.map +1 -0
  33. package/dist/core-D0wEgdn3.cjs +790 -0
  34. package/dist/core-D0wEgdn3.cjs.map +1 -0
  35. package/dist/core-DF65PJXc.js +790 -0
  36. package/dist/core-DF65PJXc.js.map +1 -0
  37. package/dist/dist-BauTimif.js +532 -0
  38. package/dist/dist-BauTimif.js.map +1 -0
  39. package/dist/dist-Cv-mAEtr.cjs +532 -0
  40. package/dist/dist-Cv-mAEtr.cjs.map +1 -0
  41. package/dist/docs/SKILL.md +1 -1
  42. package/dist/docs/assets/SOURCE_MAP.json +2 -23
  43. package/dist/docs/references/docs-deployment-cloud-providers.md +1 -0
  44. package/dist/docs/references/docs-deployment-overview.md +1 -0
  45. package/dist/effect-QlVUlMFu-CwFnyS-g.cjs +14 -0
  46. package/dist/effect-QlVUlMFu-CwFnyS-g.cjs.map +1 -0
  47. package/dist/effect-QlVUlMFu-gyLQRCtQ.js +14 -0
  48. package/dist/effect-QlVUlMFu-gyLQRCtQ.js.map +1 -0
  49. package/dist/esm-BX-weMyC.js +4634 -0
  50. package/dist/esm-BX-weMyC.js.map +1 -0
  51. package/dist/esm-D81PZ_wJ.cjs +4634 -0
  52. package/dist/esm-D81PZ_wJ.cjs.map +1 -0
  53. package/dist/index-CLddUTqr-B5mOP6DC.cjs +145 -0
  54. package/dist/index-CLddUTqr-B5mOP6DC.cjs.map +1 -0
  55. package/dist/index-CLddUTqr-CkS6Y_hA.js +140 -0
  56. package/dist/index-CLddUTqr-CkS6Y_hA.js.map +1 -0
  57. package/dist/index.cjs +35 -48
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.js +29 -30
  60. package/dist/index.js.map +1 -1
  61. package/dist/rolldown-runtime-emK7D4bc.cjs +35 -0
  62. package/dist/server/index.cjs +3141 -3874
  63. package/dist/server/index.cjs.map +1 -1
  64. package/dist/server/index.d.ts.map +1 -1
  65. package/dist/server/index.js +3131 -3842
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/server/types.d.ts +1 -0
  68. package/dist/server/types.d.ts.map +1 -1
  69. package/dist/services/index.cjs +5 -20
  70. package/dist/services/index.js +2 -3
  71. package/dist/services-BxYMLS9-.cjs +430 -0
  72. package/dist/services-BxYMLS9-.cjs.map +1 -0
  73. package/dist/services-CLi56qqe.js +391 -0
  74. package/dist/services-CLi56qqe.js.map +1 -0
  75. package/dist/sury-CWZTCd75-B85M6878.js +14 -0
  76. package/dist/sury-CWZTCd75-B85M6878.js.map +1 -0
  77. package/dist/sury-CWZTCd75-DTj5HlK_.cjs +14 -0
  78. package/dist/sury-CWZTCd75-DTj5HlK_.cjs.map +1 -0
  79. package/dist/typebox-Dei93FPO-BeuT13_G.cjs +8 -0
  80. package/dist/typebox-Dei93FPO-BeuT13_G.cjs.map +1 -0
  81. package/dist/typebox-Dei93FPO-DovwMlVl.js +8 -0
  82. package/dist/typebox-Dei93FPO-DovwMlVl.js.map +1 -0
  83. package/dist/utils-FVOUvj-I.js +190 -0
  84. package/dist/utils-FVOUvj-I.js.map +1 -0
  85. package/dist/utils-O98BGdnP.cjs +267 -0
  86. package/dist/utils-O98BGdnP.cjs.map +1 -0
  87. package/dist/valibot--1zFm7rT-BqJHja5B.cjs +14 -0
  88. package/dist/valibot--1zFm7rT-BqJHja5B.cjs.map +1 -0
  89. package/dist/valibot--1zFm7rT-Y4Fhea0w.js +14 -0
  90. package/dist/valibot--1zFm7rT-Y4Fhea0w.js.map +1 -0
  91. package/dist/validator/custom-resolver.cjs +71 -73
  92. package/dist/validator/custom-resolver.cjs.map +1 -1
  93. package/dist/validator/custom-resolver.js +70 -71
  94. package/dist/validator/custom-resolver.js.map +1 -1
  95. package/dist/validator/loader.cjs +6 -7
  96. package/dist/validator/loader.cjs.map +1 -1
  97. package/dist/validator/loader.js +8 -4
  98. package/dist/validator/loader.js.map +1 -1
  99. package/dist/zod-Bwrt9trS-2JL6_UI_.cjs +23 -0
  100. package/dist/zod-Bwrt9trS-2JL6_UI_.cjs.map +1 -0
  101. package/dist/zod-Bwrt9trS-rVHICsmp.js +23 -0
  102. package/dist/zod-Bwrt9trS-rVHICsmp.js.map +1 -0
  103. package/package.json +7 -7
  104. package/dist/arktype-aI7TBD0R-K3QZAVE2.js +0 -8
  105. package/dist/arktype-aI7TBD0R-K3QZAVE2.js.map +0 -1
  106. package/dist/arktype-aI7TBD0R-WK5AZZMC.cjs +0 -10
  107. package/dist/arktype-aI7TBD0R-WK5AZZMC.cjs.map +0 -1
  108. package/dist/build/analyze.cjs.map +0 -1
  109. package/dist/build/analyze.js.map +0 -1
  110. package/dist/build/bundler.cjs.map +0 -1
  111. package/dist/build/bundler.js.map +0 -1
  112. package/dist/build/index.cjs.map +0 -1
  113. package/dist/build/index.js.map +0 -1
  114. package/dist/chunk-36AWZH7Z.cjs +0 -252
  115. package/dist/chunk-36AWZH7Z.cjs.map +0 -1
  116. package/dist/chunk-3XIMK24X.cjs +0 -765
  117. package/dist/chunk-3XIMK24X.cjs.map +0 -1
  118. package/dist/chunk-46M65MQG.cjs +0 -95
  119. package/dist/chunk-46M65MQG.cjs.map +0 -1
  120. package/dist/chunk-4ZNTNJ6T.js +0 -6
  121. package/dist/chunk-4ZNTNJ6T.js.map +0 -1
  122. package/dist/chunk-5PORNUPF.js +0 -739
  123. package/dist/chunk-5PORNUPF.js.map +0 -1
  124. package/dist/chunk-743HRNWT.cjs +0 -1546
  125. package/dist/chunk-743HRNWT.cjs.map +0 -1
  126. package/dist/chunk-AEQ7JHDB.cjs +0 -412
  127. package/dist/chunk-AEQ7JHDB.cjs.map +0 -1
  128. package/dist/chunk-E5SBYHQK.js +0 -244
  129. package/dist/chunk-E5SBYHQK.js.map +0 -1
  130. package/dist/chunk-FKKJQUGR.cjs +0 -497
  131. package/dist/chunk-FKKJQUGR.cjs.map +0 -1
  132. package/dist/chunk-FQHUOYYL.js +0 -1514
  133. package/dist/chunk-FQHUOYYL.js.map +0 -1
  134. package/dist/chunk-G7MIMGMX.js +0 -14
  135. package/dist/chunk-G7MIMGMX.js.map +0 -1
  136. package/dist/chunk-HZC3PTK2.cjs +0 -16
  137. package/dist/chunk-HZC3PTK2.cjs.map +0 -1
  138. package/dist/chunk-JZRFRUGM.cjs +0 -158
  139. package/dist/chunk-JZRFRUGM.cjs.map +0 -1
  140. package/dist/chunk-L45X3DJX.js +0 -385
  141. package/dist/chunk-L45X3DJX.js.map +0 -1
  142. package/dist/chunk-PC25XSK7.cjs +0 -8
  143. package/dist/chunk-PC25XSK7.cjs.map +0 -1
  144. package/dist/chunk-PZ5AY32C.js +0 -9
  145. package/dist/chunk-PZ5AY32C.js.map +0 -1
  146. package/dist/chunk-Q7SFCCGT.cjs +0 -11
  147. package/dist/chunk-Q7SFCCGT.cjs.map +0 -1
  148. package/dist/chunk-T4UT2QX7.js +0 -3
  149. package/dist/chunk-T4UT2QX7.js.map +0 -1
  150. package/dist/chunk-UBIDJOJA.js +0 -93
  151. package/dist/chunk-UBIDJOJA.js.map +0 -1
  152. package/dist/chunk-V3EKV6QB.cjs +0 -162
  153. package/dist/chunk-V3EKV6QB.cjs.map +0 -1
  154. package/dist/chunk-WHD2QQ3N.js +0 -783
  155. package/dist/chunk-WHD2QQ3N.js.map +0 -1
  156. package/dist/chunk-WP65JQAT.js +0 -144
  157. package/dist/chunk-WP65JQAT.js.map +0 -1
  158. package/dist/chunk-YO5OFXPN.cjs +0 -819
  159. package/dist/chunk-YO5OFXPN.cjs.map +0 -1
  160. package/dist/chunk-YUBKHO52.js +0 -465
  161. package/dist/chunk-YUBKHO52.js.map +0 -1
  162. package/dist/chunk-YWMYXUHX.cjs +0 -4
  163. package/dist/chunk-YWMYXUHX.cjs.map +0 -1
  164. package/dist/chunk-ZKZOVNT4.js +0 -159
  165. package/dist/chunk-ZKZOVNT4.js.map +0 -1
  166. package/dist/core-XIDAXLRB.js +0 -11866
  167. package/dist/core-XIDAXLRB.js.map +0 -1
  168. package/dist/core-XJNQ4AY6.cjs +0 -12141
  169. package/dist/core-XJNQ4AY6.cjs.map +0 -1
  170. package/dist/default-u_dwuiYb-HGUAHA6N.cjs +0 -9
  171. package/dist/default-u_dwuiYb-HGUAHA6N.cjs.map +0 -1
  172. package/dist/default-u_dwuiYb-MVPTVDCE.js +0 -3
  173. package/dist/default-u_dwuiYb-MVPTVDCE.js.map +0 -1
  174. package/dist/dist-UEE5OLII.cjs +0 -521
  175. package/dist/dist-UEE5OLII.cjs.map +0 -1
  176. package/dist/dist-X75F2Q36.js +0 -515
  177. package/dist/dist-X75F2Q36.js.map +0 -1
  178. package/dist/effect-QlVUlMFu-QNLZLGWO.js +0 -15
  179. package/dist/effect-QlVUlMFu-QNLZLGWO.js.map +0 -1
  180. package/dist/effect-QlVUlMFu-XUD6EH23.cjs +0 -17
  181. package/dist/effect-QlVUlMFu-XUD6EH23.cjs.map +0 -1
  182. package/dist/esm-DFCHSIJZ.cjs +0 -1589
  183. package/dist/esm-DFCHSIJZ.cjs.map +0 -1
  184. package/dist/esm-PXGQ5WB4.js +0 -1542
  185. package/dist/esm-PXGQ5WB4.js.map +0 -1
  186. package/dist/services/index.cjs.map +0 -1
  187. package/dist/services/index.js.map +0 -1
  188. package/dist/sury-CWZTCd75-3KQQJ22C.cjs +0 -17
  189. package/dist/sury-CWZTCd75-3KQQJ22C.cjs.map +0 -1
  190. package/dist/sury-CWZTCd75-DZQHKAZF.js +0 -15
  191. package/dist/sury-CWZTCd75-DZQHKAZF.js.map +0 -1
  192. package/dist/typebox-Dei93FPO-GOYJ5OUT.js +0 -8
  193. package/dist/typebox-Dei93FPO-GOYJ5OUT.js.map +0 -1
  194. package/dist/typebox-Dei93FPO-M7J7E57W.cjs +0 -10
  195. package/dist/typebox-Dei93FPO-M7J7E57W.cjs.map +0 -1
  196. package/dist/valibot--1zFm7rT-NVM3G3TI.cjs +0 -17
  197. package/dist/valibot--1zFm7rT-NVM3G3TI.cjs.map +0 -1
  198. package/dist/valibot--1zFm7rT-ZVGQI7WV.js +0 -15
  199. package/dist/valibot--1zFm7rT-ZVGQI7WV.js.map +0 -1
  200. package/dist/valibot-D_HTw1Gn-UCPEGDL7.cjs +0 -45
  201. package/dist/valibot-D_HTw1Gn-UCPEGDL7.cjs.map +0 -1
  202. package/dist/valibot-D_HTw1Gn-XPR4F6VS.js +0 -43
  203. package/dist/valibot-D_HTw1Gn-XPR4F6VS.js.map +0 -1
  204. package/dist/zod-Bwrt9trS-GN7ZXBMN.js +0 -29
  205. package/dist/zod-Bwrt9trS-GN7ZXBMN.js.map +0 -1
  206. package/dist/zod-Bwrt9trS-OVKARV6W.cjs +0 -31
  207. package/dist/zod-Bwrt9trS-OVKARV6W.cjs.map +0 -1
  208. package/dist/zod-DSgpEGAE-E7YZZ7VC.js +0 -37
  209. package/dist/zod-DSgpEGAE-E7YZZ7VC.js.map +0 -1
  210. package/dist/zod-DSgpEGAE-UNQNGL2W.cjs +0 -39
  211. package/dist/zod-DSgpEGAE-UNQNGL2W.cjs.map +0 -1
@@ -1,385 +0,0 @@
1
- import { getBundlerOptions } from './chunk-E5SBYHQK.js';
2
- import { analyzeBundle, getWorkspaceInformation } from './chunk-FQHUOYYL.js';
3
- import { createBundler, getInputOptions } from './chunk-5PORNUPF.js';
4
- import { DepsService, FileService } from './chunk-YUBKHO52.js';
5
- import { slash, isBareModuleSpecifier } from './chunk-WP65JQAT.js';
6
- import { execSync } from 'child_process';
7
- import { existsSync } from 'fs';
8
- import { writeFile, rm, stat } from 'fs/promises';
9
- import { join, dirname, posix } from 'path';
10
- import { MastraBundler } from '@mastra/core/bundler';
11
- import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
12
- import virtual from '@rollup/plugin-virtual';
13
- import * as pkg from 'empathic/package';
14
- import fsExtra, { emptyDir, ensureDir, copy } from 'fs-extra/esm';
15
- import { glob } from 'tinyglobby';
16
-
17
- var IS_DEFAULT = /* @__PURE__ */ Symbol("IS_DEFAULT");
18
- var Bundler = class extends MastraBundler {
19
- analyzeOutputDir = ".build";
20
- outputDir = "output";
21
- platform = "node";
22
- constructor(name, component = "BUNDLER") {
23
- super({ name, component });
24
- }
25
- async prepare(outputDirectory) {
26
- await emptyDir(outputDirectory);
27
- await ensureDir(join(outputDirectory, this.analyzeOutputDir));
28
- await ensureDir(join(outputDirectory, this.outputDir));
29
- }
30
- async writePackageJson(outputDirectory, dependencies, resolutions) {
31
- this.logger.debug("Writing project's package.json");
32
- await ensureDir(outputDirectory);
33
- const pkgPath = join(outputDirectory, "package.json");
34
- const dependenciesMap = /* @__PURE__ */ new Map();
35
- for (const [key, value] of dependencies.entries()) {
36
- const dependencyValue = typeof value === "string" ? value : value.packageSpec ?? value.version ?? "latest";
37
- if (key.startsWith("@")) {
38
- const pkgChunks = key.split("/");
39
- dependenciesMap.set(`${pkgChunks[0]}/${pkgChunks[1]}`, dependencyValue);
40
- } else {
41
- const pkgName = key.split("/")[0] || key;
42
- dependenciesMap.set(pkgName, dependencyValue);
43
- }
44
- }
45
- await writeFile(
46
- pkgPath,
47
- JSON.stringify(
48
- {
49
- name: "server",
50
- version: "1.0.0",
51
- private: true,
52
- type: "module",
53
- main: "index.mjs",
54
- scripts: {
55
- start: "node ./index.mjs"
56
- },
57
- dependencies: Object.fromEntries(dependenciesMap.entries()),
58
- ...Object.keys(resolutions ?? {}).length > 0 && { resolutions }
59
- },
60
- null,
61
- 2
62
- )
63
- );
64
- }
65
- createBundler(inputOptions, outputOptions) {
66
- return createBundler(inputOptions, outputOptions);
67
- }
68
- async getUserBundlerOptions(mastraEntryFile, outputDirectory) {
69
- const defaultBundlerOptions = {
70
- externals: [],
71
- sourcemap: false,
72
- transpilePackages: [],
73
- [IS_DEFAULT]: true
74
- };
75
- try {
76
- const bundlerOptions = await getBundlerOptions(mastraEntryFile, outputDirectory);
77
- return bundlerOptions ?? defaultBundlerOptions;
78
- } catch (error) {
79
- this.logger.debug("Failed to get bundler options, sourcemap will be disabled", { error });
80
- }
81
- return defaultBundlerOptions;
82
- }
83
- async analyze(entry, mastraFile, outputDirectory) {
84
- return await analyzeBundle(
85
- [].concat(entry),
86
- mastraFile,
87
- {
88
- outputDir: join(outputDirectory, this.analyzeOutputDir),
89
- projectRoot: outputDirectory,
90
- platform: this.platform
91
- },
92
- this.logger
93
- );
94
- }
95
- async installDependencies(outputDirectory, rootDir = process.cwd()) {
96
- const deps = new DepsService(rootDir);
97
- deps.__setLogger(this.logger);
98
- await deps.install({ dir: join(outputDirectory, this.outputDir) });
99
- }
100
- /**
101
- * Generate a package-lock.json for the output directory so that deploy targets
102
- * can use `npm ci` instead of `npm install`, skipping version resolution entirely.
103
- * This is a lockfile-only operation — no packages are downloaded.
104
- *
105
- * Temporarily moves node_modules out of the way because pnpm's symlink-based
106
- * layout confuses npm's arborist, then restores it afterwards so that
107
- * `mastra start` (or wrangler) can still resolve dependencies at runtime.
108
- */
109
- async generateNpmLockfile(outputDir) {
110
- const nodeModules = join(outputDir, "node_modules");
111
- const nodeModulesTmp = join(outputDir, "node_modules.__tmp");
112
- let movedNodeModules = false;
113
- try {
114
- if (await fsExtra.pathExists(nodeModules)) {
115
- await fsExtra.move(nodeModules, nodeModulesTmp, { overwrite: true });
116
- movedNodeModules = true;
117
- }
118
- execSync("npm install --package-lock-only --force", {
119
- cwd: outputDir,
120
- stdio: "pipe",
121
- timeout: 6e4
122
- });
123
- } catch {
124
- this.logger.warn("Failed to generate package-lock.json \u2014 deploy will fall back to npm install");
125
- } finally {
126
- if (movedNodeModules) {
127
- await rm(nodeModules, { recursive: true, force: true });
128
- await fsExtra.move(nodeModulesTmp, nodeModules, { overwrite: true });
129
- }
130
- }
131
- }
132
- async copyPublic(mastraDir, outputDirectory) {
133
- const publicDir = join(mastraDir, "public");
134
- try {
135
- await stat(publicDir);
136
- } catch {
137
- return;
138
- }
139
- await copy(publicDir, join(outputDirectory, this.outputDir));
140
- }
141
- async copyDOTNPMRC({
142
- rootDir = process.cwd(),
143
- outputDirectory
144
- }) {
145
- const sourceDotNpmRcPath = join(rootDir, ".npmrc");
146
- const targetDotNpmRcPath = join(outputDirectory, this.outputDir, ".npmrc");
147
- try {
148
- await stat(sourceDotNpmRcPath);
149
- await copy(sourceDotNpmRcPath, targetDotNpmRcPath);
150
- } catch {
151
- return;
152
- }
153
- }
154
- /**
155
- * Writes the `mastra-project.json` deployment marker for Software Factory
156
- * projects after public assets have been copied. Verifies that the Factory
157
- * SPA (`factory/index.html`) exists in the output before emitting the marker.
158
- */
159
- async writeFactoryMarker(outputDirectory) {
160
- const outputDir = join(outputDirectory, this.outputDir);
161
- const factoryIndex = join(outputDir, "factory", "index.html");
162
- if (!existsSync(factoryIndex)) {
163
- throw new MastraError({
164
- id: "DEPLOYER_BUNDLER_FACTORY_UI_MISSING",
165
- text: "Software Factory project detected but factory/index.html was not found after copying the prebuilt Factory UI.",
166
- domain: ErrorDomain.DEPLOYER,
167
- category: ErrorCategory.SYSTEM
168
- });
169
- }
170
- await writeFile(
171
- join(outputDir, "mastra-project.json"),
172
- JSON.stringify({ schemaVersion: 1, projectType: "factory", assets: { ui: "factory" } }, null, 2)
173
- );
174
- this.logger.info("Wrote mastra-project.json for Software Factory project");
175
- }
176
- async getBundlerOptions(serverFile, mastraEntryFile, analyzedBundleInfo, toolsPaths, { enableSourcemap, enableEsmShim, externals }) {
177
- const { workspaceRoot } = await getWorkspaceInformation({ mastraEntryFile });
178
- const closestPkgJson = pkg.up({ cwd: dirname(mastraEntryFile) });
179
- const projectRoot = closestPkgJson ? dirname(closestPkgJson) : process.cwd();
180
- const inputOptions = await getInputOptions(
181
- mastraEntryFile,
182
- analyzedBundleInfo,
183
- this.platform,
184
- {
185
- "process.env.NODE_ENV": JSON.stringify("production")
186
- },
187
- { sourcemap: enableSourcemap, workspaceRoot, projectRoot, enableEsmShim, externalsPreset: externals === true }
188
- );
189
- const isVirtual = serverFile.includes("\n") || !existsSync(serverFile);
190
- const toolsInputOptions = await this.listToolsInputOptions(toolsPaths);
191
- if (isVirtual) {
192
- inputOptions.input = { index: "#entry", ...toolsInputOptions };
193
- if (Array.isArray(inputOptions.plugins)) {
194
- inputOptions.plugins.unshift(virtual({ "#entry": serverFile }));
195
- } else {
196
- inputOptions.plugins = [virtual({ "#entry": serverFile })];
197
- }
198
- } else {
199
- inputOptions.input = { index: serverFile, ...toolsInputOptions };
200
- }
201
- return inputOptions;
202
- }
203
- getAllToolPaths(mastraDir, toolsPaths = []) {
204
- const normalizedMastraDir = slash(mastraDir);
205
- const defaultToolsPath = posix.join(normalizedMastraDir, "tools/**/*.{js,ts}");
206
- const defaultToolsIgnorePaths = [
207
- `!${posix.join(normalizedMastraDir, "tools/**/*.{test,spec}.{js,ts}")}`,
208
- `!${posix.join(normalizedMastraDir, "tools/**/__tests__/**")}`
209
- ];
210
- const defaultPaths = [defaultToolsPath, ...defaultToolsIgnorePaths];
211
- if (toolsPaths.length === 0) {
212
- return [defaultPaths];
213
- }
214
- return [...toolsPaths, defaultPaths];
215
- }
216
- async listToolsInputOptions(toolsPaths) {
217
- const inputs = {};
218
- for (const toolPath of toolsPaths) {
219
- const expandedPaths = await glob(toolPath, {
220
- absolute: true,
221
- expandDirectories: false
222
- });
223
- for (const path of expandedPaths) {
224
- if (await fsExtra.pathExists(path)) {
225
- const fileService = new FileService();
226
- const entryFile = fileService.getFirstExistingFile([
227
- join(path, "index.ts"),
228
- join(path, "index.js"),
229
- path
230
- // if path itself is a file
231
- ]);
232
- if (!entryFile || (await stat(entryFile)).isDirectory()) {
233
- this.logger.warn("No entry file found, skipping", { path });
234
- continue;
235
- }
236
- const uniqueToolID = crypto.randomUUID();
237
- const normalizedEntryFile = entryFile.replaceAll("\\", "/");
238
- inputs[`tools/${uniqueToolID}`] = normalizedEntryFile;
239
- } else {
240
- this.logger.warn("Tool path does not exist, skipping", { path });
241
- }
242
- }
243
- }
244
- return inputs;
245
- }
246
- async _bundle(serverFile, mastraEntryFile, {
247
- projectRoot,
248
- outputDirectory,
249
- enableEsmShim = true
250
- }, toolsPaths = [], bundleLocation = join(outputDirectory, this.outputDir)) {
251
- const analyzeDir = join(outputDirectory, this.analyzeOutputDir);
252
- const bundlerOptions = await this.getUserBundlerOptions(mastraEntryFile, outputDirectory);
253
- const internalBundlerOptions = {
254
- enableSourcemap: !!bundlerOptions.sourcemap,
255
- externals: bundlerOptions.externals ?? [],
256
- enableEsmShim,
257
- dynamicPackages: bundlerOptions.dynamicPackages
258
- };
259
- let analyzedBundleInfo;
260
- try {
261
- const resolvedToolsPaths = await this.listToolsInputOptions(toolsPaths);
262
- analyzedBundleInfo = await analyzeBundle(
263
- [serverFile, ...Object.values(resolvedToolsPaths)],
264
- mastraEntryFile,
265
- {
266
- outputDir: analyzeDir,
267
- projectRoot,
268
- platform: this.platform,
269
- bundlerOptions: internalBundlerOptions
270
- },
271
- this.logger
272
- );
273
- } catch (error) {
274
- const message = error instanceof Error ? error.message : String(error);
275
- if (error instanceof MastraError) {
276
- throw error;
277
- }
278
- throw new MastraError(
279
- {
280
- id: "DEPLOYER_BUNDLER_ANALYZE_FAILED",
281
- text: `Failed to analyze Mastra application: ${message}`,
282
- domain: ErrorDomain.DEPLOYER,
283
- category: ErrorCategory.SYSTEM
284
- },
285
- error
286
- );
287
- }
288
- const dependenciesToInstall = /* @__PURE__ */ new Map();
289
- for (const [dep, depInfo] of analyzedBundleInfo.externalDependencies) {
290
- if (analyzedBundleInfo.workspaceMap.has(dep) || !isBareModuleSpecifier(dep)) {
291
- continue;
292
- }
293
- dependenciesToInstall.set(dep, depInfo);
294
- }
295
- try {
296
- await this.writePackageJson(join(outputDirectory, this.outputDir), dependenciesToInstall);
297
- this.logger.info("Bundling Mastra application");
298
- const inputOptions = await this.getBundlerOptions(
299
- serverFile,
300
- mastraEntryFile,
301
- analyzedBundleInfo,
302
- toolsPaths,
303
- internalBundlerOptions
304
- );
305
- const bundler = await this.createBundler(
306
- {
307
- ...inputOptions,
308
- logLevel: inputOptions.logLevel === "silent" ? "warn" : inputOptions.logLevel,
309
- onwarn: (warning) => {
310
- if (warning.code === "CIRCULAR_DEPENDENCY") {
311
- if (warning.ids?.[0]?.includes("node_modules")) {
312
- return;
313
- }
314
- this.logger.warn("Circular dependency found", {
315
- dependency: warning.message.replace("Circular dependency: ", "")
316
- });
317
- }
318
- }
319
- },
320
- {
321
- dir: bundleLocation,
322
- manualChunks: {
323
- mastra: ["#mastra"]
324
- },
325
- sourcemap: internalBundlerOptions.enableSourcemap
326
- }
327
- );
328
- await bundler.write();
329
- const toolImports = [];
330
- const toolsExports = [];
331
- Array.from(Object.keys(inputOptions.input || {})).filter((key) => key.startsWith("tools/")).forEach((key, index) => {
332
- const toolExport = `tool${index}`;
333
- toolImports.push(`import * as ${toolExport} from './${key}.mjs';`);
334
- toolsExports.push(toolExport);
335
- });
336
- await writeFile(
337
- join(bundleLocation, "tools.mjs"),
338
- `${toolImports.join("\n")}
339
-
340
- export const tools = [${toolsExports.join(", ")}]`
341
- );
342
- this.logger.info("Bundling Mastra done");
343
- this.logger.info("Copying public files");
344
- await this.copyPublic(dirname(mastraEntryFile), outputDirectory);
345
- this.logger.info("Done copying public files");
346
- if (analyzedBundleInfo.projectType === "factory") {
347
- await this.writeFactoryMarker(outputDirectory);
348
- }
349
- this.logger.info("Copying .npmrc file");
350
- await this.copyDOTNPMRC({ outputDirectory, rootDir: projectRoot });
351
- this.logger.info("Done copying .npmrc file");
352
- this.logger.info("Installing dependencies");
353
- await this.installDependencies(outputDirectory, projectRoot);
354
- this.logger.info("Done installing dependencies");
355
- this.logger.info("Generating package-lock.json for deploy");
356
- await this.generateNpmLockfile(join(outputDirectory, this.outputDir));
357
- this.logger.info("Done generating package-lock.json");
358
- } catch (error) {
359
- if (error instanceof MastraError && error.id === "DEPLOYER_BUNDLER_FACTORY_UI_MISSING") {
360
- throw error;
361
- }
362
- const message = error instanceof Error ? error.message : String(error);
363
- throw new MastraError(
364
- {
365
- id: "DEPLOYER_BUNDLER_BUNDLE_STAGE_FAILED",
366
- text: `Failed during bundler bundle stage: ${message}`,
367
- domain: ErrorDomain.DEPLOYER,
368
- category: ErrorCategory.SYSTEM
369
- },
370
- error
371
- );
372
- }
373
- }
374
- async lint(_entryFile, _outputDirectory, toolsPaths) {
375
- const toolsInputOptions = await this.listToolsInputOptions(toolsPaths);
376
- const toolsLength = Object.keys(toolsInputOptions).length;
377
- if (toolsLength > 0) {
378
- this.logger.info("Found tools", { count: toolsLength });
379
- }
380
- }
381
- };
382
-
383
- export { Bundler, IS_DEFAULT };
384
- //# sourceMappingURL=chunk-L45X3DJX.js.map
385
- //# sourceMappingURL=chunk-L45X3DJX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/bundler/index.ts"],"names":[],"mappings":"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","file":"chunk-L45X3DJX.js","sourcesContent":["import { execSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { rm, stat, writeFile } from 'node:fs/promises';\nimport { dirname, join, posix } from 'node:path';\nimport { MastraBundler } from '@mastra/core/bundler';\nimport { MastraError, ErrorDomain, ErrorCategory } from '@mastra/core/error';\nimport type { Config } from '@mastra/core/mastra';\nimport virtual from '@rollup/plugin-virtual';\nimport * as pkg from 'empathic/package';\nimport fsExtra, { copy, ensureDir, emptyDir } from 'fs-extra/esm';\nimport type { InputOptions, OutputOptions } from 'rollup';\nimport { glob } from 'tinyglobby';\nimport { analyzeBundle } from '../build/analyze';\nimport { createBundler as createBundlerUtil, getInputOptions } from '../build/bundler';\nimport { getBundlerOptions } from '../build/bundlerOptions';\nimport type { BundlerOptions, ExternalDependencyInfo } from '../build/types';\nimport type { BundlerPlatform } from '../build/utils';\nimport { isBareModuleSpecifier, slash } from '../build/utils';\nimport { DepsService } from '../services/deps';\nimport { FileService } from '../services/fs';\nimport { getWorkspaceInformation } from './workspaceDependencies';\n\nexport type { BundlerOptions } from '../build/types';\nexport type { BundlerPlatform } from '../build/utils';\n\nexport const IS_DEFAULT = Symbol('IS_DEFAULT');\n\nexport abstract class Bundler extends MastraBundler {\n protected analyzeOutputDir = '.build';\n protected outputDir = 'output';\n protected platform: BundlerPlatform = 'node';\n\n constructor(name: string, component: 'BUNDLER' | 'DEPLOYER' = 'BUNDLER') {\n super({ name, component });\n }\n\n async prepare(outputDirectory: string): Promise<void> {\n // Clean up the output directory first\n await emptyDir(outputDirectory);\n\n await ensureDir(join(outputDirectory, this.analyzeOutputDir));\n await ensureDir(join(outputDirectory, this.outputDir));\n }\n\n async writePackageJson(\n outputDirectory: string,\n dependencies: Map<string, string | ExternalDependencyInfo>,\n resolutions?: Record<string, string>,\n ) {\n this.logger.debug(\"Writing project's package.json\");\n\n await ensureDir(outputDirectory);\n const pkgPath = join(outputDirectory, 'package.json');\n\n const dependenciesMap = new Map();\n for (const [key, value] of dependencies.entries()) {\n const dependencyValue = typeof value === 'string' ? value : (value.packageSpec ?? value.version ?? 'latest');\n if (key.startsWith('@')) {\n // Handle scoped packages (e.g. @org/package)\n const pkgChunks = key.split('/');\n dependenciesMap.set(`${pkgChunks[0]}/${pkgChunks[1]}`, dependencyValue);\n } else {\n // For non-scoped packages, take only the first part before any slash\n const pkgName = key.split('/')[0] || key;\n dependenciesMap.set(pkgName, dependencyValue);\n }\n }\n\n await writeFile(\n pkgPath,\n JSON.stringify(\n {\n name: 'server',\n version: '1.0.0',\n private: true,\n type: 'module',\n main: 'index.mjs',\n scripts: {\n start: 'node ./index.mjs',\n },\n dependencies: Object.fromEntries(dependenciesMap.entries()),\n ...(Object.keys(resolutions ?? {}).length > 0 && { resolutions }),\n },\n null,\n 2,\n ),\n );\n }\n\n protected createBundler(inputOptions: InputOptions, outputOptions: Partial<OutputOptions> & { dir: string }) {\n return createBundlerUtil(inputOptions, outputOptions);\n }\n\n protected async getUserBundlerOptions(\n mastraEntryFile: string,\n outputDirectory: string,\n ): Promise<NonNullable<Config['bundler']>> {\n const defaultBundlerOptions: Config['bundler'] = {\n externals: [],\n sourcemap: false,\n transpilePackages: [],\n [IS_DEFAULT]: true,\n } as const;\n\n try {\n const bundlerOptions = await getBundlerOptions(mastraEntryFile, outputDirectory);\n\n return bundlerOptions ?? defaultBundlerOptions;\n } catch (error) {\n this.logger.debug('Failed to get bundler options, sourcemap will be disabled', { error });\n }\n\n return defaultBundlerOptions;\n }\n\n protected async analyze(entry: string | string[], mastraFile: string, outputDirectory: string) {\n return await analyzeBundle(\n ([] as string[]).concat(entry),\n mastraFile,\n {\n outputDir: join(outputDirectory, this.analyzeOutputDir),\n projectRoot: outputDirectory,\n platform: this.platform,\n },\n this.logger,\n );\n }\n\n protected async installDependencies(outputDirectory: string, rootDir = process.cwd()) {\n const deps = new DepsService(rootDir);\n deps.__setLogger(this.logger);\n\n await deps.install({ dir: join(outputDirectory, this.outputDir) });\n }\n\n /**\n * Generate a package-lock.json for the output directory so that deploy targets\n * can use `npm ci` instead of `npm install`, skipping version resolution entirely.\n * This is a lockfile-only operation — no packages are downloaded.\n *\n * Temporarily moves node_modules out of the way because pnpm's symlink-based\n * layout confuses npm's arborist, then restores it afterwards so that\n * `mastra start` (or wrangler) can still resolve dependencies at runtime.\n */\n private async generateNpmLockfile(outputDir: string): Promise<void> {\n const nodeModules = join(outputDir, 'node_modules');\n const nodeModulesTmp = join(outputDir, 'node_modules.__tmp');\n let movedNodeModules = false;\n try {\n // Move node_modules aside — pnpm's symlink layout confuses npm's arborist\n if (await fsExtra.pathExists(nodeModules)) {\n await fsExtra.move(nodeModules, nodeModulesTmp, { overwrite: true });\n movedNodeModules = true;\n }\n execSync('npm install --package-lock-only --force', {\n cwd: outputDir,\n stdio: 'pipe',\n timeout: 60_000,\n });\n } catch {\n this.logger.warn('Failed to generate package-lock.json — deploy will fall back to npm install');\n } finally {\n // Restore node_modules so runtime resolution works\n if (movedNodeModules) {\n await rm(nodeModules, { recursive: true, force: true });\n await fsExtra.move(nodeModulesTmp, nodeModules, { overwrite: true });\n }\n }\n }\n\n protected async copyPublic(mastraDir: string, outputDirectory: string) {\n const publicDir = join(mastraDir, 'public');\n\n try {\n await stat(publicDir);\n } catch {\n return;\n }\n\n await copy(publicDir, join(outputDirectory, this.outputDir));\n }\n\n protected async copyDOTNPMRC({\n rootDir = process.cwd(),\n outputDirectory,\n }: {\n rootDir?: string;\n outputDirectory: string;\n }) {\n const sourceDotNpmRcPath = join(rootDir, '.npmrc');\n const targetDotNpmRcPath = join(outputDirectory, this.outputDir, '.npmrc');\n\n try {\n await stat(sourceDotNpmRcPath);\n await copy(sourceDotNpmRcPath, targetDotNpmRcPath);\n } catch {\n return;\n }\n }\n\n /**\n * Writes the `mastra-project.json` deployment marker for Software Factory\n * projects after public assets have been copied. Verifies that the Factory\n * SPA (`factory/index.html`) exists in the output before emitting the marker.\n */\n protected async writeFactoryMarker(outputDirectory: string): Promise<void> {\n const outputDir = join(outputDirectory, this.outputDir);\n const factoryIndex = join(outputDir, 'factory', 'index.html');\n if (!existsSync(factoryIndex)) {\n throw new MastraError({\n id: 'DEPLOYER_BUNDLER_FACTORY_UI_MISSING',\n text: 'Software Factory project detected but factory/index.html was not found after copying the prebuilt Factory UI.',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.SYSTEM,\n });\n }\n await writeFile(\n join(outputDir, 'mastra-project.json'),\n JSON.stringify({ schemaVersion: 1, projectType: 'factory', assets: { ui: 'factory' } }, null, 2),\n );\n this.logger.info('Wrote mastra-project.json for Software Factory project');\n }\n\n protected async getBundlerOptions(\n serverFile: string,\n mastraEntryFile: string,\n analyzedBundleInfo: Awaited<ReturnType<typeof analyzeBundle>>,\n toolsPaths: (string | string[])[],\n { enableSourcemap, enableEsmShim, externals }: BundlerOptions,\n ) {\n const { workspaceRoot } = await getWorkspaceInformation({ mastraEntryFile });\n const closestPkgJson = pkg.up({ cwd: dirname(mastraEntryFile) });\n const projectRoot = closestPkgJson ? dirname(closestPkgJson) : process.cwd();\n\n const inputOptions: InputOptions = await getInputOptions(\n mastraEntryFile,\n analyzedBundleInfo,\n this.platform,\n {\n 'process.env.NODE_ENV': JSON.stringify('production'),\n },\n { sourcemap: enableSourcemap, workspaceRoot, projectRoot, enableEsmShim, externalsPreset: externals === true },\n );\n const isVirtual = serverFile.includes('\\n') || !existsSync(serverFile);\n const toolsInputOptions = await this.listToolsInputOptions(toolsPaths);\n\n if (isVirtual) {\n inputOptions.input = { index: '#entry', ...toolsInputOptions };\n\n if (Array.isArray(inputOptions.plugins)) {\n inputOptions.plugins.unshift(virtual({ '#entry': serverFile }));\n } else {\n inputOptions.plugins = [virtual({ '#entry': serverFile })];\n }\n } else {\n inputOptions.input = { index: serverFile, ...toolsInputOptions };\n }\n\n return inputOptions;\n }\n\n getAllToolPaths(mastraDir: string, toolsPaths: (string | string[])[] = []): (string | string[])[] {\n // Normalize Windows paths to forward slashes for consistent handling\n const normalizedMastraDir = slash(mastraDir);\n\n // Prepare default tools paths with glob patterns\n const defaultToolsPath = posix.join(normalizedMastraDir, 'tools/**/*.{js,ts}');\n const defaultToolsIgnorePaths = [\n `!${posix.join(normalizedMastraDir, 'tools/**/*.{test,spec}.{js,ts}')}`,\n `!${posix.join(normalizedMastraDir, 'tools/**/__tests__/**')}`,\n ];\n\n // Combine default path with ignore patterns\n const defaultPaths = [defaultToolsPath, ...defaultToolsIgnorePaths];\n\n // If no tools paths provided, use only the default paths\n if (toolsPaths.length === 0) {\n return [defaultPaths];\n }\n\n // If tools paths are provided, add the default paths to ensure standard tools are always included\n return [...toolsPaths, defaultPaths];\n }\n\n async listToolsInputOptions(toolsPaths: (string | string[])[]) {\n const inputs: Record<string, string> = {};\n\n for (const toolPath of toolsPaths) {\n const expandedPaths = await glob(toolPath, {\n absolute: true,\n expandDirectories: false,\n });\n\n for (const path of expandedPaths) {\n if (await fsExtra.pathExists(path)) {\n const fileService = new FileService();\n const entryFile = fileService.getFirstExistingFile([\n join(path, 'index.ts'),\n join(path, 'index.js'),\n path, // if path itself is a file\n ]);\n\n // if it doesn't exist or is a dir skip it. using a dir as a tool will crash the process\n if (!entryFile || (await stat(entryFile)).isDirectory()) {\n this.logger.warn('No entry file found, skipping', { path });\n continue;\n }\n\n const uniqueToolID = crypto.randomUUID();\n // Normalize Windows paths to forward slashes for consistent handling\n const normalizedEntryFile = entryFile.replaceAll('\\\\', '/');\n inputs[`tools/${uniqueToolID}`] = normalizedEntryFile;\n } else {\n this.logger.warn('Tool path does not exist, skipping', { path });\n }\n }\n }\n\n return inputs;\n }\n\n protected async _bundle(\n serverFile: string,\n mastraEntryFile: string,\n {\n projectRoot,\n outputDirectory,\n enableEsmShim = true,\n }: {\n projectRoot: string;\n outputDirectory: string;\n enableEsmShim?: boolean;\n },\n toolsPaths: (string | string[])[] = [],\n bundleLocation: string = join(outputDirectory, this.outputDir),\n ): Promise<void> {\n const analyzeDir = join(outputDirectory, this.analyzeOutputDir);\n\n const bundlerOptions = await this.getUserBundlerOptions(mastraEntryFile, outputDirectory);\n const internalBundlerOptions: BundlerOptions = {\n enableSourcemap: !!bundlerOptions.sourcemap,\n externals: bundlerOptions.externals ?? [],\n enableEsmShim,\n dynamicPackages: bundlerOptions.dynamicPackages,\n };\n\n let analyzedBundleInfo;\n try {\n const resolvedToolsPaths = await this.listToolsInputOptions(toolsPaths);\n analyzedBundleInfo = await analyzeBundle(\n [serverFile, ...Object.values(resolvedToolsPaths)],\n mastraEntryFile,\n {\n outputDir: analyzeDir,\n projectRoot,\n platform: this.platform,\n bundlerOptions: internalBundlerOptions,\n },\n this.logger,\n );\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n\n if (error instanceof MastraError) {\n throw error;\n }\n\n throw new MastraError(\n {\n id: 'DEPLOYER_BUNDLER_ANALYZE_FAILED',\n text: `Failed to analyze Mastra application: ${message}`,\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.SYSTEM,\n },\n error,\n );\n }\n\n const dependenciesToInstall = new Map<string, ExternalDependencyInfo>();\n for (const [dep, depInfo] of analyzedBundleInfo.externalDependencies) {\n if (analyzedBundleInfo.workspaceMap.has(dep) || !isBareModuleSpecifier(dep)) {\n continue;\n }\n\n dependenciesToInstall.set(dep, depInfo);\n }\n\n try {\n await this.writePackageJson(join(outputDirectory, this.outputDir), dependenciesToInstall);\n\n this.logger.info('Bundling Mastra application');\n\n const inputOptions: InputOptions = await this.getBundlerOptions(\n serverFile,\n mastraEntryFile,\n analyzedBundleInfo,\n toolsPaths,\n internalBundlerOptions,\n );\n\n const bundler = await this.createBundler(\n {\n ...inputOptions,\n logLevel: inputOptions.logLevel === 'silent' ? 'warn' : inputOptions.logLevel,\n onwarn: warning => {\n if (warning.code === 'CIRCULAR_DEPENDENCY') {\n if (warning.ids?.[0]?.includes('node_modules')) {\n return;\n }\n\n this.logger.warn('Circular dependency found', {\n dependency: warning.message.replace('Circular dependency: ', ''),\n });\n }\n },\n },\n {\n dir: bundleLocation,\n manualChunks: {\n mastra: ['#mastra'],\n },\n sourcemap: internalBundlerOptions.enableSourcemap,\n },\n );\n\n await bundler.write();\n const toolImports: string[] = [];\n const toolsExports: string[] = [];\n Array.from(Object.keys(inputOptions.input || {}))\n .filter(key => key.startsWith('tools/'))\n .forEach((key, index) => {\n const toolExport = `tool${index}`;\n toolImports.push(`import * as ${toolExport} from './${key}.mjs';`);\n toolsExports.push(toolExport);\n });\n\n await writeFile(\n join(bundleLocation, 'tools.mjs'),\n `${toolImports.join('\\n')}\n\nexport const tools = [${toolsExports.join(', ')}]`,\n );\n this.logger.info('Bundling Mastra done');\n\n this.logger.info('Copying public files');\n await this.copyPublic(dirname(mastraEntryFile), outputDirectory);\n this.logger.info('Done copying public files');\n\n // For Software Factory projects, write a deterministic deployment marker\n // after public assets (including the SPA) have been copied.\n if (analyzedBundleInfo.projectType === 'factory') {\n await this.writeFactoryMarker(outputDirectory);\n }\n\n this.logger.info('Copying .npmrc file');\n await this.copyDOTNPMRC({ outputDirectory, rootDir: projectRoot });\n\n this.logger.info('Done copying .npmrc file');\n\n this.logger.info('Installing dependencies');\n await this.installDependencies(outputDirectory, projectRoot);\n this.logger.info('Done installing dependencies');\n\n this.logger.info('Generating package-lock.json for deploy');\n await this.generateNpmLockfile(join(outputDirectory, this.outputDir));\n this.logger.info('Done generating package-lock.json');\n } catch (error) {\n if (error instanceof MastraError && error.id === 'DEPLOYER_BUNDLER_FACTORY_UI_MISSING') {\n throw error;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n throw new MastraError(\n {\n id: 'DEPLOYER_BUNDLER_BUNDLE_STAGE_FAILED',\n text: `Failed during bundler bundle stage: ${message}`,\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.SYSTEM,\n },\n error,\n );\n }\n }\n\n async lint(_entryFile: string, _outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void> {\n const toolsInputOptions = await this.listToolsInputOptions(toolsPaths);\n const toolsLength = Object.keys(toolsInputOptions).length;\n if (toolsLength > 0) {\n this.logger.info('Found tools', { count: toolsLength });\n }\n }\n}\n"]}
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- // ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-openapi/0.2.9/c6654ad467b946e76ea6469e89dabcbc2ea42f7aab1c3771372baf5d5c988ab0/node_modules/@standard-community/standard-openapi/dist/index-DZEfthgZ.js
4
- var errorMessageWrapper = (message) => `standard-openapi: ${message}`;
5
-
6
- exports.errorMessageWrapper = errorMessageWrapper;
7
- //# sourceMappingURL=chunk-PC25XSK7.cjs.map
8
- //# sourceMappingURL=chunk-PC25XSK7.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-openapi/0.2.9/c6654ad467b946e76ea6469e89dabcbc2ea42f7aab1c3771372baf5d5c988ab0/node_modules/@standard-community/standard-openapi/dist/index-DZEfthgZ.js"],"names":[],"mappings":";;;AAAA,IAAM,mBAAA,GAAsB,CAAC,OAAA,KAAY,CAAA,kBAAA,EAAqB,OAAO,CAAA","file":"chunk-PC25XSK7.cjs","sourcesContent":["const errorMessageWrapper = (message) => `standard-openapi: ${message}`;\nconst openapiVendorMap = /* @__PURE__ */ new Map();\n\nconst getToOpenAPISchemaFn = async (vendor) => {\n const cached = openapiVendorMap.get(vendor);\n if (cached) {\n return cached;\n }\n let vendorFn;\n switch (vendor) {\n case \"valibot\":\n vendorFn = (await import('./valibot-D_HTw1Gn.js')).default();\n break;\n case \"zod\":\n vendorFn = (await import('./zod-DSgpEGAE.js')).default();\n break;\n default:\n vendorFn = (await import('./default-u_dwuiYb.js')).default();\n }\n openapiVendorMap.set(vendor, vendorFn);\n return vendorFn;\n};\n\nconst toOpenAPISchema = async (schema, context = {}) => {\n const fn = await getToOpenAPISchemaFn(schema[\"~standard\"].vendor);\n const { components = {}, options } = context;\n const _schema = await fn(schema, { components, options });\n return {\n schema: _schema,\n components: Object.keys(components).length > 0 ? components : void 0\n };\n};\nfunction loadVendor(vendor, fn) {\n openapiVendorMap.set(vendor, fn);\n}\n\nexport { errorMessageWrapper as e, loadVendor as l, toOpenAPISchema as t };\n"]}
@@ -1,9 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- export { __export };
8
- //# sourceMappingURL=chunk-PZ5AY32C.js.map
9
- //# sourceMappingURL=chunk-PZ5AY32C.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PZ5AY32C.js"}
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __export = (target, all) => {
5
- for (var name in all)
6
- __defProp(target, name, { get: all[name], enumerable: true });
7
- };
8
-
9
- exports.__export = __export;
10
- //# sourceMappingURL=chunk-Q7SFCCGT.cjs.map
11
- //# sourceMappingURL=chunk-Q7SFCCGT.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-Q7SFCCGT.cjs"}
@@ -1,3 +0,0 @@
1
-
2
- //# sourceMappingURL=chunk-T4UT2QX7.js.map
3
- //# sourceMappingURL=chunk-T4UT2QX7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-T4UT2QX7.js"}
@@ -1,93 +0,0 @@
1
- // ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-openapi/0.2.9/c6654ad467b946e76ea6469e89dabcbc2ea42f7aab1c3771372baf5d5c988ab0/node_modules/@standard-community/standard-openapi/dist/vendors/convert.js
2
- function convertToOpenAPISchema(jsonSchema, context) {
3
- const _jsonSchema = JSON.parse(JSON.stringify(jsonSchema));
4
- if ("nullable" in _jsonSchema && _jsonSchema.nullable === true) {
5
- if (_jsonSchema.type) {
6
- if (Array.isArray(_jsonSchema.type)) {
7
- if (!_jsonSchema.type.includes("null")) {
8
- _jsonSchema.type.push("null");
9
- }
10
- } else {
11
- _jsonSchema.type = [_jsonSchema.type, "null"];
12
- }
13
- } else {
14
- _jsonSchema.type = ["null"];
15
- }
16
- delete _jsonSchema.nullable;
17
- }
18
- if (_jsonSchema.$schema) {
19
- delete _jsonSchema.$schema;
20
- }
21
- const nestedSchemaKeys = [
22
- "properties",
23
- "additionalProperties",
24
- "items",
25
- "additionalItems",
26
- "allOf",
27
- "anyOf",
28
- "oneOf",
29
- "not",
30
- "if",
31
- "then",
32
- "else",
33
- "definitions",
34
- "$defs",
35
- "patternProperties",
36
- "propertyNames",
37
- "contains"
38
- // "unevaluatedProperties",
39
- // "unevaluatedItems",
40
- ];
41
- nestedSchemaKeys.forEach((key) => {
42
- if (_jsonSchema[key] && (typeof _jsonSchema[key] === "object" || Array.isArray(_jsonSchema[key]))) {
43
- if (key === "properties" || key === "definitions" || key === "$defs" || key === "patternProperties") {
44
- for (const subKey in _jsonSchema[key]) {
45
- _jsonSchema[key][subKey] = convertToOpenAPISchema(
46
- _jsonSchema[key][subKey],
47
- context
48
- );
49
- }
50
- } else if (key === "allOf" || key === "anyOf" || key === "oneOf") {
51
- _jsonSchema[key] = _jsonSchema[key].map(
52
- (item) => convertToOpenAPISchema(item, context)
53
- );
54
- } else if (key === "items") {
55
- if (Array.isArray(_jsonSchema[key])) {
56
- _jsonSchema[key] = _jsonSchema[key].map(
57
- (item) => convertToOpenAPISchema(item, context)
58
- );
59
- } else {
60
- _jsonSchema[key] = convertToOpenAPISchema(_jsonSchema[key], context);
61
- }
62
- } else {
63
- _jsonSchema[key] = convertToOpenAPISchema(_jsonSchema[key], context);
64
- }
65
- }
66
- });
67
- if (_jsonSchema.ref || _jsonSchema.$id) {
68
- const { ref, $id, ...component } = _jsonSchema;
69
- const id = ref || $id;
70
- context.components.schemas = {
71
- ...context.components.schemas,
72
- [id]: component
73
- };
74
- return {
75
- $ref: `#/components/schemas/${id}`
76
- };
77
- } else if (_jsonSchema.$ref) {
78
- const { $ref, $defs } = _jsonSchema;
79
- const ref = $ref.split("/").pop();
80
- context.components.schemas = {
81
- ...context.components.schemas,
82
- ...$defs
83
- };
84
- return {
85
- $ref: `#/components/schemas/${ref}`
86
- };
87
- }
88
- return _jsonSchema;
89
- }
90
-
91
- export { convertToOpenAPISchema };
92
- //# sourceMappingURL=chunk-UBIDJOJA.js.map
93
- //# sourceMappingURL=chunk-UBIDJOJA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-openapi/0.2.9/c6654ad467b946e76ea6469e89dabcbc2ea42f7aab1c3771372baf5d5c988ab0/node_modules/@standard-community/standard-openapi/dist/vendors/convert.js"],"names":[],"mappings":"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","file":"chunk-UBIDJOJA.js","sourcesContent":["function convertToOpenAPISchema(jsonSchema, context) {\n const _jsonSchema = JSON.parse(JSON.stringify(jsonSchema));\n if (\"nullable\" in _jsonSchema && _jsonSchema.nullable === true) {\n if (_jsonSchema.type) {\n if (Array.isArray(_jsonSchema.type)) {\n if (!_jsonSchema.type.includes(\"null\")) {\n _jsonSchema.type.push(\"null\");\n }\n } else {\n _jsonSchema.type = [_jsonSchema.type, \"null\"];\n }\n } else {\n _jsonSchema.type = [\"null\"];\n }\n delete _jsonSchema.nullable;\n }\n if (_jsonSchema.$schema) {\n delete _jsonSchema.$schema;\n }\n const nestedSchemaKeys = [\n \"properties\",\n \"additionalProperties\",\n \"items\",\n \"additionalItems\",\n \"allOf\",\n \"anyOf\",\n \"oneOf\",\n \"not\",\n \"if\",\n \"then\",\n \"else\",\n \"definitions\",\n \"$defs\",\n \"patternProperties\",\n \"propertyNames\",\n \"contains\"\n // \"unevaluatedProperties\",\n // \"unevaluatedItems\",\n ];\n nestedSchemaKeys.forEach((key) => {\n if (_jsonSchema[key] && (typeof _jsonSchema[key] === \"object\" || Array.isArray(_jsonSchema[key]))) {\n if (key === \"properties\" || key === \"definitions\" || key === \"$defs\" || key === \"patternProperties\") {\n for (const subKey in _jsonSchema[key]) {\n _jsonSchema[key][subKey] = convertToOpenAPISchema(\n _jsonSchema[key][subKey],\n context\n );\n }\n } else if (key === \"allOf\" || key === \"anyOf\" || key === \"oneOf\") {\n _jsonSchema[key] = _jsonSchema[key].map(\n (item) => convertToOpenAPISchema(item, context)\n );\n } else if (key === \"items\") {\n if (Array.isArray(_jsonSchema[key])) {\n _jsonSchema[key] = _jsonSchema[key].map(\n (item) => convertToOpenAPISchema(item, context)\n );\n } else {\n _jsonSchema[key] = convertToOpenAPISchema(_jsonSchema[key], context);\n }\n } else {\n _jsonSchema[key] = convertToOpenAPISchema(_jsonSchema[key], context);\n }\n }\n });\n if (_jsonSchema.ref || _jsonSchema.$id) {\n const { ref, $id, ...component } = _jsonSchema;\n const id = ref || $id;\n context.components.schemas = {\n ...context.components.schemas,\n [id]: component\n };\n return {\n $ref: `#/components/schemas/${id}`\n };\n } else if (_jsonSchema.$ref) {\n const { $ref, $defs } = _jsonSchema;\n const ref = $ref.split(\"/\").pop();\n context.components.schemas = {\n ...context.components.schemas,\n ...$defs\n };\n return {\n $ref: `#/components/schemas/${ref}`\n };\n }\n return _jsonSchema;\n}\n\nexport { convertToOpenAPISchema };\n"]}