@voltro/cli 0.22.1 → 0.24.0

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 (76) hide show
  1. package/CHANGELOG.md +427 -0
  2. package/bin/voltro.mjs +39 -4
  3. package/dist/{apiBuild-DiWxVz-M.js → apiBuild-B2m4XK_8.js} +45 -23
  4. package/dist/apiBuild-UEM3QBke.js +2 -0
  5. package/dist/bin.js +3 -3
  6. package/dist/{commands-BxRaIOBG.js → commands-CaIhTsC2.js} +2944 -2557
  7. package/dist/{dbCommand-DVASmZj2.js → dbCommand-CC61CsAc.js} +474 -263
  8. package/dist/dbCommand-Cr__4ATv.js +2 -0
  9. package/dist/{dev-Dd3EZzj5.js → dev-DPkQVUTP.js} +1 -1
  10. package/dist/{dev-BRiPgbKw.js → dev-NCuEhNxs.js} +1593 -1575
  11. package/dist/index.js +1 -1
  12. package/dist/{inspectMetrics-9ZSuDeqD.js → inspectMetrics-dcC7gnxu.js} +566 -552
  13. package/dist/{serveCommand-DXJOARkO.js → serveCommand-C4gzDZzc.js} +425 -411
  14. package/dist/serveEntry.js +2 -2
  15. package/dist/{start-CsIjcOi-.js → start-C_4VUDT8.js} +327 -325
  16. package/dist/startEntry.js +2 -2
  17. package/package.json +17 -17
  18. package/templates/AGENTS.md +1 -1
  19. package/templates/agent-docs/_index.md +1 -1
  20. package/templates/agent-docs/_manifest.json +1 -1
  21. package/templates/agent-docs/authentication.md +21 -0
  22. package/templates/agent-docs/caching.md +21 -5
  23. package/templates/agent-docs/cli.md +61 -0
  24. package/templates/agent-docs/data.md +208 -170
  25. package/templates/agent-docs/database/migrations.md +123 -0
  26. package/templates/agent-docs/database/seedsdialects.md +12 -0
  27. package/templates/agent-docs/deployment.md +66 -1
  28. package/templates/agent-docs/plugins.md +42 -0
  29. package/templates/agent-docs/routing.md +23 -1
  30. package/templates/agent-docs/templates/apibackends.md +2 -2
  31. package/templates/agent-docs/whats-new.md +281 -32
  32. package/templates/agent-docs/workflows.md +30 -0
  33. package/templates/apps/api-ai/package.json +8 -7
  34. package/templates/apps/api-auth/package.json +9 -8
  35. package/templates/apps/api-backend/package.json +8 -7
  36. package/templates/apps/api-backend-deactivation/package.json +8 -7
  37. package/templates/apps/api-backend-mail/package.json +9 -8
  38. package/templates/apps/api-backend-mariadb/package.json +10 -9
  39. package/templates/apps/api-backend-storage/package.json +9 -8
  40. package/templates/apps/api-data-advanced/package.json +9 -8
  41. package/templates/apps/api-durable/package.json +9 -8
  42. package/templates/apps/api-feature-flags/package.json +10 -9
  43. package/templates/apps/api-governance/package.json +9 -8
  44. package/templates/apps/api-kv/package.json +9 -8
  45. package/templates/apps/api-moderation/package.json +9 -8
  46. package/templates/apps/api-observability/package.json +9 -8
  47. package/templates/apps/api-ratelimit/package.json +9 -8
  48. package/templates/apps/api-rbac/package.json +9 -8
  49. package/templates/apps/api-rest/package.json +8 -7
  50. package/templates/apps/api-saas/package.json +12 -11
  51. package/templates/apps/api-search/package.json +9 -8
  52. package/templates/apps/api-versioning/app.config.ts +6 -4
  53. package/templates/apps/api-versioning/package.json +9 -8
  54. package/templates/apps/api-webhooks/package.json +10 -9
  55. package/templates/apps/changelog/package.json +7 -6
  56. package/templates/apps/edge-functions/package.json +3 -2
  57. package/templates/apps/frontend-admin/package.json +9 -8
  58. package/templates/apps/frontend-app/package.json +9 -8
  59. package/templates/apps/frontend-blank/package.json +8 -7
  60. package/templates/apps/frontend-contact/package.json +8 -7
  61. package/templates/apps/frontend-contact/src/globals.d.ts +6 -0
  62. package/templates/apps/frontend-dashboard/package.json +8 -7
  63. package/templates/apps/frontend-docs/package.json +8 -7
  64. package/templates/apps/frontend-docs/src/globals.d.ts +6 -0
  65. package/templates/apps/frontend-i18n/package.json +7 -6
  66. package/templates/apps/frontend-landing/package.json +8 -7
  67. package/templates/apps/frontend-landing/src/globals.d.ts +6 -0
  68. package/templates/apps/frontend-spa/package.json +8 -7
  69. package/templates/apps/frontend-spa/src/globals.d.ts +6 -0
  70. package/templates/apps/frontend-ssr/package.json +8 -7
  71. package/templates/apps/frontend-ssr/src/globals.d.ts +6 -0
  72. package/templates/apps/frontend-ssr-api/package.json +9 -8
  73. package/templates/apps/frontend-static-blog/package.json +7 -6
  74. package/templates/apps/frontend-static-blog/src/globals.d.ts +6 -0
  75. package/dist/apiBuild-COyPDf3R.js +0 -2
  76. package/dist/dbCommand-CO3eSAZR.js +0 -2
@@ -1,6 +1,6 @@
1
- import { ct as e } from "./inspectMetrics-9ZSuDeqD.js";
1
+ import { lt as e } from "./inspectMetrics-dcC7gnxu.js";
2
2
  import { a as t } from "./seedRunner-D6eu-u5U.js";
3
- import { m as n } from "./dev-BRiPgbKw.js";
3
+ import { h as n } from "./dev-NCuEhNxs.js";
4
4
  import { dirname as r, isAbsolute as i, join as a, relative as o, resolve as s } from "node:path";
5
5
  import { fileURLToPath as c } from "node:url";
6
6
  import { createLogger as l } from "@voltro/logger";
@@ -100,7 +100,6 @@ var p = l({ scope: "voltro:build" }), m = (e) => {
100
100
  "pg-native",
101
101
  "@tursodatabase/*",
102
102
  "@libsql/*",
103
- "@vlasky/zongji",
104
103
  "ioredis",
105
104
  "nodemailer"
106
105
  ], C = [
@@ -145,13 +144,33 @@ const drivers = ${JSON.stringify(t)}\nlet mod\nfor (const d of drivers) {\n try
145
144
  loader: "js"
146
145
  }));
147
146
  }
148
- }), D = (e) => a(e, ".framework", "dist-api", "serveBundle", "serveEntry.js"), O = async (t) => {
147
+ }), D = (e) => a(e, ".framework", "dist-api", "serveBundle", "serveEntry.js"), O = async (e, t) => {
148
+ let n = 0, r = async (e) => {
149
+ let i;
150
+ try {
151
+ i = await d.readdir(e, { withFileTypes: !0 });
152
+ } catch {
153
+ return;
154
+ }
155
+ for (let o of i) {
156
+ let i = a(e, o.name);
157
+ if (o.isDirectory()) {
158
+ await r(i);
159
+ continue;
160
+ }
161
+ try {
162
+ (await d.stat(i)).mtimeMs < t && (await d.rm(i, { force: !0 }), n += 1);
163
+ } catch {}
164
+ }
165
+ };
166
+ return await r(e), n;
167
+ }, k = async (t) => {
149
168
  let n = await e("esbuild", () => import("esbuild")), r = a(t, ".framework"), i = a(r, "dist-api", "serveBundle");
150
169
  await d.mkdir(r, { recursive: !0 });
151
- let c = [...await v(t)], l = a(t, "app.config.ts");
152
- if (u(l) && c.push(l), c.length === 0) return null;
153
- let f = a(t, "tsconfig.json"), g = await n.build({
154
- entryPoints: c,
170
+ let c = Date.now(), l = [...await v(t)], f = a(t, "app.config.ts");
171
+ if (u(f) && l.push(f), l.length === 0) return null;
172
+ let g = a(t, "tsconfig.json"), b = await n.build({
173
+ entryPoints: l,
155
174
  bundle: !0,
156
175
  write: !1,
157
176
  metafile: !0,
@@ -163,26 +182,26 @@ const drivers = ${JSON.stringify(t)}\nlet mod\nfor (const d of drivers) {\n try
163
182
  logLevel: "silent",
164
183
  plugins: [y],
165
184
  outdir: a(i, ".probe"),
166
- ...u(f) ? { tsconfig: f } : {}
167
- }), b = Object.keys(g.metafile.inputs).map((e) => s(t, e)).filter((e) => e.startsWith(`${t}/`) && !e.includes("/node_modules/") && !e.includes("/.framework/") && _(e)), x = await h(t), S = /* @__PURE__ */ new Set(), C = [
185
+ ...u(g) ? { tsconfig: g } : {}
186
+ }), x = Object.keys(b.metafile.inputs).map((e) => s(t, e)).filter((e) => e.startsWith(`${t}/`) && !e.includes("/node_modules/") && !e.includes("/.framework/") && _(e)), S = await h(t), C = /* @__PURE__ */ new Set(), w = [
168
187
  "// GENERATED BY `voltro build` — do not edit; overwritten on next build.",
169
188
  "import { join as __join, dirname as __dirname, resolve as __resolve } from 'node:path'",
170
189
  "import { pathToFileURL as __pathToFileURL, fileURLToPath as __fileURLToPath } from 'node:url'",
171
190
  "import { runServe as __runServe, registerAppModules, registerDriver, loadDotEnv } from '@voltro/cli/serveEntry'",
172
- ...x.map((e, t) => `import * as __drv${t} from ${JSON.stringify(e)}`),
191
+ ...S.map((e, t) => `import * as __drv${t} from ${JSON.stringify(e)}`),
173
192
  "const __isMain = Boolean(process.argv[1]) && import.meta.url === __pathToFileURL(process.argv[1]).href",
174
193
  "if (__isMain) process.chdir(__resolve(__dirname(__fileURLToPath(import.meta.url)), '..', '..', '..'))",
175
194
  "const __root = process.cwd()",
176
195
  "registerAppModules({",
177
- ...b.map((e) => ` [__join(__root, ${JSON.stringify(o(t, e))})]: () => import(${JSON.stringify(e)}),`),
196
+ ...x.map((e) => ` [__join(__root, ${JSON.stringify(o(t, e))})]: () => import(${JSON.stringify(e)}),`),
178
197
  "})",
179
- ...x.map((e, t) => `registerDriver(${JSON.stringify(e)}, __drv${t})`),
198
+ ...S.map((e, t) => `registerDriver(${JSON.stringify(e)}, __drv${t})`),
180
199
  "export const runServe = (args = []) => { loadDotEnv([]); return __runServe(args) }",
181
200
  "if (__isMain) runServe(process.argv.slice(2)).then((c) => process.exit(typeof c === 'number' ? c : 0))",
182
201
  ""
183
- ], w = a(r, "serveEntry.ts");
184
- return await d.writeFile(w, C.join("\n"), "utf8"), await n.build({
185
- entryPoints: [w],
202
+ ], T = a(r, "serveEntry.ts");
203
+ await d.writeFile(T, w.join("\n"), "utf8"), await n.build({
204
+ entryPoints: [T],
186
205
  bundle: !0,
187
206
  format: "esm",
188
207
  platform: "node",
@@ -190,20 +209,23 @@ const drivers = ${JSON.stringify(t)}\nlet mod\nfor (const d of drivers) {\n try
190
209
  outdir: i,
191
210
  splitting: !0,
192
211
  write: !0,
193
- plugins: [E(x, t, S)],
212
+ plugins: [E(S, t, C)],
194
213
  banner: { js: "import { createRequire as __voltroRequire } from 'node:module'; const require = __voltroRequire(import.meta.url);" },
195
214
  jsx: "automatic",
196
215
  jsxImportSource: "react",
197
216
  logLevel: "silent",
198
217
  absWorkingDir: t,
199
218
  alias: m("serveEntry"),
200
- ...u(f) ? { tsconfig: f } : {}
201
- }), p.info("api build: serve bundle written", {
202
- appModules: b.length,
203
- drivers: x.length > 0 ? x.join(", ") : "none (memory)",
204
- ...S.size > 0 ? { externalizedOptionalPeers: [...S].join(", ") } : {},
219
+ ...u(g) ? { tsconfig: g } : {}
220
+ });
221
+ let D = await O(i, c);
222
+ return p.info("api build: serve bundle written", {
223
+ appModules: x.length,
224
+ drivers: S.length > 0 ? S.join(", ") : "none (memory)",
225
+ ...C.size > 0 ? { externalizedOptionalPeers: [...C].join(", ") } : {},
226
+ ...D > 0 ? { prunedStaleChunks: D } : {},
205
227
  out: a(".framework", "dist-api", "serveBundle", "serveEntry.js")
206
228
  }), a(i, "serveEntry.js");
207
229
  };
208
230
  //#endregion
209
- export { v as a, O as c, m as i, D as l, S as n, E as o, x as r, b as s, g as t };
231
+ export { v as a, b as c, m as i, k as l, S as n, E as o, x as r, O as s, g as t, D as u };
@@ -0,0 +1,2 @@
1
+ import { c as e, l as t } from "./apiBuild-B2m4XK_8.js";
2
+ export { e as runApiBuild, t as runServeBundleBuild };
package/dist/bin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { X as e } from "./inspectMetrics-9ZSuDeqD.js";
3
- import { r as t } from "./commands-BxRaIOBG.js";
4
- import { l as n } from "./dbCommand-DVASmZj2.js";
2
+ import { Z as e } from "./inspectMetrics-dcC7gnxu.js";
3
+ import { r as t } from "./commands-CaIhTsC2.js";
4
+ import { l as n } from "./dbCommand-CC61CsAc.js";
5
5
  import { createLogger as r } from "@voltro/logger";
6
6
  //#region src/sqlErrorDetail.ts
7
7
  var i = (e) => typeof e == "object" && !!e, a = (e) => {