great 1.2.2 → 1.4.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 +122 -50
- package/dist/clone/index.d.ts +2 -2
- package/dist/clone/index.js.map +1 -1
- package/dist/deploy/index.d.ts +2 -2
- package/dist/deploy/index.js.map +1 -1
- package/dist/explode/index.d.ts +2 -2
- package/dist/explode/index.js.map +1 -1
- package/dist/generated/operations.d.ts +30 -8
- package/dist/generated/schema.d.ts +138 -2
- package/dist/generated/schema.js +15 -0
- package/dist/generated/schema.js.map +1 -1
- package/dist/implode/index.d.ts +2 -2
- package/dist/implode/index.js +1 -0
- package/dist/implode/index.js.map +1 -1
- package/dist/implode/transform.d.ts +1 -0
- package/dist/implode/transform.js +16 -2
- package/dist/implode/transform.js.map +1 -1
- package/dist/import/index.d.ts +4 -2
- package/dist/import/index.js +27 -6
- package/dist/import/index.js.map +1 -1
- package/dist/include/index.d.ts +4 -2
- 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/init/index.d.ts +2 -2
- package/dist/init/index.js +3 -3
- package/dist/init/index.js.map +1 -1
- package/dist/integrations/create.js +1 -1
- package/dist/integrations/create.js.map +1 -1
- package/dist/integrations/index.js +6 -1
- 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/migrate/index.d.ts +5 -2
- package/dist/migrate/index.js +102 -4
- package/dist/migrate/index.js.map +1 -1
- package/dist/pull/index.d.ts +2 -2
- package/dist/pull/index.js.map +1 -1
- package/dist/push/index.d.ts +3 -2
- package/dist/push/index.js +168 -73
- 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.d.ts +2 -2
- package/dist/rename/index.js +54 -23
- package/dist/rename/index.js.map +1 -1
- package/dist/run/index.d.ts +29 -2
- package/dist/run/index.js.map +1 -1
- package/dist/status/index.d.ts +2 -2
- package/dist/status/index.js +1 -1
- package/dist/status/index.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/utils/createIntegrationFromFile.d.ts +2 -2
- package/dist/utils/createIntegrationFromFile.js.map +1 -1
- package/dist/utils/detectPullConflicts.d.ts +2 -2
- package/dist/utils/detectPullConflicts.js +9 -14
- package/dist/utils/detectPullConflicts.js.map +1 -1
- package/dist/utils/elementFiles.d.ts +24 -5
- package/dist/utils/elementFiles.js +147 -8
- package/dist/utils/elementFiles.js.map +1 -1
- package/dist/utils/fetchLocal.d.ts +4 -4
- package/dist/utils/fetchLocal.js.map +1 -1
- package/dist/utils/graphqlError.js +16 -2
- package/dist/utils/graphqlError.js.map +1 -1
- package/dist/utils/greatFile.d.ts +3 -3
- package/dist/utils/greatFile.js.map +1 -1
- 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/promptForDetach.d.ts +6 -0
- package/dist/utils/promptForDetach.js +15 -0
- package/dist/utils/promptForDetach.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 +1 -0
- package/dist/utils/promptForValue.js +5 -3
- package/dist/utils/promptForValue.js.map +1 -1
- package/dist/utils/resolveAccount.d.ts +2 -2
- package/dist/utils/resolveAccount.js.map +1 -1
- package/dist/utils/resolveElement.d.ts +2 -0
- package/dist/utils/resolveElement.js +8 -0
- package/dist/utils/resolveElement.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.d.ts +2 -2
- package/dist/utils/saveIntegration.js +54 -30
- package/dist/utils/saveIntegration.js.map +1 -1
- package/dist/utils/serviceFile.d.ts +34 -0
- package/dist/utils/serviceFile.js +95 -0
- package/dist/utils/serviceFile.js.map +1 -0
- package/dist/utils/shadowMarker.d.ts +5 -0
- package/dist/utils/shadowMarker.js +16 -0
- package/dist/utils/shadowMarker.js.map +1 -0
- package/dist/utils/writeShadowElement.d.ts +12 -10
- package/dist/utils/writeShadowElement.js +98 -58
- package/dist/utils/writeShadowElement.js.map +1 -1
- package/dist/values/get.d.ts +2 -2
- package/dist/values/get.js.map +1 -1
- package/dist/values/list.d.ts +2 -2
- package/dist/values/list.js.map +1 -1
- package/dist/values/set.d.ts +2 -2
- package/dist/values/set.js.map +1 -1
- package/dist/values/unset.d.ts +2 -2
- package/dist/values/unset.js.map +1 -1
- package/package.json +16 -17
- package/quality.toml +4 -0
- package/dist/utils/resolveElementInclude.d.ts +0 -3
- package/dist/utils/resolveElementInclude.js +0 -27
- package/dist/utils/resolveElementInclude.js.map +0 -1
|
@@ -1,13 +1,32 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
1
|
import { ElementType } from '../generated/schema.js';
|
|
2
|
+
import type { GreatFile } from './greatFile.js';
|
|
3
|
+
import type { GreatFs } from '../types.js';
|
|
4
|
+
export interface ReadElementFile {
|
|
5
|
+
key: string;
|
|
6
|
+
filePath: string;
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface LocalElementFile extends ReadElementFile {
|
|
10
|
+
folder: string;
|
|
11
|
+
}
|
|
3
12
|
export declare const elementTypeToFolder: Record<ElementType, string | undefined>;
|
|
4
13
|
export declare const folderToElementType: Record<string, ElementType>;
|
|
5
14
|
export declare const ELEMENT_FOLDERS: readonly string[];
|
|
15
|
+
export declare const VIRTUAL_FOLDERS: readonly string[];
|
|
16
|
+
export declare const isVirtualFolder: (folder: string) => boolean;
|
|
17
|
+
export declare const fileFolder: (folder: string) => string;
|
|
6
18
|
export declare const JSON_EXTENSIONS: readonly [".jsonc", ".json"];
|
|
7
19
|
export declare function elementKeyFromFileName(fileName: string): string | undefined;
|
|
8
|
-
export interface
|
|
20
|
+
export interface ElementTarget {
|
|
21
|
+
folder: string;
|
|
9
22
|
key: string;
|
|
10
|
-
filePath: string;
|
|
11
|
-
data: Record<string, unknown>;
|
|
12
23
|
}
|
|
13
|
-
export declare function
|
|
24
|
+
export declare function parseElementTarget(target: string): ElementTarget | undefined;
|
|
25
|
+
export declare function findElementFile(root: string | undefined, folder: string, key: string, fsImpl: GreatFs): string | undefined;
|
|
26
|
+
export declare function hasElementFile(root: string | undefined, folder: string, key: string, fsImpl: GreatFs): boolean;
|
|
27
|
+
export declare const elementFilePath: (root: string | undefined, folder: string, key: string, fsImpl: GreatFs) => string;
|
|
28
|
+
export declare const readEndpointListKeys: (root: string | undefined, key: string, fsImpl: GreatFs) => string[];
|
|
29
|
+
export declare function readElementFolder(folder: string, root: string | undefined, fsImpl: GreatFs): ReadElementFile[];
|
|
30
|
+
export declare function readWorkspaceElements(root: string | undefined, fsImpl: GreatFs): LocalElementFile[];
|
|
31
|
+
export declare function writeElementFile(root: string | undefined, folder: string, key: string, data: Record<string, unknown>, great: GreatFile, fsImpl?: GreatFs, knownPath?: string): string;
|
|
32
|
+
export declare function removeElementFile(root: string | undefined, folder: string, key: string, great: GreatFile, fsImpl?: GreatFs): void;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import parseJson from './parseJson.js';
|
|
3
4
|
import { ElementType } from '../generated/schema.js';
|
|
5
|
+
import { ENDPOINT_LISTS_FOLDER, ENDPOINTS_FOLDER, SERVICES_FOLDER, isServiceFileFolder, mergeServiceFile, readServiceFileParts, splitServiceFile, } from './serviceFile.js';
|
|
6
|
+
import { getElementRecord } from './greatFile.js';
|
|
7
|
+
import { SHADOW_MARKER, shadowMarkerFor, stripShadowMarker, } from './shadowMarker.js';
|
|
4
8
|
export const elementTypeToFolder = {
|
|
5
9
|
[ElementType.Schema]: 'schemas',
|
|
6
|
-
[ElementType.Service]:
|
|
10
|
+
[ElementType.Service]: SERVICES_FOLDER,
|
|
11
|
+
[ElementType.Endpoint]: ENDPOINTS_FOLDER,
|
|
12
|
+
[ElementType.EndpointList]: ENDPOINT_LISTS_FOLDER,
|
|
7
13
|
[ElementType.Auth]: 'auths',
|
|
8
14
|
[ElementType.Mutation]: 'mutations',
|
|
9
15
|
[ElementType.Dictionary]: 'dictionaries',
|
|
@@ -15,7 +21,9 @@ export const elementTypeToFolder = {
|
|
|
15
21
|
};
|
|
16
22
|
export const folderToElementType = {
|
|
17
23
|
schemas: ElementType.Schema,
|
|
18
|
-
|
|
24
|
+
[SERVICES_FOLDER]: ElementType.Service,
|
|
25
|
+
[ENDPOINTS_FOLDER]: ElementType.Endpoint,
|
|
26
|
+
[ENDPOINT_LISTS_FOLDER]: ElementType.EndpointList,
|
|
19
27
|
auths: ElementType.Auth,
|
|
20
28
|
mutations: ElementType.Mutation,
|
|
21
29
|
dictionaries: ElementType.Dictionary,
|
|
@@ -26,7 +34,8 @@ export const folderToElementType = {
|
|
|
26
34
|
};
|
|
27
35
|
export const ELEMENT_FOLDERS = [
|
|
28
36
|
'schemas',
|
|
29
|
-
|
|
37
|
+
SERVICES_FOLDER,
|
|
38
|
+
ENDPOINTS_FOLDER,
|
|
30
39
|
'auths',
|
|
31
40
|
'mutations',
|
|
32
41
|
'dictionaries',
|
|
@@ -35,19 +44,50 @@ export const ELEMENT_FOLDERS = [
|
|
|
35
44
|
'flows',
|
|
36
45
|
'retryRules',
|
|
37
46
|
];
|
|
47
|
+
export const VIRTUAL_FOLDERS = [ENDPOINT_LISTS_FOLDER];
|
|
48
|
+
export const isVirtualFolder = (folder) => VIRTUAL_FOLDERS.includes(folder);
|
|
49
|
+
export const fileFolder = (folder) => folder === ENDPOINT_LISTS_FOLDER ? SERVICES_FOLDER : folder;
|
|
38
50
|
export const JSON_EXTENSIONS = ['.jsonc', '.json'];
|
|
39
51
|
export function elementKeyFromFileName(fileName) {
|
|
40
52
|
const ext = JSON_EXTENSIONS.find((e) => fileName.endsWith(e));
|
|
41
53
|
return ext ? fileName.slice(0, -ext.length) : undefined;
|
|
42
54
|
}
|
|
55
|
+
export function parseElementTarget(target) {
|
|
56
|
+
const [folder, key, ...extra] = target.split('/');
|
|
57
|
+
return folder && key && extra.length === 0 ? { folder, key } : undefined;
|
|
58
|
+
}
|
|
59
|
+
const folderPath = (root, folder) => root ? path.join(root, folder) : folder;
|
|
60
|
+
export function findElementFile(root, folder, key, fsImpl) {
|
|
61
|
+
for (const ext of JSON_EXTENSIONS) {
|
|
62
|
+
const filePath = path.join(folderPath(root, fileFolder(folder)), `${key}${ext}`);
|
|
63
|
+
if (fsImpl.existsSync(filePath)) {
|
|
64
|
+
return filePath;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
export function hasElementFile(root, folder, key, fsImpl) {
|
|
70
|
+
const filePath = findElementFile(root, folder, key, fsImpl);
|
|
71
|
+
if (!filePath) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (isServiceFileFolder(folder)) {
|
|
75
|
+
const parts = readServiceFileParts(filePath, fsImpl);
|
|
76
|
+
return Boolean(folder === SERVICES_FOLDER ? parts.service : parts.list);
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
export const elementFilePath = (root, folder, key, fsImpl) => findElementFile(root, folder, key, fsImpl) ??
|
|
81
|
+
path.join(folderPath(root, fileFolder(folder)), `${key}.json`);
|
|
82
|
+
export const readEndpointListKeys = (root, key, fsImpl) => readServiceFileParts(elementFilePath(root, ENDPOINT_LISTS_FOLDER, key, fsImpl), fsImpl).list?.endpoints ?? [];
|
|
43
83
|
export function readElementFolder(folder, root, fsImpl) {
|
|
44
|
-
const
|
|
45
|
-
if (!fsImpl.existsSync(
|
|
84
|
+
const dirPath = folderPath(root, folder);
|
|
85
|
+
if (!fsImpl.existsSync(dirPath)) {
|
|
46
86
|
return [];
|
|
47
87
|
}
|
|
48
88
|
const seenKeys = new Map();
|
|
49
89
|
const elements = [];
|
|
50
|
-
for (const file of fsImpl.readdirSync(
|
|
90
|
+
for (const file of fsImpl.readdirSync(dirPath)) {
|
|
51
91
|
const fileName = String(file);
|
|
52
92
|
const key = elementKeyFromFileName(fileName);
|
|
53
93
|
if (!key) {
|
|
@@ -58,7 +98,7 @@ export function readElementFolder(folder, root, fsImpl) {
|
|
|
58
98
|
throw new Error(`Duplicate element key "${key}" in ${folder}/: found both ${existingFile} and ${fileName}`);
|
|
59
99
|
}
|
|
60
100
|
seenKeys.set(key, fileName);
|
|
61
|
-
const filePath = path.join(
|
|
101
|
+
const filePath = path.join(dirPath, fileName);
|
|
62
102
|
try {
|
|
63
103
|
const content = fsImpl.readFileSync(filePath, 'utf8');
|
|
64
104
|
elements.push({
|
|
@@ -68,9 +108,108 @@ export function readElementFolder(folder, root, fsImpl) {
|
|
|
68
108
|
});
|
|
69
109
|
}
|
|
70
110
|
catch (error) {
|
|
71
|
-
throw new Error(`Failed to read or parse ${filePath}: ${error}
|
|
111
|
+
throw new Error(`Failed to read or parse ${filePath}: ${error}`, {
|
|
112
|
+
cause: error,
|
|
113
|
+
});
|
|
72
114
|
}
|
|
73
115
|
}
|
|
74
116
|
return elements;
|
|
75
117
|
}
|
|
118
|
+
function splitServiceElements(file) {
|
|
119
|
+
const parts = splitServiceFile(file.data, file.filePath);
|
|
120
|
+
return {
|
|
121
|
+
...(parts.service
|
|
122
|
+
? {
|
|
123
|
+
service: {
|
|
124
|
+
folder: SERVICES_FOLDER,
|
|
125
|
+
key: file.key,
|
|
126
|
+
filePath: file.filePath,
|
|
127
|
+
data: parts.service,
|
|
128
|
+
},
|
|
129
|
+
}
|
|
130
|
+
: {}),
|
|
131
|
+
...(parts.list
|
|
132
|
+
? {
|
|
133
|
+
list: {
|
|
134
|
+
folder: ENDPOINT_LISTS_FOLDER,
|
|
135
|
+
key: file.key,
|
|
136
|
+
filePath: file.filePath,
|
|
137
|
+
data: { ...parts.list },
|
|
138
|
+
},
|
|
139
|
+
}
|
|
140
|
+
: {}),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function rejectEndpointListFiles(root, fsImpl) {
|
|
144
|
+
const files = readElementFolder(ENDPOINT_LISTS_FOLDER, root, fsImpl);
|
|
145
|
+
if (files.length > 0) {
|
|
146
|
+
throw new Error(`Endpoint lists are kept in their service file as \`endpoints\`, not in ${ENDPOINT_LISTS_FOLDER}/. Move the endpoint keys in ${files[0].filePath} to the service file and delete the ${ENDPOINT_LISTS_FOLDER} folder`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
export function readWorkspaceElements(root, fsImpl) {
|
|
150
|
+
rejectEndpointListFiles(root, fsImpl);
|
|
151
|
+
const elements = [];
|
|
152
|
+
const lists = [];
|
|
153
|
+
for (const folder of ELEMENT_FOLDERS) {
|
|
154
|
+
for (const file of readElementFolder(folder, root, fsImpl)) {
|
|
155
|
+
if (folder === SERVICES_FOLDER) {
|
|
156
|
+
const { service, list } = splitServiceElements(file);
|
|
157
|
+
if (service) {
|
|
158
|
+
elements.push(service);
|
|
159
|
+
}
|
|
160
|
+
if (list) {
|
|
161
|
+
lists.push(list);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
elements.push({ folder, ...file, data: stripShadowMarker(file.data) });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return [...elements, ...lists];
|
|
170
|
+
}
|
|
171
|
+
const isShadowRecord = (great, folder, key) => Boolean(getElementRecord(great, folder, key)?.source);
|
|
172
|
+
function buildServiceFile(folder, key, data, great, filePath, fsImpl) {
|
|
173
|
+
const existing = readServiceFileParts(filePath, fsImpl);
|
|
174
|
+
const service = folder === SERVICES_FOLDER ? data : existing.service;
|
|
175
|
+
const list = folder === ENDPOINT_LISTS_FOLDER
|
|
176
|
+
? { endpoints: data.endpoints }
|
|
177
|
+
: existing.list;
|
|
178
|
+
const marker = shadowMarkerFor(Boolean(service) && isShadowRecord(great, SERVICES_FOLDER, key), Boolean(list) && isShadowRecord(great, ENDPOINT_LISTS_FOLDER, key));
|
|
179
|
+
return mergeServiceFile({ service, list }, marker);
|
|
180
|
+
}
|
|
181
|
+
export function writeElementFile(root, folder, key, data, great, fsImpl = fs, knownPath) {
|
|
182
|
+
const filePath = knownPath ?? elementFilePath(root, folder, key, fsImpl);
|
|
183
|
+
const content = isServiceFileFolder(folder)
|
|
184
|
+
? buildServiceFile(folder, key, data, great, filePath, fsImpl)
|
|
185
|
+
: {
|
|
186
|
+
...(isShadowRecord(great, folder, key)
|
|
187
|
+
? { [SHADOW_MARKER]: true }
|
|
188
|
+
: {}),
|
|
189
|
+
...data,
|
|
190
|
+
};
|
|
191
|
+
const dirPath = folderPath(root, fileFolder(folder));
|
|
192
|
+
if (!fsImpl.existsSync(dirPath)) {
|
|
193
|
+
fsImpl.mkdirSync(dirPath, { recursive: true });
|
|
194
|
+
}
|
|
195
|
+
fsImpl.writeFileSync(filePath, JSON.stringify(content, undefined, 2));
|
|
196
|
+
return filePath;
|
|
197
|
+
}
|
|
198
|
+
export function removeElementFile(root, folder, key, great, fsImpl = fs) {
|
|
199
|
+
const filePath = findElementFile(root, folder, key, fsImpl);
|
|
200
|
+
if (!filePath) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const service = folder === ENDPOINT_LISTS_FOLDER
|
|
204
|
+
? readServiceFileParts(filePath, fsImpl).service
|
|
205
|
+
: undefined;
|
|
206
|
+
if (service) {
|
|
207
|
+
const marker = shadowMarkerFor(isShadowRecord(great, SERVICES_FOLDER, key), false);
|
|
208
|
+
const content = mergeServiceFile({ service }, marker);
|
|
209
|
+
fsImpl.writeFileSync(filePath, JSON.stringify(content, undefined, 2));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
fsImpl.unlinkSync(filePath);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
76
215
|
//# sourceMappingURL=elementFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementFiles.js","sourceRoot":"","sources":["../../src/utils/elementFiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"elementFiles.js","sourceRoot":"","sources":["../../src/utils/elementFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { GreatFs } from '../types.js';
|
|
2
2
|
export declare function currentIntegrationKey(): string;
|
|
3
|
-
export declare function fetchIntegrationId(fsImpl?:
|
|
4
|
-
export declare function fetchAccountFromFolder(fsImpl?:
|
|
5
|
-
export declare function fetchIntegrationFromFile(fsImpl?:
|
|
3
|
+
export declare function fetchIntegrationId(fsImpl?: GreatFs): string | undefined;
|
|
4
|
+
export declare function fetchAccountFromFolder(fsImpl?: GreatFs): string | undefined;
|
|
5
|
+
export declare function fetchIntegrationFromFile(fsImpl?: GreatFs): Record<string, unknown> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchLocal.js","sourceRoot":"","sources":["../../src/utils/fetchLocal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"fetchLocal.js","sourceRoot":"","sources":["../../src/utils/fetchLocal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAKhE,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AACrC,CAAC;AAKD,MAAM,UAAU,kBAAkB,CAAC,SAAkB,EAAE;IACrD,OAAO,gBAAgB,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAC3D,CAAC;AAKD,MAAM,UAAU,sBAAsB,CAAC,SAAkB,EAAE;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACpD,OAAO,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,GAAG,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAAkB,EAAE;IAEpB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -6,16 +6,30 @@ export function isNotFoundError(error) {
|
|
|
6
6
|
}
|
|
7
7
|
return error?.message?.includes('NOT_FOUND');
|
|
8
8
|
}
|
|
9
|
+
const UNAVAILABLE_STATUSES = [502, 503, 504];
|
|
10
|
+
function isHttpErrorStatus(status) {
|
|
11
|
+
return typeof status === 'number' && (status < 200 || status >= 300);
|
|
12
|
+
}
|
|
13
|
+
function getHttpErrorMessage(status) {
|
|
14
|
+
if (UNAVAILABLE_STATUSES.includes(status)) {
|
|
15
|
+
return `The API is not responding correctly (HTTP ${status}). It may be temporarily unavailable – please try again in a moment.`;
|
|
16
|
+
}
|
|
17
|
+
return `The API returned an unexpected response (HTTP ${status}).`;
|
|
18
|
+
}
|
|
9
19
|
export function getGraphQLErrorMessage(error) {
|
|
10
20
|
if (typeof error === 'string')
|
|
11
21
|
return error;
|
|
12
|
-
const
|
|
13
|
-
const messages = errors
|
|
22
|
+
const response = error.response;
|
|
23
|
+
const messages = response?.errors
|
|
14
24
|
?.map((err) => err.message)
|
|
15
25
|
.filter((message) => Boolean(message));
|
|
16
26
|
if (messages?.length) {
|
|
17
27
|
return messages.join('\n');
|
|
18
28
|
}
|
|
29
|
+
const status = response?.status;
|
|
30
|
+
if (isHttpErrorStatus(status)) {
|
|
31
|
+
return getHttpErrorMessage(status);
|
|
32
|
+
}
|
|
19
33
|
return error.message;
|
|
20
34
|
}
|
|
21
35
|
export function handleGraphQLError(error, log) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphqlError.js","sourceRoot":"","sources":["../../src/utils/graphqlError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"graphqlError.js","sourceRoot":"","sources":["../../src/utils/graphqlError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAgBzB,MAAM,UAAU,eAAe,CAAC,KAAY;IAE1C,MAAM,iBAAiB,GAAG,KAAkC,CAAA;IAE5D,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACvC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAC3C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,KAAK,WAAW,CAC9C,CAAA;IACH,CAAC;IAGD,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC;AAID,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAE5C,SAAS,iBAAiB,CAAC,MAAe;IACxC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,OAAO,6CAA6C,MAAM,sEAAsE,CAAA;IAClI,CAAC;IACD,OAAO,iDAAiD,MAAM,IAAI,CAAA;AACpE,CAAC;AAYD,MAAM,UAAU,sBAAsB,CAAC,KAAqB;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,MAAM,QAAQ,GAAI,KAAmC,CAAC,QAAQ,CAAA;IAC9D,MAAM,QAAQ,GAAG,QAAQ,EAAE,MAAM;QAC/B,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;SAC1B,MAAM,CAAC,CAAC,OAAO,EAAqB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3D,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAA;IAC/B,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAA;AACtB,CAAC;AAKD,MAAM,UAAU,kBAAkB,CAChC,KAAiC,EACjC,GAA8B;IAE9B,IAAI,CAAC,KAAK;QAAE,OAAM;IAElB,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAClC,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;QAClE,OAAM;IACR,CAAC;IAGD,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { GreatFs } from '../types.js';
|
|
2
2
|
export interface GreatElementSource {
|
|
3
3
|
id: string;
|
|
4
4
|
timestamp?: string;
|
|
@@ -26,8 +26,8 @@ export interface GreatFile {
|
|
|
26
26
|
elements: Record<string, GreatElementRecord>;
|
|
27
27
|
}
|
|
28
28
|
export declare const emptyGreatFile: () => GreatFile;
|
|
29
|
-
export declare function readGreatFile(root?: string, fsImpl?:
|
|
30
|
-
export declare function writeGreatFile(great: GreatFile, root?: string, fsImpl?:
|
|
29
|
+
export declare function readGreatFile(root?: string, fsImpl?: GreatFs): GreatFile;
|
|
30
|
+
export declare function writeGreatFile(great: GreatFile, root?: string, fsImpl?: GreatFs): void;
|
|
31
31
|
export declare const getIntegrationId: (great: GreatFile) => string | undefined;
|
|
32
32
|
export declare function getElementRecord(great: GreatFile, folder: string, key: string): GreatElementRecord | undefined;
|
|
33
33
|
export declare function setElementRecord(great: GreatFile, folder: string, key: string, record: GreatElementRecord): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"greatFile.js","sourceRoot":"","sources":["../../src/utils/greatFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"greatFile.js","sourceRoot":"","sources":["../../src/utils/greatFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,15 @@
|
|
|
1
|
+
import { confirm } from '@inquirer/prompts';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export async function promptForDetach(element, log) {
|
|
4
|
+
log(chalk.yellow(`${element.folder}/${element.key} is a shadow element, but its content has been changed locally.`));
|
|
5
|
+
try {
|
|
6
|
+
return await confirm({
|
|
7
|
+
message: 'Make it a local element with your changes? (No restores the file from its source)',
|
|
8
|
+
default: true,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
throw new Error('User cancelled');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=promptForDetach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptForDetach.js","sourceRoot":"","sources":["../../src/utils/promptForDetach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAsB,EACtB,GAA8B;IAE9B,GAAG,CACD,KAAK,CAAC,MAAM,CACV,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,iEAAiE,CAClG,CACF,CAAA;IACD,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC;YACnB,OAAO,EACL,mFAAmF;YACrF,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;AACH,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,6 @@ interface LocalElement {
|
|
|
5
5
|
data: Record<string, unknown>;
|
|
6
6
|
remoteId?: string;
|
|
7
7
|
}
|
|
8
|
+
export declare const findElementsToSet: (elements: LocalElement[]) => LocalElement[];
|
|
8
9
|
export declare function promptForValueSetting(elements: LocalElement[], log: (message: string) => void): Promise<boolean>;
|
|
9
10
|
export {};
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { confirm } from '@inquirer/prompts';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
export const findElementsToSet = (elements) => elements.filter((element) => element.folder === 'values' &&
|
|
4
|
+
(element.data.value !== undefined || element.data.ref !== undefined));
|
|
3
5
|
export async function promptForValueSetting(elements, log) {
|
|
4
|
-
const
|
|
5
|
-
if (
|
|
6
|
+
const elementsToSet = findElementsToSet(elements);
|
|
7
|
+
if (elementsToSet.length === 0) {
|
|
6
8
|
return false;
|
|
7
9
|
}
|
|
8
10
|
log(chalk.white('The following value elements have values set:'));
|
|
9
|
-
for (const element of
|
|
11
|
+
for (const element of elementsToSet) {
|
|
10
12
|
log(chalk.white(` - ${element.key}`));
|
|
11
13
|
}
|
|
12
14
|
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;AAczB,MAAM,CAAC,
|
|
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;AAczB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAwB,EAAkB,EAAE,CAC5E,QAAQ,CAAC,MAAM,CACb,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,MAAM,KAAK,QAAQ;IAC3B,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CACvE,CAAA;AAOH,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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
1
|
import Conf from 'conf';
|
|
3
2
|
import { type ConfigSchema } from './config.js';
|
|
4
3
|
import { type GraphQLRequestClient } from './graphqlClient.js';
|
|
4
|
+
import type { GreatFs } from '../types.js';
|
|
5
5
|
export interface AccountResult {
|
|
6
6
|
account?: {
|
|
7
7
|
id: string;
|
|
@@ -17,4 +17,4 @@ export interface ResolveAccountResult {
|
|
|
17
17
|
}
|
|
18
18
|
export declare function resolveAccountId(options: {
|
|
19
19
|
account?: string;
|
|
20
|
-
}, apiToken: string, client: GraphQLRequestClient, config?: Conf<ConfigSchema>, fsImpl?:
|
|
20
|
+
}, apiToken: string, client: GraphQLRequestClient, config?: Conf<ConfigSchema>, fsImpl?: GreatFs): Promise<ResolveAccountResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAccount.js","sourceRoot":"","sources":["../../src/utils/resolveAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AAExB,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EACL,mBAAmB,GAEpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"resolveAccount.js","sourceRoot":"","sources":["../../src/utils/resolveAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ElementType } from '../generated/schema.js';
|
|
2
2
|
import type { GraphQLRequestClient } from './graphqlClient.js';
|
|
3
|
+
import type { ElementByIdQuery } from '../generated/operations.js';
|
|
4
|
+
export declare function fetchElementById(client: GraphQLRequestClient, id: string, log: (message: string) => void): Promise<ElementByIdQuery['element'] | undefined>;
|
|
3
5
|
export interface ResolveElementOptions {
|
|
4
6
|
identifier: string;
|
|
5
7
|
type: ElementType;
|
|
@@ -32,6 +32,14 @@ const ElementByKeyQueryDocument = gql `
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
`;
|
|
35
|
+
export async function fetchElementById(client, id, log) {
|
|
36
|
+
const result = await client.request(ElementByIdQueryDocument, { id });
|
|
37
|
+
if (result.error) {
|
|
38
|
+
handleGraphQLError(result.error, log);
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return result.data?.element ?? undefined;
|
|
42
|
+
}
|
|
35
43
|
export async function resolveElement(options) {
|
|
36
44
|
const { identifier, type, integrationIdentifier, accountId, apiToken, client, log, } = options;
|
|
37
45
|
const idResult = await client.request(ElementByIdQueryDocument, { id: identifier });
|