@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,7 +1,310 @@
1
- // @bun
2
- import{c as R,d as x,e as w,f as S,g as u,h as y,i as h,j as p,k as g,l as d,m as D,n as l,o as H,p as m}from"../chunk-n24m8prb.js";import{Lb as j}from"../chunk-h3d81wrg.js";import{copyFileSync as i,cpSync as a,existsSync as B,mkdirSync as f,readFileSync as e,rmSync as qq}from"fs";import{dirname as zq,join as U}from"path";import I from"process";import{parseOptions as Kq}from"@stacksjs/cli";import{downloadTemplate as n}from"@stacksjs/gitit";import{path as N}from"@stacksjs/path";import{ExitCode as C}from"@stacksjs/types";var Y=Kq(),O=N.projectPath();if(!B(N.projectPath("storage/framework/core"))){let{upgradeStacksPackages:q}=await import("./packages.js");await q(O,{version:Y.version,canary:Y.canary,stable:Y.stable,force:Y.force,dryRun:Y.dryRun,noPostinstall:Y.noPostinstall??Y.postinstall===!1})}var c=U(O,".stacks-channel"),s=U(O,".stacks-version"),A=S(c),$=R(Y,A),r=N.projectPath("storage/framework/core/buddy/package.json"),Qq=w(r),Wq=Y.from?N.projectPath(Y.from):null,_=Wq??l(O),E=!!_;console.log(g($,A,!!Y.stable));console.log(E?` source: local checkout at ${_}`:` source: github:stacksjs/stacks#${$.ref}`);if(!Y.force){let q=await Jq(O);if(q.length>0){console.warn(`
3
- \u26A0 The following framework-managed paths have uncommitted changes:`);for(let z of q)console.warn(` - ${z}`);console.warn(`
4
- Aborting to avoid clobbering your edits.`),console.warn(` Re-run with --force to overwrite, or commit / stash the changes first.
5
- `),I.exit(C.FatalError)}}var G=null;if(!Y.force&&!$.targetVersion){G=await t($,E,_);let q=y(s);if(p({force:!!Y.force,targetVersion:$.targetVersion,remoteSha:G,synced:q,channel:$.channel}))console.log(`\u2714 Already on the latest ${$.channel} (${G.slice(0,7)}).`),I.exit(C.Success)}var b=N.frameworkPath("core/actions/src/upgrade/framework.ts"),k=await o(b),V={added:0,changed:0,removed:0,unchanged:0},v=[];try{for(let q of D){let z=U(O,q.localPath),K=q.isFile?await T(z):await H(z,q.skip);if(E&&_)await Bq(_,q,z);else{if(q.isFile)continue;await Iq($.ref,q,z,!!Y.force)}let Q=q.isFile?await T(z):await H(z,q.skip),W=m(K,Q);V.added+=W.added,V.changed+=W.changed,V.removed+=W.removed,V.unchanged+=W.unchanged,v.push({managed:q,summary:W})}if(!E)await Uq($.ref)}catch(q){console.error("\u2718 Failed to upgrade Stacks framework:",q?.message||q),I.exit(C.FatalError)}var Xq=w(r),P=await o(b),Yq=I.argv.includes("--__restarted");if(k!==0n&&P!==0n&&k!==P&&!Yq){console.log(`Upgrade pulled a newer version of the upgrade action \u2014 re-running once to pick up new sync paths and hooks.
6
- `);let q=I.argv.slice(2).filter((Q)=>Q!=="--__restarted"),K=await Bun.spawn({cmd:[I.argv[0]||"bun",b,...q,"--__restarted"],cwd:O,stdout:"inherit",stderr:"inherit"}).exited;I.exit(K??0)}if(!$.targetVersion){if(u(c,$.channel),!G)G=await t($,E,_);if(G)h(s,$.channel,G)}console.log(`\u2714 ${d($,Qq,Xq,A,!!Y.force)}`);console.log("Sync summary:");for(let{managed:q,summary:z}of v)if(q.isFile){let K=z.added+z.changed>0;console.log(` ${q.label.padEnd(10)} ${K?"updated":"unchanged"}`)}else if(z.added+z.changed+z.removed===0)console.log(` ${q.label.padEnd(10)} unchanged (${z.unchanged} files)`);else console.log(` ${q.label.padEnd(10)} +${z.added} ~${z.changed} -${z.removed} (${z.unchanged} unchanged)`);var $q=!Y.noPostinstall&&Y.postinstall!==!1;if($q)await Zq({aggregate:V,perPath:v,projectRoot:O});if($.channel==="canary"&&!$.targetVersion)console.warn("\u26A0 Canary builds may contain bugs or breaking changes. Not recommended for production.");I.exit(C.Success);async function Jq(q){let z=U(q,".git");if(!B(z))return[];try{let K=Bun.spawn({cmd:["git","-C",q,"status","--porcelain","--",...D.map((W)=>W.localPath)],stdout:"pipe",stderr:"pipe"}),Q=await new Response(K.stdout).text();return await K.exited,Q.split(`
7
- `).filter((W)=>W.length>0).map((W)=>W.slice(3))}catch{return[]}}async function t(q,z,K){let Q=/^[0-9a-f]{40}$/i;try{if(z&&K){let J=Bun.spawn({cmd:["git","-C",K,"rev-parse",q.ref],stdout:"pipe",stderr:"pipe"}),Z=(await new Response(J.stdout).text()).trim();if(await J.exited===0&&Q.test(Z))return Z.toLowerCase();let F=Bun.spawn({cmd:["git","-C",K,"rev-parse","HEAD"],stdout:"pipe",stderr:"pipe"}),L=(await new Response(F.stdout).text()).trim();return await F.exited===0&&Q.test(L)?L.toLowerCase():null}let W=Bun.spawn({cmd:["git","ls-remote","https://github.com/stacksjs/stacks.git",`refs/heads/${q.ref}`],stdout:"pipe",stderr:"pipe"}),M=await new Response(W.stdout).text();if(await W.exited!==0)return null;let X=M.match(/^([0-9a-f]{40})\s/i);return X?.[1]?X[1].toLowerCase():null}catch{return null}}async function o(q){try{if(!B(q))return 0n;let z=await Bun.file(q).arrayBuffer();return Bun.hash(z)}catch{return 0n}}async function T(q){let z=new Map;if(!B(q))return z;try{let K=Bun.file(q);if(K.size>0){let Q=await K.arrayBuffer();z.set("self",{size:K.size,hash:Bun.hash(Q)})}}catch{}return z}async function Bq(q,z,K){let Q=U(q,z.subPath);if(!B(Q)){console.warn(` skip ${z.label}: source missing at ${Q}`);return}if(z.isFile){f(zq(K),{recursive:!0}),i(Q,K);return}f(K,{recursive:!0}),a(Q,K,{recursive:!0,force:!0,filter:(W)=>{if(!z.skip)return!0;let M=W.split("/").pop()||"";return!z.skip.includes(M)}})}async function Iq(q,z,K,Q){let W=x(q,z.subPath);await n(W,{dir:K,force:!0,forceClean:!1,preferOffline:!Q})}async function Uq(q){let z=N.projectPath(".tmp-upgrade");try{await n(`github:stacksjs/stacks#${q}`,{dir:z,force:!0,forceClean:!0,preferOffline:!0,silent:!0});for(let K of D){if(!K.isFile)continue;let Q=U(z,K.subPath),W=N.projectPath(K.localPath);try{if(B(Q)&&B(W))i(Q,W)}catch{}}}catch{}finally{if(B(z))qq(z,{recursive:!0,force:!0})}}async function Zq(q){let{aggregate:z,perPath:K,projectRoot:Q}=q;if(z.added+z.changed+z.removed===0){console.log("Nothing changed \u2014 skipping post-sync hooks.");return}console.log("Regenerating auto-import manifest...");try{let{generateAutoImportFiles:X}=await import("@stacksjs/server");await X()}catch(X){console.warn(` auto-imports failed (non-fatal): ${X?.message||X}`)}if(K.some((X)=>{let{managed:J,summary:Z}=X;if(J.isFile)return!1;if(J.label!=="core"&&J.label!=="defaults")return!1;if(Z.added+Z.changed===0)return!1;return Nq(U(Q,J.localPath))})){console.log("Running `bun install` to refresh dependencies...");try{let J=await Bun.spawn({cmd:[I.argv[0]||"bun","install"],cwd:Q,stdout:"inherit",stderr:"inherit"}).exited;if(J!==0)console.warn(` bun install exited with code ${J} (non-fatal)`)}catch(X){console.warn(` bun install failed (non-fatal): ${X?.message||X}`)}}let M=U(Q,"database","migrations");if(B(M)){console.log("Running pending migrations...");try{let X=N.frameworkPath("core/buddy/src/cli.ts"),Z=await Bun.spawn({cmd:[I.argv[0]||"bun",X,"migrate"],cwd:Q,stdout:"inherit",stderr:"inherit"}).exited;if(Z!==0)console.warn(` migrate exited with code ${Z} (non-fatal \u2014 DB may not be set up yet)`)}catch(X){console.warn(` migrate failed (non-fatal): ${X?.message||X}`)}}}function Nq(q){try{if(!B(q))return!1;return e(U(q,"package.json"),"utf-8").length>0}catch{return B(q)}}
1
+ import { copyFileSync, cpSync, existsSync, mkdirSync, readFileSync, rmSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import process from "node:process";
4
+ import { parseOptions } from "@stacksjs/cli";
5
+ import { downloadTemplate } from "@stacksjs/gitit";
6
+ import { path as p } from "@stacksjs/path";
7
+ import { ExitCode } from "@stacksjs/types";
8
+ import {
9
+ buildTemplateString,
10
+ detectLocalStacks,
11
+ diffSnapshots,
12
+ MANAGED_PATHS,
13
+ readChannel,
14
+ readSyncedVersion,
15
+ readVersion,
16
+ resolveSuccessMessage,
17
+ resolveUpgradeContext,
18
+ resolveUpgradeMessage,
19
+ shouldShortCircuit,
20
+ snapshotTree,
21
+ writeChannel,
22
+ writeSyncedVersion
23
+ } from "./framework-utils";
24
+ const options = parseOptions(), projectRoot = p.projectPath();
25
+ if (!existsSync(p.projectPath("storage/framework/core"))) {
26
+ const { upgradeStacksPackages } = await import("./packages");
27
+ await upgradeStacksPackages(projectRoot, {
28
+ version: options.version,
29
+ canary: options.canary,
30
+ stable: options.stable,
31
+ force: options.force,
32
+ dryRun: options.dryRun,
33
+ noPostinstall: options.noPostinstall ?? options.postinstall === !1
34
+ });
35
+ }
36
+ const channelFile = join(projectRoot, ".stacks-channel"), versionFile = join(projectRoot, ".stacks-version"), currentChannel = readChannel(channelFile), ctx = resolveUpgradeContext(options, currentChannel), corePkgPath = p.projectPath("storage/framework/core/buddy/package.json"), currentVersion = readVersion(corePkgPath), explicitLocal = options.from ? p.projectPath(options.from) : null, detectedLocal = explicitLocal ?? detectLocalStacks(projectRoot), usingLocal = !!detectedLocal;
37
+ console.log(resolveUpgradeMessage(ctx, currentChannel, !!options.stable));
38
+ console.log(usingLocal ? ` source: local checkout at ${detectedLocal}` : ` source: github:stacksjs/stacks#${ctx.ref}`);
39
+ if (!options.force) {
40
+ const dirty = await detectDirtyManagedPaths(projectRoot);
41
+ if (dirty.length > 0) {
42
+ console.warn(`
43
+ \u26A0 The following framework-managed paths have uncommitted changes:`);
44
+ for (const path of dirty)
45
+ console.warn(` - ${path}`);
46
+ console.warn(`
47
+ Aborting to avoid clobbering your edits.`);
48
+ console.warn(` Re-run with --force to overwrite, or commit / stash the changes first.
49
+ `);
50
+ process.exit(ExitCode.FatalError);
51
+ }
52
+ }
53
+ let resolvedRemoteSha = null;
54
+ if (!options.force && !ctx.targetVersion) {
55
+ resolvedRemoteSha = await getRemoteSha(ctx, usingLocal, detectedLocal);
56
+ const synced = readSyncedVersion(versionFile);
57
+ if (shouldShortCircuit({ force: !!options.force, targetVersion: ctx.targetVersion, remoteSha: resolvedRemoteSha, synced, channel: ctx.channel })) {
58
+ console.log(`\u2714 Already on the latest ${ctx.channel} (${resolvedRemoteSha.slice(0, 7)}).`);
59
+ process.exit(ExitCode.Success);
60
+ }
61
+ }
62
+ const ownPath = p.frameworkPath("core/actions/src/upgrade/framework.ts"), ownHashBefore = await hashFileOrZero(ownPath), aggregate = { added: 0, changed: 0, removed: 0, unchanged: 0 }, perPath = [];
63
+ try {
64
+ for (const managed of MANAGED_PATHS) {
65
+ const localTarget = join(projectRoot, managed.localPath), before = managed.isFile ? await singleFileSnapshot(localTarget) : await snapshotTree(localTarget, managed.skip);
66
+ if (usingLocal && detectedLocal)
67
+ await syncFromLocal(detectedLocal, managed, localTarget);
68
+ else {
69
+ if (managed.isFile)
70
+ continue;
71
+ await syncFromGitHub(ctx.ref, managed, localTarget, !!options.force);
72
+ }
73
+ const after = managed.isFile ? await singleFileSnapshot(localTarget) : await snapshotTree(localTarget, managed.skip), summary = diffSnapshots(before, after);
74
+ aggregate.added += summary.added;
75
+ aggregate.changed += summary.changed;
76
+ aggregate.removed += summary.removed;
77
+ aggregate.unchanged += summary.unchanged;
78
+ perPath.push({ managed, summary });
79
+ }
80
+ if (!usingLocal)
81
+ await syncRootFilesFromGitHub(ctx.ref);
82
+ } catch (err) {
83
+ console.error("\u2718 Failed to upgrade Stacks framework:", err?.message || err);
84
+ process.exit(ExitCode.FatalError);
85
+ }
86
+ const newVersion = readVersion(corePkgPath), ownHashAfter = await hashFileOrZero(ownPath), alreadyRestarted = process.argv.includes("--__restarted");
87
+ if (ownHashBefore !== 0n && ownHashAfter !== 0n && ownHashBefore !== ownHashAfter && !alreadyRestarted) {
88
+ console.log(`Upgrade pulled a newer version of the upgrade action \u2014 re-running once to pick up new sync paths and hooks.
89
+ `);
90
+ const args = process.argv.slice(2).filter((a) => a !== "--__restarted"), code = await Bun.spawn({
91
+ cmd: [process.argv[0] || "bun", ownPath, ...args, "--__restarted"],
92
+ cwd: projectRoot,
93
+ stdout: "inherit",
94
+ stderr: "inherit"
95
+ }).exited;
96
+ process.exit(code ?? 0);
97
+ }
98
+ if (!ctx.targetVersion) {
99
+ writeChannel(channelFile, ctx.channel);
100
+ if (!resolvedRemoteSha)
101
+ resolvedRemoteSha = await getRemoteSha(ctx, usingLocal, detectedLocal);
102
+ if (resolvedRemoteSha)
103
+ writeSyncedVersion(versionFile, ctx.channel, resolvedRemoteSha);
104
+ }
105
+ console.log(`\u2714 ${resolveSuccessMessage(ctx, currentVersion, newVersion, currentChannel, !!options.force)}`);
106
+ console.log("Sync summary:");
107
+ for (const { managed, summary } of perPath)
108
+ if (managed.isFile) {
109
+ const moved = summary.added + summary.changed > 0;
110
+ console.log(` ${managed.label.padEnd(10)} ${moved ? "updated" : "unchanged"}`);
111
+ } else if (summary.added + summary.changed + summary.removed === 0)
112
+ console.log(` ${managed.label.padEnd(10)} unchanged (${summary.unchanged} files)`);
113
+ else
114
+ console.log(` ${managed.label.padEnd(10)} +${summary.added} ~${summary.changed} -${summary.removed} (${summary.unchanged} unchanged)`);
115
+ const runHooks = !options.noPostinstall && options.postinstall !== !1;
116
+ if (runHooks)
117
+ await runPostSyncHooks({ aggregate, perPath, projectRoot });
118
+ if (ctx.channel === "canary" && !ctx.targetVersion)
119
+ console.warn("\u26A0 Canary builds may contain bugs or breaking changes. Not recommended for production.");
120
+ process.exit(ExitCode.Success);
121
+ async function detectDirtyManagedPaths(root) {
122
+ const gitDir = join(root, ".git");
123
+ if (!existsSync(gitDir))
124
+ return [];
125
+ try {
126
+ const proc = Bun.spawn({
127
+ cmd: ["git", "-C", root, "status", "--porcelain", "--", ...MANAGED_PATHS.map((m) => m.localPath)],
128
+ stdout: "pipe",
129
+ stderr: "pipe"
130
+ }), output = await new Response(proc.stdout).text();
131
+ await proc.exited;
132
+ return output.split(`
133
+ `).filter((line) => line.length > 0).map((line) => line.slice(3));
134
+ } catch {
135
+ return [];
136
+ }
137
+ }
138
+ async function getRemoteSha(context, fromLocal, stacksRoot) {
139
+ const SHA_RE = /^[0-9a-f]{40}$/i;
140
+ try {
141
+ if (fromLocal && stacksRoot) {
142
+ const proc = Bun.spawn({
143
+ cmd: ["git", "-C", stacksRoot, "rev-parse", context.ref],
144
+ stdout: "pipe",
145
+ stderr: "pipe"
146
+ }), out = (await new Response(proc.stdout).text()).trim();
147
+ if (await proc.exited === 0 && SHA_RE.test(out))
148
+ return out.toLowerCase();
149
+ const head = Bun.spawn({
150
+ cmd: ["git", "-C", stacksRoot, "rev-parse", "HEAD"],
151
+ stdout: "pipe",
152
+ stderr: "pipe"
153
+ }), h = (await new Response(head.stdout).text()).trim();
154
+ return await head.exited === 0 && SHA_RE.test(h) ? h.toLowerCase() : null;
155
+ }
156
+ const proc = Bun.spawn({
157
+ cmd: ["git", "ls-remote", "https://github.com/stacksjs/stacks.git", `refs/heads/${context.ref}`],
158
+ stdout: "pipe",
159
+ stderr: "pipe"
160
+ }), out = await new Response(proc.stdout).text();
161
+ if (await proc.exited !== 0)
162
+ return null;
163
+ const m = out.match(/^([0-9a-f]{40})\s/i);
164
+ return m?.[1] ? m[1].toLowerCase() : null;
165
+ } catch {
166
+ return null;
167
+ }
168
+ }
169
+ async function hashFileOrZero(absPath) {
170
+ try {
171
+ if (!existsSync(absPath))
172
+ return 0n;
173
+ const buf = await Bun.file(absPath).arrayBuffer();
174
+ return Bun.hash(buf);
175
+ } catch {
176
+ return 0n;
177
+ }
178
+ }
179
+ async function singleFileSnapshot(absPath) {
180
+ const out = new Map;
181
+ if (!existsSync(absPath))
182
+ return out;
183
+ try {
184
+ const file = Bun.file(absPath);
185
+ if (file.size > 0) {
186
+ const buf = await file.arrayBuffer();
187
+ out.set("self", { size: file.size, hash: Bun.hash(buf) });
188
+ }
189
+ } catch {}
190
+ return out;
191
+ }
192
+ async function syncFromLocal(stacksRoot, managed, localTarget) {
193
+ const src = join(stacksRoot, managed.subPath);
194
+ if (!existsSync(src)) {
195
+ console.warn(` skip ${managed.label}: source missing at ${src}`);
196
+ return;
197
+ }
198
+ if (managed.isFile) {
199
+ mkdirSync(dirname(localTarget), { recursive: !0 });
200
+ copyFileSync(src, localTarget);
201
+ return;
202
+ }
203
+ mkdirSync(localTarget, { recursive: !0 });
204
+ cpSync(src, localTarget, {
205
+ recursive: !0,
206
+ force: !0,
207
+ filter: (source) => {
208
+ if (!managed.skip)
209
+ return !0;
210
+ const name = source.split("/").pop() || "";
211
+ return !managed.skip.includes(name);
212
+ }
213
+ });
214
+ }
215
+ async function syncFromGitHub(ref, managed, localTarget, force) {
216
+ const template = buildTemplateString(ref, managed.subPath);
217
+ await downloadTemplate(template, {
218
+ dir: localTarget,
219
+ force: !0,
220
+ forceClean: !1,
221
+ preferOffline: !force
222
+ });
223
+ }
224
+ async function syncRootFilesFromGitHub(ref) {
225
+ const tmpDir = p.projectPath(".tmp-upgrade");
226
+ try {
227
+ await downloadTemplate(`github:stacksjs/stacks#${ref}`, {
228
+ dir: tmpDir,
229
+ force: !0,
230
+ forceClean: !0,
231
+ preferOffline: !0,
232
+ silent: !0
233
+ });
234
+ for (const managed of MANAGED_PATHS) {
235
+ if (!managed.isFile)
236
+ continue;
237
+ const src = join(tmpDir, managed.subPath), dest = p.projectPath(managed.localPath);
238
+ try {
239
+ if (existsSync(src) && existsSync(dest))
240
+ copyFileSync(src, dest);
241
+ } catch {}
242
+ }
243
+ } catch {} finally {
244
+ if (existsSync(tmpDir))
245
+ rmSync(tmpDir, { recursive: !0, force: !0 });
246
+ }
247
+ }
248
+ async function runPostSyncHooks(args) {
249
+ const { aggregate, perPath, projectRoot } = args;
250
+ if (aggregate.added + aggregate.changed + aggregate.removed === 0) {
251
+ console.log("Nothing changed \u2014 skipping post-sync hooks.");
252
+ return;
253
+ }
254
+ console.log("Regenerating auto-import manifest...");
255
+ try {
256
+ const { generateAutoImportFiles } = await import("@stacksjs/server");
257
+ await generateAutoImportFiles();
258
+ } catch (err) {
259
+ console.warn(` auto-imports failed (non-fatal): ${err?.message || err}`);
260
+ }
261
+ if (perPath.some((entry) => {
262
+ const { managed, summary } = entry;
263
+ if (managed.isFile)
264
+ return !1;
265
+ if (managed.label !== "core" && managed.label !== "defaults")
266
+ return !1;
267
+ if (summary.added + summary.changed === 0)
268
+ return !1;
269
+ return pkgJsonInTree(join(projectRoot, managed.localPath));
270
+ })) {
271
+ console.log("Running `bun install` to refresh dependencies...");
272
+ try {
273
+ const code = await Bun.spawn({
274
+ cmd: [process.argv[0] || "bun", "install"],
275
+ cwd: projectRoot,
276
+ stdout: "inherit",
277
+ stderr: "inherit"
278
+ }).exited;
279
+ if (code !== 0)
280
+ console.warn(` bun install exited with code ${code} (non-fatal)`);
281
+ } catch (err) {
282
+ console.warn(` bun install failed (non-fatal): ${err?.message || err}`);
283
+ }
284
+ }
285
+ const migrationsDir = join(projectRoot, "database", "migrations");
286
+ if (existsSync(migrationsDir)) {
287
+ console.log("Running pending migrations...");
288
+ try {
289
+ const migrateScript = p.frameworkPath("core/buddy/src/cli.ts"), code = await Bun.spawn({
290
+ cmd: [process.argv[0] || "bun", migrateScript, "migrate"],
291
+ cwd: projectRoot,
292
+ stdout: "inherit",
293
+ stderr: "inherit"
294
+ }).exited;
295
+ if (code !== 0)
296
+ console.warn(` migrate exited with code ${code} (non-fatal \u2014 DB may not be set up yet)`);
297
+ } catch (err) {
298
+ console.warn(` migrate failed (non-fatal): ${err?.message || err}`);
299
+ }
300
+ }
301
+ }
302
+ function pkgJsonInTree(dir) {
303
+ try {
304
+ if (!existsSync(dir))
305
+ return !1;
306
+ return readFileSync(join(dir, "package.json"), "utf-8").length > 0;
307
+ } catch {
308
+ return existsSync(dir);
309
+ }
310
+ }
@@ -1,2 +1,17 @@
1
- // @bun
2
- import"../chunk-s735m9mg.js";import{Ib as r}from"../chunk-0gadhvn7.js";import"../chunk-h3d81wrg.js";import e from"process";import{parseArgs as o}from"@stacksjs/cli";import{Action as i}from"@stacksjs/enums";import{ExitCode as t}from"@stacksjs/types";var a=o();if(a?.framework||a?.all)await r(i.UpgradeFramework,a);if(a?.dependencies||a?.all)await r(i.UpgradeDeps,a);if(a?.bun||a?.all)await r(i.UpgradeBun,a);if(a?.shell||a?.all)await r(i.UpgradeShell,a);if(a?.binary||a?.all)await r(i.UpgradeBinary,a);e.exit(t.Success);
1
+ import process from "node:process";
2
+ import { parseArgs } from "@stacksjs/cli";
3
+ import { Action } from "@stacksjs/enums";
4
+ import { ExitCode } from "@stacksjs/types";
5
+ import { runAction } from "../helpers";
6
+ const options = parseArgs();
7
+ if (options?.framework || options?.all)
8
+ await runAction(Action.UpgradeFramework, options);
9
+ if (options?.dependencies || options?.all)
10
+ await runAction(Action.UpgradeDeps, options);
11
+ if (options?.bun || options?.all)
12
+ await runAction(Action.UpgradeBun, options);
13
+ if (options?.shell || options?.all)
14
+ await runAction(Action.UpgradeShell, options);
15
+ if (options?.binary || options?.all)
16
+ await runAction(Action.UpgradeBinary, options);
17
+ process.exit(ExitCode.Success);
@@ -1,12 +1,99 @@
1
- // @bun
2
- import"../chunk-h3d81wrg.js";import{existsSync as U,readFileSync as V,writeFileSync as W}from"fs";import{join as X}from"path";import M from"process";import{runCommand as Y}from"@stacksjs/cli";async function Z(A){let z=await fetch("https://registry.npmjs.org/stacks").catch(()=>null);if(!z||!z.ok)throw Error("Could not reach the npm registry to resolve the target `stacks` version.");let I=await z.json(),J=I["dist-tags"]??{},G=I.versions??{},q;if(A.version){if(!G[A.version])throw Error(`stacks@${A.version} was not found on the npm registry.`);q=A.version}else{let H=A.canary?"canary":"latest",b=J[H];if(!b)throw Error(`The \`${H}\` dist-tag is not published for \`stacks\`.`);q=b}let E=new Set(Object.keys(G[q]?.dependencies??{}));return{version:q,coreDeps:E}}function _(A,z,I){let J=[],G=(q)=>q==="stacks"||q.startsWith("@stacksjs/")&&I.has(q);for(let q of["dependencies","devDependencies"]){let E=A[q];if(!E)continue;for(let[H,b]of Object.entries(E)){if(!G(H))continue;let O=`${/^[\^~]/.test(b)?b[0]:/^\d/.test(b)?"":"^"}${z}`;if(b!==O)J.push({name:H,from:b,to:O}),E[H]=O}}return J}async function T(A,z){let I=X(A,"package.json");if(!U(I))console.error("No package.json found \u2014 nothing to upgrade."),M.exit(1);let J=V(I,"utf-8"),G=JSON.parse(J),q=G.dependencies?.stacks??G.devDependencies?.stacks,{version:E,coreDeps:H}=await Z(z).catch((K)=>{console.error(`\u2717 ${K.message}`),M.exit(1)});if(console.log(`
3
- Upgrading the Stacks framework${z.canary?" (canary)":""} \u2192 ${E}`),q)console.log(` current \`stacks\` constraint: ${q}
4
- `);let b=_(G,E,H);if(b.length===0&&!z.force)console.log(`\u2714 Already up to date \u2014 every framework dependency matches the target.
5
- `),M.exit(0);if(b.length>0){console.log(" The following dependencies will be updated:");let K=Math.max(...b.map((N)=>N.name.length));for(let N of b)console.log(` ${N.name.padEnd(K)} ${N.from} \u2192 ${N.to}`);console.log("")}if(z.dryRun)console.log(` --dry-run: no files were written and nothing was installed.
6
- `),M.exit(0);if(b.length>0){let K=J.endsWith(`
7
- `)?`
8
- `:"";W(I,`${JSON.stringify(G,null,2)}${K}`),console.log("\u2714 Updated package.json")}let Q=["stacks",...[...H].filter((K)=>K.startsWith("@stacksjs/"))];if(z.noPostinstall)console.log(" --no-postinstall: skipping install. Run this to pull the new versions:"),console.log(` bun update ${Q.slice(0,3).join(" ")} \u2026
9
- `),M.exit(0);if(console.log(` Installing\u2026
10
- `),(await Y(`bun update ${Q.join(" ")}`,{cwd:A})).isErr)console.error("\n\u2717 The install step failed. Your package.json was updated \u2014 resolve the error and re-run `bun update`.\n"),M.exit(1);console.log(`
11
- \u2714 Upgraded to stacks@${E}. Review the changelog: https://github.com/stacksjs/stacks/releases/tag/v${E}
12
- `),M.exit(0)}export{T as upgradeStacksPackages};
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import process from "node:process";
4
+ import { runCommand } from "@stacksjs/cli";
5
+ async function resolveTarget(options) {
6
+ const res = await fetch("https://registry.npmjs.org/stacks").catch(() => null);
7
+ if (!res || !res.ok)
8
+ throw Error("Could not reach the npm registry to resolve the target `stacks` version.");
9
+ const meta = await res.json(), distTags = meta["dist-tags"] ?? {}, versions = meta.versions ?? {};
10
+ let version;
11
+ if (options.version) {
12
+ if (!versions[options.version])
13
+ throw Error(`stacks@${options.version} was not found on the npm registry.`);
14
+ version = options.version;
15
+ } else {
16
+ const tag = options.canary ? "canary" : "latest", resolved = distTags[tag];
17
+ if (!resolved)
18
+ throw Error(`The \`${tag}\` dist-tag is not published for \`stacks\`.`);
19
+ version = resolved;
20
+ }
21
+ const coreDeps = new Set(Object.keys(versions[version]?.dependencies ?? {}));
22
+ return { version, coreDeps };
23
+ }
24
+ function applyBumps(pkg, target, coreDeps) {
25
+ const changes = [], isLockstep = (name) => name === "stacks" || name.startsWith("@stacksjs/") && coreDeps.has(name);
26
+ for (const field of ["dependencies", "devDependencies"]) {
27
+ const deps = pkg[field];
28
+ if (!deps)
29
+ continue;
30
+ for (const [name, spec] of Object.entries(deps)) {
31
+ if (!isLockstep(name))
32
+ continue;
33
+ const next = `${/^[\^~]/.test(spec) ? spec[0] : /^\d/.test(spec) ? "" : "^"}${target}`;
34
+ if (spec !== next) {
35
+ changes.push({ name, from: spec, to: next });
36
+ deps[name] = next;
37
+ }
38
+ }
39
+ }
40
+ return changes;
41
+ }
42
+ export async function upgradeStacksPackages(projectRoot, options) {
43
+ const pkgPath = join(projectRoot, "package.json");
44
+ if (!existsSync(pkgPath)) {
45
+ console.error("No package.json found \u2014 nothing to upgrade.");
46
+ process.exit(1);
47
+ }
48
+ const raw = readFileSync(pkgPath, "utf-8"), pkg = JSON.parse(raw), current = pkg.dependencies?.stacks ?? pkg.devDependencies?.stacks, { version: target, coreDeps } = await resolveTarget(options).catch((err) => {
49
+ console.error(`\u2717 ${err.message}`);
50
+ process.exit(1);
51
+ });
52
+ console.log(`
53
+ Upgrading the Stacks framework${options.canary ? " (canary)" : ""} \u2192 ${target}`);
54
+ if (current)
55
+ console.log(` current \`stacks\` constraint: ${current}
56
+ `);
57
+ const changes = applyBumps(pkg, target, coreDeps);
58
+ if (changes.length === 0 && !options.force) {
59
+ console.log(`\u2714 Already up to date \u2014 every framework dependency matches the target.
60
+ `);
61
+ process.exit(0);
62
+ }
63
+ if (changes.length > 0) {
64
+ console.log(" The following dependencies will be updated:");
65
+ const width = Math.max(...changes.map((c) => c.name.length));
66
+ for (const c of changes)
67
+ console.log(` ${c.name.padEnd(width)} ${c.from} \u2192 ${c.to}`);
68
+ console.log("");
69
+ }
70
+ if (options.dryRun) {
71
+ console.log(` --dry-run: no files were written and nothing was installed.
72
+ `);
73
+ process.exit(0);
74
+ }
75
+ if (changes.length > 0) {
76
+ const trailing = raw.endsWith(`
77
+ `) ? `
78
+ ` : "";
79
+ writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}${trailing}`);
80
+ console.log("\u2714 Updated package.json");
81
+ }
82
+ const frameworkPkgs = ["stacks", ...[...coreDeps].filter((n) => n.startsWith("@stacksjs/"))];
83
+ if (options.noPostinstall) {
84
+ console.log(" --no-postinstall: skipping install. Run this to pull the new versions:");
85
+ console.log(` bun update ${frameworkPkgs.slice(0, 3).join(" ")} \u2026
86
+ `);
87
+ process.exit(0);
88
+ }
89
+ console.log(` Installing\u2026
90
+ `);
91
+ if ((await runCommand(`bun update ${frameworkPkgs.join(" ")}`, { cwd: projectRoot })).isErr) {
92
+ console.error("\n\u2717 The install step failed. Your package.json was updated \u2014 resolve the error and re-run `bun update`.\n");
93
+ process.exit(1);
94
+ }
95
+ console.log(`
96
+ \u2714 Upgraded to stacks@${target}. Review the changelog: https://github.com/stacksjs/stacks/releases/tag/v${target}
97
+ `);
98
+ process.exit(0);
99
+ }
@@ -1,5 +1,41 @@
1
- // @bun
2
- var{$:K}=globalThis.Bun;import N from"process";import{italic as U,runCommand as I}from"@stacksjs/cli";import{log as q}from"@stacksjs/logging";import{path as A}from"@stacksjs/path";import{writeFile as V}from"@stacksjs/storage";import{ExitCode as W}from"@stacksjs/types";var O=(await K`echo $HOME`.text()).trim(),H=A.join(O,".zshrc"),J=A.shellPath("src/buddy.plugin.zsh"),D=A.join(O,".oh-my-zsh/custom/plugins/buddy/");q.info(`Setting up Oh My Zsh via ${H}...`);K.cwd(A.dirname(H));var G=await K`cat ${A.basename(H)}`.text(),Q=/^(?!#).*plugins=\(([^)]+)\)/m,M=G.match(Q);if(M){let B=M[1]?.split(/\s+/).filter(Boolean);if(!B)q.error("Maybe the plugins line in your .zshrc file could not be found? If this continues being an issue, please reach out to us on Discord."),N.exit(W.FatalError);if(!B.includes("buddy")){B.push("buddy");let S=`plugins=(
3
- ${B.map((T)=>T.trim()).join(`
1
+ import { $ } from "bun";
2
+ import process from "node:process";
3
+ import { italic, runCommand } from "@stacksjs/cli";
4
+ import { log } from "@stacksjs/logging";
5
+ import { path as p } from "@stacksjs/path";
6
+ import { writeFile } from "@stacksjs/storage";
7
+ import { ExitCode } from "@stacksjs/types";
8
+ const homePath = (await $`echo $HOME`.text()).trim(), zshrcPath = p.join(homePath, ".zshrc"), pluginPath = p.shellPath("src/buddy.plugin.zsh"), customPath = p.join(homePath, ".oh-my-zsh/custom/plugins/buddy/");
9
+ log.info(`Setting up Oh My Zsh via ${zshrcPath}...`);
10
+ $.cwd(p.dirname(zshrcPath));
11
+ let data = await $`cat ${p.basename(zshrcPath)}`.text();
12
+ const pluginLineRegex = /^(?!#).*plugins=\(([^)]+)\)/m, match = data.match(pluginLineRegex);
13
+ if (match) {
14
+ const plugins = match[1]?.split(/\s+/).filter(Boolean);
15
+ if (!plugins) {
16
+ log.error("Maybe the plugins line in your .zshrc file could not be found? If this continues being an issue, please reach out to us on Discord.");
17
+ process.exit(ExitCode.FatalError);
18
+ }
19
+ if (!plugins.includes("buddy")) {
20
+ plugins.push("buddy");
21
+ const newPluginLine = `plugins=(
22
+ ${plugins.map((plugin) => plugin.trim()).join(`
4
23
  `)}
5
- )`;G=G.replace(Q,S),await V(H,G),q.info(`Copying buddy zsh plugin ${J} to ${D}...`),await I(`mkdir -p ${D}`),await I(`cp -rf ${J} ${D}`),q.success("Copied buddy zsh plugin")}else q.info("Buddy is already set up"),q.info("Ensuring `buddy` is updated..."),await I(`cp -rf ${J} ${D}`),q.success("Updated buddy zsh plugin to latest version")}q.success("Oh My Zsh Setup Complete");q.info(U("To see changes reflect, you may need to open a new terminal window"));if(N.env.TERM_PROGRAM==="vscode")q.info("\u2318\u21E7P terminal.create.new.terminal");
24
+ )`;
25
+ data = data.replace(pluginLineRegex, newPluginLine);
26
+ await writeFile(zshrcPath, data);
27
+ log.info(`Copying buddy zsh plugin ${pluginPath} to ${customPath}...`);
28
+ await runCommand(`mkdir -p ${customPath}`);
29
+ await runCommand(`cp -rf ${pluginPath} ${customPath}`);
30
+ log.success("Copied buddy zsh plugin");
31
+ } else {
32
+ log.info("Buddy is already set up");
33
+ log.info("Ensuring `buddy` is updated...");
34
+ await runCommand(`cp -rf ${pluginPath} ${customPath}`);
35
+ log.success("Updated buddy zsh plugin to latest version");
36
+ }
37
+ }
38
+ log.success("Oh My Zsh Setup Complete");
39
+ log.info(italic("To see changes reflect, you may need to open a new terminal window"));
40
+ if (process.env.TERM_PROGRAM === "vscode")
41
+ log.info("\u2318\u21E7P terminal.create.new.terminal");
package/dist/upgrade.js CHANGED
@@ -1,2 +1,38 @@
1
- // @bun
2
- import"./chunk-h3d81wrg.js";import{readFileSync as K}from"fs";import A from"process";import{intro as L,outro as B,runCommand as I}from"@stacksjs/cli";import{NpmScript as M}from"@stacksjs/enums";import{log as G}from"@stacksjs/logging";import{projectPath as J}from"@stacksjs/path";import*as w from"@stacksjs/storage";import{ExitCode as H}from"@stacksjs/types";var{version:Q}=JSON.parse(K(new URL("../package.json",import.meta.url),"utf8"));function _(b){try{console.log("checkForUncommittedChanges",b)}catch(q){console.error(q)}}async function $(b){let z=J("updates");if(w.doesFolderExist(z))await w.deleteFolder(z);G.info("Downloading framework updates..."),await I("giget stacks updates",b),G.success(`Your framework updated correctly to version: v${Q}`)}async function v(){let b=await L("buddy upgrade:dependencies"),q=await I(M.UpgradeDependencies,{cwd:J()});if(q.isErr)await B("While running the upgrade:dependencies command, there was an issue",{startTime:b,useSeconds:!0},q.error),A.exit(H.FatalError);await B("Freshly updated your dependencies.",{startTime:b,useSeconds:!0}),A.exit(H.Success)}export{v as updateDependencies,$ as downloadFrameworkUpdate,_ as checkForUncommittedChanges};
1
+ import { readFileSync } from "node:fs";
2
+ import process from "node:process";
3
+ import { intro, outro, runCommand } from "@stacksjs/cli";
4
+ import { NpmScript } from "@stacksjs/enums";
5
+ import { log } from "@stacksjs/logging";
6
+ import { projectPath } from "@stacksjs/path";
7
+ import * as storage from "@stacksjs/storage";
8
+ import { ExitCode } from "@stacksjs/types";
9
+ const { version } = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
10
+ export function checkForUncommittedChanges(options) {
11
+ try {
12
+ console.log("checkForUncommittedChanges", options);
13
+ } catch (error) {
14
+ console.error(error);
15
+ }
16
+ }
17
+ export async function downloadFrameworkUpdate(options) {
18
+ const tempFolderName = "updates", tempUpdatePath = projectPath(tempFolderName);
19
+ if (storage.doesFolderExist(tempUpdatePath))
20
+ await storage.deleteFolder(tempUpdatePath);
21
+ log.info("Downloading framework updates...");
22
+ await runCommand(`giget stacks ${tempFolderName}`, options);
23
+ log.success(`Your framework updated correctly to version: v${version}`);
24
+ }
25
+ export async function updateDependencies() {
26
+ const perf = await intro("buddy upgrade:dependencies"), result = await runCommand(NpmScript.UpgradeDependencies, {
27
+ cwd: projectPath()
28
+ });
29
+ if (result.isErr) {
30
+ await outro("While running the upgrade:dependencies command, there was an issue", { startTime: perf, useSeconds: !0 }, result.error);
31
+ process.exit(ExitCode.FatalError);
32
+ }
33
+ await outro("Freshly updated your dependencies.", {
34
+ startTime: perf,
35
+ useSeconds: !0
36
+ });
37
+ process.exit(ExitCode.Success);
38
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/actions",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.70.87",
5
+ "version": "0.70.90",
6
6
  "description": "The Stacks actions.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -69,23 +69,23 @@
69
69
  "@stacksjs/ts-md": "^0.1.1"
70
70
  },
71
71
  "devDependencies": {
72
- "@stacksjs/api": "0.70.87",
73
- "@stacksjs/cli": "0.70.87",
74
- "@stacksjs/config": "0.70.87",
75
- "@stacksjs/database": "0.70.87",
72
+ "@stacksjs/api": "0.70.90",
73
+ "@stacksjs/cli": "0.70.90",
74
+ "@stacksjs/config": "0.70.90",
75
+ "@stacksjs/database": "0.70.90",
76
76
  "@stacksjs/tlsx": "^0.13.2",
77
77
  "better-dx": "^0.2.16",
78
- "@stacksjs/dns": "0.70.87",
79
- "@stacksjs/enums": "0.70.87",
80
- "@stacksjs/env": "0.70.87",
81
- "@stacksjs/error-handling": "0.70.87",
82
- "@stacksjs/logging": "0.70.87",
83
- "@stacksjs/path": "0.70.87",
84
- "@stacksjs/security": "0.70.87",
85
- "@stacksjs/storage": "0.70.87",
86
- "@stacksjs/strings": "0.70.87",
87
- "@stacksjs/utils": "0.70.87",
88
- "@stacksjs/validation": "0.70.87"
78
+ "@stacksjs/dns": "0.70.90",
79
+ "@stacksjs/enums": "0.70.90",
80
+ "@stacksjs/env": "0.70.90",
81
+ "@stacksjs/error-handling": "0.70.90",
82
+ "@stacksjs/logging": "0.70.90",
83
+ "@stacksjs/path": "0.70.90",
84
+ "@stacksjs/security": "0.70.90",
85
+ "@stacksjs/storage": "0.70.90",
86
+ "@stacksjs/strings": "0.70.90",
87
+ "@stacksjs/utils": "0.70.90",
88
+ "@stacksjs/validation": "0.70.90"
89
89
  },
90
90
  "peerDependencies": {
91
91
  "pickier": "^0.1.28"
@@ -1,2 +0,0 @@
1
- // @bun
2
- export{A as T,C as U,I as V,J as W,K as X,N as Y,O as Z,P as _,Q as $,R as aa,S as ba,T as ca,U as da,V as ea,W as fa,X as ga,Y as ha,Z as ia,_ as ja,$ as ka,j as la,F as ma,b as na,f as oa,x as pa,y as qa,h as ra,v as sa,g as ta,u as ua,k as va,l as wa,n as xa,o as ya,s as za,c as Aa,r as Ba,a as Ca,qq as Da,zq as Ea};