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.
Files changed (117) hide show
  1. package/README.md +122 -50
  2. package/dist/clone/index.d.ts +2 -2
  3. package/dist/clone/index.js.map +1 -1
  4. package/dist/deploy/index.d.ts +2 -2
  5. package/dist/deploy/index.js.map +1 -1
  6. package/dist/explode/index.d.ts +2 -2
  7. package/dist/explode/index.js.map +1 -1
  8. package/dist/generated/operations.d.ts +30 -8
  9. package/dist/generated/schema.d.ts +138 -2
  10. package/dist/generated/schema.js +15 -0
  11. package/dist/generated/schema.js.map +1 -1
  12. package/dist/implode/index.d.ts +2 -2
  13. package/dist/implode/index.js +1 -0
  14. package/dist/implode/index.js.map +1 -1
  15. package/dist/implode/transform.d.ts +1 -0
  16. package/dist/implode/transform.js +16 -2
  17. package/dist/implode/transform.js.map +1 -1
  18. package/dist/import/index.d.ts +4 -2
  19. package/dist/import/index.js +27 -6
  20. package/dist/import/index.js.map +1 -1
  21. package/dist/include/index.d.ts +4 -2
  22. package/dist/include/index.js +129 -11
  23. package/dist/include/index.js.map +1 -1
  24. package/dist/index.js +3 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/init/index.d.ts +2 -2
  27. package/dist/init/index.js +3 -3
  28. package/dist/init/index.js.map +1 -1
  29. package/dist/integrations/create.js +1 -1
  30. package/dist/integrations/create.js.map +1 -1
  31. package/dist/integrations/index.js +6 -1
  32. package/dist/integrations/index.js.map +1 -1
  33. package/dist/integrations/list.d.ts +2 -0
  34. package/dist/integrations/list.js +30 -16
  35. package/dist/integrations/list.js.map +1 -1
  36. package/dist/migrate/index.d.ts +5 -2
  37. package/dist/migrate/index.js +102 -4
  38. package/dist/migrate/index.js.map +1 -1
  39. package/dist/pull/index.d.ts +2 -2
  40. package/dist/pull/index.js.map +1 -1
  41. package/dist/push/index.d.ts +3 -2
  42. package/dist/push/index.js +168 -73
  43. package/dist/push/index.js.map +1 -1
  44. package/dist/remove/index.d.ts +5 -0
  45. package/dist/remove/index.js +71 -0
  46. package/dist/remove/index.js.map +1 -0
  47. package/dist/rename/index.d.ts +2 -2
  48. package/dist/rename/index.js +54 -23
  49. package/dist/rename/index.js.map +1 -1
  50. package/dist/run/index.d.ts +29 -2
  51. package/dist/run/index.js.map +1 -1
  52. package/dist/status/index.d.ts +2 -2
  53. package/dist/status/index.js +1 -1
  54. package/dist/status/index.js.map +1 -1
  55. package/dist/types.d.ts +4 -0
  56. package/dist/utils/createIntegrationFromFile.d.ts +2 -2
  57. package/dist/utils/createIntegrationFromFile.js.map +1 -1
  58. package/dist/utils/detectPullConflicts.d.ts +2 -2
  59. package/dist/utils/detectPullConflicts.js +9 -14
  60. package/dist/utils/detectPullConflicts.js.map +1 -1
  61. package/dist/utils/elementFiles.d.ts +24 -5
  62. package/dist/utils/elementFiles.js +147 -8
  63. package/dist/utils/elementFiles.js.map +1 -1
  64. package/dist/utils/fetchLocal.d.ts +4 -4
  65. package/dist/utils/fetchLocal.js.map +1 -1
  66. package/dist/utils/graphqlError.js +16 -2
  67. package/dist/utils/graphqlError.js.map +1 -1
  68. package/dist/utils/greatFile.d.ts +3 -3
  69. package/dist/utils/greatFile.js.map +1 -1
  70. package/dist/utils/mergeEndpointLists.d.ts +7 -0
  71. package/dist/utils/mergeEndpointLists.js +32 -0
  72. package/dist/utils/mergeEndpointLists.js.map +1 -0
  73. package/dist/utils/promptForDetach.d.ts +6 -0
  74. package/dist/utils/promptForDetach.js +15 -0
  75. package/dist/utils/promptForDetach.js.map +1 -0
  76. package/dist/utils/promptForEndpoints.d.ts +5 -0
  77. package/dist/utils/promptForEndpoints.js +37 -0
  78. package/dist/utils/promptForEndpoints.js.map +1 -0
  79. package/dist/utils/promptForReplaceLocal.d.ts +5 -0
  80. package/dist/utils/promptForReplaceLocal.js +18 -0
  81. package/dist/utils/promptForReplaceLocal.js.map +1 -0
  82. package/dist/utils/promptForValue.d.ts +1 -0
  83. package/dist/utils/promptForValue.js +5 -3
  84. package/dist/utils/promptForValue.js.map +1 -1
  85. package/dist/utils/resolveAccount.d.ts +2 -2
  86. package/dist/utils/resolveAccount.js.map +1 -1
  87. package/dist/utils/resolveElement.d.ts +2 -0
  88. package/dist/utils/resolveElement.js +8 -0
  89. package/dist/utils/resolveElement.js.map +1 -1
  90. package/dist/utils/resolveElementIncludes.d.ts +6 -0
  91. package/dist/utils/resolveElementIncludes.js +113 -0
  92. package/dist/utils/resolveElementIncludes.js.map +1 -0
  93. package/dist/utils/saveIntegration.d.ts +2 -2
  94. package/dist/utils/saveIntegration.js +54 -30
  95. package/dist/utils/saveIntegration.js.map +1 -1
  96. package/dist/utils/serviceFile.d.ts +34 -0
  97. package/dist/utils/serviceFile.js +95 -0
  98. package/dist/utils/serviceFile.js.map +1 -0
  99. package/dist/utils/shadowMarker.d.ts +5 -0
  100. package/dist/utils/shadowMarker.js +16 -0
  101. package/dist/utils/shadowMarker.js.map +1 -0
  102. package/dist/utils/writeShadowElement.d.ts +12 -10
  103. package/dist/utils/writeShadowElement.js +98 -58
  104. package/dist/utils/writeShadowElement.js.map +1 -1
  105. package/dist/values/get.d.ts +2 -2
  106. package/dist/values/get.js.map +1 -1
  107. package/dist/values/list.d.ts +2 -2
  108. package/dist/values/list.js.map +1 -1
  109. package/dist/values/set.d.ts +2 -2
  110. package/dist/values/set.js.map +1 -1
  111. package/dist/values/unset.d.ts +2 -2
  112. package/dist/values/unset.js.map +1 -1
  113. package/package.json +16 -17
  114. package/quality.toml +4 -0
  115. package/dist/utils/resolveElementInclude.d.ts +0 -3
  116. package/dist/utils/resolveElementInclude.js +0 -27
  117. package/dist/utils/resolveElementInclude.js.map +0 -1
@@ -1,10 +1,127 @@
1
+ import fs from 'node:fs';
1
2
  import chalk from 'chalk';
2
3
  import { getClient } from '../utils/graphqlClient.js';
3
4
  import { fetchIntegrationFromFile } from '../utils/fetchLocal.js';
4
- import { resolveElementInclude } from '../utils/resolveElementInclude.js';
5
- import { readGreatFile, writeGreatFile } from '../utils/greatFile.js';
6
- import { writeShadowElements, logShadowConflicts, } from '../utils/writeShadowElement.js';
7
- export const action = (log, apiToken, client, fsImpl, config) => async function includeElement(elementId, options) {
5
+ import resolveElementIncludes, { resolveEndpointIncludes, } from '../utils/resolveElementIncludes.js';
6
+ import { getElementRecord, readGreatFile, removeElementRecord, setElementRecord, writeGreatFile, } from '../utils/greatFile.js';
7
+ import { findLocalOccupants, isLocalOccupant, writeShadowElements, logShadowConflicts, } from '../utils/writeShadowElement.js';
8
+ import { readEndpointListKeys, writeElementFile, } from '../utils/elementFiles.js';
9
+ import { ENDPOINT_LISTS_FOLDER, isEndpointKeys } from '../utils/serviceFile.js';
10
+ import promptForEndpoints from '../utils/promptForEndpoints.js';
11
+ import promptForReplaceLocal from '../utils/promptForReplaceLocal.js';
12
+ import { ElementType } from '../generated/schema.js';
13
+ async function selectEndpointShadows(graphqlClient, resolved, great, sourceTimestamp, log, promptForEndpointsFn) {
14
+ const list = resolved.find((element) => element.type === ElementType.EndpointList);
15
+ if (!list) {
16
+ return { shadows: resolved };
17
+ }
18
+ const endpoints = await resolveEndpointIncludes(graphqlClient, list, sourceTimestamp, log);
19
+ if (!endpoints) {
20
+ return undefined;
21
+ }
22
+ else if (endpoints.length === 0) {
23
+ return { shadows: resolved };
24
+ }
25
+ const hasShadowList = Boolean(getElementRecord(great, ENDPOINT_LISTS_FOLDER, list.key)?.source);
26
+ let selected;
27
+ try {
28
+ selected = await promptForEndpointsFn(list.key, endpoints, log, hasShadowList);
29
+ }
30
+ catch {
31
+ log(chalk.yellow('\nInclude cancelled'));
32
+ return undefined;
33
+ }
34
+ if (selected.length === endpoints.length) {
35
+ return { shadows: [...resolved, ...endpoints] };
36
+ }
37
+ return {
38
+ shadows: [
39
+ ...resolved.filter((element) => element !== list),
40
+ ...endpoints.filter((endpoint) => selected.includes(endpoint.key)),
41
+ ],
42
+ localList: { key: list.key, endpoints: selected, total: endpoints.length },
43
+ };
44
+ }
45
+ function replacementListKeys(selection, key) {
46
+ if (selection.localList?.key === key) {
47
+ return selection.localList.endpoints;
48
+ }
49
+ const list = selection.shadows.find((element) => element.type === ElementType.EndpointList && element.key === key);
50
+ const endpoints = list?.content?.data?.endpoints;
51
+ return isEndpointKeys(endpoints) ? endpoints : [];
52
+ }
53
+ function withDroppedKeys(target, selection, fsImpl) {
54
+ if (target.folder !== ENDPOINT_LISTS_FOLDER) {
55
+ return target;
56
+ }
57
+ const kept = new Set(replacementListKeys(selection, target.key));
58
+ const droppedKeys = readEndpointListKeys(undefined, target.key, fsImpl).filter((key) => !kept.has(key));
59
+ return { ...target, droppedKeys };
60
+ }
61
+ function findReplacedLocals(great, selection, fsImpl) {
62
+ const { localList } = selection;
63
+ const listSlot = localList &&
64
+ isLocalOccupant(great, ENDPOINT_LISTS_FOLDER, localList.key, undefined, fsImpl)
65
+ ? [{ folder: ENDPOINT_LISTS_FOLDER, key: localList.key }]
66
+ : [];
67
+ return [
68
+ ...findLocalOccupants(great, selection.shadows, undefined, fsImpl),
69
+ ...listSlot,
70
+ ]
71
+ .map((target) => withDroppedKeys(target, selection, fsImpl))
72
+ .filter((element) => element.droppedKeys?.length !== 0);
73
+ }
74
+ async function confirmReplaceLocals(replaced, log, promptForReplaceLocalFn) {
75
+ if (replaced.length === 0) {
76
+ return true;
77
+ }
78
+ let confirmed = false;
79
+ try {
80
+ confirmed = await promptForReplaceLocalFn(replaced, log);
81
+ }
82
+ catch {
83
+ }
84
+ if (!confirmed) {
85
+ log(chalk.yellow('\nInclude cancelled'));
86
+ }
87
+ return confirmed;
88
+ }
89
+ function writeLocalEndpointList(great, localList, fsImpl) {
90
+ const existing = getElementRecord(great, ENDPOINT_LISTS_FOLDER, localList.key);
91
+ const record = {
92
+ ...(existing?.id ? { id: existing.id } : {}),
93
+ ...(existing?.timestamp ? { timestamp: existing.timestamp } : {}),
94
+ };
95
+ if (Object.keys(record).length > 0) {
96
+ setElementRecord(great, ENDPOINT_LISTS_FOLDER, localList.key, record);
97
+ }
98
+ else {
99
+ removeElementRecord(great, ENDPOINT_LISTS_FOLDER, localList.key);
100
+ }
101
+ writeElementFile(undefined, ENDPOINT_LISTS_FOLDER, localList.key, { endpoints: localList.endpoints }, great, fsImpl);
102
+ }
103
+ function writeSelection(great, selection, fsImpl, log) {
104
+ const result = writeShadowElements(great, selection.shadows, {
105
+ mode: 'include',
106
+ fsImpl,
107
+ });
108
+ if (result.conflicts.length > 0) {
109
+ logShadowConflicts('Include', result.conflicts, log);
110
+ return;
111
+ }
112
+ if (selection.localList) {
113
+ writeLocalEndpointList(great, selection.localList, fsImpl);
114
+ }
115
+ writeGreatFile(great, undefined, fsImpl);
116
+ for (const written of result.written) {
117
+ log(chalk.green(`Included ${written.folder}/${written.key} as a shadow element`));
118
+ }
119
+ if (selection.localList) {
120
+ const { key, endpoints, total } = selection.localList;
121
+ log(chalk.green(`Kept ${ENDPOINT_LISTS_FOLDER}/${key} as a local endpoint list with ${endpoints.length} of ${total} endpoints`));
122
+ }
123
+ }
124
+ export const action = (log, apiToken, client, fsImpl, config, promptForEndpointsFn = promptForEndpoints, promptForReplaceLocalFn = promptForReplaceLocal) => async function includeElement(elementId, options) {
8
125
  if (!elementId) {
9
126
  log(chalk.red('Element id is required'));
10
127
  log(`Usage: ${chalk.bold('great include <element-id>')}`);
@@ -16,19 +133,20 @@ export const action = (log, apiToken, client, fsImpl, config) => async function
16
133
  return;
17
134
  }
18
135
  const graphqlClient = getClient(apiToken, client, config);
19
- const resolved = await resolveElementInclude(graphqlClient, elementId, options?.pinnedAt, log);
136
+ const resolved = await resolveElementIncludes(graphqlClient, elementId, options?.pinnedAt, log);
20
137
  if (!resolved) {
21
138
  return;
22
139
  }
23
140
  const great = readGreatFile(undefined, fsImpl);
24
- const result = writeShadowElements(great, [resolved], { fsImpl });
25
- if (result.conflicts.length > 0) {
26
- logShadowConflicts('Include', result.conflicts, log);
141
+ const selection = await selectEndpointShadows(graphqlClient, resolved, great, options?.pinnedAt, log, promptForEndpointsFn);
142
+ if (!selection) {
27
143
  return;
28
144
  }
29
- writeGreatFile(great, undefined, fsImpl);
30
- const [written] = result.written;
31
- log(chalk.green(`Included ${written.folder}/${written.key} as a shadow element`));
145
+ const replaced = findReplacedLocals(great, selection, fsImpl ?? fs);
146
+ if (!(await confirmReplaceLocals(replaced, log, promptForReplaceLocalFn))) {
147
+ return;
148
+ }
149
+ writeSelection(great, selection, fsImpl, log);
32
150
  };
33
151
  export default (program, apiToken) => program
34
152
  .command('include <element>')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/include/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAA6B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,gCAAgC,CAAA;AAIvC,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAAkB,EAClB,MAA2B,EAC3B,EAAE,CACF,KAAK,UAAU,cAAc,CAC3B,SAAiB,EACjB,OAA+B;IAE/B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACxC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IAID,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAA;QACpD,GAAG,CACD,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CACzF,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAC1C,aAAa,EACb,SAAS,EACT,OAAO,EAAE,QAAQ,EACjB,GAAG,CACJ,CAAA;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAI9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IAEjE,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACpD,OAAM;IACR,CAAC;IAED,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAExC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAA;IAChC,GAAG,CACD,KAAK,CAAC,KAAK,CACT,YAAY,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,sBAAsB,CAChE,CACF,CAAA;AACH,CAAC,CAAA;AAEH,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE,CACrD,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CACL,6BAA6B,EAC7B,gEAAgE,CACjE;KACA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/include/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ import now from './now/index.js';
18
18
  import integrations from './integrations/index.js';
19
19
  import pull from './pull/index.js';
20
20
  import push from './push/index.js';
21
+ import remove from './remove/index.js';
21
22
  import rename from './rename/index.js';
22
23
  import repl from './repl/index.js';
23
24
  import run from './run/index.js';
@@ -26,7 +27,7 @@ import value from './values/index.js';
26
27
  import whoami from './whoami/index.js';
27
28
  import { getStoredToken } from './utils/token.js';
28
29
  const apiToken = getStoredToken();
29
- program.version('1.2.2', '-v, --version').description('Integreat CLI');
30
+ program.version('1.4.0', '-v, --version').description('Integreat CLI');
30
31
  program.enablePositionalOptions();
31
32
  accounts(program, apiToken);
32
33
  clone(program, apiToken);
@@ -46,6 +47,7 @@ now(program);
46
47
  integrations(program, apiToken);
47
48
  pull(program, apiToken);
48
49
  push(program, apiToken);
50
+ remove(program);
49
51
  rename(program, apiToken);
50
52
  repl(program, apiToken);
51
53
  run(program, apiToken);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAC1C,OAAO,KAAK,MAAM,kBAAkB,CAAA;AACpC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,GAAG,MAAM,gBAAgB,CAAA;AAChC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,OAAO,MAAM,oBAAoB,CAAA;AACxC,OAAO,OAAO,MAAM,oBAAoB,CAAA;AACxC,OAAO,cAAc,MAAM,mBAAmB,CAAA;AAC9C,OAAO,OAAO,MAAM,oBAAoB,CAAA;AACxC,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,KAAK,MAAM,kBAAkB,CAAA;AACpC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,OAAO,MAAM,oBAAoB,CAAA;AACxC,OAAO,GAAG,MAAM,gBAAgB,CAAA;AAChC,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,IAAI,MAAM,iBAAiB,CAAA;AAClC,OAAO,GAAG,MAAM,gBAAgB,CAAA;AAChC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,KAAK,MAAM,mBAAmB,CAAA;AACrC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;AAEjC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;AAOtE,OAAO,CAAC,uBAAuB,EAAE,CAAA;AAEjC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC3B,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACxB,MAAM,CAAC,OAAO,CAAC,CAAA;AACf,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzB,GAAG,CAAC,OAAO,CAAC,CAAA;AACZ,OAAO,CAAC,OAAO,CAAC,CAAA;AAChB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC1B,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACjC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC1B,IAAI,CAAC,OAAO,CAAC,CAAA;AACb,KAAK,CAAC,OAAO,CAAC,CAAA;AACd,MAAM,CAAC,OAAO,CAAC,CAAA;AACf,OAAO,CAAC,OAAO,CAAC,CAAA;AAChB,GAAG,CAAC,OAAO,CAAC,CAAA;AACZ,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC/B,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACvB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACvB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACvB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACtB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzB,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACxB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AAEzB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import fs from 'node:fs';
2
1
  import type { Command } from 'commander';
3
- export declare const action: (log: (message: string) => void, fsImpl?: typeof fs) => (name?: string) => Promise<void>;
2
+ import type { GreatFs } from '../types.js';
3
+ export declare const action: (log: (message: string) => void, fsImpl?: GreatFs) => (name?: string) => Promise<void>;
4
4
  declare const _default: (program: Command) => Command;
5
5
  export default _default;
@@ -6,7 +6,7 @@ import { currentIntegrationKey } from '../utils/fetchLocal.js';
6
6
  export const action = (log, fsImpl = fs) => async function init(name) {
7
7
  if (fsImpl.existsSync('integration.json')) {
8
8
  log(chalk.red('integration.json already exists in this directory'));
9
- log(`Run ${chalk.bold('great pull')} to update from server`);
9
+ log(`Run ${chalk.bold('great pull')} to update from Integreat`);
10
10
  return;
11
11
  }
12
12
  const key = currentIntegrationKey();
@@ -29,10 +29,10 @@ export const action = (log, fsImpl = fs) => async function init(name) {
29
29
  log('');
30
30
  log('Next steps:');
31
31
  log(` 1. Create schemas, services, and other elements in their folders`);
32
- log(` 2. Run ${chalk.bold('great push')} to sync local files to server`);
32
+ log(` 2. Run ${chalk.bold('great push')} to sync local files to Integreat`);
33
33
  };
34
34
  export default (program) => program
35
35
  .command('init [name]')
36
- .description('Initialize a new integration workspace (local only, no server interaction)')
36
+ .description('Initialize a new integration workspace (local only, nothing is created in Integreat)')
37
37
  .action(action(console.log));
38
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAA8B,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CACpE,KAAK,UAAU,IAAI,CAAC,IAAa;IAE/B,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;QACnE,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAA;QAC5D,OAAM;IACR,CAAC;IAGD,MAAM,GAAG,GAAG,qBAAqB,EAAE,CAAA;IACnC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAChE,IAAI,IAAI,GAAG,CACZ,CAAA;IAGD,IAAI,IAAI,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC/B,GAAG,CACD,KAAK,CAAC,MAAM,CACV,iDAAiD,GAAG,yCAAyC,CAC9F,CACF,CAAA;IACH,CAAC;IAGD,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,WAAW;KAClB,CAAA;IAED,MAAM,CAAC,aAAa,CAClB,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CACzC,CAAA;IAGD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAA;IACvD,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACzC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAA;IACpB,GAAG,CAAC,EAAE,CAAC,CAAA;IACP,GAAG,CAAC,aAAa,CAAC,CAAA;IAClB,GAAG,CAAC,oEAAoE,CAAC,CAAA;IACzE,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAA;AAC3E,CAAC,CAAA;AAEH,eAAe,CAAC,OAAgB,EAAE,EAAE,CAClC,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CACV,4EAA4E,CAC7E;KACA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAG9D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAA8B,EAAE,SAAkB,EAAE,EAAE,EAAE,CAC7E,KAAK,UAAU,IAAI,CAAC,IAAa;IAE/B,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAA;QACnE,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAA;QAC/D,OAAM;IACR,CAAC;IAGD,MAAM,GAAG,GAAG,qBAAqB,EAAE,CAAA;IACnC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAChE,IAAI,IAAI,GAAG,CACZ,CAAA;IAGD,IAAI,IAAI,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC/B,GAAG,CACD,KAAK,CAAC,MAAM,CACV,iDAAiD,GAAG,yCAAyC,CAC9F,CACF,CAAA;IACH,CAAC;IAGD,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,WAAW;KAClB,CAAA;IAED,MAAM,CAAC,aAAa,CAClB,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CACzC,CAAA;IAGD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAA;IACvD,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACzC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAA;IACpB,GAAG,CAAC,EAAE,CAAC,CAAA;IACP,GAAG,CAAC,aAAa,CAAC,CAAA;IAClB,GAAG,CAAC,oEAAoE,CAAC,CAAA;IACzE,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAEH,eAAe,CAAC,OAAgB,EAAE,EAAE,CAClC,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CACV,sFAAsF,CACvF;KACA,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA"}
@@ -57,7 +57,7 @@ export default function createIntegration(log, apiToken, client, config) {
57
57
  log(chalk.red('Failed to create integration'));
58
58
  return;
59
59
  }
60
- log(chalk.green('✓ Integration created on server'));
60
+ log(chalk.green('✓ Integration created in Integreat'));
61
61
  log(` Name: ${chalk.cyan(integration.name)}`);
62
62
  log(` ID: ${integration.id}`);
63
63
  log(` Key: ${integration.key}`);
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/integrations/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAA6B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAI7D,MAAM,iCAAiC,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwB5C,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAA2B;IAE3B,OAAO,KAAK,UAAU,WAAW,CAC/B,eAAwB,EACxB,OAA8B;QAG9B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAC9C,GAAG,CACD,UAAU,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,EAAE,CACvE,CAAA;YACD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAA;QAG1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACzD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CACjD,OAAO,IAAI,EAAE,EACb,QAAQ,IAAI,EAAE,EACd,aAAa,EACb,MAAM,CACP,CAAA;QACD,IAAI,KAAK,EAAE,CAAC;YACV,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC9B,OAAM;QACR,CAAC;QAGD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CACD,KAAK,CAAC,GAAG,CACP,qHAAqH,CACtH,CACF,CAAA;YACD,OAAM;QACR,CAAC;QAGD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,iCAAiC,EACjC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CACzB,CAAA;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACrC,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAA;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAC9C,OAAM;QACR,CAAC;QAGD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAA;QACnD,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9C,GAAG,CAAC,SAAS,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9B,GAAG,CAAC,UAAU,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;QAChC,GAAG,CAAC,EAAE,CAAC,CAAA;QACP,GAAG,CAAC,qCAAqC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACxE,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/integrations/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAA6B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAI7D,MAAM,iCAAiC,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwB5C,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAA2B;IAE3B,OAAO,KAAK,UAAU,WAAW,CAC/B,eAAwB,EACxB,OAA8B;QAG9B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAC9C,GAAG,CACD,UAAU,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,EAAE,CACvE,CAAA;YACD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAA;QAG1D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACzD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CACjD,OAAO,IAAI,EAAE,EACb,QAAQ,IAAI,EAAE,EACd,aAAa,EACb,MAAM,CACP,CAAA;QACD,IAAI,KAAK,EAAE,CAAC;YACV,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC9B,OAAM;QACR,CAAC;QAGD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CACD,KAAK,CAAC,GAAG,CACP,qHAAqH,CACtH,CACF,CAAA;YACD,OAAM;QACR,CAAC;QAGD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,iCAAiC,EACjC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,CACzB,CAAA;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACrC,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAA;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAA;YAC9C,OAAM;QACR,CAAC;QAGD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;QACtD,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9C,GAAG,CAAC,SAAS,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9B,GAAG,CAAC,UAAU,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;QAChC,GAAG,CAAC,EAAE,CAAC,CAAA;QACP,GAAG,CAAC,qCAAqC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACxE,CAAC,CAAA;AACH,CAAC"}
@@ -1,21 +1,26 @@
1
+ import { Option } from 'commander';
2
+ import { IntegrationType } from '../generated/schema.js';
1
3
  import listIntegrationsAction from './list.js';
2
4
  import createIntegrationAction from './create.js';
5
+ const typeOption = () => new Option('-t, --type <type>', 'only list integrations of this type').choices(Object.values(IntegrationType));
3
6
  export default (program, apiToken) => {
4
7
  const integrations = program
5
8
  .command('integrations')
6
9
  .description('commands for integrations, run `great integrations --help` to see options. `great integrations` is also a shortcut for `great integrations list`')
7
10
  .option('-a, --account <id>', 'account id or key (uses default from config if not provided)')
8
11
  .option('--all', 'list all integrations, ignoring default account')
12
+ .addOption(typeOption())
9
13
  .action(listIntegrationsAction(console.log, apiToken));
10
14
  integrations
11
15
  .command('list')
12
16
  .description('list all integrations you have access to')
13
17
  .option('-a, --account <id>', 'account id or key (uses default from config if not provided)')
14
18
  .option('--all', 'list all integrations, ignoring default account')
19
+ .addOption(typeOption())
15
20
  .action(listIntegrationsAction(console.log, apiToken));
16
21
  integrations
17
22
  .command('create <name>')
18
- .description('create a new integration on the server')
23
+ .description('create a new integration in Integreat')
19
24
  .option('-a, --account <id>', 'account id or key (required, or set default with: great config set account)')
20
25
  .action(createIntegrationAction(console.log, apiToken));
21
26
  return integrations;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AACA,OAAO,sBAAsB,MAAM,WAAW,CAAA;AAC9C,OAAO,uBAAuB,MAAM,aAAa,CAAA;AAEjD,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE;IACrD,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,kJAAkJ,CACnJ;SACA,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,OAAO,EAAE,iDAAiD,CAAC;SAClE,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAExD,YAAY;SACT,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,OAAO,EAAE,iDAAiD,CAAC;SAClE,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAExD,YAAY;SACT,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CACL,oBAAoB,EACpB,6EAA6E,CAC9E;SACA,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEzD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,sBAAsB,MAAM,WAAW,CAAA;AAC9C,OAAO,uBAAuB,MAAM,aAAa,CAAA;AAGjD,MAAM,UAAU,GAAG,GAAG,EAAE,CACtB,IAAI,MAAM,CACR,mBAAmB,EACnB,qCAAqC,CACtC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAA;AAE3C,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE;IACrD,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,kJAAkJ,CACnJ;SACA,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,OAAO,EAAE,iDAAiD,CAAC;SAClE,SAAS,CAAC,UAAU,EAAE,CAAC;SACvB,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAExD,YAAY;SACT,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CACL,oBAAoB,EACpB,8DAA8D,CAC/D;SACA,MAAM,CAAC,OAAO,EAAE,iDAAiD,CAAC;SAClE,SAAS,CAAC,UAAU,EAAE,CAAC;SACvB,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAExD,YAAY;SACT,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CACL,oBAAoB,EACpB,6EAA6E,CAC9E;SACA,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEzD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
@@ -1,7 +1,9 @@
1
1
  import Conf from 'conf';
2
2
  import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
3
+ import type { IntegrationType } from '../generated/schema.js';
3
4
  import type { ConfigSchema } from '../utils/config.js';
4
5
  export default function listIntegrations(log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, config?: Conf<ConfigSchema>): (options?: {
5
6
  account?: string;
6
7
  all?: boolean;
8
+ type?: IntegrationType;
7
9
  }) => Promise<void>;
@@ -5,59 +5,73 @@ import { handleGraphQLError } from '../utils/graphqlError.js';
5
5
  import { gql } from 'graphql-tag';
6
6
  import { resolveAccountId } from '../utils/resolveAccount.js';
7
7
  const IntegrationsQueryDocument = gql `
8
- query Integrations {
9
- integrations(orderBy: name, direction: asc) {
8
+ query Integrations($type: IntegrationType) {
9
+ integrations(orderBy: name, direction: asc, type: $type) {
10
10
  totalCount
11
11
  nodes {
12
12
  id
13
13
  name
14
14
  key
15
+ type
16
+ account {
17
+ key
18
+ }
15
19
  }
16
20
  }
17
21
  }
18
22
  `;
19
23
  const IntegrationsForAccountQueryDocument = gql `
20
- query IntegrationsForAccount($accountId: ID!) {
24
+ query IntegrationsForAccount($accountId: ID!, $type: IntegrationType) {
21
25
  account(id: $accountId) {
22
26
  name
23
- integrations {
27
+ key
28
+ integrations(type: $type) {
24
29
  totalCount
25
30
  nodes {
26
31
  id
27
32
  name
28
33
  key
34
+ type
29
35
  }
30
36
  }
31
37
  }
32
38
  }
33
39
  `;
34
- async function fetchAllIntegrations(client, log) {
35
- const result = await client.request(IntegrationsQueryDocument, {});
40
+ const typeVariables = (type) => (type ? { type } : {});
41
+ async function fetchAllIntegrations(client, log, type) {
42
+ const result = await client.request(IntegrationsQueryDocument, typeVariables(type));
36
43
  if (result.error) {
37
44
  handleGraphQLError(result.error, log);
38
45
  return undefined;
39
46
  }
40
47
  return {
41
- integrations: result.data?.integrations?.nodes ?? [],
48
+ integrations: (result.data?.integrations?.nodes ?? []).map(({ account, ...integration }) => ({
49
+ ...integration,
50
+ account: account.key,
51
+ })),
42
52
  count: result.data?.integrations?.totalCount ?? 0,
43
53
  };
44
54
  }
45
- async function fetchAccountIntegrations(client, accountId, log) {
46
- const result = await client.request(IntegrationsForAccountQueryDocument, { accountId });
55
+ async function fetchAccountIntegrations(client, accountId, log, type) {
56
+ const result = await client.request(IntegrationsForAccountQueryDocument, { accountId, ...typeVariables(type) });
47
57
  if (result.error) {
48
58
  handleGraphQLError(result.error, log);
49
59
  return undefined;
50
60
  }
61
+ const account = result.data?.account;
51
62
  return {
52
- integrations: result.data?.account?.integrations?.nodes ?? [],
53
- count: result.data?.account?.integrations?.totalCount ?? 0,
54
- accountName: result.data?.account?.name ?? undefined,
63
+ integrations: (account?.integrations.nodes ?? []).map((integration) => ({
64
+ ...integration,
65
+ account: account?.key ?? '',
66
+ })),
67
+ count: account?.integrations.totalCount ?? 0,
68
+ accountName: account?.name ?? undefined,
55
69
  };
56
70
  }
57
71
  function displayIntegrations({ integrations, count, accountName }, log) {
58
72
  if (integrations.length > 0) {
59
73
  log(columnify(integrations, {
60
- columns: ['name', 'key', 'id'],
74
+ columns: ['name', 'key', 'type', 'account', 'id'],
61
75
  columnSplitter: ' ',
62
76
  config: {
63
77
  name: {
@@ -81,7 +95,7 @@ export default function listIntegrations(log, apiToken, client, config) {
81
95
  const graphqlClient = getClient(apiToken, client, config);
82
96
  let result;
83
97
  if (options?.all) {
84
- result = await fetchAllIntegrations(graphqlClient, log);
98
+ result = await fetchAllIntegrations(graphqlClient, log, options.type);
85
99
  }
86
100
  else {
87
101
  const { accountId, error } = await resolveAccountId(options ?? {}, apiToken ?? '', graphqlClient, config);
@@ -90,8 +104,8 @@ export default function listIntegrations(log, apiToken, client, config) {
90
104
  return;
91
105
  }
92
106
  result = accountId
93
- ? await fetchAccountIntegrations(graphqlClient, accountId, log)
94
- : await fetchAllIntegrations(graphqlClient, log);
107
+ ? await fetchAccountIntegrations(graphqlClient, accountId, log, options?.type)
108
+ : await fetchAllIntegrations(graphqlClient, log, options?.type);
95
109
  }
96
110
  if (result) {
97
111
  displayIntegrations(result, log);
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/integrations/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/integrations/list.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import fs from 'node:fs';
2
1
  import type { Command } from 'commander';
3
- export declare const action: (log: (message: string) => void, fsImpl?: typeof fs) => () => Promise<void>;
2
+ import type { GreatFs } from '../types.js';
3
+ export interface MigrateOptions {
4
+ prefix?: boolean;
5
+ }
6
+ export declare const action: (log: (message: string) => void, fsImpl?: GreatFs) => (options?: MigrateOptions) => Promise<void>;
4
7
  declare const _default: (program: Command) => Command;
5
8
  export default _default;
@@ -1,11 +1,15 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import chalk from 'chalk';
4
+ import { camelCase } from 'change-case';
4
5
  import parseJson from '../utils/parseJson.js';
5
6
  import hashContent from '../utils/hashContent.js';
6
7
  import { currentIntegrationKey } from '../utils/fetchLocal.js';
7
- import { ELEMENT_FOLDERS, elementKeyFromFileName, } from '../utils/elementFiles.js';
8
+ import { ELEMENT_FOLDERS, elementKeyFromFileName, readElementFolder, } from '../utils/elementFiles.js';
9
+ import { ENDPOINTS_FOLDER, SERVICES_FOLDER, classifyEndpoints, mergeServiceFile, } from '../utils/serviceFile.js';
10
+ import { SHADOW_MARKER, isShadowMarker } from '../utils/shadowMarker.js';
8
11
  import { readGreatFile, writeGreatFile, getElementRecord, setElementRecord, } from '../utils/greatFile.js';
12
+ const MAX_KEY_LENGTH = 50;
9
13
  const hasMetaProps = (data) => '__id' in data || '__key' in data || '__timestamp' in data;
10
14
  function migrateIntegrationFile(great, log, fsImpl) {
11
15
  const filePath = 'integration.json';
@@ -77,7 +81,95 @@ function migrateElementFiles(great, fsImpl) {
77
81
  }
78
82
  return count;
79
83
  }
80
- export const action = (log, fsImpl = fs) => async function migrate() {
84
+ function collectEndpointKeys(services, great, fsImpl) {
85
+ const keys = new Set();
86
+ for (const { key } of readElementFolder(ENDPOINTS_FOLDER, undefined, fsImpl)) {
87
+ keys.add(key);
88
+ }
89
+ for (const recordKey of Object.keys(great.elements)) {
90
+ if (recordKey.startsWith(`${ENDPOINTS_FOLDER}/`)) {
91
+ keys.add(recordKey.slice(ENDPOINTS_FOLDER.length + 1));
92
+ }
93
+ }
94
+ for (const { data } of services) {
95
+ if (Array.isArray(data.endpoints)) {
96
+ for (const entry of data.endpoints) {
97
+ if (typeof entry === 'string') {
98
+ keys.add(entry);
99
+ }
100
+ }
101
+ }
102
+ }
103
+ return keys;
104
+ }
105
+ function endpointKeyFor(serviceKey, endpoint, index, prefix) {
106
+ const base = typeof endpoint.id === 'string' && endpoint.id
107
+ ? endpoint.id
108
+ : `endpoint${index + 1}`;
109
+ const key = prefix
110
+ ? `${camelCase(serviceKey)}-${camelCase(base)}`
111
+ : camelCase(base);
112
+ return key.slice(0, MAX_KEY_LENGTH);
113
+ }
114
+ function uniqueKey(key, existing) {
115
+ if (!existing.has(key)) {
116
+ return key;
117
+ }
118
+ for (let n = 2;; n++) {
119
+ const suffix = String(n);
120
+ const candidate = `${key.slice(0, MAX_KEY_LENGTH - suffix.length)}${suffix}`;
121
+ if (!existing.has(candidate)) {
122
+ return candidate;
123
+ }
124
+ }
125
+ }
126
+ const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
127
+ function extractEndpoints(serviceKey, endpoints, existingKeys, prefix, fsImpl) {
128
+ const keys = [];
129
+ let extracted = 0;
130
+ endpoints.forEach((entry, index) => {
131
+ if (typeof entry === 'string') {
132
+ keys.push(entry);
133
+ return;
134
+ }
135
+ if (!isObject(entry)) {
136
+ return;
137
+ }
138
+ const key = uniqueKey(endpointKeyFor(serviceKey, entry, index, prefix), existingKeys);
139
+ existingKeys.add(key);
140
+ const { id: _id, ...content } = entry;
141
+ fsImpl.writeFileSync(path.join(ENDPOINTS_FOLDER, `${key}.json`), JSON.stringify(content, undefined, 2));
142
+ keys.push(key);
143
+ extracted++;
144
+ });
145
+ return { keys, extracted };
146
+ }
147
+ function migrateInlineEndpoints(great, options, log, fsImpl) {
148
+ const services = readElementFolder(SERVICES_FOLDER, undefined, fsImpl);
149
+ const existingKeys = collectEndpointKeys(services, great, fsImpl);
150
+ const prefix = options.prefix !== false;
151
+ let count = 0;
152
+ for (const { key, filePath, data } of services) {
153
+ const kind = classifyEndpoints(data.endpoints);
154
+ if (kind !== 'inline' && kind !== 'mixed') {
155
+ continue;
156
+ }
157
+ if (getElementRecord(great, SERVICES_FOLDER, key)?.source) {
158
+ log(chalk.yellow(`Skipping ${filePath}: it is a shadow element, so its inline endpoints belong to the source`));
159
+ continue;
160
+ }
161
+ if (!fsImpl.existsSync(ENDPOINTS_FOLDER)) {
162
+ fsImpl.mkdirSync(ENDPOINTS_FOLDER, { recursive: true });
163
+ }
164
+ const { keys, extracted } = extractEndpoints(key, data.endpoints, existingKeys, prefix, fsImpl);
165
+ const { [SHADOW_MARKER]: marker, endpoints: _endpoints, ...service } = data;
166
+ fsImpl.writeFileSync(filePath, JSON.stringify(mergeServiceFile({ service, list: { endpoints: keys } }, isShadowMarker(marker) ? marker : undefined), undefined, 2));
167
+ log(` ${filePath}: ${extracted} endpoint(s) extracted`);
168
+ count += extracted;
169
+ }
170
+ return count;
171
+ }
172
+ export const action = (log, fsImpl = fs) => async function migrate(options = {}) {
81
173
  if (!fsImpl.existsSync('integration.json')) {
82
174
  log(chalk.red('No integration.json found in this directory'));
83
175
  return;
@@ -85,10 +177,15 @@ export const action = (log, fsImpl = fs) => async function migrate() {
85
177
  const great = readGreatFile(undefined, fsImpl);
86
178
  const integrationMigrated = migrateIntegrationFile(great, log, fsImpl);
87
179
  const elementCount = migrateElementFiles(great, fsImpl);
180
+ const endpointCount = migrateInlineEndpoints(great, options, log, fsImpl);
88
181
  writeGreatFile(great, undefined, fsImpl);
89
- if (integrationMigrated || elementCount > 0) {
182
+ if (integrationMigrated || elementCount > 0 || endpointCount > 0) {
90
183
  log(chalk.green('✓ Migrated to .great.json'));
91
184
  log(` Elements migrated: ${elementCount}`);
185
+ log(` Endpoints extracted: ${endpointCount}`);
186
+ if (endpointCount > 0) {
187
+ log(`Run ${chalk.bold('great push')} to create the endpoints in Integreat`);
188
+ }
92
189
  }
93
190
  else {
94
191
  log(chalk.green('Already migrated — nothing to do'));
@@ -96,6 +193,7 @@ export const action = (log, fsImpl = fs) => async function migrate() {
96
193
  };
97
194
  export default (program) => program
98
195
  .command('migrate')
99
- .description('Migrate sync bookkeeping from inline __id/__key/__timestamp props to .great.json')
196
+ .description('Migrate the workspace to the newest layout: sync bookkeeping in .great.json and endpoints as separate elements')
197
+ .option('--no-prefix', 'do not prefix extracted endpoint keys with the service key')
100
198
  .action(action(console.log));
101
199
  //# sourceMappingURL=index.js.map