threadforge 0.1.1 → 0.2.1

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 (358) hide show
  1. package/README.md +52 -20
  2. package/bin/forge.js +2 -1058
  3. package/bin/host-commands.d.ts +2 -0
  4. package/bin/host-commands.d.ts.map +1 -0
  5. package/bin/host-commands.js +7 -8
  6. package/bin/platform-commands.d.ts +2 -0
  7. package/bin/platform-commands.d.ts.map +1 -0
  8. package/bin/platform-commands.js +118 -36
  9. package/dist/cli/base-command.d.ts +12 -0
  10. package/dist/cli/base-command.d.ts.map +1 -0
  11. package/dist/cli/base-command.js +25 -0
  12. package/dist/cli/base-command.js.map +1 -0
  13. package/dist/cli/commands/build.d.ts +10 -0
  14. package/dist/cli/commands/build.d.ts.map +1 -0
  15. package/dist/cli/commands/build.js +110 -0
  16. package/dist/cli/commands/build.js.map +1 -0
  17. package/dist/cli/commands/deploy.d.ts +12 -0
  18. package/dist/cli/commands/deploy.d.ts.map +1 -0
  19. package/dist/cli/commands/deploy.js +143 -0
  20. package/dist/cli/commands/deploy.js.map +1 -0
  21. package/dist/cli/commands/dev.d.ts +10 -0
  22. package/dist/cli/commands/dev.d.ts.map +1 -0
  23. package/dist/cli/commands/dev.js +138 -0
  24. package/dist/cli/commands/dev.js.map +1 -0
  25. package/dist/cli/commands/generate.d.ts +10 -0
  26. package/dist/cli/commands/generate.d.ts.map +1 -0
  27. package/dist/cli/commands/generate.js +76 -0
  28. package/dist/cli/commands/generate.js.map +1 -0
  29. package/dist/cli/commands/host.d.ts +8 -0
  30. package/dist/cli/commands/host.d.ts.map +1 -0
  31. package/dist/cli/commands/host.js +20 -0
  32. package/dist/cli/commands/host.js.map +1 -0
  33. package/dist/cli/commands/init.d.ts +16 -0
  34. package/dist/cli/commands/init.d.ts.map +1 -0
  35. package/dist/cli/commands/init.js +246 -0
  36. package/dist/cli/commands/init.js.map +1 -0
  37. package/dist/cli/commands/platform.d.ts +8 -0
  38. package/dist/cli/commands/platform.d.ts.map +1 -0
  39. package/dist/cli/commands/platform.js +20 -0
  40. package/dist/cli/commands/platform.js.map +1 -0
  41. package/dist/cli/commands/restart.d.ts +8 -0
  42. package/dist/cli/commands/restart.d.ts.map +1 -0
  43. package/dist/cli/commands/restart.js +13 -0
  44. package/dist/cli/commands/restart.js.map +1 -0
  45. package/dist/cli/commands/scaffold/frontend.d.ts +10 -0
  46. package/dist/cli/commands/scaffold/frontend.d.ts.map +1 -0
  47. package/dist/cli/commands/scaffold/frontend.js +130 -0
  48. package/dist/cli/commands/scaffold/frontend.js.map +1 -0
  49. package/dist/cli/commands/scaffold/react.d.ts +7 -0
  50. package/dist/cli/commands/scaffold/react.d.ts.map +1 -0
  51. package/dist/cli/commands/scaffold/react.js +12 -0
  52. package/dist/cli/commands/scaffold/react.js.map +1 -0
  53. package/dist/cli/commands/scale.d.ts +8 -0
  54. package/dist/cli/commands/scale.d.ts.map +1 -0
  55. package/dist/cli/commands/scale.js +13 -0
  56. package/dist/cli/commands/scale.js.map +1 -0
  57. package/dist/cli/commands/start.d.ts +10 -0
  58. package/dist/cli/commands/start.d.ts.map +1 -0
  59. package/dist/cli/commands/start.js +71 -0
  60. package/dist/cli/commands/start.js.map +1 -0
  61. package/dist/cli/commands/status.d.ts +11 -0
  62. package/dist/cli/commands/status.d.ts.map +1 -0
  63. package/dist/cli/commands/status.js +60 -0
  64. package/dist/cli/commands/status.js.map +1 -0
  65. package/dist/cli/commands/stop.d.ts +10 -0
  66. package/dist/cli/commands/stop.d.ts.map +1 -0
  67. package/dist/cli/commands/stop.js +89 -0
  68. package/dist/cli/commands/stop.js.map +1 -0
  69. package/dist/cli/util/config-discovery.d.ts +8 -0
  70. package/dist/cli/util/config-discovery.d.ts.map +1 -0
  71. package/dist/cli/util/config-discovery.js +70 -0
  72. package/dist/cli/util/config-discovery.js.map +1 -0
  73. package/dist/cli/util/config-patcher.d.ts +17 -0
  74. package/dist/cli/util/config-patcher.d.ts.map +1 -0
  75. package/dist/cli/util/config-patcher.js +439 -0
  76. package/dist/cli/util/config-patcher.js.map +1 -0
  77. package/dist/cli/util/frontend-dev.d.ts +8 -0
  78. package/dist/cli/util/frontend-dev.d.ts.map +1 -0
  79. package/dist/cli/util/frontend-dev.js +117 -0
  80. package/dist/cli/util/frontend-dev.js.map +1 -0
  81. package/dist/cli/util/process.d.ts +5 -0
  82. package/dist/cli/util/process.d.ts.map +1 -0
  83. package/dist/cli/util/process.js +17 -0
  84. package/dist/cli/util/process.js.map +1 -0
  85. package/dist/cli/util/templates.d.ts +10 -0
  86. package/dist/cli/util/templates.d.ts.map +1 -0
  87. package/dist/cli/util/templates.js +157 -0
  88. package/dist/cli/util/templates.js.map +1 -0
  89. package/dist/core/AlertSink.d.ts +83 -0
  90. package/dist/core/AlertSink.d.ts.map +1 -0
  91. package/dist/core/AlertSink.js +126 -0
  92. package/dist/core/AlertSink.js.map +1 -0
  93. package/dist/core/DirectMessageBus.d.ts +88 -0
  94. package/dist/core/DirectMessageBus.d.ts.map +1 -0
  95. package/dist/core/DirectMessageBus.js +352 -0
  96. package/dist/core/DirectMessageBus.js.map +1 -0
  97. package/dist/core/EndpointResolver.d.ts +111 -0
  98. package/dist/core/EndpointResolver.d.ts.map +1 -0
  99. package/dist/core/EndpointResolver.js +336 -0
  100. package/dist/core/EndpointResolver.js.map +1 -0
  101. package/dist/core/ForgeContext.d.ts +221 -0
  102. package/dist/core/ForgeContext.d.ts.map +1 -0
  103. package/dist/core/ForgeContext.js +1169 -0
  104. package/dist/core/ForgeContext.js.map +1 -0
  105. package/dist/core/ForgeEndpoints.d.ts +71 -0
  106. package/dist/core/ForgeEndpoints.d.ts.map +1 -0
  107. package/dist/core/ForgeEndpoints.js +442 -0
  108. package/dist/core/ForgeEndpoints.js.map +1 -0
  109. package/dist/core/ForgeHost.d.ts +82 -0
  110. package/dist/core/ForgeHost.d.ts.map +1 -0
  111. package/dist/core/ForgeHost.js +107 -0
  112. package/dist/core/ForgeHost.js.map +1 -0
  113. package/dist/core/ForgePlatform.d.ts +96 -0
  114. package/dist/core/ForgePlatform.d.ts.map +1 -0
  115. package/dist/core/ForgePlatform.js +136 -0
  116. package/dist/core/ForgePlatform.js.map +1 -0
  117. package/dist/core/ForgeWebSocket.d.ts +56 -0
  118. package/dist/core/ForgeWebSocket.d.ts.map +1 -0
  119. package/dist/core/ForgeWebSocket.js +415 -0
  120. package/dist/core/ForgeWebSocket.js.map +1 -0
  121. package/dist/core/Ingress.d.ts +329 -0
  122. package/dist/core/Ingress.d.ts.map +1 -0
  123. package/dist/core/Ingress.js +694 -0
  124. package/dist/core/Ingress.js.map +1 -0
  125. package/dist/core/Interceptors.d.ts +134 -0
  126. package/dist/core/Interceptors.d.ts.map +1 -0
  127. package/dist/core/Interceptors.js +416 -0
  128. package/dist/core/Interceptors.js.map +1 -0
  129. package/dist/core/Logger.d.ts +20 -0
  130. package/dist/core/Logger.d.ts.map +1 -0
  131. package/dist/core/Logger.js +77 -0
  132. package/dist/core/Logger.js.map +1 -0
  133. package/dist/core/MessageBus.d.ts +15 -0
  134. package/dist/core/MessageBus.d.ts.map +1 -0
  135. package/dist/core/MessageBus.js +18 -0
  136. package/dist/core/MessageBus.js.map +1 -0
  137. package/dist/core/Prometheus.d.ts +80 -0
  138. package/dist/core/Prometheus.d.ts.map +1 -0
  139. package/dist/core/Prometheus.js +332 -0
  140. package/dist/core/Prometheus.js.map +1 -0
  141. package/dist/core/RequestContext.d.ts +214 -0
  142. package/dist/core/RequestContext.d.ts.map +1 -0
  143. package/dist/core/RequestContext.js +556 -0
  144. package/dist/core/RequestContext.js.map +1 -0
  145. package/dist/core/Router.d.ts +45 -0
  146. package/dist/core/Router.d.ts.map +1 -0
  147. package/dist/core/Router.js +285 -0
  148. package/dist/core/Router.js.map +1 -0
  149. package/dist/core/RoutingStrategy.d.ts +116 -0
  150. package/dist/core/RoutingStrategy.d.ts.map +1 -0
  151. package/dist/core/RoutingStrategy.js +306 -0
  152. package/dist/core/RoutingStrategy.js.map +1 -0
  153. package/dist/core/RpcConfig.d.ts +72 -0
  154. package/dist/core/RpcConfig.d.ts.map +1 -0
  155. package/dist/core/RpcConfig.js +127 -0
  156. package/dist/core/RpcConfig.js.map +1 -0
  157. package/dist/core/SignatureCache.d.ts +81 -0
  158. package/dist/core/SignatureCache.d.ts.map +1 -0
  159. package/dist/core/SignatureCache.js +172 -0
  160. package/dist/core/SignatureCache.js.map +1 -0
  161. package/dist/core/StaticFileServer.d.ts +34 -0
  162. package/dist/core/StaticFileServer.d.ts.map +1 -0
  163. package/dist/core/StaticFileServer.js +497 -0
  164. package/dist/core/StaticFileServer.js.map +1 -0
  165. package/dist/core/Supervisor.d.ts +198 -0
  166. package/dist/core/Supervisor.d.ts.map +1 -0
  167. package/dist/core/Supervisor.js +1418 -0
  168. package/dist/core/Supervisor.js.map +1 -0
  169. package/dist/core/ThreadAllocator.d.ts +52 -0
  170. package/dist/core/ThreadAllocator.d.ts.map +1 -0
  171. package/dist/core/ThreadAllocator.js +174 -0
  172. package/dist/core/ThreadAllocator.js.map +1 -0
  173. package/dist/core/WorkerChannelManager.d.ts +130 -0
  174. package/dist/core/WorkerChannelManager.d.ts.map +1 -0
  175. package/dist/core/WorkerChannelManager.js +956 -0
  176. package/dist/core/WorkerChannelManager.js.map +1 -0
  177. package/dist/core/config-enums.d.ts +41 -0
  178. package/dist/core/config-enums.d.ts.map +1 -0
  179. package/dist/core/config-enums.js +59 -0
  180. package/dist/core/config-enums.js.map +1 -0
  181. package/dist/core/config.d.ts +159 -0
  182. package/dist/core/config.d.ts.map +1 -0
  183. package/dist/core/config.js +694 -0
  184. package/dist/core/config.js.map +1 -0
  185. package/dist/core/host-config.d.ts +146 -0
  186. package/dist/core/host-config.d.ts.map +1 -0
  187. package/dist/core/host-config.js +312 -0
  188. package/dist/core/host-config.js.map +1 -0
  189. package/dist/core/ipc-errors.d.ts +27 -0
  190. package/dist/core/ipc-errors.d.ts.map +1 -0
  191. package/dist/core/ipc-errors.js +36 -0
  192. package/dist/core/ipc-errors.js.map +1 -0
  193. package/dist/core/network-utils.d.ts +35 -0
  194. package/dist/core/network-utils.d.ts.map +1 -0
  195. package/dist/core/network-utils.js +145 -0
  196. package/dist/core/network-utils.js.map +1 -0
  197. package/dist/core/platform-config.d.ts +142 -0
  198. package/dist/core/platform-config.d.ts.map +1 -0
  199. package/dist/core/platform-config.js +299 -0
  200. package/dist/core/platform-config.js.map +1 -0
  201. package/dist/decorators/ServiceProxy.d.ts +175 -0
  202. package/dist/decorators/ServiceProxy.d.ts.map +1 -0
  203. package/dist/decorators/ServiceProxy.js +969 -0
  204. package/dist/decorators/ServiceProxy.js.map +1 -0
  205. package/dist/decorators/index.d.ts +146 -0
  206. package/dist/decorators/index.d.ts.map +1 -0
  207. package/dist/decorators/index.js +545 -0
  208. package/dist/decorators/index.js.map +1 -0
  209. package/dist/deploy/NginxGenerator.d.ts +165 -0
  210. package/dist/deploy/NginxGenerator.d.ts.map +1 -0
  211. package/dist/deploy/NginxGenerator.js +781 -0
  212. package/dist/deploy/NginxGenerator.js.map +1 -0
  213. package/dist/deploy/PlatformManifestGenerator.d.ts +43 -0
  214. package/dist/deploy/PlatformManifestGenerator.d.ts.map +1 -0
  215. package/dist/deploy/PlatformManifestGenerator.js +80 -0
  216. package/dist/deploy/PlatformManifestGenerator.js.map +1 -0
  217. package/dist/deploy/RouteManifestGenerator.d.ts +42 -0
  218. package/dist/deploy/RouteManifestGenerator.d.ts.map +1 -0
  219. package/dist/deploy/RouteManifestGenerator.js +105 -0
  220. package/dist/deploy/RouteManifestGenerator.js.map +1 -0
  221. package/dist/deploy/index.d.ts +210 -0
  222. package/dist/deploy/index.d.ts.map +1 -0
  223. package/dist/deploy/index.js +918 -0
  224. package/dist/deploy/index.js.map +1 -0
  225. package/dist/frontend/FrontendDevLifecycle.d.ts +26 -0
  226. package/dist/frontend/FrontendDevLifecycle.d.ts.map +1 -0
  227. package/dist/frontend/FrontendDevLifecycle.js +60 -0
  228. package/dist/frontend/FrontendDevLifecycle.js.map +1 -0
  229. package/dist/frontend/FrontendPluginOrchestrator.d.ts +64 -0
  230. package/dist/frontend/FrontendPluginOrchestrator.d.ts.map +1 -0
  231. package/dist/frontend/FrontendPluginOrchestrator.js +167 -0
  232. package/dist/frontend/FrontendPluginOrchestrator.js.map +1 -0
  233. package/dist/frontend/SiteResolver.d.ts +33 -0
  234. package/dist/frontend/SiteResolver.d.ts.map +1 -0
  235. package/dist/frontend/SiteResolver.js +53 -0
  236. package/dist/frontend/SiteResolver.js.map +1 -0
  237. package/dist/frontend/StaticMountRegistry.d.ts +36 -0
  238. package/dist/frontend/StaticMountRegistry.d.ts.map +1 -0
  239. package/dist/frontend/StaticMountRegistry.js +94 -0
  240. package/dist/frontend/StaticMountRegistry.js.map +1 -0
  241. package/dist/frontend/index.d.ts +7 -0
  242. package/dist/frontend/index.d.ts.map +1 -0
  243. package/{src → dist}/frontend/index.js +4 -2
  244. package/dist/frontend/index.js.map +1 -0
  245. package/dist/frontend/pathUtils.d.ts +8 -0
  246. package/dist/frontend/pathUtils.d.ts.map +1 -0
  247. package/dist/frontend/pathUtils.js +17 -0
  248. package/dist/frontend/pathUtils.js.map +1 -0
  249. package/dist/frontend/plugins/index.d.ts +2 -0
  250. package/dist/frontend/plugins/index.d.ts.map +1 -0
  251. package/{src → dist}/frontend/plugins/index.js +1 -1
  252. package/dist/frontend/plugins/index.js.map +1 -0
  253. package/dist/frontend/plugins/viteFrontend.d.ts +51 -0
  254. package/dist/frontend/plugins/viteFrontend.d.ts.map +1 -0
  255. package/dist/frontend/plugins/viteFrontend.js +134 -0
  256. package/dist/frontend/plugins/viteFrontend.js.map +1 -0
  257. package/dist/frontend/types.d.ts +25 -0
  258. package/dist/frontend/types.d.ts.map +1 -0
  259. package/dist/frontend/types.js +2 -0
  260. package/dist/frontend/types.js.map +1 -0
  261. package/dist/index.d.ts +17 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +32 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/internals.d.ts +21 -0
  266. package/dist/internals.d.ts.map +1 -0
  267. package/{src → dist}/internals.js +12 -14
  268. package/dist/internals.js.map +1 -0
  269. package/dist/plugins/PluginManager.d.ts +209 -0
  270. package/dist/plugins/PluginManager.d.ts.map +1 -0
  271. package/dist/plugins/PluginManager.js +365 -0
  272. package/dist/plugins/PluginManager.js.map +1 -0
  273. package/dist/plugins/ScopedPostgres.d.ts +78 -0
  274. package/dist/plugins/ScopedPostgres.d.ts.map +1 -0
  275. package/dist/plugins/ScopedPostgres.js +190 -0
  276. package/dist/plugins/ScopedPostgres.js.map +1 -0
  277. package/dist/plugins/ScopedRedis.d.ts +88 -0
  278. package/dist/plugins/ScopedRedis.d.ts.map +1 -0
  279. package/dist/plugins/ScopedRedis.js +169 -0
  280. package/dist/plugins/ScopedRedis.js.map +1 -0
  281. package/dist/plugins/index.d.ts +289 -0
  282. package/dist/plugins/index.d.ts.map +1 -0
  283. package/dist/plugins/index.js +1942 -0
  284. package/dist/plugins/index.js.map +1 -0
  285. package/dist/plugins/types.d.ts +59 -0
  286. package/dist/plugins/types.d.ts.map +1 -0
  287. package/dist/plugins/types.js +2 -0
  288. package/dist/plugins/types.js.map +1 -0
  289. package/dist/registry/ServiceRegistry.d.ts +305 -0
  290. package/dist/registry/ServiceRegistry.d.ts.map +1 -0
  291. package/dist/registry/ServiceRegistry.js +735 -0
  292. package/dist/registry/ServiceRegistry.js.map +1 -0
  293. package/dist/scaling/ScaleAdvisor.d.ts +214 -0
  294. package/dist/scaling/ScaleAdvisor.d.ts.map +1 -0
  295. package/dist/scaling/ScaleAdvisor.js +526 -0
  296. package/dist/scaling/ScaleAdvisor.js.map +1 -0
  297. package/dist/services/Service.d.ts +164 -0
  298. package/dist/services/Service.d.ts.map +1 -0
  299. package/dist/services/Service.js +106 -0
  300. package/dist/services/Service.js.map +1 -0
  301. package/dist/services/worker-bootstrap.d.ts +15 -0
  302. package/dist/services/worker-bootstrap.d.ts.map +1 -0
  303. package/dist/services/worker-bootstrap.js +744 -0
  304. package/dist/services/worker-bootstrap.js.map +1 -0
  305. package/dist/templates/auth-service.d.ts +42 -0
  306. package/dist/templates/auth-service.d.ts.map +1 -0
  307. package/dist/templates/auth-service.js +54 -0
  308. package/dist/templates/auth-service.js.map +1 -0
  309. package/dist/templates/identity-service.d.ts +50 -0
  310. package/dist/templates/identity-service.d.ts.map +1 -0
  311. package/dist/templates/identity-service.js +62 -0
  312. package/dist/templates/identity-service.js.map +1 -0
  313. package/dist/types/contract.d.ts +120 -0
  314. package/dist/types/contract.d.ts.map +1 -0
  315. package/dist/types/contract.js +69 -0
  316. package/dist/types/contract.js.map +1 -0
  317. package/package.json +78 -20
  318. package/src/core/DirectMessageBus.js +0 -364
  319. package/src/core/EndpointResolver.js +0 -259
  320. package/src/core/ForgeContext.js +0 -2236
  321. package/src/core/ForgeHost.js +0 -122
  322. package/src/core/ForgePlatform.js +0 -145
  323. package/src/core/Ingress.js +0 -768
  324. package/src/core/Interceptors.js +0 -420
  325. package/src/core/MessageBus.js +0 -321
  326. package/src/core/Prometheus.js +0 -305
  327. package/src/core/RequestContext.js +0 -413
  328. package/src/core/RoutingStrategy.js +0 -330
  329. package/src/core/Supervisor.js +0 -1349
  330. package/src/core/ThreadAllocator.js +0 -196
  331. package/src/core/WorkerChannelManager.js +0 -879
  332. package/src/core/config.js +0 -637
  333. package/src/core/host-config.js +0 -311
  334. package/src/core/network-utils.js +0 -166
  335. package/src/core/platform-config.js +0 -308
  336. package/src/decorators/ServiceProxy.js +0 -904
  337. package/src/decorators/index.js +0 -571
  338. package/src/deploy/NginxGenerator.js +0 -865
  339. package/src/deploy/PlatformManifestGenerator.js +0 -96
  340. package/src/deploy/RouteManifestGenerator.js +0 -112
  341. package/src/deploy/index.js +0 -984
  342. package/src/frontend/FrontendDevLifecycle.js +0 -65
  343. package/src/frontend/FrontendPluginOrchestrator.js +0 -187
  344. package/src/frontend/SiteResolver.js +0 -63
  345. package/src/frontend/StaticMountRegistry.js +0 -90
  346. package/src/frontend/plugins/viteFrontend.js +0 -79
  347. package/src/frontend/types.js +0 -35
  348. package/src/index.js +0 -58
  349. package/src/plugins/PluginManager.js +0 -537
  350. package/src/plugins/ScopedPostgres.js +0 -192
  351. package/src/plugins/ScopedRedis.js +0 -142
  352. package/src/plugins/index.js +0 -1756
  353. package/src/registry/ServiceRegistry.js +0 -797
  354. package/src/scaling/ScaleAdvisor.js +0 -442
  355. package/src/services/Service.js +0 -195
  356. package/src/services/worker-bootstrap.js +0 -679
  357. package/src/templates/auth-service.js +0 -65
  358. package/src/templates/identity-service.js +0 -75
@@ -0,0 +1,2 @@
1
+ export function cmdHost(args: any): Promise<void>;
2
+ //# sourceMappingURL=host-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-commands.d.ts","sourceRoot":"","sources":["host-commands.js"],"names":[],"mappings":"AAsTA,kDAgCC"}
@@ -58,7 +58,7 @@ async function cmdHostInit() {
58
58
  // Write host config
59
59
  fs.writeFileSync(
60
60
  configPath,
61
- `import { defineHost, postgres, redis } from 'threadforge';
61
+ `import { defineHost, postgres, redis, ServiceType } from 'threadforge';
62
62
 
63
63
  export default defineHost({
64
64
  domain: 'myhost.dev',
@@ -67,7 +67,7 @@ export default defineHost({
67
67
  shared: {
68
68
  auth: {
69
69
  entry: './shared/auth.js',
70
- type: 'edge',
70
+ type: ServiceType.EDGE,
71
71
  port: 3100,
72
72
  prefix: '/auth',
73
73
  },
@@ -141,7 +141,7 @@ export default class AuthService extends Service {
141
141
 
142
142
  async function cmdHostStart() {
143
143
  const hostConfig = await loadHostConfig();
144
- const { ForgeHost } = await import("../src/core/ForgeHost.js");
144
+ const { ForgeHost } = await import("../dist/core/ForgeHost.js");
145
145
 
146
146
  const host = new ForgeHost(hostConfig);
147
147
  await host.start();
@@ -155,9 +155,7 @@ async function cmdHostAdd(args) {
155
155
  }
156
156
 
157
157
  const absPath = path.resolve(process.cwd(), projectPath);
158
- const configFile = ["forge.config.js", "forge.config.mjs"].find((name) =>
159
- fs.existsSync(path.join(absPath, name)),
160
- );
158
+ const configFile = ["forge.config.js", "forge.config.mjs"].find((name) => fs.existsSync(path.join(absPath, name)));
161
159
 
162
160
  if (!configFile) {
163
161
  console.error(` No forge.config.js found at ${absPath}`);
@@ -252,8 +250,8 @@ async function cmdHostRestart(args) {
252
250
 
253
251
  async function cmdHostGenerate() {
254
252
  const hostConfig = await loadHostConfig();
255
- const { resolveHostConfig } = await import("../src/core/host-config.js");
256
- const { generateHostNginxConfig } = await import("../src/deploy/NginxGenerator.js");
253
+ const { resolveHostConfig } = await import("../dist/core/host-config.js");
254
+ const { generateHostNginxConfig } = await import("../dist/deploy/NginxGenerator.js");
257
255
 
258
256
  const raw = hostConfig._isHostConfig ? hostConfig._raw : hostConfig;
259
257
  const resolved = await resolveHostConfig(raw);
@@ -277,6 +275,7 @@ async function cmdHostGenerate() {
277
275
  const nginxConfig = generateHostNginxConfig({
278
276
  hostMeta: resolved.hostMeta,
279
277
  services: resolved.services,
278
+ forgeProxy: raw.forgeProxy,
280
279
  });
281
280
  const deployDir = path.join(process.cwd(), "deploy");
282
281
  fs.mkdirSync(deployDir, { recursive: true });
@@ -0,0 +1,2 @@
1
+ export function cmdPlatform(args: any): Promise<void>;
2
+ //# sourceMappingURL=platform-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-commands.d.ts","sourceRoot":"","sources":["platform-commands.js"],"names":[],"mappings":"AA2oBA,sDA6BC"}
@@ -41,6 +41,25 @@ function computeImportPath(fromDir) {
41
41
  return "threadforge";
42
42
  }
43
43
 
44
+ function detectLocalThreadforgeDependency(cwd) {
45
+ const linkedPackagePath = path.join(cwd, "node_modules", "threadforge");
46
+ try {
47
+ const stat = fs.lstatSync(linkedPackagePath);
48
+ if (!stat.isSymbolicLink()) return null;
49
+
50
+ const realPath = fs.realpathSync(linkedPackagePath);
51
+ const relativePath = path.relative(cwd, realPath) || ".";
52
+ const normalized = (relativePath.startsWith(".") ? relativePath : `./${relativePath}`).split(path.sep).join("/");
53
+ return `file:${normalized}`;
54
+ } catch {
55
+ return null;
56
+ }
57
+ }
58
+
59
+ function resolvePlatformInitDependency(cwd) {
60
+ return detectLocalThreadforgeDependency(cwd) ?? "github:ChrisBland/threadforge";
61
+ }
62
+
44
63
  function ensurePlatformPackageJson(cwd) {
45
64
  const pkgPath = path.join(cwd, "package.json");
46
65
  const defaultName = path.basename(cwd);
@@ -49,6 +68,7 @@ function ensurePlatformPackageJson(cwd) {
49
68
  build: "forge build",
50
69
  generate: "forge platform generate",
51
70
  };
71
+ const defaultThreadforgeDependency = resolvePlatformInitDependency(cwd);
52
72
 
53
73
  let pkg = {};
54
74
  if (fs.existsSync(pkgPath)) {
@@ -78,7 +98,16 @@ function ensurePlatformPackageJson(cwd) {
78
98
  }
79
99
  }
80
100
 
101
+ if (!pkg.dependencies || typeof pkg.dependencies !== "object" || Array.isArray(pkg.dependencies)) {
102
+ pkg.dependencies = {};
103
+ }
104
+ if (!pkg.dependencies.threadforge) {
105
+ pkg.dependencies.threadforge = defaultThreadforgeDependency;
106
+ }
107
+
81
108
  fs.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
109
+
110
+ return pkg.dependencies.threadforge;
82
111
  }
83
112
 
84
113
  async function loadPlatformConfig() {
@@ -93,6 +122,50 @@ async function loadPlatformConfig() {
93
122
  return mod.default ?? mod;
94
123
  }
95
124
 
125
+ async function suggestNextPlatformEdgePort(cwd = process.cwd()) {
126
+ const DEFAULT_PORT = 4001;
127
+ let platformConfig;
128
+ try {
129
+ platformConfig = await loadPlatformConfig();
130
+ } catch {
131
+ platformConfig = null;
132
+ }
133
+
134
+ const usedPorts = new Set();
135
+ if (platformConfig) {
136
+ const raw = platformConfig._isPlatformConfig ? platformConfig._raw : platformConfig;
137
+ for (const [key, value] of Object.entries(raw ?? {})) {
138
+ if (key === "platform" || key === "plugins" || key === "frontendPlugins") continue;
139
+ if (!value || typeof value !== "object" || Array.isArray(value)) continue;
140
+ if (value.type !== "edge") continue;
141
+ if (Number.isInteger(value.port) && value.port > 0) {
142
+ usedPorts.add(value.port);
143
+ }
144
+ }
145
+ }
146
+
147
+ // If users scaffold multiple apps before editing forge.platform.js,
148
+ // infer likely app ports from existing app api stubs to avoid duplicate suggestions.
149
+ const appsDir = path.join(cwd, "apps");
150
+ let inferredAppCount = 0;
151
+ if (fs.existsSync(appsDir)) {
152
+ try {
153
+ const entries = fs.readdirSync(appsDir, { withFileTypes: true });
154
+ inferredAppCount = entries.filter((entry) => {
155
+ if (!entry.isDirectory()) return false;
156
+ const apiPath = path.join(appsDir, entry.name, "api.js");
157
+ return fs.existsSync(apiPath);
158
+ }).length;
159
+ } catch {
160
+ inferredAppCount = 0;
161
+ }
162
+ }
163
+
164
+ let candidate = DEFAULT_PORT + inferredAppCount;
165
+ while (usedPorts.has(candidate)) candidate += 1;
166
+ return candidate;
167
+ }
168
+
96
169
  function loadFrontendBuildManifest(cwd) {
97
170
  const manifestPath = path.join(cwd, ".threadforge", "frontend-manifest.json");
98
171
  if (!fs.existsSync(manifestPath)) return null;
@@ -119,7 +192,7 @@ async function cmdPlatformInit() {
119
192
  const importPath = computeImportPath(cwd);
120
193
  const serviceImportPath = computeImportPath(path.join(cwd, "shared"));
121
194
 
122
- ensurePlatformPackageJson(cwd);
195
+ const dependency = ensurePlatformPackageJson(cwd);
123
196
 
124
197
  // Create directories
125
198
  for (const dir of ["shared", "apps"]) {
@@ -129,7 +202,7 @@ async function cmdPlatformInit() {
129
202
  // Write platform config
130
203
  fs.writeFileSync(
131
204
  configPath,
132
- `import { definePlatform } from '${importPath}';
205
+ `import { definePlatform, ServiceType } from '${importPath}';
133
206
 
134
207
  export default definePlatform({
135
208
  platform: {
@@ -152,23 +225,23 @@ export default definePlatform({
152
225
  // Shared services (run once, serve all apps)
153
226
  identity: {
154
227
  entry: './shared/identity.js',
155
- type: 'edge',
228
+ type: ServiceType.EDGE,
156
229
  port: 3001,
157
230
  },
158
231
  auth: {
159
232
  entry: './shared/auth.js',
160
- type: 'edge',
233
+ type: ServiceType.EDGE,
161
234
  port: 3002,
162
235
  prefix: '/auth',
163
236
  },
164
237
 
165
238
  // Per-app services go here:
166
- // 'myapp-api': {
167
- // entry: './apps/myapp/api.js',
168
- // type: 'edge',
169
- // port: 4001,
170
- // connects: ['auth'],
171
- // },
239
+ // 'myapp-api': {
240
+ // entry: './apps/myapp/api.js',
241
+ // type: ServiceType.EDGE,
242
+ // port: 4001,
243
+ // connects: ['auth'],
244
+ // },
172
245
  });
173
246
  `,
174
247
  );
@@ -250,6 +323,7 @@ export default class AuthService extends Service {
250
323
  shared/identity.js - Identity service (stub)
251
324
  shared/auth.js - Auth service (stub)
252
325
  apps/ - App directory
326
+ package.json - Includes threadforge dependency (${dependency})
253
327
 
254
328
  Next steps:
255
329
  1. Edit forge.platform.js to configure your apps
@@ -262,7 +336,7 @@ export default class AuthService extends Service {
262
336
 
263
337
  async function cmdPlatformStart() {
264
338
  const platformConfig = await loadPlatformConfig();
265
- const { ForgePlatform } = await import("../src/core/ForgePlatform.js");
339
+ const { ForgePlatform } = await import("../dist/core/ForgePlatform.js");
266
340
 
267
341
  const platform = new ForgePlatform(platformConfig);
268
342
  await platform.start();
@@ -278,7 +352,9 @@ async function cmdPlatformAdd(args) {
278
352
  }
279
353
 
280
354
  if (!/^[a-z][a-z0-9_-]*$/.test(appName)) {
281
- console.error(` Invalid app name "${appName}": must start with a lowercase letter and contain only lowercase letters, digits, hyphens, and underscores.`);
355
+ console.error(
356
+ ` Invalid app name "${appName}": must start with a lowercase letter and contain only lowercase letters, digits, hyphens, and underscores.`,
357
+ );
282
358
  process.exit(1);
283
359
  }
284
360
 
@@ -291,6 +367,7 @@ async function cmdPlatformAdd(args) {
291
367
  }
292
368
 
293
369
  const serviceImportPath = computeImportPath(path.join(cwd, "apps", appName));
370
+ const suggestedPort = await suggestNextPlatformEdgePort();
294
371
 
295
372
  // Create app directory + migrations
296
373
  fs.mkdirSync(path.join(appDir, "migrations"), { recursive: true });
@@ -366,8 +443,8 @@ CREATE INDEX IF NOT EXISTS "idx_${safeName}_items_created"
366
443
  // As a top-level service:
367
444
  '${appName}-api': {
368
445
  entry: './apps/${appName}/api.js',
369
- type: 'edge',
370
- port: 4001,
446
+ type: ServiceType.EDGE,
447
+ port: ${suggestedPort},
371
448
  connects: ['auth'],
372
449
  },
373
450
  `);
@@ -401,7 +478,7 @@ async function cmdPlatformRemove(args) {
401
478
  // ── forge platform status ────────────────────────────────────────────────
402
479
 
403
480
  async function cmdPlatformStatus() {
404
- const metricsPort = parseInt(process.env.FORGE_METRICS_PORT || '9090', 10);
481
+ const metricsPort = parseInt(process.env.FORGE_METRICS_PORT || "9090", 10);
405
482
  try {
406
483
  const res = await fetch(`http://localhost:${metricsPort}/status`);
407
484
  const data = await res.json();
@@ -443,10 +520,10 @@ async function cmdPlatformStatus() {
443
520
 
444
521
  async function cmdPlatformGenerate() {
445
522
  const platformConfig = await loadPlatformConfig();
446
- const { resolveAppDomains, transformToHostConfig } = await import("../src/core/platform-config.js");
447
- const { resolveHostConfig } = await import("../src/core/host-config.js");
448
- const { generatePlatformNginxConfig } = await import("../src/deploy/NginxGenerator.js");
449
- const { generatePlatformManifest } = await import("../src/deploy/PlatformManifestGenerator.js");
523
+ const { resolveAppDomains, transformToHostConfig } = await import("../dist/core/platform-config.js");
524
+ const { resolveHostConfig } = await import("../dist/core/host-config.js");
525
+ const { generatePlatformNginxConfig } = await import("../dist/deploy/NginxGenerator.js");
526
+ const { generatePlatformManifest } = await import("../dist/deploy/PlatformManifestGenerator.js");
450
527
 
451
528
  const raw = platformConfig._isPlatformConfig ? platformConfig._raw : platformConfig;
452
529
  const hostConfig = transformToHostConfig(raw);
@@ -480,7 +557,7 @@ async function cmdPlatformGenerate() {
480
557
  const apps = {};
481
558
  for (const [appId, app] of Object.entries(raw.platform.apps)) {
482
559
  const site = resolved.sites?.[appId];
483
- const frontend = site?.frontend ? { ...site.frontend } : (app.frontend ? { ...app.frontend } : null);
560
+ const frontend = site?.frontend ? { ...site.frontend } : app.frontend ? { ...app.frontend } : null;
484
561
  if (frontend && builtOutDirBySite[appId]) {
485
562
  frontend.outDir = builtOutDirBySite[appId];
486
563
  }
@@ -489,25 +566,29 @@ async function cmdPlatformGenerate() {
489
566
  ? mountsFromManifest[appId]
490
567
  : (() => {
491
568
  if (frontend) {
492
- return [{
493
- siteId: appId,
494
- domains: site?.domains ?? resolveAppDomains(app),
495
- basePath: frontend.basePath ?? "/",
496
- dir: frontend.outDir,
497
- spaFallback: frontend.spaFallback ?? true,
498
- cachePolicy: "short",
499
- }];
569
+ return [
570
+ {
571
+ siteId: appId,
572
+ domains: site?.domains ?? resolveAppDomains(app),
573
+ basePath: frontend.basePath ?? "/",
574
+ dir: frontend.outDir,
575
+ spaFallback: frontend.spaFallback ?? true,
576
+ cachePolicy: "short",
577
+ },
578
+ ];
500
579
  }
501
580
  const legacyStatic = site?.staticDir ?? app.static ?? null;
502
581
  if (!legacyStatic) return [];
503
- return [{
504
- siteId: appId,
505
- domains: site?.domains ?? resolveAppDomains(app),
506
- basePath: "/static",
507
- dir: legacyStatic,
508
- spaFallback: false,
509
- cachePolicy: "short",
510
- }];
582
+ return [
583
+ {
584
+ siteId: appId,
585
+ domains: site?.domains ?? resolveAppDomains(app),
586
+ basePath: "/static",
587
+ dir: legacyStatic,
588
+ spaFallback: false,
589
+ cachePolicy: "short",
590
+ },
591
+ ];
511
592
  })();
512
593
 
513
594
  apps[appId] = {
@@ -527,6 +608,7 @@ async function cmdPlatformGenerate() {
527
608
  hostMeta: resolved.hostMeta,
528
609
  defaultSsl: raw.platform.ssl ?? null,
529
610
  maxBodySize: raw.platform.maxBodySize ?? 10,
611
+ forgeProxy: raw.platform.forgeProxy,
530
612
  });
531
613
  fs.writeFileSync(path.join(deployDir, "nginx.conf"), nginxConfig);
532
614
 
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Base command class for all ThreadForge CLI commands.
3
+ * Provides shared flags and config discovery.
4
+ */
5
+ import { Command } from "@oclif/core";
6
+ export declare abstract class ForgeCommand extends Command {
7
+ static baseFlags: {
8
+ config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ };
10
+ protected resolveConfig(commandName: string): Promise<string>;
11
+ }
12
+ //# sourceMappingURL=base-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-command.d.ts","sourceRoot":"","sources":["../../src/cli/base-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAG7C,8BAAsB,YAAa,SAAQ,OAAO;IAChD,MAAM,CAAC,SAAS;;MAKd;cAEc,aAAa,CAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;CAcnB"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Base command class for all ThreadForge CLI commands.
3
+ * Provides shared flags and config discovery.
4
+ */
5
+ import { Command, Flags } from "@oclif/core";
6
+ import { findConfig, printNoConfigError } from "./util/config-discovery.js";
7
+ export class ForgeCommand extends Command {
8
+ static baseFlags = {
9
+ config: Flags.string({
10
+ description: "Path to config file",
11
+ required: false,
12
+ }),
13
+ };
14
+ async resolveConfig(commandName) {
15
+ const parsed = await this.parse(this.constructor);
16
+ const configFlag = parsed.flags?.config;
17
+ const configPath = await findConfig(commandName, configFlag);
18
+ if (!configPath) {
19
+ printNoConfigError(commandName);
20
+ this.exit(1);
21
+ }
22
+ return configPath;
23
+ }
24
+ }
25
+ //# sourceMappingURL=base-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-command.js","sourceRoot":"","sources":["../../src/cli/base-command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,OAAgB,YAAa,SAAQ,OAAO;IAChD,MAAM,CAAC,SAAS,GAAG;QACjB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEQ,KAAK,CAAC,aAAa,CAC3B,WAAmB;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,WAAkC,CACxC,CAAC;QACF,MAAM,UAAU,GAAI,MAAM,CAAC,KAAa,EAAE,MAE7B,CAAC;QACd,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QACD,OAAO,UAAW,CAAC;IACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class Build extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,WAAW,SAA+C;IAE1E,OAAgB,QAAQ,WAAmB;IAE3C,OAAgB,KAAK;;MAEnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyI3B"}
@@ -0,0 +1,110 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { pathToFileURL } from "node:url";
4
+ import { Command, Flags } from "@oclif/core";
5
+ import { findConfig, printNoConfigError } from "../util/config-discovery.js";
6
+ export default class Build extends Command {
7
+ static description = "Build frontend sites via frontend plugins";
8
+ static examples = ["forge build"];
9
+ static flags = {
10
+ config: Flags.string({ description: "Path to config file" }),
11
+ };
12
+ async run() {
13
+ const { flags } = await this.parse(Build);
14
+ const configPath = await findConfig("build", flags.config);
15
+ if (!configPath) {
16
+ printNoConfigError("build");
17
+ this.exit(1);
18
+ }
19
+ const { loadConfig } = await import("../../core/config.js");
20
+ const { resolveSitesMap } = await import("../../frontend/SiteResolver.js");
21
+ let config;
22
+ try {
23
+ const configUrl = pathToFileURL(configPath).href;
24
+ config = await loadConfig(configUrl);
25
+ }
26
+ catch (err) {
27
+ console.error(`\n \u2717 Error loading ${path.basename(configPath)}:`);
28
+ console.error(` ${err.message}`);
29
+ this.exit(1);
30
+ }
31
+ const sitesMap = resolveSitesMap(config);
32
+ const frontendSites = Object.values(sitesMap).filter((site) => site?.frontend);
33
+ if (frontendSites.length === 0) {
34
+ console.log(" No frontend sites configured. Nothing to build.");
35
+ return;
36
+ }
37
+ const { FrontendPluginOrchestrator } = await import("../../frontend/FrontendPluginOrchestrator.js");
38
+ const orchestrator = new FrontendPluginOrchestrator();
39
+ const frontendPlugins = config.frontendPlugins ?? [];
40
+ try {
41
+ orchestrator.register(frontendPlugins);
42
+ await orchestrator.validateAll({ logger: console });
43
+ await orchestrator.registerAll({ logger: console });
44
+ }
45
+ catch (err) {
46
+ console.error(` Frontend plugin setup failed: ${err.message}`);
47
+ this.exit(1);
48
+ }
49
+ const sitesNeedingPlugin = frontendSites.filter((site) => site.frontend.plugin);
50
+ if (orchestrator.plugins.size === 0 && sitesNeedingPlugin.length > 0) {
51
+ console.error(" Frontend sites are configured, but no frontendPlugins are registered in config.");
52
+ this.exit(1);
53
+ }
54
+ const results = [];
55
+ const mountsBySite = {};
56
+ let failures = 0;
57
+ try {
58
+ console.log(`\n \u26A1 Building frontend sites (${frontendSites.length})\n`);
59
+ for (const site of frontendSites) {
60
+ const pluginName = site.frontend.plugin;
61
+ if (!pluginName) {
62
+ console.log(` \u2022 ${site.siteId} (static \u2014 no build needed)`);
63
+ results.push({
64
+ siteId: site.siteId,
65
+ plugin: null,
66
+ outDir: site.frontend.outDir,
67
+ });
68
+ continue;
69
+ }
70
+ try {
71
+ console.log(` \u2022 ${site.siteId} (${pluginName})`);
72
+ const result = await orchestrator.buildSite(site, {
73
+ logger: console,
74
+ });
75
+ const mounts = await orchestrator.staticMounts(site, {
76
+ logger: console,
77
+ });
78
+ mountsBySite[site.siteId] = mounts;
79
+ results.push({
80
+ siteId: site.siteId,
81
+ plugin: pluginName,
82
+ outDir: result?.outDir ?? site.frontend.outDir,
83
+ });
84
+ console.log(` \u2713 ${result?.outDir ?? site.frontend.outDir}`);
85
+ }
86
+ catch (err) {
87
+ failures++;
88
+ console.error(` \u2717 ${err.message}`);
89
+ }
90
+ }
91
+ }
92
+ finally {
93
+ await orchestrator.disposeAll({ logger: console });
94
+ }
95
+ const outputDir = path.join(process.cwd(), ".threadforge");
96
+ fs.mkdirSync(outputDir, { recursive: true });
97
+ const manifestPath = path.join(outputDir, "frontend-manifest.json");
98
+ fs.writeFileSync(manifestPath, JSON.stringify({
99
+ generatedAt: new Date().toISOString(),
100
+ sites: results,
101
+ mounts: mountsBySite,
102
+ }, null, 2));
103
+ console.log(`\n Wrote frontend manifest: ${manifestPath}`);
104
+ if (failures > 0) {
105
+ console.error(` Frontend build completed with ${failures} failure(s).`);
106
+ this.exit(1);
107
+ }
108
+ }
109
+ }
110
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class Deploy extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ "dry-run": import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ "check-secrets": import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACzC,OAAgB,WAAW,SACqB;IAEhD,OAAgB,QAAQ,WAItB;IAEF,OAAgB,KAAK;;;;MAUnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyJ3B"}