great 1.0.2 → 1.2.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 +141 -43
- package/dist/accounts/create.d.ts +1 -1
- package/dist/accounts/create.js +2 -4
- package/dist/accounts/create.js.map +1 -1
- package/dist/accounts/index.d.ts +1 -1
- package/dist/accounts/index.js +2 -4
- package/dist/accounts/index.js.map +1 -1
- package/dist/clone/index.d.ts +4 -2
- package/dist/clone/index.js +19 -43
- package/dist/clone/index.js.map +1 -1
- package/dist/config/index.js +4 -30
- package/dist/config/index.js.map +1 -1
- package/dist/deploy/index.d.ts +1 -1
- package/dist/deploy/index.js +55 -15
- package/dist/deploy/index.js.map +1 -1
- package/dist/env/index.d.ts +12 -0
- package/dist/env/index.js +131 -0
- package/dist/env/index.js.map +1 -0
- package/dist/explode/transform.d.ts +1 -1
- package/dist/explode/transform.js +6 -2
- 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/operations.d.ts +617 -0
- package/dist/generated/operations.js +2 -0
- package/dist/generated/operations.js.map +1 -0
- package/dist/generated/schema.d.ts +965 -0
- package/dist/generated/{graphql.js → schema.js} +20 -2
- package/dist/generated/schema.js.map +1 -0
- 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 +132 -0
- package/dist/implode/index.js.map +1 -0
- package/dist/implode/transform.d.ts +45 -0
- package/dist/implode/transform.js +73 -0
- package/dist/implode/transform.js.map +1 -0
- package/dist/import/index.d.ts +8 -0
- package/dist/import/index.js +43 -0
- package/dist/import/index.js.map +1 -0
- package/dist/include/index.d.ts +10 -0
- package/dist/include/index.js +41 -0
- package/dist/include/index.js.map +1 -0
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/init/index.js +8 -16
- package/dist/init/index.js.map +1 -1
- package/dist/integrations/create.d.ts +1 -1
- package/dist/integrations/create.js +3 -5
- package/dist/integrations/create.js.map +1 -1
- package/dist/integrations/list.d.ts +1 -1
- package/dist/integrations/list.js +3 -5
- package/dist/integrations/list.js.map +1 -1
- package/dist/migrate/index.d.ts +5 -0
- package/dist/migrate/index.js +101 -0
- package/dist/migrate/index.js.map +1 -0
- package/dist/pull/index.d.ts +4 -2
- package/dist/pull/index.js +25 -44
- package/dist/pull/index.js.map +1 -1
- package/dist/push/index.d.ts +1 -1
- package/dist/push/index.js +364 -93
- package/dist/push/index.js.map +1 -1
- package/dist/rename/index.d.ts +8 -0
- package/dist/rename/index.js +109 -0
- package/dist/rename/index.js.map +1 -0
- package/dist/repl/dispatch.d.ts +8 -2
- package/dist/repl/dispatch.js +43 -29
- package/dist/repl/dispatch.js.map +1 -1
- package/dist/repl/dispatchAndLoad.d.ts +7 -0
- package/dist/repl/dispatchAndLoad.js +35 -0
- package/dist/repl/dispatchAndLoad.js.map +1 -0
- package/dist/repl/help.js +13 -2
- package/dist/repl/help.js.map +1 -1
- package/dist/repl/index.d.ts +1 -1
- package/dist/repl/index.js +31 -10
- package/dist/repl/index.js.map +1 -1
- package/dist/repl/load.d.ts +8 -0
- package/dist/repl/load.js +53 -0
- package/dist/repl/load.js.map +1 -0
- package/dist/run/index.d.ts +7 -5
- package/dist/run/index.js +5 -7
- package/dist/run/index.js.map +1 -1
- package/dist/status/index.d.ts +1 -1
- package/dist/status/index.js +6 -8
- package/dist/status/index.js.map +1 -1
- package/dist/utils/config.d.ts +9 -2
- package/dist/utils/config.js +39 -6
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/createIntegrationFromFile.d.ts +3 -1
- package/dist/utils/createIntegrationFromFile.js +14 -30
- package/dist/utils/createIntegrationFromFile.js.map +1 -1
- package/dist/utils/detectPullConflicts.d.ts +8 -0
- package/dist/utils/detectPullConflicts.js +65 -0
- package/dist/utils/detectPullConflicts.js.map +1 -0
- package/dist/utils/dispatch.d.ts +2 -2
- package/dist/utils/dispatch.js +5 -4
- package/dist/utils/dispatch.js.map +1 -1
- package/dist/utils/elementFiles.d.ts +13 -0
- package/dist/utils/elementFiles.js +76 -0
- package/dist/utils/elementFiles.js.map +1 -0
- package/dist/utils/fetchIntegrationDefinition.d.ts +8 -0
- package/dist/utils/fetchIntegrationDefinition.js +58 -0
- package/dist/utils/fetchIntegrationDefinition.js.map +1 -0
- package/dist/utils/fetchLocal.d.ts +3 -1
- package/dist/utils/fetchLocal.js +11 -9
- package/dist/utils/fetchLocal.js.map +1 -1
- package/dist/utils/fetchSession.d.ts +1 -1
- package/dist/utils/fetchSession.js +2 -1
- package/dist/utils/fetchSession.js.map +1 -1
- package/dist/utils/graphqlClient.d.ts +3 -0
- package/dist/utils/graphqlClient.js +3 -0
- package/dist/utils/graphqlClient.js.map +1 -1
- package/dist/utils/graphqlError.d.ts +2 -1
- package/dist/utils/graphqlError.js +17 -3
- package/dist/utils/graphqlError.js.map +1 -1
- package/dist/utils/greatFile.d.ts +40 -0
- package/dist/utils/greatFile.js +66 -0
- package/dist/utils/greatFile.js.map +1 -0
- package/dist/utils/hashContent.js +1 -1
- package/dist/utils/hashContent.js.map +1 -1
- package/dist/utils/integrationType.d.ts +3 -0
- package/dist/utils/integrationType.js +15 -0
- package/dist/utils/integrationType.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 +5 -4
- package/dist/utils/resolveAccount.js +17 -9
- package/dist/utils/resolveAccount.js.map +1 -1
- package/dist/utils/resolveElement.d.ts +1 -1
- package/dist/utils/resolveElementInclude.d.ts +3 -0
- package/dist/utils/resolveElementInclude.js +28 -0
- package/dist/utils/resolveElementInclude.js.map +1 -0
- package/dist/utils/resolveIntegration.d.ts +4 -2
- package/dist/utils/resolveIntegration.js +7 -3
- package/dist/utils/resolveIntegration.js.map +1 -1
- package/dist/utils/resolveTemplateImport.d.ts +3 -0
- package/dist/utils/resolveTemplateImport.js +31 -0
- package/dist/utils/resolveTemplateImport.js.map +1 -0
- package/dist/utils/response.d.ts +3 -0
- package/dist/utils/response.js +24 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/saveIntegration.d.ts +8 -4
- package/dist/utils/saveIntegration.js +76 -34
- package/dist/utils/saveIntegration.js.map +1 -1
- package/dist/utils/token.js +1 -1
- package/dist/utils/token.js.map +1 -1
- package/dist/utils/url.d.ts +1 -0
- package/dist/utils/url.js +10 -0
- package/dist/utils/url.js.map +1 -0
- package/dist/utils/writeShadowElement.d.ts +26 -0
- package/dist/utils/writeShadowElement.js +119 -0
- package/dist/utils/writeShadowElement.js.map +1 -0
- package/dist/{value → values}/get.d.ts +1 -1
- package/dist/{value → values}/get.js +7 -8
- package/dist/values/get.js.map +1 -0
- package/dist/{value → values}/index.js +13 -1
- package/dist/values/index.js.map +1 -0
- package/dist/{value → values}/list.js +10 -9
- package/dist/values/list.js.map +1 -0
- package/dist/{value → values}/set.d.ts +1 -1
- package/dist/{value → values}/set.js +9 -9
- package/dist/values/set.js.map +1 -0
- package/dist/values/unset.d.ts +8 -0
- package/dist/values/unset.js +61 -0
- package/dist/values/unset.js.map +1 -0
- package/dist/whoami/fetchSession.d.ts +3 -3
- package/dist/whoami/fetchSession.js +2 -4
- package/dist/whoami/fetchSession.js.map +1 -1
- package/dist/whoami/index.d.ts +1 -1
- package/package.json +20 -19
- package/dist/generated/graphql.d.ts +0 -1784
- package/dist/generated/graphql.js.map +0 -1
- package/dist/value/get.js.map +0 -1
- package/dist/value/index.js.map +0 -1
- package/dist/value/list.js.map +0 -1
- package/dist/value/set.js.map +0 -1
- /package/dist/{value → values}/index.d.ts +0 -0
- /package/dist/{value → values}/list.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveElementInclude.js","sourceRoot":"","sources":["../../src/utils/resolveElementInclude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,MAAM,kCAAkC,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;CAgB7C,CAAA;AAOD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,aAAmC,EACnC,SAAiB,EACjB,eAAmC,EACnC,GAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,kCAAkC,EAClC,EAAE,SAAS,EAAE,eAAe,EAAE,CAC/B,CAAA;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAA;AAC3C,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type GraphQLRequestClient } from './graphqlClient.js';
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
2
|
+
import type { IntegrationType } from '../generated/schema.js';
|
|
3
|
+
export declare const IntegrationQueryDocument: import("graphql").DocumentNode;
|
|
4
|
+
export declare const IntegrationByKeyQueryDocument: import("graphql").DocumentNode;
|
|
4
5
|
export interface IntegrationResult {
|
|
5
6
|
id: string;
|
|
6
7
|
name?: string;
|
|
8
|
+
type?: IntegrationType;
|
|
7
9
|
error?: string;
|
|
8
10
|
}
|
|
9
11
|
export declare function resolveIntegration(identifier: string, accountId: string | undefined, apiToken?: string, client?: GraphQLRequestClient, baseUrl?: string): Promise<IntegrationResult>;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { gql } from 'graphql-tag';
|
|
2
2
|
import { createGraphQLClient, } from './graphqlClient.js';
|
|
3
|
-
import { isNotFoundError } from './graphqlError.js';
|
|
3
|
+
import { getGraphQLErrorMessage, isNotFoundError } from './graphqlError.js';
|
|
4
4
|
export const IntegrationQueryDocument = gql `
|
|
5
5
|
query Integration($id: ID!) {
|
|
6
6
|
integration(id: $id) {
|
|
7
7
|
id
|
|
8
8
|
name
|
|
9
|
+
type
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
12
|
`;
|
|
@@ -14,6 +15,7 @@ export const IntegrationByKeyQueryDocument = gql `
|
|
|
14
15
|
integrationByKey(accountId: $accountId, key: $key) {
|
|
15
16
|
id
|
|
16
17
|
name
|
|
18
|
+
type
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
`;
|
|
@@ -22,7 +24,7 @@ export async function resolveIntegration(identifier, accountId, apiToken, client
|
|
|
22
24
|
try {
|
|
23
25
|
const idResult = await graphqlClient.request(IntegrationQueryDocument, { id: identifier });
|
|
24
26
|
if (idResult.error && !isNotFoundError(idResult.error)) {
|
|
25
|
-
const errorMessage =
|
|
27
|
+
const errorMessage = getGraphQLErrorMessage(idResult.error);
|
|
26
28
|
return {
|
|
27
29
|
id: '',
|
|
28
30
|
error: errorMessage,
|
|
@@ -32,12 +34,13 @@ export async function resolveIntegration(identifier, accountId, apiToken, client
|
|
|
32
34
|
return {
|
|
33
35
|
id: idResult.data.integration.id,
|
|
34
36
|
name: idResult.data.integration.name,
|
|
37
|
+
type: idResult.data.integration.type,
|
|
35
38
|
};
|
|
36
39
|
}
|
|
37
40
|
if (accountId) {
|
|
38
41
|
const keyResult = await graphqlClient.request(IntegrationByKeyQueryDocument, { accountId, key: identifier });
|
|
39
42
|
if (keyResult.error && !isNotFoundError(keyResult.error)) {
|
|
40
|
-
const errorMessage =
|
|
43
|
+
const errorMessage = getGraphQLErrorMessage(keyResult.error);
|
|
41
44
|
return {
|
|
42
45
|
id: '',
|
|
43
46
|
error: errorMessage,
|
|
@@ -53,6 +56,7 @@ export async function resolveIntegration(identifier, accountId, apiToken, client
|
|
|
53
56
|
return {
|
|
54
57
|
id: integration.id,
|
|
55
58
|
name: integration.name,
|
|
59
|
+
type: integration.type,
|
|
56
60
|
};
|
|
57
61
|
}
|
|
58
62
|
return {
|
|
@@ -1 +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;
|
|
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,sBAAsB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAO3E,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;;;;;;;;CAQ1C,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAA;;;;;;;;CAQ/C,CAAA;AASD,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,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC3D,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;gBACpC,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,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBAC5D,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;gBACtB,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,3 @@
|
|
|
1
|
+
import type { GraphQLRequestClient } from './graphqlClient.js';
|
|
2
|
+
import type { ResolveTemplateImportQuery } from '../generated/operations.js';
|
|
3
|
+
export declare function resolveTemplateImport(graphqlClient: GraphQLRequestClient, templateId: string, log: (message: string) => void): Promise<ResolveTemplateImportQuery['resolveTemplateImport'] | undefined>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import { handleGraphQLError } from './graphqlError.js';
|
|
3
|
+
const ResolveTemplateImportQueryDocument = gql `
|
|
4
|
+
query ResolveTemplateImport($templateId: ID!) {
|
|
5
|
+
resolveTemplateImport(templateId: $templateId) {
|
|
6
|
+
timestamp
|
|
7
|
+
elements {
|
|
8
|
+
key
|
|
9
|
+
name
|
|
10
|
+
description
|
|
11
|
+
type
|
|
12
|
+
content {
|
|
13
|
+
sourceId
|
|
14
|
+
sourceTimestamp
|
|
15
|
+
createdAt
|
|
16
|
+
provenance
|
|
17
|
+
data
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
export async function resolveTemplateImport(graphqlClient, templateId, log) {
|
|
24
|
+
const result = await graphqlClient.request(ResolveTemplateImportQueryDocument, { templateId });
|
|
25
|
+
if (result.error) {
|
|
26
|
+
handleGraphQLError(result.error, log);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
return result.data?.resolveTemplateImport;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=resolveTemplateImport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTemplateImport.js","sourceRoot":"","sources":["../../src/utils/resolveTemplateImport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAItD,MAAM,kCAAkC,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;CAmB7C,CAAA;AAMD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,aAAmC,EACnC,UAAkB,EAClB,GAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,kCAAkC,EAClC,EAAE,UAAU,EAAE,CACf,CAAA;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAA;AAC3C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import { createGraphQLClient, } from './graphqlClient.js';
|
|
3
|
+
import { getGraphQLErrorMessage } from './graphqlError.js';
|
|
4
|
+
const ResponseQueryDocument = gql `
|
|
5
|
+
query Response($actionId: ID!) {
|
|
6
|
+
response(actionId: $actionId) {
|
|
7
|
+
id
|
|
8
|
+
status
|
|
9
|
+
error
|
|
10
|
+
warning
|
|
11
|
+
itemCount
|
|
12
|
+
data
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
export async function fetchResponse(actionId, apiToken, client, baseUrl) {
|
|
17
|
+
const graphqlClient = client ?? createGraphQLClient(apiToken, baseUrl);
|
|
18
|
+
const result = await graphqlClient.request(ResponseQueryDocument, { actionId });
|
|
19
|
+
if (result.error) {
|
|
20
|
+
throw new Error(getGraphQLErrorMessage(result.error));
|
|
21
|
+
}
|
|
22
|
+
return result.data?.response ?? { id: actionId, status: 'error' };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAI1D,MAAM,qBAAqB,GAAG,GAAG,CAAA;;;;;;;;;;;CAWhC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,QAAiB,EACjB,MAA6B,EAC7B,OAAgB;IAEhB,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,qBAAqB,EACrB,EAAE,QAAQ,EAAE,CACb,CAAA;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AACnE,CAAC"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
-
import type { IntegrationDefinitionQuery } from '../generated/
|
|
2
|
+
import type { IntegrationDefinitionQuery } from '../generated/operations.js';
|
|
3
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'> & {
|
|
4
|
+
export type IntegrationDefinitions = Omit<NonNullable<Integration['latest']>, 'elements' | 'timestamp'> & {
|
|
5
|
+
elements: (Omit<NonNullable<Integration['latest']>['elements'][0], 'content' | 'id' | 'name' | 'description'> & {
|
|
6
6
|
id?: string;
|
|
7
7
|
name?: string;
|
|
8
|
+
description?: string | null;
|
|
8
9
|
content?: Partial<NonNullable<Integration['latest']>['elements'][0]['content']>;
|
|
9
10
|
})[];
|
|
11
|
+
timestamp?: NonNullable<Integration['latest']>['timestamp'];
|
|
10
12
|
};
|
|
11
|
-
export type IntegrationMeta = Pick<Integration, 'key' | 'name' | 'description' | 'status'> & {
|
|
13
|
+
export type IntegrationMeta = Pick<Integration, 'key' | 'name' | 'description' | 'status' | 'type'> & {
|
|
12
14
|
id?: string;
|
|
13
15
|
account?: Integration['account'];
|
|
16
|
+
templateImports?: Integration['templateImports'];
|
|
14
17
|
};
|
|
18
|
+
export declare const typeToFolder: Record<string, string>;
|
|
15
19
|
export default function saveIntegration(integration: IntegrationMeta, definitions: IntegrationDefinitions, root?: string, fsImpl?: typeof fs): void;
|
|
16
20
|
export {};
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import hashContent from './hashContent.js';
|
|
3
|
+
import resolveIntegrationType from './integrationType.js';
|
|
4
|
+
import { emptyGreatFile, readGreatFile, writeGreatFile, setElementRecord, getElementRecord, addProvenance, } from './greatFile.js';
|
|
5
|
+
import { JSON_EXTENSIONS, elementKeyFromFileName } from './elementFiles.js';
|
|
6
|
+
import { SHADOW_MARKER } from './writeShadowElement.js';
|
|
2
7
|
const normalizeFolderName = (folder) => folder.replace(':', '_');
|
|
3
8
|
function createFolderIfMissing(root, fsImpl) {
|
|
4
9
|
const rootPath = root ? `${root}/` : '';
|
|
@@ -9,12 +14,22 @@ function createFolderIfMissing(root, fsImpl) {
|
|
|
9
14
|
}
|
|
10
15
|
};
|
|
11
16
|
}
|
|
17
|
+
function elementFilePath(rootPath, folder, name, fsImpl) {
|
|
18
|
+
if (!folder) {
|
|
19
|
+
return `${rootPath}${name}.json`;
|
|
20
|
+
}
|
|
21
|
+
for (const ext of JSON_EXTENSIONS) {
|
|
22
|
+
const path = `${rootPath}${folder}/${name}${ext}`;
|
|
23
|
+
if (fsImpl.existsSync(path)) {
|
|
24
|
+
return path;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return `${rootPath}${folder}/${name}.json`;
|
|
28
|
+
}
|
|
12
29
|
function writeJsonFile(root, fsImpl) {
|
|
13
30
|
const rootPath = root ? `${root}/` : '';
|
|
14
31
|
return (folder, name, content) => {
|
|
15
|
-
const path = folder
|
|
16
|
-
? `${rootPath}${folder}/${name}.json`
|
|
17
|
-
: `${rootPath}${name}.json`;
|
|
32
|
+
const path = elementFilePath(rootPath, folder, name, fsImpl);
|
|
18
33
|
try {
|
|
19
34
|
fsImpl.writeFileSync(path, JSON.stringify(content, undefined, 2));
|
|
20
35
|
}
|
|
@@ -23,18 +38,43 @@ function writeJsonFile(root, fsImpl) {
|
|
|
23
38
|
}
|
|
24
39
|
};
|
|
25
40
|
}
|
|
26
|
-
const
|
|
27
|
-
...(
|
|
28
|
-
|
|
29
|
-
...(
|
|
30
|
-
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
__id: id,
|
|
34
|
-
__key: key,
|
|
35
|
-
name,
|
|
41
|
+
const buildElementFile = (element) => ({
|
|
42
|
+
...(element.content?.sourceId ? { [SHADOW_MARKER]: true } : {}),
|
|
43
|
+
...(element.name ? { name: element.name } : {}),
|
|
44
|
+
...(element.description != null
|
|
45
|
+
? { description: element.description }
|
|
46
|
+
: {}),
|
|
47
|
+
...element.content?.data,
|
|
36
48
|
});
|
|
37
|
-
const
|
|
49
|
+
const buildElementRecord = (element) => {
|
|
50
|
+
const record = {
|
|
51
|
+
...(element.id ? { id: element.id } : {}),
|
|
52
|
+
...(element.content?.createdAt
|
|
53
|
+
? { timestamp: element.content.createdAt }
|
|
54
|
+
: {}),
|
|
55
|
+
hash: hashContent({ ...element.content?.data }),
|
|
56
|
+
};
|
|
57
|
+
if (element.content?.sourceId) {
|
|
58
|
+
record.source = {
|
|
59
|
+
id: element.content.sourceId,
|
|
60
|
+
...(element.content.sourceTimestamp
|
|
61
|
+
? { timestamp: element.content.sourceTimestamp }
|
|
62
|
+
: {}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
addProvenance(record, element.content?.provenance ?? []);
|
|
66
|
+
return record;
|
|
67
|
+
};
|
|
68
|
+
const buildImportRecords = (templateImports) => (templateImports ?? []).flatMap((templateImport) => templateImport.template
|
|
69
|
+
? [
|
|
70
|
+
{
|
|
71
|
+
templateId: templateImport.template.id,
|
|
72
|
+
timestamp: templateImport.timestamp,
|
|
73
|
+
id: templateImport.id,
|
|
74
|
+
},
|
|
75
|
+
]
|
|
76
|
+
: []);
|
|
77
|
+
export const typeToFolder = {
|
|
38
78
|
Schema: 'schemas',
|
|
39
79
|
Service: 'services',
|
|
40
80
|
Auth: 'auths',
|
|
@@ -45,7 +85,7 @@ const typeToFolder = {
|
|
|
45
85
|
Flow: 'flows',
|
|
46
86
|
RetryRule: 'retryRules',
|
|
47
87
|
};
|
|
48
|
-
function deleteRemovedFiles(rootFolder, elements, fsImpl) {
|
|
88
|
+
function deleteRemovedFiles(rootFolder, elements, priorGreat, fsImpl) {
|
|
49
89
|
const rootPath = rootFolder ? `${rootFolder}/` : '';
|
|
50
90
|
Object.values(typeToFolder).forEach((folder) => {
|
|
51
91
|
const folderPath = `${rootPath}${folder}`;
|
|
@@ -54,31 +94,23 @@ function deleteRemovedFiles(rootFolder, elements, fsImpl) {
|
|
|
54
94
|
}
|
|
55
95
|
const files = fsImpl.readdirSync(folderPath);
|
|
56
96
|
files.forEach((file) => {
|
|
57
|
-
|
|
97
|
+
const fileKey = elementKeyFromFileName(file);
|
|
98
|
+
if (!fileKey) {
|
|
58
99
|
return;
|
|
59
100
|
}
|
|
60
|
-
const fileKey = file.replace('.json', '');
|
|
61
101
|
const existsInApi = elements?.some((element) => typeToFolder[element.__typename] === folder &&
|
|
62
102
|
element.key === fileKey);
|
|
63
103
|
if (existsInApi) {
|
|
64
104
|
return;
|
|
65
105
|
}
|
|
66
|
-
|
|
67
|
-
|
|
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);
|
|
106
|
+
if (getElementRecord(priorGreat, folder, fileKey)) {
|
|
107
|
+
fsImpl.unlinkSync(`${folderPath}/${file}`);
|
|
76
108
|
}
|
|
77
109
|
});
|
|
78
110
|
});
|
|
79
111
|
}
|
|
80
112
|
export default function saveIntegration(integration, definitions, root, fsImpl = fs) {
|
|
81
|
-
const { id,
|
|
113
|
+
const { id, name, description, status, type, account, templateImports } = integration;
|
|
82
114
|
const { timestamp, elements } = definitions;
|
|
83
115
|
const rootFolder = root ? normalizeFolderName(root) : undefined;
|
|
84
116
|
const createFolder = createFolderIfMissing(rootFolder, fsImpl);
|
|
@@ -86,15 +118,17 @@ export default function saveIntegration(integration, definitions, root, fsImpl =
|
|
|
86
118
|
if (rootFolder) {
|
|
87
119
|
createFolderIfMissing(undefined, fsImpl)(rootFolder);
|
|
88
120
|
}
|
|
121
|
+
const priorGreat = readGreatFile(rootFolder, fsImpl);
|
|
122
|
+
const great = emptyGreatFile();
|
|
123
|
+
great.id = id;
|
|
124
|
+
great.timestamp = timestamp ?? undefined;
|
|
125
|
+
great.account = account ? { id: account.id, key: account.key } : undefined;
|
|
89
126
|
const config = elements?.find((el) => el.__typename === 'ConfigElement' && el.key === 'config');
|
|
90
127
|
const index = {
|
|
91
|
-
...(id ? { __id: id } : {}),
|
|
92
|
-
__key: key,
|
|
93
|
-
...(timestamp ? { __timestamp: timestamp } : {}),
|
|
94
128
|
name,
|
|
95
129
|
description,
|
|
96
130
|
status,
|
|
97
|
-
|
|
131
|
+
type: resolveIntegrationType(type),
|
|
98
132
|
flags: config?.content?.data,
|
|
99
133
|
identConfig: undefined,
|
|
100
134
|
nonvalues: undefined,
|
|
@@ -104,14 +138,22 @@ export default function saveIntegration(integration, definitions, root, fsImpl =
|
|
|
104
138
|
Object.values(typeToFolder).forEach((folder) => {
|
|
105
139
|
createFolder(folder);
|
|
106
140
|
});
|
|
107
|
-
deleteRemovedFiles(rootFolder, elements, fsImpl);
|
|
141
|
+
deleteRemovedFiles(rootFolder, elements, priorGreat, fsImpl);
|
|
108
142
|
if (elements) {
|
|
109
143
|
elements.forEach((element) => {
|
|
110
144
|
const folder = typeToFolder[element.__typename];
|
|
111
145
|
if (folder) {
|
|
112
|
-
writeFile(folder, element.key,
|
|
146
|
+
writeFile(folder, element.key, buildElementFile(element));
|
|
147
|
+
setElementRecord(great, folder, element.key, buildElementRecord(element));
|
|
113
148
|
}
|
|
114
149
|
});
|
|
115
150
|
}
|
|
151
|
+
const imports = buildImportRecords(templateImports);
|
|
152
|
+
if (imports.length > 0) {
|
|
153
|
+
great.imports = imports;
|
|
154
|
+
}
|
|
155
|
+
if (great.id) {
|
|
156
|
+
writeGreatFile(great, rootFolder, fsImpl);
|
|
157
|
+
}
|
|
116
158
|
}
|
|
117
159
|
//# sourceMappingURL=saveIntegration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveIntegration.js","sourceRoot":"","sources":["../../src/utils/saveIntegration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"saveIntegration.js","sourceRoot":"","sources":["../../src/utils/saveIntegration.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/token.js
CHANGED
|
@@ -9,7 +9,7 @@ export function getStoredToken(config) {
|
|
|
9
9
|
const token = getConfigValue('token', config);
|
|
10
10
|
const expiresAt = getConfigValue('expiresAt', config);
|
|
11
11
|
if (!token) {
|
|
12
|
-
return
|
|
12
|
+
return undefined;
|
|
13
13
|
}
|
|
14
14
|
if (isTokenExpired(expiresAt)) {
|
|
15
15
|
deleteConfigValue('token', config);
|
package/dist/utils/token.js.map
CHANGED
|
@@ -1 +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;
|
|
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;AAOD,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;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,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 @@
|
|
|
1
|
+
export declare function isValidUrl(value: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/utils/url.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import type { GreatFile } from './greatFile.js';
|
|
3
|
+
import type { ResolveElementIncludeQuery } from '../generated/operations.js';
|
|
4
|
+
export type ResolvedShadow = ResolveElementIncludeQuery['resolveElementInclude'];
|
|
5
|
+
export declare const SHADOW_MARKER = "$shadow";
|
|
6
|
+
export interface ShadowConflict {
|
|
7
|
+
key: string;
|
|
8
|
+
folder: string;
|
|
9
|
+
reason: string;
|
|
10
|
+
}
|
|
11
|
+
export interface WriteShadowsResult {
|
|
12
|
+
written: {
|
|
13
|
+
folder: string;
|
|
14
|
+
key: string;
|
|
15
|
+
}[];
|
|
16
|
+
skipped: ResolvedShadow[];
|
|
17
|
+
conflicts: ShadowConflict[];
|
|
18
|
+
}
|
|
19
|
+
interface WriteShadowsOptions {
|
|
20
|
+
root?: string;
|
|
21
|
+
pinnedFallback?: string;
|
|
22
|
+
fsImpl?: typeof fs;
|
|
23
|
+
}
|
|
24
|
+
export declare function writeShadowElements(great: GreatFile, resolved: readonly ResolvedShadow[], options?: WriteShadowsOptions): WriteShadowsResult;
|
|
25
|
+
export declare function logShadowConflicts(verb: string, conflicts: readonly ShadowConflict[], log: (message: string) => void): void;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { elementTypeToFolder, JSON_EXTENSIONS } from './elementFiles.js';
|
|
5
|
+
import { getElementRecord, setElementRecord, addProvenance } from './greatFile.js';
|
|
6
|
+
export const SHADOW_MARKER = '$shadow';
|
|
7
|
+
const folderPath = (root, folder) => root ? path.join(root, folder) : folder;
|
|
8
|
+
function existingFilePath(root, folder, key, fsImpl) {
|
|
9
|
+
for (const ext of JSON_EXTENSIONS) {
|
|
10
|
+
const filePath = path.join(folderPath(root, folder), `${key}${ext}`);
|
|
11
|
+
if (fsImpl.existsSync(filePath)) {
|
|
12
|
+
return filePath;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
function classify(great, resolved, root, fsImpl) {
|
|
18
|
+
const folder = elementTypeToFolder[resolved.type];
|
|
19
|
+
if (!folder) {
|
|
20
|
+
return { status: 'skip' };
|
|
21
|
+
}
|
|
22
|
+
if (!resolved.content?.sourceId) {
|
|
23
|
+
return {
|
|
24
|
+
status: 'conflict',
|
|
25
|
+
conflict: {
|
|
26
|
+
key: resolved.key,
|
|
27
|
+
folder,
|
|
28
|
+
reason: 'element has no versioned content to include',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const record = getElementRecord(great, folder, resolved.key);
|
|
33
|
+
const hasFile = Boolean(existingFilePath(root, folder, resolved.key, fsImpl));
|
|
34
|
+
if (record?.source) {
|
|
35
|
+
if (record.source.id === resolved.content?.sourceId) {
|
|
36
|
+
return { status: 'write', folder };
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
status: 'conflict',
|
|
40
|
+
conflict: {
|
|
41
|
+
key: resolved.key,
|
|
42
|
+
folder,
|
|
43
|
+
reason: `already a shadow of a different source (${record.source.id})`,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (hasFile || record) {
|
|
48
|
+
return {
|
|
49
|
+
status: 'conflict',
|
|
50
|
+
conflict: {
|
|
51
|
+
key: resolved.key,
|
|
52
|
+
folder,
|
|
53
|
+
reason: 'a local element already exists',
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return { status: 'write', folder };
|
|
58
|
+
}
|
|
59
|
+
function buildShadowFile(resolved) {
|
|
60
|
+
return {
|
|
61
|
+
[SHADOW_MARKER]: true,
|
|
62
|
+
name: resolved.name,
|
|
63
|
+
...(resolved.description != null
|
|
64
|
+
? { description: resolved.description }
|
|
65
|
+
: {}),
|
|
66
|
+
...resolved.content?.data,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function writeOne(great, resolved, folder, options) {
|
|
70
|
+
const { root, pinnedFallback, fsImpl } = options;
|
|
71
|
+
const existingPath = existingFilePath(root, folder, resolved.key, fsImpl);
|
|
72
|
+
const writePath = existingPath ?? path.join(folderPath(root, folder), `${resolved.key}.json`);
|
|
73
|
+
fsImpl.mkdirSync(folderPath(root, folder), { recursive: true });
|
|
74
|
+
fsImpl.writeFileSync(writePath, JSON.stringify(buildShadowFile(resolved), undefined, 2));
|
|
75
|
+
const record = getElementRecord(great, folder, resolved.key) ?? {};
|
|
76
|
+
const timestamp = resolved.content?.sourceTimestamp ?? pinnedFallback;
|
|
77
|
+
record.source = {
|
|
78
|
+
id: resolved.content?.sourceId ?? '',
|
|
79
|
+
...(timestamp ? { timestamp } : {}),
|
|
80
|
+
};
|
|
81
|
+
addProvenance(record, resolved.content?.provenance ?? []);
|
|
82
|
+
setElementRecord(great, folder, resolved.key, record);
|
|
83
|
+
}
|
|
84
|
+
export function writeShadowElements(great, resolved, options = {}) {
|
|
85
|
+
const fsImpl = options.fsImpl ?? fs;
|
|
86
|
+
const result = {
|
|
87
|
+
written: [],
|
|
88
|
+
skipped: [],
|
|
89
|
+
conflicts: [],
|
|
90
|
+
};
|
|
91
|
+
const toWrite = [];
|
|
92
|
+
for (const element of resolved) {
|
|
93
|
+
const classified = classify(great, element, options.root, fsImpl);
|
|
94
|
+
if (classified.status === 'skip') {
|
|
95
|
+
result.skipped.push(element);
|
|
96
|
+
}
|
|
97
|
+
else if (classified.status === 'conflict') {
|
|
98
|
+
result.conflicts.push(classified.conflict);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
toWrite.push({ resolved: element, folder: classified.folder });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (result.conflicts.length > 0) {
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
for (const { resolved: element, folder } of toWrite) {
|
|
108
|
+
writeOne(great, element, folder, { ...options, fsImpl });
|
|
109
|
+
result.written.push({ folder, key: element.key });
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
export function logShadowConflicts(verb, conflicts, log) {
|
|
114
|
+
log(chalk.red(`${verb} aborted — ${conflicts.length} conflict(s):`));
|
|
115
|
+
for (const conflict of conflicts) {
|
|
116
|
+
log(` ${conflict.folder}/${conflict.key}: ${conflict.reason}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=writeShadowElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeShadowElement.js","sourceRoot":"","sources":["../../src/utils/writeShadowElement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import Conf from 'conf';
|
|
3
3
|
import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { ConfigSchema } from '../utils/config.js';
|
|
5
5
|
export declare const getValueAction: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, config?: Conf<ConfigSchema>, fsImpl?: typeof fs) => (element: string, options?: {
|
|
6
6
|
integration?: string;
|
|
7
7
|
account?: string;
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
-
import {
|
|
4
|
-
import { getApiBaseUrl } from '../utils/config.js';
|
|
3
|
+
import { getClient } from '../utils/graphqlClient.js';
|
|
5
4
|
import { resolveAccountId } from '../utils/resolveAccount.js';
|
|
6
5
|
import { resolveElement } from '../utils/resolveElement.js';
|
|
7
|
-
import {
|
|
8
|
-
import { ElementType } from '../generated/
|
|
6
|
+
import { fetchIntegrationId } from '../utils/fetchLocal.js';
|
|
7
|
+
import { ElementType } from '../generated/schema.js';
|
|
9
8
|
export const getValueAction = (log, apiToken, client, config, fsImpl = fs) => async (element, options) => {
|
|
10
9
|
if (!apiToken) {
|
|
11
10
|
log(chalk.red('Authentication required. Run `great login` first.'));
|
|
12
11
|
return;
|
|
13
12
|
}
|
|
14
|
-
const graphQLClient =
|
|
13
|
+
const graphQLClient = getClient(apiToken, client, config);
|
|
15
14
|
let integrationIdentifier = options?.integration;
|
|
16
15
|
if (!integrationIdentifier) {
|
|
17
|
-
integrationIdentifier =
|
|
16
|
+
integrationIdentifier = fetchIntegrationId(fsImpl);
|
|
18
17
|
}
|
|
19
18
|
let accountId;
|
|
20
19
|
if (integrationIdentifier) {
|
|
21
|
-
const { accountId: resolvedAccountId, error } = await resolveAccountId(options ?? {}, apiToken, graphQLClient, config);
|
|
22
|
-
if (error && options?.integration) {
|
|
20
|
+
const { accountId: resolvedAccountId, error } = await resolveAccountId(options ?? {}, apiToken, graphQLClient, config, fsImpl);
|
|
21
|
+
if (error && (options?.account || options?.integration)) {
|
|
23
22
|
log(chalk.red(error));
|
|
24
23
|
return;
|
|
25
24
|
}
|