@mastra/deployer 1.68.0-alpha.0 → 1.68.0-alpha.10

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 (121) hide show
  1. package/dist/_types/@hono_node-server/package.json +1 -0
  2. package/dist/_types/@mastra_hono/package.json +1 -0
  3. package/dist/{analyze-hp4aHpms.cjs → analyze-ClD1cvPT.cjs} +150 -99
  4. package/dist/analyze-ClD1cvPT.cjs.map +1 -0
  5. package/dist/{analyze-B5HY26Tt.js → analyze-DEk6PGTI.js} +148 -96
  6. package/dist/analyze-DEk6PGTI.js.map +1 -0
  7. package/dist/{arktype-aI7TBD0R-S0daSmHG.js → arktype-aI7TBD0R-BGjyzmsj.js} +2 -2
  8. package/dist/{arktype-aI7TBD0R-S0daSmHG.js.map → arktype-aI7TBD0R-BGjyzmsj.js.map} +1 -1
  9. package/dist/{arktype-aI7TBD0R-BuTX_Phx.cjs → arktype-aI7TBD0R-DCxjN6oF.cjs} +2 -2
  10. package/dist/{arktype-aI7TBD0R-BuTX_Phx.cjs.map → arktype-aI7TBD0R-DCxjN6oF.cjs.map} +1 -1
  11. package/dist/build/analyze/analyzeEntry.d.ts +8 -1
  12. package/dist/build/analyze/analyzeEntry.d.ts.map +1 -1
  13. package/dist/build/analyze/bundleExternals.d.ts.map +1 -1
  14. package/dist/build/analyze.cjs +1 -1
  15. package/dist/build/analyze.d.ts +2 -1
  16. package/dist/build/analyze.d.ts.map +1 -1
  17. package/dist/build/analyze.js +1 -1
  18. package/dist/build/bundler.cjs +2 -1
  19. package/dist/build/bundler.d.ts +10 -0
  20. package/dist/build/bundler.d.ts.map +1 -1
  21. package/dist/build/bundler.js +2 -2
  22. package/dist/build/index.cjs +6 -6
  23. package/dist/build/index.js +6 -6
  24. package/dist/build/package-info.d.ts +4 -0
  25. package/dist/build/package-info.d.ts.map +1 -1
  26. package/dist/build/plugins/subpath-externals-resolver.d.ts +2 -1
  27. package/dist/build/plugins/subpath-externals-resolver.d.ts.map +1 -1
  28. package/dist/build/plugins/tsconfig-paths.d.ts +2 -1
  29. package/dist/build/plugins/tsconfig-paths.d.ts.map +1 -1
  30. package/dist/build/watcher.d.ts.map +1 -1
  31. package/dist/{build-Dit9VFE2.cjs → build-DJMEiMA1.cjs} +8 -7
  32. package/dist/build-DJMEiMA1.cjs.map +1 -0
  33. package/dist/{build-Boe3fe3L.js → build-JNlRQOvG.js} +8 -7
  34. package/dist/build-JNlRQOvG.js.map +1 -0
  35. package/dist/bundler/index.cjs +29 -62
  36. package/dist/bundler/index.cjs.map +1 -1
  37. package/dist/bundler/index.d.ts +1 -11
  38. package/dist/bundler/index.d.ts.map +1 -1
  39. package/dist/bundler/index.js +30 -63
  40. package/dist/bundler/index.js.map +1 -1
  41. package/dist/bundler/workspaceDependencies.d.ts +1 -1
  42. package/dist/bundler/workspaceDependencies.d.ts.map +1 -1
  43. package/dist/{bundler-CzQiVHzN.js → bundler-CC0klr1q.js} +63 -13
  44. package/dist/bundler-CC0klr1q.js.map +1 -0
  45. package/dist/{bundler-BKf2S2r_.cjs → bundler-CjoP35xh.cjs} +74 -11
  46. package/dist/bundler-CjoP35xh.cjs.map +1 -0
  47. package/dist/{bundlerOptions-I2E5y2Wp.cjs → bundlerOptions-09fXosF4.cjs} +2 -2
  48. package/dist/{bundlerOptions-I2E5y2Wp.cjs.map → bundlerOptions-09fXosF4.cjs.map} +1 -1
  49. package/dist/{bundlerOptions-BSySFLb3.js → bundlerOptions-BaAR_H3U.js} +2 -2
  50. package/dist/{bundlerOptions-BSySFLb3.js.map → bundlerOptions-BaAR_H3U.js.map} +1 -1
  51. package/dist/core-D3wM1JKp.js +1159 -0
  52. package/dist/core-D3wM1JKp.js.map +1 -0
  53. package/dist/core-QL_X0T4Y.cjs +1159 -0
  54. package/dist/core-QL_X0T4Y.cjs.map +1 -0
  55. package/dist/docs/SKILL.md +1 -1
  56. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  57. package/dist/docs/references/docs-deployment-monorepo.md +2 -2
  58. package/dist/{effect-QlVUlMFu-tf02PTZR.cjs → effect-QlVUlMFu-B2nZ842E.cjs} +3 -3
  59. package/dist/{effect-QlVUlMFu-tf02PTZR.cjs.map → effect-QlVUlMFu-B2nZ842E.cjs.map} +1 -1
  60. package/dist/{effect-QlVUlMFu-BN-VJnMF.js → effect-QlVUlMFu-DbWuPaWV.js} +3 -3
  61. package/dist/{effect-QlVUlMFu-BN-VJnMF.js.map → effect-QlVUlMFu-DbWuPaWV.js.map} +1 -1
  62. package/dist/{esm-DZ1Siz1C.cjs → esm-Ai6osZ1a.cjs} +61 -50
  63. package/dist/esm-Ai6osZ1a.cjs.map +1 -0
  64. package/dist/{esm-B51vJPGv.js → esm-D-wYOO-S.js} +61 -50
  65. package/dist/esm-D-wYOO-S.js.map +1 -0
  66. package/dist/{index-CLddUTqr-eO-ae7Sx.js → index-CLddUTqr-BXqo9et4.js} +8 -8
  67. package/dist/{index-CLddUTqr-eO-ae7Sx.js.map → index-CLddUTqr-BXqo9et4.js.map} +1 -1
  68. package/dist/{index-CLddUTqr-DS5tJ3WV.cjs → index-CLddUTqr-DsGkVS-W.cjs} +8 -8
  69. package/dist/{index-CLddUTqr-DS5tJ3WV.cjs.map → index-CLddUTqr-DsGkVS-W.cjs.map} +1 -1
  70. package/dist/index.cjs +3 -3
  71. package/dist/index.js +3 -3
  72. package/dist/server/index.cjs +21 -19
  73. package/dist/server/index.cjs.map +1 -1
  74. package/dist/server/index.d.ts +2 -2
  75. package/dist/server/index.js +22 -20
  76. package/dist/server/index.js.map +1 -1
  77. package/dist/services/deps.d.ts +1 -1
  78. package/dist/services/deps.d.ts.map +1 -1
  79. package/dist/services/index.cjs +1 -1
  80. package/dist/services/index.js +1 -1
  81. package/dist/{services-BLvNG7v7.cjs → services-Beob47UW.cjs} +42 -23
  82. package/dist/services-Beob47UW.cjs.map +1 -0
  83. package/dist/{services-B9KRKBT-.js → services-Lm6PRS4D.js} +42 -23
  84. package/dist/services-Lm6PRS4D.js.map +1 -0
  85. package/dist/{sury-CWZTCd75-YUPbTtKO.cjs → sury-CWZTCd75-ChXu4j-p.cjs} +3 -3
  86. package/dist/{sury-CWZTCd75-YUPbTtKO.cjs.map → sury-CWZTCd75-ChXu4j-p.cjs.map} +1 -1
  87. package/dist/{sury-CWZTCd75-ClSNrMWF.js → sury-CWZTCd75-OKz7uWLi.js} +3 -3
  88. package/dist/{sury-CWZTCd75-ClSNrMWF.js.map → sury-CWZTCd75-OKz7uWLi.js.map} +1 -1
  89. package/dist/{typebox-Dei93FPO-CVSJ3SAf.js → typebox-Dei93FPO-C5ACKU09.js} +2 -2
  90. package/dist/{typebox-Dei93FPO-CVSJ3SAf.js.map → typebox-Dei93FPO-C5ACKU09.js.map} +1 -1
  91. package/dist/{typebox-Dei93FPO-BTBshlGz.cjs → typebox-Dei93FPO-KTtPU745.cjs} +2 -2
  92. package/dist/{typebox-Dei93FPO-BTBshlGz.cjs.map → typebox-Dei93FPO-KTtPU745.cjs.map} +1 -1
  93. package/dist/{utils-DYi43Kp4.js → utils-Bl3Lm7SI.js} +1 -2
  94. package/dist/{utils-DYi43Kp4.js.map → utils-Bl3Lm7SI.js.map} +1 -1
  95. package/dist/{utils-7WDNT3Ca.cjs → utils-Bsr_sEcH.cjs} +2 -2
  96. package/dist/{utils-7WDNT3Ca.cjs.map → utils-Bsr_sEcH.cjs.map} +1 -1
  97. package/dist/{valibot--1zFm7rT-Dn5WqdyK.cjs → valibot--1zFm7rT-BeX3W1HK.cjs} +3 -3
  98. package/dist/{valibot--1zFm7rT-Dn5WqdyK.cjs.map → valibot--1zFm7rT-BeX3W1HK.cjs.map} +1 -1
  99. package/dist/{valibot--1zFm7rT-BxcEC3Pu.js → valibot--1zFm7rT-BuVb-6oJ.js} +3 -3
  100. package/dist/{valibot--1zFm7rT-BxcEC3Pu.js.map → valibot--1zFm7rT-BuVb-6oJ.js.map} +1 -1
  101. package/dist/validator/custom-resolver.cjs +1 -1
  102. package/dist/validator/custom-resolver.js +1 -1
  103. package/dist/{zod-Bwrt9trS-Bd40XYOT.js → zod-Bwrt9trS-D5b1oyiT.js} +5 -5
  104. package/dist/{zod-Bwrt9trS-Bd40XYOT.js.map → zod-Bwrt9trS-D5b1oyiT.js.map} +1 -1
  105. package/dist/{zod-Bwrt9trS-Bi11nE9Q.cjs → zod-Bwrt9trS-DGQs9DWc.cjs} +5 -5
  106. package/dist/{zod-Bwrt9trS-Bi11nE9Q.cjs.map → zod-Bwrt9trS-DGQs9DWc.cjs.map} +1 -1
  107. package/package.json +15 -14
  108. package/dist/analyze-B5HY26Tt.js.map +0 -1
  109. package/dist/analyze-hp4aHpms.cjs.map +0 -1
  110. package/dist/build-Boe3fe3L.js.map +0 -1
  111. package/dist/build-Dit9VFE2.cjs.map +0 -1
  112. package/dist/bundler-BKf2S2r_.cjs.map +0 -1
  113. package/dist/bundler-CzQiVHzN.js.map +0 -1
  114. package/dist/core-D0wEgdn3.cjs +0 -790
  115. package/dist/core-D0wEgdn3.cjs.map +0 -1
  116. package/dist/core-DF65PJXc.js +0 -790
  117. package/dist/core-DF65PJXc.js.map +0 -1
  118. package/dist/esm-B51vJPGv.js.map +0 -1
  119. package/dist/esm-DZ1Siz1C.cjs.map +0 -1
  120. package/dist/services-B9KRKBT-.js.map +0 -1
  121. package/dist/services-BLvNG7v7.cjs.map +0 -1
@@ -13,9 +13,9 @@ export declare function copyPnpmWorkspaceSettings(source: string, options?: Inst
13
13
  export declare class Deps extends MastraBase {
14
14
  private packageManager;
15
15
  private rootDir;
16
+ private lockFile;
16
17
  constructor(rootDir?: string);
17
18
  private findLockFile;
18
- private getPackageManager;
19
19
  getWorkspaceDependencyPath({ pkgName, version }: {
20
20
  pkgName: string;
21
21
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAU/C,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,cAAe,SAAQ,mBAAmB;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAsBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBpE;AA6CD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,UA2DrF;AAED,qBAAa,IAAK,SAAQ,UAAU;IAClC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,SAAgB;IAOnC,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,iBAAiB;IAgBlB,0BAA0B,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAI/E,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IA6BlH,OAAO,CAAC,qBAAqB;YAcf,eAAe;YAaf,eAAe;IAkB7B,OAAO,CAAC,UAAU;IAQlB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAiBnB,OAAO,CAAC,EACnB,GAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,GACf,GAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,mBAAmB,CAAC;QACnC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,cAAc,CAAC,EAAE,SAAS,CAAC;KACvB;IA2DO,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;IAwBlC,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB1D,cAAc;IAUd,iBAAiB;IASjB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAQrE;AAED,qBAAa,WAAY,SAAQ,IAAI;CAAG"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/services/deps.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAgB/C,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,cAAe,SAAQ,mBAAmB;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAsBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBpE;AA6CD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,UA2DrF;AAED,qBAAa,IAAK,SAAQ,UAAU;IAClC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,OAAO,SAAgB;IAQnC,OAAO,CAAC,YAAY;IAoBb,0BAA0B,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAI/E,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IA6BlH,OAAO,CAAC,qBAAqB;YAcf,eAAe;YAaf,eAAe;IAkB7B,OAAO,CAAC,UAAU;IAQlB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmBnB,OAAO,CAAC,EACnB,GAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,GACf,GAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,mBAAmB,CAAC;QACnC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,cAAc,CAAC,EAAE,SAAS,CAAC;KACvB;IAwEO,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;IAwBlC,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB1D,cAAc;IAUd,iBAAiB;IASjB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAQrE;AAED,qBAAa,WAAY,SAAQ,IAAI;CAAG"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_services = require("../services-BLvNG7v7.cjs");
2
+ const require_services = require("../services-Beob47UW.cjs");
3
3
  exports.DepsService = require_services.DepsService;
4
4
  exports.EnvService = require_services.EnvService;
5
5
  exports.FileService = require_services.FileService;
@@ -1,2 +1,2 @@
1
- import { i as DepsService, n as EnvService, t as FileService } from "../services-B9KRKBT-.js";
1
+ import { i as DepsService, n as EnvService, t as FileService } from "../services-Lm6PRS4D.js";
2
2
  export { DepsService, EnvService, FileService };
@@ -1,5 +1,4 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-emK7D4bc.cjs");
2
- let child_process = require("child_process");
3
2
  let fs = require("fs");
4
3
  fs = require_rolldown_runtime.__toESM(fs, 1);
5
4
  let fs_promises = require("fs/promises");
@@ -9,6 +8,7 @@ path = require_rolldown_runtime.__toESM(path, 1);
9
8
  let _mastra_core_error = require("@mastra/core/error");
10
9
  let fs_extra_esm = require("fs-extra/esm");
11
10
  fs_extra_esm = require_rolldown_runtime.__toESM(fs_extra_esm, 1);
11
+ let child_process = require("child_process");
12
12
  let url = require("url");
13
13
  let _mastra_core_base = require("@mastra/core/base");
14
14
  let yaml = require("yaml");
@@ -177,34 +177,45 @@ function copyPnpmWorkspaceSettings(source, options = {}) {
177
177
  var Deps = class extends _mastra_core_base.MastraBase {
178
178
  packageManager;
179
179
  rootDir;
180
+ lockFile;
180
181
  constructor(rootDir = process.cwd()) {
181
182
  super({
182
183
  component: "DEPLOYER",
183
184
  name: "DEPS"
184
185
  });
185
186
  this.rootDir = rootDir;
186
- this.packageManager = this.getPackageManager();
187
+ this.lockFile = this.findLockFile(rootDir);
188
+ this.packageManager = this.lockFile?.packageManager ?? "npm";
187
189
  }
188
190
  findLockFile(dir) {
189
- for (const file of [
190
- "pnpm-lock.yaml",
191
- "package-lock.json",
192
- "yarn.lock",
193
- "bun.lock"
194
- ]) if (fs.default.existsSync(path.default.join(dir, file))) return file;
191
+ for (const lockFile of [
192
+ {
193
+ filename: "pnpm-lock.yaml",
194
+ packageManager: "pnpm"
195
+ },
196
+ {
197
+ filename: "package-lock.json",
198
+ packageManager: "npm"
199
+ },
200
+ {
201
+ filename: "yarn.lock",
202
+ packageManager: "yarn"
203
+ },
204
+ {
205
+ filename: "bun.lock",
206
+ packageManager: "bun"
207
+ }
208
+ ]) {
209
+ const lockFilePath = path.default.join(dir, lockFile.filename);
210
+ if (fs.default.existsSync(lockFilePath)) return {
211
+ ...lockFile,
212
+ path: lockFilePath
213
+ };
214
+ }
195
215
  const parentDir = path.default.resolve(dir, "..");
196
216
  if (parentDir !== dir) return this.findLockFile(parentDir);
197
217
  return null;
198
218
  }
199
- getPackageManager() {
200
- switch (this.findLockFile(this.rootDir)) {
201
- case "pnpm-lock.yaml": return "pnpm";
202
- case "package-lock.json": return "npm";
203
- case "yarn.lock": return "yarn";
204
- case "bun.lock": return "bun";
205
- default: return "npm";
206
- }
207
- }
208
219
  getWorkspaceDependencyPath({ pkgName, version }) {
209
220
  return `file:./workspace-module/${pkgName}-${version}.tgz`;
210
221
  }
@@ -258,19 +269,27 @@ var Deps = class extends _mastra_core_base.MastraBase {
258
269
  * Depending on whether we want to install or add a package, this function returns the appropriate commands.
259
270
  * All package managers support both commands (e.g. npm install has an alias on "add")
260
271
  */
261
- getPackageManagerCommand(pm, type) {
272
+ getPackageManagerCommand(pm, type, { yarnClassic = false } = {}) {
262
273
  const cmd = type === "install" ? "install" : "add";
263
274
  switch (pm) {
264
275
  case "npm": return `${cmd} --audit=false --fund=false --loglevel=error --progress=false --update-notifier=false`;
265
- case "yarn": return `${cmd}`;
266
- case "pnpm": return cmd === "install" ? `${cmd} --loglevel=error` : `${cmd} --loglevel=error`;
267
- case "bun": return cmd;
276
+ case "yarn": return type === "install" && !yarnClassic ? `${cmd} --no-immutable` : cmd;
277
+ case "pnpm": return type === "install" ? `${cmd} --no-frozen-lockfile --loglevel=error` : `${cmd} --loglevel=error`;
268
278
  default: return cmd;
269
279
  }
270
280
  }
271
281
  async install({ dir = this.rootDir, architecture, pnpmOverrides, pnpmNodeLinker } = {}) {
272
282
  const pm = this.packageManager;
273
- const installCommand = this.getPackageManagerCommand(pm, "install");
283
+ let yarnClassic = false;
284
+ if (this.lockFile) {
285
+ const destination = path.default.join(dir, this.lockFile.filename);
286
+ if (path.default.resolve(this.lockFile.path) !== path.default.resolve(destination)) await fs_promises.default.copyFile(this.lockFile.path, destination);
287
+ if (pm === "yarn") {
288
+ const lockfileContents = await fs_promises.default.readFile(destination, "utf-8");
289
+ yarnClassic = /^# yarn lockfile v1\r?$/m.test(lockfileContents);
290
+ }
291
+ }
292
+ const installCommand = this.getPackageManagerCommand(pm, "install", { yarnClassic });
274
293
  let args = [];
275
294
  switch (pm) {
276
295
  case "pnpm":
@@ -515,4 +534,4 @@ Object.defineProperty(exports, "createPinoStream", {
515
534
  }
516
535
  });
517
536
 
518
- //# sourceMappingURL=services-BLvNG7v7.cjs.map
537
+ //# sourceMappingURL=services-Beob47UW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services-Beob47UW.cjs","names":["Writable","MastraError","ErrorDomain","ErrorCategory","MastraBase","fsPromises","fsExtra"],"sources":["../src/deploy/log.ts","../src/services/deps.ts","../src/services/env.ts","../src/services/fs.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport { Writable } from 'node:stream';\nimport type { IMastraLogger } from '@mastra/core/logger';\n\nexport const createPinoStream = (logger: IMastraLogger) => {\n return new Writable({\n write(chunk, _encoding, callback) {\n // Convert Buffer/string to string and trim whitespace\n const line = chunk.toString().trim();\n\n if (line) {\n console.info(line);\n // Log each line through Pino\n logger.info(line);\n }\n\n callback();\n },\n });\n};\n\n/**\n * Args are joined into a shell command (`shell: true` is required for package\n * manager shims on Windows), so only allow characters that appear in package\n * specifiers and CLI flags — never shell metacharacters (CodeQL\n * js/shell-command-constructed-from-input).\n */\nconst SAFE_SHELL_ARG = /^[\\w@%+=:,./^~-]*$/;\n\nexport function createChildProcessLogger({ logger, root }: { logger: IMastraLogger; root: string }) {\n const pinoStream = createPinoStream(logger);\n return async ({ cmd, args, env }: { cmd: string; args: string[]; env: Record<string, string> }) => {\n try {\n for (const arg of args) {\n if (!SAFE_SHELL_ARG.test(arg)) {\n throw new Error(`Refusing to pass unsafe argument to shell command: ${JSON.stringify(arg)}`);\n }\n }\n const subprocess = spawn(cmd, args, {\n cwd: root,\n shell: true,\n env,\n // No stdin for the child process — it doesn't need interactive input\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n let stdout = '';\n let stderr = '';\n subprocess.stdout?.on('data', chunk => {\n stdout += chunk.toString();\n });\n subprocess.stderr?.on('data', chunk => {\n stderr += chunk.toString();\n });\n\n // Pipe stdout and stderr through the logging stream.\n // { end: false } prevents the first stream to close from ending pinoStream\n // while the other may still be writing.\n subprocess.stdout?.pipe(pinoStream, { end: false });\n subprocess.stderr?.pipe(pinoStream, { end: false });\n\n // Wait for the process to complete\n return new Promise((resolve, reject) => {\n subprocess.on('close', code => {\n pinoStream.end();\n if (code === 0) {\n resolve({ success: true, stdout, stderr });\n } else {\n reject(Object.assign(new Error(`Process exited with code ${code}`), { stdout, stderr }));\n }\n });\n\n subprocess.on('error', error => {\n pinoStream.end();\n logger.error('Process failed', { error });\n reject(error);\n });\n });\n } catch (error) {\n console.error(error);\n logger.error('Process failed', { error });\n pinoStream.end();\n return { success: false, error };\n }\n };\n}\n","import fs from 'node:fs';\nimport fsPromises from 'node:fs/promises';\nimport path, { dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { MastraBase } from '@mastra/core/base';\nimport { ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';\nimport { readJSON, writeJSON, ensureFile } from 'fs-extra/esm';\nimport type { PackageJson } from 'type-fest';\nimport { parse } from 'yaml';\n\nimport { createChildProcessLogger } from '../deploy/log.js';\n\ntype PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';\n\ninterface LockFileInfo {\n path: string;\n filename: string;\n packageManager: PackageManager;\n}\n\ninterface ArchitectureOptions {\n os?: string[];\n cpu?: string[];\n libc?: string[];\n}\n\ninterface InstallOptions extends ArchitectureOptions {\n pnpmOverrides?: Record<string, string>;\n pnpmNodeLinker?: 'hoisted';\n}\n\nconst PNPM_CONFIG_KEYS_TO_COPY = new Set([\n 'allowBuilds',\n 'onlyBuiltDependencies',\n 'ignoredBuiltDependencies',\n 'neverBuiltDependencies',\n 'minimumReleaseAge',\n 'minimumReleaseAgeExclude',\n 'trustPolicy',\n 'trustPolicyExclude',\n 'trustPolicyIgnoreAfter',\n 'supportedArchitectures',\n]);\n\nfunction getTopLevelYamlKey(line: string) {\n const match = /^(?!\\s)([\\w-]+):/.exec(line);\n return match?.[1];\n}\n\nconst PNPM_IGNORED_BUILDS_ERROR = 'ERR_PNPM_IGNORED_BUILDS';\n\nexport function getPnpmIgnoredBuildPackages(output: string): string[] {\n const match = new RegExp(`\\\\[?${PNPM_IGNORED_BUILDS_ERROR}\\\\]?[^\\\\n]*Ignored build scripts:\\\\s*([^\\\\n]+)`).exec(\n output,\n );\n if (!match?.[1]) return [];\n\n return match[1]\n .split(',')\n .map(specifier => specifier.trim())\n .filter(Boolean)\n .map(specifier => {\n if (specifier.startsWith('@')) {\n const versionSeparator = specifier.indexOf('@', 1);\n return versionSeparator === -1 ? specifier : specifier.slice(0, versionSeparator);\n }\n return specifier.split('@', 1)[0]!;\n });\n}\n\nfunction validatePnpmBuildApprovals(key: string, block: string): void {\n if (key !== 'allowBuilds' && key !== 'onlyBuiltDependencies') return;\n\n let value: unknown;\n try {\n value = (parse(block) as Record<string, unknown>)[key];\n } catch (error) {\n throw new MastraError(\n {\n id: 'DEPLOYER_INVALID_PNPM_BUILD_APPROVAL_CONFIG',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.USER,\n details: { key },\n text: `Invalid pnpm ${key} configuration`,\n },\n error,\n );\n }\n\n const invalidEntries =\n key === 'allowBuilds'\n ? value && typeof value === 'object' && !Array.isArray(value)\n ? Object.entries(value).filter(\n ([dependency, approval]) => dependency.trim().length === 0 || typeof approval !== 'boolean',\n )\n : [[key, value]]\n : Array.isArray(value) &&\n value.every(dependency => typeof dependency === 'string' && dependency.trim().length > 0)\n ? []\n : [[key, value]];\n\n if (invalidEntries.length === 0) return;\n const invalidEntryNames = invalidEntries.map(([entry]) => entry).join(', ');\n\n throw new MastraError({\n id: 'DEPLOYER_INVALID_PNPM_BUILD_APPROVAL_CONFIG',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.USER,\n details: { key, invalidEntries: invalidEntryNames },\n text: `Invalid pnpm ${key} entries: ${invalidEntryNames}`,\n });\n}\n\nexport function copyPnpmWorkspaceSettings(source: string, options: InstallOptions = {}) {\n const hasArchitecture = Boolean(options.os?.length || options.cpu?.length || options.libc?.length);\n const lines = source.split(/\\r?\\n/);\n const blocks: string[] = [];\n\n for (let index = 0; index < lines.length;) {\n const key = getTopLevelYamlKey(lines[index] ?? '');\n if (!key) {\n index += 1;\n continue;\n }\n\n const start = index;\n index += 1;\n while (index < lines.length && !getTopLevelYamlKey(lines[index] ?? '')) {\n index += 1;\n }\n\n if (!PNPM_CONFIG_KEYS_TO_COPY.has(key) || (key === 'supportedArchitectures' && hasArchitecture)) {\n continue;\n }\n\n const block = lines.slice(start, index).join('\\n').trimEnd();\n if (block) {\n validatePnpmBuildApprovals(key, block);\n blocks.push(block);\n }\n }\n\n if (hasArchitecture) {\n const architectureBlock = ['supportedArchitectures:'];\n if (options.os?.length) {\n architectureBlock.push(` os: ${JSON.stringify(options.os)}`);\n }\n if (options.cpu?.length) {\n architectureBlock.push(` cpu: ${JSON.stringify(options.cpu)}`);\n }\n if (options.libc?.length) {\n architectureBlock.push(` libc: ${JSON.stringify(options.libc)}`);\n }\n blocks.push(architectureBlock.join('\\n'));\n }\n\n if (options.pnpmOverrides && Object.keys(options.pnpmOverrides).length > 0) {\n blocks.push(\n [\n 'overrides:',\n ...Object.entries(options.pnpmOverrides).map(\n ([key, value]) => ` ${JSON.stringify(key)}: ${JSON.stringify(value)}`,\n ),\n ].join('\\n'),\n );\n }\n\n if (options.pnpmNodeLinker) {\n blocks.push(`nodeLinker: ${options.pnpmNodeLinker}`);\n }\n\n return [\"packages:\\n - '.'\", ...blocks].join('\\n\\n') + '\\n';\n}\n\nexport class Deps extends MastraBase {\n private packageManager: PackageManager;\n private rootDir: string;\n private lockFile: LockFileInfo | null;\n\n constructor(rootDir = process.cwd()) {\n super({ component: 'DEPLOYER', name: 'DEPS' });\n\n this.rootDir = rootDir;\n this.lockFile = this.findLockFile(rootDir);\n this.packageManager = this.lockFile?.packageManager ?? 'npm';\n }\n\n private findLockFile(dir: string): LockFileInfo | null {\n const lockFiles: Array<{ filename: string; packageManager: PackageManager }> = [\n { filename: 'pnpm-lock.yaml', packageManager: 'pnpm' },\n { filename: 'package-lock.json', packageManager: 'npm' },\n { filename: 'yarn.lock', packageManager: 'yarn' },\n { filename: 'bun.lock', packageManager: 'bun' },\n ];\n for (const lockFile of lockFiles) {\n const lockFilePath = path.join(dir, lockFile.filename);\n if (fs.existsSync(lockFilePath)) {\n return { ...lockFile, path: lockFilePath };\n }\n }\n const parentDir = path.resolve(dir, '..');\n if (parentDir !== dir) {\n return this.findLockFile(parentDir);\n }\n return null;\n }\n\n public getWorkspaceDependencyPath({ pkgName, version }: { pkgName: string; version: string }) {\n return `file:./workspace-module/${pkgName}-${version}.tgz`;\n }\n\n public async pack({ dir, destination, sanitizedName }: { dir: string; destination: string; sanitizedName: string }) {\n const cpLogger = createChildProcessLogger({\n logger: this.logger,\n root: dir,\n });\n\n let packCmd = 'pack';\n let destinationFlag = `--pack-destination ${destination}`;\n if (this.packageManager === 'yarn') {\n // %s includes an '@' at the start of packages names with an '@'\n // so we need to use our sanitizedName instead.\n destinationFlag = `--out ${destination}/${sanitizedName}-%v.tgz`;\n }\n if (this.packageManager === 'bun') {\n // bun uses `pm pack` instead of `pack`\n packCmd = 'pm pack';\n // bun uses --destination instead of --pack-destination\n destinationFlag = `--destination ${destination}`;\n }\n\n return cpLogger({\n cmd: `${this.packageManager} ${packCmd} ${destinationFlag}`,\n args: [],\n env: {\n PATH: process.env.PATH!,\n },\n });\n }\n\n private findPnpmWorkspaceFile(dir: string): string | null {\n const workspaceYamlPath = path.join(dir, 'pnpm-workspace.yaml');\n if (fs.existsSync(workspaceYamlPath)) {\n return workspaceYamlPath;\n }\n\n const parentDir = path.resolve(dir, '..');\n if (parentDir !== dir) {\n return this.findPnpmWorkspaceFile(parentDir);\n }\n\n return null;\n }\n\n private async writePnpmConfig(dir: string, options: InstallOptions = {}) {\n const sourceWorkspaceYamlPath = this.findPnpmWorkspaceFile(this.rootDir);\n const sourceWorkspaceYaml = sourceWorkspaceYamlPath\n ? await fsPromises.readFile(sourceWorkspaceYamlPath, 'utf-8')\n : '';\n\n await fsPromises.writeFile(\n path.join(dir, 'pnpm-workspace.yaml'),\n copyPnpmWorkspaceSettings(sourceWorkspaceYaml, options),\n 'utf-8',\n );\n }\n\n private async writeYarnConfig(dir: string, options: ArchitectureOptions) {\n const yarnrcPath = path.join(dir, '.yarnrc.yml');\n const config = {\n supportedArchitectures: {\n cpu: options.cpu || [],\n os: options.os || [],\n libc: options.libc || [],\n },\n };\n\n await fsPromises.writeFile(\n yarnrcPath,\n `supportedArchitectures:\\n${Object.entries(config.supportedArchitectures)\n .map(([key, value]) => ` ${key}: ${JSON.stringify(value)}`)\n .join('\\n')}`,\n );\n }\n\n private getNpmArgs(options: ArchitectureOptions): string[] {\n const args: string[] = [];\n if (options.cpu) args.push(`--cpu=${options.cpu.join(',')}`);\n if (options.os) args.push(`--os=${options.os.join(',')}`);\n if (options.libc) args.push(`--libc=${options.libc.join(',')}`);\n return args;\n }\n\n /**\n * Depending on whether we want to install or add a package, this function returns the appropriate commands.\n * All package managers support both commands (e.g. npm install has an alias on \"add\")\n */\n private getPackageManagerCommand(\n pm: PackageManager,\n type: 'install' | 'add',\n { yarnClassic = false }: { yarnClassic?: boolean } = {},\n ): string {\n const cmd = type === 'install' ? 'install' : 'add';\n\n switch (pm) {\n case 'npm':\n return `${cmd} --audit=false --fund=false --loglevel=error --progress=false --update-notifier=false`;\n case 'yarn':\n return type === 'install' && !yarnClassic ? `${cmd} --no-immutable` : cmd;\n case 'pnpm':\n return type === 'install' ? `${cmd} --no-frozen-lockfile --loglevel=error` : `${cmd} --loglevel=error`;\n default:\n return cmd;\n }\n }\n\n public async install({\n dir = this.rootDir,\n architecture,\n pnpmOverrides,\n pnpmNodeLinker,\n }: {\n dir?: string;\n architecture?: ArchitectureOptions;\n pnpmOverrides?: Record<string, string>;\n pnpmNodeLinker?: 'hoisted';\n } = {}) {\n const pm = this.packageManager;\n let yarnClassic = false;\n if (this.lockFile) {\n const destination = path.join(dir, this.lockFile.filename);\n if (path.resolve(this.lockFile.path) !== path.resolve(destination)) {\n await fsPromises.copyFile(this.lockFile.path, destination);\n }\n\n if (pm === 'yarn') {\n const lockfileContents = await fsPromises.readFile(destination, 'utf-8');\n yarnClassic = /^# yarn lockfile v1\\r?$/m.test(lockfileContents);\n }\n }\n\n const installCommand = this.getPackageManagerCommand(pm, 'install', { yarnClassic });\n let args: string[] = [];\n\n switch (pm) {\n case 'pnpm':\n await this.writePnpmConfig(dir, { ...architecture, pnpmOverrides, pnpmNodeLinker });\n break;\n case 'yarn':\n // similar to --ignore-workspace but for yarn\n await ensureFile(path.join(dir, 'yarn.lock'));\n if (architecture) {\n await this.writeYarnConfig(dir, architecture);\n }\n break;\n case 'npm':\n if (architecture) {\n args = this.getNpmArgs(architecture);\n }\n break;\n default:\n // Do nothing\n }\n\n const cpLogger = createChildProcessLogger({\n logger: this.logger,\n root: dir,\n });\n\n try {\n return await cpLogger({\n cmd: `${pm} ${installCommand}`,\n args,\n env: process.env as Record<string, string>,\n });\n } catch (error) {\n if (pm !== 'pnpm') throw error;\n\n const processOutput =\n error && typeof error === 'object'\n ? `${'stdout' in error ? String(error.stdout) : ''}\\n${'stderr' in error ? String(error.stderr) : ''}`\n : '';\n const ignoredPackages = getPnpmIgnoredBuildPackages(processOutput);\n if (ignoredPackages.length === 0) throw error;\n\n throw new MastraError(\n {\n id: 'DEPLOYER_PNPM_IGNORED_BUILDS',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.USER,\n details: { packageNames: ignoredPackages.join(', ') },\n text: `pnpm blocked build scripts for: ${ignoredPackages.join(', ')}. Add these packages to allowBuilds in pnpm-workspace.yaml and retry the build.`,\n },\n error,\n );\n }\n }\n\n public async installPackages(packages: string[]) {\n const pm = this.packageManager;\n const installCommand = this.getPackageManagerCommand(pm, 'add');\n\n const env: Record<string, string> = {\n PATH: process.env.PATH!,\n };\n\n if (process.env.npm_config_registry) {\n env.npm_config_registry = process.env.npm_config_registry;\n }\n\n const cpLogger = createChildProcessLogger({\n logger: this.logger,\n root: '',\n });\n\n return cpLogger({\n cmd: `${pm} ${installCommand}`,\n args: packages,\n env,\n });\n }\n\n public async checkDependencies(dependencies: string[]): Promise<string> {\n try {\n const packageJsonPath = path.join(this.rootDir, 'package.json');\n\n try {\n await fsPromises.access(packageJsonPath);\n } catch {\n return 'No package.json file found in the current directory';\n }\n\n const packageJson = await readJSON(packageJsonPath);\n for (const dependency of dependencies) {\n if (!packageJson.dependencies || !packageJson.dependencies[dependency]) {\n return `Please install ${dependency} before running this command (${this.packageManager} install ${dependency})`;\n }\n }\n\n return 'ok';\n } catch (err) {\n console.error(err);\n return 'Could not check dependencies';\n }\n }\n\n public async getProjectName() {\n try {\n const packageJsonPath = path.join(this.rootDir, 'package.json');\n const pkg = await readJSON(packageJsonPath);\n return pkg.name;\n } catch (err) {\n throw err;\n }\n }\n\n public async getPackageVersion() {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const pkgJsonPath = path.join(__dirname, '..', '..', 'package.json');\n\n const content = (await readJSON(pkgJsonPath)) as PackageJson;\n return content.version;\n }\n\n public async addScriptsToPackageJson(scripts: Record<string, string>) {\n const packageJson = await readJSON('package.json');\n packageJson.scripts = {\n ...packageJson.scripts,\n ...scripts,\n };\n await writeJSON('package.json', packageJson, { spaces: 2 });\n }\n}\n\nexport class DepsService extends Deps {}\n","import * as fs from 'node:fs';\n\nexport abstract class EnvService {\n abstract getEnvValue(key: string): Promise<string | null>;\n abstract setEnvValue(key: string, value: string): Promise<void>;\n}\n\nexport class FileEnvService extends EnvService {\n private filePath: string;\n\n constructor(filePath: string) {\n super();\n this.filePath = filePath;\n }\n\n private readFile(filePath: string): Promise<string> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, 'utf8', (err: NodeJS.ErrnoException | null, data: string) => {\n if (err) reject(err);\n else resolve(data);\n });\n });\n }\n\n private writeFile({ filePath, data }: { filePath: string; data: string }): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.writeFile(filePath, data, 'utf8', (err: NodeJS.ErrnoException | null) => {\n if (err) reject(err);\n else resolve();\n });\n });\n }\n\n private async updateEnvData({\n key,\n value,\n filePath = this.filePath,\n data,\n }: {\n key: string;\n value: string;\n filePath?: string;\n data: string;\n }): Promise<string> {\n const regex = new RegExp(`^${key}=.*$`, 'm');\n if (data.match(regex)) {\n // Use a replacement function so `$` sequences in the value (e.g. `$&`,\n // `$$`) are written literally instead of being interpreted as\n // String.prototype.replace special patterns.\n data = data.replace(regex, () => `${key}=${value}`);\n } else {\n data += `\\n${key}=${value}`;\n }\n await this.writeFile({ filePath, data });\n console.info(`${key} set to ${value} in ENV file.`);\n return data;\n }\n\n async getEnvValue(key: string): Promise<string | null> {\n try {\n const data = await this.readFile(this.filePath);\n const regex = new RegExp(`^${key}=(.*)$`, 'm');\n const match = data.match(regex);\n return match?.[1] || null;\n } catch (err) {\n console.error(`Error reading ENV value: ${err}`);\n return null;\n }\n }\n\n async setEnvValue(key: string, value: string): Promise<void> {\n try {\n const data = await this.readFile(this.filePath);\n await this.updateEnvData({ key, value, data });\n } catch (err) {\n console.error(`Error writing ENV value: ${err}`);\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport fsExtra from 'fs-extra/esm';\n\nimport { FileEnvService } from './env.js';\n\nexport class FileService {\n /**\n *\n * @param inputFile the file in the starter files directory to copy\n * @param outputFilePath the destination path\n * @param replaceIfExists flag to replace if it exists\n * @returns\n */\n public async copyStarterFile(inputFile: string, outputFilePath: string, replaceIfExists?: boolean) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = path.dirname(__filename);\n const filePath = path.resolve(__dirname, '..', 'starter-files', inputFile);\n const fileString = fs.readFileSync(filePath, 'utf8');\n\n if (fs.existsSync(outputFilePath) && !replaceIfExists) {\n console.info(`${outputFilePath} already exists`);\n return false;\n }\n\n await fsExtra.outputFile(outputFilePath, fileString);\n\n return true;\n }\n\n public async setupEnvFile({ dbUrl }: { dbUrl: string }) {\n const envPath = path.join(process.cwd(), '.env.development');\n\n await fsExtra.ensureFile(envPath);\n\n const fileEnvService = new FileEnvService(envPath);\n await fileEnvService.setEnvValue('DB_URL', dbUrl);\n }\n\n public getFirstExistingFile(files: string[]): string {\n for (const f of files) {\n if (fs.existsSync(f)) {\n return f;\n }\n }\n\n throw new Error('Missing required file, checked the following paths: ' + files.join(', '));\n }\n\n /**\n * Returns every existing file from the provided array in the same order.\n * Callers supply files from the lowest to highest precedence so later dotenv\n * files override earlier values when the bundler loads them.\n */\n public getExistingFiles(files: string[]): string[] {\n return files.filter(file => fs.existsSync(file));\n }\n\n /**\n * Returns the first existing file from the provided array, or undefined if none exist\n * @param files array of file paths to check\n * @returns the first existing file path or undefined\n */\n public getFirstExistingFileOrUndefined(files: string[]): string | undefined {\n for (const f of files) {\n if (fs.existsSync(f)) {\n return f;\n }\n }\n\n return undefined;\n }\n\n public replaceValuesInFile({\n filePath,\n replacements,\n }: {\n filePath: string;\n replacements: { search: string; replace: string }[];\n }) {\n let fileContent = fs.readFileSync(filePath, 'utf8');\n replacements.forEach(({ search, replace }) => {\n fileContent = fileContent.replaceAll(search, replace);\n });\n\n fs.writeFileSync(filePath, fileContent);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAIA,MAAa,oBAAoB,WAA0B;CACzD,OAAO,IAAIA,OAAAA,SAAS,EAClB,MAAM,OAAO,WAAW,UAAU;EAEhC,MAAM,OAAO,MAAM,SAAS,CAAC,CAAC,KAAK;EAEnC,IAAI,MAAM;GACR,QAAQ,KAAK,IAAI;GAEjB,OAAO,KAAK,IAAI;EAClB;EAEA,SAAS;CACX,EACF,CAAC;AACH;;;;;;;AAQA,MAAM,iBAAiB;AAEvB,SAAgB,yBAAyB,EAAE,QAAQ,QAAiD;CAClG,MAAM,aAAa,iBAAiB,MAAM;CAC1C,OAAO,OAAO,EAAE,KAAK,MAAM,UAAwE;EACjG,IAAI;GACF,KAAK,MAAM,OAAO,MAChB,IAAI,CAAC,eAAe,KAAK,GAAG,GAC1B,MAAM,IAAI,MAAM,sDAAsD,KAAK,UAAU,GAAG,GAAG;GAG/F,MAAM,cAAA,GAAA,cAAA,MAAA,CAAmB,KAAK,MAAM;IAClC,KAAK;IACL,OAAO;IACP;IAEA,OAAO;KAAC;KAAU;KAAQ;IAAM;GAClC,CAAC;GAED,IAAI,SAAS;GACb,IAAI,SAAS;GACb,WAAW,QAAQ,GAAG,SAAQ,UAAS;IACrC,UAAU,MAAM,SAAS;GAC3B,CAAC;GACD,WAAW,QAAQ,GAAG,SAAQ,UAAS;IACrC,UAAU,MAAM,SAAS;GAC3B,CAAC;GAKD,WAAW,QAAQ,KAAK,YAAY,EAAE,KAAK,MAAM,CAAC;GAClD,WAAW,QAAQ,KAAK,YAAY,EAAE,KAAK,MAAM,CAAC;GAGlD,OAAO,IAAI,SAAS,SAAS,WAAW;IACtC,WAAW,GAAG,UAAS,SAAQ;KAC7B,WAAW,IAAI;KACf,IAAI,SAAS,GACX,QAAQ;MAAE,SAAS;MAAM;MAAQ;KAAO,CAAC;UAEzC,OAAO,OAAO,uBAAO,IAAI,MAAM,4BAA4B,MAAM,GAAG;MAAE;MAAQ;KAAO,CAAC,CAAC;IAE3F,CAAC;IAED,WAAW,GAAG,UAAS,UAAS;KAC9B,WAAW,IAAI;KACf,OAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC;KACxC,OAAO,KAAK;IACd,CAAC;GACH,CAAC;EACH,SAAS,OAAO;GACd,QAAQ,MAAM,KAAK;GACnB,OAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC;GACxC,WAAW,IAAI;GACf,OAAO;IAAE,SAAS;IAAO;GAAM;EACjC;CACF;AACF;;;ACtDA,MAAM,2CAA2B,IAAI,IAAI;CACvC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAS,mBAAmB,MAAc;CAExC,OADc,mBAAmB,KAAK,IAC3B,CAAC,GAAG;AACjB;AAEA,MAAM,4BAA4B;AAElC,SAAgB,4BAA4B,QAA0B;CACpE,MAAM,QAAQ,IAAI,OAAO,OAAO,0BAA0B,+CAA+C,CAAC,CAAC,KACzG,MACF;CACA,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;CAEzB,OAAO,MAAM,EAAE,CACZ,MAAM,GAAG,CAAC,CACV,KAAI,cAAa,UAAU,KAAK,CAAC,CAAC,CAClC,OAAO,OAAO,CAAC,CACf,KAAI,cAAa;EAChB,IAAI,UAAU,WAAW,GAAG,GAAG;GAC7B,MAAM,mBAAmB,UAAU,QAAQ,KAAK,CAAC;GACjD,OAAO,qBAAqB,KAAK,YAAY,UAAU,MAAM,GAAG,gBAAgB;EAClF;EACA,OAAO,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC;CACjC,CAAC;AACL;AAEA,SAAS,2BAA2B,KAAa,OAAqB;CACpE,IAAI,QAAQ,iBAAiB,QAAQ,yBAAyB;CAE9D,IAAI;CACJ,IAAI;EACF,SAAA,GAAA,KAAA,MAAA,CAAe,KAAK,CAAC,CAA6B;CACpD,SAAS,OAAO;EACd,MAAM,IAAIC,mBAAAA,YACR;GACE,IAAI;GACJ,QAAQC,mBAAAA,YAAY;GACpB,UAAUC,mBAAAA,cAAc;GACxB,SAAS,EAAE,IAAI;GACf,MAAM,gBAAgB,IAAI;EAC5B,GACA,KACF;CACF;CAEA,MAAM,iBACJ,QAAQ,gBACJ,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACxD,OAAO,QAAQ,KAAK,CAAC,CAAC,QACnB,CAAC,YAAY,cAAc,WAAW,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,aAAa,SACpF,IACA,CAAC,CAAC,KAAK,KAAK,CAAC,IACf,MAAM,QAAQ,KAAK,KACjB,MAAM,OAAM,eAAc,OAAO,eAAe,YAAY,WAAW,KAAK,CAAC,CAAC,SAAS,CAAC,IACxF,CAAC,IACD,CAAC,CAAC,KAAK,KAAK,CAAC;CAErB,IAAI,eAAe,WAAW,GAAG;CACjC,MAAM,oBAAoB,eAAe,KAAK,CAAC,WAAW,KAAK,CAAC,CAAC,KAAK,IAAI;CAE1E,MAAM,IAAIF,mBAAAA,YAAY;EACpB,IAAI;EACJ,QAAQC,mBAAAA,YAAY;EACpB,UAAUC,mBAAAA,cAAc;EACxB,SAAS;GAAE;GAAK,gBAAgB;EAAkB;EAClD,MAAM,gBAAgB,IAAI,YAAY;CACxC,CAAC;AACH;AAEA,SAAgB,0BAA0B,QAAgB,UAA0B,CAAC,GAAG;CACtF,MAAM,kBAAkB,QAAQ,QAAQ,IAAI,UAAU,QAAQ,KAAK,UAAU,QAAQ,MAAM,MAAM;CACjG,MAAM,QAAQ,OAAO,MAAM,OAAO;CAClC,MAAM,SAAmB,CAAC;CAE1B,KAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,SAAS;EACzC,MAAM,MAAM,mBAAmB,MAAM,UAAU,EAAE;EACjD,IAAI,CAAC,KAAK;GACR,SAAS;GACT;EACF;EAEA,MAAM,QAAQ;EACd,SAAS;EACT,OAAO,QAAQ,MAAM,UAAU,CAAC,mBAAmB,MAAM,UAAU,EAAE,GACnE,SAAS;EAGX,IAAI,CAAC,yBAAyB,IAAI,GAAG,KAAM,QAAQ,4BAA4B,iBAC7E;EAGF,MAAM,QAAQ,MAAM,MAAM,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ;EAC3D,IAAI,OAAO;GACT,2BAA2B,KAAK,KAAK;GACrC,OAAO,KAAK,KAAK;EACnB;CACF;CAEA,IAAI,iBAAiB;EACnB,MAAM,oBAAoB,CAAC,yBAAyB;EACpD,IAAI,QAAQ,IAAI,QACd,kBAAkB,KAAK,SAAS,KAAK,UAAU,QAAQ,EAAE,GAAG;EAE9D,IAAI,QAAQ,KAAK,QACf,kBAAkB,KAAK,UAAU,KAAK,UAAU,QAAQ,GAAG,GAAG;EAEhE,IAAI,QAAQ,MAAM,QAChB,kBAAkB,KAAK,WAAW,KAAK,UAAU,QAAQ,IAAI,GAAG;EAElE,OAAO,KAAK,kBAAkB,KAAK,IAAI,CAAC;CAC1C;CAEA,IAAI,QAAQ,iBAAiB,OAAO,KAAK,QAAQ,aAAa,CAAC,CAAC,SAAS,GACvE,OAAO,KACL,CACE,cACA,GAAG,OAAO,QAAQ,QAAQ,aAAa,CAAC,CAAC,KACtC,CAAC,KAAK,WAAW,KAAK,KAAK,UAAU,GAAG,EAAE,IAAI,KAAK,UAAU,KAAK,GACrE,CACF,CAAC,CAAC,KAAK,IAAI,CACb;CAGF,IAAI,QAAQ,gBACV,OAAO,KAAK,eAAe,QAAQ,gBAAgB;CAGrD,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,IAAI;AAC1D;AAEA,IAAa,OAAb,cAA0BC,kBAAAA,WAAW;CACnC;CACA;CACA;CAEA,YAAY,UAAU,QAAQ,IAAI,GAAG;EACnC,MAAM;GAAE,WAAW;GAAY,MAAM;EAAO,CAAC;EAE7C,KAAK,UAAU;EACf,KAAK,WAAW,KAAK,aAAa,OAAO;EACzC,KAAK,iBAAiB,KAAK,UAAU,kBAAkB;CACzD;CAEA,aAAqB,KAAkC;EAOrD,KAAK,MAAM,YAAY;GALrB;IAAE,UAAU;IAAkB,gBAAgB;GAAO;GACrD;IAAE,UAAU;IAAqB,gBAAgB;GAAM;GACvD;IAAE,UAAU;IAAa,gBAAgB;GAAO;GAChD;IAAE,UAAU;IAAY,gBAAgB;GAAM;EAEjB,GAAG;GAChC,MAAM,eAAe,KAAA,QAAK,KAAK,KAAK,SAAS,QAAQ;GACrD,IAAI,GAAA,QAAG,WAAW,YAAY,GAC5B,OAAO;IAAE,GAAG;IAAU,MAAM;GAAa;EAE7C;EACA,MAAM,YAAY,KAAA,QAAK,QAAQ,KAAK,IAAI;EACxC,IAAI,cAAc,KAChB,OAAO,KAAK,aAAa,SAAS;EAEpC,OAAO;CACT;CAEA,2BAAkC,EAAE,SAAS,WAAiD;EAC5F,OAAO,2BAA2B,QAAQ,GAAG,QAAQ;CACvD;CAEA,MAAa,KAAK,EAAE,KAAK,aAAa,iBAA8E;EAClH,MAAM,WAAW,yBAAyB;GACxC,QAAQ,KAAK;GACb,MAAM;EACR,CAAC;EAED,IAAI,UAAU;EACd,IAAI,kBAAkB,sBAAsB;EAC5C,IAAI,KAAK,mBAAmB,QAG1B,kBAAkB,SAAS,YAAY,GAAG,cAAc;EAE1D,IAAI,KAAK,mBAAmB,OAAO;GAEjC,UAAU;GAEV,kBAAkB,iBAAiB;EACrC;EAEA,OAAO,SAAS;GACd,KAAK,GAAG,KAAK,eAAe,GAAG,QAAQ,GAAG;GAC1C,MAAM,CAAC;GACP,KAAK,EACH,MAAM,QAAQ,IAAI,KACpB;EACF,CAAC;CACH;CAEA,sBAA8B,KAA4B;EACxD,MAAM,oBAAoB,KAAA,QAAK,KAAK,KAAK,qBAAqB;EAC9D,IAAI,GAAA,QAAG,WAAW,iBAAiB,GACjC,OAAO;EAGT,MAAM,YAAY,KAAA,QAAK,QAAQ,KAAK,IAAI;EACxC,IAAI,cAAc,KAChB,OAAO,KAAK,sBAAsB,SAAS;EAG7C,OAAO;CACT;CAEA,MAAc,gBAAgB,KAAa,UAA0B,CAAC,GAAG;EACvE,MAAM,0BAA0B,KAAK,sBAAsB,KAAK,OAAO;EACvE,MAAM,sBAAsB,0BACxB,MAAMC,YAAAA,QAAW,SAAS,yBAAyB,OAAO,IAC1D;EAEJ,MAAMA,YAAAA,QAAW,UACf,KAAA,QAAK,KAAK,KAAK,qBAAqB,GACpC,0BAA0B,qBAAqB,OAAO,GACtD,OACF;CACF;CAEA,MAAc,gBAAgB,KAAa,SAA8B;EACvE,MAAM,aAAa,KAAA,QAAK,KAAK,KAAK,aAAa;EAC/C,MAAM,SAAS,EACb,wBAAwB;GACtB,KAAK,QAAQ,OAAO,CAAC;GACrB,IAAI,QAAQ,MAAM,CAAC;GACnB,MAAM,QAAQ,QAAQ,CAAC;EACzB,EACF;EAEA,MAAMA,YAAAA,QAAW,UACf,YACA,4BAA4B,OAAO,QAAQ,OAAO,sBAAsB,CAAC,CACtE,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,IAAI,KAAK,UAAU,KAAK,GAAG,CAAC,CAC3D,KAAK,IAAI,GACd;CACF;CAEA,WAAmB,SAAwC;EACzD,MAAM,OAAiB,CAAC;EACxB,IAAI,QAAQ,KAAK,KAAK,KAAK,SAAS,QAAQ,IAAI,KAAK,GAAG,GAAG;EAC3D,IAAI,QAAQ,IAAI,KAAK,KAAK,QAAQ,QAAQ,GAAG,KAAK,GAAG,GAAG;EACxD,IAAI,QAAQ,MAAM,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK,GAAG,GAAG;EAC9D,OAAO;CACT;;;;;CAMA,yBACE,IACA,MACA,EAAE,cAAc,UAAqC,CAAC,GAC9C;EACR,MAAM,MAAM,SAAS,YAAY,YAAY;EAE7C,QAAQ,IAAR;GACE,KAAK,OACH,OAAO,GAAG,IAAI;GAChB,KAAK,QACH,OAAO,SAAS,aAAa,CAAC,cAAc,GAAG,IAAI,mBAAmB;GACxE,KAAK,QACH,OAAO,SAAS,YAAY,GAAG,IAAI,0CAA0C,GAAG,IAAI;GACtF,SACE,OAAO;EACX;CACF;CAEA,MAAa,QAAQ,EACnB,MAAM,KAAK,SACX,cACA,eACA,mBAME,CAAC,GAAG;EACN,MAAM,KAAK,KAAK;EAChB,IAAI,cAAc;EAClB,IAAI,KAAK,UAAU;GACjB,MAAM,cAAc,KAAA,QAAK,KAAK,KAAK,KAAK,SAAS,QAAQ;GACzD,IAAI,KAAA,QAAK,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAA,QAAK,QAAQ,WAAW,GAC/D,MAAMA,YAAAA,QAAW,SAAS,KAAK,SAAS,MAAM,WAAW;GAG3D,IAAI,OAAO,QAAQ;IACjB,MAAM,mBAAmB,MAAMA,YAAAA,QAAW,SAAS,aAAa,OAAO;IACvE,cAAc,2BAA2B,KAAK,gBAAgB;GAChE;EACF;EAEA,MAAM,iBAAiB,KAAK,yBAAyB,IAAI,WAAW,EAAE,YAAY,CAAC;EACnF,IAAI,OAAiB,CAAC;EAEtB,QAAQ,IAAR;GACE,KAAK;IACH,MAAM,KAAK,gBAAgB,KAAK;KAAE,GAAG;KAAc;KAAe;IAAe,CAAC;IAClF;GACF,KAAK;IAEH,OAAA,GAAA,aAAA,WAAA,CAAiB,KAAA,QAAK,KAAK,KAAK,WAAW,CAAC;IAC5C,IAAI,cACF,MAAM,KAAK,gBAAgB,KAAK,YAAY;IAE9C;GACF,KAAK;IACH,IAAI,cACF,OAAO,KAAK,WAAW,YAAY;IAErC;GACF;EAEF;EAEA,MAAM,WAAW,yBAAyB;GACxC,QAAQ,KAAK;GACb,MAAM;EACR,CAAC;EAED,IAAI;GACF,OAAO,MAAM,SAAS;IACpB,KAAK,GAAG,GAAG,GAAG;IACd;IACA,KAAK,QAAQ;GACf,CAAC;EACH,SAAS,OAAO;GACd,IAAI,OAAO,QAAQ,MAAM;GAMzB,MAAM,kBAAkB,4BAHtB,SAAS,OAAO,UAAU,WACtB,GAAG,YAAY,QAAQ,OAAO,MAAM,MAAM,IAAI,GAAG,IAAI,YAAY,QAAQ,OAAO,MAAM,MAAM,IAAI,OAChG,EAC2D;GACjE,IAAI,gBAAgB,WAAW,GAAG,MAAM;GAExC,MAAM,IAAIJ,mBAAAA,YACR;IACE,IAAI;IACJ,QAAQC,mBAAAA,YAAY;IACpB,UAAUC,mBAAAA,cAAc;IACxB,SAAS,EAAE,cAAc,gBAAgB,KAAK,IAAI,EAAE;IACpD,MAAM,mCAAmC,gBAAgB,KAAK,IAAI,EAAE;GACtE,GACA,KACF;EACF;CACF;CAEA,MAAa,gBAAgB,UAAoB;EAC/C,MAAM,KAAK,KAAK;EAChB,MAAM,iBAAiB,KAAK,yBAAyB,IAAI,KAAK;EAE9D,MAAM,MAA8B,EAClC,MAAM,QAAQ,IAAI,KACpB;EAEA,IAAI,QAAQ,IAAI,qBACd,IAAI,sBAAsB,QAAQ,IAAI;EAQxC,OALiB,yBAAyB;GACxC,QAAQ,KAAK;GACb,MAAM;EACR,CAEc,CAAC,CAAC;GACd,KAAK,GAAG,GAAG,GAAG;GACd,MAAM;GACN;EACF,CAAC;CACH;CAEA,MAAa,kBAAkB,cAAyC;EACtE,IAAI;GACF,MAAM,kBAAkB,KAAA,QAAK,KAAK,KAAK,SAAS,cAAc;GAE9D,IAAI;IACF,MAAME,YAAAA,QAAW,OAAO,eAAe;GACzC,QAAQ;IACN,OAAO;GACT;GAEA,MAAM,cAAc,OAAA,GAAA,aAAA,SAAA,CAAe,eAAe;GAClD,KAAK,MAAM,cAAc,cACvB,IAAI,CAAC,YAAY,gBAAgB,CAAC,YAAY,aAAa,aACzD,OAAO,kBAAkB,WAAW,gCAAgC,KAAK,eAAe,WAAW,WAAW;GAIlH,OAAO;EACT,SAAS,KAAK;GACZ,QAAQ,MAAM,GAAG;GACjB,OAAO;EACT;CACF;CAEA,MAAa,iBAAiB;EAC5B,IAAI;GAGF,QAAO,OAAA,GAAA,aAAA,SAAA,CAFiB,KAAA,QAAK,KAAK,KAAK,SAAS,cACP,CAAC,EAAA,CAC/B;EACb,SAAS,KAAK;GACZ,MAAM;EACR;CACF;CAEA,MAAa,oBAAoB;EAE/B,MAAM,aAAA,GAAA,KAAA,QAAA,EAAA,GAAA,IAAA,cAAA,CAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,IAA6B,CAAC;EAIpC,QAAO,OAAA,GAAA,aAAA,SAAA,CAHa,KAAA,QAAK,KAAK,WAAW,MAAM,MAAM,cAEX,CAAC,EAAA,CAC5B;CACjB;CAEA,MAAa,wBAAwB,SAAiC;EACpE,MAAM,cAAc,OAAA,GAAA,aAAA,SAAA,CAAe,cAAc;EACjD,YAAY,UAAU;GACpB,GAAG,YAAY;GACf,GAAG;EACL;EACA,OAAA,GAAA,aAAA,UAAA,CAAgB,gBAAgB,aAAa,EAAE,QAAQ,EAAE,CAAC;CAC5D;AACF;AAEA,IAAa,cAAb,cAAiC,KAAK,CAAC;;;ACzdvC,IAAsB,aAAtB,MAAiC,CAGjC;AAEA,IAAa,iBAAb,cAAoC,WAAW;CAC7C;CAEA,YAAY,UAAkB;EAC5B,MAAM;EACN,KAAK,WAAW;CAClB;CAEA,SAAiB,UAAmC;EAClD,OAAO,IAAI,SAAS,SAAS,WAAW;GACtC,GAAG,SAAS,UAAU,SAAS,KAAmC,SAAiB;IACjF,IAAI,KAAK,OAAO,GAAG;SACd,QAAQ,IAAI;GACnB,CAAC;EACH,CAAC;CACH;CAEA,UAAkB,EAAE,UAAU,QAA2D;EACvF,OAAO,IAAI,SAAS,SAAS,WAAW;GACtC,GAAG,UAAU,UAAU,MAAM,SAAS,QAAsC;IAC1E,IAAI,KAAK,OAAO,GAAG;SACd,QAAQ;GACf,CAAC;EACH,CAAC;CACH;CAEA,MAAc,cAAc,EAC1B,KACA,OACA,WAAW,KAAK,UAChB,QAMkB;EAClB,MAAM,QAAQ,IAAI,OAAO,IAAI,IAAI,OAAO,GAAG;EAC3C,IAAI,KAAK,MAAM,KAAK,GAIlB,OAAO,KAAK,QAAQ,aAAa,GAAG,IAAI,GAAG,OAAO;OAElD,QAAQ,KAAK,IAAI,GAAG;EAEtB,MAAM,KAAK,UAAU;GAAE;GAAU;EAAK,CAAC;EACvC,QAAQ,KAAK,GAAG,IAAI,UAAU,MAAM,cAAc;EAClD,OAAO;CACT;CAEA,MAAM,YAAY,KAAqC;EACrD,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,SAAS,KAAK,QAAQ;GAC9C,MAAM,QAAQ,IAAI,OAAO,IAAI,IAAI,SAAS,GAAG;GAE7C,OADc,KAAK,MAAM,KACd,CAAC,GAAG,MAAM;EACvB,SAAS,KAAK;GACZ,QAAQ,MAAM,4BAA4B,KAAK;GAC/C,OAAO;EACT;CACF;CAEA,MAAM,YAAY,KAAa,OAA8B;EAC3D,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,SAAS,KAAK,QAAQ;GAC9C,MAAM,KAAK,cAAc;IAAE;IAAK;IAAO;GAAK,CAAC;EAC/C,SAAS,KAAK;GACZ,QAAQ,MAAM,4BAA4B,KAAK;EACjD;CACF;AACF;;;ACtEA,IAAa,cAAb,MAAyB;;;;;;;;CAQvB,MAAa,gBAAgB,WAAmB,gBAAwB,iBAA2B;EACjG,MAAM,cAAA,GAAA,IAAA,cAAA,CAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,IAA0C;EAChD,MAAM,YAAY,KAAA,QAAK,QAAQ,UAAU;EACzC,MAAM,WAAW,KAAA,QAAK,QAAQ,WAAW,MAAM,iBAAiB,SAAS;EACzE,MAAM,aAAa,GAAA,QAAG,aAAa,UAAU,MAAM;EAEnD,IAAI,GAAA,QAAG,WAAW,cAAc,KAAK,CAAC,iBAAiB;GACrD,QAAQ,KAAK,GAAG,eAAe,gBAAgB;GAC/C,OAAO;EACT;EAEA,MAAMC,aAAAA,QAAQ,WAAW,gBAAgB,UAAU;EAEnD,OAAO;CACT;CAEA,MAAa,aAAa,EAAE,SAA4B;EACtD,MAAM,UAAU,KAAA,QAAK,KAAK,QAAQ,IAAI,GAAG,kBAAkB;EAE3D,MAAMA,aAAAA,QAAQ,WAAW,OAAO;EAGhC,MAAM,IADqB,eAAe,OACvB,CAAC,CAAC,YAAY,UAAU,KAAK;CAClD;CAEA,qBAA4B,OAAyB;EACnD,KAAK,MAAM,KAAK,OACd,IAAI,GAAA,QAAG,WAAW,CAAC,GACjB,OAAO;EAIX,MAAM,IAAI,MAAM,yDAAyD,MAAM,KAAK,IAAI,CAAC;CAC3F;;;;;;CAOA,iBAAwB,OAA2B;EACjD,OAAO,MAAM,QAAO,SAAQ,GAAA,QAAG,WAAW,IAAI,CAAC;CACjD;;;;;;CAOA,gCAAuC,OAAqC;EAC1E,KAAK,MAAM,KAAK,OACd,IAAI,GAAA,QAAG,WAAW,CAAC,GACjB,OAAO;CAKb;CAEA,oBAA2B,EACzB,UACA,gBAIC;EACD,IAAI,cAAc,GAAA,QAAG,aAAa,UAAU,MAAM;EAClD,aAAa,SAAS,EAAE,QAAQ,cAAc;GAC5C,cAAc,YAAY,WAAW,QAAQ,OAAO;EACtD,CAAC;EAED,GAAA,QAAG,cAAc,UAAU,WAAW;CACxC;AACF"}
@@ -1,10 +1,10 @@
1
- import { spawn } from "child_process";
2
1
  import * as fs$1 from "fs";
3
2
  import fs from "fs";
4
3
  import fsPromises from "fs/promises";
5
4
  import path, { dirname } from "path";
6
5
  import { ErrorCategory, ErrorDomain, MastraError } from "@mastra/core/error";
7
6
  import fsExtra, { ensureFile, readJSON, writeJSON } from "fs-extra/esm";
7
+ import { spawn } from "child_process";
8
8
  import { fileURLToPath } from "url";
9
9
  import { MastraBase } from "@mastra/core/base";
10
10
  import { parse } from "yaml";
@@ -173,34 +173,45 @@ function copyPnpmWorkspaceSettings(source, options = {}) {
173
173
  var Deps = class extends MastraBase {
174
174
  packageManager;
175
175
  rootDir;
176
+ lockFile;
176
177
  constructor(rootDir = process.cwd()) {
177
178
  super({
178
179
  component: "DEPLOYER",
179
180
  name: "DEPS"
180
181
  });
181
182
  this.rootDir = rootDir;
182
- this.packageManager = this.getPackageManager();
183
+ this.lockFile = this.findLockFile(rootDir);
184
+ this.packageManager = this.lockFile?.packageManager ?? "npm";
183
185
  }
184
186
  findLockFile(dir) {
185
- for (const file of [
186
- "pnpm-lock.yaml",
187
- "package-lock.json",
188
- "yarn.lock",
189
- "bun.lock"
190
- ]) if (fs.existsSync(path.join(dir, file))) return file;
187
+ for (const lockFile of [
188
+ {
189
+ filename: "pnpm-lock.yaml",
190
+ packageManager: "pnpm"
191
+ },
192
+ {
193
+ filename: "package-lock.json",
194
+ packageManager: "npm"
195
+ },
196
+ {
197
+ filename: "yarn.lock",
198
+ packageManager: "yarn"
199
+ },
200
+ {
201
+ filename: "bun.lock",
202
+ packageManager: "bun"
203
+ }
204
+ ]) {
205
+ const lockFilePath = path.join(dir, lockFile.filename);
206
+ if (fs.existsSync(lockFilePath)) return {
207
+ ...lockFile,
208
+ path: lockFilePath
209
+ };
210
+ }
191
211
  const parentDir = path.resolve(dir, "..");
192
212
  if (parentDir !== dir) return this.findLockFile(parentDir);
193
213
  return null;
194
214
  }
195
- getPackageManager() {
196
- switch (this.findLockFile(this.rootDir)) {
197
- case "pnpm-lock.yaml": return "pnpm";
198
- case "package-lock.json": return "npm";
199
- case "yarn.lock": return "yarn";
200
- case "bun.lock": return "bun";
201
- default: return "npm";
202
- }
203
- }
204
215
  getWorkspaceDependencyPath({ pkgName, version }) {
205
216
  return `file:./workspace-module/${pkgName}-${version}.tgz`;
206
217
  }
@@ -254,19 +265,27 @@ var Deps = class extends MastraBase {
254
265
  * Depending on whether we want to install or add a package, this function returns the appropriate commands.
255
266
  * All package managers support both commands (e.g. npm install has an alias on "add")
256
267
  */
257
- getPackageManagerCommand(pm, type) {
268
+ getPackageManagerCommand(pm, type, { yarnClassic = false } = {}) {
258
269
  const cmd = type === "install" ? "install" : "add";
259
270
  switch (pm) {
260
271
  case "npm": return `${cmd} --audit=false --fund=false --loglevel=error --progress=false --update-notifier=false`;
261
- case "yarn": return `${cmd}`;
262
- case "pnpm": return cmd === "install" ? `${cmd} --loglevel=error` : `${cmd} --loglevel=error`;
263
- case "bun": return cmd;
272
+ case "yarn": return type === "install" && !yarnClassic ? `${cmd} --no-immutable` : cmd;
273
+ case "pnpm": return type === "install" ? `${cmd} --no-frozen-lockfile --loglevel=error` : `${cmd} --loglevel=error`;
264
274
  default: return cmd;
265
275
  }
266
276
  }
267
277
  async install({ dir = this.rootDir, architecture, pnpmOverrides, pnpmNodeLinker } = {}) {
268
278
  const pm = this.packageManager;
269
- const installCommand = this.getPackageManagerCommand(pm, "install");
279
+ let yarnClassic = false;
280
+ if (this.lockFile) {
281
+ const destination = path.join(dir, this.lockFile.filename);
282
+ if (path.resolve(this.lockFile.path) !== path.resolve(destination)) await fsPromises.copyFile(this.lockFile.path, destination);
283
+ if (pm === "yarn") {
284
+ const lockfileContents = await fsPromises.readFile(destination, "utf-8");
285
+ yarnClassic = /^# yarn lockfile v1\r?$/m.test(lockfileContents);
286
+ }
287
+ }
288
+ const installCommand = this.getPackageManagerCommand(pm, "install", { yarnClassic });
270
289
  let args = [];
271
290
  switch (pm) {
272
291
  case "pnpm":
@@ -476,4 +495,4 @@ var FileService = class {
476
495
  //#endregion
477
496
  export { createChildProcessLogger as a, DepsService as i, EnvService as n, createPinoStream as o, Deps as r, FileService as t };
478
497
 
479
- //# sourceMappingURL=services-B9KRKBT-.js.map
498
+ //# sourceMappingURL=services-Lm6PRS4D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services-Lm6PRS4D.js","names":[],"sources":["../src/deploy/log.ts","../src/services/deps.ts","../src/services/env.ts","../src/services/fs.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport { Writable } from 'node:stream';\nimport type { IMastraLogger } from '@mastra/core/logger';\n\nexport const createPinoStream = (logger: IMastraLogger) => {\n return new Writable({\n write(chunk, _encoding, callback) {\n // Convert Buffer/string to string and trim whitespace\n const line = chunk.toString().trim();\n\n if (line) {\n console.info(line);\n // Log each line through Pino\n logger.info(line);\n }\n\n callback();\n },\n });\n};\n\n/**\n * Args are joined into a shell command (`shell: true` is required for package\n * manager shims on Windows), so only allow characters that appear in package\n * specifiers and CLI flags — never shell metacharacters (CodeQL\n * js/shell-command-constructed-from-input).\n */\nconst SAFE_SHELL_ARG = /^[\\w@%+=:,./^~-]*$/;\n\nexport function createChildProcessLogger({ logger, root }: { logger: IMastraLogger; root: string }) {\n const pinoStream = createPinoStream(logger);\n return async ({ cmd, args, env }: { cmd: string; args: string[]; env: Record<string, string> }) => {\n try {\n for (const arg of args) {\n if (!SAFE_SHELL_ARG.test(arg)) {\n throw new Error(`Refusing to pass unsafe argument to shell command: ${JSON.stringify(arg)}`);\n }\n }\n const subprocess = spawn(cmd, args, {\n cwd: root,\n shell: true,\n env,\n // No stdin for the child process — it doesn't need interactive input\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n let stdout = '';\n let stderr = '';\n subprocess.stdout?.on('data', chunk => {\n stdout += chunk.toString();\n });\n subprocess.stderr?.on('data', chunk => {\n stderr += chunk.toString();\n });\n\n // Pipe stdout and stderr through the logging stream.\n // { end: false } prevents the first stream to close from ending pinoStream\n // while the other may still be writing.\n subprocess.stdout?.pipe(pinoStream, { end: false });\n subprocess.stderr?.pipe(pinoStream, { end: false });\n\n // Wait for the process to complete\n return new Promise((resolve, reject) => {\n subprocess.on('close', code => {\n pinoStream.end();\n if (code === 0) {\n resolve({ success: true, stdout, stderr });\n } else {\n reject(Object.assign(new Error(`Process exited with code ${code}`), { stdout, stderr }));\n }\n });\n\n subprocess.on('error', error => {\n pinoStream.end();\n logger.error('Process failed', { error });\n reject(error);\n });\n });\n } catch (error) {\n console.error(error);\n logger.error('Process failed', { error });\n pinoStream.end();\n return { success: false, error };\n }\n };\n}\n","import fs from 'node:fs';\nimport fsPromises from 'node:fs/promises';\nimport path, { dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { MastraBase } from '@mastra/core/base';\nimport { ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';\nimport { readJSON, writeJSON, ensureFile } from 'fs-extra/esm';\nimport type { PackageJson } from 'type-fest';\nimport { parse } from 'yaml';\n\nimport { createChildProcessLogger } from '../deploy/log.js';\n\ntype PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';\n\ninterface LockFileInfo {\n path: string;\n filename: string;\n packageManager: PackageManager;\n}\n\ninterface ArchitectureOptions {\n os?: string[];\n cpu?: string[];\n libc?: string[];\n}\n\ninterface InstallOptions extends ArchitectureOptions {\n pnpmOverrides?: Record<string, string>;\n pnpmNodeLinker?: 'hoisted';\n}\n\nconst PNPM_CONFIG_KEYS_TO_COPY = new Set([\n 'allowBuilds',\n 'onlyBuiltDependencies',\n 'ignoredBuiltDependencies',\n 'neverBuiltDependencies',\n 'minimumReleaseAge',\n 'minimumReleaseAgeExclude',\n 'trustPolicy',\n 'trustPolicyExclude',\n 'trustPolicyIgnoreAfter',\n 'supportedArchitectures',\n]);\n\nfunction getTopLevelYamlKey(line: string) {\n const match = /^(?!\\s)([\\w-]+):/.exec(line);\n return match?.[1];\n}\n\nconst PNPM_IGNORED_BUILDS_ERROR = 'ERR_PNPM_IGNORED_BUILDS';\n\nexport function getPnpmIgnoredBuildPackages(output: string): string[] {\n const match = new RegExp(`\\\\[?${PNPM_IGNORED_BUILDS_ERROR}\\\\]?[^\\\\n]*Ignored build scripts:\\\\s*([^\\\\n]+)`).exec(\n output,\n );\n if (!match?.[1]) return [];\n\n return match[1]\n .split(',')\n .map(specifier => specifier.trim())\n .filter(Boolean)\n .map(specifier => {\n if (specifier.startsWith('@')) {\n const versionSeparator = specifier.indexOf('@', 1);\n return versionSeparator === -1 ? specifier : specifier.slice(0, versionSeparator);\n }\n return specifier.split('@', 1)[0]!;\n });\n}\n\nfunction validatePnpmBuildApprovals(key: string, block: string): void {\n if (key !== 'allowBuilds' && key !== 'onlyBuiltDependencies') return;\n\n let value: unknown;\n try {\n value = (parse(block) as Record<string, unknown>)[key];\n } catch (error) {\n throw new MastraError(\n {\n id: 'DEPLOYER_INVALID_PNPM_BUILD_APPROVAL_CONFIG',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.USER,\n details: { key },\n text: `Invalid pnpm ${key} configuration`,\n },\n error,\n );\n }\n\n const invalidEntries =\n key === 'allowBuilds'\n ? value && typeof value === 'object' && !Array.isArray(value)\n ? Object.entries(value).filter(\n ([dependency, approval]) => dependency.trim().length === 0 || typeof approval !== 'boolean',\n )\n : [[key, value]]\n : Array.isArray(value) &&\n value.every(dependency => typeof dependency === 'string' && dependency.trim().length > 0)\n ? []\n : [[key, value]];\n\n if (invalidEntries.length === 0) return;\n const invalidEntryNames = invalidEntries.map(([entry]) => entry).join(', ');\n\n throw new MastraError({\n id: 'DEPLOYER_INVALID_PNPM_BUILD_APPROVAL_CONFIG',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.USER,\n details: { key, invalidEntries: invalidEntryNames },\n text: `Invalid pnpm ${key} entries: ${invalidEntryNames}`,\n });\n}\n\nexport function copyPnpmWorkspaceSettings(source: string, options: InstallOptions = {}) {\n const hasArchitecture = Boolean(options.os?.length || options.cpu?.length || options.libc?.length);\n const lines = source.split(/\\r?\\n/);\n const blocks: string[] = [];\n\n for (let index = 0; index < lines.length;) {\n const key = getTopLevelYamlKey(lines[index] ?? '');\n if (!key) {\n index += 1;\n continue;\n }\n\n const start = index;\n index += 1;\n while (index < lines.length && !getTopLevelYamlKey(lines[index] ?? '')) {\n index += 1;\n }\n\n if (!PNPM_CONFIG_KEYS_TO_COPY.has(key) || (key === 'supportedArchitectures' && hasArchitecture)) {\n continue;\n }\n\n const block = lines.slice(start, index).join('\\n').trimEnd();\n if (block) {\n validatePnpmBuildApprovals(key, block);\n blocks.push(block);\n }\n }\n\n if (hasArchitecture) {\n const architectureBlock = ['supportedArchitectures:'];\n if (options.os?.length) {\n architectureBlock.push(` os: ${JSON.stringify(options.os)}`);\n }\n if (options.cpu?.length) {\n architectureBlock.push(` cpu: ${JSON.stringify(options.cpu)}`);\n }\n if (options.libc?.length) {\n architectureBlock.push(` libc: ${JSON.stringify(options.libc)}`);\n }\n blocks.push(architectureBlock.join('\\n'));\n }\n\n if (options.pnpmOverrides && Object.keys(options.pnpmOverrides).length > 0) {\n blocks.push(\n [\n 'overrides:',\n ...Object.entries(options.pnpmOverrides).map(\n ([key, value]) => ` ${JSON.stringify(key)}: ${JSON.stringify(value)}`,\n ),\n ].join('\\n'),\n );\n }\n\n if (options.pnpmNodeLinker) {\n blocks.push(`nodeLinker: ${options.pnpmNodeLinker}`);\n }\n\n return [\"packages:\\n - '.'\", ...blocks].join('\\n\\n') + '\\n';\n}\n\nexport class Deps extends MastraBase {\n private packageManager: PackageManager;\n private rootDir: string;\n private lockFile: LockFileInfo | null;\n\n constructor(rootDir = process.cwd()) {\n super({ component: 'DEPLOYER', name: 'DEPS' });\n\n this.rootDir = rootDir;\n this.lockFile = this.findLockFile(rootDir);\n this.packageManager = this.lockFile?.packageManager ?? 'npm';\n }\n\n private findLockFile(dir: string): LockFileInfo | null {\n const lockFiles: Array<{ filename: string; packageManager: PackageManager }> = [\n { filename: 'pnpm-lock.yaml', packageManager: 'pnpm' },\n { filename: 'package-lock.json', packageManager: 'npm' },\n { filename: 'yarn.lock', packageManager: 'yarn' },\n { filename: 'bun.lock', packageManager: 'bun' },\n ];\n for (const lockFile of lockFiles) {\n const lockFilePath = path.join(dir, lockFile.filename);\n if (fs.existsSync(lockFilePath)) {\n return { ...lockFile, path: lockFilePath };\n }\n }\n const parentDir = path.resolve(dir, '..');\n if (parentDir !== dir) {\n return this.findLockFile(parentDir);\n }\n return null;\n }\n\n public getWorkspaceDependencyPath({ pkgName, version }: { pkgName: string; version: string }) {\n return `file:./workspace-module/${pkgName}-${version}.tgz`;\n }\n\n public async pack({ dir, destination, sanitizedName }: { dir: string; destination: string; sanitizedName: string }) {\n const cpLogger = createChildProcessLogger({\n logger: this.logger,\n root: dir,\n });\n\n let packCmd = 'pack';\n let destinationFlag = `--pack-destination ${destination}`;\n if (this.packageManager === 'yarn') {\n // %s includes an '@' at the start of packages names with an '@'\n // so we need to use our sanitizedName instead.\n destinationFlag = `--out ${destination}/${sanitizedName}-%v.tgz`;\n }\n if (this.packageManager === 'bun') {\n // bun uses `pm pack` instead of `pack`\n packCmd = 'pm pack';\n // bun uses --destination instead of --pack-destination\n destinationFlag = `--destination ${destination}`;\n }\n\n return cpLogger({\n cmd: `${this.packageManager} ${packCmd} ${destinationFlag}`,\n args: [],\n env: {\n PATH: process.env.PATH!,\n },\n });\n }\n\n private findPnpmWorkspaceFile(dir: string): string | null {\n const workspaceYamlPath = path.join(dir, 'pnpm-workspace.yaml');\n if (fs.existsSync(workspaceYamlPath)) {\n return workspaceYamlPath;\n }\n\n const parentDir = path.resolve(dir, '..');\n if (parentDir !== dir) {\n return this.findPnpmWorkspaceFile(parentDir);\n }\n\n return null;\n }\n\n private async writePnpmConfig(dir: string, options: InstallOptions = {}) {\n const sourceWorkspaceYamlPath = this.findPnpmWorkspaceFile(this.rootDir);\n const sourceWorkspaceYaml = sourceWorkspaceYamlPath\n ? await fsPromises.readFile(sourceWorkspaceYamlPath, 'utf-8')\n : '';\n\n await fsPromises.writeFile(\n path.join(dir, 'pnpm-workspace.yaml'),\n copyPnpmWorkspaceSettings(sourceWorkspaceYaml, options),\n 'utf-8',\n );\n }\n\n private async writeYarnConfig(dir: string, options: ArchitectureOptions) {\n const yarnrcPath = path.join(dir, '.yarnrc.yml');\n const config = {\n supportedArchitectures: {\n cpu: options.cpu || [],\n os: options.os || [],\n libc: options.libc || [],\n },\n };\n\n await fsPromises.writeFile(\n yarnrcPath,\n `supportedArchitectures:\\n${Object.entries(config.supportedArchitectures)\n .map(([key, value]) => ` ${key}: ${JSON.stringify(value)}`)\n .join('\\n')}`,\n );\n }\n\n private getNpmArgs(options: ArchitectureOptions): string[] {\n const args: string[] = [];\n if (options.cpu) args.push(`--cpu=${options.cpu.join(',')}`);\n if (options.os) args.push(`--os=${options.os.join(',')}`);\n if (options.libc) args.push(`--libc=${options.libc.join(',')}`);\n return args;\n }\n\n /**\n * Depending on whether we want to install or add a package, this function returns the appropriate commands.\n * All package managers support both commands (e.g. npm install has an alias on \"add\")\n */\n private getPackageManagerCommand(\n pm: PackageManager,\n type: 'install' | 'add',\n { yarnClassic = false }: { yarnClassic?: boolean } = {},\n ): string {\n const cmd = type === 'install' ? 'install' : 'add';\n\n switch (pm) {\n case 'npm':\n return `${cmd} --audit=false --fund=false --loglevel=error --progress=false --update-notifier=false`;\n case 'yarn':\n return type === 'install' && !yarnClassic ? `${cmd} --no-immutable` : cmd;\n case 'pnpm':\n return type === 'install' ? `${cmd} --no-frozen-lockfile --loglevel=error` : `${cmd} --loglevel=error`;\n default:\n return cmd;\n }\n }\n\n public async install({\n dir = this.rootDir,\n architecture,\n pnpmOverrides,\n pnpmNodeLinker,\n }: {\n dir?: string;\n architecture?: ArchitectureOptions;\n pnpmOverrides?: Record<string, string>;\n pnpmNodeLinker?: 'hoisted';\n } = {}) {\n const pm = this.packageManager;\n let yarnClassic = false;\n if (this.lockFile) {\n const destination = path.join(dir, this.lockFile.filename);\n if (path.resolve(this.lockFile.path) !== path.resolve(destination)) {\n await fsPromises.copyFile(this.lockFile.path, destination);\n }\n\n if (pm === 'yarn') {\n const lockfileContents = await fsPromises.readFile(destination, 'utf-8');\n yarnClassic = /^# yarn lockfile v1\\r?$/m.test(lockfileContents);\n }\n }\n\n const installCommand = this.getPackageManagerCommand(pm, 'install', { yarnClassic });\n let args: string[] = [];\n\n switch (pm) {\n case 'pnpm':\n await this.writePnpmConfig(dir, { ...architecture, pnpmOverrides, pnpmNodeLinker });\n break;\n case 'yarn':\n // similar to --ignore-workspace but for yarn\n await ensureFile(path.join(dir, 'yarn.lock'));\n if (architecture) {\n await this.writeYarnConfig(dir, architecture);\n }\n break;\n case 'npm':\n if (architecture) {\n args = this.getNpmArgs(architecture);\n }\n break;\n default:\n // Do nothing\n }\n\n const cpLogger = createChildProcessLogger({\n logger: this.logger,\n root: dir,\n });\n\n try {\n return await cpLogger({\n cmd: `${pm} ${installCommand}`,\n args,\n env: process.env as Record<string, string>,\n });\n } catch (error) {\n if (pm !== 'pnpm') throw error;\n\n const processOutput =\n error && typeof error === 'object'\n ? `${'stdout' in error ? String(error.stdout) : ''}\\n${'stderr' in error ? String(error.stderr) : ''}`\n : '';\n const ignoredPackages = getPnpmIgnoredBuildPackages(processOutput);\n if (ignoredPackages.length === 0) throw error;\n\n throw new MastraError(\n {\n id: 'DEPLOYER_PNPM_IGNORED_BUILDS',\n domain: ErrorDomain.DEPLOYER,\n category: ErrorCategory.USER,\n details: { packageNames: ignoredPackages.join(', ') },\n text: `pnpm blocked build scripts for: ${ignoredPackages.join(', ')}. Add these packages to allowBuilds in pnpm-workspace.yaml and retry the build.`,\n },\n error,\n );\n }\n }\n\n public async installPackages(packages: string[]) {\n const pm = this.packageManager;\n const installCommand = this.getPackageManagerCommand(pm, 'add');\n\n const env: Record<string, string> = {\n PATH: process.env.PATH!,\n };\n\n if (process.env.npm_config_registry) {\n env.npm_config_registry = process.env.npm_config_registry;\n }\n\n const cpLogger = createChildProcessLogger({\n logger: this.logger,\n root: '',\n });\n\n return cpLogger({\n cmd: `${pm} ${installCommand}`,\n args: packages,\n env,\n });\n }\n\n public async checkDependencies(dependencies: string[]): Promise<string> {\n try {\n const packageJsonPath = path.join(this.rootDir, 'package.json');\n\n try {\n await fsPromises.access(packageJsonPath);\n } catch {\n return 'No package.json file found in the current directory';\n }\n\n const packageJson = await readJSON(packageJsonPath);\n for (const dependency of dependencies) {\n if (!packageJson.dependencies || !packageJson.dependencies[dependency]) {\n return `Please install ${dependency} before running this command (${this.packageManager} install ${dependency})`;\n }\n }\n\n return 'ok';\n } catch (err) {\n console.error(err);\n return 'Could not check dependencies';\n }\n }\n\n public async getProjectName() {\n try {\n const packageJsonPath = path.join(this.rootDir, 'package.json');\n const pkg = await readJSON(packageJsonPath);\n return pkg.name;\n } catch (err) {\n throw err;\n }\n }\n\n public async getPackageVersion() {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const pkgJsonPath = path.join(__dirname, '..', '..', 'package.json');\n\n const content = (await readJSON(pkgJsonPath)) as PackageJson;\n return content.version;\n }\n\n public async addScriptsToPackageJson(scripts: Record<string, string>) {\n const packageJson = await readJSON('package.json');\n packageJson.scripts = {\n ...packageJson.scripts,\n ...scripts,\n };\n await writeJSON('package.json', packageJson, { spaces: 2 });\n }\n}\n\nexport class DepsService extends Deps {}\n","import * as fs from 'node:fs';\n\nexport abstract class EnvService {\n abstract getEnvValue(key: string): Promise<string | null>;\n abstract setEnvValue(key: string, value: string): Promise<void>;\n}\n\nexport class FileEnvService extends EnvService {\n private filePath: string;\n\n constructor(filePath: string) {\n super();\n this.filePath = filePath;\n }\n\n private readFile(filePath: string): Promise<string> {\n return new Promise((resolve, reject) => {\n fs.readFile(filePath, 'utf8', (err: NodeJS.ErrnoException | null, data: string) => {\n if (err) reject(err);\n else resolve(data);\n });\n });\n }\n\n private writeFile({ filePath, data }: { filePath: string; data: string }): Promise<void> {\n return new Promise((resolve, reject) => {\n fs.writeFile(filePath, data, 'utf8', (err: NodeJS.ErrnoException | null) => {\n if (err) reject(err);\n else resolve();\n });\n });\n }\n\n private async updateEnvData({\n key,\n value,\n filePath = this.filePath,\n data,\n }: {\n key: string;\n value: string;\n filePath?: string;\n data: string;\n }): Promise<string> {\n const regex = new RegExp(`^${key}=.*$`, 'm');\n if (data.match(regex)) {\n // Use a replacement function so `$` sequences in the value (e.g. `$&`,\n // `$$`) are written literally instead of being interpreted as\n // String.prototype.replace special patterns.\n data = data.replace(regex, () => `${key}=${value}`);\n } else {\n data += `\\n${key}=${value}`;\n }\n await this.writeFile({ filePath, data });\n console.info(`${key} set to ${value} in ENV file.`);\n return data;\n }\n\n async getEnvValue(key: string): Promise<string | null> {\n try {\n const data = await this.readFile(this.filePath);\n const regex = new RegExp(`^${key}=(.*)$`, 'm');\n const match = data.match(regex);\n return match?.[1] || null;\n } catch (err) {\n console.error(`Error reading ENV value: ${err}`);\n return null;\n }\n }\n\n async setEnvValue(key: string, value: string): Promise<void> {\n try {\n const data = await this.readFile(this.filePath);\n await this.updateEnvData({ key, value, data });\n } catch (err) {\n console.error(`Error writing ENV value: ${err}`);\n }\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport fsExtra from 'fs-extra/esm';\n\nimport { FileEnvService } from './env.js';\n\nexport class FileService {\n /**\n *\n * @param inputFile the file in the starter files directory to copy\n * @param outputFilePath the destination path\n * @param replaceIfExists flag to replace if it exists\n * @returns\n */\n public async copyStarterFile(inputFile: string, outputFilePath: string, replaceIfExists?: boolean) {\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = path.dirname(__filename);\n const filePath = path.resolve(__dirname, '..', 'starter-files', inputFile);\n const fileString = fs.readFileSync(filePath, 'utf8');\n\n if (fs.existsSync(outputFilePath) && !replaceIfExists) {\n console.info(`${outputFilePath} already exists`);\n return false;\n }\n\n await fsExtra.outputFile(outputFilePath, fileString);\n\n return true;\n }\n\n public async setupEnvFile({ dbUrl }: { dbUrl: string }) {\n const envPath = path.join(process.cwd(), '.env.development');\n\n await fsExtra.ensureFile(envPath);\n\n const fileEnvService = new FileEnvService(envPath);\n await fileEnvService.setEnvValue('DB_URL', dbUrl);\n }\n\n public getFirstExistingFile(files: string[]): string {\n for (const f of files) {\n if (fs.existsSync(f)) {\n return f;\n }\n }\n\n throw new Error('Missing required file, checked the following paths: ' + files.join(', '));\n }\n\n /**\n * Returns every existing file from the provided array in the same order.\n * Callers supply files from the lowest to highest precedence so later dotenv\n * files override earlier values when the bundler loads them.\n */\n public getExistingFiles(files: string[]): string[] {\n return files.filter(file => fs.existsSync(file));\n }\n\n /**\n * Returns the first existing file from the provided array, or undefined if none exist\n * @param files array of file paths to check\n * @returns the first existing file path or undefined\n */\n public getFirstExistingFileOrUndefined(files: string[]): string | undefined {\n for (const f of files) {\n if (fs.existsSync(f)) {\n return f;\n }\n }\n\n return undefined;\n }\n\n public replaceValuesInFile({\n filePath,\n replacements,\n }: {\n filePath: string;\n replacements: { search: string; replace: string }[];\n }) {\n let fileContent = fs.readFileSync(filePath, 'utf8');\n replacements.forEach(({ search, replace }) => {\n fileContent = fileContent.replaceAll(search, replace);\n });\n\n fs.writeFileSync(filePath, fileContent);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAIA,MAAa,oBAAoB,WAA0B;CACzD,OAAO,IAAI,SAAS,EAClB,MAAM,OAAO,WAAW,UAAU;EAEhC,MAAM,OAAO,MAAM,SAAS,CAAC,CAAC,KAAK;EAEnC,IAAI,MAAM;GACR,QAAQ,KAAK,IAAI;GAEjB,OAAO,KAAK,IAAI;EAClB;EAEA,SAAS;CACX,EACF,CAAC;AACH;;;;;;;AAQA,MAAM,iBAAiB;AAEvB,SAAgB,yBAAyB,EAAE,QAAQ,QAAiD;CAClG,MAAM,aAAa,iBAAiB,MAAM;CAC1C,OAAO,OAAO,EAAE,KAAK,MAAM,UAAwE;EACjG,IAAI;GACF,KAAK,MAAM,OAAO,MAChB,IAAI,CAAC,eAAe,KAAK,GAAG,GAC1B,MAAM,IAAI,MAAM,sDAAsD,KAAK,UAAU,GAAG,GAAG;GAG/F,MAAM,aAAa,MAAM,KAAK,MAAM;IAClC,KAAK;IACL,OAAO;IACP;IAEA,OAAO;KAAC;KAAU;KAAQ;IAAM;GAClC,CAAC;GAED,IAAI,SAAS;GACb,IAAI,SAAS;GACb,WAAW,QAAQ,GAAG,SAAQ,UAAS;IACrC,UAAU,MAAM,SAAS;GAC3B,CAAC;GACD,WAAW,QAAQ,GAAG,SAAQ,UAAS;IACrC,UAAU,MAAM,SAAS;GAC3B,CAAC;GAKD,WAAW,QAAQ,KAAK,YAAY,EAAE,KAAK,MAAM,CAAC;GAClD,WAAW,QAAQ,KAAK,YAAY,EAAE,KAAK,MAAM,CAAC;GAGlD,OAAO,IAAI,SAAS,SAAS,WAAW;IACtC,WAAW,GAAG,UAAS,SAAQ;KAC7B,WAAW,IAAI;KACf,IAAI,SAAS,GACX,QAAQ;MAAE,SAAS;MAAM;MAAQ;KAAO,CAAC;UAEzC,OAAO,OAAO,uBAAO,IAAI,MAAM,4BAA4B,MAAM,GAAG;MAAE;MAAQ;KAAO,CAAC,CAAC;IAE3F,CAAC;IAED,WAAW,GAAG,UAAS,UAAS;KAC9B,WAAW,IAAI;KACf,OAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC;KACxC,OAAO,KAAK;IACd,CAAC;GACH,CAAC;EACH,SAAS,OAAO;GACd,QAAQ,MAAM,KAAK;GACnB,OAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC;GACxC,WAAW,IAAI;GACf,OAAO;IAAE,SAAS;IAAO;GAAM;EACjC;CACF;AACF;;;ACtDA,MAAM,2CAA2B,IAAI,IAAI;CACvC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,SAAS,mBAAmB,MAAc;CAExC,OADc,mBAAmB,KAAK,IAC3B,CAAC,GAAG;AACjB;AAEA,MAAM,4BAA4B;AAElC,SAAgB,4BAA4B,QAA0B;CACpE,MAAM,QAAQ,IAAI,OAAO,OAAO,0BAA0B,+CAA+C,CAAC,CAAC,KACzG,MACF;CACA,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC;CAEzB,OAAO,MAAM,EAAE,CACZ,MAAM,GAAG,CAAC,CACV,KAAI,cAAa,UAAU,KAAK,CAAC,CAAC,CAClC,OAAO,OAAO,CAAC,CACf,KAAI,cAAa;EAChB,IAAI,UAAU,WAAW,GAAG,GAAG;GAC7B,MAAM,mBAAmB,UAAU,QAAQ,KAAK,CAAC;GACjD,OAAO,qBAAqB,KAAK,YAAY,UAAU,MAAM,GAAG,gBAAgB;EAClF;EACA,OAAO,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC;CACjC,CAAC;AACL;AAEA,SAAS,2BAA2B,KAAa,OAAqB;CACpE,IAAI,QAAQ,iBAAiB,QAAQ,yBAAyB;CAE9D,IAAI;CACJ,IAAI;EACF,QAAS,MAAM,KAAK,CAAC,CAA6B;CACpD,SAAS,OAAO;EACd,MAAM,IAAI,YACR;GACE,IAAI;GACJ,QAAQ,YAAY;GACpB,UAAU,cAAc;GACxB,SAAS,EAAE,IAAI;GACf,MAAM,gBAAgB,IAAI;EAC5B,GACA,KACF;CACF;CAEA,MAAM,iBACJ,QAAQ,gBACJ,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACxD,OAAO,QAAQ,KAAK,CAAC,CAAC,QACnB,CAAC,YAAY,cAAc,WAAW,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,aAAa,SACpF,IACA,CAAC,CAAC,KAAK,KAAK,CAAC,IACf,MAAM,QAAQ,KAAK,KACjB,MAAM,OAAM,eAAc,OAAO,eAAe,YAAY,WAAW,KAAK,CAAC,CAAC,SAAS,CAAC,IACxF,CAAC,IACD,CAAC,CAAC,KAAK,KAAK,CAAC;CAErB,IAAI,eAAe,WAAW,GAAG;CACjC,MAAM,oBAAoB,eAAe,KAAK,CAAC,WAAW,KAAK,CAAC,CAAC,KAAK,IAAI;CAE1E,MAAM,IAAI,YAAY;EACpB,IAAI;EACJ,QAAQ,YAAY;EACpB,UAAU,cAAc;EACxB,SAAS;GAAE;GAAK,gBAAgB;EAAkB;EAClD,MAAM,gBAAgB,IAAI,YAAY;CACxC,CAAC;AACH;AAEA,SAAgB,0BAA0B,QAAgB,UAA0B,CAAC,GAAG;CACtF,MAAM,kBAAkB,QAAQ,QAAQ,IAAI,UAAU,QAAQ,KAAK,UAAU,QAAQ,MAAM,MAAM;CACjG,MAAM,QAAQ,OAAO,MAAM,OAAO;CAClC,MAAM,SAAmB,CAAC;CAE1B,KAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,SAAS;EACzC,MAAM,MAAM,mBAAmB,MAAM,UAAU,EAAE;EACjD,IAAI,CAAC,KAAK;GACR,SAAS;GACT;EACF;EAEA,MAAM,QAAQ;EACd,SAAS;EACT,OAAO,QAAQ,MAAM,UAAU,CAAC,mBAAmB,MAAM,UAAU,EAAE,GACnE,SAAS;EAGX,IAAI,CAAC,yBAAyB,IAAI,GAAG,KAAM,QAAQ,4BAA4B,iBAC7E;EAGF,MAAM,QAAQ,MAAM,MAAM,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ;EAC3D,IAAI,OAAO;GACT,2BAA2B,KAAK,KAAK;GACrC,OAAO,KAAK,KAAK;EACnB;CACF;CAEA,IAAI,iBAAiB;EACnB,MAAM,oBAAoB,CAAC,yBAAyB;EACpD,IAAI,QAAQ,IAAI,QACd,kBAAkB,KAAK,SAAS,KAAK,UAAU,QAAQ,EAAE,GAAG;EAE9D,IAAI,QAAQ,KAAK,QACf,kBAAkB,KAAK,UAAU,KAAK,UAAU,QAAQ,GAAG,GAAG;EAEhE,IAAI,QAAQ,MAAM,QAChB,kBAAkB,KAAK,WAAW,KAAK,UAAU,QAAQ,IAAI,GAAG;EAElE,OAAO,KAAK,kBAAkB,KAAK,IAAI,CAAC;CAC1C;CAEA,IAAI,QAAQ,iBAAiB,OAAO,KAAK,QAAQ,aAAa,CAAC,CAAC,SAAS,GACvE,OAAO,KACL,CACE,cACA,GAAG,OAAO,QAAQ,QAAQ,aAAa,CAAC,CAAC,KACtC,CAAC,KAAK,WAAW,KAAK,KAAK,UAAU,GAAG,EAAE,IAAI,KAAK,UAAU,KAAK,GACrE,CACF,CAAC,CAAC,KAAK,IAAI,CACb;CAGF,IAAI,QAAQ,gBACV,OAAO,KAAK,eAAe,QAAQ,gBAAgB;CAGrD,OAAO,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,KAAK,MAAM,IAAI;AAC1D;AAEA,IAAa,OAAb,cAA0B,WAAW;CACnC;CACA;CACA;CAEA,YAAY,UAAU,QAAQ,IAAI,GAAG;EACnC,MAAM;GAAE,WAAW;GAAY,MAAM;EAAO,CAAC;EAE7C,KAAK,UAAU;EACf,KAAK,WAAW,KAAK,aAAa,OAAO;EACzC,KAAK,iBAAiB,KAAK,UAAU,kBAAkB;CACzD;CAEA,aAAqB,KAAkC;EAOrD,KAAK,MAAM,YAAY;GALrB;IAAE,UAAU;IAAkB,gBAAgB;GAAO;GACrD;IAAE,UAAU;IAAqB,gBAAgB;GAAM;GACvD;IAAE,UAAU;IAAa,gBAAgB;GAAO;GAChD;IAAE,UAAU;IAAY,gBAAgB;GAAM;EAEjB,GAAG;GAChC,MAAM,eAAe,KAAK,KAAK,KAAK,SAAS,QAAQ;GACrD,IAAI,GAAG,WAAW,YAAY,GAC5B,OAAO;IAAE,GAAG;IAAU,MAAM;GAAa;EAE7C;EACA,MAAM,YAAY,KAAK,QAAQ,KAAK,IAAI;EACxC,IAAI,cAAc,KAChB,OAAO,KAAK,aAAa,SAAS;EAEpC,OAAO;CACT;CAEA,2BAAkC,EAAE,SAAS,WAAiD;EAC5F,OAAO,2BAA2B,QAAQ,GAAG,QAAQ;CACvD;CAEA,MAAa,KAAK,EAAE,KAAK,aAAa,iBAA8E;EAClH,MAAM,WAAW,yBAAyB;GACxC,QAAQ,KAAK;GACb,MAAM;EACR,CAAC;EAED,IAAI,UAAU;EACd,IAAI,kBAAkB,sBAAsB;EAC5C,IAAI,KAAK,mBAAmB,QAG1B,kBAAkB,SAAS,YAAY,GAAG,cAAc;EAE1D,IAAI,KAAK,mBAAmB,OAAO;GAEjC,UAAU;GAEV,kBAAkB,iBAAiB;EACrC;EAEA,OAAO,SAAS;GACd,KAAK,GAAG,KAAK,eAAe,GAAG,QAAQ,GAAG;GAC1C,MAAM,CAAC;GACP,KAAK,EACH,MAAM,QAAQ,IAAI,KACpB;EACF,CAAC;CACH;CAEA,sBAA8B,KAA4B;EACxD,MAAM,oBAAoB,KAAK,KAAK,KAAK,qBAAqB;EAC9D,IAAI,GAAG,WAAW,iBAAiB,GACjC,OAAO;EAGT,MAAM,YAAY,KAAK,QAAQ,KAAK,IAAI;EACxC,IAAI,cAAc,KAChB,OAAO,KAAK,sBAAsB,SAAS;EAG7C,OAAO;CACT;CAEA,MAAc,gBAAgB,KAAa,UAA0B,CAAC,GAAG;EACvE,MAAM,0BAA0B,KAAK,sBAAsB,KAAK,OAAO;EACvE,MAAM,sBAAsB,0BACxB,MAAM,WAAW,SAAS,yBAAyB,OAAO,IAC1D;EAEJ,MAAM,WAAW,UACf,KAAK,KAAK,KAAK,qBAAqB,GACpC,0BAA0B,qBAAqB,OAAO,GACtD,OACF;CACF;CAEA,MAAc,gBAAgB,KAAa,SAA8B;EACvE,MAAM,aAAa,KAAK,KAAK,KAAK,aAAa;EAC/C,MAAM,SAAS,EACb,wBAAwB;GACtB,KAAK,QAAQ,OAAO,CAAC;GACrB,IAAI,QAAQ,MAAM,CAAC;GACnB,MAAM,QAAQ,QAAQ,CAAC;EACzB,EACF;EAEA,MAAM,WAAW,UACf,YACA,4BAA4B,OAAO,QAAQ,OAAO,sBAAsB,CAAC,CACtE,KAAK,CAAC,KAAK,WAAW,KAAK,IAAI,IAAI,KAAK,UAAU,KAAK,GAAG,CAAC,CAC3D,KAAK,IAAI,GACd;CACF;CAEA,WAAmB,SAAwC;EACzD,MAAM,OAAiB,CAAC;EACxB,IAAI,QAAQ,KAAK,KAAK,KAAK,SAAS,QAAQ,IAAI,KAAK,GAAG,GAAG;EAC3D,IAAI,QAAQ,IAAI,KAAK,KAAK,QAAQ,QAAQ,GAAG,KAAK,GAAG,GAAG;EACxD,IAAI,QAAQ,MAAM,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK,GAAG,GAAG;EAC9D,OAAO;CACT;;;;;CAMA,yBACE,IACA,MACA,EAAE,cAAc,UAAqC,CAAC,GAC9C;EACR,MAAM,MAAM,SAAS,YAAY,YAAY;EAE7C,QAAQ,IAAR;GACE,KAAK,OACH,OAAO,GAAG,IAAI;GAChB,KAAK,QACH,OAAO,SAAS,aAAa,CAAC,cAAc,GAAG,IAAI,mBAAmB;GACxE,KAAK,QACH,OAAO,SAAS,YAAY,GAAG,IAAI,0CAA0C,GAAG,IAAI;GACtF,SACE,OAAO;EACX;CACF;CAEA,MAAa,QAAQ,EACnB,MAAM,KAAK,SACX,cACA,eACA,mBAME,CAAC,GAAG;EACN,MAAM,KAAK,KAAK;EAChB,IAAI,cAAc;EAClB,IAAI,KAAK,UAAU;GACjB,MAAM,cAAc,KAAK,KAAK,KAAK,KAAK,SAAS,QAAQ;GACzD,IAAI,KAAK,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,WAAW,GAC/D,MAAM,WAAW,SAAS,KAAK,SAAS,MAAM,WAAW;GAG3D,IAAI,OAAO,QAAQ;IACjB,MAAM,mBAAmB,MAAM,WAAW,SAAS,aAAa,OAAO;IACvE,cAAc,2BAA2B,KAAK,gBAAgB;GAChE;EACF;EAEA,MAAM,iBAAiB,KAAK,yBAAyB,IAAI,WAAW,EAAE,YAAY,CAAC;EACnF,IAAI,OAAiB,CAAC;EAEtB,QAAQ,IAAR;GACE,KAAK;IACH,MAAM,KAAK,gBAAgB,KAAK;KAAE,GAAG;KAAc;KAAe;IAAe,CAAC;IAClF;GACF,KAAK;IAEH,MAAM,WAAW,KAAK,KAAK,KAAK,WAAW,CAAC;IAC5C,IAAI,cACF,MAAM,KAAK,gBAAgB,KAAK,YAAY;IAE9C;GACF,KAAK;IACH,IAAI,cACF,OAAO,KAAK,WAAW,YAAY;IAErC;GACF;EAEF;EAEA,MAAM,WAAW,yBAAyB;GACxC,QAAQ,KAAK;GACb,MAAM;EACR,CAAC;EAED,IAAI;GACF,OAAO,MAAM,SAAS;IACpB,KAAK,GAAG,GAAG,GAAG;IACd;IACA,KAAK,QAAQ;GACf,CAAC;EACH,SAAS,OAAO;GACd,IAAI,OAAO,QAAQ,MAAM;GAMzB,MAAM,kBAAkB,4BAHtB,SAAS,OAAO,UAAU,WACtB,GAAG,YAAY,QAAQ,OAAO,MAAM,MAAM,IAAI,GAAG,IAAI,YAAY,QAAQ,OAAO,MAAM,MAAM,IAAI,OAChG,EAC2D;GACjE,IAAI,gBAAgB,WAAW,GAAG,MAAM;GAExC,MAAM,IAAI,YACR;IACE,IAAI;IACJ,QAAQ,YAAY;IACpB,UAAU,cAAc;IACxB,SAAS,EAAE,cAAc,gBAAgB,KAAK,IAAI,EAAE;IACpD,MAAM,mCAAmC,gBAAgB,KAAK,IAAI,EAAE;GACtE,GACA,KACF;EACF;CACF;CAEA,MAAa,gBAAgB,UAAoB;EAC/C,MAAM,KAAK,KAAK;EAChB,MAAM,iBAAiB,KAAK,yBAAyB,IAAI,KAAK;EAE9D,MAAM,MAA8B,EAClC,MAAM,QAAQ,IAAI,KACpB;EAEA,IAAI,QAAQ,IAAI,qBACd,IAAI,sBAAsB,QAAQ,IAAI;EAQxC,OALiB,yBAAyB;GACxC,QAAQ,KAAK;GACb,MAAM;EACR,CAEc,CAAC,CAAC;GACd,KAAK,GAAG,GAAG,GAAG;GACd,MAAM;GACN;EACF,CAAC;CACH;CAEA,MAAa,kBAAkB,cAAyC;EACtE,IAAI;GACF,MAAM,kBAAkB,KAAK,KAAK,KAAK,SAAS,cAAc;GAE9D,IAAI;IACF,MAAM,WAAW,OAAO,eAAe;GACzC,QAAQ;IACN,OAAO;GACT;GAEA,MAAM,cAAc,MAAM,SAAS,eAAe;GAClD,KAAK,MAAM,cAAc,cACvB,IAAI,CAAC,YAAY,gBAAgB,CAAC,YAAY,aAAa,aACzD,OAAO,kBAAkB,WAAW,gCAAgC,KAAK,eAAe,WAAW,WAAW;GAIlH,OAAO;EACT,SAAS,KAAK;GACZ,QAAQ,MAAM,GAAG;GACjB,OAAO;EACT;CACF;CAEA,MAAa,iBAAiB;EAC5B,IAAI;GAGF,QAAO,MADW,SADM,KAAK,KAAK,KAAK,SAAS,cACP,CAAC,EAAA,CAC/B;EACb,SAAS,KAAK;GACZ,MAAM;EACR;CACF;CAEA,MAAa,oBAAoB;EAE/B,MAAM,YAAY,QADC,cAAc,OAAO,KAAK,GACV,CAAC;EAIpC,QAAO,MADgB,SAFH,KAAK,KAAK,WAAW,MAAM,MAAM,cAEX,CAAC,EAAA,CAC5B;CACjB;CAEA,MAAa,wBAAwB,SAAiC;EACpE,MAAM,cAAc,MAAM,SAAS,cAAc;EACjD,YAAY,UAAU;GACpB,GAAG,YAAY;GACf,GAAG;EACL;EACA,MAAM,UAAU,gBAAgB,aAAa,EAAE,QAAQ,EAAE,CAAC;CAC5D;AACF;AAEA,IAAa,cAAb,cAAiC,KAAK,CAAC;;;ACzdvC,IAAsB,aAAtB,MAAiC,CAGjC;AAEA,IAAa,iBAAb,cAAoC,WAAW;CAC7C;CAEA,YAAY,UAAkB;EAC5B,MAAM;EACN,KAAK,WAAW;CAClB;CAEA,SAAiB,UAAmC;EAClD,OAAO,IAAI,SAAS,SAAS,WAAW;GACtC,KAAG,SAAS,UAAU,SAAS,KAAmC,SAAiB;IACjF,IAAI,KAAK,OAAO,GAAG;SACd,QAAQ,IAAI;GACnB,CAAC;EACH,CAAC;CACH;CAEA,UAAkB,EAAE,UAAU,QAA2D;EACvF,OAAO,IAAI,SAAS,SAAS,WAAW;GACtC,KAAG,UAAU,UAAU,MAAM,SAAS,QAAsC;IAC1E,IAAI,KAAK,OAAO,GAAG;SACd,QAAQ;GACf,CAAC;EACH,CAAC;CACH;CAEA,MAAc,cAAc,EAC1B,KACA,OACA,WAAW,KAAK,UAChB,QAMkB;EAClB,MAAM,QAAQ,IAAI,OAAO,IAAI,IAAI,OAAO,GAAG;EAC3C,IAAI,KAAK,MAAM,KAAK,GAIlB,OAAO,KAAK,QAAQ,aAAa,GAAG,IAAI,GAAG,OAAO;OAElD,QAAQ,KAAK,IAAI,GAAG;EAEtB,MAAM,KAAK,UAAU;GAAE;GAAU;EAAK,CAAC;EACvC,QAAQ,KAAK,GAAG,IAAI,UAAU,MAAM,cAAc;EAClD,OAAO;CACT;CAEA,MAAM,YAAY,KAAqC;EACrD,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,SAAS,KAAK,QAAQ;GAC9C,MAAM,QAAQ,IAAI,OAAO,IAAI,IAAI,SAAS,GAAG;GAE7C,OADc,KAAK,MAAM,KACd,CAAC,GAAG,MAAM;EACvB,SAAS,KAAK;GACZ,QAAQ,MAAM,4BAA4B,KAAK;GAC/C,OAAO;EACT;CACF;CAEA,MAAM,YAAY,KAAa,OAA8B;EAC3D,IAAI;GACF,MAAM,OAAO,MAAM,KAAK,SAAS,KAAK,QAAQ;GAC9C,MAAM,KAAK,cAAc;IAAE;IAAK;IAAO;GAAK,CAAC;EAC/C,SAAS,KAAK;GACZ,QAAQ,MAAM,4BAA4B,KAAK;EACjD;CACF;AACF;;;ACtEA,IAAa,cAAb,MAAyB;;;;;;;;CAQvB,MAAa,gBAAgB,WAAmB,gBAAwB,iBAA2B;EACjG,MAAM,aAAa,cAAc,OAAO,KAAK,GAAG;EAChD,MAAM,YAAY,KAAK,QAAQ,UAAU;EACzC,MAAM,WAAW,KAAK,QAAQ,WAAW,MAAM,iBAAiB,SAAS;EACzE,MAAM,aAAa,GAAG,aAAa,UAAU,MAAM;EAEnD,IAAI,GAAG,WAAW,cAAc,KAAK,CAAC,iBAAiB;GACrD,QAAQ,KAAK,GAAG,eAAe,gBAAgB;GAC/C,OAAO;EACT;EAEA,MAAM,QAAQ,WAAW,gBAAgB,UAAU;EAEnD,OAAO;CACT;CAEA,MAAa,aAAa,EAAE,SAA4B;EACtD,MAAM,UAAU,KAAK,KAAK,QAAQ,IAAI,GAAG,kBAAkB;EAE3D,MAAM,QAAQ,WAAW,OAAO;EAGhC,MAAM,IADqB,eAAe,OACvB,CAAC,CAAC,YAAY,UAAU,KAAK;CAClD;CAEA,qBAA4B,OAAyB;EACnD,KAAK,MAAM,KAAK,OACd,IAAI,GAAG,WAAW,CAAC,GACjB,OAAO;EAIX,MAAM,IAAI,MAAM,yDAAyD,MAAM,KAAK,IAAI,CAAC;CAC3F;;;;;;CAOA,iBAAwB,OAA2B;EACjD,OAAO,MAAM,QAAO,SAAQ,GAAG,WAAW,IAAI,CAAC;CACjD;;;;;;CAOA,gCAAuC,OAAqC;EAC1E,KAAK,MAAM,KAAK,OACd,IAAI,GAAG,WAAW,CAAC,GACjB,OAAO;CAKb;CAEA,oBAA2B,EACzB,UACA,gBAIC;EACD,IAAI,cAAc,GAAG,aAAa,UAAU,MAAM;EAClD,aAAa,SAAS,EAAE,QAAQ,cAAc;GAC5C,cAAc,YAAY,WAAW,QAAQ,OAAO;EACtD,CAAC;EAED,GAAG,cAAc,UAAU,WAAW;CACxC;AACF"}
@@ -1,5 +1,5 @@
1
- const require_index_CLddUTqr = require("./index-CLddUTqr-DS5tJ3WV.cjs");
2
- //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js
1
+ const require_index_CLddUTqr = require("./index-CLddUTqr-DsGkVS-W.cjs");
2
+ //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js
3
3
  async function getToJsonSchemaFn() {
4
4
  try {
5
5
  const { toJSONSchema } = await import("sury");
@@ -11,4 +11,4 @@ async function getToJsonSchemaFn() {
11
11
  //#endregion
12
12
  exports.default = getToJsonSchemaFn;
13
13
 
14
- //# sourceMappingURL=sury-CWZTCd75-YUPbTtKO.cjs.map
14
+ //# sourceMappingURL=sury-CWZTCd75-ChXu4j-p.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sury-CWZTCd75-YUPbTtKO.cjs","names":["MissingDependencyError"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js"],"sourcesContent":["import { M as MissingDependencyError } from './index-CLddUTqr.js';\nimport 'quansync';\n\nasync function getToJsonSchemaFn() {\n try {\n const { toJSONSchema } = await import('sury');\n return toJSONSchema;\n } catch {\n throw new MissingDependencyError(\"sury\");\n }\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,eAAe,oBAAoB;CACjC,IAAI;EACF,MAAM,EAAE,iBAAiB,MAAM,OAAO;EACtC,OAAO;CACT,QAAQ;EACN,MAAM,IAAIA,uBAAAA,uBAAuB,MAAM;CACzC;AACF"}
1
+ {"version":3,"file":"sury-CWZTCd75-ChXu4j-p.cjs","names":["MissingDependencyError"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js"],"sourcesContent":["import { M as MissingDependencyError } from './index-CLddUTqr.js';\nimport 'quansync';\n\nasync function getToJsonSchemaFn() {\n try {\n const { toJSONSchema } = await import('sury');\n return toJSONSchema;\n } catch {\n throw new MissingDependencyError(\"sury\");\n }\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,eAAe,oBAAoB;CACjC,IAAI;EACF,MAAM,EAAE,iBAAiB,MAAM,OAAO;EACtC,OAAO;CACT,QAAQ;EACN,MAAM,IAAIA,uBAAAA,uBAAuB,MAAM;CACzC;AACF"}
@@ -1,5 +1,5 @@
1
- import { t as MissingDependencyError } from "./index-CLddUTqr-eO-ae7Sx.js";
2
- //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js
1
+ import { t as MissingDependencyError } from "./index-CLddUTqr-BXqo9et4.js";
2
+ //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js
3
3
  async function getToJsonSchemaFn() {
4
4
  try {
5
5
  const { toJSONSchema } = await import("sury");
@@ -11,4 +11,4 @@ async function getToJsonSchemaFn() {
11
11
  //#endregion
12
12
  export { getToJsonSchemaFn as default };
13
13
 
14
- //# sourceMappingURL=sury-CWZTCd75-ClSNrMWF.js.map
14
+ //# sourceMappingURL=sury-CWZTCd75-OKz7uWLi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sury-CWZTCd75-ClSNrMWF.js","names":[],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js"],"sourcesContent":["import { M as MissingDependencyError } from './index-CLddUTqr.js';\nimport 'quansync';\n\nasync function getToJsonSchemaFn() {\n try {\n const { toJSONSchema } = await import('sury');\n return toJSONSchema;\n } catch {\n throw new MissingDependencyError(\"sury\");\n }\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,eAAe,oBAAoB;CACjC,IAAI;EACF,MAAM,EAAE,iBAAiB,MAAM,OAAO;EACtC,OAAO;CACT,QAAQ;EACN,MAAM,IAAI,uBAAuB,MAAM;CACzC;AACF"}
1
+ {"version":3,"file":"sury-CWZTCd75-OKz7uWLi.js","names":[],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/sury-CWZTCd75.js"],"sourcesContent":["import { M as MissingDependencyError } from './index-CLddUTqr.js';\nimport 'quansync';\n\nasync function getToJsonSchemaFn() {\n try {\n const { toJSONSchema } = await import('sury');\n return toJSONSchema;\n } catch {\n throw new MissingDependencyError(\"sury\");\n }\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";;AAGA,eAAe,oBAAoB;CACjC,IAAI;EACF,MAAM,EAAE,iBAAiB,MAAM,OAAO;EACtC,OAAO;CACT,QAAQ;EACN,MAAM,IAAI,uBAAuB,MAAM;CACzC;AACF"}
@@ -1,8 +1,8 @@
1
- //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js
1
+ //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js
2
2
  function getToJsonSchemaFn() {
3
3
  return (schema) => JSON.parse(JSON.stringify(schema.Type()));
4
4
  }
5
5
  //#endregion
6
6
  export { getToJsonSchemaFn as default };
7
7
 
8
- //# sourceMappingURL=typebox-Dei93FPO-CVSJ3SAf.js.map
8
+ //# sourceMappingURL=typebox-Dei93FPO-C5ACKU09.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typebox-Dei93FPO-CVSJ3SAf.js","names":[],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js"],"sourcesContent":["function getToJsonSchemaFn() {\n return (schema) => JSON.parse(JSON.stringify(schema.Type()));\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAS,oBAAoB;CAC3B,QAAQ,WAAW,KAAK,MAAM,KAAK,UAAU,OAAO,KAAK,CAAC,CAAC;AAC7D"}
1
+ {"version":3,"file":"typebox-Dei93FPO-C5ACKU09.js","names":[],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js"],"sourcesContent":["function getToJsonSchemaFn() {\n return (schema) => JSON.parse(JSON.stringify(schema.Type()));\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAS,oBAAoB;CAC3B,QAAQ,WAAW,KAAK,MAAM,KAAK,UAAU,OAAO,KAAK,CAAC,CAAC;AAC7D"}
@@ -1,8 +1,8 @@
1
- //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js
1
+ //#region ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js
2
2
  function getToJsonSchemaFn() {
3
3
  return (schema) => JSON.parse(JSON.stringify(schema.Type()));
4
4
  }
5
5
  //#endregion
6
6
  exports.default = getToJsonSchemaFn;
7
7
 
8
- //# sourceMappingURL=typebox-Dei93FPO-BTBshlGz.cjs.map
8
+ //# sourceMappingURL=typebox-Dei93FPO-KTtPU745.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"typebox-Dei93FPO-BTBshlGz.cjs","names":[],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/1c9f0f61b390ad3f38476964121204ef02e35ff267c2b3f61b718f5f544716d2/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js"],"sourcesContent":["function getToJsonSchemaFn() {\n return (schema) => JSON.parse(JSON.stringify(schema.Type()));\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAS,oBAAoB;CAC3B,QAAQ,WAAW,KAAK,MAAM,KAAK,UAAU,OAAO,KAAK,CAAC,CAAC;AAC7D"}
1
+ {"version":3,"file":"typebox-Dei93FPO-KTtPU745.cjs","names":[],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@standard-community/standard-json/0.3.5/51aed048de3b19fc603080fe95a6465a0f7208b9be56abfbffac914316d9d07e/node_modules/@standard-community/standard-json/dist/typebox-Dei93FPO.js"],"sourcesContent":["function getToJsonSchemaFn() {\n return (schema) => JSON.parse(JSON.stringify(schema.Type()));\n}\n\nexport { getToJsonSchemaFn as default };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAS,oBAAoB;CAC3B,QAAQ,WAAW,KAAK,MAAM,KAAK,UAAU,OAAO,KAAK,CAAC,CAAC;AAC7D"}
@@ -1,5 +1,4 @@
1
1
  import { builtinModules } from "module";
2
- import "child_process";
3
2
  import "fs";
4
3
  import { basename, join, relative } from "path";
5
4
  //#region src/build/utils.ts
@@ -199,4 +198,4 @@ function isBareModuleSpecifier(specifier) {
199
198
  //#endregion
200
199
  export { getPackageName as a, isBuiltinModule as c, normalizeStudioBase as d, rollupSafeName as f, getNodeResolveOptions as i, isDependencyPartOfPackage as l, slash as m, escapeStudioHtmlValue as n, injectStudioHtmlConfig as o, shouldSkipInstall as p, getCompiledDepCachePath as r, isBareModuleSpecifier as s, detectRuntime as t, isExternalProtocolImport as u };
201
200
 
202
- //# sourceMappingURL=utils-DYi43Kp4.js.map
201
+ //# sourceMappingURL=utils-Bl3Lm7SI.js.map