great 0.3.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -15
- package/dist/accounts/create.d.ts +4 -0
- package/dist/accounts/create.js +42 -0
- package/dist/accounts/create.js.map +1 -0
- package/dist/accounts/index.d.ts +5 -2
- package/dist/accounts/index.js +48 -9
- package/dist/accounts/index.js.map +1 -1
- package/dist/clone/index.d.ts +8 -0
- package/dist/clone/index.js +61 -0
- package/dist/clone/index.js.map +1 -0
- package/dist/config/index.d.ts +8 -0
- package/dist/config/index.js +111 -0
- package/dist/config/index.js.map +1 -0
- package/dist/create/index.d.ts +3 -0
- package/dist/create/index.js +7 -0
- package/dist/create/index.js.map +1 -0
- package/dist/deploy/index.d.ts +11 -0
- package/dist/deploy/index.js +132 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/explode/index.d.ts +5 -0
- package/dist/explode/index.js +32 -0
- package/dist/explode/index.js.map +1 -0
- package/dist/explode/transform.d.ts +30 -0
- package/dist/explode/transform.js +100 -0
- package/dist/explode/transform.js.map +1 -0
- package/dist/explode/unescapeMongo.d.ts +1 -0
- package/dist/explode/unescapeMongo.js +15 -0
- package/dist/explode/unescapeMongo.js.map +1 -0
- package/dist/generated/graphql.d.ts +1784 -0
- package/dist/generated/graphql.js +73 -0
- package/dist/generated/graphql.js.map +1 -0
- package/dist/index.js +29 -4
- package/dist/index.js.map +1 -1
- package/dist/init/index.d.ts +5 -0
- package/dist/init/index.js +46 -0
- package/dist/init/index.js.map +1 -0
- package/dist/integrations/create.d.ts +6 -0
- package/dist/integrations/create.js +70 -0
- package/dist/integrations/create.js.map +1 -0
- package/dist/{projects/describe.d.ts → integrations/index.d.ts} +0 -1
- package/dist/integrations/index.js +23 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/list.d.ts +7 -0
- package/dist/integrations/list.js +103 -0
- package/dist/integrations/list.js.map +1 -0
- package/dist/login/index.d.ts +6 -0
- package/dist/login/index.js +25 -0
- package/dist/login/index.js.map +1 -0
- package/dist/logout/index.d.ts +6 -0
- package/dist/logout/index.js +11 -0
- package/dist/logout/index.js.map +1 -0
- package/dist/now/index.d.ts +3 -1
- package/dist/now/index.js +11 -2
- package/dist/now/index.js.map +1 -1
- package/dist/pull/index.d.ts +5 -1
- package/dist/pull/index.js +50 -19
- package/dist/pull/index.js.map +1 -1
- package/dist/push/index.d.ts +11 -0
- package/dist/push/index.js +481 -0
- package/dist/push/index.js.map +1 -0
- package/dist/repl/dispatch.d.ts +8 -0
- package/dist/repl/dispatch.js +75 -0
- package/dist/repl/dispatch.js.map +1 -0
- package/dist/repl/help.d.ts +2 -0
- package/dist/repl/help.js +14 -0
- package/dist/repl/help.js.map +1 -0
- package/dist/repl/index.d.ts +10 -0
- package/dist/repl/index.js +92 -0
- package/dist/repl/index.js.map +1 -0
- package/dist/run/index.d.ts +33 -1
- package/dist/run/index.js +109 -40
- package/dist/run/index.js.map +1 -1
- package/dist/status/index.d.ts +10 -0
- package/dist/status/index.js +122 -0
- package/dist/status/index.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/authServer.d.ts +4 -0
- package/dist/utils/authServer.js +49 -0
- package/dist/utils/authServer.js.map +1 -0
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.js +41 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/createIntegrationFromFile.d.ts +22 -0
- package/dist/utils/createIntegrationFromFile.js +116 -0
- package/dist/utils/createIntegrationFromFile.js.map +1 -0
- package/dist/utils/determineNameAndKey.d.ts +4 -0
- package/dist/utils/determineNameAndKey.js +8 -0
- package/dist/utils/determineNameAndKey.js.map +1 -0
- package/dist/utils/dispatch.d.ts +3 -0
- package/dist/utils/dispatch.js +37 -0
- package/dist/utils/dispatch.js.map +1 -0
- package/dist/utils/fetchLocal.d.ts +3 -0
- package/dist/utils/fetchLocal.js +21 -0
- package/dist/utils/fetchLocal.js.map +1 -0
- package/dist/utils/fetchSession.d.ts +7 -0
- package/dist/utils/fetchSession.js +34 -0
- package/dist/utils/fetchSession.js.map +1 -0
- package/dist/utils/graphqlClient.d.ts +10 -0
- package/dist/utils/graphqlClient.js +24 -0
- package/dist/utils/graphqlClient.js.map +1 -0
- package/dist/utils/graphqlError.d.ts +2 -0
- package/dist/utils/graphqlError.js +20 -0
- package/dist/utils/graphqlError.js.map +1 -0
- package/dist/utils/hashContent.d.ts +1 -0
- package/dist/utils/hashContent.js +7 -0
- package/dist/utils/hashContent.js.map +1 -0
- package/dist/utils/jwt.d.ts +6 -0
- package/dist/utils/jwt.js +24 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/promptForValue.d.ts +9 -0
- package/dist/utils/promptForValue.js +24 -0
- package/dist/utils/promptForValue.js.map +1 -0
- package/dist/utils/resolveAccount.d.ts +19 -0
- package/dist/utils/resolveAccount.js +75 -0
- package/dist/utils/resolveAccount.js.map +1 -0
- package/dist/utils/resolveElement.d.ts +20 -0
- package/dist/utils/resolveElement.js +67 -0
- package/dist/utils/resolveElement.js.map +1 -0
- package/dist/utils/resolveIntegration.d.ts +9 -0
- package/dist/utils/resolveIntegration.js +71 -0
- package/dist/utils/resolveIntegration.js.map +1 -0
- package/dist/utils/saveIntegration.d.ts +16 -0
- package/dist/utils/saveIntegration.js +117 -0
- package/dist/utils/saveIntegration.js.map +1 -0
- package/dist/utils/token.d.ts +6 -0
- package/dist/utils/token.js +31 -0
- package/dist/utils/token.js.map +1 -0
- package/dist/utils/valueTypes.d.ts +4 -0
- package/dist/utils/valueTypes.js +43 -0
- package/dist/utils/valueTypes.js.map +1 -0
- package/dist/value/get.d.ts +8 -0
- package/dist/value/get.js +50 -0
- package/dist/value/get.js.map +1 -0
- package/dist/{projects → value}/index.d.ts +1 -2
- package/dist/value/index.js +26 -0
- package/dist/value/index.js.map +1 -0
- package/dist/value/list.d.ts +8 -0
- package/dist/value/list.js +122 -0
- package/dist/value/list.js.map +1 -0
- package/dist/value/set.d.ts +12 -0
- package/dist/value/set.js +103 -0
- package/dist/value/set.js.map +1 -0
- package/dist/whoami/fetchSession.d.ts +9 -0
- package/dist/whoami/fetchSession.js +19 -0
- package/dist/whoami/fetchSession.js.map +1 -0
- package/dist/whoami/index.d.ts +9 -1
- package/dist/whoami/index.js +18 -10
- package/dist/whoami/index.js.map +1 -1
- package/package.json +29 -13
- package/.codeclimate.yml +0 -7
- package/.editorconfig +0 -11
- package/.nvmrc +0 -1
- package/.prettierrc.json +0 -6
- package/dist/now/index.test.d.ts +0 -1
- package/dist/now/index.test.js +0 -18
- package/dist/now/index.test.js.map +0 -1
- package/dist/projects/describe.js +0 -44
- package/dist/projects/describe.js.map +0 -1
- package/dist/projects/index.js +0 -39
- package/dist/projects/index.js.map +0 -1
- package/dist/utils/callApi.d.ts +0 -5
- package/dist/utils/callApi.js +0 -20
- package/dist/utils/callApi.js.map +0 -1
- package/dist/utils/fetchLocalProject.d.ts +0 -1
- package/dist/utils/fetchLocalProject.js +0 -12
- package/dist/utils/fetchLocalProject.js.map +0 -1
- package/dist/utils/saveProject.d.ts +0 -2
- package/dist/utils/saveProject.js +0 -68
- package/dist/utils/saveProject.js.map +0 -1
- package/eslint.config.js +0 -27
- package/src/accounts/index.ts +0 -41
- package/src/index.ts +0 -22
- package/src/now/index.test.ts +0 -31
- package/src/now/index.ts +0 -15
- package/src/projects/describe.ts +0 -80
- package/src/projects/index.ts +0 -61
- package/src/pull/index.ts +0 -45
- package/src/run/index.ts +0 -81
- package/src/utils/callApi.ts +0 -29
- package/src/utils/fetchLocalProject.ts +0 -12
- package/src/utils/saveProject.ts +0 -106
- package/src/whoami/index.ts +0 -32
- package/tsconfig.json +0 -28
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import { createGraphQLClient, } from './graphqlClient.js';
|
|
3
|
+
import { isNotFoundError } from './graphqlError.js';
|
|
4
|
+
export const IntegrationQueryDocument = gql `
|
|
5
|
+
query Integration($id: ID!) {
|
|
6
|
+
integration(id: $id) {
|
|
7
|
+
id
|
|
8
|
+
name
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
`;
|
|
12
|
+
export const IntegrationByKeyQueryDocument = gql `
|
|
13
|
+
query IntegrationByKey($accountId: ID!, $key: ID!) {
|
|
14
|
+
integrationByKey(accountId: $accountId, key: $key) {
|
|
15
|
+
id
|
|
16
|
+
name
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
export async function resolveIntegration(identifier, accountId, apiToken, client, baseUrl) {
|
|
21
|
+
const graphqlClient = client ?? createGraphQLClient(apiToken, baseUrl);
|
|
22
|
+
try {
|
|
23
|
+
const idResult = await graphqlClient.request(IntegrationQueryDocument, { id: identifier });
|
|
24
|
+
if (idResult.error && !isNotFoundError(idResult.error)) {
|
|
25
|
+
const errorMessage = idResult.error.message || String(idResult.error);
|
|
26
|
+
return {
|
|
27
|
+
id: '',
|
|
28
|
+
error: errorMessage,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (idResult.data?.integration) {
|
|
32
|
+
return {
|
|
33
|
+
id: idResult.data.integration.id,
|
|
34
|
+
name: idResult.data.integration.name,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (accountId) {
|
|
38
|
+
const keyResult = await graphqlClient.request(IntegrationByKeyQueryDocument, { accountId, key: identifier });
|
|
39
|
+
if (keyResult.error && !isNotFoundError(keyResult.error)) {
|
|
40
|
+
const errorMessage = keyResult.error.message || String(keyResult.error);
|
|
41
|
+
return {
|
|
42
|
+
id: '',
|
|
43
|
+
error: errorMessage,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const integration = keyResult.data?.integrationByKey;
|
|
47
|
+
if (!integration) {
|
|
48
|
+
return {
|
|
49
|
+
id: '',
|
|
50
|
+
error: `Integration with key "${identifier}" not found in account "${accountId}"`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
id: integration.id,
|
|
55
|
+
name: integration.name,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
id: '',
|
|
60
|
+
error: `Integration with id \`${identifier}\` not found`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
65
|
+
return {
|
|
66
|
+
id: '',
|
|
67
|
+
error: `Could not fetch integration: ${errorMessage}`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=resolveIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveIntegration.js","sourceRoot":"","sources":["../../src/utils/resolveIntegration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;;;;;;;CAO1C,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAA;;;;;;;CAO/C,CAAA;AAQD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,SAA6B,EAC7B,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,UAAU,EAAE,CACnB,CAAA;QAGD,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACrE,OAAO;gBACL,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,YAAY;aACpB,CAAA;QACH,CAAC;QAGD,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/B,OAAO;gBACL,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;aACrC,CAAA;QACH,CAAC;QAGD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAC3C,6BAA6B,EAC7B,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,CAC/B,CAAA;YAGD,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBACvE,OAAO;oBACL,EAAE,EAAE,EAAE;oBACN,KAAK,EAAE,YAAY;iBACpB,CAAA;YACH,CAAC;YAED,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAA;YACpD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO;oBACL,EAAE,EAAE,EAAE;oBACN,KAAK,EAAE,yBAAyB,UAAU,2BAA2B,SAAS,GAAG;iBAClF,CAAA;YACH,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB,CAAA;QACH,CAAC;QAGD,OAAO;YACL,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,yBAAyB,UAAU,cAAc;SACzD,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,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,gCAAgC,YAAY,EAAE;SACtD,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import type { IntegrationDefinitionQuery } from '../generated/graphql.js';
|
|
3
|
+
type Integration = NonNullable<IntegrationDefinitionQuery['integration']>;
|
|
4
|
+
export type IntegrationDefinitions = Omit<NonNullable<Integration['latest']>, 'elements'> & {
|
|
5
|
+
elements: (Omit<NonNullable<Integration['latest']>['elements'][0], 'content' | 'id' | 'name'> & {
|
|
6
|
+
id?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
content?: Partial<NonNullable<Integration['latest']>['elements'][0]['content']>;
|
|
9
|
+
})[];
|
|
10
|
+
};
|
|
11
|
+
export type IntegrationMeta = Pick<Integration, 'key' | 'name' | 'description' | 'status'> & {
|
|
12
|
+
id?: string;
|
|
13
|
+
account?: Integration['account'];
|
|
14
|
+
};
|
|
15
|
+
export default function saveIntegration(integration: IntegrationMeta, definitions: IntegrationDefinitions, root?: string, fsImpl?: typeof fs): void;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
try {
|
|
19
|
+
fsImpl.writeFileSync(path, JSON.stringify(content, undefined, 2));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error(`Error writing file ${path}:`, error);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const transformElement = ({ id, key, content, }) => ({
|
|
27
|
+
...(id ? { __id: id } : {}),
|
|
28
|
+
__key: key,
|
|
29
|
+
...(content?.timestamp ? { __timestamp: content.timestamp } : {}),
|
|
30
|
+
...content?.data,
|
|
31
|
+
});
|
|
32
|
+
const transformAccount = ({ id, key, name }) => ({
|
|
33
|
+
__id: id,
|
|
34
|
+
__key: key,
|
|
35
|
+
name,
|
|
36
|
+
});
|
|
37
|
+
const typeToFolder = {
|
|
38
|
+
Schema: 'schemas',
|
|
39
|
+
Service: 'services',
|
|
40
|
+
Auth: 'auths',
|
|
41
|
+
SchemaMutation: 'mutations',
|
|
42
|
+
Dictionary: 'dictionaries',
|
|
43
|
+
Job: 'jobs',
|
|
44
|
+
Value: 'values',
|
|
45
|
+
Flow: 'flows',
|
|
46
|
+
RetryRule: 'retryRules',
|
|
47
|
+
};
|
|
48
|
+
function deleteRemovedFiles(rootFolder, elements, fsImpl) {
|
|
49
|
+
const rootPath = rootFolder ? `${rootFolder}/` : '';
|
|
50
|
+
Object.values(typeToFolder).forEach((folder) => {
|
|
51
|
+
const folderPath = `${rootPath}${folder}`;
|
|
52
|
+
if (!fsImpl.existsSync(folderPath)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const files = fsImpl.readdirSync(folderPath);
|
|
56
|
+
files.forEach((file) => {
|
|
57
|
+
if (!file.endsWith('.json')) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const fileKey = file.replace('.json', '');
|
|
61
|
+
const existsInApi = elements?.some((element) => typeToFolder[element.__typename] === folder &&
|
|
62
|
+
element.key === fileKey);
|
|
63
|
+
if (existsInApi) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const filePath = `${folderPath}/${file}`;
|
|
67
|
+
try {
|
|
68
|
+
const content = fsImpl.readFileSync(filePath, 'utf8');
|
|
69
|
+
const data = JSON.parse(content);
|
|
70
|
+
if (data.__id) {
|
|
71
|
+
fsImpl.unlinkSync(filePath);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error(`Error reading file ${filePath}:`, error);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export default function saveIntegration(integration, definitions, root, fsImpl = fs) {
|
|
81
|
+
const { id, key, name, description, status, account } = integration;
|
|
82
|
+
const { timestamp, elements } = definitions;
|
|
83
|
+
const rootFolder = root ? normalizeFolderName(root) : undefined;
|
|
84
|
+
const createFolder = createFolderIfMissing(rootFolder, fsImpl);
|
|
85
|
+
const writeFile = writeJsonFile(rootFolder, fsImpl);
|
|
86
|
+
if (rootFolder) {
|
|
87
|
+
createFolderIfMissing(undefined, fsImpl)(rootFolder);
|
|
88
|
+
}
|
|
89
|
+
const config = elements?.find((el) => el.__typename === 'ConfigElement' && el.key === 'config');
|
|
90
|
+
const index = {
|
|
91
|
+
...(id ? { __id: id } : {}),
|
|
92
|
+
__key: key,
|
|
93
|
+
...(timestamp ? { __timestamp: timestamp } : {}),
|
|
94
|
+
name,
|
|
95
|
+
description,
|
|
96
|
+
status,
|
|
97
|
+
account: account ? transformAccount(account) : undefined,
|
|
98
|
+
flags: config?.content?.data,
|
|
99
|
+
identConfig: undefined,
|
|
100
|
+
nonvalues: undefined,
|
|
101
|
+
queueService: undefined,
|
|
102
|
+
};
|
|
103
|
+
writeFile(null, 'integration', index);
|
|
104
|
+
Object.values(typeToFolder).forEach((folder) => {
|
|
105
|
+
createFolder(folder);
|
|
106
|
+
});
|
|
107
|
+
deleteRemovedFiles(rootFolder, elements, fsImpl);
|
|
108
|
+
if (elements) {
|
|
109
|
+
elements.forEach((element) => {
|
|
110
|
+
const folder = typeToFolder[element.__typename];
|
|
111
|
+
if (folder) {
|
|
112
|
+
writeFile(folder, element.key, transformElement(element));
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=saveIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saveIntegration.js","sourceRoot":"","sources":["../../src/utils/saveIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
import type { ConfigSchema } from './config.js';
|
|
3
|
+
export declare function isTokenExpired(expiresAt?: number): boolean;
|
|
4
|
+
export declare function getStoredToken(config?: Conf<ConfigSchema>): string | undefined;
|
|
5
|
+
export declare function saveToken(token: string, expiresAt?: number, config?: Conf<ConfigSchema>): void;
|
|
6
|
+
export declare function clearToken(config?: Conf<ConfigSchema>): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getConfigValue, setConfigValue, deleteConfigValue } from './config.js';
|
|
2
|
+
export function isTokenExpired(expiresAt) {
|
|
3
|
+
if (!expiresAt) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
return Date.now() >= expiresAt;
|
|
7
|
+
}
|
|
8
|
+
export function getStoredToken(config) {
|
|
9
|
+
const token = getConfigValue('token', config);
|
|
10
|
+
const expiresAt = getConfigValue('expiresAt', config);
|
|
11
|
+
if (!token) {
|
|
12
|
+
return process.env.GREAT_TOKEN;
|
|
13
|
+
}
|
|
14
|
+
if (isTokenExpired(expiresAt)) {
|
|
15
|
+
deleteConfigValue('token', config);
|
|
16
|
+
deleteConfigValue('expiresAt', config);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
return token;
|
|
20
|
+
}
|
|
21
|
+
export function saveToken(token, expiresAt, config) {
|
|
22
|
+
setConfigValue('token', token, config);
|
|
23
|
+
if (expiresAt !== undefined) {
|
|
24
|
+
setConfigValue('expiresAt', expiresAt, config);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function clearToken(config) {
|
|
28
|
+
deleteConfigValue('token', config);
|
|
29
|
+
deleteConfigValue('expiresAt', config);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAS/E,MAAM,UAAU,cAAc,CAAC,SAAkB;IAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,SAAS,CAAA;AAChC,CAAC;AAYD,MAAM,UAAU,cAAc,CAC5B,MAA2B;IAE3B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAErD,IAAI,CAAC,KAAK,EAAE,CAAC;QAEX,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAChC,CAAC;IAED,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAE9B,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAClC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACtC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AASD,MAAM,UAAU,SAAS,CACvB,KAAa,EACb,SAAkB,EAClB,MAA2B;IAE3B,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAChD,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,UAAU,CAAC,MAA2B;IACpD,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAClC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const VALID_VALUE_TYPES: readonly ["string", "secret", "number", "boolean", "date"];
|
|
2
|
+
export type ValueElementType = (typeof VALID_VALUE_TYPES)[number];
|
|
3
|
+
export declare function isValidValueElementType(type: unknown): type is ValueElementType;
|
|
4
|
+
export declare function castValue(valueStr: string, type: ValueElementType): string | number | boolean;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const VALID_VALUE_TYPES = [
|
|
2
|
+
'string',
|
|
3
|
+
'secret',
|
|
4
|
+
'number',
|
|
5
|
+
'boolean',
|
|
6
|
+
'date',
|
|
7
|
+
];
|
|
8
|
+
export function isValidValueElementType(type) {
|
|
9
|
+
return (typeof type === 'string' &&
|
|
10
|
+
VALID_VALUE_TYPES.includes(type));
|
|
11
|
+
}
|
|
12
|
+
export function castValue(valueStr, type) {
|
|
13
|
+
switch (type) {
|
|
14
|
+
case 'string':
|
|
15
|
+
case 'secret':
|
|
16
|
+
return valueStr;
|
|
17
|
+
case 'number': {
|
|
18
|
+
const num = Number(valueStr);
|
|
19
|
+
if (isNaN(num)) {
|
|
20
|
+
throw new Error(`Cannot cast "${valueStr}" to number`);
|
|
21
|
+
}
|
|
22
|
+
return num;
|
|
23
|
+
}
|
|
24
|
+
case 'boolean': {
|
|
25
|
+
const lower = valueStr.toLowerCase();
|
|
26
|
+
if (lower === 'true' || lower === '1')
|
|
27
|
+
return true;
|
|
28
|
+
if (lower === 'false' || lower === '0')
|
|
29
|
+
return false;
|
|
30
|
+
throw new Error(`Cannot cast "${valueStr}" to boolean. Use "true" or "false"`);
|
|
31
|
+
}
|
|
32
|
+
case 'date': {
|
|
33
|
+
const isoPattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d\d\d)?Z?$/;
|
|
34
|
+
if (!isoPattern.test(valueStr)) {
|
|
35
|
+
throw new Error(`Date must be in ISO 8601 format (e.g., "2024-01-15T10:00:00Z")`);
|
|
36
|
+
}
|
|
37
|
+
return valueStr;
|
|
38
|
+
}
|
|
39
|
+
default:
|
|
40
|
+
throw new Error(`Unknown value type: ${type}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=valueTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueTypes.js","sourceRoot":"","sources":["../../src/utils/valueTypes.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;CACE,CAAA;AAOV,MAAM,UAAU,uBAAuB,CACrC,IAAa;IAEb,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,iBAAiB,CAAC,QAAQ,CAAC,IAAwB,CAAC,CACrD,CAAA;AACH,CAAC;AAKD,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,IAAsB;IAEtB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QAEjB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,QAAQ,aAAa,CAAC,CAAA;YACxD,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;YACpC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAA;YAClD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAA;YACpD,MAAM,IAAI,KAAK,CACb,gBAAgB,QAAQ,qCAAqC,CAC9D,CAAA;QACH,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YAEZ,MAAM,UAAU,GAAG,oDAAoD,CAAA;YACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAA;YACH,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import Conf from 'conf';
|
|
3
|
+
import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
|
|
4
|
+
import { type ConfigSchema } from '../utils/config.js';
|
|
5
|
+
export declare const getValueAction: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, config?: Conf<ConfigSchema>, fsImpl?: typeof fs) => (element: string, options?: {
|
|
6
|
+
integration?: string;
|
|
7
|
+
account?: string;
|
|
8
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { createGraphQLClient, } from '../utils/graphqlClient.js';
|
|
4
|
+
import { getApiBaseUrl } from '../utils/config.js';
|
|
5
|
+
import { resolveAccountId } from '../utils/resolveAccount.js';
|
|
6
|
+
import { resolveElement } from '../utils/resolveElement.js';
|
|
7
|
+
import { fetchIdFromFile } from '../utils/fetchLocal.js';
|
|
8
|
+
import { ElementType } from '../generated/graphql.js';
|
|
9
|
+
export const getValueAction = (log, apiToken, client, config, fsImpl = fs) => async (element, options) => {
|
|
10
|
+
if (!apiToken) {
|
|
11
|
+
log(chalk.red('Authentication required. Run `great login` first.'));
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const graphQLClient = client ?? createGraphQLClient(apiToken, getApiBaseUrl(config));
|
|
15
|
+
let integrationIdentifier = options?.integration;
|
|
16
|
+
if (!integrationIdentifier) {
|
|
17
|
+
integrationIdentifier = fetchIdFromFile(fsImpl);
|
|
18
|
+
}
|
|
19
|
+
let accountId;
|
|
20
|
+
if (integrationIdentifier) {
|
|
21
|
+
const { accountId: resolvedAccountId, error } = await resolveAccountId(options ?? {}, apiToken, graphQLClient, config);
|
|
22
|
+
if (error && options?.integration) {
|
|
23
|
+
log(chalk.red(error));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
accountId = resolvedAccountId;
|
|
27
|
+
}
|
|
28
|
+
const resolvedElement = await resolveElement({
|
|
29
|
+
identifier: element,
|
|
30
|
+
type: ElementType.Value,
|
|
31
|
+
integrationIdentifier,
|
|
32
|
+
accountId,
|
|
33
|
+
apiToken,
|
|
34
|
+
client: graphQLClient,
|
|
35
|
+
log,
|
|
36
|
+
});
|
|
37
|
+
if (!resolvedElement) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (resolvedElement.__typename !== 'Value') {
|
|
41
|
+
log(chalk.red(`Element "${element}" is not a Value element (type: ${resolvedElement.__typename})`));
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (resolvedElement.value === null || resolvedElement.value === undefined) {
|
|
45
|
+
log(chalk.yellow(`Value element "${resolvedElement.key}" has no value set`));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
log(resolvedElement.value.toString());
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/value/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EACL,mBAAmB,GAEpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAKrD,MAAM,CAAC,MAAM,cAAc,GACzB,CACE,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAA2B,EAC3B,MAAM,GAAG,EAAE,EACX,EAAE,CACJ,KAAK,EACH,OAAe,EACf,OAAoD,EACpD,EAAE;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;QACnE,OAAM;IACR,CAAC;IAGD,MAAM,aAAa,GACjB,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAGhE,IAAI,qBAAqB,GAAG,OAAO,EAAE,WAAW,CAAA;IAChD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAGD,IAAI,SAA6B,CAAA;IACjC,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CACpE,OAAO,IAAI,EAAE,EACb,QAAQ,EACR,aAAa,EACb,MAAM,CACP,CAAA;QAID,IAAI,KAAK,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YACrB,OAAM;QACR,CAAC;QAED,SAAS,GAAG,iBAAiB,CAAA;IAC/B,CAAC;IAGD,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC;QAC3C,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,WAAW,CAAC,KAAK;QACvB,qBAAqB;QACrB,SAAS;QACT,QAAQ;QACR,MAAM,EAAE,aAAa;QACrB,GAAG;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAM;IACR,CAAC;IAGD,IAAI,eAAe,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3C,GAAG,CACD,KAAK,CAAC,GAAG,CACP,YAAY,OAAO,mCAAmC,eAAe,CAAC,UAAU,GAAG,CACpF,CACF,CAAA;QACD,OAAM;IACR,CAAC;IAGD,IAAI,eAAe,CAAC,KAAK,KAAK,IAAI,IAAI,eAAe,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1E,GAAG,CACD,KAAK,CAAC,MAAM,CAAC,kBAAkB,eAAe,CAAC,GAAG,oBAAoB,CAAC,CACxE,CAAA;QACD,OAAM;IACR,CAAC;IAGD,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;AACvC,CAAC,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
|
|
3
|
-
declare const _default: (program: Command, apiToken?: string) => void;
|
|
2
|
+
declare const _default: (program: Command, apiToken?: string) => Command;
|
|
4
3
|
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { setValueAction } from './set.js';
|
|
2
|
+
import { getValueAction } from './get.js';
|
|
3
|
+
import { listValuesAction } from './list.js';
|
|
4
|
+
export default (program, apiToken) => {
|
|
5
|
+
const value = program.command('value').description('Manage value elements');
|
|
6
|
+
value
|
|
7
|
+
.command('list')
|
|
8
|
+
.description('List all value elements in an integration')
|
|
9
|
+
.option('-i, --integration <id>', 'integration id or key (or use local integration.json)')
|
|
10
|
+
.option('-a, --account <id>', 'account id or key (uses default from config if not provided)')
|
|
11
|
+
.action(listValuesAction(console.log, apiToken));
|
|
12
|
+
value
|
|
13
|
+
.command('set <element> <value>')
|
|
14
|
+
.description('Set the value of a value element')
|
|
15
|
+
.option('-i, --integration <id>', 'integration id or key (required when using element key)')
|
|
16
|
+
.option('-a, --account <id>', 'account id or key (uses default from config if not provided)')
|
|
17
|
+
.action(setValueAction(console.log, apiToken));
|
|
18
|
+
value
|
|
19
|
+
.command('get <element>')
|
|
20
|
+
.description('Get the value of a value element')
|
|
21
|
+
.option('-i, --integration <id>', 'integration id or key (required when using element key)')
|
|
22
|
+
.option('-a, --account <id>', 'account id or key (uses default from config if not provided)')
|
|
23
|
+
.action(getValueAction(console.log, apiToken));
|
|
24
|
+
return value;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/value/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAK5C,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAA;IAE3E,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CACL,wBAAwB,EACxB,uDAAuD,CACxD;SACA,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAElD,KAAK;SACF,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CACL,wBAAwB,EACxB,yDAAyD,CAC1D;SACA,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEhD,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CACL,wBAAwB,EACxB,yDAAyD,CAC1D;SACA,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEhD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import Conf from 'conf';
|
|
3
|
+
import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
|
|
4
|
+
import { type ConfigSchema } from '../utils/config.js';
|
|
5
|
+
export declare const listValuesAction: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, config?: Conf<ConfigSchema>, fsImpl?: typeof fs) => (options?: {
|
|
6
|
+
integration?: string;
|
|
7
|
+
account?: string;
|
|
8
|
+
}) => Promise<void>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import columnify from 'columnify';
|
|
4
|
+
import { gql } from 'graphql-tag';
|
|
5
|
+
import { createGraphQLClient, } from '../utils/graphqlClient.js';
|
|
6
|
+
import { handleGraphQLError } from '../utils/graphqlError.js';
|
|
7
|
+
import { getApiBaseUrl } from '../utils/config.js';
|
|
8
|
+
import { resolveAccountId } from '../utils/resolveAccount.js';
|
|
9
|
+
import { resolveIntegration } from '../utils/resolveIntegration.js';
|
|
10
|
+
import { fetchIdFromFile } from '../utils/fetchLocal.js';
|
|
11
|
+
const ValuesListQueryDocument = gql `
|
|
12
|
+
query ValuesList($id: ID!) {
|
|
13
|
+
integration(id: $id) {
|
|
14
|
+
id
|
|
15
|
+
key
|
|
16
|
+
name
|
|
17
|
+
latest {
|
|
18
|
+
elements(type: [value]) {
|
|
19
|
+
__typename
|
|
20
|
+
... on Value {
|
|
21
|
+
id
|
|
22
|
+
key
|
|
23
|
+
name
|
|
24
|
+
value
|
|
25
|
+
content {
|
|
26
|
+
data
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
function detectType(content) {
|
|
35
|
+
const type = content?.data?.type;
|
|
36
|
+
if (!type || typeof type !== 'string') {
|
|
37
|
+
return 'unknown';
|
|
38
|
+
}
|
|
39
|
+
return type;
|
|
40
|
+
}
|
|
41
|
+
function formatValue(value, content) {
|
|
42
|
+
if (content?.data?.type === 'secret')
|
|
43
|
+
return '<secret>';
|
|
44
|
+
if (value === null || value === undefined)
|
|
45
|
+
return '';
|
|
46
|
+
const stringValue = String(value);
|
|
47
|
+
const maxLength = 50;
|
|
48
|
+
if (stringValue.length > maxLength) {
|
|
49
|
+
return stringValue.substring(0, maxLength - 1) + '…';
|
|
50
|
+
}
|
|
51
|
+
return stringValue;
|
|
52
|
+
}
|
|
53
|
+
export const listValuesAction = (log, apiToken, client, config, fsImpl = fs) => async (options) => {
|
|
54
|
+
if (!apiToken) {
|
|
55
|
+
log(chalk.red('Authentication required. Run `great login` first.'));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const graphQLClient = client ?? createGraphQLClient(apiToken, getApiBaseUrl(config));
|
|
59
|
+
let integrationIdentifier = options?.integration;
|
|
60
|
+
if (!integrationIdentifier) {
|
|
61
|
+
integrationIdentifier = fetchIdFromFile(fsImpl);
|
|
62
|
+
}
|
|
63
|
+
if (!integrationIdentifier) {
|
|
64
|
+
log(chalk.red('Integration required. Use -i flag or run from integration directory.'));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const { accountId, error } = await resolveAccountId(options ?? {}, apiToken, graphQLClient, config);
|
|
68
|
+
if (error && options?.integration) {
|
|
69
|
+
log(chalk.red(error));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const integrationResult = await resolveIntegration(integrationIdentifier, accountId, apiToken, graphQLClient, getApiBaseUrl(config));
|
|
73
|
+
if (integrationResult.error || !integrationResult.id) {
|
|
74
|
+
log(chalk.red(integrationResult.error || 'Integration not found'));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const result = await graphQLClient.request(ValuesListQueryDocument, { id: integrationResult.id });
|
|
78
|
+
if (result.error) {
|
|
79
|
+
handleGraphQLError(result.error, log);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const integration = result.data?.integration;
|
|
83
|
+
if (!integration?.latest) {
|
|
84
|
+
log(chalk.red('Integration has no latest version'));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const values = integration.latest.elements
|
|
88
|
+
.filter((el) => el.__typename === 'Value')
|
|
89
|
+
.map((element) => ({
|
|
90
|
+
key: element.key,
|
|
91
|
+
name: element.name,
|
|
92
|
+
value: formatValue(element.value, element.content),
|
|
93
|
+
type: detectType(element.content),
|
|
94
|
+
id: element.id,
|
|
95
|
+
}));
|
|
96
|
+
if (values.length === 0) {
|
|
97
|
+
log(chalk.white(`No values in integration "${integration.name}"`));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
log(columnify(values, {
|
|
101
|
+
columns: ['key', 'name', 'value', 'type', 'id'],
|
|
102
|
+
columnSplitter: ' ',
|
|
103
|
+
config: {
|
|
104
|
+
key: {
|
|
105
|
+
dataTransform: (data) => chalk.cyan(data),
|
|
106
|
+
},
|
|
107
|
+
type: {
|
|
108
|
+
dataTransform: (data) => chalk.grey(data),
|
|
109
|
+
headingTransform: (heading) => chalk.grey(heading.toUpperCase()),
|
|
110
|
+
},
|
|
111
|
+
id: {
|
|
112
|
+
dataTransform: (data) => chalk.grey(data),
|
|
113
|
+
headingTransform: (heading) => chalk.grey(heading.toUpperCase()),
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
}));
|
|
117
|
+
const count = values.length;
|
|
118
|
+
const countText = `${count} ${count === 1 ? 'value' : 'values'}`;
|
|
119
|
+
const suffix = integration.name ? ` in ${integration.name}` : '';
|
|
120
|
+
log(chalk.white(`\n${countText}${suffix}`));
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/value/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import Conf from 'conf';
|
|
3
|
+
import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
|
|
4
|
+
import { type ConfigSchema } from '../utils/config.js';
|
|
5
|
+
export declare function setValueForElement(elementId: string, valueStr: string, elementContent: Record<string, unknown>, graphQLClient: GraphQLRequestClient): Promise<{
|
|
6
|
+
success: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const setValueAction: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, config?: Conf<ConfigSchema>, fsImpl?: typeof fs) => (element: string, valueStr: string, options?: {
|
|
10
|
+
integration?: string;
|
|
11
|
+
account?: string;
|
|
12
|
+
}) => Promise<void>;
|