great 1.0.2 → 1.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.
- package/README.md +4 -0
- package/dist/create/account.d.ts +2 -0
- package/dist/create/account.js +40 -0
- package/dist/create/account.js.map +1 -0
- package/dist/create/integration.d.ts +4 -0
- package/dist/create/integration.js +73 -0
- package/dist/create/integration.js.map +1 -0
- package/dist/create/utils.d.ts +4 -0
- package/dist/create/utils.js +8 -0
- package/dist/create/utils.js.map +1 -0
- package/dist/deploy/index.js +1 -1
- package/dist/deploy/index.js.map +1 -1
- package/dist/explode/transform.js +3 -1
- package/dist/explode/transform.js.map +1 -1
- package/dist/explode/unescapeMongo.js +9 -1
- package/dist/explode/unescapeMongo.js.map +1 -1
- package/dist/generated/graphql.d.ts +87 -4
- package/dist/generated/graphql.js +7 -1
- package/dist/generated/graphql.js.map +1 -1
- package/dist/implode/escapeMongo.d.ts +1 -0
- package/dist/implode/escapeMongo.js +23 -0
- package/dist/implode/escapeMongo.js.map +1 -0
- package/dist/implode/index.d.ts +6 -0
- package/dist/implode/index.js +153 -0
- package/dist/implode/index.js.map +1 -0
- package/dist/implode/transform.d.ts +47 -0
- package/dist/implode/transform.js +73 -0
- package/dist/implode/transform.js.map +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/create.js +1 -1
- package/dist/integrations/create.js.map +1 -1
- package/dist/integrations/describe.d.ts +5 -0
- package/dist/integrations/describe.js +51 -0
- package/dist/integrations/describe.js.map +1 -0
- package/dist/integrations/list.js +1 -1
- package/dist/integrations/list.js.map +1 -1
- package/dist/projects/describe.d.ts +5 -0
- package/dist/projects/describe.js +51 -0
- package/dist/projects/describe.js.map +1 -0
- package/dist/projects/index.d.ts +5 -0
- package/dist/projects/index.js +83 -0
- package/dist/projects/index.js.map +1 -0
- package/dist/push/index.js +49 -15
- package/dist/push/index.js.map +1 -1
- package/dist/repl/dispatch.d.ts +1 -1
- package/dist/repl/dispatch.js +2 -2
- package/dist/repl/dispatch.js.map +1 -1
- package/dist/repl/fetchUserAndIntegration.d.ts +10 -0
- package/dist/repl/fetchUserAndIntegration.js +73 -0
- package/dist/repl/fetchUserAndIntegration.js.map +1 -0
- package/dist/repl/help.js +6 -2
- package/dist/repl/help.js.map +1 -1
- package/dist/repl/index.d.ts +1 -1
- package/dist/repl/index.js +2 -1
- package/dist/repl/index.js.map +1 -1
- package/dist/run/index.d.ts +3 -0
- package/dist/run/index.js +1 -1
- package/dist/run/index.js.map +1 -1
- package/dist/status/index.js +1 -1
- package/dist/status/index.js.map +1 -1
- package/dist/utils/apiUrl.d.ts +1 -0
- package/dist/utils/apiUrl.js +7 -0
- package/dist/utils/apiUrl.js.map +1 -0
- package/dist/utils/callApi.d.ts +5 -0
- package/dist/utils/callApi.js +17 -0
- package/dist/utils/callApi.js.map +1 -0
- package/dist/utils/createIntegrationFromFile.d.ts +1 -1
- package/dist/utils/createIntegrationFromFile.js +3 -0
- package/dist/utils/createIntegrationFromFile.js.map +1 -1
- package/dist/utils/dispatch.d.ts +1 -1
- package/dist/utils/dispatch.js +2 -2
- package/dist/utils/dispatch.js.map +1 -1
- package/dist/utils/fetchAccount.d.ts +10 -0
- package/dist/utils/fetchAccount.js +60 -0
- package/dist/utils/fetchAccount.js.map +1 -0
- package/dist/utils/fetchLocalProject.d.ts +1 -0
- package/dist/utils/fetchLocalProject.js +12 -0
- package/dist/utils/fetchLocalProject.js.map +1 -0
- package/dist/utils/fetchUserAndIntegration.d.ts +9 -0
- package/dist/utils/fetchUserAndIntegration.js +48 -0
- package/dist/utils/fetchUserAndIntegration.js.map +1 -0
- package/dist/utils/graphqlError.d.ts +1 -1
- package/dist/utils/graphqlError.js +5 -3
- package/dist/utils/graphqlError.js.map +1 -1
- package/dist/utils/graphqlRequestClient.d.ts +10 -0
- package/dist/utils/graphqlRequestClient.js +20 -0
- package/dist/utils/graphqlRequestClient.js.map +1 -0
- package/dist/utils/parseJson.d.ts +1 -0
- package/dist/utils/parseJson.js +5 -0
- package/dist/utils/parseJson.js.map +1 -0
- package/dist/utils/resolveAccount.d.ts +2 -2
- package/dist/utils/resolveAccount.js +6 -8
- package/dist/utils/resolveAccount.js.map +1 -1
- package/dist/utils/saveProject.d.ts +8 -0
- package/dist/utils/saveProject.js +93 -0
- package/dist/utils/saveProject.js.map +1 -0
- package/dist/utils/session.d.ts +9 -0
- package/dist/utils/session.js +17 -0
- package/dist/utils/session.js.map +1 -0
- package/package.json +16 -15
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type GraphQLRequestClient } from './graphqlClient.js';
|
|
2
|
+
export interface AccountResult {
|
|
3
|
+
account?: {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
key: string;
|
|
7
|
+
};
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function fetchAccount(accountId: string, apiToken?: string, client?: GraphQLRequestClient, baseUrl?: string): Promise<AccountResult>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import { createGraphQLClient, } from './graphqlClient.js';
|
|
3
|
+
const AccountByIdQueryDocument = gql `
|
|
4
|
+
query AccountById($id: ID!) {
|
|
5
|
+
account(id: $id) {
|
|
6
|
+
id
|
|
7
|
+
name
|
|
8
|
+
key
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
`;
|
|
12
|
+
const AccountByKeyQueryDocument = gql `
|
|
13
|
+
query AccountByKey($key: ID!) {
|
|
14
|
+
accountByKey(key: $key) {
|
|
15
|
+
id
|
|
16
|
+
name
|
|
17
|
+
key
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
`;
|
|
21
|
+
function isNotFoundError(error) {
|
|
22
|
+
const errorWithResponse = error;
|
|
23
|
+
if (errorWithResponse.response?.errors) {
|
|
24
|
+
return errorWithResponse.response.errors.some((err) => err.extensions?.code === 'NOT_FOUND');
|
|
25
|
+
}
|
|
26
|
+
return error?.message?.includes('NOT_FOUND');
|
|
27
|
+
}
|
|
28
|
+
export async function fetchAccount(accountId, apiToken, client, baseUrl) {
|
|
29
|
+
const graphqlClient = client ?? createGraphQLClient(apiToken, baseUrl);
|
|
30
|
+
try {
|
|
31
|
+
const idResult = await graphqlClient.request(AccountByIdQueryDocument, { id: accountId });
|
|
32
|
+
if (idResult.error && !isNotFoundError(idResult.error)) {
|
|
33
|
+
return {
|
|
34
|
+
error: `Could not fetch account: ${idResult.error.message}`,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (idResult.data?.account) {
|
|
38
|
+
return { account: idResult.data.account };
|
|
39
|
+
}
|
|
40
|
+
const keyResult = await graphqlClient.request(AccountByKeyQueryDocument, { key: accountId });
|
|
41
|
+
if (keyResult.error && !isNotFoundError(keyResult.error)) {
|
|
42
|
+
return {
|
|
43
|
+
error: `Could not fetch account: ${keyResult.error.message}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (keyResult.data?.accountByKey) {
|
|
47
|
+
return { account: keyResult.data.accountByKey };
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
error: `Account "${accountId}" not found`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
55
|
+
return {
|
|
56
|
+
error: `Could not fetch account: ${errorMessage}`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=fetchAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchAccount.js","sourceRoot":"","sources":["../../src/utils/fetchAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAM3B,MAAM,wBAAwB,GAAG,GAAG,CAAA;;;;;;;;CAQnC,CAAA;AAED,MAAM,yBAAyB,GAAG,GAAG,CAAA;;;;;;;;CAQpC,CAAA;AAWD,SAAS,eAAe,CAAC,KAAY;IAEnC,MAAM,iBAAiB,GAAG,KAIzB,CAAA;IAED,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,KAAK,WAAW,CAC9C,CAAA;IACH,CAAC;IAGD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,QAAiB,EACjB,MAA6B,EAC7B,OAAgB;IAEhB,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEtE,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAC1C,wBAAwB,EACxB,EAAE,EAAE,EAAE,SAAS,EAAE,CAClB,CAAA;QAGD,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO;gBACL,KAAK,EAAE,4BAA4B,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE;aAC5D,CAAA;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QAC3C,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAC3C,yBAAyB,EACzB,EAAE,GAAG,EAAE,SAAS,EAAE,CACnB,CAAA;QAGD,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO;gBACL,KAAK,EAAE,4BAA4B,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE;aAC7D,CAAA;QACH,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;QACjD,CAAC;QAGD,OAAO;YACL,KAAK,EAAE,YAAY,SAAS,aAAa;SAC1C,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,OAAO;YACL,KAAK,EAAE,4BAA4B,YAAY,EAAE;SAClD,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function fetchIdFromIndex(): any;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
export function fetchIdFromIndex() {
|
|
3
|
+
try {
|
|
4
|
+
const content = fs.readFileSync('index.json', 'utf8');
|
|
5
|
+
const index = JSON.parse(content);
|
|
6
|
+
return index.id;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=fetchLocalProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchLocalProject.js","sourceRoot":"","sources":["../../src/utils/fetchLocalProject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACjC,OAAO,KAAK,CAAC,EAAE,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QAEP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type GraphQLRequestClient } from './graphqlClient.js';
|
|
2
|
+
export declare const SessionQueryDocument: import("graphql/index.js").DocumentNode;
|
|
3
|
+
export interface UserAndIntegrationResult {
|
|
4
|
+
integrationId: string;
|
|
5
|
+
integrationName?: string;
|
|
6
|
+
userName?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function fetchUserAndIntegration(identifier: string, accountId: string | undefined, apiToken?: string, client?: GraphQLRequestClient, baseUrl?: string): Promise<UserAndIntegrationResult>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import { createGraphQLClient, } from './graphqlClient.js';
|
|
3
|
+
import { resolveIntegration } from './resolveIntegration.js';
|
|
4
|
+
export const SessionQueryDocument = gql `
|
|
5
|
+
query Session {
|
|
6
|
+
session {
|
|
7
|
+
user {
|
|
8
|
+
id
|
|
9
|
+
name
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
`;
|
|
14
|
+
export async function fetchUserAndIntegration(identifier, accountId, apiToken, client, baseUrl) {
|
|
15
|
+
const graphqlClient = client ?? createGraphQLClient(apiToken, baseUrl);
|
|
16
|
+
const integrationResult = await resolveIntegration(identifier, accountId, apiToken, client, baseUrl);
|
|
17
|
+
if (integrationResult.error) {
|
|
18
|
+
return {
|
|
19
|
+
integrationId: '',
|
|
20
|
+
error: integrationResult.error,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const sessionResult = await graphqlClient.request(SessionQueryDocument, {});
|
|
25
|
+
if (sessionResult.error) {
|
|
26
|
+
const errorMessage = sessionResult.error.message || String(sessionResult.error);
|
|
27
|
+
return {
|
|
28
|
+
integrationId: integrationResult.integrationId,
|
|
29
|
+
integrationName: integrationResult.integrationName,
|
|
30
|
+
error: errorMessage,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
integrationId: integrationResult.integrationId,
|
|
35
|
+
integrationName: integrationResult.integrationName,
|
|
36
|
+
userName: sessionResult.data?.session?.user?.name,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
41
|
+
return {
|
|
42
|
+
integrationId: integrationResult.integrationId,
|
|
43
|
+
integrationName: integrationResult.integrationName,
|
|
44
|
+
error: `Could not fetch session: ${errorMessage}`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=fetchUserAndIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchUserAndIntegration.js","sourceRoot":"","sources":["../../src/utils/fetchUserAndIntegration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;CAStC,CAAA;AASD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAkB,EAClB,SAA6B,EAC7B,QAAiB,EACjB,MAA6B,EAC7B,OAAgB;IAEhB,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAGtE,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAChD,UAAU,EACV,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,CACR,CAAA;IAGD,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC5B,OAAO;YACL,aAAa,EAAE,EAAE;YACjB,KAAK,EAAE,iBAAiB,CAAC,KAAK;SAC/B,CAAA;IACH,CAAC;IAGD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,OAAO,CAC/C,oBAAoB,EACpB,EAAE,CACH,CAAA;QAGD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,YAAY,GAChB,aAAa,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAC5D,OAAO;gBACL,aAAa,EAAE,iBAAiB,CAAC,aAAa;gBAC9C,eAAe,EAAE,iBAAiB,CAAC,eAAe;gBAClD,KAAK,EAAE,YAAY;aACpB,CAAA;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,iBAAiB,CAAC,aAAa;YAC9C,eAAe,EAAE,iBAAiB,CAAC,eAAe;YAClD,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI;SAClD,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,OAAO;YACL,aAAa,EAAE,iBAAiB,CAAC,aAAa;YAC9C,eAAe,EAAE,iBAAiB,CAAC,eAAe;YAClD,KAAK,EAAE,4BAA4B,YAAY,EAAE;SAClD,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare function isNotFoundError(error: Error): boolean;
|
|
2
|
-
export declare function handleGraphQLError(error: Error | undefined, log: (message: string) => void): void;
|
|
2
|
+
export declare function handleGraphQLError(error: Error | string | undefined, log: (message: string) => void): void;
|
|
@@ -9,12 +9,14 @@ export function isNotFoundError(error) {
|
|
|
9
9
|
export function handleGraphQLError(error, log) {
|
|
10
10
|
if (!error)
|
|
11
11
|
return;
|
|
12
|
-
const
|
|
13
|
-
|
|
12
|
+
const message = typeof error === 'string' ? error : error.message;
|
|
13
|
+
const isAuthError = message.includes('Authentication required') ||
|
|
14
|
+
message.includes('Not authenticated') ||
|
|
15
|
+
message.includes('Unauthorized');
|
|
14
16
|
if (isAuthError) {
|
|
15
17
|
log(chalk.red(`Not logged in. Run ${chalk.bold('great login')}.`));
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
18
|
-
log(chalk.red(
|
|
20
|
+
log(chalk.red(message));
|
|
19
21
|
}
|
|
20
22
|
//# sourceMappingURL=graphqlError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphqlError.js","sourceRoot":"","sources":["../../src/utils/graphqlError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,UAAU,eAAe,CAAC,KAAY;IAE1C,MAAM,iBAAiB,GAAG,KAIzB,CAAA;IAED,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,KAAK,WAAW,CAC9C,CAAA;IACH,CAAC;IAGD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC;AAKD,MAAM,UAAU,kBAAkB,CAChC,
|
|
1
|
+
{"version":3,"file":"graphqlError.js","sourceRoot":"","sources":["../../src/utils/graphqlError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,UAAU,eAAe,CAAC,KAAY;IAE1C,MAAM,iBAAiB,GAAG,KAIzB,CAAA;IAED,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,KAAK,WAAW,CAC9C,CAAA;IACH,CAAC;IAGD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC;AAKD,MAAM,UAAU,kBAAkB,CAChC,KAAiC,EACjC,GAA8B;IAE9B,IAAI,CAAC,KAAK;QAAE,OAAM;IAElB,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;IACjE,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAClC,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QAClE,OAAM;IACR,CAAC;IAGD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RequestDocument, Variables } from 'graphql-request';
|
|
2
|
+
interface RequestResult<T> {
|
|
3
|
+
data?: T;
|
|
4
|
+
error?: Error;
|
|
5
|
+
}
|
|
6
|
+
export interface GraphQLRequestClient {
|
|
7
|
+
request: <T, V extends Variables = Variables>(document: RequestDocument, variables: V) => Promise<RequestResult<T>>;
|
|
8
|
+
}
|
|
9
|
+
export declare function createGraphQLRequestClient(token?: string): GraphQLRequestClient;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GraphQLClient } from 'graphql-request';
|
|
2
|
+
import { getApiBaseUrl } from './config.js';
|
|
3
|
+
export function createGraphQLRequestClient(token) {
|
|
4
|
+
const graphQLUrl = `${getApiBaseUrl()}/graphql`;
|
|
5
|
+
const client = new GraphQLClient(graphQLUrl, {
|
|
6
|
+
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
|
7
|
+
});
|
|
8
|
+
return {
|
|
9
|
+
request: async (document, variables) => {
|
|
10
|
+
try {
|
|
11
|
+
const data = await client.request(document, variables);
|
|
12
|
+
return { data };
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
return { error: error };
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=graphqlRequestClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphqlRequestClient.js","sourceRoot":"","sources":["../../src/utils/graphqlRequestClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAe3C,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,MAAM,UAAU,GAAG,GAAG,aAAa,EAAE,UAAU,CAAA;IAE/C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,UAAU,EAAE;QAC3C,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KAC3D,CAAC,CAAA;IAEF,OAAO;QACL,OAAO,EAAE,KAAK,EACZ,QAAyB,EACzB,SAAY,EACe,EAAE;YAC7B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAI,QAAQ,EAAE,SAAS,CAAC,CAAA;gBACzD,OAAO,EAAE,IAAI,EAAE,CAAA;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,CAAA;YAClC,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function parseJson(text: string): unknown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseJson.js","sourceRoot":"","sources":["../../src/utils/parseJson.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,qBAAqB,CAAA;AAMnD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACtE,CAAC"}
|
|
@@ -7,11 +7,11 @@ export interface AccountResult {
|
|
|
7
7
|
name: string;
|
|
8
8
|
key: string;
|
|
9
9
|
};
|
|
10
|
-
error?: string;
|
|
10
|
+
error?: Error | string;
|
|
11
11
|
}
|
|
12
12
|
export interface ResolveAccountResult {
|
|
13
13
|
accountId?: string;
|
|
14
|
-
error?: string;
|
|
14
|
+
error?: Error | string;
|
|
15
15
|
source?: 'flag' | 'config';
|
|
16
16
|
}
|
|
17
17
|
export declare function resolveAccountId(options: {
|
|
@@ -25,18 +25,14 @@ async function fetchAccount(accountId, apiToken, client, baseUrl) {
|
|
|
25
25
|
try {
|
|
26
26
|
const idResult = await graphqlClient.request(AccountByIdQueryDocument, { id: accountId });
|
|
27
27
|
if (idResult.error && !isNotFoundError(idResult.error)) {
|
|
28
|
-
return {
|
|
29
|
-
error: `Could not fetch account: ${idResult.error.message}`,
|
|
30
|
-
};
|
|
28
|
+
return { error: idResult.error };
|
|
31
29
|
}
|
|
32
30
|
if (idResult.data?.account) {
|
|
33
31
|
return { account: idResult.data.account };
|
|
34
32
|
}
|
|
35
33
|
const keyResult = await graphqlClient.request(AccountByKeyQueryDocument, { key: accountId });
|
|
36
34
|
if (keyResult.error && !isNotFoundError(keyResult.error)) {
|
|
37
|
-
return {
|
|
38
|
-
error: `Could not fetch account: ${keyResult.error.message}`,
|
|
39
|
-
};
|
|
35
|
+
return { error: keyResult.error };
|
|
40
36
|
}
|
|
41
37
|
if (keyResult.data?.accountByKey) {
|
|
42
38
|
return { account: keyResult.data.accountByKey };
|
|
@@ -46,9 +42,8 @@ async function fetchAccount(accountId, apiToken, client, baseUrl) {
|
|
|
46
42
|
};
|
|
47
43
|
}
|
|
48
44
|
catch (error) {
|
|
49
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
50
45
|
return {
|
|
51
|
-
error:
|
|
46
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
52
47
|
};
|
|
53
48
|
}
|
|
54
49
|
}
|
|
@@ -64,6 +59,9 @@ export async function resolveAccountId(options, apiToken, client, config) {
|
|
|
64
59
|
if (defaultAccount) {
|
|
65
60
|
const result = await fetchAccount(defaultAccount, apiToken, client);
|
|
66
61
|
if (result.error) {
|
|
62
|
+
if (result.error instanceof Error) {
|
|
63
|
+
return { error: result.error };
|
|
64
|
+
}
|
|
67
65
|
return {
|
|
68
66
|
error: `Default account '${defaultAccount}' not found. Update with: great config set account <id>, or unset with: great config unset account`,
|
|
69
67
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAccount.js","sourceRoot":"","sources":["../../src/utils/resolveAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAA;AAC/D,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMnD,MAAM,wBAAwB,GAAG,GAAG,CAAA;;;;;;;;CAQnC,CAAA;AAED,MAAM,yBAAyB,GAAG,GAAG,CAAA;;;;;;;;CAQpC,CAAA;AAWD,KAAK,UAAU,YAAY,CACzB,SAAiB,EACjB,QAAiB,EACjB,MAA6B,EAC7B,OAAgB;IAEhB,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAEtE,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,CAC1C,wBAAwB,EACxB,EAAE,EAAE,EAAE,SAAS,EAAE,CAClB,CAAA;QAGD,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO
|
|
1
|
+
{"version":3,"file":"resolveAccount.js","sourceRoot":"","sources":["../../src/utils/resolveAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import type { IntegrationDefinitionQuery } from '../generated/graphql.js';
|
|
3
|
+
export type FileSystem = Pick<typeof fs, 'writeFileSync' | 'mkdirSync' | 'existsSync'>;
|
|
4
|
+
type Integration = NonNullable<IntegrationDefinitionQuery['integration']>;
|
|
5
|
+
type ActiveVersion = NonNullable<Integration['active']>;
|
|
6
|
+
type IntegrationMeta = Pick<Integration, 'id' | 'name' | 'description' | 'status'>;
|
|
7
|
+
export default function saveProject(integration: IntegrationMeta, active: ActiveVersion, root?: string, fsImpl?: FileSystem): void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
const normalizeFolderName = (folder) => folder.replace(':', '_');
|
|
3
|
+
function createFolderIfMissing(root, fsImpl) {
|
|
4
|
+
const rootPath = root ? `${root}/` : '';
|
|
5
|
+
return (name) => {
|
|
6
|
+
const path = `${rootPath}${name}`;
|
|
7
|
+
if (!fsImpl.existsSync(path)) {
|
|
8
|
+
fsImpl.mkdirSync(path);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function writeJsonFile(root, fsImpl) {
|
|
13
|
+
const rootPath = root ? `${root}/` : '';
|
|
14
|
+
return (folder, name, content) => {
|
|
15
|
+
const path = folder
|
|
16
|
+
? `${rootPath}${folder}/${name}.json`
|
|
17
|
+
: `${rootPath}${name}.json`;
|
|
18
|
+
fsImpl.writeFileSync(path, JSON.stringify(content, undefined, 2));
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function transformElement(element) {
|
|
22
|
+
return {
|
|
23
|
+
__id: element.id,
|
|
24
|
+
__key: element.key,
|
|
25
|
+
__timestamp: element.createdAt,
|
|
26
|
+
...element.content,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export default function saveProject(integration, active, root, fsImpl = fs) {
|
|
30
|
+
const { id, name, description, status } = integration;
|
|
31
|
+
const { timestamp, schemas, services, mutations, auths, dictionaries, jobs, values, } = active;
|
|
32
|
+
const rootFolder = root ? normalizeFolderName(root) : undefined;
|
|
33
|
+
const createFolder = createFolderIfMissing(rootFolder, fsImpl);
|
|
34
|
+
const writeFile = writeJsonFile(rootFolder, fsImpl);
|
|
35
|
+
if (rootFolder) {
|
|
36
|
+
createFolderIfMissing(undefined, fsImpl)(rootFolder);
|
|
37
|
+
}
|
|
38
|
+
const index = {
|
|
39
|
+
__id: id,
|
|
40
|
+
__timestamp: timestamp,
|
|
41
|
+
name,
|
|
42
|
+
description,
|
|
43
|
+
status,
|
|
44
|
+
flags: undefined,
|
|
45
|
+
identConfig: undefined,
|
|
46
|
+
nonvalues: undefined,
|
|
47
|
+
queueService: undefined,
|
|
48
|
+
};
|
|
49
|
+
writeFile(null, 'index', index);
|
|
50
|
+
createFolder('schemas');
|
|
51
|
+
if (schemas) {
|
|
52
|
+
schemas.forEach((schema) => {
|
|
53
|
+
writeFile('schemas', schema.key, transformElement(schema));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
createFolder('services');
|
|
57
|
+
if (services) {
|
|
58
|
+
services.forEach((service) => {
|
|
59
|
+
writeFile('services', service.key, transformElement(service));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
createFolder('mutations');
|
|
63
|
+
if (mutations) {
|
|
64
|
+
mutations.forEach((mutation) => {
|
|
65
|
+
writeFile('mutations', mutation.key, transformElement(mutation));
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
createFolder('auths');
|
|
69
|
+
if (auths) {
|
|
70
|
+
auths.forEach((auth) => {
|
|
71
|
+
writeFile('auths', auth.key, transformElement(auth));
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
createFolder('dictionaries');
|
|
75
|
+
if (dictionaries) {
|
|
76
|
+
dictionaries.forEach((dictionary) => {
|
|
77
|
+
writeFile('dictionaries', dictionary.key, transformElement(dictionary));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
createFolder('jobs');
|
|
81
|
+
if (jobs) {
|
|
82
|
+
jobs.forEach((job) => {
|
|
83
|
+
writeFile('jobs', job.key, transformElement(job));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
createFolder('values');
|
|
87
|
+
if (values) {
|
|
88
|
+
values.forEach((value) => {
|
|
89
|
+
writeFile('values', value.key, transformElement(value));
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=saveProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saveProject.js","sourceRoot":"","sources":["../../src/utils/saveProject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SessionQuery } from '../generated/graphql.js';
|
|
2
|
+
import type { Client } from 'urql';
|
|
3
|
+
export declare const SessionQueryDocument: import("graphql/index.js").DocumentNode;
|
|
4
|
+
export declare function fetchUserSession(apiToken?: string, client?: Client): Promise<{
|
|
5
|
+
data?: SessionQuery;
|
|
6
|
+
error?: {
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import { createGraphQLClient } from './graphqlClient.js';
|
|
3
|
+
export const SessionQueryDocument = gql `
|
|
4
|
+
query Session {
|
|
5
|
+
session {
|
|
6
|
+
user {
|
|
7
|
+
id
|
|
8
|
+
name
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
export async function fetchUserSession(apiToken, client) {
|
|
14
|
+
const graphqlClient = client ?? createGraphQLClient(apiToken);
|
|
15
|
+
return await graphqlClient.query(SessionQueryDocument, {});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAGjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;CAStC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAiB,EACjB,MAAe;IAKf,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC7D,OAAO,MAAM,aAAa,CAAC,KAAK,CAAe,oBAAoB,EAAE,EAAE,CAAC,CAAA;AAC1E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "great",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "A CLI for Integreat",
|
|
5
5
|
"author": "Kjell-Morten Bratsberg Thorsen <kjellmorten@integreat.io>",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"great": "dist/index.js"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"test": "node --import tsx --no-deprecation --test --enable-source-maps --
|
|
22
|
-
"test:ci": "node --import tsx --no-deprecation --test --enable-source-maps --
|
|
21
|
+
"test": "node --import tsx --no-deprecation --test --enable-source-maps --test-reporter node-test-reporter \"src/**/*.test.ts\"",
|
|
22
|
+
"test:ci": "node --import tsx --no-deprecation --test --enable-source-maps --test-reporter spec \"src/**/*.test.ts\"",
|
|
23
23
|
"test:watch": "npm run dev",
|
|
24
24
|
"dev": "node --import tsx --no-deprecation --test --enable-source-maps --test-reporter node-test-reporter --watch \"src/**/*.test.ts\" || exit 0",
|
|
25
25
|
"build": "tsc",
|
|
@@ -39,31 +39,32 @@
|
|
|
39
39
|
},
|
|
40
40
|
"homepage": "https://github.com/integreat-io/great#readme",
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@inquirer/prompts": "^8.2
|
|
42
|
+
"@inquirer/prompts": "^8.3.2",
|
|
43
43
|
"chalk": "^5.6.2",
|
|
44
44
|
"change-case": "^5.4.4",
|
|
45
|
-
"clipboardy": "^5.3.
|
|
45
|
+
"clipboardy": "^5.3.1",
|
|
46
46
|
"columnify": "^1.6.0",
|
|
47
47
|
"commander": "^14.0.3",
|
|
48
48
|
"conf": "^15.1.0",
|
|
49
|
-
"graphql": "^16.
|
|
49
|
+
"graphql": "^16.13.2",
|
|
50
50
|
"graphql-request": "^7.4.0",
|
|
51
51
|
"graphql-tag": "^2.12.6",
|
|
52
52
|
"ky": "^1.14.3",
|
|
53
53
|
"nanospinner": "^1.2.2",
|
|
54
|
-
"open": "^11.0.0"
|
|
54
|
+
"open": "^11.0.0",
|
|
55
|
+
"strip-json-comments": "^5.0.3"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
|
-
"@graphql-codegen/cli": "^6.
|
|
58
|
-
"@graphql-codegen/typescript": "^5.0.
|
|
59
|
-
"@graphql-codegen/typescript-operations": "^5.0.
|
|
60
|
-
"@graphql-codegen/typescript-urql": "^
|
|
58
|
+
"@graphql-codegen/cli": "^6.2.1",
|
|
59
|
+
"@graphql-codegen/typescript": "^5.0.9",
|
|
60
|
+
"@graphql-codegen/typescript-operations": "^5.0.9",
|
|
61
|
+
"@graphql-codegen/typescript-urql": "^5.0.0",
|
|
61
62
|
"@integreat/ts-dev-setup": "^8.2.0",
|
|
62
63
|
"@types/columnify": "^1.5.4",
|
|
63
|
-
"@types/node": "^25.
|
|
64
|
+
"@types/node": "^25.5.0",
|
|
64
65
|
"@types/sinon": "^21.0.0",
|
|
65
|
-
"integreat": "^1.6.
|
|
66
|
-
"sinon": "^21.0.
|
|
67
|
-
"strip-ansi": "^7.
|
|
66
|
+
"integreat": "^1.6.5",
|
|
67
|
+
"sinon": "^21.0.3",
|
|
68
|
+
"strip-ansi": "^7.2.0"
|
|
68
69
|
}
|
|
69
70
|
}
|