everything-dev 0.3.2 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/README.md +64 -0
  2. package/cli.js +10 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  4. package/dist/api-contract.cjs +172 -0
  5. package/dist/api-contract.cjs.map +1 -0
  6. package/dist/api-contract.mjs +171 -0
  7. package/dist/api-contract.mjs.map +1 -0
  8. package/dist/api.cjs +124 -0
  9. package/dist/api.cjs.map +1 -0
  10. package/dist/api.d.cts +36 -0
  11. package/dist/api.d.cts.map +1 -0
  12. package/dist/api.d.mts +36 -0
  13. package/dist/api.d.mts.map +1 -0
  14. package/dist/api.mjs +119 -0
  15. package/dist/api.mjs.map +1 -0
  16. package/dist/app.cjs +156 -0
  17. package/dist/app.cjs.map +1 -0
  18. package/dist/app.mjs +153 -0
  19. package/dist/app.mjs.map +1 -0
  20. package/dist/cli/catalog.cjs +30 -0
  21. package/dist/cli/catalog.cjs.map +1 -0
  22. package/dist/cli/catalog.mjs +29 -0
  23. package/dist/cli/catalog.mjs.map +1 -0
  24. package/dist/cli/help.cjs +16 -0
  25. package/dist/cli/help.cjs.map +1 -0
  26. package/dist/cli/help.mjs +16 -0
  27. package/dist/cli/help.mjs.map +1 -0
  28. package/dist/cli/init.cjs +317 -0
  29. package/dist/cli/init.cjs.map +1 -0
  30. package/dist/cli/init.d.cts +36 -0
  31. package/dist/cli/init.d.cts.map +1 -0
  32. package/dist/cli/init.d.mts +36 -0
  33. package/dist/cli/init.d.mts.map +1 -0
  34. package/dist/cli/init.mjs +309 -0
  35. package/dist/cli/init.mjs.map +1 -0
  36. package/dist/cli/parse.cjs +96 -0
  37. package/dist/cli/parse.cjs.map +1 -0
  38. package/dist/cli/parse.mjs +95 -0
  39. package/dist/cli/parse.mjs.map +1 -0
  40. package/dist/cli/prompts.cjs +42 -0
  41. package/dist/cli/prompts.cjs.map +1 -0
  42. package/dist/cli/prompts.mjs +41 -0
  43. package/dist/cli/prompts.mjs.map +1 -0
  44. package/dist/cli.cjs +167 -0
  45. package/dist/cli.cjs.map +1 -0
  46. package/dist/cli.d.cts +1 -0
  47. package/dist/cli.d.mts +1 -0
  48. package/dist/cli.mjs +166 -0
  49. package/dist/cli.mjs.map +1 -0
  50. package/dist/components/dev-view.cjs +307 -0
  51. package/dist/components/dev-view.cjs.map +1 -0
  52. package/dist/components/dev-view.mjs +306 -0
  53. package/dist/components/dev-view.mjs.map +1 -0
  54. package/dist/components/streaming-view.cjs +146 -0
  55. package/dist/components/streaming-view.cjs.map +1 -0
  56. package/dist/components/streaming-view.mjs +144 -0
  57. package/dist/components/streaming-view.mjs.map +1 -0
  58. package/dist/config.cjs +280 -0
  59. package/dist/config.cjs.map +1 -0
  60. package/dist/config.d.cts +35 -0
  61. package/dist/config.d.cts.map +1 -0
  62. package/dist/config.d.mts +35 -0
  63. package/dist/config.d.mts.map +1 -0
  64. package/dist/config.mjs +266 -0
  65. package/dist/config.mjs.map +1 -0
  66. package/dist/contract.cjs +209 -0
  67. package/dist/contract.cjs.map +1 -0
  68. package/dist/contract.d.cts +490 -0
  69. package/dist/contract.d.cts.map +1 -0
  70. package/dist/contract.d.mts +490 -0
  71. package/dist/contract.d.mts.map +1 -0
  72. package/dist/contract.meta.cjs +104 -0
  73. package/dist/contract.meta.cjs.map +1 -0
  74. package/dist/contract.meta.d.cts +141 -0
  75. package/dist/contract.meta.d.cts.map +1 -0
  76. package/dist/contract.meta.d.mts +141 -0
  77. package/dist/contract.meta.d.mts.map +1 -0
  78. package/dist/contract.meta.mjs +102 -0
  79. package/dist/contract.meta.mjs.map +1 -0
  80. package/dist/contract.mjs +186 -0
  81. package/dist/contract.mjs.map +1 -0
  82. package/dist/dev-logs.cjs +53 -0
  83. package/dist/dev-logs.cjs.map +1 -0
  84. package/dist/dev-logs.mjs +51 -0
  85. package/dist/dev-logs.mjs.map +1 -0
  86. package/dist/dev-session.cjs +195 -0
  87. package/dist/dev-session.cjs.map +1 -0
  88. package/dist/dev-session.mjs +194 -0
  89. package/dist/dev-session.mjs.map +1 -0
  90. package/dist/fastkv.cjs +89 -0
  91. package/dist/fastkv.cjs.map +1 -0
  92. package/dist/fastkv.d.cts +11 -0
  93. package/dist/fastkv.d.cts.map +1 -0
  94. package/dist/fastkv.d.mts +11 -0
  95. package/dist/fastkv.d.mts.map +1 -0
  96. package/dist/fastkv.mjs +82 -0
  97. package/dist/fastkv.mjs.map +1 -0
  98. package/dist/federation.server.cjs +27 -0
  99. package/dist/federation.server.cjs.map +1 -0
  100. package/dist/federation.server.mjs +27 -0
  101. package/dist/federation.server.mjs.map +1 -0
  102. package/dist/host.cjs +367 -0
  103. package/dist/host.cjs.map +1 -0
  104. package/dist/host.d.cts +22 -0
  105. package/dist/host.d.cts.map +1 -0
  106. package/dist/host.d.mts +22 -0
  107. package/dist/host.d.mts.map +1 -0
  108. package/dist/host.mjs +364 -0
  109. package/dist/host.mjs.map +1 -0
  110. package/dist/index.cjs +122 -0
  111. package/dist/index.d.cts +7 -0
  112. package/dist/index.d.mts +7 -0
  113. package/dist/index.mjs +9 -0
  114. package/dist/integrity.cjs +39 -0
  115. package/dist/integrity.cjs.map +1 -0
  116. package/dist/integrity.d.cts +7 -0
  117. package/dist/integrity.d.cts.map +1 -0
  118. package/dist/integrity.d.mts +7 -0
  119. package/dist/integrity.d.mts.map +1 -0
  120. package/dist/integrity.mjs +35 -0
  121. package/dist/integrity.mjs.map +1 -0
  122. package/dist/mf.cjs +77 -0
  123. package/dist/mf.cjs.map +1 -0
  124. package/dist/mf.d.cts +19 -0
  125. package/dist/mf.d.cts.map +1 -0
  126. package/dist/mf.d.mts +19 -0
  127. package/dist/mf.d.mts.map +1 -0
  128. package/dist/mf.mjs +71 -0
  129. package/dist/mf.mjs.map +1 -0
  130. package/dist/near-cli.cjs +196 -0
  131. package/dist/near-cli.cjs.map +1 -0
  132. package/dist/near-cli.mjs +193 -0
  133. package/dist/near-cli.mjs.map +1 -0
  134. package/dist/network.cjs +9 -0
  135. package/dist/network.cjs.map +1 -0
  136. package/dist/network.mjs +8 -0
  137. package/dist/network.mjs.map +1 -0
  138. package/dist/orchestrator.cjs +441 -0
  139. package/dist/orchestrator.cjs.map +1 -0
  140. package/dist/orchestrator.d.cts +40 -0
  141. package/dist/orchestrator.d.cts.map +1 -0
  142. package/dist/orchestrator.d.mts +40 -0
  143. package/dist/orchestrator.d.mts.map +1 -0
  144. package/dist/orchestrator.mjs +436 -0
  145. package/dist/orchestrator.mjs.map +1 -0
  146. package/dist/plugin.cjs +825 -0
  147. package/dist/plugin.cjs.map +1 -0
  148. package/dist/plugin.d.cts +347 -0
  149. package/dist/plugin.d.cts.map +1 -0
  150. package/dist/plugin.d.mts +348 -0
  151. package/dist/plugin.d.mts.map +1 -0
  152. package/dist/plugin.mjs +822 -0
  153. package/dist/plugin.mjs.map +1 -0
  154. package/dist/process-registry.cjs +120 -0
  155. package/dist/process-registry.cjs.map +1 -0
  156. package/dist/process-registry.d.cts +25 -0
  157. package/dist/process-registry.d.cts.map +1 -0
  158. package/dist/process-registry.d.mts +25 -0
  159. package/dist/process-registry.d.mts.map +1 -0
  160. package/dist/process-registry.mjs +119 -0
  161. package/dist/process-registry.mjs.map +1 -0
  162. package/dist/sdk.cjs +61 -0
  163. package/dist/sdk.d.cts +5 -0
  164. package/dist/sdk.d.mts +5 -0
  165. package/dist/sdk.mjs +6 -0
  166. package/dist/shared.cjs +143 -0
  167. package/dist/shared.cjs.map +1 -0
  168. package/dist/shared.d.cts +33 -0
  169. package/dist/shared.d.cts.map +1 -0
  170. package/dist/shared.d.mts +33 -0
  171. package/dist/shared.d.mts.map +1 -0
  172. package/dist/shared.mjs +140 -0
  173. package/dist/shared.mjs.map +1 -0
  174. package/dist/types.cjs +160 -0
  175. package/dist/types.cjs.map +1 -0
  176. package/dist/types.d.cts +269 -0
  177. package/dist/types.d.cts.map +1 -0
  178. package/dist/types.d.mts +269 -0
  179. package/dist/types.d.mts.map +1 -0
  180. package/dist/types.mjs +144 -0
  181. package/dist/types.mjs.map +1 -0
  182. package/dist/ui/head.cjs +67 -0
  183. package/dist/ui/head.cjs.map +1 -0
  184. package/dist/ui/head.d.cts +19 -0
  185. package/dist/ui/head.d.cts.map +1 -0
  186. package/dist/ui/head.d.mts +19 -0
  187. package/dist/ui/head.d.mts.map +1 -0
  188. package/dist/ui/head.mjs +61 -0
  189. package/dist/ui/head.mjs.map +1 -0
  190. package/dist/ui/index.cjs +32 -0
  191. package/dist/ui/index.d.cts +7 -0
  192. package/dist/ui/index.d.mts +7 -0
  193. package/dist/ui/index.mjs +6 -0
  194. package/dist/ui/metadata.cjs +106 -0
  195. package/dist/ui/metadata.cjs.map +1 -0
  196. package/dist/ui/metadata.d.cts +35 -0
  197. package/dist/ui/metadata.d.cts.map +1 -0
  198. package/dist/ui/metadata.d.mts +35 -0
  199. package/dist/ui/metadata.d.mts.map +1 -0
  200. package/dist/ui/metadata.mjs +100 -0
  201. package/dist/ui/metadata.mjs.map +1 -0
  202. package/dist/ui/router.cjs +56 -0
  203. package/dist/ui/router.cjs.map +1 -0
  204. package/dist/ui/router.d.cts +11 -0
  205. package/dist/ui/router.d.cts.map +1 -0
  206. package/dist/ui/router.d.mts +11 -0
  207. package/dist/ui/router.d.mts.map +1 -0
  208. package/dist/ui/router.mjs +51 -0
  209. package/dist/ui/router.mjs.map +1 -0
  210. package/dist/ui/runtime.cjs +65 -0
  211. package/dist/ui/runtime.cjs.map +1 -0
  212. package/dist/ui/runtime.d.cts +29 -0
  213. package/dist/ui/runtime.d.cts.map +1 -0
  214. package/dist/ui/runtime.d.mts +29 -0
  215. package/dist/ui/runtime.d.mts.map +1 -0
  216. package/dist/ui/runtime.mjs +53 -0
  217. package/dist/ui/runtime.mjs.map +1 -0
  218. package/dist/ui/types.cjs +0 -0
  219. package/dist/ui/types.d.cts +52 -0
  220. package/dist/ui/types.d.cts.map +1 -0
  221. package/dist/ui/types.d.mts +52 -0
  222. package/dist/ui/types.d.mts.map +1 -0
  223. package/dist/ui/types.mjs +1 -0
  224. package/dist/utils/banner.cjs +24 -0
  225. package/dist/utils/banner.cjs.map +1 -0
  226. package/dist/utils/banner.mjs +23 -0
  227. package/dist/utils/banner.mjs.map +1 -0
  228. package/dist/utils/linkify.cjs +15 -0
  229. package/dist/utils/linkify.cjs.map +1 -0
  230. package/dist/utils/linkify.mjs +14 -0
  231. package/dist/utils/linkify.mjs.map +1 -0
  232. package/dist/utils/run.cjs +40 -0
  233. package/dist/utils/run.cjs.map +1 -0
  234. package/dist/utils/run.mjs +39 -0
  235. package/dist/utils/run.mjs.map +1 -0
  236. package/dist/utils/theme.cjs +44 -0
  237. package/dist/utils/theme.cjs.map +1 -0
  238. package/dist/utils/theme.mjs +37 -0
  239. package/dist/utils/theme.mjs.map +1 -0
  240. package/package.json +269 -80
  241. package/src/api-contract.ts +309 -0
  242. package/src/api.ts +181 -0
  243. package/src/app.ts +346 -0
  244. package/src/cli/catalog.ts +49 -0
  245. package/src/cli/help.ts +13 -0
  246. package/src/cli/init.ts +415 -0
  247. package/src/cli/parse.ts +130 -0
  248. package/src/cli/prompts.ts +64 -0
  249. package/src/cli.ts +203 -1507
  250. package/src/components/dev-view.tsx +104 -41
  251. package/src/components/streaming-view.ts +89 -22
  252. package/src/config.ts +462 -532
  253. package/src/contract.meta.ts +96 -0
  254. package/src/contract.ts +164 -561
  255. package/src/dev-logs.ts +85 -0
  256. package/src/dev-session.ts +318 -0
  257. package/src/fastkv.ts +153 -0
  258. package/src/federation.server.ts +43 -0
  259. package/src/host.ts +526 -0
  260. package/src/index.ts +6 -3
  261. package/src/integrity.ts +54 -0
  262. package/src/mf.ts +105 -0
  263. package/src/near-cli.ts +284 -0
  264. package/src/network.ts +3 -0
  265. package/src/orchestrator.ts +648 -0
  266. package/src/plugin.ts +1116 -2303
  267. package/src/process-registry.ts +154 -0
  268. package/src/scripts/sync-api-contract.ts +24 -0
  269. package/src/sdk.ts +14 -0
  270. package/src/shared.ts +206 -0
  271. package/src/types.ts +152 -206
  272. package/src/ui/head.ts +34 -27
  273. package/src/ui/index.ts +3 -3
  274. package/src/ui/metadata.ts +95 -0
  275. package/src/ui/router.ts +22 -6
  276. package/src/ui/runtime.ts +55 -6
  277. package/src/ui/types.ts +24 -11
  278. package/src/utils/banner.ts +10 -6
  279. package/src/utils/run.ts +26 -27
  280. package/src/utils/theme.ts +3 -66
  281. package/src/components/monitor-view.tsx +0 -475
  282. package/src/components/status-view.tsx +0 -173
  283. package/src/lib/env.ts +0 -109
  284. package/src/lib/near-cli.ts +0 -289
  285. package/src/lib/nova.ts +0 -266
  286. package/src/lib/orchestrator.ts +0 -276
  287. package/src/lib/process-registry.ts +0 -166
  288. package/src/lib/process.ts +0 -549
  289. package/src/lib/resource-monitor/assertions.ts +0 -234
  290. package/src/lib/resource-monitor/command.ts +0 -283
  291. package/src/lib/resource-monitor/diff.ts +0 -157
  292. package/src/lib/resource-monitor/errors.ts +0 -127
  293. package/src/lib/resource-monitor/index.ts +0 -305
  294. package/src/lib/resource-monitor/platform/darwin.ts +0 -306
  295. package/src/lib/resource-monitor/platform/index.ts +0 -35
  296. package/src/lib/resource-monitor/platform/linux.ts +0 -332
  297. package/src/lib/resource-monitor/platform/windows.ts +0 -298
  298. package/src/lib/resource-monitor/snapshot.ts +0 -217
  299. package/src/lib/resource-monitor/types.ts +0 -74
  300. package/src/lib/session-recorder/errors.ts +0 -102
  301. package/src/lib/session-recorder/flows/login.ts +0 -210
  302. package/src/lib/session-recorder/index.ts +0 -361
  303. package/src/lib/session-recorder/playwright.ts +0 -257
  304. package/src/lib/session-recorder/report.ts +0 -353
  305. package/src/lib/session-recorder/server.ts +0 -267
  306. package/src/lib/session-recorder/types.ts +0 -115
  307. package/src/lib/sync.ts +0 -1
  308. package/src/ui/files.ts +0 -134
package/src/ui/runtime.ts CHANGED
@@ -1,35 +1,84 @@
1
+ import { getNetworkIdForAccount } from "../network";
1
2
  import type { ClientRuntimeConfig } from "../types";
2
3
 
4
+ export type { ClientRuntimeInfo } from "../types";
5
+
3
6
  declare global {
4
7
  interface Window {
5
8
  __RUNTIME_CONFIG__?: ClientRuntimeConfig;
6
9
  }
7
10
  }
8
11
 
9
- export function getRuntimeConfig(): ClientRuntimeConfig | undefined {
10
- if (typeof window === "undefined") return undefined;
12
+ export function getRuntimeConfig(): ClientRuntimeConfig {
13
+ if (typeof window === "undefined") {
14
+ throw new Error("Runtime config is only available in the browser");
15
+ }
16
+
17
+ if (!window.__RUNTIME_CONFIG__) {
18
+ throw new Error("Missing runtime config");
19
+ }
20
+
11
21
  return window.__RUNTIME_CONFIG__;
12
22
  }
13
23
 
14
- export function getAssetsUrl(config?: ClientRuntimeConfig): string {
24
+ export function getActiveRuntime(runtimeConfig?: Partial<ClientRuntimeConfig>) {
25
+ return runtimeConfig?.runtime;
26
+ }
27
+
28
+ export function getRuntimeBasePath(runtimeConfig?: Partial<ClientRuntimeConfig>) {
29
+ return getActiveRuntime(runtimeConfig)?.runtimeBasePath || "/";
30
+ }
31
+
32
+ export function buildRuntimeHref(pathname: string, runtimeConfig?: Partial<ClientRuntimeConfig>) {
33
+ const basePath = getRuntimeBasePath(runtimeConfig);
34
+ if (basePath === "/") {
35
+ return pathname;
36
+ }
37
+
38
+ if (!pathname.startsWith("/")) {
39
+ return `${basePath}/${pathname}`;
40
+ }
41
+
42
+ return pathname === "/" ? basePath : `${basePath}${pathname}`;
43
+ }
44
+
45
+ export function buildPublishedAccountHref(accountId: string) {
46
+ return `/apps/${encodeURIComponent(accountId)}`;
47
+ }
48
+
49
+ export function buildPublishedGatewayHref(accountId: string, gatewayId: string) {
50
+ return `${buildPublishedAccountHref(accountId)}/${encodeURIComponent(gatewayId)}`;
51
+ }
52
+
53
+ export function getAssetsUrl(config?: Partial<ClientRuntimeConfig>): string {
15
54
  const cfg = config ?? getRuntimeConfig();
16
55
  return cfg?.assetsUrl ?? "";
17
56
  }
18
57
 
19
- export function getHostUrl(config?: ClientRuntimeConfig): string {
58
+ export function getHostUrl(config?: Partial<ClientRuntimeConfig>): string {
20
59
  const cfg = config ?? getRuntimeConfig();
21
60
  if (typeof window === "undefined") return "";
22
61
  return cfg?.hostUrl ?? window.location.origin;
23
62
  }
24
63
 
25
- export function getApiBaseUrl(config?: ClientRuntimeConfig): string {
64
+ export function getApiBaseUrl(config?: Partial<ClientRuntimeConfig>): string {
26
65
  const cfg = config ?? getRuntimeConfig();
27
66
  const base = cfg?.rpcBase;
28
67
  if (typeof window === "undefined") return "/api/rpc";
29
68
  return base ? `${window.location.origin}${base}` : `${window.location.origin}/api/rpc`;
30
69
  }
31
70
 
32
- export function getAccount(config?: ClientRuntimeConfig): string {
71
+ export function getAccount(config?: Partial<ClientRuntimeConfig>): string {
33
72
  const cfg = config ?? getRuntimeConfig();
34
73
  return cfg?.account ?? "every.near";
35
74
  }
75
+
76
+ export function getNetworkId(config?: Partial<ClientRuntimeConfig>): "mainnet" | "testnet" {
77
+ const cfg = config ?? getRuntimeConfig();
78
+ return cfg?.networkId ?? getNetworkIdForAccount(cfg?.account ?? "every.near");
79
+ }
80
+
81
+ export function getRepository(config?: Partial<ClientRuntimeConfig>): string | undefined {
82
+ const cfg = config ?? getRuntimeConfig();
83
+ return cfg?.repository;
84
+ }
package/src/ui/types.ts CHANGED
@@ -2,15 +2,22 @@ import type { QueryClient } from "@tanstack/react-query";
2
2
  import type { AnyRouteMatch, AnyRouter, RouterHistory } from "@tanstack/react-router";
3
3
  import type { ClientRuntimeConfig } from "../types";
4
4
 
5
- export interface RouterContext {
5
+ export interface RouterContext<TSession = unknown> {
6
6
  queryClient: QueryClient;
7
7
  assetsUrl: string;
8
- runtimeConfig?: ClientRuntimeConfig;
8
+ runtimeConfig?: Partial<ClientRuntimeConfig>;
9
+ session?: TSession;
9
10
  }
10
11
 
11
- export interface CreateRouterOptions {
12
+ export interface RouterContextWithApi<TApiClient = unknown, TSession = unknown>
13
+ extends RouterContext<TSession> {
14
+ apiClient?: TApiClient;
15
+ }
16
+
17
+ export interface CreateRouterOptions<TApiClient = unknown, TSession = unknown> {
12
18
  history?: RouterHistory;
13
- context?: Partial<RouterContext>;
19
+ context?: Partial<RouterContextWithApi<TApiClient, TSession>>;
20
+ basepath?: string;
14
21
  }
15
22
 
16
23
  export type HeadMeta = NonNullable<AnyRouteMatch["meta"]>[number];
@@ -23,9 +30,16 @@ export interface HeadData {
23
30
  scripts: HeadScript[];
24
31
  }
25
32
 
26
- export interface RenderOptions {
33
+ export interface RenderOptions<TSession = unknown> {
27
34
  assetsUrl: string;
28
- runtimeConfig: ClientRuntimeConfig;
35
+ runtimeConfig: Partial<ClientRuntimeConfig>;
36
+ basepath?: string;
37
+ session?: TSession;
38
+ }
39
+
40
+ export interface RenderOptionsWithApi<TApiClient = unknown, TSession = unknown>
41
+ extends RenderOptions<TSession> {
42
+ apiClient: TApiClient;
29
43
  }
30
44
 
31
45
  export interface RenderResult {
@@ -34,18 +48,17 @@ export interface RenderResult {
34
48
  headers: Headers;
35
49
  }
36
50
 
37
- export interface RouterModule {
38
- createRouter: (opts?: CreateRouterOptions) => {
51
+ export interface RouterModule<TApiClient = unknown, TSession = unknown> {
52
+ createRouter: (opts?: CreateRouterOptions<TApiClient, TSession>) => {
39
53
  router: AnyRouter;
40
54
  queryClient: QueryClient;
41
55
  };
42
56
  getRouteHead: (
43
57
  pathname: string,
44
- context?: Partial<RouterContext>
58
+ context?: Partial<RouterContextWithApi<TApiClient, TSession>>,
45
59
  ) => Promise<HeadData>;
46
60
  renderToStream: (
47
61
  request: Request,
48
- options: RenderOptions
62
+ options: RenderOptionsWithApi<TApiClient, TSession>,
49
63
  ) => Promise<RenderResult>;
50
- routeTree: AnyRouter["routeTree"];
51
64
  }
@@ -1,5 +1,9 @@
1
+ import { createRequire } from "node:module";
1
2
  import { colors, divider, gradients } from "./theme";
2
3
 
4
+ const require = createRequire(import.meta.url);
5
+ const pkg = require("../../package.json") as { version: string };
6
+
3
7
  const ASCII_BOS = `
4
8
  ██████╗ ██████╗ ███████╗
5
9
  ██╔══██╗██╔═══██╗██╔════╝
@@ -8,10 +12,10 @@ const ASCII_BOS = `
8
12
  ██████╔╝╚██████╔╝███████║
9
13
  ╚═════╝ ╚═════╝ ╚══════╝`;
10
14
 
11
- export function printBanner(title = "everything-dev", version = "1.0.0") {
12
- console.log(gradients.cyber(ASCII_BOS));
13
- console.log();
14
- console.log(colors.dim(` ${title} ${colors.cyan(`v${version}`)}`));
15
- console.log(colors.dim(` ${divider(30)}`));
16
- console.log();
15
+ export function printBanner(title = "everything-dev", version = pkg.version) {
16
+ console.log(gradients.cyber(ASCII_BOS));
17
+ console.log();
18
+ console.log(colors.dim(` ${title} ${colors.cyan(`v${version}`)}`));
19
+ console.log(colors.dim(` ${divider(30)}`));
20
+ console.log();
17
21
  }
package/src/utils/run.ts CHANGED
@@ -1,32 +1,31 @@
1
- import chalk from "chalk";
2
- import { type Options as ExecaOptions, execa } from "execa";
3
- import { getProjectRoot } from "../config";
1
+ type RunResult = { stdout: string; stderr: string; exitCode: number };
4
2
 
5
3
  export async function run(
6
- cmd: string,
7
- args: string[],
8
- options: { cwd?: string; env?: Record<string, string> } = {},
9
- ) {
10
- console.log(chalk.dim(`$ ${cmd} ${args.join(" ")}`));
4
+ cmd: string,
5
+ args: string[],
6
+ options: { cwd?: string; env?: Record<string, string>; capture?: boolean } = {},
7
+ ): Promise<RunResult | undefined> {
8
+ const proc = Bun.spawn({
9
+ cmd: [cmd, ...args],
10
+ cwd: options.cwd,
11
+ env: options.env ? { ...(process.env as Record<string, string>), ...options.env } : process.env,
12
+ stdio: options.capture ? ["inherit", "pipe", "pipe"] : ["inherit", "inherit", "inherit"],
13
+ });
11
14
 
12
- // Get project root, fallback to cwd if config not loaded
13
- let cwd = options.cwd;
14
- if (!cwd) {
15
- try {
16
- cwd = getProjectRoot();
17
- } catch {
18
- cwd = process.cwd();
19
- }
20
- }
15
+ if (!options.capture) {
16
+ const exitCode = await proc.exited;
17
+ if (exitCode !== 0) {
18
+ throw new Error(`${cmd} ${args.join(" ")} failed with exit code ${exitCode}`);
19
+ }
20
+ return;
21
+ }
21
22
 
22
- const execaOptions: ExecaOptions = {
23
- cwd,
24
- stdio: "inherit",
25
- reject: false,
26
- env: options.env ? { ...process.env, ...options.env } : undefined,
27
- };
28
- const result = await execa(cmd, args, execaOptions);
29
- if (result.exitCode !== 0) {
30
- process.exit(result.exitCode);
31
- }
23
+ const [stdout, stderr, exitCode] = await Promise.all([
24
+ new Response(proc.stdout).text(),
25
+ new Response(proc.stderr).text(),
26
+ proc.exited,
27
+ ]);
28
+
29
+ const result = { stdout, stderr, exitCode };
30
+ return result;
32
31
  }
@@ -1,11 +1,8 @@
1
- import gradient from "gradient-string";
2
1
  import chalk from "chalk";
2
+ import gradient from "gradient-string";
3
3
 
4
- export const gradients = {
4
+ export const gradients: Record<string, (text: string) => string> = {
5
5
  cyber: gradient(["#00ffff", "#ff00ff"]),
6
- matrix: gradient(["#003300", "#00ff41"]),
7
- frost: gradient(["#0080ff", "#00ffff"]),
8
- neon: gradient(["#00ff41", "#00ffff"]),
9
6
  };
10
7
 
11
8
  export const colors = {
@@ -13,89 +10,29 @@ export const colors = {
13
10
  magenta: chalk.hex("#ff00ff"),
14
11
  green: chalk.hex("#00ff41"),
15
12
  blue: chalk.hex("#0080ff"),
16
- purple: chalk.hex("#bf00ff"),
17
13
  white: chalk.hex("#f0f0f0"),
18
14
  gray: chalk.hex("#555555"),
19
15
  dim: chalk.dim,
20
- bold: chalk.bold,
21
16
  error: chalk.hex("#ff3366"),
22
17
  };
23
18
 
24
19
  export const icons = {
25
- config: "◆",
26
- host: "●",
27
- pkg: "▸",
28
20
  scan: "○",
29
21
  run: "▶",
30
- test: "◇",
31
- db: "▪",
32
- clean: "✕",
33
22
  ok: "✓",
34
23
  err: "✗",
35
24
  pending: "○",
36
25
  arrow: "→",
37
- line: "─",
38
26
  dot: "·",
39
- bar: "│",
40
- corner: "└",
41
27
  app: "◉",
28
+ config: "⚙",
42
29
  };
43
30
 
44
31
  export const frames = {
45
32
  top: (width: number) => `┌${"─".repeat(width - 2)}┐`,
46
33
  bottom: (width: number) => `└${"─".repeat(width - 2)}┘`,
47
- side: "│",
48
- empty: (width: number) => `│${" ".repeat(width - 2)}│`,
49
34
  };
50
35
 
51
- export function box(content: string, width = 50): string {
52
- const lines = content.split("\n");
53
- const maxLen = Math.max(...lines.map((l) => l.length), width - 4);
54
- const innerWidth = maxLen + 2;
55
- const totalWidth = innerWidth + 2;
56
-
57
- const top = frames.top(totalWidth);
58
- const bottom = frames.bottom(totalWidth);
59
- const body = lines
60
- .map((line) => {
61
- const padding = " ".repeat(maxLen - stripAnsi(line).length);
62
- return `${frames.side} ${line}${padding} ${frames.side}`;
63
- })
64
- .join("\n");
65
-
66
- return `${top}\n${body}\n${bottom}`;
67
- }
68
-
69
- function stripAnsi(str: string): string {
70
- const ansiPattern = new RegExp("\\x1b\\[[0-9;]*m", "g");
71
- return str.replace(ansiPattern, "");
72
- }
73
-
74
- export function header(text: string): string {
75
- const styled = gradients.cyber(text);
76
- return box(styled);
77
- }
78
-
79
36
  export function divider(width = 48): string {
80
37
  return colors.dim("─".repeat(width));
81
38
  }
82
-
83
- export function label(text: string): string {
84
- return colors.cyan(text);
85
- }
86
-
87
- export function value(text: string): string {
88
- return colors.white(text);
89
- }
90
-
91
- export function success(text: string): string {
92
- return colors.green(text);
93
- }
94
-
95
- export function error(text: string): string {
96
- return colors.error(text);
97
- }
98
-
99
- export function statusIcon(ok: boolean): string {
100
- return ok ? success(icons.ok) : error(icons.err);
101
- }