@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
@@ -1,158 +0,0 @@
1
- import { Command } from 'commander';
2
- import Table from 'cli-table3';
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
- import { syncEnvToDeployment, syncAllEnvToDeployments, getEnvFilePath, } from '../lib/env-sync.js';
9
- export function createEnvCommand() {
10
- const cmd = new Command('env').description('Manage environment variables');
11
- cmd
12
- .command('get <type>')
13
- .description('Get environment variables for a deployment')
14
- .action(async (type) => {
15
- await getEnv(type);
16
- });
17
- cmd
18
- .command('set <type> <key> <value>')
19
- .description('Set an environment variable')
20
- .action(async (type, key, value) => {
21
- await setEnv(type, key, value);
22
- });
23
- cmd
24
- .command('unset <type> <key>')
25
- .description('Remove an environment variable')
26
- .action(async (type, key) => {
27
- await unsetEnv(type, key);
28
- });
29
- cmd
30
- .command('push [type]')
31
- .description('Push environment variables from .env file to deployment. If no type specified, pushes for all apps.')
32
- .action(async (type) => {
33
- await pushEnv(type);
34
- });
35
- return cmd;
36
- }
37
- async function getEnv(type) {
38
- // Validate type
39
- if (type !== DeploymentType.STOREFRONT &&
40
- type !== DeploymentType.APPLICATION) {
41
- logger.error('Invalid deployment type. Use "storefront" or "application".');
42
- process.exit(1);
43
- }
44
- const config = requireConfig();
45
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, requireAuth());
46
- const env = await withSpinner(`Fetching environment variables for ${type}...`, 'Environment variables retrieved', 'Failed to fetch environment variables', async () => {
47
- return apiClient.getDeploymentEnv(type);
48
- });
49
- if (env.length === 0) {
50
- logger.info(`No environment variables set for ${type}`);
51
- apiClient.dispose();
52
- return;
53
- }
54
- const table = new Table({
55
- head: ['Key', 'Value'],
56
- style: {
57
- head: ['cyan'],
58
- },
59
- });
60
- for (const item of env) {
61
- // Mask sensitive values
62
- const displayValue = item.key.toLowerCase().includes('secret') ||
63
- item.key.toLowerCase().includes('password') ||
64
- item.key.toLowerCase().includes('key')
65
- ? '********'
66
- : item.value;
67
- table.push([item.key, displayValue]);
68
- }
69
- console.log(table.toString());
70
- apiClient.dispose();
71
- }
72
- async function setEnv(type, key, value) {
73
- // Validate type
74
- if (type !== DeploymentType.STOREFRONT &&
75
- type !== DeploymentType.APPLICATION) {
76
- logger.error('Invalid deployment type. Use "storefront" or "application".');
77
- process.exit(1);
78
- }
79
- // Validate key
80
- if (!key || !/^[A-Z_][A-Z0-9_]*$/i.test(key)) {
81
- logger.error('Invalid environment variable name. Use only letters, numbers, and underscores.');
82
- process.exit(1);
83
- }
84
- const config = requireConfig();
85
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, requireAuth());
86
- await withSpinner(`Setting ${key} for ${type}...`, `${key} set successfully`, `Failed to set ${key}`, async () => {
87
- // Use bulk API with single variable
88
- const success = await apiClient.setDeploymentEnv(type, [{ key, value }]);
89
- if (!success) {
90
- throw new Error('Failed to set environment variable');
91
- }
92
- });
93
- logger.info('Note: The deployment will be restarted automatically for changes to take effect.');
94
- apiClient.dispose();
95
- }
96
- async function unsetEnv(type, key) {
97
- // Validate type
98
- if (type !== DeploymentType.STOREFRONT &&
99
- type !== DeploymentType.APPLICATION) {
100
- logger.error('Invalid deployment type. Use "storefront" or "application".');
101
- process.exit(1);
102
- }
103
- const config = requireConfig();
104
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, requireAuth());
105
- await withSpinner(`Removing ${key} from ${type}...`, `${key} removed successfully`, `Failed to remove ${key}`, async () => {
106
- // Use bulk API with single key
107
- const success = await apiClient.unsetDeploymentEnv(type, [key]);
108
- if (!success) {
109
- throw new Error('Failed to remove environment variable');
110
- }
111
- });
112
- logger.info('Note: The deployment may need to be restarted for changes to take effect.');
113
- apiClient.dispose();
114
- }
115
- async function pushEnv(type) {
116
- // Validate type if provided
117
- if (type &&
118
- type !== DeploymentType.STOREFRONT &&
119
- type !== DeploymentType.APPLICATION) {
120
- logger.error('Invalid deployment type. Use "storefront" or "application".');
121
- process.exit(1);
122
- }
123
- const config = requireConfig();
124
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, requireAuth());
125
- if (type) {
126
- // Push for specific type
127
- const envFilePath = getEnvFilePath(type);
128
- if (!envFilePath) {
129
- logger.error(`Could not find .env file path for ${type}`);
130
- process.exit(1);
131
- }
132
- logger.info(`Pushing environment variables from ${envFilePath}`);
133
- const result = await withSpinner(`Syncing environment variables for ${type}...`, `Environment variables synced`, `Failed to sync environment variables`, async () => {
134
- return syncEnvToDeployment(apiClient, type);
135
- });
136
- logger.info(`Synced ${result.synced} variable(s)${result.removed > 0 ? `, removed ${result.removed}` : ''}`);
137
- }
138
- else {
139
- // Push for all types
140
- logger.info('Pushing environment variables for all deployments');
141
- const results = await withSpinner('Syncing environment variables...', 'Environment variables synced', 'Failed to sync environment variables', async () => {
142
- return syncAllEnvToDeployments(apiClient);
143
- });
144
- if (results.storefront.synced > 0 || results.storefront.removed > 0) {
145
- logger.info(`Storefront: ${results.storefront.synced} synced${results.storefront.removed > 0 ? `, ${results.storefront.removed} removed` : ''}`);
146
- }
147
- if (results.application.synced > 0 || results.application.removed > 0) {
148
- logger.info(`Application: ${results.application.synced} synced${results.application.removed > 0 ? `, ${results.application.removed} removed` : ''}`);
149
- }
150
- const totalSynced = results.storefront.synced + results.application.synced;
151
- if (totalSynced === 0) {
152
- logger.info('No .env files found or no variables to sync');
153
- }
154
- }
155
- logger.info('Note: The deployment may need to be restarted for changes to take effect.');
156
- apiClient.dispose();
157
- }
158
- //# sourceMappingURL=env.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6BnC,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAQtD"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createListCommand(): Command;
3
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,iBAAiB,IAAI,OAAO,CAS3C"}
@@ -1,65 +0,0 @@
1
- import { Command } from 'commander';
2
- import Table from 'cli-table3';
3
- import chalk from 'chalk';
4
- import logger from '../lib/logger.js';
5
- import { requireConfig, requireAuth } from '../lib/config.js';
6
- import { ForgecartApiClient } from '../lib/api-client.js';
7
- import { DeploymentStatus } from '../types/index.js';
8
- export function createListCommand() {
9
- const cmd = new Command('list')
10
- .alias('ls')
11
- .description('List all deployments for this channel')
12
- .action(async () => {
13
- await listDeployments();
14
- });
15
- return cmd;
16
- }
17
- function getStatusColor(status) {
18
- switch (status) {
19
- case DeploymentStatus.RUNNING:
20
- return chalk.green(status);
21
- case DeploymentStatus.STAGING:
22
- return chalk.yellow(status);
23
- case DeploymentStatus.PENDING:
24
- return chalk.blue(status);
25
- case DeploymentStatus.ERROR:
26
- return chalk.red(status);
27
- case DeploymentStatus.STOPPED:
28
- return chalk.gray(status);
29
- default:
30
- return status;
31
- }
32
- }
33
- async function listDeployments() {
34
- // Check authentication first
35
- const authToken = requireAuth();
36
- const config = requireConfig();
37
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
38
- const deployments = await apiClient.getDeployments();
39
- if (deployments.length === 0) {
40
- logger.info('No deployments found');
41
- logger.log('Run "forgecart deploy" to deploy your application');
42
- apiClient.dispose();
43
- return;
44
- }
45
- const table = new Table({
46
- head: ['Type', 'Status', 'URL', 'Instances', 'Last Deployed'],
47
- style: {
48
- head: ['cyan'],
49
- },
50
- });
51
- for (const deployment of deployments) {
52
- table.push([
53
- deployment.type,
54
- getStatusColor(deployment.status),
55
- deployment.url || '-',
56
- deployment.instances.toString(),
57
- deployment.lastDeployedAt
58
- ? new Date(deployment.lastDeployedAt).toLocaleString()
59
- : '-',
60
- ]);
61
- }
62
- console.log(table.toString());
63
- apiClient.dispose();
64
- }
65
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createLoginCommand(): Command;
3
- //# sourceMappingURL=login.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4BnC,wBAAgB,kBAAkB,IAAI,OAAO,CAqB5C"}
@@ -1,120 +0,0 @@
1
- import { Command } from 'commander';
2
- import { gql, GraphQLClient } from 'graphql-request';
3
- import { findProjectRoot, getGlobalConfigPath, updateConfig, updateGlobalConfig, } from '../lib/config.js';
4
- import logger from '../lib/logger.js';
5
- import { withSpinner } from '../utils/spinner.js';
6
- const DEFAULT_API_URL = 'https://api.forgecart.com';
7
- const DEFAULT_DASHBOARD_URL = 'http://dashboard.forgecart.com';
8
- export function createLoginCommand() {
9
- const cmd = new Command('login')
10
- .description('Authenticate with ForgeCart via browser')
11
- .option('--api-url <url>', 'API URL', DEFAULT_API_URL)
12
- .option('--dashboard-url <url>', 'Dashboard URL for authentication', DEFAULT_DASHBOARD_URL)
13
- .option('--no-browser', 'Skip opening browser automatically')
14
- .action(async (options) => {
15
- await browserLogin(options);
16
- });
17
- return cmd;
18
- }
19
- async function browserLogin(options) {
20
- const dashboardUrl = options.dashboardUrl.replace(/\/$/, ''); // Remove trailing slash
21
- const apiUrl = options.apiUrl.replace(/\/$/, ''); // Remove trailing slash
22
- logger.title('ForgeCart CLI Login');
23
- logger.newline();
24
- // Create GraphQL client for admin-api (public endpoints don't require auth)
25
- const client = new GraphQLClient(`${apiUrl}/admin-api`);
26
- // 1. Generate device code
27
- logger.info('Requesting authorization code...');
28
- const GENERATE_DEVICE_CODE = gql `
29
- mutation GenerateDeviceCode($input: GenerateDeviceCodeInput!) {
30
- generateDeviceCode(input: $input) {
31
- deviceCode
32
- userCode
33
- verificationUri
34
- expiresIn
35
- }
36
- }
37
- `;
38
- let deviceCodeResponse;
39
- try {
40
- const response = await client.request(GENERATE_DEVICE_CODE, { input: { apiUrl } });
41
- deviceCodeResponse = response.generateDeviceCode;
42
- }
43
- catch {
44
- logger.error('Failed to connect to ForgeCart API');
45
- logger.error(`Make sure ${apiUrl} is accessible`);
46
- process.exit(1);
47
- }
48
- const { deviceCode, userCode, expiresIn } = deviceCodeResponse;
49
- // 2. Display instructions - construct auth URL using dashboard URL directly
50
- const authUrl = `${dashboardUrl}/cli/auth?code=${userCode}`;
51
- logger.newline();
52
- logger.info('To authorize, open this URL in your browser:');
53
- logger.newline();
54
- logger.info(` ${authUrl}`);
55
- logger.newline();
56
- logger.info(`Or enter this code manually: ${userCode}`);
57
- logger.newline();
58
- // 3. Open browser (if enabled)
59
- if (options.browser) {
60
- try {
61
- const open = (await import('open')).default;
62
- await open(authUrl);
63
- logger.info('Browser opened automatically.');
64
- }
65
- catch {
66
- logger.warn('Could not open browser automatically.');
67
- }
68
- }
69
- // 4. Poll for approval
70
- logger.newline();
71
- const result = await withSpinner(`Waiting for approval (code: ${userCode})...`, 'Authorization successful!', 'Authorization failed', () => pollForToken(client, deviceCode, expiresIn));
72
- // 5. Save auth token to global config (~/.forgecart/)
73
- updateGlobalConfig({
74
- authToken: result.authToken,
75
- apiUrl,
76
- });
77
- logger.success(`Global config saved: ${getGlobalConfigPath()}`);
78
- // 6. Also update project config if in a project (authToken is global only)
79
- const projectRoot = findProjectRoot(process.cwd());
80
- if (projectRoot) {
81
- // Update existing project config with channel token
82
- updateConfig({
83
- channelToken: result.channelToken,
84
- apiUrl,
85
- }, projectRoot);
86
- logger.success(`Project config updated: ${projectRoot}/.forgecart/config.json`);
87
- }
88
- logger.newline();
89
- logger.box('Successfully authenticated with ForgeCart!');
90
- }
91
- async function pollForToken(client, deviceCode, expiresIn) {
92
- const POLL_DEVICE_TOKEN = gql `
93
- query PollDeviceToken($deviceCode: String!) {
94
- pollDeviceToken(deviceCode: $deviceCode) {
95
- status
96
- channelToken
97
- authToken
98
- }
99
- }
100
- `;
101
- const startTime = Date.now();
102
- const pollInterval = 3000; // 3 seconds
103
- while (Date.now() - startTime < expiresIn * 1000) {
104
- const response = await client.request(POLL_DEVICE_TOKEN, { deviceCode });
105
- const { status, channelToken, authToken } = response.pollDeviceToken;
106
- if (status === 'APPROVED' && channelToken && authToken) {
107
- return { channelToken, authToken };
108
- }
109
- else if (status === 'DENIED') {
110
- throw new Error('Authorization was denied');
111
- }
112
- else if (status === 'EXPIRED') {
113
- throw new Error('Authorization code expired');
114
- }
115
- // Wait before next poll
116
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
117
- }
118
- throw new Error('Authorization timed out');
119
- }
120
- //# sourceMappingURL=login.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createLogsCommand(): Command;
3
- //# sourceMappingURL=logs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,iBAAiB,IAAI,OAAO,CAc3C"}
@@ -1,88 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { requireAuth, requireConfig } from '../lib/config.js';
4
- import { ForgecartApiClient } from '../lib/api-client.js';
5
- import logger from '../lib/logger.js';
6
- import { DeploymentType } from '../types/index.js';
7
- export function createLogsCommand() {
8
- const cmd = new Command('logs')
9
- .description('View deployment logs')
10
- .argument('[type]', 'Deployment type (storefront or application)', 'storefront')
11
- .option('-f, --follow', 'Follow log output (default behavior)')
12
- .action(async (type) => {
13
- await viewLogs(type);
14
- });
15
- return cmd;
16
- }
17
- async function viewLogs(type) {
18
- // Validate type
19
- if (type !== DeploymentType.STOREFRONT &&
20
- type !== DeploymentType.APPLICATION) {
21
- logger.error('Invalid deployment type. Use "storefront" or "application".');
22
- process.exit(1);
23
- }
24
- // Check authentication first
25
- const authToken = requireAuth();
26
- const config = requireConfig();
27
- logger.info(`Connecting to ${type} logs...`);
28
- // Use ForgecartApiClient with SDK subscription
29
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
30
- // Handle Ctrl+C
31
- process.on('SIGINT', () => {
32
- logger.newline();
33
- logger.info('Disconnecting...');
34
- apiClient.dispose();
35
- process.exit(0);
36
- });
37
- try {
38
- const subscription = apiClient.subscribeToDeploymentLogs(type);
39
- logger.success(`Connected to ${type} logs`);
40
- logger.info('Press Ctrl+C to stop');
41
- logger.newline();
42
- for await (const result of subscription) {
43
- const log = result.deploymentLogs;
44
- if (log) {
45
- // Try to parse the message as JSON (Epinio format)
46
- let displayMessage = log.message;
47
- try {
48
- const parsed = JSON.parse(log.message);
49
- // If it's JSON with Message field, use that (or skip if empty)
50
- if ('Message' in parsed) {
51
- displayMessage = parsed.Message?.trim() || null;
52
- }
53
- }
54
- catch {
55
- // Not JSON, use as-is
56
- }
57
- // Skip empty messages
58
- if (!displayMessage) {
59
- continue;
60
- }
61
- // Format timestamp to HH:MM:SS
62
- const timestamp = new Date(log.timestamp).toLocaleTimeString('en-US', {
63
- hour12: false,
64
- hour: '2-digit',
65
- minute: '2-digit',
66
- second: '2-digit',
67
- });
68
- console.log(`${chalk.gray(timestamp)} ${displayMessage}`);
69
- }
70
- }
71
- }
72
- catch (error) {
73
- let errorMessage;
74
- if (error instanceof Error) {
75
- errorMessage = error.message;
76
- }
77
- else if (typeof error === 'object' && error !== null) {
78
- errorMessage = JSON.stringify(error, null, 2);
79
- }
80
- else {
81
- errorMessage = String(error);
82
- }
83
- logger.error(`Subscription error: ${errorMessage}`);
84
- apiClient.dispose();
85
- process.exit(1);
86
- }
87
- }
88
- //# sourceMappingURL=logs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createScaleCommand(): Command;
3
- //# sourceMappingURL=scale.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scale.d.ts","sourceRoot":"","sources":["../../../src/commands/scale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C"}
@@ -1,49 +0,0 @@
1
- import { Command } from 'commander';
2
- import logger from '../lib/logger.js';
3
- import { requireConfig, requireAuth } from '../lib/config.js';
4
- import { ForgecartApiClient } from '../lib/api-client.js';
5
- import { DeploymentType } from '../types/index.js';
6
- import { withSpinner } from '../utils/spinner.js';
7
- export function createScaleCommand() {
8
- const cmd = new Command('scale')
9
- .description('Scale a deployment')
10
- .argument('<type>', 'Deployment type (storefront or application)')
11
- .argument('<instances>', 'Number of instances')
12
- .action(async (type, instances) => {
13
- await scaleDeployment(type, parseInt(instances, 10));
14
- });
15
- return cmd;
16
- }
17
- async function scaleDeployment(type, instances) {
18
- // Validate type
19
- if (type !== DeploymentType.STOREFRONT &&
20
- type !== DeploymentType.APPLICATION) {
21
- logger.error('Invalid deployment type. Use "storefront" or "application".');
22
- process.exit(1);
23
- }
24
- // Validate instances
25
- if (isNaN(instances) || instances < 0 || instances > 10) {
26
- logger.error('Invalid number of instances. Must be between 0 and 10.');
27
- process.exit(1);
28
- }
29
- // Check authentication first
30
- const authToken = requireAuth();
31
- const config = requireConfig();
32
- const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken, authToken);
33
- // Check if deployment exists
34
- const deployment = await apiClient.getDeployment(type);
35
- if (!deployment) {
36
- logger.error(`No ${type} deployment found`);
37
- process.exit(1);
38
- }
39
- // Scale deployment
40
- const scaled = await withSpinner(`Scaling ${type} to ${instances} instance(s)...`, `${type} scaled to ${instances} instance(s)`, `Failed to scale ${type}`, async () => {
41
- return apiClient.scaleDeployment(type, instances);
42
- });
43
- logger.newline();
44
- logger.keyValue('Type', scaled.type);
45
- logger.keyValue('Instances', scaled.instances.toString());
46
- logger.keyValue('Status', scaled.status);
47
- apiClient.dispose();
48
- }
49
- //# sourceMappingURL=scale.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scale.js","sourceRoot":"","sources":["../../../src/commands/scale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,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,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;SAC7B,WAAW,CAAC,oBAAoB,CAAC;SACjC,QAAQ,CAAC,QAAQ,EAAE,6CAA6C,CAAC;SACjE,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,SAAiB,EAAE,EAAE;QAChD,MAAM,eAAe,CAAC,IAAsB,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAoB,EACpB,SAAiB;IAEjB,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,qBAAqB;IACrB,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACtE,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,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,WAAW,IAAI,OAAO,SAAS,iBAAiB,EAChD,GAAG,IAAI,cAAc,SAAS,cAAc,EAC5C,mBAAmB,IAAI,EAAE,EACzB,KAAK,IAAI,EAAE;QACT,OAAO,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACnD,CAAC,CACF,CAAA;IAED,MAAM,CAAC,OAAO,EAAE,CAAA;IAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACxC,SAAS,CAAC,OAAO,EAAE,CAAA;AACrB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createStatusCommand(): Command;
3
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,mBAAmB,IAAI,OAAO,CAS7C"}