great 1.3.0 → 1.4.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 +32 -16
- package/dist/explode/transform.js +3 -4
- package/dist/explode/transform.js.map +1 -1
- package/dist/explode/unescapeMongo.js +33 -0
- package/dist/explode/unescapeMongo.js.map +1 -1
- package/dist/generated/operations.d.ts +23 -1
- package/dist/generated/schema.d.ts +16 -0
- package/dist/generated/schema.js.map +1 -1
- package/dist/import/index.d.ts +3 -1
- package/dist/import/index.js +27 -6
- package/dist/import/index.js.map +1 -1
- package/dist/include/index.d.ts +3 -1
- package/dist/include/index.js +129 -11
- package/dist/include/index.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/index.js +5 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/list.d.ts +2 -0
- package/dist/integrations/list.js +30 -16
- package/dist/integrations/list.js.map +1 -1
- package/dist/push/index.js +262 -42
- package/dist/push/index.js.map +1 -1
- package/dist/remove/index.d.ts +5 -0
- package/dist/remove/index.js +71 -0
- package/dist/remove/index.js.map +1 -0
- package/dist/rename/index.js +4 -3
- package/dist/rename/index.js.map +1 -1
- package/dist/run/index.d.ts +1 -1
- package/dist/utils/detectPullConflicts.js +13 -3
- package/dist/utils/detectPullConflicts.js.map +1 -1
- package/dist/utils/elementFiles.d.ts +8 -0
- package/dist/utils/elementFiles.js +33 -0
- package/dist/utils/elementFiles.js.map +1 -1
- package/dist/utils/graphqlError.js +16 -2
- package/dist/utils/graphqlError.js.map +1 -1
- package/dist/utils/hashContent.d.ts +1 -0
- package/dist/utils/hashContent.js +6 -3
- package/dist/utils/hashContent.js.map +1 -1
- package/dist/utils/integrationConfig.d.ts +13 -0
- package/dist/utils/integrationConfig.js +29 -0
- package/dist/utils/integrationConfig.js.map +1 -0
- package/dist/utils/mergeEndpointLists.d.ts +7 -0
- package/dist/utils/mergeEndpointLists.js +32 -0
- package/dist/utils/mergeEndpointLists.js.map +1 -0
- package/dist/utils/promptForEndpoints.d.ts +5 -0
- package/dist/utils/promptForEndpoints.js +37 -0
- package/dist/utils/promptForEndpoints.js.map +1 -0
- package/dist/utils/promptForReplaceLocal.d.ts +5 -0
- package/dist/utils/promptForReplaceLocal.js +18 -0
- package/dist/utils/promptForReplaceLocal.js.map +1 -0
- package/dist/utils/promptForValue.d.ts +2 -0
- package/dist/utils/promptForValue.js +6 -3
- package/dist/utils/promptForValue.js.map +1 -1
- package/dist/utils/resolveElementIncludes.d.ts +6 -0
- package/dist/utils/resolveElementIncludes.js +113 -0
- package/dist/utils/resolveElementIncludes.js.map +1 -0
- package/dist/utils/saveIntegration.js +7 -2
- package/dist/utils/saveIntegration.js.map +1 -1
- package/dist/utils/serviceFile.d.ts +3 -0
- package/dist/utils/serviceFile.js +7 -1
- package/dist/utils/serviceFile.js.map +1 -1
- package/dist/utils/writeShadowElement.d.ts +10 -7
- package/dist/utils/writeShadowElement.js +89 -50
- package/dist/utils/writeShadowElement.js.map +1 -1
- package/package.json +7 -7
- package/dist/utils/resolveElementInclude.d.ts +0 -3
- package/dist/utils/resolveElementInclude.js +0 -27
- package/dist/utils/resolveElementInclude.js.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const dedupe = (keys) => [...new Set(keys)];
|
|
2
|
+
function drainTo(keys, anchor) {
|
|
3
|
+
const taken = [];
|
|
4
|
+
for (let next = keys.next(); !next.done; next = keys.next()) {
|
|
5
|
+
if (next.value === anchor) {
|
|
6
|
+
break;
|
|
7
|
+
}
|
|
8
|
+
taken.push(next.value);
|
|
9
|
+
}
|
|
10
|
+
return taken;
|
|
11
|
+
}
|
|
12
|
+
export default function mergeEndpointLists(a, b) {
|
|
13
|
+
const aList = dedupe(a);
|
|
14
|
+
const bList = dedupe(b);
|
|
15
|
+
const aSet = new Set(aList);
|
|
16
|
+
const bSet = new Set(bList);
|
|
17
|
+
const aRest = aList.values();
|
|
18
|
+
const bRest = bList.values();
|
|
19
|
+
const merged = [];
|
|
20
|
+
for (const anchor of aList.filter((key) => bSet.has(key))) {
|
|
21
|
+
const fromA = drainTo(aRest, anchor);
|
|
22
|
+
const fromB = drainTo(bRest, anchor);
|
|
23
|
+
const misplaced = fromB.find((key) => aSet.has(key));
|
|
24
|
+
if (misplaced) {
|
|
25
|
+
return { conflict: [anchor, misplaced] };
|
|
26
|
+
}
|
|
27
|
+
merged.push(...fromA, ...fromB, anchor);
|
|
28
|
+
}
|
|
29
|
+
merged.push(...aRest, ...bRest);
|
|
30
|
+
return { merged };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=mergeEndpointLists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeEndpointLists.js","sourceRoot":"","sources":["../../src/utils/mergeEndpointLists.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;AAMrD,SAAS,OAAO,CAAC,IAAsB,EAAE,MAAc;IACrD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5D,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAK;QACP,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAcD,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,CAAW,EACX,CAAW;IAEX,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;IAE5B,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAA;QAC1C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAA;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { checkbox, confirm } from '@inquirer/prompts';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
async function selectEndpoints(endpoints) {
|
|
4
|
+
return checkbox({
|
|
5
|
+
message: 'Endpoints to include',
|
|
6
|
+
choices: endpoints.map(({ key, name }) => ({
|
|
7
|
+
name: `${name} (${key})`,
|
|
8
|
+
value: key,
|
|
9
|
+
checked: true,
|
|
10
|
+
})),
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async function confirmLocalList(log, hasShadowList) {
|
|
14
|
+
const replaces = hasShadowList
|
|
15
|
+
? ' It replaces the shadow endpoint list you have now.'
|
|
16
|
+
: '';
|
|
17
|
+
log(chalk.yellow(`Leaving out endpoints means you make your own, local endpoint list, and won't follow changes to it.${replaces}`));
|
|
18
|
+
return confirm({
|
|
19
|
+
message: 'Make the endpoint list a local element with only the selected endpoints?',
|
|
20
|
+
default: false,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export default async function promptForEndpoints(serviceKey, endpoints, log, hasShadowList = false) {
|
|
24
|
+
log(`Service ${serviceKey} has an endpoint list with ${endpoints.length} endpoint(s). Select the ones to include with it.`);
|
|
25
|
+
try {
|
|
26
|
+
let selected;
|
|
27
|
+
do {
|
|
28
|
+
selected = await selectEndpoints(endpoints);
|
|
29
|
+
} while (selected.length < endpoints.length &&
|
|
30
|
+
!(await confirmLocalList(log, hasShadowList)));
|
|
31
|
+
return selected;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new Error('User cancelled');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=promptForEndpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForEndpoints.js","sourceRoot":"","sources":["../../src/utils/promptForEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,KAAK,UAAU,eAAe,CAC5B,SAAoC;IAEpC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,GAAG,IAAI,KAAK,GAAG,GAAG;YACxB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;KACJ,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,GAA8B,EAC9B,aAAsB;IAEtB,MAAM,QAAQ,GAAG,aAAa;QAC5B,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC,EAAE,CAAA;IACN,GAAG,CACD,KAAK,CAAC,MAAM,CACV,sGAAsG,QAAQ,EAAE,CACjH,CACF,CAAA;IACD,OAAO,OAAO,CAAC;QACb,OAAO,EACL,0EAA0E;QAC5E,OAAO,EAAE,KAAK;KACf,CAAC,CAAA;AACJ,CAAC;AAQD,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAC9C,UAAkB,EAClB,SAAoC,EACpC,GAA8B,EAC9B,aAAa,GAAG,KAAK;IAErB,GAAG,CACD,WAAW,UAAU,8BAA8B,SAAS,CAAC,MAAM,mDAAmD,CACvH,CAAA;IACD,IAAI,CAAC;QACH,IAAI,QAAkB,CAAA;QACtB,GAAG,CAAC;YACF,QAAQ,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAA;QAC7C,CAAC,QACC,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;YAClC,CAAC,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAC9C;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ElementTarget } from './elementFiles.js';
|
|
2
|
+
export interface ReplacedElement extends ElementTarget {
|
|
3
|
+
droppedKeys?: string[];
|
|
4
|
+
}
|
|
5
|
+
export default function promptForReplaceLocal(replaced: readonly ReplacedElement[], log: (message: string) => void): Promise<boolean>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { confirm } from '@inquirer/prompts';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
const describeReplaced = ({ folder, key, droppedKeys }) => droppedKeys
|
|
4
|
+
? ` ${folder}/${key} (leaves out ${droppedKeys.join(', ')})`
|
|
5
|
+
: ` ${folder}/${key}`;
|
|
6
|
+
export default async function promptForReplaceLocal(replaced, log) {
|
|
7
|
+
log(chalk.yellow('These local elements will be replaced, and any changes to them that have not been pushed will be lost:'));
|
|
8
|
+
for (const element of replaced) {
|
|
9
|
+
log(describeReplaced(element));
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
return await confirm({ message: 'Replace them?', default: false });
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error('User cancelled');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=promptForReplaceLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForReplaceLocal.js","sourceRoot":"","sources":["../../src/utils/promptForReplaceLocal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,MAAM,gBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAmB,EAAE,EAAE,CACzE,WAAW;IACT,CAAC,CAAC,KAAK,MAAM,IAAI,GAAG,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IAC7D,CAAC,CAAC,KAAK,MAAM,IAAI,GAAG,EAAE,CAAA;AAK1B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,qBAAqB,CACjD,QAAoC,EACpC,GAA8B;IAE9B,GAAG,CACD,KAAK,CAAC,MAAM,CACV,wGAAwG,CACzG,CACF,CAAA;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IAChC,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -5,5 +5,7 @@ interface LocalElement {
|
|
|
5
5
|
data: Record<string, unknown>;
|
|
6
6
|
remoteId?: string;
|
|
7
7
|
}
|
|
8
|
+
export declare const hasValueToSet: (element: LocalElement) => boolean;
|
|
9
|
+
export declare const findElementsToSet: (elements: LocalElement[]) => LocalElement[];
|
|
8
10
|
export declare function promptForValueSetting(elements: LocalElement[], log: (message: string) => void): Promise<boolean>;
|
|
9
11
|
export {};
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { confirm } from '@inquirer/prompts';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
export const hasValueToSet = (element) => element.folder === 'values' &&
|
|
4
|
+
(element.data.value !== undefined || element.data.ref !== undefined);
|
|
5
|
+
export const findElementsToSet = (elements) => elements.filter(hasValueToSet);
|
|
3
6
|
export async function promptForValueSetting(elements, log) {
|
|
4
|
-
const
|
|
5
|
-
if (
|
|
7
|
+
const elementsToSet = findElementsToSet(elements);
|
|
8
|
+
if (elementsToSet.length === 0) {
|
|
6
9
|
return false;
|
|
7
10
|
}
|
|
8
11
|
log(chalk.white('The following value elements have values set:'));
|
|
9
|
-
for (const element of
|
|
12
|
+
for (const element of elementsToSet) {
|
|
10
13
|
log(chalk.white(` - ${element.key}`));
|
|
11
14
|
}
|
|
12
15
|
log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptForValue.js","sourceRoot":"","sources":["../../src/utils/promptForValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"promptForValue.js","sourceRoot":"","sources":["../../src/utils/promptForValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAezB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAqB,EAAW,EAAE,CAC9D,OAAO,CAAC,MAAM,KAAK,QAAQ;IAC3B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAA;AAKtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAwB,EAAkB,EAAE,CAC5E,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAOhC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAwB,EACxB,GAA8B;IAE9B,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAGjD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAGD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAA;IACjE,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,CAAA;IAGP,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,sDAAsD;YAC/D,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC;IAAC,MAAM,CAAC;QAEP,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GraphQLRequestClient } from './graphqlClient.js';
|
|
2
|
+
import type { ResolveElementIncludeQuery } from '../generated/operations.js';
|
|
3
|
+
export type ResolvedInclude = ResolveElementIncludeQuery['resolveElementInclude'];
|
|
4
|
+
export default function resolveElementIncludes(graphqlClient: GraphQLRequestClient, elementId: string, sourceTimestamp: string | undefined, log: (message: string) => void): Promise<ResolvedInclude[] | undefined>;
|
|
5
|
+
export declare function endpointListKeys(list: ResolvedInclude): string[] | undefined;
|
|
6
|
+
export declare function resolveEndpointIncludes(graphqlClient: GraphQLRequestClient, list: ResolvedInclude, sourceTimestamp: string | undefined, log: (message: string) => void): Promise<ResolvedInclude[] | undefined>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { handleGraphQLError, isNotFoundError } from './graphqlError.js';
|
|
4
|
+
import { companionElementType, isEndpointKeys } from './serviceFile.js';
|
|
5
|
+
import { ElementType } from '../generated/schema.js';
|
|
6
|
+
const ResolveElementIncludeQueryDocument = gql `
|
|
7
|
+
query ResolveElementInclude($elementId: ID!, $sourceTimestamp: DateTime) {
|
|
8
|
+
resolveElementInclude(
|
|
9
|
+
elementId: $elementId
|
|
10
|
+
sourceTimestamp: $sourceTimestamp
|
|
11
|
+
) {
|
|
12
|
+
key
|
|
13
|
+
name
|
|
14
|
+
description
|
|
15
|
+
type
|
|
16
|
+
integration {
|
|
17
|
+
id
|
|
18
|
+
}
|
|
19
|
+
content {
|
|
20
|
+
sourceId
|
|
21
|
+
sourceTimestamp
|
|
22
|
+
provenance
|
|
23
|
+
data
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const ElementIdByKeyQueryDocument = gql `
|
|
29
|
+
query ElementIdByKey($integrationId: ID!, $key: ID!, $type: ElementType!) {
|
|
30
|
+
elementByKey(integrationId: $integrationId, key: $key, type: $type) {
|
|
31
|
+
id
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
`;
|
|
35
|
+
async function resolveOne(graphqlClient, elementId, sourceTimestamp, log) {
|
|
36
|
+
const result = await graphqlClient.request(ResolveElementIncludeQueryDocument, { elementId, sourceTimestamp });
|
|
37
|
+
if (result.error) {
|
|
38
|
+
handleGraphQLError(result.error, log);
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return result.data?.resolveElementInclude;
|
|
42
|
+
}
|
|
43
|
+
async function findElementId(graphqlClient, integrationId, key, type, log) {
|
|
44
|
+
const result = await graphqlClient.request(ElementIdByKeyQueryDocument, { integrationId, key, type });
|
|
45
|
+
if (result.error) {
|
|
46
|
+
if (isNotFoundError(result.error)) {
|
|
47
|
+
return { status: 'none' };
|
|
48
|
+
}
|
|
49
|
+
handleGraphQLError(result.error, log);
|
|
50
|
+
return { status: 'error' };
|
|
51
|
+
}
|
|
52
|
+
const id = result.data?.elementByKey?.id;
|
|
53
|
+
return id ? { status: 'found', id } : { status: 'none' };
|
|
54
|
+
}
|
|
55
|
+
async function findCompanionId(graphqlClient, resolved, log) {
|
|
56
|
+
const type = companionElementType(resolved.type);
|
|
57
|
+
if (!type || !resolved.integration) {
|
|
58
|
+
return { status: 'none' };
|
|
59
|
+
}
|
|
60
|
+
return findElementId(graphqlClient, resolved.integration.id, resolved.key, type, log);
|
|
61
|
+
}
|
|
62
|
+
export default async function resolveElementIncludes(graphqlClient, elementId, sourceTimestamp, log) {
|
|
63
|
+
const resolved = await resolveOne(graphqlClient, elementId, sourceTimestamp, log);
|
|
64
|
+
if (!resolved) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
const lookup = await findCompanionId(graphqlClient, resolved, log);
|
|
68
|
+
if (lookup.status === 'error') {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
if (lookup.status === 'none') {
|
|
72
|
+
return [resolved];
|
|
73
|
+
}
|
|
74
|
+
const companion = await resolveOne(graphqlClient, lookup.id, sourceTimestamp, log);
|
|
75
|
+
if (!companion) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
return companion.content?.sourceId ? [resolved, companion] : [resolved];
|
|
79
|
+
}
|
|
80
|
+
export function endpointListKeys(list) {
|
|
81
|
+
const endpoints = list.content?.data?.endpoints;
|
|
82
|
+
return isEndpointKeys(endpoints) ? endpoints : undefined;
|
|
83
|
+
}
|
|
84
|
+
async function resolveEndpoint(graphqlClient, integrationId, key, sourceTimestamp, log) {
|
|
85
|
+
const lookup = await findElementId(graphqlClient, integrationId, key, ElementType.Endpoint, log);
|
|
86
|
+
if (lookup.status === 'none') {
|
|
87
|
+
log(chalk.yellow(`Endpoint ${key} was not found in the source integration`));
|
|
88
|
+
return 'none';
|
|
89
|
+
}
|
|
90
|
+
if (lookup.status === 'error') {
|
|
91
|
+
return 'error';
|
|
92
|
+
}
|
|
93
|
+
const resolved = await resolveOne(graphqlClient, lookup.id, sourceTimestamp, log);
|
|
94
|
+
return resolved ?? 'error';
|
|
95
|
+
}
|
|
96
|
+
export async function resolveEndpointIncludes(graphqlClient, list, sourceTimestamp, log) {
|
|
97
|
+
const keys = endpointListKeys(list) ?? [];
|
|
98
|
+
if (!list.integration || keys.length === 0) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
const endpoints = [];
|
|
102
|
+
for (const key of keys) {
|
|
103
|
+
const resolved = await resolveEndpoint(graphqlClient, list.integration.id, key, sourceTimestamp, log);
|
|
104
|
+
if (resolved === 'error') {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
else if (resolved !== 'none') {
|
|
108
|
+
endpoints.push(resolved);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return endpoints;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=resolveElementIncludes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveElementIncludes.js","sourceRoot":"","sources":["../../src/utils/resolveElementIncludes.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { emptyGreatFile, readGreatFile, writeGreatFile, setElementRecord, getEle
|
|
|
5
5
|
import { elementFilePath, elementKeyFromFileName, isVirtualFolder, } from './elementFiles.js';
|
|
6
6
|
import { SERVICES_FOLDER, mergeServiceFile, serviceFileFolders, } from './serviceFile.js';
|
|
7
7
|
import { SHADOW_MARKER, shadowMarkerFor } from './shadowMarker.js';
|
|
8
|
+
import { CONFIG_KEY, CONFIG_RECORD_FOLDER, buildConfigRecord, findConfigElement, } from './integrationConfig.js';
|
|
8
9
|
const normalizeFolderName = (folder) => folder.replace(':', '_');
|
|
9
10
|
function createFolderIfMissing(root, fsImpl) {
|
|
10
11
|
const rootPath = root ? `${root}/` : '';
|
|
@@ -155,13 +156,14 @@ export default function saveIntegration(integration, definitions, root, fsImpl =
|
|
|
155
156
|
great.id = id;
|
|
156
157
|
great.timestamp = timestamp ?? undefined;
|
|
157
158
|
great.account = account ? { id: account.id, key: account.key } : undefined;
|
|
158
|
-
const config = elements
|
|
159
|
+
const config = findConfigElement(elements);
|
|
160
|
+
const flags = config?.content?.data;
|
|
159
161
|
const index = {
|
|
160
162
|
name,
|
|
161
163
|
description,
|
|
162
164
|
status,
|
|
163
165
|
type: resolveIntegrationType(type),
|
|
164
|
-
flags
|
|
166
|
+
flags,
|
|
165
167
|
identConfig: undefined,
|
|
166
168
|
nonvalues: undefined,
|
|
167
169
|
queueService: undefined,
|
|
@@ -172,6 +174,9 @@ export default function saveIntegration(integration, definitions, root, fsImpl =
|
|
|
172
174
|
if (elements) {
|
|
173
175
|
writeElements(elements, writeFile, great);
|
|
174
176
|
}
|
|
177
|
+
if (config) {
|
|
178
|
+
setElementRecord(great, CONFIG_RECORD_FOLDER, CONFIG_KEY, buildConfigRecord(config.id, config.content?.createdAt, flags ?? {}));
|
|
179
|
+
}
|
|
175
180
|
const imports = buildImportRecords(templateImports);
|
|
176
181
|
if (imports.length > 0) {
|
|
177
182
|
great.imports = imports;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveIntegration.js","sourceRoot":"","sources":["../../src/utils/saveIntegration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,WAAW,MAAM,kBAAkB,CAAA;AAC1C,OAAO,sBAAsB,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"saveIntegration.js","sourceRoot":"","sources":["../../src/utils/saveIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ElementType } from '../generated/schema.js';
|
|
1
2
|
import type { ShadowMarker } from './shadowMarker.js';
|
|
2
3
|
import type { GreatFile } from './greatFile.js';
|
|
3
4
|
import type { GreatFs } from '../types.js';
|
|
@@ -14,6 +15,7 @@ export interface ServiceFileParts {
|
|
|
14
15
|
}
|
|
15
16
|
export declare const isServiceFileFolder: (folder: string) => boolean;
|
|
16
17
|
export declare const serviceFileFolders: (folder: string) => string[];
|
|
18
|
+
export declare const companionElementType: (type: ElementType) => ElementType | undefined;
|
|
17
19
|
export interface EndpointReferenceElement {
|
|
18
20
|
folder: string;
|
|
19
21
|
key: string;
|
|
@@ -28,4 +30,5 @@ export declare function mergeServiceFile(parts: {
|
|
|
28
30
|
list?: EndpointListContent;
|
|
29
31
|
}, marker?: ShadowMarker): Record<string, unknown>;
|
|
30
32
|
export declare function readServiceFileParts(filePath: string, fsImpl: GreatFs): ServiceFileParts;
|
|
33
|
+
export declare const isEndpointKeys: (value: unknown) => value is string[];
|
|
31
34
|
export declare function validateEndpointReferences(elements: readonly EndpointReferenceElement[], great: GreatFile): string[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import parseJson from './parseJson.js';
|
|
2
2
|
import { SHADOW_MARKER } from './shadowMarker.js';
|
|
3
|
+
import { ElementType } from '../generated/schema.js';
|
|
3
4
|
export const SERVICES_FOLDER = 'services';
|
|
4
5
|
export const ENDPOINTS_FOLDER = 'endpoints';
|
|
5
6
|
export const ENDPOINT_LISTS_FOLDER = 'endpointLists';
|
|
@@ -7,6 +8,11 @@ export const isServiceFileFolder = (folder) => folder === SERVICES_FOLDER || fol
|
|
|
7
8
|
export const serviceFileFolders = (folder) => folder === SERVICES_FOLDER
|
|
8
9
|
? [ENDPOINT_LISTS_FOLDER, SERVICES_FOLDER]
|
|
9
10
|
: [folder];
|
|
11
|
+
export const companionElementType = (type) => type === ElementType.Service
|
|
12
|
+
? ElementType.EndpointList
|
|
13
|
+
: type === ElementType.EndpointList
|
|
14
|
+
? ElementType.Service
|
|
15
|
+
: undefined;
|
|
10
16
|
export function classifyEndpoints(endpoints) {
|
|
11
17
|
if (!Array.isArray(endpoints)) {
|
|
12
18
|
return 'none';
|
|
@@ -59,7 +65,7 @@ export function readServiceFileParts(filePath, fsImpl) {
|
|
|
59
65
|
const data = parseJson(fsImpl.readFileSync(filePath, 'utf8'));
|
|
60
66
|
return splitServiceFile(data, filePath);
|
|
61
67
|
}
|
|
62
|
-
const isEndpointKeys = (value) => classifyEndpoints(value) === 'keys';
|
|
68
|
+
export const isEndpointKeys = (value) => classifyEndpoints(value) === 'keys';
|
|
63
69
|
const endpointFileKeys = (elements) => elements
|
|
64
70
|
.filter((element) => element.folder === ENDPOINTS_FOLDER)
|
|
65
71
|
.map((element) => element.key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceFile.js","sourceRoot":"","sources":["../../src/utils/serviceFile.ts"],"names":[],"mappings":"AAuBA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"serviceFile.js","sourceRoot":"","sources":["../../src/utils/serviceFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
+
import type { ElementTarget } from './elementFiles.js';
|
|
1
2
|
import type { GreatFile } from './greatFile.js';
|
|
2
|
-
import type {
|
|
3
|
+
import type { ResolveTemplateImportQuery } from '../generated/operations.js';
|
|
3
4
|
import type { GreatFs } from '../types.js';
|
|
4
|
-
export type ResolvedShadow =
|
|
5
|
+
export type ResolvedShadow = ResolveTemplateImportQuery['resolveTemplateImport']['elements'][number];
|
|
5
6
|
export interface ShadowConflict {
|
|
6
7
|
key: string;
|
|
7
8
|
folder: string;
|
|
8
9
|
reason: string;
|
|
9
10
|
}
|
|
10
11
|
export interface WriteShadowsResult {
|
|
11
|
-
written:
|
|
12
|
-
|
|
13
|
-
key: string;
|
|
14
|
-
}[];
|
|
12
|
+
written: ElementTarget[];
|
|
13
|
+
merged: ElementTarget[];
|
|
15
14
|
skipped: ResolvedShadow[];
|
|
16
15
|
conflicts: ShadowConflict[];
|
|
17
16
|
}
|
|
17
|
+
export type ShadowMode = 'include' | 'import';
|
|
18
18
|
interface WriteShadowsOptions {
|
|
19
|
+
mode: ShadowMode;
|
|
19
20
|
root?: string;
|
|
20
21
|
fsImpl?: GreatFs;
|
|
21
22
|
}
|
|
22
|
-
export declare function
|
|
23
|
+
export declare function isLocalOccupant(great: GreatFile, folder: string, key: string, root: string | undefined, fsImpl: GreatFs): boolean;
|
|
24
|
+
export declare const findLocalOccupants: (great: GreatFile, elements: readonly ResolvedShadow[], root: string | undefined, fsImpl: GreatFs) => ElementTarget[];
|
|
25
|
+
export declare function writeShadowElements(great: GreatFile, resolved: readonly ResolvedShadow[], options: WriteShadowsOptions): WriteShadowsResult;
|
|
23
26
|
export declare function logShadowConflicts(verb: string, conflicts: readonly ShadowConflict[], log: (message: string) => void): void;
|
|
24
27
|
export {};
|