@forgecart/cli 1.1.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/dist/bin/forgecart.d.ts +2 -0
  2. package/dist/bin/forgecart.js +4 -0
  3. package/dist/bin/forgecart.js.map +1 -0
  4. package/dist/src/cli.d.ts +14 -1
  5. package/dist/src/cli.js +30 -15
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/commands/init.d.ts +39 -2
  8. package/dist/src/commands/init.js +173 -301
  9. package/dist/src/commands/init.js.map +1 -1
  10. package/dist/src/commands/placeholders.d.ts +19 -0
  11. package/dist/src/commands/placeholders.js +109 -0
  12. package/dist/src/commands/placeholders.js.map +1 -0
  13. package/dist/src/output.d.ts +11 -0
  14. package/dist/src/output.js +16 -0
  15. package/dist/src/output.js.map +1 -0
  16. package/package.json +21 -11
  17. package/templates/storefront/.env.example +12 -0
  18. package/templates/storefront/.forgecartignore +2 -0
  19. package/templates/storefront/Procfile +1 -0
  20. package/templates/storefront/README.md +87 -0
  21. package/templates/storefront/next.config.js +14 -0
  22. package/templates/storefront/package.json +25 -0
  23. package/templates/storefront/postcss.config.js +6 -0
  24. package/templates/storefront/src/app/cart/page.tsx +88 -0
  25. package/templates/storefront/src/app/globals.css +13 -0
  26. package/templates/storefront/src/app/layout.tsx +32 -0
  27. package/templates/storefront/src/app/page.tsx +49 -0
  28. package/templates/storefront/src/app/products/[slug]/not-found.tsx +20 -0
  29. package/templates/storefront/src/app/products/[slug]/page.tsx +61 -0
  30. package/templates/storefront/src/app/products/page.tsx +27 -0
  31. package/templates/storefront/src/components/Header.tsx +47 -0
  32. package/templates/storefront/src/components/ProductCard.tsx +40 -0
  33. package/templates/storefront/src/components/ProductPurchase.tsx +91 -0
  34. package/templates/storefront/src/lib/cart-actions.ts +148 -0
  35. package/templates/storefront/src/lib/cart-context.tsx +88 -0
  36. package/templates/storefront/src/lib/forgecart.ts +187 -0
  37. package/{dist/templates/storefront-additions → templates/storefront}/tailwind.config.js +1 -1
  38. package/templates/storefront/tsconfig.json +23 -0
  39. package/LICENSE +0 -21
  40. package/README.md +0 -179
  41. package/bin/forgecart.js +0 -3
  42. package/dist/package.json +0 -50
  43. package/dist/src/cli.d.ts.map +0 -1
  44. package/dist/src/commands/delete.d.ts +0 -3
  45. package/dist/src/commands/delete.d.ts.map +0 -1
  46. package/dist/src/commands/delete.js +0 -60
  47. package/dist/src/commands/delete.js.map +0 -1
  48. package/dist/src/commands/deploy.d.ts +0 -3
  49. package/dist/src/commands/deploy.d.ts.map +0 -1
  50. package/dist/src/commands/deploy.js +0 -243
  51. package/dist/src/commands/deploy.js.map +0 -1
  52. package/dist/src/commands/env.d.ts +0 -3
  53. package/dist/src/commands/env.d.ts.map +0 -1
  54. package/dist/src/commands/env.js +0 -158
  55. package/dist/src/commands/env.js.map +0 -1
  56. package/dist/src/commands/init.d.ts.map +0 -1
  57. package/dist/src/commands/list.d.ts +0 -3
  58. package/dist/src/commands/list.d.ts.map +0 -1
  59. package/dist/src/commands/list.js +0 -65
  60. package/dist/src/commands/list.js.map +0 -1
  61. package/dist/src/commands/login.d.ts +0 -3
  62. package/dist/src/commands/login.d.ts.map +0 -1
  63. package/dist/src/commands/login.js +0 -120
  64. package/dist/src/commands/login.js.map +0 -1
  65. package/dist/src/commands/logs.d.ts +0 -3
  66. package/dist/src/commands/logs.d.ts.map +0 -1
  67. package/dist/src/commands/logs.js +0 -88
  68. package/dist/src/commands/logs.js.map +0 -1
  69. package/dist/src/commands/scale.d.ts +0 -3
  70. package/dist/src/commands/scale.d.ts.map +0 -1
  71. package/dist/src/commands/scale.js +0 -49
  72. package/dist/src/commands/scale.js.map +0 -1
  73. package/dist/src/commands/status.d.ts +0 -3
  74. package/dist/src/commands/status.d.ts.map +0 -1
  75. package/dist/src/commands/status.js +0 -90
  76. package/dist/src/commands/status.js.map +0 -1
  77. package/dist/src/commands/whoami.d.ts +0 -3
  78. package/dist/src/commands/whoami.d.ts.map +0 -1
  79. package/dist/src/commands/whoami.js +0 -59
  80. package/dist/src/commands/whoami.js.map +0 -1
  81. package/dist/src/index.d.ts +0 -3
  82. package/dist/src/index.d.ts.map +0 -1
  83. package/dist/src/index.js +0 -5
  84. package/dist/src/index.js.map +0 -1
  85. package/dist/src/lib/api-client.d.ts +0 -34
  86. package/dist/src/lib/api-client.d.ts.map +0 -1
  87. package/dist/src/lib/api-client.js +0 -141
  88. package/dist/src/lib/api-client.js.map +0 -1
  89. package/dist/src/lib/archive.d.ts +0 -9
  90. package/dist/src/lib/archive.d.ts.map +0 -1
  91. package/dist/src/lib/archive.js +0 -118
  92. package/dist/src/lib/archive.js.map +0 -1
  93. package/dist/src/lib/config-updater.d.ts +0 -10
  94. package/dist/src/lib/config-updater.d.ts.map +0 -1
  95. package/dist/src/lib/config-updater.js +0 -34
  96. package/dist/src/lib/config-updater.js.map +0 -1
  97. package/dist/src/lib/config.d.ts +0 -53
  98. package/dist/src/lib/config.d.ts.map +0 -1
  99. package/dist/src/lib/config.js +0 -162
  100. package/dist/src/lib/config.js.map +0 -1
  101. package/dist/src/lib/env-sync.d.ts +0 -44
  102. package/dist/src/lib/env-sync.d.ts.map +0 -1
  103. package/dist/src/lib/env-sync.js +0 -207
  104. package/dist/src/lib/env-sync.js.map +0 -1
  105. package/dist/src/lib/logger.d.ts +0 -15
  106. package/dist/src/lib/logger.d.ts.map +0 -1
  107. package/dist/src/lib/logger.js +0 -54
  108. package/dist/src/lib/logger.js.map +0 -1
  109. package/dist/src/lib/nx-generator.d.ts +0 -22
  110. package/dist/src/lib/nx-generator.d.ts.map +0 -1
  111. package/dist/src/lib/nx-generator.js +0 -345
  112. package/dist/src/lib/nx-generator.js.map +0 -1
  113. package/dist/src/lib/standalone.d.ts +0 -28
  114. package/dist/src/lib/standalone.d.ts.map +0 -1
  115. package/dist/src/lib/standalone.js +0 -107
  116. package/dist/src/lib/standalone.js.map +0 -1
  117. package/dist/src/types/index.d.ts +0 -80
  118. package/dist/src/types/index.d.ts.map +0 -1
  119. package/dist/src/types/index.js +0 -14
  120. package/dist/src/types/index.js.map +0 -1
  121. package/dist/src/utils/spinner.d.ts +0 -16
  122. package/dist/src/utils/spinner.d.ts.map +0 -1
  123. package/dist/src/utils/spinner.js +0 -88
  124. package/dist/src/utils/spinner.js.map +0 -1
  125. package/dist/src/utils/validation.d.ts +0 -12
  126. package/dist/src/utils/validation.d.ts.map +0 -1
  127. package/dist/src/utils/validation.js +0 -82
  128. package/dist/src/utils/validation.js.map +0 -1
  129. package/dist/templates/application-additions/.forgecartignore +0 -37
  130. package/dist/templates/application-additions/Procfile +0 -1
  131. package/dist/templates/application-additions/src/app/app.module.ts +0 -16
  132. package/dist/templates/application-additions/src/services/forgecart.service.ts +0 -62
  133. package/dist/templates/application-additions/src/services/index.ts +0 -2
  134. package/dist/templates/application-additions/src/services/product-event-listener.service.ts +0 -150
  135. package/dist/templates/application-e2e-additions/src/support/global-setup.ts +0 -16
  136. package/dist/templates/application-e2e-additions/src/support/test-setup.ts +0 -9
  137. package/dist/templates/storefront-additions/.forgecartignore +0 -64
  138. package/dist/templates/storefront-additions/Procfile +0 -1
  139. package/dist/templates/storefront-additions/package.json +0 -11
  140. package/dist/templates/storefront-additions/postcss.config.js +0 -5
  141. package/dist/templates/storefront-additions/src/app/cart/page.tsx +0 -77
  142. package/dist/templates/storefront-additions/src/app/global.css +0 -1
  143. package/dist/templates/storefront-additions/src/app/layout.tsx +0 -25
  144. package/dist/templates/storefront-additions/src/app/page.tsx +0 -43
  145. package/dist/templates/storefront-additions/src/components/AddToCartButton.tsx +0 -29
  146. package/dist/templates/storefront-additions/src/components/CartItem.tsx +0 -82
  147. package/dist/templates/storefront-additions/src/components/Header.tsx +0 -42
  148. package/dist/templates/storefront-additions/src/components/ProductCard.tsx +0 -57
  149. package/dist/templates/storefront-additions/src/components/QuantitySelector.tsx +0 -35
  150. package/dist/templates/storefront-additions/src/context/CartContext.tsx +0 -158
  151. package/dist/templates/storefront-additions/src/lib/forgecart.ts +0 -22
  152. package/dist/templates/storefront-e2e-additions/playwright.config.ts +0 -26
  153. package/dist/templates/storefront-e2e-additions/src/example.spec.ts +0 -11
  154. package/dist/templates/workspace/.nxignore +0 -2
  155. package/templates/application-additions/.forgecartignore +0 -37
  156. package/templates/application-additions/Procfile +0 -1
  157. package/templates/application-additions/src/app/app.module.ts +0 -16
  158. package/templates/application-additions/src/services/forgecart.service.ts +0 -62
  159. package/templates/application-additions/src/services/index.ts +0 -2
  160. package/templates/application-additions/src/services/product-event-listener.service.ts +0 -150
  161. package/templates/application-e2e-additions/src/support/global-setup.ts +0 -16
  162. package/templates/application-e2e-additions/src/support/test-setup.ts +0 -9
  163. package/templates/storefront-additions/.forgecartignore +0 -64
  164. package/templates/storefront-additions/Procfile +0 -1
  165. package/templates/storefront-additions/package.json +0 -11
  166. package/templates/storefront-additions/postcss.config.js +0 -5
  167. package/templates/storefront-additions/src/app/cart/page.tsx +0 -77
  168. package/templates/storefront-additions/src/app/global.css +0 -1
  169. package/templates/storefront-additions/src/app/layout.tsx +0 -25
  170. package/templates/storefront-additions/src/app/page.tsx +0 -43
  171. package/templates/storefront-additions/src/components/AddToCartButton.tsx +0 -29
  172. package/templates/storefront-additions/src/components/CartItem.tsx +0 -82
  173. package/templates/storefront-additions/src/components/Header.tsx +0 -42
  174. package/templates/storefront-additions/src/components/ProductCard.tsx +0 -57
  175. package/templates/storefront-additions/src/components/QuantitySelector.tsx +0 -35
  176. package/templates/storefront-additions/src/context/CartContext.tsx +0 -158
  177. package/templates/storefront-additions/src/lib/forgecart.ts +0 -22
  178. package/templates/storefront-additions/tailwind.config.js +0 -8
  179. package/templates/storefront-e2e-additions/playwright.config.ts +0 -26
  180. package/templates/storefront-e2e-additions/src/example.spec.ts +0 -11
  181. package/templates/workspace/.nxignore +0 -2
package/README.md DELETED
@@ -1,179 +0,0 @@
1
- # @forgecart/cli
2
-
3
- CLI tool for deploying applications to ForgeCart's PaaS platform.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install -g @forgecart/cli
9
- ```
10
-
11
- ## Quick Start
12
-
13
- 1. **Create a new project:**
14
- ```bash
15
- forgecart init my-store
16
- ```
17
-
18
- 2. **Deploy:**
19
- ```bash
20
- cd my-store
21
- forgecart deploy
22
- ```
23
-
24
- ## Commands
25
-
26
- ### `forgecart init [name]`
27
-
28
- Create a new ForgeCart project.
29
-
30
- Options:
31
- - `-t, --token <token>` - ForgeCart channel token
32
- - `-a, --application` - Include NestJS backend application
33
- - `--api-url <url>` - ForgeCart API URL (default: https://api.forgecart.com)
34
-
35
- ### `forgecart init:application`
36
-
37
- Add a NestJS backend application to an existing project.
38
-
39
- ### `forgecart deploy`
40
-
41
- Deploy the current application.
42
-
43
- Options:
44
- - `--skip-build` - Skip the build step
45
-
46
- ### `forgecart list`
47
-
48
- List all deployments for the current channel.
49
-
50
- ### `forgecart status [type]`
51
-
52
- Show detailed deployment status.
53
-
54
- Arguments:
55
- - `type` - Deployment type: `storefront` or `application`
56
-
57
- ### `forgecart logs [type]`
58
-
59
- View deployment logs.
60
-
61
- Arguments:
62
- - `type` - Deployment type (default: `storefront`)
63
-
64
- Options:
65
- - `-f, --follow` - Follow log output
66
- - `-n, --lines <number>` - Number of lines to show (default: 100)
67
-
68
- ### `forgecart delete <type>`
69
-
70
- Delete a deployment.
71
-
72
- Arguments:
73
- - `type` - Deployment type: `storefront` or `application`
74
-
75
- Options:
76
- - `-f, --force` - Skip confirmation prompt
77
-
78
- ### `forgecart scale <type> <instances>`
79
-
80
- Scale a deployment.
81
-
82
- Arguments:
83
- - `type` - Deployment type: `storefront` or `application`
84
- - `instances` - Number of instances (0-10)
85
-
86
- ### `forgecart env`
87
-
88
- Manage environment variables.
89
-
90
- Subcommands:
91
- - `forgecart env get <type>` - Get environment variables
92
- - `forgecart env set <type> <key> <value>` - Set an environment variable
93
- - `forgecart env unset <type> <key>` - Remove an environment variable
94
-
95
- ### `forgecart whoami`
96
-
97
- Show current channel information.
98
-
99
- ## Project Structure
100
-
101
- After running `forgecart init`, your project will have the following structure:
102
-
103
- ```
104
- my-store/
105
- ├── .forgecart/
106
- │ └── config.json # ForgeCart configuration
107
- ├── nx.json # NX workspace configuration
108
- ├── package.json # Root package.json
109
- ├── tsconfig.base.json # TypeScript configuration
110
- ├── apps/
111
- │ ├── storefront/ # Next.js frontend (required)
112
- │ │ ├── src/
113
- │ │ │ ├── lib/
114
- │ │ │ │ └── forgecart.ts # SDK client
115
- │ │ │ └── app/
116
- │ │ │ └── products/
117
- │ │ │ └── page.tsx # Example products page
118
- │ │ ├── Procfile # Deployment configuration
119
- │ │ └── .forgecartignore # Files to exclude from deploy
120
- │ └── application/ # NestJS backend (optional)
121
- │ ├── src/
122
- │ │ └── services/
123
- │ │ └── price-fetcher.service.ts # SDK example
124
- │ ├── Procfile # Deployment configuration
125
- │ └── .forgecartignore # Files to exclude from deploy
126
- └── libs/ # Shared libraries (optional)
127
- ```
128
-
129
- ## Configuration
130
-
131
- The CLI stores configuration in `.forgecart/config.json`:
132
-
133
- ```json
134
- {
135
- "version": "1.0",
136
- "channelToken": "your-channel-token",
137
- "apiUrl": "https://api.forgecart.com",
138
- "hasApplication": false,
139
- "storefrontPath": "apps/storefront",
140
- "applicationPath": "apps/application"
141
- }
142
- ```
143
-
144
- ## Environment Variables
145
-
146
- Set environment variables for your deployments:
147
-
148
- ```bash
149
- # Set SDK credentials
150
- forgecart env set storefront FORGECART_CHANNEL_TOKEN your-token
151
- forgecart env set storefront FORGECART_API_URL https://api.forgecart.com
152
-
153
- # View all environment variables
154
- forgecart env get storefront
155
-
156
- # Remove an environment variable
157
- forgecart env unset storefront MY_VAR
158
- ```
159
-
160
- ## Deployment Workflow
161
-
162
- 1. Make changes to your code
163
- 2. Run `forgecart deploy` from your project root or app directory
164
- 3. The CLI will:
165
- - Build your application using NX
166
- - Create a deployment archive
167
- - Upload and deploy to ForgeCart
168
- - Wait for the deployment to be ready
169
- 4. View your live application at the provided URL
170
-
171
- ## Requirements
172
-
173
- - Node.js >= 18.0.0
174
- - npm or yarn
175
- - A ForgeCart account with a valid channel token
176
-
177
- ## License
178
-
179
- MIT
package/bin/forgecart.js DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import('../dist/src/index.js')
package/dist/package.json DELETED
@@ -1,50 +0,0 @@
1
- {
2
- "name": "@forgecart/cli",
3
- "version": "1.1.0",
4
- "type": "module",
5
- "description": "CLI tool for deploying applications to ForgeCart",
6
- "main": "dist/index.js",
7
- "bin": {
8
- "forgecart": "./bin/forgecart.js"
9
- },
10
- "dependencies": {
11
- "@forgecart/sdk": "workspace:*",
12
- "@nestjs/common": "11.1.6",
13
- "archiver": "7.0.1",
14
- "axios": "1.12.2",
15
- "chalk": "5.6.2",
16
- "change-case-all": "2.1.0",
17
- "cli-table3": "0.6.5",
18
- "commander": "12.1.0",
19
- "form-data": "4.0.4",
20
- "graphql": "16.11.0",
21
- "graphql-request": "6.1.0",
22
- "inquirer": "9.3.8",
23
- "open": "10.2.0",
24
- "ora": "8.2.0",
25
- "rxjs": "7.8.2",
26
- "shiki": "3.20.0",
27
- "ws": "8.18.3",
28
- "@jest/globals": "30.1.2",
29
- "tslib": "2.4.1"
30
- },
31
- "files": [
32
- "dist",
33
- "bin",
34
- "templates"
35
- ],
36
- "engines": {
37
- "node": ">=18.0.0"
38
- },
39
- "keywords": [
40
- "forgecart",
41
- "cli",
42
- "deploy",
43
- "paas",
44
- "nodejs"
45
- ],
46
- "author": "ForgeCart",
47
- "license": "MIT",
48
- "types": "./src/index.d.ts",
49
- "module": "./src/index.js"
50
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBnC,wBAAgB,aAAa,IAAI,OAAO,CAsBvC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createDeleteCommand(): Command;
3
- //# sourceMappingURL=delete.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
@@ -1,60 +0,0 @@
1
- import { Command } from 'commander';
2
- import inquirer from 'inquirer';
3
- import logger from '../lib/logger.js';
4
- import { requireConfig, requireAuth } from '../lib/config.js';
5
- import { ForgecartApiClient } from '../lib/api-client.js';
6
- import { DeploymentType } from '../types/index.js';
7
- import { withSpinner } from '../utils/spinner.js';
8
- export function createDeleteCommand() {
9
- const cmd = new Command('delete')
10
- .description('Delete a deployment')
11
- .argument('<type>', 'Deployment type (storefront or application)')
12
- .option('-f, --force', 'Skip confirmation prompt')
13
- .action(async (type, options) => {
14
- await deleteDeployment(type, options);
15
- });
16
- return cmd;
17
- }
18
- async function deleteDeployment(type, options) {
19
- // Validate type
20
- if (type !== DeploymentType.STOREFRONT &&
21
- type !== DeploymentType.APPLICATION) {
22
- logger.error('Invalid deployment type. Use "storefront" or "application".');
23
- process.exit(1);
24
- }
25
- // Check authentication first
26
- const authToken = requireAuth();
27
- const config = requireConfig();
28
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
29
- // Check if deployment exists
30
- const deployment = await apiClient.getDeployment(type);
31
- if (!deployment) {
32
- logger.error(`No ${type} deployment found`);
33
- process.exit(1);
34
- }
35
- // Confirm deletion
36
- if (!options.force) {
37
- const { confirm } = await inquirer.prompt([
38
- {
39
- type: 'confirm',
40
- name: 'confirm',
41
- message: `Are you sure you want to delete the ${type} deployment? This action cannot be undone.`,
42
- default: false,
43
- },
44
- ]);
45
- if (!confirm) {
46
- logger.info('Deletion cancelled');
47
- apiClient.dispose();
48
- return;
49
- }
50
- }
51
- // Delete deployment
52
- await withSpinner(`Deleting ${type} deployment...`, `${type} deployment deleted`, `Failed to delete ${type} deployment`, async () => {
53
- const success = await apiClient.deleteDeployment(type);
54
- if (!success) {
55
- throw new Error('Deletion failed');
56
- }
57
- });
58
- apiClient.dispose();
59
- }
60
- //# sourceMappingURL=delete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,QAAQ,EAAE,6CAA6C,CAAC;SACjE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA4B,EAAE,EAAE;QAC3D,MAAM,gBAAgB,CAAC,IAAsB,EAAE,OAAO,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,IAAoB,EACpB,OAA4B;IAE5B,gBAAgB;IAChB,IACE,IAAI,KAAK,cAAc,CAAC,UAAU;QAClC,IAAI,KAAK,cAAc,CAAC,WAAW,EACnC,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,kBAAkB,CACtC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,YAAY,EACnB,SAAS,CACV,CAAA;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAA;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,uCAAuC,IAAI,4CAA4C;gBAChG,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACjC,SAAS,CAAC,OAAO,EAAE,CAAA;YACnB,OAAM;QACR,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,CACf,YAAY,IAAI,gBAAgB,EAChC,GAAG,IAAI,qBAAqB,EAC5B,oBAAoB,IAAI,aAAa,EACrC,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CACF,CAAA;IAED,SAAS,CAAC,OAAO,EAAE,CAAA;AACrB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createDeployCommand(): Command;
3
- //# sourceMappingURL=deploy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C"}
@@ -1,243 +0,0 @@
1
- import * as path from 'path';
2
- import * as fs from 'fs';
3
- import { Command } from 'commander';
4
- import logger from '../lib/logger.js';
5
- import { requireConfig, getProjectRoot, requireAuth } from '../lib/config.js';
6
- import { ForgecartApiClient } from '../lib/api-client.js';
7
- import { createArchive, getIgnoreFileForType } from '../lib/archive.js';
8
- import { runNxBuild, runNxBuildMany } from '../lib/nx-generator.js';
9
- import { prepareStandaloneDeployment, prepareApplicationDeployment, } from '../lib/standalone.js';
10
- import { getCurrentAppDir } from '../utils/validation.js';
11
- import { withSpinner, withSpinnerAndLogs } from '../utils/spinner.js';
12
- import { DeploymentType } from '../types/index.js';
13
- import { parseEnvFile } from '../lib/env-sync.js';
14
- export function createDeployCommand() {
15
- const cmd = new Command('deploy')
16
- .description('Deploy the current application')
17
- .option('--skip-build', 'Skip the build step')
18
- .action(async (options) => {
19
- await deploy(options);
20
- });
21
- return cmd;
22
- }
23
- /**
24
- * Gets all deployable applications based on config.
25
- */
26
- function getDeployableApps(projectRoot, config) {
27
- const apps = [];
28
- // Storefront is always deployable if path is configured
29
- const storefrontPath = path.join(projectRoot, config.storefrontPath || 'apps/storefront');
30
- apps.push({ type: DeploymentType.STOREFRONT, appDir: storefrontPath });
31
- // Application is deployable if hasApplication is true in config
32
- if (config.hasApplication) {
33
- const applicationPath = path.join(projectRoot, config.applicationPath || 'apps/application');
34
- apps.push({ type: DeploymentType.APPLICATION, appDir: applicationPath });
35
- }
36
- return apps;
37
- }
38
- /**
39
- * Deploys a single application.
40
- */
41
- async function deploySingleApp(apiClient, deployType, appDir, projectRoot, skipBuild) {
42
- const prefix = `[${deployType}]`;
43
- // Read env vars from .env file (used for both create and deploy)
44
- const envFilePath = path.join(appDir, '.env');
45
- let envVars;
46
- let envVarsMap;
47
- if (fs.existsSync(envFilePath)) {
48
- const parsed = parseEnvFile(envFilePath);
49
- if (parsed.length > 0) {
50
- envVars = parsed;
51
- envVarsMap = Object.fromEntries(parsed.map((v) => [v.key, v.value]));
52
- logger.info(`${prefix} Found ${parsed.length} env vars in .env`);
53
- }
54
- }
55
- // Check/create deployment (with env vars for first deploy)
56
- let deployment = await withSpinner(`${prefix} Checking deployment status...`, `${prefix} Deployment ready`, `${prefix} Failed to check deployment`, async () => {
57
- let dep = await apiClient.getDeployment(deployType);
58
- if (!dep) {
59
- logger.info(`${prefix} Creating new deployment...`);
60
- dep = await apiClient.createDeployment(deployType, envVars);
61
- }
62
- return dep;
63
- });
64
- // Clean up old .deploy directory if exists (legacy cleanup)
65
- const oldDeployDir = path.join(appDir, '.deploy');
66
- if (fs.existsSync(oldDeployDir)) {
67
- fs.rmSync(oldDeployDir, { recursive: true });
68
- }
69
- // Build the app
70
- if (!skipBuild) {
71
- await withSpinner(`${prefix} Building...`, `${prefix} Build completed`, `${prefix} Build failed`, async () => {
72
- const success = await runNxBuild(deployType, projectRoot);
73
- if (!success) {
74
- throw new Error('Build failed');
75
- }
76
- });
77
- }
78
- else {
79
- logger.info(`${prefix} Skipping build step`);
80
- }
81
- // Prepare deployment based on type
82
- let archiveSourceDir = appDir;
83
- let includeEnvFile = false;
84
- if (deployType === DeploymentType.STOREFRONT) {
85
- await withSpinner(`${prefix} Preparing standalone deployment...`, `${prefix} Standalone prepared`, `${prefix} Failed to prepare standalone`, async () => {
86
- await prepareStandaloneDeployment(appDir);
87
- });
88
- }
89
- else if (deployType === DeploymentType.APPLICATION) {
90
- archiveSourceDir = await withSpinner(`${prefix} Preparing application deployment...`, `${prefix} Application prepared`, `${prefix} Failed to prepare application`, async () => {
91
- return prepareApplicationDeployment(appDir, projectRoot);
92
- });
93
- // Do not include .env file in archive - use CLI env sync instead
94
- includeEnvFile = false;
95
- }
96
- // Create archive
97
- const zipBuffer = await withSpinner(`${prefix} Creating deployment archive...`, `${prefix} Archive created`, `${prefix} Failed to create archive`, async () => {
98
- const ignoreFile = getIgnoreFileForType();
99
- return createArchive({
100
- sourceDir: archiveSourceDir,
101
- ignoreFile,
102
- includeEnvFile,
103
- });
104
- });
105
- logger.info(`${prefix} Archive size: ${(zipBuffer.length / 1024 / 1024).toFixed(2)} MB`);
106
- // Upload and deploy (with env vars for subsequent deploys)
107
- deployment = await withSpinner(`${prefix} Uploading and deploying...`, `${prefix} Deployment successful`, `${prefix} Deployment failed`, async () => {
108
- return apiClient.uploadAndDeploy(deployType, zipBuffer, envVarsMap);
109
- });
110
- // Subscribe to deployment logs (backend auto-detects staging vs runtime)
111
- const logSubscription = apiClient.subscribeToDeploymentLogs(deployType);
112
- // Wait for deployment to be ready with log streaming
113
- await withSpinnerAndLogs(`${prefix} Waiting for deployment to be ready...`, `${prefix} Deployment is live`, `${prefix} Deployment check failed`, async () => {
114
- let attempts = 0;
115
- const maxAttempts = 60; // 5 minutes max
116
- while (attempts < maxAttempts) {
117
- const status = await apiClient.refreshDeploymentStatus(deployType);
118
- if (status?.status === 'RUNNING') {
119
- deployment = status;
120
- return;
121
- }
122
- if (status?.status === 'ERROR') {
123
- throw new Error(status.errorMessage || 'Deployment failed');
124
- }
125
- await new Promise((resolve) => setTimeout(resolve, 5000));
126
- attempts++;
127
- }
128
- throw new Error('Deployment timed out');
129
- }, logSubscription);
130
- return deployment;
131
- }
132
- async function deploy(options) {
133
- logger.title('ForgeCart Deployment');
134
- // Check authentication first
135
- const authToken = requireAuth();
136
- // Get config and validate
137
- const config = requireConfig();
138
- const projectRoot = getProjectRoot();
139
- // Initialize API client
140
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
141
- // Validate token
142
- await withSpinner('Validating channel token...', 'Channel token validated', 'Invalid channel token', async () => {
143
- const isValid = await apiClient.validateChannelToken();
144
- if (!isValid) {
145
- throw new Error('Invalid channel token');
146
- }
147
- });
148
- // Check if we're in a specific app directory
149
- const currentApp = getCurrentAppDir(projectRoot);
150
- if (currentApp) {
151
- // Deploy single app from its directory
152
- const appDir = path.join(projectRoot, `apps/${currentApp.type}`);
153
- logger.info(`Detected ${currentApp.type} application`);
154
- const deployment = await deploySingleApp(apiClient, currentApp.type, appDir, projectRoot, options.skipBuild ?? false);
155
- // Success message
156
- logger.newline();
157
- logger.box(`Deployment successful!
158
-
159
- Type: ${deployment.type}
160
- Status: ${deployment.status}
161
- URL: ${deployment.url}
162
-
163
- View logs with:
164
- forgecart logs ${deployment.type}`);
165
- apiClient.dispose();
166
- return;
167
- }
168
- // In project root - find all deployable apps
169
- const apps = getDeployableApps(projectRoot, config);
170
- if (apps.length === 0) {
171
- logger.error('No deployable applications found. Please run from apps/storefront or apps/application directory.');
172
- process.exit(1);
173
- }
174
- if (apps.length === 1) {
175
- // Single app found - deploy it
176
- const app = apps[0];
177
- logger.info(`Deploying ${app.type}`);
178
- const deployment = await deploySingleApp(apiClient, app.type, app.appDir, projectRoot, options.skipBuild ?? false);
179
- // Success message
180
- logger.newline();
181
- logger.box(`Deployment successful!
182
-
183
- Type: ${deployment.type}
184
- Status: ${deployment.status}
185
- URL: ${deployment.url}
186
-
187
- View logs with:
188
- forgecart logs ${deployment.type}`);
189
- }
190
- else {
191
- // Multiple apps found
192
- logger.info(`Found ${apps.length} applications to deploy: ${apps.map((a) => a.type).join(', ')}`);
193
- logger.newline();
194
- // Clean up ALL staging directories before any builds start
195
- for (const app of apps) {
196
- const oldDeployDir = path.join(app.appDir, '.deploy');
197
- if (fs.existsSync(oldDeployDir)) {
198
- fs.rmSync(oldDeployDir, { recursive: true });
199
- }
200
- }
201
- // Only delete the staging subdirectory, not the entire .forgecart (which contains config.json)
202
- const stagingDir = path.join(projectRoot, '.forgecart', 'application-deploy');
203
- if (fs.existsSync(stagingDir)) {
204
- fs.rmSync(stagingDir, { recursive: true });
205
- }
206
- // Build all apps at once using nx run-many
207
- if (!options.skipBuild) {
208
- await withSpinner('Building all applications...', 'All builds completed', 'Build failed', async () => {
209
- const success = await runNxBuildMany(apps.map((a) => a.type), projectRoot);
210
- if (!success) {
211
- throw new Error('Build failed');
212
- }
213
- });
214
- }
215
- // Deploy apps SEQUENTIALLY (application first, then storefront)
216
- const orderedApps = [...apps].sort((a) => a.type === DeploymentType.APPLICATION ? -1 : 1);
217
- const results = [];
218
- for (const app of orderedApps) {
219
- logger.info(`Deploying ${app.type}...`);
220
- const deployment = await deploySingleApp(apiClient, app.type, app.appDir, projectRoot, true // skipBuild - already built above
221
- );
222
- results.push(deployment);
223
- logger.newline();
224
- }
225
- // Success message for all deployments
226
- logger.newline();
227
- const summaryLines = results
228
- .map((dep) => `${dep.type}:
229
- Status: ${dep.status}
230
- URL: ${dep.url}`)
231
- .join('\n\n');
232
- logger.box(`All deployments successful!
233
-
234
- ${summaryLines}
235
-
236
- View logs with:
237
- forgecart logs storefront
238
- forgecart logs application`);
239
- }
240
- // Dispose API client to close any open connections
241
- apiClient.dispose();
242
- }
243
- //# sourceMappingURL=deploy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createEnvCommand(): Command;
3
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,wBAAgB,gBAAgB,IAAI,OAAO,CAkC1C"}