@forgecart/cli 1.0.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.
- package/README.md +179 -0
- package/bin/forgecart.js +3 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +30 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +55 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/deploy.d.ts +3 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +128 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/env.d.ts +3 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +100 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +233 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +61 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +105 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/scale.d.ts +3 -0
- package/dist/commands/scale.d.ts.map +1 -0
- package/dist/commands/scale.js +45 -0
- package/dist/commands/scale.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +85 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +46 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-client.d.ts +21 -0
- package/dist/lib/api-client.d.ts.map +1 -0
- package/dist/lib/api-client.js +220 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/archive.d.ts +8 -0
- package/dist/lib/archive.d.ts.map +1 -0
- package/dist/lib/archive.js +96 -0
- package/dist/lib/archive.js.map +1 -0
- package/dist/lib/config.d.ts +12 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +79 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/logger.d.ts +15 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +54 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/nx-generator.d.ts +8 -0
- package/dist/lib/nx-generator.d.ts.map +1 -0
- package/dist/lib/nx-generator.js +146 -0
- package/dist/lib/nx-generator.js.map +1 -0
- package/dist/templates/application-additions/.forgecartignore +37 -0
- package/dist/templates/application-additions/Procfile +1 -0
- package/dist/templates/application-additions/src/services/price-fetcher.service.ts +72 -0
- package/dist/templates/storefront-additions/.forgecartignore +40 -0
- package/dist/templates/storefront-additions/Procfile +1 -0
- package/dist/templates/storefront-additions/src/app/products/page.tsx +78 -0
- package/dist/templates/storefront-additions/src/lib/forgecart.ts +11 -0
- package/dist/types/index.d.ts +70 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/spinner.d.ts +4 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +20 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +66 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +52 -0
- package/templates/application-additions/.forgecartignore +37 -0
- package/templates/application-additions/Procfile +1 -0
- package/templates/application-additions/src/services/price-fetcher.service.ts +72 -0
- package/templates/storefront-additions/.forgecartignore +40 -0
- package/templates/storefront-additions/Procfile +1 -0
- package/templates/storefront-additions/src/app/products/page.tsx +78 -0
- package/templates/storefront-additions/src/lib/forgecart.ts +11 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import logger from '../lib/logger.js';
|
|
3
|
+
import { readConfig, findProjectRoot } from '../lib/config.js';
|
|
4
|
+
import { ForgecartApiClient } from '../lib/api-client.js';
|
|
5
|
+
import { withSpinner } from '../utils/spinner.js';
|
|
6
|
+
export function createWhoamiCommand() {
|
|
7
|
+
const cmd = new Command('whoami')
|
|
8
|
+
.description('Show current channel information')
|
|
9
|
+
.action(async () => {
|
|
10
|
+
await showWhoami();
|
|
11
|
+
});
|
|
12
|
+
return cmd;
|
|
13
|
+
}
|
|
14
|
+
async function showWhoami() {
|
|
15
|
+
const projectRoot = findProjectRoot();
|
|
16
|
+
if (!projectRoot) {
|
|
17
|
+
logger.error('Not in a ForgéCart project');
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
const config = readConfig(projectRoot);
|
|
21
|
+
if (!config) {
|
|
22
|
+
logger.error('Invalid ForgéCart configuration');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const apiClient = new ForgecartApiClient(config.apiUrl, config.channelToken);
|
|
26
|
+
const channelInfo = await withSpinner('Fetching channel information...', 'Channel information retrieved', 'Failed to fetch channel information', async () => {
|
|
27
|
+
return apiClient.getChannelInfo();
|
|
28
|
+
});
|
|
29
|
+
if (!channelInfo) {
|
|
30
|
+
logger.error('Unable to fetch channel information. Your token may be invalid.');
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
logger.newline();
|
|
34
|
+
logger.title('Channel Information');
|
|
35
|
+
logger.keyValue('Channel ID', channelInfo.id);
|
|
36
|
+
logger.keyValue('Channel Code', channelInfo.code);
|
|
37
|
+
logger.keyValue('API URL', config.apiUrl);
|
|
38
|
+
logger.newline();
|
|
39
|
+
logger.keyValue('Project Root', projectRoot);
|
|
40
|
+
logger.keyValue('Has Application', config.hasApplication ? 'Yes' : 'No');
|
|
41
|
+
logger.keyValue('Storefront Path', config.storefrontPath);
|
|
42
|
+
if (config.applicationPath) {
|
|
43
|
+
logger.keyValue('Application Path', config.applicationPath);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,MAAM,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAiB,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,UAAU,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,MAAM,WAAW,GAAG,eAAe,EAAE,CAAA;IAErC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IAE5E,MAAM,WAAW,GAAG,MAAM,WAAW,CACnC,iCAAiC,EACjC,+BAA+B,EAC/B,qCAAqC,EACrC,KAAK,IAAI,EAAE;QACT,OAAO,SAAS,CAAC,cAAc,EAAE,CAAA;IACnC,CAAC,CACF,CAAA;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAA;IAChB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACnC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;IAC7C,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IACjD,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,CAAC,OAAO,EAAE,CAAA;IAChB,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;IAC5C,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACxE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IACzD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;AAE/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Deployment, DeploymentType, DeploymentEnv, ChannelInfo } from '../types/index.js';
|
|
2
|
+
export declare class ForgecartApiClient {
|
|
3
|
+
private graphqlClient;
|
|
4
|
+
private baseUrl;
|
|
5
|
+
private channelToken;
|
|
6
|
+
constructor(apiUrl: string, channelToken: string);
|
|
7
|
+
validateChannelToken(): Promise<boolean>;
|
|
8
|
+
getChannelInfo(): Promise<ChannelInfo | null>;
|
|
9
|
+
getDeployments(): Promise<Deployment[]>;
|
|
10
|
+
getDeployment(type: DeploymentType): Promise<Deployment | null>;
|
|
11
|
+
createDeployment(type: DeploymentType): Promise<Deployment>;
|
|
12
|
+
deleteDeployment(type: DeploymentType): Promise<boolean>;
|
|
13
|
+
scaleDeployment(type: DeploymentType, instances: number): Promise<Deployment>;
|
|
14
|
+
getDeploymentEnv(type: DeploymentType): Promise<DeploymentEnv[]>;
|
|
15
|
+
setDeploymentEnv(type: DeploymentType, key: string, value: string): Promise<boolean>;
|
|
16
|
+
unsetDeploymentEnv(type: DeploymentType, key: string): Promise<boolean>;
|
|
17
|
+
refreshDeploymentStatus(type: DeploymentType): Promise<Deployment | null>;
|
|
18
|
+
uploadAndDeploy(type: DeploymentType, zipBuffer: Buffer): Promise<Deployment>;
|
|
19
|
+
getLogsWebSocketUrl(type: DeploymentType): Promise<string | null>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAE1B,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU1C,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAexC,cAAc,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAkB7C,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAmBvC,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqB/D,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB3D,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAaxD,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqB7E,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgBhE,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAapF,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAavE,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAsBzE,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB7E,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAgBxE"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { GraphQLClient, gql } from 'graphql-request';
|
|
2
|
+
import FormData from 'form-data';
|
|
3
|
+
export class ForgecartApiClient {
|
|
4
|
+
graphqlClient;
|
|
5
|
+
baseUrl;
|
|
6
|
+
channelToken;
|
|
7
|
+
constructor(apiUrl, channelToken) {
|
|
8
|
+
this.baseUrl = apiUrl;
|
|
9
|
+
this.channelToken = channelToken;
|
|
10
|
+
this.graphqlClient = new GraphQLClient(`${apiUrl}/shop-api`, {
|
|
11
|
+
headers: {
|
|
12
|
+
'vendure-token': channelToken,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
async validateChannelToken() {
|
|
17
|
+
const query = gql `
|
|
18
|
+
query ValidateChannelToken {
|
|
19
|
+
validateChannelToken
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
try {
|
|
23
|
+
const result = await this.graphqlClient.request(query);
|
|
24
|
+
return result.validateChannelToken;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async getChannelInfo() {
|
|
31
|
+
const query = gql `
|
|
32
|
+
query ChannelInfo {
|
|
33
|
+
channelInfo {
|
|
34
|
+
id
|
|
35
|
+
code
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
39
|
+
try {
|
|
40
|
+
const result = await this.graphqlClient.request(query);
|
|
41
|
+
return result.channelInfo;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async getDeployments() {
|
|
48
|
+
const query = gql `
|
|
49
|
+
query Deployments {
|
|
50
|
+
deployments {
|
|
51
|
+
id
|
|
52
|
+
type
|
|
53
|
+
status
|
|
54
|
+
url
|
|
55
|
+
instances
|
|
56
|
+
lastDeployedAt
|
|
57
|
+
errorMessage
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
const result = await this.graphqlClient.request(query);
|
|
62
|
+
return result.deployments;
|
|
63
|
+
}
|
|
64
|
+
async getDeployment(type) {
|
|
65
|
+
const query = gql `
|
|
66
|
+
query Deployment($type: DeploymentType!) {
|
|
67
|
+
deployment(type: $type) {
|
|
68
|
+
id
|
|
69
|
+
type
|
|
70
|
+
status
|
|
71
|
+
url
|
|
72
|
+
instances
|
|
73
|
+
lastDeployedAt
|
|
74
|
+
errorMessage
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
const result = await this.graphqlClient.request(query, {
|
|
79
|
+
type,
|
|
80
|
+
});
|
|
81
|
+
return result.deployment;
|
|
82
|
+
}
|
|
83
|
+
async createDeployment(type) {
|
|
84
|
+
const mutation = gql `
|
|
85
|
+
mutation CreateDeployment($input: CreateDeploymentInput!) {
|
|
86
|
+
createDeployment(input: $input) {
|
|
87
|
+
id
|
|
88
|
+
type
|
|
89
|
+
status
|
|
90
|
+
url
|
|
91
|
+
instances
|
|
92
|
+
lastDeployedAt
|
|
93
|
+
errorMessage
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`;
|
|
97
|
+
const result = await this.graphqlClient.request(mutation, {
|
|
98
|
+
input: { type },
|
|
99
|
+
});
|
|
100
|
+
return result.createDeployment;
|
|
101
|
+
}
|
|
102
|
+
async deleteDeployment(type) {
|
|
103
|
+
const mutation = gql `
|
|
104
|
+
mutation DeleteDeployment($type: DeploymentType!) {
|
|
105
|
+
deleteDeployment(type: $type)
|
|
106
|
+
}
|
|
107
|
+
`;
|
|
108
|
+
const result = await this.graphqlClient.request(mutation, {
|
|
109
|
+
type,
|
|
110
|
+
});
|
|
111
|
+
return result.deleteDeployment;
|
|
112
|
+
}
|
|
113
|
+
async scaleDeployment(type, instances) {
|
|
114
|
+
const mutation = gql `
|
|
115
|
+
mutation ScaleDeployment($input: ScaleDeploymentInput!) {
|
|
116
|
+
scaleDeployment(input: $input) {
|
|
117
|
+
id
|
|
118
|
+
type
|
|
119
|
+
status
|
|
120
|
+
url
|
|
121
|
+
instances
|
|
122
|
+
lastDeployedAt
|
|
123
|
+
errorMessage
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
`;
|
|
127
|
+
const result = await this.graphqlClient.request(mutation, {
|
|
128
|
+
input: { type, instances },
|
|
129
|
+
});
|
|
130
|
+
return result.scaleDeployment;
|
|
131
|
+
}
|
|
132
|
+
async getDeploymentEnv(type) {
|
|
133
|
+
const query = gql `
|
|
134
|
+
query DeploymentEnv($type: DeploymentType!) {
|
|
135
|
+
deploymentEnv(type: $type) {
|
|
136
|
+
key
|
|
137
|
+
value
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
const result = await this.graphqlClient.request(query, {
|
|
142
|
+
type,
|
|
143
|
+
});
|
|
144
|
+
return result.deploymentEnv;
|
|
145
|
+
}
|
|
146
|
+
async setDeploymentEnv(type, key, value) {
|
|
147
|
+
const mutation = gql `
|
|
148
|
+
mutation SetDeploymentEnv($input: SetEnvInput!) {
|
|
149
|
+
setDeploymentEnv(input: $input)
|
|
150
|
+
}
|
|
151
|
+
`;
|
|
152
|
+
const result = await this.graphqlClient.request(mutation, {
|
|
153
|
+
input: { type, key, value },
|
|
154
|
+
});
|
|
155
|
+
return result.setDeploymentEnv;
|
|
156
|
+
}
|
|
157
|
+
async unsetDeploymentEnv(type, key) {
|
|
158
|
+
const mutation = gql `
|
|
159
|
+
mutation UnsetDeploymentEnv($input: UnsetEnvInput!) {
|
|
160
|
+
unsetDeploymentEnv(input: $input)
|
|
161
|
+
}
|
|
162
|
+
`;
|
|
163
|
+
const result = await this.graphqlClient.request(mutation, {
|
|
164
|
+
input: { type, key },
|
|
165
|
+
});
|
|
166
|
+
return result.unsetDeploymentEnv;
|
|
167
|
+
}
|
|
168
|
+
async refreshDeploymentStatus(type) {
|
|
169
|
+
const mutation = gql `
|
|
170
|
+
mutation RefreshDeploymentStatus($type: DeploymentType!) {
|
|
171
|
+
refreshDeploymentStatus(type: $type) {
|
|
172
|
+
id
|
|
173
|
+
type
|
|
174
|
+
status
|
|
175
|
+
url
|
|
176
|
+
instances
|
|
177
|
+
lastDeployedAt
|
|
178
|
+
errorMessage
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
`;
|
|
182
|
+
const result = await this.graphqlClient.request(mutation, { type });
|
|
183
|
+
return result.refreshDeploymentStatus;
|
|
184
|
+
}
|
|
185
|
+
async uploadAndDeploy(type, zipBuffer) {
|
|
186
|
+
const formData = new FormData();
|
|
187
|
+
formData.append('file', zipBuffer, {
|
|
188
|
+
filename: 'app.zip',
|
|
189
|
+
contentType: 'application/zip',
|
|
190
|
+
});
|
|
191
|
+
const response = await fetch(`${this.baseUrl}/deployments/${type}/upload`, {
|
|
192
|
+
method: 'POST',
|
|
193
|
+
headers: {
|
|
194
|
+
'vendure-token': this.channelToken,
|
|
195
|
+
},
|
|
196
|
+
body: formData,
|
|
197
|
+
});
|
|
198
|
+
if (!response.ok) {
|
|
199
|
+
const errorText = await response.text();
|
|
200
|
+
throw new Error(`Deployment failed: ${response.status} - ${errorText}`);
|
|
201
|
+
}
|
|
202
|
+
const result = (await response.json());
|
|
203
|
+
return result.deployment;
|
|
204
|
+
}
|
|
205
|
+
async getLogsWebSocketUrl(type) {
|
|
206
|
+
const response = await fetch(`${this.baseUrl}/deployments/${type}/logs`, {
|
|
207
|
+
method: 'POST',
|
|
208
|
+
headers: {
|
|
209
|
+
'vendure-token': this.channelToken,
|
|
210
|
+
'Content-Type': 'application/json',
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
if (!response.ok) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
const result = (await response.json());
|
|
217
|
+
return result.wsUrl;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ArchiveOptions {
|
|
2
|
+
sourceDir: string;
|
|
3
|
+
ignoreFile?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function createArchive(options: ArchiveOptions): Promise<Buffer>;
|
|
6
|
+
export declare function getIgnoreFileForType(type: 'storefront' | 'application'): string;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/lib/archive.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAkFD,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC5E;AAGD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,GAAG,aAAa,GACjC,MAAM,CAER"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import archiver from 'archiver';
|
|
4
|
+
function parseIgnoreFile(ignoreFilePath) {
|
|
5
|
+
if (!fs.existsSync(ignoreFilePath)) {
|
|
6
|
+
return [];
|
|
7
|
+
}
|
|
8
|
+
const content = fs.readFileSync(ignoreFilePath, 'utf-8');
|
|
9
|
+
return content
|
|
10
|
+
.split('\n')
|
|
11
|
+
.map((line) => line.trim())
|
|
12
|
+
.filter((line) => line && !line.startsWith('#'));
|
|
13
|
+
}
|
|
14
|
+
function shouldIgnore(filePath, patterns) {
|
|
15
|
+
const relativePath = filePath.replace(/\\/g, '/');
|
|
16
|
+
for (const pattern of patterns) {
|
|
17
|
+
// Handle directory patterns (ending with /)
|
|
18
|
+
if (pattern.endsWith('/')) {
|
|
19
|
+
const dirPattern = pattern.slice(0, -1);
|
|
20
|
+
if (relativePath.startsWith(dirPattern + '/') ||
|
|
21
|
+
relativePath === dirPattern) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Handle exact matches
|
|
26
|
+
else if (relativePath === pattern || relativePath.endsWith('/' + pattern)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
// Handle glob patterns with *
|
|
30
|
+
else if (pattern.includes('*')) {
|
|
31
|
+
const regex = new RegExp('^' +
|
|
32
|
+
pattern
|
|
33
|
+
.replace(/\./g, '\\.')
|
|
34
|
+
.replace(/\*\*/g, '.*')
|
|
35
|
+
.replace(/\*/g, '[^/]*') +
|
|
36
|
+
'$');
|
|
37
|
+
if (regex.test(relativePath)) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Handle patterns that match any file with that name
|
|
42
|
+
else if (relativePath.includes('/' + pattern) || relativePath === pattern) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
function getAllFiles(dir, baseDir, ignorePatterns) {
|
|
49
|
+
const files = [];
|
|
50
|
+
const items = fs.readdirSync(dir, { withFileTypes: true });
|
|
51
|
+
for (const item of items) {
|
|
52
|
+
const fullPath = path.join(dir, item.name);
|
|
53
|
+
const relativePath = path.relative(baseDir, fullPath).replace(/\\/g, '/');
|
|
54
|
+
if (shouldIgnore(relativePath, ignorePatterns)) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (item.isDirectory()) {
|
|
58
|
+
files.push(...getAllFiles(fullPath, baseDir, ignorePatterns));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
files.push(fullPath);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return files;
|
|
65
|
+
}
|
|
66
|
+
export async function createArchive(options) {
|
|
67
|
+
const { sourceDir, ignoreFile } = options;
|
|
68
|
+
// Parse ignore patterns
|
|
69
|
+
const defaultIgnorePatterns = ['node_modules/', '.git/', '.env', '.env.local'];
|
|
70
|
+
let ignorePatterns = [...defaultIgnorePatterns];
|
|
71
|
+
if (ignoreFile) {
|
|
72
|
+
const customPatterns = parseIgnoreFile(path.join(sourceDir, ignoreFile));
|
|
73
|
+
ignorePatterns = [...ignorePatterns, ...customPatterns];
|
|
74
|
+
}
|
|
75
|
+
// Get all files to include
|
|
76
|
+
const files = getAllFiles(sourceDir, sourceDir, ignorePatterns);
|
|
77
|
+
// Create archive
|
|
78
|
+
return new Promise((resolve, reject) => {
|
|
79
|
+
const chunks = [];
|
|
80
|
+
const archive = archiver('zip', { zlib: { level: 9 } });
|
|
81
|
+
archive.on('data', (chunk) => chunks.push(chunk));
|
|
82
|
+
archive.on('end', () => resolve(Buffer.concat(chunks)));
|
|
83
|
+
archive.on('error', reject);
|
|
84
|
+
for (const file of files) {
|
|
85
|
+
const relativePath = path.relative(sourceDir, file);
|
|
86
|
+
// Use mode 0644 for files to ensure buildpack can read them
|
|
87
|
+
archive.file(file, { name: relativePath, mode: 0o644 });
|
|
88
|
+
}
|
|
89
|
+
archive.finalize();
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
93
|
+
export function getIgnoreFileForType(type) {
|
|
94
|
+
return '.forgecartignore';
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/lib/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ForgecartConfig } from '../types/index.js';
|
|
2
|
+
export declare function getConfigDir(projectRoot: string): string;
|
|
3
|
+
export declare function getConfigPath(projectRoot: string): string;
|
|
4
|
+
export declare function configExists(projectRoot?: string): boolean;
|
|
5
|
+
export declare function readConfig(projectRoot?: string): ForgecartConfig | null;
|
|
6
|
+
export declare function writeConfig(config: ForgecartConfig, projectRoot?: string): void;
|
|
7
|
+
export declare function updateConfig(updates: Partial<ForgecartConfig>, projectRoot?: string): ForgecartConfig;
|
|
8
|
+
export declare function getDefaultConfig(): ForgecartConfig;
|
|
9
|
+
export declare function findProjectRoot(startDir?: string): string | null;
|
|
10
|
+
export declare function requireConfig(): ForgecartConfig;
|
|
11
|
+
export declare function getProjectRoot(): string;
|
|
12
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAYnD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAEzE;AAED,wBAAgB,UAAU,CAAC,WAAW,GAAE,MAAsB,GAAG,eAAe,GAAG,IAAI,CAatF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,GAAE,MAAsB,GAAG,IAAI,CAS9F;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,WAAW,GAAE,MAAsB,GAClC,eAAe,CAKjB;AAED,wBAAgB,gBAAgB,IAAI,eAAe,CAElD;AAED,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAW/E;AAED,wBAAgB,aAAa,IAAI,eAAe,CAc/C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAQvC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
const CONFIG_DIR = '.forgecart';
|
|
4
|
+
const CONFIG_FILE = 'config.json';
|
|
5
|
+
const DEFAULT_CONFIG = {
|
|
6
|
+
version: '1.0',
|
|
7
|
+
channelToken: '',
|
|
8
|
+
apiUrl: 'https://api.forgecart.com',
|
|
9
|
+
hasApplication: false,
|
|
10
|
+
storefrontPath: 'apps/storefront',
|
|
11
|
+
};
|
|
12
|
+
export function getConfigDir(projectRoot) {
|
|
13
|
+
return path.join(projectRoot, CONFIG_DIR);
|
|
14
|
+
}
|
|
15
|
+
export function getConfigPath(projectRoot) {
|
|
16
|
+
return path.join(getConfigDir(projectRoot), CONFIG_FILE);
|
|
17
|
+
}
|
|
18
|
+
export function configExists(projectRoot = process.cwd()) {
|
|
19
|
+
return fs.existsSync(getConfigPath(projectRoot));
|
|
20
|
+
}
|
|
21
|
+
export function readConfig(projectRoot = process.cwd()) {
|
|
22
|
+
const configPath = getConfigPath(projectRoot);
|
|
23
|
+
if (!fs.existsSync(configPath)) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
28
|
+
return JSON.parse(content);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function writeConfig(config, projectRoot = process.cwd()) {
|
|
35
|
+
const configDir = getConfigDir(projectRoot);
|
|
36
|
+
const configPath = getConfigPath(projectRoot);
|
|
37
|
+
if (!fs.existsSync(configDir)) {
|
|
38
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
41
|
+
}
|
|
42
|
+
export function updateConfig(updates, projectRoot = process.cwd()) {
|
|
43
|
+
const existing = readConfig(projectRoot) || DEFAULT_CONFIG;
|
|
44
|
+
const updated = { ...existing, ...updates };
|
|
45
|
+
writeConfig(updated, projectRoot);
|
|
46
|
+
return updated;
|
|
47
|
+
}
|
|
48
|
+
export function getDefaultConfig() {
|
|
49
|
+
return { ...DEFAULT_CONFIG };
|
|
50
|
+
}
|
|
51
|
+
export function findProjectRoot(startDir = process.cwd()) {
|
|
52
|
+
let currentDir = startDir;
|
|
53
|
+
while (currentDir !== path.parse(currentDir).root) {
|
|
54
|
+
if (fs.existsSync(path.join(currentDir, CONFIG_DIR, CONFIG_FILE))) {
|
|
55
|
+
return currentDir;
|
|
56
|
+
}
|
|
57
|
+
currentDir = path.dirname(currentDir);
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
export function requireConfig() {
|
|
62
|
+
const projectRoot = findProjectRoot();
|
|
63
|
+
if (!projectRoot) {
|
|
64
|
+
throw new Error('Not in a ForgéCart project. Run "forgecart init" to create a new project.');
|
|
65
|
+
}
|
|
66
|
+
const config = readConfig(projectRoot);
|
|
67
|
+
if (!config) {
|
|
68
|
+
throw new Error('Invalid ForgéCart configuration. Please reinitialize the project.');
|
|
69
|
+
}
|
|
70
|
+
return config;
|
|
71
|
+
}
|
|
72
|
+
export function getProjectRoot() {
|
|
73
|
+
const root = findProjectRoot();
|
|
74
|
+
if (!root) {
|
|
75
|
+
throw new Error('Not in a ForgéCart project. Run "forgecart init" to create a new project.');
|
|
76
|
+
}
|
|
77
|
+
return root;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const logger: {
|
|
2
|
+
info: (message: string) => void;
|
|
3
|
+
success: (message: string) => void;
|
|
4
|
+
warn: (message: string) => void;
|
|
5
|
+
error: (message: string) => void;
|
|
6
|
+
debug: (message: string) => void;
|
|
7
|
+
log: (message: string) => void;
|
|
8
|
+
newline: () => void;
|
|
9
|
+
title: (message: string) => void;
|
|
10
|
+
list: (items: string[]) => void;
|
|
11
|
+
keyValue: (key: string, value: string) => void;
|
|
12
|
+
box: (message: string) => void;
|
|
13
|
+
};
|
|
14
|
+
export default logger;
|
|
15
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;oBACD,MAAM;uBAIH,MAAM;oBAIT,MAAM;qBAIL,MAAM;qBAIN,MAAM;mBAMR,MAAM;;qBAQJ,MAAM;kBAMT,MAAM,EAAE;oBAMN,MAAM,SAAS,MAAM;mBAItB,MAAM;CActB,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
export const logger = {
|
|
3
|
+
info: (message) => {
|
|
4
|
+
console.log(chalk.blue('ℹ'), message);
|
|
5
|
+
},
|
|
6
|
+
success: (message) => {
|
|
7
|
+
console.log(chalk.green('✔'), message);
|
|
8
|
+
},
|
|
9
|
+
warn: (message) => {
|
|
10
|
+
console.log(chalk.yellow('⚠'), message);
|
|
11
|
+
},
|
|
12
|
+
error: (message) => {
|
|
13
|
+
console.log(chalk.red('✖'), message);
|
|
14
|
+
},
|
|
15
|
+
debug: (message) => {
|
|
16
|
+
if (process.env.DEBUG) {
|
|
17
|
+
console.log(chalk.gray('⚙'), chalk.gray(message));
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
log: (message) => {
|
|
21
|
+
console.log(message);
|
|
22
|
+
},
|
|
23
|
+
newline: () => {
|
|
24
|
+
console.log();
|
|
25
|
+
},
|
|
26
|
+
title: (message) => {
|
|
27
|
+
console.log();
|
|
28
|
+
console.log(chalk.bold.cyan(message));
|
|
29
|
+
console.log(chalk.cyan('─'.repeat(message.length)));
|
|
30
|
+
},
|
|
31
|
+
list: (items) => {
|
|
32
|
+
items.forEach((item) => {
|
|
33
|
+
console.log(chalk.gray(' •'), item);
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
keyValue: (key, value) => {
|
|
37
|
+
console.log(` ${chalk.gray(key + ':')} ${value}`);
|
|
38
|
+
},
|
|
39
|
+
box: (message) => {
|
|
40
|
+
const lines = message.split('\n');
|
|
41
|
+
const maxLength = Math.max(...lines.map((l) => l.length));
|
|
42
|
+
const border = '─'.repeat(maxLength + 2);
|
|
43
|
+
console.log();
|
|
44
|
+
console.log(chalk.cyan(`┌${border}┐`));
|
|
45
|
+
lines.forEach((line) => {
|
|
46
|
+
const padding = ' '.repeat(maxLength - line.length);
|
|
47
|
+
console.log(chalk.cyan('│'), line + padding, chalk.cyan('│'));
|
|
48
|
+
});
|
|
49
|
+
console.log(chalk.cyan(`└${border}┘`));
|
|
50
|
+
console.log();
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
export default logger;
|
|
54
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function createNxWorkspace(projectName: string, targetDir: string): Promise<boolean>;
|
|
2
|
+
export declare function generateNextApp(appName: string, projectRoot: string): Promise<boolean>;
|
|
3
|
+
export declare function generateNestApp(appName: string, projectRoot: string): Promise<boolean>;
|
|
4
|
+
export declare function installDependency(packageName: string, projectRoot: string, dev?: boolean): Promise<boolean>;
|
|
5
|
+
export declare function runNxBuild(appName: string, projectRoot: string): Promise<boolean>;
|
|
6
|
+
export declare function copyTemplateFiles(templateDir: string, targetDir: string, overwrite?: boolean): void;
|
|
7
|
+
export declare function getCliTemplatesDir(): string;
|
|
8
|
+
//# sourceMappingURL=nx-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nx-generator.d.ts","sourceRoot":"","sources":["../../src/lib/nx-generator.ts"],"names":[],"mappings":"AAsDA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBhG;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,GAAG,UAAQ,GACV,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWvF;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,UAAO,GACf,IAAI,CAqBN;AAoBD,wBAAgB,kBAAkB,IAAI,MAAM,CAwB3C"}
|