@stacksjs/actions 0.70.87 → 0.70.90

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 (159) hide show
  1. package/dist/action.js +78 -2
  2. package/dist/actions.js +2 -2
  3. package/dist/add.js +20 -2
  4. package/dist/ai/request-model-access.js +10 -2
  5. package/dist/auth/client.js +44 -3
  6. package/dist/auth/prune.js +35 -2
  7. package/dist/auth/setup.js +152 -36
  8. package/dist/auth/token.js +10 -2
  9. package/dist/blog-admin.d.ts +55 -0
  10. package/dist/blog-admin.js +156 -0
  11. package/dist/blog.d.ts +11 -0
  12. package/dist/blog.js +306 -56
  13. package/dist/build/cli.js +6 -2
  14. package/dist/build/component-libs.js +7 -2
  15. package/dist/build/core.js +55 -2
  16. package/dist/build/desktop.js +5 -2
  17. package/dist/build/docs.js +5 -2
  18. package/dist/build/frontend-static.js +123 -8
  19. package/dist/build/server.js +6 -2
  20. package/dist/build/stacks.js +8 -2
  21. package/dist/build/views.js +11 -2
  22. package/dist/build.js +64 -2
  23. package/dist/bump.js +162 -7
  24. package/dist/cdn/invalidate-cache.js +0 -1
  25. package/dist/changelog.js +27 -3
  26. package/dist/check/ports.js +16 -2
  27. package/dist/clean.js +4 -2
  28. package/dist/commit.js +12 -2
  29. package/dist/copy-types.js +10 -3
  30. package/dist/database/seed.js +26 -2
  31. package/dist/deploy/create-receipt-rule.js +36 -2
  32. package/dist/deploy/index.js +1318 -44
  33. package/dist/dev/api.js +94 -6
  34. package/dist/dev/components.js +7 -2
  35. package/dist/dev/dashboard-globals.js +89 -3
  36. package/dist/dev/dashboard-utils.js +380 -2
  37. package/dist/dev/dashboard.js +435 -8
  38. package/dist/dev/desktop.js +5 -2
  39. package/dist/dev/docs.js +24 -2
  40. package/dist/dev/index.js +29 -2
  41. package/dist/dev/migrate-watcher.js +74 -2
  42. package/dist/dev/system-tray.js +5 -2
  43. package/dist/dev/views.js +147 -2
  44. package/dist/discover-packages.js +32 -2
  45. package/dist/domains/add.js +61 -2
  46. package/dist/domains/purchase.js +66 -2
  47. package/dist/domains/remove.js +24 -2
  48. package/dist/examples.js +34 -2
  49. package/dist/find-projects.js +16 -2
  50. package/dist/fresh.js +17 -2
  51. package/dist/generate/action-types.js +9 -4
  52. package/dist/generate/component-meta.js +9 -3
  53. package/dist/generate/custom-cli-file.js +20 -3
  54. package/dist/generate/env-files.js +46 -6
  55. package/dist/generate/ide-helpers.js +8 -3
  56. package/dist/generate/index.js +158 -2
  57. package/dist/generate/lib-entries.js +16 -3
  58. package/dist/generate/pantry-file.js +46 -2
  59. package/dist/generate/symlink-core.js +2 -2
  60. package/dist/generate/types.js +3 -2
  61. package/dist/generate/vscode-custom-data.js +9 -3
  62. package/dist/generate/web-types.js +0 -1
  63. package/dist/helpers/component-meta.js +295 -2
  64. package/dist/helpers/index.js +1 -2
  65. package/dist/helpers/lib-entries.js +73 -2
  66. package/dist/helpers/package-json.js +45 -14
  67. package/dist/helpers/utils.js +105 -2
  68. package/dist/helpers/vscode-custom-data.js +30 -2
  69. package/dist/index.d.ts +13 -0
  70. package/dist/index.js +50 -2
  71. package/dist/key-generate.js +24 -2
  72. package/dist/lint/fix.js +4 -3
  73. package/dist/lint/index.js +4 -3
  74. package/dist/lint/lint.js +34 -2
  75. package/dist/make-command.js +64 -14
  76. package/dist/make-job.js +41 -16
  77. package/dist/make-policy.js +74 -26
  78. package/dist/make-resource.js +50 -21
  79. package/dist/make.js +328 -2
  80. package/dist/migrate/database.js +16 -2
  81. package/dist/migrate/fresh.js +31 -2
  82. package/dist/orm/base.js +0 -2
  83. package/dist/orm/test.js +0 -1
  84. package/dist/prepublish.js +16 -2
  85. package/dist/queue/clear.js +42 -2
  86. package/dist/queue/dlq-purge.js +28 -2
  87. package/dist/queue/dlq-retry.js +35 -2
  88. package/dist/queue/dlq.js +55 -5
  89. package/dist/queue/failed.js +69 -5
  90. package/dist/queue/flush.js +49 -3
  91. package/dist/queue/inspect.js +154 -8
  92. package/dist/queue/list.js +69 -5
  93. package/dist/queue/monitor.js +94 -6
  94. package/dist/queue/pause.js +28 -2
  95. package/dist/queue/quarantine.js +42 -3
  96. package/dist/queue/resume.js +27 -2
  97. package/dist/queue/retry.js +41 -2
  98. package/dist/queue/schedule-list.js +33 -5
  99. package/dist/queue/schedule.js +12 -2
  100. package/dist/queue/status.js +68 -5
  101. package/dist/queue/table.js +10 -2
  102. package/dist/queue/unquarantine.js +27 -2
  103. package/dist/queue/work.js +57 -2
  104. package/dist/release.js +21 -3
  105. package/dist/route/list.js +78 -3
  106. package/dist/run-action.js +1 -2
  107. package/dist/saas/setup.js +9 -2
  108. package/dist/scaffold-crud.js +164 -40
  109. package/dist/schedule/run.js +7 -2
  110. package/dist/search/flush.js +10 -2
  111. package/dist/search/import.js +10 -2
  112. package/dist/search/settings-list.js +10 -2
  113. package/dist/search/settings.js +9 -2
  114. package/dist/serve/api.js +35 -2
  115. package/dist/setup/index.js +1 -2
  116. package/dist/setup/ssl.js +271 -2
  117. package/dist/stacks.js +265 -2
  118. package/dist/templates.js +301 -2
  119. package/dist/test/feature.js +11 -2
  120. package/dist/test/index.js +11 -2
  121. package/dist/test/ui.js +4 -2
  122. package/dist/test/unit.js +11 -2
  123. package/dist/typecheck.js +4 -2
  124. package/dist/types.js +16 -2
  125. package/dist/upgrade/binary.js +29 -2
  126. package/dist/upgrade/bun.js +0 -1
  127. package/dist/upgrade/dependencies.js +0 -2
  128. package/dist/upgrade/framework-utils.js +193 -2
  129. package/dist/upgrade/framework.js +310 -7
  130. package/dist/upgrade/index.js +17 -2
  131. package/dist/upgrade/packages.js +99 -12
  132. package/dist/upgrade/shell.js +40 -4
  133. package/dist/upgrade.js +38 -2
  134. package/package.json +16 -16
  135. package/dist/chunk-0c8sd1t6.js +0 -2
  136. package/dist/chunk-0g2nzhx9.js +0 -240
  137. package/dist/chunk-0gadhvn7.js +0 -3
  138. package/dist/chunk-0h27aa4r.js +0 -93
  139. package/dist/chunk-3peh8kqs.js +0 -851
  140. package/dist/chunk-62gdfav8.js +0 -3
  141. package/dist/chunk-6bk53y02.js +0 -3
  142. package/dist/chunk-78c5n3s2.js +0 -3
  143. package/dist/chunk-c74qv38e.js +0 -17
  144. package/dist/chunk-cdk2r2jd.js +0 -1
  145. package/dist/chunk-dbz9dp2h.js +0 -3
  146. package/dist/chunk-e142dheq.js +0 -3
  147. package/dist/chunk-ec4gky40.js +0 -3
  148. package/dist/chunk-h3d81wrg.js +0 -3
  149. package/dist/chunk-m3q0x4h0.js +0 -688
  150. package/dist/chunk-mqgbyhph.js +0 -5
  151. package/dist/chunk-n24m8prb.js +0 -3
  152. package/dist/chunk-n5eqwhck.js +0 -7
  153. package/dist/chunk-nsvnqv8y.js +0 -5
  154. package/dist/chunk-nty6mmx4.js +0 -283
  155. package/dist/chunk-s735m9mg.js +0 -1
  156. package/dist/chunk-tpb8jgsk.js +0 -7
  157. package/dist/chunk-tsbk5vne.js +0 -3
  158. package/dist/chunk-xg9xscqz.js +0 -1
  159. package/dist/chunk-y6e448he.js +0 -7
@@ -1,2 +1,55 @@
1
- // @bun
2
- var{$:J}=globalThis.Bun;import{existsSync as L,readFileSync as Q,statSync as V}from"fs";import{basename as W}from"path";import X from"process";import{dim as w,italic as z,log as v}from"@stacksjs/cli";import{feature as Y}from"@stacksjs/config";import{corePath as Z}from"@stacksjs/path";import{glob as D}from"@stacksjs/storage";import{ExitCode as K}from"@stacksjs/types";v.info("Building core packages");var R={cms:"cms",commerce:"commerce",queue:"queue",realtime:"realtime"},U=(await D([Z("*")],{onlyFiles:!1})).sort(),M=U.filter((q)=>{if(!L(q)||!V(q).isDirectory())return!1;let H=`${q}/package.json`;if(!L(H))return!1;let N=W(q),I=R[N];if(I&&!Y(I))return v.info(`Skipping ${z(w(q))} \u2014 feature '${I}' is disabled`),!1;try{return typeof JSON.parse(Q(H,"utf8")).scripts?.build==="string"}catch(O){return v.warn(`Skipping ${z(w(q))}: package.json could not be read`),!1}});if(M.length===0)v.info("No core packages found"),X.exit(K.FatalError);var B=[];for(let q of M){v.info(`\uD83C\uDFD7\uFE0F Building ${z(w(q))}`);try{J.cwd(q),await J`bun run build`,v.success(`${z(w(q))} built`)}catch(H){v.warn(`Failed to build ${z(w(q))}, skipping...`),B.push(q)}console.log("")}if(B.length>0){v.warn(`${B.length} package(s) failed to build:`);for(let q of B)v.warn(` - ${q}`)}
1
+ import { $ } from "bun";
2
+ import { existsSync, readFileSync, statSync } from "node:fs";
3
+ import { basename } from "node:path";
4
+ import process from "node:process";
5
+ import { dim, italic, log } from "@stacksjs/cli";
6
+ import { feature } from "@stacksjs/config";
7
+ import { corePath } from "@stacksjs/path";
8
+ import { glob } from "@stacksjs/storage";
9
+ import { ExitCode } from "@stacksjs/types";
10
+ log.info("Building core packages");
11
+ const FEATURE_GATED_PACKAGES = {
12
+ cms: "cms",
13
+ commerce: "commerce",
14
+ queue: "queue",
15
+ realtime: "realtime"
16
+ }, allEntries = (await glob([corePath("*")], { onlyFiles: !1 })).sort(), dirs = allEntries.filter((entry) => {
17
+ if (!existsSync(entry) || !statSync(entry).isDirectory())
18
+ return !1;
19
+ const pkgPath = `${entry}/package.json`;
20
+ if (!existsSync(pkgPath))
21
+ return !1;
22
+ const name = basename(entry), gate = FEATURE_GATED_PACKAGES[name];
23
+ if (gate && !feature(gate)) {
24
+ log.info(`Skipping ${italic(dim(entry))} \u2014 feature '${gate}' is disabled`);
25
+ return !1;
26
+ }
27
+ try {
28
+ return typeof JSON.parse(readFileSync(pkgPath, "utf8")).scripts?.build === "string";
29
+ } catch (error) {
30
+ log.warn(`Skipping ${italic(dim(entry))}: package.json could not be read`);
31
+ return !1;
32
+ }
33
+ });
34
+ if (dirs.length === 0) {
35
+ log.info("No core packages found");
36
+ process.exit(ExitCode.FatalError);
37
+ }
38
+ const failed = [];
39
+ for (const folder of dirs) {
40
+ log.info(`\uD83C\uDFD7\uFE0F Building ${italic(dim(folder))}`);
41
+ try {
42
+ $.cwd(folder);
43
+ await $`bun run build`;
44
+ log.success(`${italic(dim(folder))} built`);
45
+ } catch (error) {
46
+ log.warn(`Failed to build ${italic(dim(folder))}, skipping...`);
47
+ failed.push(folder);
48
+ }
49
+ console.log("");
50
+ }
51
+ if (failed.length > 0) {
52
+ log.warn(`${failed.length} package(s) failed to build:`);
53
+ for (const f of failed)
54
+ log.warn(` - ${f}`);
55
+ }
@@ -1,2 +1,5 @@
1
- // @bun
2
- import{runCommand as o}from"@stacksjs/cli";import{corePath as r}from"@stacksjs/path";await o("bun run build:app",{cwd:r("desktop")});
1
+ import { runCommand } from "@stacksjs/cli";
2
+ import { corePath } from "@stacksjs/path";
3
+ await runCommand("bun run build:app", {
4
+ cwd: corePath("desktop")
5
+ });
@@ -1,2 +1,5 @@
1
- // @bun
2
- import{runCommand as r}from"@stacksjs/cli";import{projectPath as m}from"@stacksjs/path";await r("bunpress build",{cwd:m()});
1
+ import { runCommand } from "@stacksjs/cli";
2
+ import { projectPath } from "@stacksjs/path";
3
+ await runCommand("bunpress build", {
4
+ cwd: projectPath()
5
+ });
@@ -1,9 +1,124 @@
1
- // @bun
2
- import{Lb as V}from"../chunk-h3d81wrg.js";import{copyFileSync as j,existsSync as _,mkdirSync as w,readdirSync as D,readFileSync as g,rmSync as P,statSync as S,writeFileSync as N}from"fs";import{join as W}from"path";import F from"process";import{publicPath as C,resourcesPath as M,storagePath as v}from"@stacksjs/path";var y=F.argv.includes("--verbose")||F.argv.includes("-v");function Z(...J){if(y)console.log("\uD83D\uDD0D",...J)}async function b(){try{let{generateSignalsRuntime:J}=await import("@stacksjs/stx/signals");return`<script>
3
- ${J()}
4
- </script>`}catch{return console.warn("Could not load STX signals runtime"),""}}function A(J,z){if(!_(z))w(z,{recursive:!0});for(let Q of D(J)){if(Q===".DS_Store")continue;let T=W(J,Q),X=W(z,Q);if(S(T).isDirectory())A(T,X);else j(T,X)}}async function h(J={}){let z=J.outDir??v("framework/frontend-dist");if(_(z))P(z,{recursive:!0});w(z,{recursive:!0}),w(W(z,"assets"),{recursive:!0});let Q=M("views/index.stx");if(_(Q)){let q=g(Q,"utf-8"),f=q.match(/<script server>([\s\S]*?)<\/script>/),$={};if(f){let L=f[1]??"";try{let I=[...L.matchAll(/(?:const|let|var)\s+(\w+)\s*=/g)].map((K)=>K[1]).filter((K)=>Boolean(K));$=Function(`${L}
5
- return { ${I.join(", ")} }`)()}catch(I){Z(` Server block evaluation failed: ${I}, falling back to regex`);let G=L.matchAll(/const\s+(\w+)\s*=\s*(?:'([^']*)'|"([^"]*)"|([\d.]+))/g);for(let K of G){let U=K[1];if(U)$[U]=K[2]??K[3]??K[4]}}q=q.replace(/<script server>[\s\S]*?<\/script>\s*/,"")}q=q.replace(/\{\{\s*(\w+)\s*\}\}/g,(L,I)=>{let G=$[I];return G!==void 0&&G!==null?String(G):""});let R=/@foreach\s*\((\w+)\s+as\s+(\w+)\)([\s\S]*?)@endforeach/g;if(q=q.replace(R,(L,I,G,K)=>{let U=$[I];if(!Array.isArray(U)||U.length===0)return"";let B="";for(let H of U){let Y=K;Y=Y.replace(new RegExp(`\\{\\{\\s*${G}\\.(\\w+)\\s*\\}\\}`,"g"),(k,E)=>{let O=H[E];return O!==void 0&&O!==null?String(O):""}),Y=Y.replace(new RegExp(`\\{!!\\s*${G}\\.(\\w+)\\s*!!\\}`,"g"),(k,E)=>{let O=H[E];return O!==void 0&&O!==null?String(O):""}),B+=Y}return B}),q=q.replace(/^\s*@extends\([^)]+\)\s*$/gm,"").replace(/^\s*@include\([^)]+\)\s*$/gm,"").replace(/^\s*@section\('title',\s*['"][^'"]*['"]\)\s*$/gm,"").replace(/^\s*@section\('(?:content|footer)'\)\s*$/gm,"").replace(/^\s*@endsection\s*$/gm,""),/data-stx-scope|@model|@show|@text|@class|@style|@bind:|@if=|@for=/.test(q)){let L=await b();if(L){let I=q.match(/<body[^>]*>/);if(I){let G=(q.indexOf(I[0])??0)+I[0].length;q=q.slice(0,G)+`
6
- `+L+q.slice(G)}else q=L+`
7
- `+q;Z(" Injected STX signals runtime for client-side reactivity")}}N(W(z,"index.html"),q),Z(" Built index.html from STX template")}else N(W(z,"index.html"),`<!DOCTYPE html>
1
+ import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import process from "node:process";
4
+ import { publicPath, resourcesPath, storagePath } from "@stacksjs/path";
5
+ const isVerbose = process.argv.includes("--verbose") || process.argv.includes("-v");
6
+ function debug(...args) {
7
+ if (isVerbose)
8
+ console.log("\uD83D\uDD0D", ...args);
9
+ }
10
+ async function getSignalsRuntime() {
11
+ try {
12
+ const { generateSignalsRuntime } = await import("@stacksjs/stx/signals");
13
+ return `<script>
14
+ ${generateSignalsRuntime()}
15
+ </script>`;
16
+ } catch {
17
+ console.warn("Could not load STX signals runtime");
18
+ return "";
19
+ }
20
+ }
21
+ function copyDir(src, dest) {
22
+ if (!existsSync(dest))
23
+ mkdirSync(dest, { recursive: !0 });
24
+ for (const item of readdirSync(src)) {
25
+ if (item === ".DS_Store")
26
+ continue;
27
+ const srcPath = join(src, item), destPath = join(dest, item);
28
+ if (statSync(srcPath).isDirectory())
29
+ copyDir(srcPath, destPath);
30
+ else
31
+ copyFileSync(srcPath, destPath);
32
+ }
33
+ }
34
+ export async function buildFrontendStatic(options = {}) {
35
+ const buildDir = options.outDir ?? storagePath("framework/frontend-dist");
36
+ if (existsSync(buildDir))
37
+ rmSync(buildDir, { recursive: !0 });
38
+ mkdirSync(buildDir, { recursive: !0 });
39
+ mkdirSync(join(buildDir, "assets"), { recursive: !0 });
40
+ const indexPath = resourcesPath("views/index.stx");
41
+ if (existsSync(indexPath)) {
42
+ let stxContent = readFileSync(indexPath, "utf-8");
43
+ const serverBlockMatch = stxContent.match(/<script server>([\s\S]*?)<\/script>/);
44
+ let serverVars = {};
45
+ if (serverBlockMatch) {
46
+ const serverCode = serverBlockMatch[1] ?? "";
47
+ try {
48
+ const varNames = [...serverCode.matchAll(/(?:const|let|var)\s+(\w+)\s*=/g)].map((m) => m[1]).filter((name) => Boolean(name));
49
+ serverVars = Function(`${serverCode}
50
+ return { ${varNames.join(", ")} }`)();
51
+ } catch (evalErr) {
52
+ debug(` Server block evaluation failed: ${evalErr}, falling back to regex`);
53
+ const constMatches = serverCode.matchAll(/const\s+(\w+)\s*=\s*(?:'([^']*)'|"([^"]*)"|([\d.]+))/g);
54
+ for (const m of constMatches) {
55
+ const name = m[1];
56
+ if (name)
57
+ serverVars[name] = m[2] ?? m[3] ?? m[4];
58
+ }
59
+ }
60
+ stxContent = stxContent.replace(/<script server>[\s\S]*?<\/script>\s*/, "");
61
+ }
62
+ stxContent = stxContent.replace(/\{\{\s*(\w+)\s*\}\}/g, (_, varName) => {
63
+ const val = serverVars[varName];
64
+ return val !== void 0 && val !== null ? String(val) : "";
65
+ });
66
+ const foreachRegex = /@foreach\s*\((\w+)\s+as\s+(\w+)\)([\s\S]*?)@endforeach/g;
67
+ stxContent = stxContent.replace(foreachRegex, (_, collectionName, itemVar, template) => {
68
+ const collection = serverVars[collectionName];
69
+ if (!Array.isArray(collection) || collection.length === 0)
70
+ return "";
71
+ let rendered = "";
72
+ for (const item of collection) {
73
+ let itemHtml = template;
74
+ itemHtml = itemHtml.replace(new RegExp(`\\{\\{\\s*${itemVar}\\.(\\w+)\\s*\\}\\}`, "g"), (_match, prop) => {
75
+ const val = item[prop];
76
+ return val !== void 0 && val !== null ? String(val) : "";
77
+ });
78
+ itemHtml = itemHtml.replace(new RegExp(`\\{!!\\s*${itemVar}\\.(\\w+)\\s*!!\\}`, "g"), (_match, prop) => {
79
+ const val = item[prop];
80
+ return val !== void 0 && val !== null ? String(val) : "";
81
+ });
82
+ rendered += itemHtml;
83
+ }
84
+ return rendered;
85
+ });
86
+ stxContent = stxContent.replace(/^\s*@extends\([^)]+\)\s*$/gm, "").replace(/^\s*@include\([^)]+\)\s*$/gm, "").replace(/^\s*@section\('title',\s*['"][^'"]*['"]\)\s*$/gm, "").replace(/^\s*@section\('(?:content|footer)'\)\s*$/gm, "").replace(/^\s*@endsection\s*$/gm, "");
87
+ if (/data-stx-scope|@model|@show|@text|@class|@style|@bind:|@if=|@for=/.test(stxContent)) {
88
+ const signalsRuntime = await getSignalsRuntime();
89
+ if (signalsRuntime) {
90
+ const bodyMatch = stxContent.match(/<body[^>]*>/);
91
+ if (bodyMatch) {
92
+ const insertPos = (stxContent.indexOf(bodyMatch[0]) ?? 0) + bodyMatch[0].length;
93
+ stxContent = stxContent.slice(0, insertPos) + `
94
+ ` + signalsRuntime + stxContent.slice(insertPos);
95
+ } else
96
+ stxContent = signalsRuntime + `
97
+ ` + stxContent;
98
+ debug(" Injected STX signals runtime for client-side reactivity");
99
+ }
100
+ }
101
+ writeFileSync(join(buildDir, "index.html"), stxContent);
102
+ debug(" Built index.html from STX template");
103
+ } else {
104
+ const defaultIndex = `<!DOCTYPE html>
8
105
  <html><head><title>Stacks</title></head>
9
- <body><h1>Welcome to Stacks</h1></body></html>`);let T=M("assets");if(_(T))A(T,W(z,"assets")),Z(" Copied resources/assets directory");let X=C();if(_(X))A(X,z),Z(" Copied public/ directory");return z}if(import.meta.main){let J=await h();console.log(`\u2713 Built frontend static site \u2192 ${J}`)}export{h as buildFrontendStatic};
106
+ <body><h1>Welcome to Stacks</h1></body></html>`;
107
+ writeFileSync(join(buildDir, "index.html"), defaultIndex);
108
+ }
109
+ const assetsPath = resourcesPath("assets");
110
+ if (existsSync(assetsPath)) {
111
+ copyDir(assetsPath, join(buildDir, "assets"));
112
+ debug(" Copied resources/assets directory");
113
+ }
114
+ const projectPublic = publicPath();
115
+ if (existsSync(projectPublic)) {
116
+ copyDir(projectPublic, buildDir);
117
+ debug(" Copied public/ directory");
118
+ }
119
+ return buildDir;
120
+ }
121
+ if (import.meta.main) {
122
+ const outDir = await buildFrontendStatic();
123
+ console.log(`\u2713 Built frontend static site \u2192 ${outDir}`);
124
+ }
@@ -1,2 +1,6 @@
1
- // @bun
2
- var{$:o}=globalThis.Bun;import{log as r}from"@stacksjs/cli";import{frameworkPath as i}from"@stacksjs/path";r.info("Building Server...");o.cwd(i("cloud"));await o`bun build.ts`;
1
+ import { $ } from "bun";
2
+ import { log } from "@stacksjs/cli";
3
+ import { frameworkPath } from "@stacksjs/path";
4
+ log.info("Building Server...");
5
+ $.cwd(frameworkPath("cloud"));
6
+ await $`bun build.ts`;
@@ -1,2 +1,8 @@
1
- // @bun
2
- import{runCommands as q}from"@stacksjs/cli";import{projectPath as v}from"@stacksjs/path";await q(["bun storage/framework/core/actions/src/build/cli.ts"],{verbose:!0,cwd:v()});await q(["bun storage/framework/core/actions/src/build/core.ts"],{verbose:!0,cwd:v()});
1
+ import { runCommands } from "@stacksjs/cli";
2
+ import { projectPath } from "@stacksjs/path";
3
+ await runCommands([
4
+ "bun storage/framework/core/actions/src/build/cli.ts"
5
+ ], { verbose: !0, cwd: projectPath() });
6
+ await runCommands([
7
+ "bun storage/framework/core/actions/src/build/core.ts"
8
+ ], { verbose: !0, cwd: projectPath() });
@@ -1,2 +1,11 @@
1
- // @bun
2
- import{runCommand as b}from"@stacksjs/cli";import{frameworkPath as x,projectPath as q}from"@stacksjs/path";var z=q("build.ts");if(await Bun.file(z).exists())await b("bun build.ts",{cwd:q()});else await b("bun run build",{cwd:x("views/web")});
1
+ import { runCommand } from "@stacksjs/cli";
2
+ import { frameworkPath, projectPath } from "@stacksjs/path";
3
+ const projectBuild = projectPath("build.ts");
4
+ if (await Bun.file(projectBuild).exists())
5
+ await runCommand("bun build.ts", {
6
+ cwd: projectPath()
7
+ });
8
+ else
9
+ await runCommand("bun run build", {
10
+ cwd: frameworkPath("views/web")
11
+ });
package/dist/build.js CHANGED
@@ -1,2 +1,64 @@
1
- // @bun
2
- import{yb as B}from"./chunk-78c5n3s2.js";import"./chunk-tpb8jgsk.js";import"./chunk-tsbk5vne.js";import"./chunk-s735m9mg.js";import"./chunk-0gadhvn7.js";import"./chunk-h3d81wrg.js";import{NpmScript as z}from"@stacksjs/enums";import{log as x}from"@stacksjs/logging";import{hasComponents as D,hasFunctions as G}from"@stacksjs/storage";import{runNpmScript as A}from"@stacksjs/utils";async function H(q){if(q.components)await I(q);else if(q.webComponents||q.elements)await E(q);else if(q.functions)await O(q);else if(q.docs)await K(q);else if(q.stacks)await M(q);await B()}async function W(q){return await H(q)}async function I(q){await A(z.GenerateEntries,q),await J(q),await E(q)}async function J(q){if(D())x.info("Building your component library..."),await A(z.BuildComponents,q),x.success("Your component library was built successfully");else x.warn("No components found."),x.info("Before you can build components,"),x.info("you need to have created some in the ./components folder.")}async function E(q){if(x.info("Building your component library for production use & npm/CDN distribution..."),D())await A(z.BuildWebComponents,q),x.success("Your Web Component library was built successfully");else x.info("No components found.")}async function K(q){x.info("Building the documentation site..."),await A(z.BuildDocs,q),x.success("Docs built successfully")}async function M(q){x.info("Building the Stacks Framework..."),await A(z.BuildStacks,q),x.success("Stacks built successfully")}async function O(q){if(G())x.info("Building your functions library for production usages..."),x.info("Production usages include: manual npm distribution and/or CDN distribution"),await A(z.BuildFunctions,q),x.success("Functions library built successfully");else x.info("No functions found")}export{E as webComponentLibrary,J as vueComponentLibrary,M as stacks,H as invoke,O as functionsLibrary,K as docs,I as componentLibraries,W as build};
1
+ import { NpmScript } from "@stacksjs/enums";
2
+ import { log } from "@stacksjs/logging";
3
+ import { hasComponents, hasFunctions } from "@stacksjs/storage";
4
+ import { runNpmScript } from "@stacksjs/utils";
5
+ import { generateTypes } from "./generate";
6
+ export async function invoke(options) {
7
+ if (options.components)
8
+ await componentLibraries(options);
9
+ else if (options.webComponents || options.elements)
10
+ await webComponentLibrary(options);
11
+ else if (options.functions)
12
+ await functionsLibrary(options);
13
+ else if (options.docs)
14
+ await docs(options);
15
+ else if (options.stacks)
16
+ await stacks(options);
17
+ await generateTypes();
18
+ }
19
+ export async function build(options) {
20
+ return await invoke(options);
21
+ }
22
+ export async function componentLibraries(options) {
23
+ await runNpmScript(NpmScript.GenerateEntries, options);
24
+ await vueComponentLibrary(options);
25
+ await webComponentLibrary(options);
26
+ }
27
+ export async function vueComponentLibrary(options) {
28
+ if (hasComponents()) {
29
+ log.info("Building your component library...");
30
+ await runNpmScript(NpmScript.BuildComponents, options);
31
+ log.success("Your component library was built successfully");
32
+ } else {
33
+ log.warn("No components found.");
34
+ log.info("Before you can build components,");
35
+ log.info("you need to have created some in the ./components folder.");
36
+ }
37
+ }
38
+ export async function webComponentLibrary(options) {
39
+ log.info("Building your component library for production use & npm/CDN distribution...");
40
+ if (hasComponents()) {
41
+ await runNpmScript(NpmScript.BuildWebComponents, options);
42
+ log.success("Your Web Component library was built successfully");
43
+ } else
44
+ log.info("No components found.");
45
+ }
46
+ export async function docs(options) {
47
+ log.info("Building the documentation site...");
48
+ await runNpmScript(NpmScript.BuildDocs, options);
49
+ log.success("Docs built successfully");
50
+ }
51
+ export async function stacks(options) {
52
+ log.info("Building the Stacks Framework...");
53
+ await runNpmScript(NpmScript.BuildStacks, options);
54
+ log.success("Stacks built successfully");
55
+ }
56
+ export async function functionsLibrary(options) {
57
+ if (hasFunctions()) {
58
+ log.info("Building your functions library for production usages...");
59
+ log.info("Production usages include: manual npm distribution and/or CDN distribution");
60
+ await runNpmScript(NpmScript.BuildFunctions, options);
61
+ log.success("Functions library built successfully");
62
+ } else
63
+ log.info("No functions found");
64
+ }
package/dist/bump.js CHANGED
@@ -1,8 +1,163 @@
1
- #!/usr/bin/env bun
2
- // @bun
3
- import{execSync as y,log as Y,parseOptions as x}from"@stacksjs/cli";import{path as I}from"@stacksjs/path";import{versionBump as F}from"@stacksjs/bumpx";import{generateChangelog as h,loadLogsmithConfig as f}from"@stacksjs/logsmith";import{existsSync as L,readFileSync as O,writeFileSync as A}from"fs";import{join as k,relative as w}from"path";var T=x(),b=new Set(["patch","minor","major","prepatch","preminor","premajor","prerelease"]),U=T?.bump?.toString(),V=U?b.has(U)||/^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(U)?U:null:null;if(U&&!V)Y.warn(`Ignoring invalid --bump "${U}"; expected one of patch|minor|major or x.y.z`);var W=T?.dryRun===!0,R=T?.verbose===!0;async function M(q){if(!L(q))return;return await Bun.file(q).json()}var S=I.projectPath("package.json"),C=await M(S),Z=C?.name==="stacks"&&L(I.frameworkPath("core/package.json")),K=Z?I.frameworkPath("core"):I.projectPath(),B=Z?I.frameworkPath("core/package.json"):S;async function d(q){if(!q||/^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(q))return q;if(!["patch","minor","major"].includes(q))return q;let G=(await M(B))?.version?.match(/^(\d+)\.(\d+)\.(\d+)$/);if(!G)return q;let z=Number(G[1]),H=Number(G[2]),J=Number(G[3]);if(q==="major")return`${z+1}.0.0`;if(q==="minor")return`${z}.${H+1}.0`;return`${z}.${H}.${J+1}`}var X=await d(V);async function Q(q,E=I.projectPath()){return await y(["git",...q],{cwd:E,stdin:"inherit"})}async function c(q){let E=await M(q);if(!E?.version||!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(E.version))throw Error(`Invalid version in ${q}: ${E?.version??"<missing>"}`);return E.version}async function $(q,E){let G=new Bun.Glob(q),z=[];for await(let H of G.scan({cwd:E,absolute:!0,onlyFiles:!0})){if(H.includes("/node_modules/")||H.includes("/dist/")||H.includes("/pantry/"))continue;z.push(`./${w(K,H)}`)}return z}async function u(q){let E=[];for(let G of q){let z=k(K,G);if(await Bun.file(z).exists())E.push(G)}return E}async function g(){return Array.from(new Set([...await $("package.json",K),...await $("*/package.json",K),...await $("*/*/package.json",K),...await u(["../package.json","../defaults/ide/vscode/package.json","../api/package.json","../cloud/package.json","../docs/package.json","../orm/package.json","../server/package.json"]),...await $("../libs/**/package.json",K)]))}var v=Z?await g():["./package.json"];Y.debug(`Release mode: ${Z?"framework monorepo":"consumer app"} (${C?.name??"unknown"})`);Y.debug(`Bumping ${v.length} package manifest(s) in ${K}`);await F({release:X??void 0,files:v,cwd:K,recursive:!1,commit:!1,tag:!1,push:!1,changelog:!1,noGitCheck:!0,dryRun:W,yes:Boolean(X),verbose:R});var N=W&&X&&/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(X)?X:await c(B),l=(await Q(["describe","--abbrev=0","--tags"]).catch(()=>"")).trim();async function m(){let q=await f({dir:I.projectPath(),from:l||void 0,to:"HEAD",output:W?!1:"CHANGELOG.md",theme:"github",verbose:R}),E=await h(q);if(W){Y.info(E.content);return}let G=I.projectPath("CHANGELOG.md");if(!L(G))return;let z=O(G,"utf-8"),H=new RegExp(`\\bv?${N.replace(/\./g,"\\.")}\\b`);if(/\/compare\/[^)\s]+\.\.\.HEAD\)/.test(z))z=z.replace(/(\/compare\/[^)\s]+\.\.\.)HEAD(\))/,`$1v${N}$2`);else if(!H.test(z.split(`
4
- `).slice(0,4).join(`
5
- `)))z=z.replace(/^(#\s.*\n+)?/,(J)=>`${J??""}## v${N}
1
+ import { execSync, log, parseOptions } from "@stacksjs/cli";
2
+ import { path as p } from "@stacksjs/path";
3
+ import { versionBump } from "@stacksjs/bumpx";
4
+ import { generateChangelog, loadLogsmithConfig } from "@stacksjs/logsmith";
5
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
6
+ import { join, relative } from "node:path";
7
+ const options = parseOptions(), allowedBumps = new Set(["patch", "minor", "major", "prepatch", "preminor", "premajor", "prerelease"]), rawBump = options?.bump?.toString(), bumpArg = rawBump ? allowedBumps.has(rawBump) || /^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(rawBump) ? rawBump : null : null;
8
+ if (rawBump && !bumpArg)
9
+ log.warn(`Ignoring invalid --bump "${rawBump}"; expected one of patch|minor|major or x.y.z`);
10
+ const isDryRun = options?.dryRun === !0, isVerbose = options?.verbose === !0;
11
+ async function readPackage(file) {
12
+ if (!existsSync(file))
13
+ return;
14
+ return await Bun.file(file).json();
15
+ }
16
+ const rootManifest = p.projectPath("package.json"), rootPkg = await readPackage(rootManifest), isFrameworkRelease = rootPkg?.name === "stacks" && existsSync(p.frameworkPath("core/package.json")), bumpCwd = isFrameworkRelease ? p.frameworkPath("core") : p.projectPath(), primaryManifest = isFrameworkRelease ? p.frameworkPath("core/package.json") : rootManifest;
17
+ async function resolveBumpArg(bump) {
18
+ if (!bump || /^\d+\.\d+\.\d+(?:-[\w.]+)?$/.test(bump))
19
+ return bump;
20
+ if (!["patch", "minor", "major"].includes(bump))
21
+ return bump;
22
+ const match = (await readPackage(primaryManifest))?.version?.match(/^(\d+)\.(\d+)\.(\d+)$/);
23
+ if (!match)
24
+ return bump;
25
+ const major = Number(match[1]), minor = Number(match[2]), patch = Number(match[3]);
26
+ if (bump === "major")
27
+ return `${major + 1}.0.0`;
28
+ if (bump === "minor")
29
+ return `${major}.${minor + 1}.0`;
30
+ return `${major}.${minor}.${patch + 1}`;
31
+ }
32
+ const resolvedBumpArg = await resolveBumpArg(bumpArg);
33
+ async function git(args, cwd = p.projectPath()) {
34
+ return await execSync(["git", ...args], {
35
+ cwd,
36
+ stdin: "inherit"
37
+ });
38
+ }
39
+ async function readVersion(file) {
40
+ const pkg = await readPackage(file);
41
+ if (!pkg?.version || !/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(pkg.version))
42
+ throw Error(`Invalid version in ${file}: ${pkg?.version ?? "<missing>"}`);
43
+ return pkg.version;
44
+ }
45
+ async function packageFilesFor(pattern, cwd) {
46
+ const glob = new Bun.Glob(pattern), files = [];
47
+ for await (const file of glob.scan({ cwd, absolute: !0, onlyFiles: !0 })) {
48
+ if (file.includes("/node_modules/") || file.includes("/dist/") || file.includes("/pantry/"))
49
+ continue;
50
+ files.push(`./${relative(bumpCwd, file)}`);
51
+ }
52
+ return files;
53
+ }
54
+ async function existingPackageFiles(files) {
55
+ const existing = [];
56
+ for (const file of files) {
57
+ const absolutePath = join(bumpCwd, file);
58
+ if (await Bun.file(absolutePath).exists())
59
+ existing.push(file);
60
+ }
61
+ return existing;
62
+ }
63
+ async function frameworkBumpFiles() {
64
+ return Array.from(new Set([
65
+ ...await packageFilesFor("package.json", bumpCwd),
66
+ ...await packageFilesFor("*/package.json", bumpCwd),
67
+ ...await packageFilesFor("*/*/package.json", bumpCwd),
68
+ ...await existingPackageFiles([
69
+ "../package.json",
70
+ "../defaults/ide/vscode/package.json",
71
+ "../api/package.json",
72
+ "../cloud/package.json",
73
+ "../docs/package.json",
74
+ "../orm/package.json",
75
+ "../server/package.json"
76
+ ]),
77
+ ...await packageFilesFor("../libs/**/package.json", bumpCwd)
78
+ ]));
79
+ }
80
+ const bumpFiles = isFrameworkRelease ? await frameworkBumpFiles() : ["./package.json"];
81
+ log.debug(`Release mode: ${isFrameworkRelease ? "framework monorepo" : "consumer app"} (${rootPkg?.name ?? "unknown"})`);
82
+ log.debug(`Bumping ${bumpFiles.length} package manifest(s) in ${bumpCwd}`);
83
+ await versionBump({
84
+ release: resolvedBumpArg ?? void 0,
85
+ files: bumpFiles,
86
+ cwd: bumpCwd,
87
+ recursive: !1,
88
+ commit: !1,
89
+ tag: !1,
90
+ push: !1,
91
+ changelog: !1,
92
+ noGitCheck: !0,
93
+ dryRun: isDryRun,
94
+ yes: Boolean(resolvedBumpArg),
95
+ verbose: isVerbose
96
+ });
97
+ const nextVersion = isDryRun && resolvedBumpArg && /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(resolvedBumpArg) ? resolvedBumpArg : await readVersion(primaryManifest), latestTag = (await git(["describe", "--abbrev=0", "--tags"]).catch(() => "")).trim();
98
+ async function writeChangelog() {
99
+ const config = await loadLogsmithConfig({
100
+ dir: p.projectPath(),
101
+ from: latestTag || void 0,
102
+ to: "HEAD",
103
+ output: isDryRun ? !1 : "CHANGELOG.md",
104
+ theme: "github",
105
+ verbose: isVerbose
106
+ }), result = await generateChangelog(config);
107
+ if (isDryRun) {
108
+ log.info(result.content);
109
+ return;
110
+ }
111
+ const changelogPath = p.projectPath("CHANGELOG.md");
112
+ if (!existsSync(changelogPath))
113
+ return;
114
+ let content = readFileSync(changelogPath, "utf-8");
115
+ const versionSeen = new RegExp(`\\bv?${nextVersion.replace(/\./g, "\\.")}\\b`);
116
+ if (/\/compare\/[^)\s]+\.\.\.HEAD\)/.test(content))
117
+ content = content.replace(/(\/compare\/[^)\s]+\.\.\.)HEAD(\))/, `$1v${nextVersion}$2`);
118
+ else if (!versionSeen.test(content.split(`
119
+ `).slice(0, 4).join(`
120
+ `)))
121
+ content = content.replace(/^(#\s.*\n+)?/, (match) => `${match ?? ""}## v${nextVersion}
6
122
 
7
- `);A(G,z)}await m();if(!W&&Z)p(N);function p(q){let E=I.frameworkPath("core/package.json"),G=JSON.parse(O(E,"utf-8")),z=0;for(let H of["dependencies","devDependencies"]){let J=G[H];if(!J)continue;for(let _ of Object.keys(J)){if(!_.startsWith("@stacksjs/"))continue;let P=_.slice(10),D=I.frameworkPath(`core/${P}/package.json`);if(!L(D))continue;if(JSON.parse(O(D,"utf-8")).version!==q)continue;let j=`^${q}`;if(J[_]!==j)J[_]=j,z++}}if(z>0)A(E,`${JSON.stringify(G,null,2)}
8
- `),Y.debug(`Pinned ${z} lockstep core dep(s) in the stacks meta to ^${q}`)}if(!W)await Q(["add","--all"]),await Q(["commit","-m",`chore: release v${N}`]),await Q(["tag",`v${N}`]),await Q(["push"]),await Q(["push","origin",`v${N}`]);
123
+ `);
124
+ writeFileSync(changelogPath, content);
125
+ }
126
+ await writeChangelog();
127
+ if (!isDryRun && isFrameworkRelease)
128
+ pinMetaCoreDeps(nextVersion);
129
+ function pinMetaCoreDeps(version) {
130
+ const metaPath = p.frameworkPath("core/package.json"), meta = JSON.parse(readFileSync(metaPath, "utf-8"));
131
+ let pinned = 0;
132
+ for (const field of ["dependencies", "devDependencies"]) {
133
+ const deps = meta[field];
134
+ if (!deps)
135
+ continue;
136
+ for (const name of Object.keys(deps)) {
137
+ if (!name.startsWith("@stacksjs/"))
138
+ continue;
139
+ const dir = name.slice(10), localPkgPath = p.frameworkPath(`core/${dir}/package.json`);
140
+ if (!existsSync(localPkgPath))
141
+ continue;
142
+ if (JSON.parse(readFileSync(localPkgPath, "utf-8")).version !== version)
143
+ continue;
144
+ const next = `^${version}`;
145
+ if (deps[name] !== next) {
146
+ deps[name] = next;
147
+ pinned++;
148
+ }
149
+ }
150
+ }
151
+ if (pinned > 0) {
152
+ writeFileSync(metaPath, `${JSON.stringify(meta, null, 2)}
153
+ `);
154
+ log.debug(`Pinned ${pinned} lockstep core dep(s) in the stacks meta to ^${version}`);
155
+ }
156
+ }
157
+ if (!isDryRun) {
158
+ await git(["add", "--all"]);
159
+ await git(["commit", "-m", `chore: release v${nextVersion}`]);
160
+ await git(["tag", `v${nextVersion}`]);
161
+ await git(["push"]);
162
+ await git(["push", "origin", `v${nextVersion}`]);
163
+ }
@@ -1 +0,0 @@
1
- // @bun
package/dist/changelog.js CHANGED
@@ -1,3 +1,27 @@
1
- #!/usr/bin/env bun
2
- // @bun
3
- import{execSync as I,log as q,parseOptions as J}from"@stacksjs/cli";import{projectPath as K}from"@stacksjs/path";import{generateChangelog as M,loadLogsmithConfig as N}from"@stacksjs/logsmith";var B=(H)=>{let A=H.trim();if(!/^[A-Za-z0-9._/-]+$/.test(A))throw Error(`Invalid git revision: ${A}`);return A};q.debug("Generating changelog");var b=J(),E=B(b?.from?.toString()??await I("git describe --abbrev=0 --tags HEAD^").catch(()=>""));q.debug("FromRevision",E);var F=B(b?.to?.toString()??"HEAD");q.debug("ToRevision",F);q.debug("Changelog Options",b);if(b?.version??b?.r)q.debug("Ignoring --version: logsmith headers the section from the from\u2026to range");var G=b?.dryRun===!0,Q=await N({dir:K(),from:E||void 0,to:F,output:G?!1:"CHANGELOG.md",theme:"github",verbose:b?.verbose===!0}),T=await M(Q);if(G&&!b?.quiet)q.info(T.content);
1
+ import { execSync, log, parseOptions } from "@stacksjs/cli";
2
+ import { projectPath } from "@stacksjs/path";
3
+ import { generateChangelog, loadLogsmithConfig } from "@stacksjs/logsmith";
4
+ const sanitizeRevision = (revision) => {
5
+ const value = revision.trim();
6
+ if (!/^[A-Za-z0-9._/-]+$/.test(value))
7
+ throw Error(`Invalid git revision: ${value}`);
8
+ return value;
9
+ };
10
+ log.debug("Generating changelog");
11
+ const options = parseOptions(), fromRevision = sanitizeRevision(options?.from?.toString() ?? await execSync("git describe --abbrev=0 --tags HEAD^").catch(() => ""));
12
+ log.debug("FromRevision", fromRevision);
13
+ const toRevision = sanitizeRevision(options?.to?.toString() ?? "HEAD");
14
+ log.debug("ToRevision", toRevision);
15
+ log.debug("Changelog Options", options);
16
+ if (options?.version ?? options?.r)
17
+ log.debug("Ignoring --version: logsmith headers the section from the from\u2026to range");
18
+ const isDryRun = options?.dryRun === !0, config = await loadLogsmithConfig({
19
+ dir: projectPath(),
20
+ from: fromRevision || void 0,
21
+ to: toRevision,
22
+ output: isDryRun ? !1 : "CHANGELOG.md",
23
+ theme: "github",
24
+ verbose: options?.verbose === !0
25
+ }), result = await generateChangelog(config);
26
+ if (isDryRun && !options?.quiet)
27
+ log.info(result.content);
@@ -1,2 +1,16 @@
1
- // @bun
2
- var{$:x}=globalThis.Bun;import z from"process";import{log as m}from"@stacksjs/logging";import{findStacksProjects as A}from"@stacksjs/utils";var v=await A(void 0,{quiet:!0});m.debug("Running `buddy ports`");m.debug(`Found ${v.length} projects`);m.debug("Projects:",v);for(let q of v){m.debug("Running `buddy ports`"),m.debug("Project:",q),x.cwd(q);let y=await x`./buddy ports --project ${q} --quiet`.text();m.debug("ports",y)}z.exit(0);
1
+ import { $ } from "bun";
2
+ import process from "node:process";
3
+ import { log } from "@stacksjs/logging";
4
+ import { findStacksProjects } from "@stacksjs/utils";
5
+ const projects = await findStacksProjects(void 0, { quiet: !0 });
6
+ log.debug("Running `buddy ports`");
7
+ log.debug(`Found ${projects.length} projects`);
8
+ log.debug("Projects:", projects);
9
+ for (const project of projects) {
10
+ log.debug("Running `buddy ports`");
11
+ log.debug("Project:", project);
12
+ $.cwd(project);
13
+ const ports = await $`./buddy ports --project ${project} --quiet`.text();
14
+ log.debug("ports", ports);
15
+ }
16
+ process.exit(0);
package/dist/clean.js CHANGED
@@ -1,2 +1,4 @@
1
- // @bun
2
- import{log as o}from"@stacksjs/logging";import{cleanProject as n}from"@stacksjs/utils";o.info("Running clean command...");await n();
1
+ import { log } from "@stacksjs/logging";
2
+ import { cleanProject } from "@stacksjs/utils";
3
+ log.info("Running clean command...");
4
+ await cleanProject();
package/dist/commit.js CHANGED
@@ -1,2 +1,12 @@
1
- // @bun
2
- import"./chunk-h3d81wrg.js";import{NpmScript as i}from"@stacksjs/enums";import{log as t}from"@stacksjs/logging";import{projectPath as m}from"@stacksjs/path";import{runNpmScript as r}from"@stacksjs/utils";async function n(o){t.info("Committing..."),await r(i.Commit,{cwd:m(),...o}),t.success("Committed")}async function a(o){return await n(o)}export{n as invoke,a as commit};
1
+ import { NpmScript } from "@stacksjs/enums";
2
+ import { log } from "@stacksjs/logging";
3
+ import { projectPath } from "@stacksjs/path";
4
+ import { runNpmScript } from "@stacksjs/utils";
5
+ export async function invoke(options) {
6
+ log.info("Committing...");
7
+ await runNpmScript(NpmScript.Commit, { cwd: projectPath(), ...options });
8
+ log.success("Committed");
9
+ }
10
+ export async function commit(options) {
11
+ return await invoke(options);
12
+ }
@@ -1,3 +1,10 @@
1
- #!/usr/bin/env bun
2
- // @bun
3
- import{frameworkPath as b}from"@stacksjs/path";import{copyFolder as x}from"@stacksjs/storage";var z=[[b("dist/types/components"),b("defaults/resources/components/vue/dist/types")],[b("dist/types/components"),b("defaults/resources/components/web/dist/types")],[b("dist/types/functions"),b("defaults/functions/dist/types")]];z.forEach(([q,u])=>{x(q,u)});
1
+ import { frameworkPath } from "@stacksjs/path";
2
+ import { copyFolder } from "@stacksjs/storage";
3
+ const destinations = [
4
+ [frameworkPath("dist/types/components"), frameworkPath("defaults/resources/components/vue/dist/types")],
5
+ [frameworkPath("dist/types/components"), frameworkPath("defaults/resources/components/web/dist/types")],
6
+ [frameworkPath("dist/types/functions"), frameworkPath("defaults/functions/dist/types")]
7
+ ];
8
+ destinations.forEach(([src, dest]) => {
9
+ copyFolder(src, dest);
10
+ });
@@ -1,2 +1,26 @@
1
- // @bun
2
- import A from"process";import{log as q}from"@stacksjs/cli";import{seed as D}from"@stacksjs/database";var B=A.argv.slice(2),F=B.includes("--allow-protected")||B.includes("--allowProtected"),G=B.includes("--fresh"),H=Date.now();try{let y=await D({verbose:!0,fresh:G,allowProtected:F}),C=Date.now()-H;if(y.failed>0){q.warn(""),q.warn(`Seeding completed with ${y.failed} failure(s):`);for(let z of y.results)if(!z.success)q.error(` - ${z.model}: ${z.error}`);q.info(""),q.info("Note: Failed models may have schema mismatches or invalid factory functions."),q.info("Tip: Run `./buddy migrate:fresh` to ensure schema is up to date.")}q.info(""),q.success(`Seeding completed in ${C}ms`),q.info(` Total models: ${y.total}`),q.info(` Successful: ${y.successful}`),q.info(` Failed: ${y.failed}`),A.exit(0)}catch(y){q.error("Seeding failed catastrophically:",y),A.exit(1)}
1
+ import process from "node:process";
2
+ import { log } from "@stacksjs/cli";
3
+ import { seed } from "@stacksjs/database";
4
+ const argv = process.argv.slice(2), allowProtected = argv.includes("--allow-protected") || argv.includes("--allowProtected"), fresh = argv.includes("--fresh"), startTime = Date.now();
5
+ try {
6
+ const result = await seed({ verbose: !0, fresh, allowProtected }), duration = Date.now() - startTime;
7
+ if (result.failed > 0) {
8
+ log.warn("");
9
+ log.warn(`Seeding completed with ${result.failed} failure(s):`);
10
+ for (const r of result.results)
11
+ if (!r.success)
12
+ log.error(` - ${r.model}: ${r.error}`);
13
+ log.info("");
14
+ log.info("Note: Failed models may have schema mismatches or invalid factory functions.");
15
+ log.info("Tip: Run `./buddy migrate:fresh` to ensure schema is up to date.");
16
+ }
17
+ log.info("");
18
+ log.success(`Seeding completed in ${duration}ms`);
19
+ log.info(` Total models: ${result.total}`);
20
+ log.info(` Successful: ${result.successful}`);
21
+ log.info(` Failed: ${result.failed}`);
22
+ process.exit(0);
23
+ } catch (err) {
24
+ log.error("Seeding failed catastrophically:", err);
25
+ process.exit(1);
26
+ }