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 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrate/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrate/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import fs from 'node:fs';
2
1
  import Conf from 'conf';
3
2
  import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
4
3
  import type { ConfigSchema } from '../utils/config.js';
5
4
  import type { Command } from 'commander';
6
- export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: typeof fs, config?: Conf<ConfigSchema>) => (options?: {
5
+ import type { GreatFs } from '../types.js';
6
+ export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: GreatFs, config?: Conf<ConfigSchema>) => (options?: {
7
7
  force?: boolean;
8
8
  }) => Promise<void>;
9
9
  declare const _default: (program: Command, apiToken?: string) => Command;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pull/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,eAAe,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAA6B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AAKjE,SAAS,eAAe,CACtB,SAAyB,EACzB,GAA8B;IAE9B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACvC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,CACD,iDAAiD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CACvG,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAAkB,EAClB,MAA2B,EAC3B,EAAE,CACF,KAAK,UAAU,eAAe,CAAC,UAA+B,EAAE;IAE9D,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACrC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAA;QACpD,GAAG,CACD,OAAO,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,0CAA0C,CAC5F,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzD,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAM;IACR,CAAC;IAID,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,mBAAmB,CACnC,WAAW,CAAC,MAAM,EAClB,UAAU,EACV,SAAS,EACT,MAAM,CACP,CAAA;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC/B,OAAM;QACR,CAAC;IACH,CAAC;IAED,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AACrE,CAAC,CAAA;AAEH,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE,CACrD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pull/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,eAAe,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAA6B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AAMjE,SAAS,eAAe,CACtB,SAAyB,EACzB,GAA8B;IAE9B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAA;IAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACvC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,GAAG,CACD,iDAAiD,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CACvG,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAAgB,EAChB,MAA2B,EAC3B,EAAE,CACF,KAAK,UAAU,eAAe,CAAC,UAA+B,EAAE;IAE9D,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACrC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAA;QACpD,GAAG,CACD,OAAO,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,0CAA0C,CAC5F,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACzD,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC,aAAa,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAM;IACR,CAAC;IAID,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,mBAAmB,CACnC,WAAW,CAAC,MAAM,EAClB,UAAU,EACV,SAAS,EACT,MAAM,CACP,CAAA;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC/B,OAAM;QACR,CAAC;IACH,CAAC;IAED,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AACrE,CAAC,CAAA;AAEH,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE,CACrD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,aAAa,EAAE,gDAAgD,CAAC;KACvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA"}
@@ -1,10 +1,11 @@
1
- import fs from 'node:fs';
2
1
  import Conf from 'conf';
2
+ import { promptForDetach } from '../utils/promptForDetach.js';
3
3
  import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
4
4
  import type { ConfigSchema } from '../utils/config.js';
5
5
  import { promptForValueSetting } from '../utils/promptForValue.js';
6
6
  import type { Command } from 'commander';
7
- export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: typeof fs, config?: Conf<ConfigSchema>, promptForValueSettingFn?: typeof promptForValueSetting) => (options?: {
7
+ import type { GreatFs } from '../types.js';
8
+ export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: GreatFs, config?: Conf<ConfigSchema>, promptForValueSettingFn?: typeof promptForValueSetting, promptForDetachFn?: typeof promptForDetach) => (options?: {
8
9
  account?: string;
9
10
  }) => Promise<void>;
10
11
  declare const _default: (program: Command, apiToken?: string) => Command;
@@ -1,19 +1,20 @@
1
1
  import fs from 'node:fs';
2
2
  import chalk from 'chalk';
3
- import parseJson from '../utils/parseJson.js';
4
3
  import { sentenceCase } from 'change-case';
5
4
  import { fetchIntegrationFromFile } from '../utils/fetchLocal.js';
6
5
  import { readGreatFile, writeGreatFile, getElementRecord, setElementRecord, removeElementRecordById, sameProvenance, } from '../utils/greatFile.js';
7
- import { readElementFolder, folderToElementType, } from '../utils/elementFiles.js';
6
+ import { readWorkspaceElements, writeElementFile, folderToElementType, } from '../utils/elementFiles.js';
7
+ import { ENDPOINT_LISTS_FOLDER, validateEndpointReferences, } from '../utils/serviceFile.js';
8
+ import { promptForDetach } from '../utils/promptForDetach.js';
9
+ import { fetchElementById } from '../utils/resolveElement.js';
8
10
  import createIntegrationFromFile from '../utils/createIntegrationFromFile.js';
9
11
  import { typeToFolder } from '../utils/saveIntegration.js';
10
12
  import { getClient } from '../utils/graphqlClient.js';
11
- import { getGraphQLErrorMessage, handleGraphQLError, } from '../utils/graphqlError.js';
13
+ import { getGraphQLErrorMessage, handleGraphQLError, isNotFoundError, } from '../utils/graphqlError.js';
12
14
  import hashContent from '../utils/hashContent.js';
13
15
  import { VALID_VALUE_TYPES, isValidValueElementType, } from '../utils/valueTypes.js';
14
16
  import { setValueForElement } from '../values/set.js';
15
17
  import { promptForValueSetting } from '../utils/promptForValue.js';
16
- import { SHADOW_MARKER } from '../utils/writeShadowElement.js';
17
18
  import resolveIntegrationType from '../utils/integrationType.js';
18
19
  import { ElementType } from '../generated/schema.js';
19
20
  import { gql } from 'graphql-tag';
@@ -43,6 +44,7 @@ const IntegrationForPushQueryDocument = gql `
43
44
  content {
44
45
  checksum
45
46
  createdAt
47
+ sourceId
46
48
  sourceTimestamp
47
49
  provenance
48
50
  }
@@ -135,8 +137,8 @@ const UpdateElementMutationDocument = gql `
135
137
  }
136
138
  `;
137
139
  const SetElementContentMutationDocument = gql `
138
- mutation SetElementContent($id: ID!, $content: JSON) {
139
- setElementContent(id: $id, content: $content) {
140
+ mutation SetElementContent($id: ID!, $content: JSON, $provenance: [ID!]) {
141
+ setElementContent(id: $id, content: $content, provenance: $provenance) {
140
142
  id
141
143
  content {
142
144
  createdAt
@@ -158,14 +160,47 @@ const SetSecretRefMutationDocument = gql `
158
160
  setSecretRef(id: $id, secretRef: $secretRef)
159
161
  }
160
162
  `;
161
- function readLocalElements(fsImpl) {
162
- const elements = [];
163
- for (const folder of Object.keys(folderToElementType)) {
164
- for (const { key, filePath, data } of readElementFolder(folder, undefined, fsImpl)) {
165
- elements.push({ folder, key, filePath, data });
166
- }
163
+ const readLocalElements = (fsImpl) => readWorkspaceElements(undefined, fsImpl);
164
+ const isEndpointList = (element) => element.folder === ENDPOINT_LISTS_FOLDER;
165
+ const hasShadowContentChanged = (local) => local.hash !== undefined && hashContent(local.data) !== local.hash;
166
+ function compareShadow(local, remote, source) {
167
+ const localName = local.data.name || '';
168
+ const localDesc = local.data.description || '';
169
+ const isList = isEndpointList(local);
170
+ const hasNameChanged = !isList && localName !== (remote.name || '');
171
+ const hasDescriptionChanged = !isList && localDesc !== (remote.description || '');
172
+ const hasSourceChanged = source.id !== remote.sourceId;
173
+ const hasPinChanged = (source.timestamp ?? null) !== (remote.sourceTimestamp ?? null);
174
+ const hasProvenanceChanged = !sameProvenance(local.provenance, remote.provenance);
175
+ const hasRemoteMoved = local.timestamp !== remote.contentCreatedAt;
176
+ if (hasShadowContentChanged(local)) {
177
+ return hasRemoteMoved
178
+ ? {
179
+ category: 'conflict',
180
+ reason: ' Shadow content changed locally and shadow changed remotely',
181
+ }
182
+ : { category: 'detach' };
183
+ }
184
+ if (!hasNameChanged &&
185
+ !hasDescriptionChanged &&
186
+ !hasSourceChanged &&
187
+ !hasPinChanged &&
188
+ !hasProvenanceChanged) {
189
+ return { category: 'unchanged' };
190
+ }
191
+ if (hasSourceChanged && hasRemoteMoved) {
192
+ return {
193
+ category: 'conflict',
194
+ reason: ' Shadow source changed both local and remote',
195
+ };
196
+ }
197
+ else if (hasPinChanged && hasRemoteMoved) {
198
+ return {
199
+ category: 'conflict',
200
+ reason: ' Shadow pin changed both local and remote',
201
+ };
167
202
  }
168
- return elements;
203
+ return { category: 'update' };
169
204
  }
170
205
  function compareLocalAndRemote(local, remote) {
171
206
  if (!remote) {
@@ -174,27 +209,12 @@ function compareLocalAndRemote(local, remote) {
174
209
  reason: 'Element exists locally with an id but not found in Integreat',
175
210
  };
176
211
  }
177
- const localName = local.data.name || '';
178
- const localDesc = local.data.description || '';
179
212
  if (local.source) {
180
- const hasNameChanged = localName !== (remote.name || '');
181
- const hasDescriptionChanged = localDesc !== (remote.description || '');
182
- const hasPinChanged = (local.source.timestamp ?? null) !== (remote.sourceTimestamp ?? null);
183
- const hasProvenanceChanged = !sameProvenance(local.provenance, remote.provenance);
184
- if (!hasNameChanged &&
185
- !hasDescriptionChanged &&
186
- !hasPinChanged &&
187
- !hasProvenanceChanged) {
188
- return { category: 'unchanged' };
189
- }
190
- if (hasPinChanged && local.timestamp !== remote.contentCreatedAt) {
191
- return {
192
- category: 'conflict',
193
- reason: ' Shadow pin changed both local and remote',
194
- };
195
- }
196
- return { category: 'update' };
213
+ return compareShadow(local, remote, local.source);
197
214
  }
215
+ const localName = local.data.name || '';
216
+ const localDesc = local.data.description || '';
217
+ const isList = isEndpointList(local);
198
218
  const localChecksum = hashContent(local.data);
199
219
  const localTimestamp = local.timestamp ? new Date(local.timestamp) : undefined;
200
220
  const remoteChecksum = remote.checksum || '';
@@ -203,9 +223,11 @@ function compareLocalAndRemote(local, remote) {
203
223
  const remoteCreatedAt = remote.createdAt
204
224
  ? new Date(remote.createdAt)
205
225
  : undefined;
206
- const hasContentChanged = localChecksum !== remoteChecksum;
207
- const hasNameChanged = localName !== remoteName;
208
- const hasDescriptionChanged = localDesc !== remoteDesc;
226
+ const hasContentChanged = localChecksum !== remoteChecksum ||
227
+ Boolean(remote.sourceId) ||
228
+ !sameProvenance(local.provenance, remote.provenance);
229
+ const hasNameChanged = !isList && localName !== remoteName;
230
+ const hasDescriptionChanged = !isList && localDesc !== remoteDesc;
209
231
  if (!hasContentChanged && !hasNameChanged && !hasDescriptionChanged) {
210
232
  return { category: 'unchanged' };
211
233
  }
@@ -234,6 +256,7 @@ function categorizeElements(localElements, remoteElementsMap) {
234
256
  const toCreate = [];
235
257
  const toInclude = [];
236
258
  const toUpdate = [];
259
+ const toDetach = [];
237
260
  const toDelete = [];
238
261
  const conflicts = [];
239
262
  const localElementIds = new Set();
@@ -256,13 +279,18 @@ function categorizeElements(localElements, remoteElementsMap) {
256
279
  else if (result.category === 'update') {
257
280
  toUpdate.push({ ...local, remoteId: remote?.id });
258
281
  }
282
+ else if (result.category === 'detach') {
283
+ toDetach.push({ ...local, remoteId: remote?.id });
284
+ }
259
285
  }
260
286
  for (const [id, remoteLement] of remoteElementsMap) {
261
287
  if (!localElementIds.has(id)) {
262
288
  toDelete.push(remoteLement);
263
289
  }
264
290
  }
265
- return { toCreate, toInclude, toUpdate, toDelete, conflicts };
291
+ toDelete.sort((a, b) => Number(b.folder === ENDPOINT_LISTS_FOLDER) -
292
+ Number(a.folder === ENDPOINT_LISTS_FOLDER));
293
+ return { toCreate, toInclude, toUpdate, toDetach, toDelete, conflicts };
266
294
  }
267
295
  const prepareContentForApi = ({ name, description, ...content }, elementType) => {
268
296
  if (elementType === ElementType.Value) {
@@ -283,7 +311,9 @@ const prepareContentForApi = ({ name, description, ...content }, elementType) =>
283
311
  };
284
312
  async function createElementOnApi(client, integrationId, element) {
285
313
  const elementType = folderToElementType[element.folder];
286
- const name = element.data.name || sentenceCase(element.key);
314
+ const name = element.data.name ||
315
+ element.defaultName ||
316
+ sentenceCase(element.key);
287
317
  const description = element.data.description;
288
318
  const result = await client.request(CreateElementMutationDocument, {
289
319
  integrationId,
@@ -301,28 +331,30 @@ async function createElementOnApi(client, integrationId, element) {
301
331
  }
302
332
  return { id, name };
303
333
  }
334
+ function buildShadowData(element, name, description, data) {
335
+ if (isEndpointList(element)) {
336
+ return { ...data };
337
+ }
338
+ const finalName = element.data.name || name;
339
+ const finalDescription = element.data.description || description || undefined;
340
+ return {
341
+ ...(finalName ? { name: finalName } : {}),
342
+ ...(finalDescription ? { description: finalDescription } : {}),
343
+ ...data,
344
+ };
345
+ }
304
346
  function writeShadowFileAndRecord(fsImpl, element, great, source, included) {
305
- const name = element.data.name || included.name;
306
- const description = element.data.description ||
307
- included.description ||
308
- undefined;
309
347
  const content = included.content;
310
- const fileData = {
311
- [SHADOW_MARKER]: true,
312
- ...(name ? { name } : {}),
313
- ...(description ? { description } : {}),
314
- ...content?.data,
315
- };
316
- fsImpl.writeFileSync(element.filePath, JSON.stringify(fileData, null, 2));
317
348
  setElementRecord(great, element.folder, element.key, {
318
349
  id: included.id,
319
350
  ...(content?.createdAt ? { timestamp: content.createdAt } : {}),
320
- ...(content?.checksum ? { hash: content.checksum } : {}),
351
+ hash: hashContent({ ...content?.data }),
321
352
  source,
322
353
  ...(element.provenance && element.provenance.length > 0
323
354
  ? { provenance: element.provenance }
324
355
  : {}),
325
356
  });
357
+ writeElementFile(undefined, element.folder, element.key, buildShadowData(element, included.name, included.description, content?.data), great, fsImpl, element.filePath);
326
358
  }
327
359
  async function includeShadowElement(element, graphqlClient, integrationId, fsImpl, log, great) {
328
360
  const source = element.source;
@@ -347,7 +379,7 @@ async function includeShadowElement(element, graphqlClient, integrationId, fsImp
347
379
  const localDesc = element.data.description || '';
348
380
  const nameDiffers = localName !== (included.name || '');
349
381
  const descDiffers = localDesc !== (included.description || '');
350
- if (nameDiffers || descDiffers) {
382
+ if (!isEndpointList(element) && (nameDiffers || descDiffers)) {
351
383
  const updateResult = await graphqlClient.request(UpdateElementMutationDocument, {
352
384
  id: included.id,
353
385
  name: nameDiffers ? localName : undefined,
@@ -360,24 +392,32 @@ async function includeShadowElement(element, graphqlClient, integrationId, fsImp
360
392
  writeShadowFileAndRecord(fsImpl, element, great, source, included);
361
393
  return true;
362
394
  }
363
- async function updateElementContent(client, elementId, content) {
395
+ async function updateElementContent(client, elementId, content, provenance) {
364
396
  const result = await client.request(SetElementContentMutationDocument, {
365
397
  id: elementId,
366
398
  content,
399
+ ...(provenance && provenance.length > 0 ? { provenance } : {}),
367
400
  });
368
401
  if (result.error) {
369
402
  return undefined;
370
403
  }
371
404
  return result.data?.setElementContent?.content?.createdAt;
372
405
  }
406
+ async function setSecretRefForElement(client, elementId, element, log) {
407
+ const result = await client.request(SetSecretRefMutationDocument, { id: elementId, secretRef: String(element.data.ref) });
408
+ if (result.error) {
409
+ log(chalk.red(`Failed to set secret ref for ${element.key}: ${getGraphQLErrorMessage(result.error)}`));
410
+ return false;
411
+ }
412
+ log(chalk.green(`✓ Secret ref set for element "${element.key}"`));
413
+ return true;
414
+ }
373
415
  function updateLocalFile(fsImpl, element, great, updatedId, updatedTimestamp, generatedName, keepValue = false) {
374
- const content = fsImpl.readFileSync(element.filePath, 'utf8');
375
- const parsed = parseJson(content);
376
- const { name, description, value, ref, ...data } = parsed;
416
+ const { name, description, value, ref, ...data } = element.data;
377
417
  const existing = getElementRecord(great, element.folder, element.key);
378
418
  const id = updatedId ?? existing?.id;
379
419
  const timestamp = updatedTimestamp ?? existing?.timestamp;
380
- const finalName = generatedName || name;
420
+ const finalName = isEndpointList(element) ? undefined : generatedName || name;
381
421
  const orderedData = {
382
422
  ...(finalName ? { name: finalName } : {}),
383
423
  ...(description ? { description } : {}),
@@ -385,12 +425,27 @@ function updateLocalFile(fsImpl, element, great, updatedId, updatedTimestamp, ge
385
425
  ...(keepValue && value !== undefined ? { value } : {}),
386
426
  ...(keepValue && ref !== undefined ? { ref } : {}),
387
427
  };
388
- fsImpl.writeFileSync(element.filePath, JSON.stringify(orderedData, null, 2));
389
428
  setElementRecord(great, element.folder, element.key, {
390
429
  ...(id ? { id } : {}),
391
430
  ...(timestamp ? { timestamp } : {}),
392
431
  hash: hashContent(orderedData),
432
+ ...(element.provenance && element.provenance.length > 0
433
+ ? { provenance: element.provenance }
434
+ : {}),
393
435
  });
436
+ writeElementFile(undefined, element.folder, element.key, orderedData, great, fsImpl, element.filePath);
437
+ }
438
+ async function restoreShadowFile(element, graphqlClient, fsImpl, great, log) {
439
+ const remote = element.id
440
+ ? await fetchElementById(graphqlClient, element.id, log)
441
+ : undefined;
442
+ if (!remote) {
443
+ log(chalk.red(`Could not restore ${element.folder}/${element.key} from its source — the local changes are kept but not pushed`));
444
+ return;
445
+ }
446
+ const data = (remote.content?.data ?? {});
447
+ writeElementFile(undefined, element.folder, element.key, buildShadowData(element, undefined, undefined, data), great, fsImpl, element.filePath);
448
+ log(chalk.yellow(`Restored ${element.folder}/${element.key} from its source — the local changes were discarded`));
394
449
  }
395
450
  function recordElementProgress(great, element, fields) {
396
451
  const existing = getElementRecord(great, element.folder, element.key);
@@ -402,15 +457,20 @@ function recordElementProgress(great, element, fields) {
402
457
  function buildRemoteElementsMap(elements) {
403
458
  const remoteElements = new Map();
404
459
  for (const element of elements) {
460
+ const folder = typeToFolder[element.__typename];
461
+ if (!folder) {
462
+ continue;
463
+ }
405
464
  remoteElements.set(element.id, {
406
465
  id: element.id,
407
466
  key: element.key,
408
- folder: typeToFolder[element.__typename],
467
+ folder,
409
468
  checksum: element.content?.checksum,
410
469
  contentCreatedAt: element.content?.createdAt,
411
470
  name: element.name,
412
471
  description: element.description,
413
472
  createdAt: element.createdAt,
473
+ sourceId: element.content?.sourceId,
414
474
  sourceTimestamp: element.content?.sourceTimestamp,
415
475
  provenance: element.content?.provenance,
416
476
  });
@@ -440,7 +500,7 @@ async function createOrUpdateElement(element, graphqlClient, integrationId, fsIm
440
500
  }
441
501
  else {
442
502
  const apiElement = apiElementsMap.get(id);
443
- if (apiElement) {
503
+ if (apiElement && !isEndpointList(element)) {
444
504
  const localName = element.data.name || '';
445
505
  const localDesc = element.data.description;
446
506
  const apiName = apiElement.name || '';
@@ -459,11 +519,12 @@ async function createOrUpdateElement(element, graphqlClient, integrationId, fsIm
459
519
  }
460
520
  }
461
521
  }
462
- if (element.source) {
522
+ if (element.source && !element.detach) {
463
523
  const remote = apiElementsMap.get(id);
524
+ const sourceChanged = element.source.id !== remote?.sourceId;
464
525
  const pinChanged = (element.source.timestamp ?? null) !== (remote?.sourceTimestamp ?? null);
465
526
  const provenanceChanged = !sameProvenance(element.provenance, remote?.provenance);
466
- if (pinChanged || provenanceChanged) {
527
+ if (sourceChanged || pinChanged || provenanceChanged) {
467
528
  return includeShadowElement(element, graphqlClient, integrationId, fsImpl, log, great);
468
529
  }
469
530
  return true;
@@ -477,7 +538,7 @@ async function createOrUpdateElement(element, graphqlClient, integrationId, fsIm
477
538
  log(chalk.red(`Failed to prepare content for ${element.key} in ${element.folder}: ${error instanceof Error ? error.message : String(error)}`));
478
539
  return false;
479
540
  }
480
- const timestamp = await updateElementContent(graphqlClient, id, content);
541
+ const timestamp = await updateElementContent(graphqlClient, id, content, element.provenance);
481
542
  if (!timestamp) {
482
543
  log(chalk.red(`Failed to ${element.remoteId ? 'update' : 'set'} content for ${element.key} in ${element.folder}`));
483
544
  return false;
@@ -488,13 +549,10 @@ async function createOrUpdateElement(element, graphqlClient, integrationId, fsIm
488
549
  const isSecret = content.type === 'secret';
489
550
  if (elementType === ElementType.Value && shouldSetValue) {
490
551
  if (isSecret && hasRef && !hasValue) {
491
- const secretRef = String(element.data.ref);
492
- const result = await graphqlClient.request(SetSecretRefMutationDocument, { id, secretRef });
493
- if (result.error) {
494
- log(chalk.red(`Failed to set secret ref for ${element.key}: ${getGraphQLErrorMessage(result.error)}`));
552
+ const success = await setSecretRefForElement(graphqlClient, id, element, log);
553
+ if (!success) {
495
554
  return false;
496
555
  }
497
- log(chalk.green(`✓ Secret ref set for element "${element.key}"`));
498
556
  }
499
557
  else if (hasValue) {
500
558
  const valueStr = String(element.data.value);
@@ -506,19 +564,38 @@ async function createOrUpdateElement(element, graphqlClient, integrationId, fsIm
506
564
  log(chalk.green(`✓ Value set for element "${element.key}" (${content.type})`));
507
565
  }
508
566
  }
509
- updateLocalFile(fsImpl, element, great, element.remoteId ? undefined : id, timestamp, generatedName, !shouldSetValue && hasValue);
567
+ updateLocalFile(fsImpl, element, great, element.remoteId ? undefined : id, timestamp, generatedName, !shouldSetValue && (hasValue || hasRef));
510
568
  return true;
511
569
  }
512
570
  async function deleteElement(element, graphqlClient, log) {
513
571
  const result = await graphqlClient.request(DeleteElementMutationDocument, {
514
572
  id: element.id,
515
573
  });
516
- if (result.error) {
574
+ if (result.error && !isNotFoundError(result.error)) {
517
575
  log(chalk.red(`Failed to delete element ${element.id}`));
518
576
  return false;
519
577
  }
520
578
  return true;
521
579
  }
580
+ async function resolveDetaches(toDetach, promptForDetachFn, graphqlClient, fsImpl, great, log) {
581
+ const detached = [];
582
+ for (const element of toDetach) {
583
+ let shouldDetach;
584
+ try {
585
+ shouldDetach = await promptForDetachFn(element, log);
586
+ }
587
+ catch {
588
+ return undefined;
589
+ }
590
+ if (shouldDetach) {
591
+ detached.push({ ...element, detach: true, provenance: undefined });
592
+ }
593
+ else {
594
+ await restoreShadowFile(element, graphqlClient, fsImpl, great, log);
595
+ }
596
+ }
597
+ return detached;
598
+ }
522
599
  function buildRemoteImportsMap(templateImports) {
523
600
  const map = new Map();
524
601
  for (const templateImport of templateImports) {
@@ -597,12 +674,12 @@ function logSummary(createdCount, includedCount, updatedCount, deletedCount, reg
597
674
  log(`\n${chalk.green('✓')} ${parts.join(', ')}`);
598
675
  }
599
676
  }
600
- export const action = (log, apiToken, client, fsImpl = fs, config, promptForValueSettingFn = promptForValueSetting) => async function pushIntegration(options) {
677
+ export const action = (log, apiToken, client, fsImpl = fs, config, promptForValueSettingFn = promptForValueSetting, promptForDetachFn = promptForDetach) => async function pushIntegration(options) {
601
678
  const great = readGreatFile(undefined, fsImpl);
602
679
  let integrationId = great.id;
603
680
  if (!integrationId) {
604
681
  log(chalk.yellow('No integration ID found'));
605
- log('Creating integration on server...\n');
682
+ log('Creating integration in Integreat...\n');
606
683
  const graphqlClient = getClient(apiToken, client, config);
607
684
  const result = await createIntegrationFromFile(graphqlClient, apiToken ?? '', options ?? {}, config, fsImpl);
608
685
  if (!result.success || !result.integration) {
@@ -640,7 +717,7 @@ export const action = (log, apiToken, client, fsImpl = fs, config, promptForValu
640
717
  };
641
718
  writeGreatFile(great, undefined, fsImpl);
642
719
  integrationId = integration.id;
643
- log(chalk.green('✓ Updated integration.json with server details\n'));
720
+ log(chalk.green('✓ Updated integration.json with the details from Integreat\n'));
644
721
  }
645
722
  const graphqlClient = getClient(apiToken, client, config);
646
723
  const result = await graphqlClient.request(IntegrationForPushQueryDocument, { id: integrationId });
@@ -668,14 +745,32 @@ export const action = (log, apiToken, client, fsImpl = fs, config, promptForValu
668
745
  const record = getElementRecord(great, local.folder, local.key);
669
746
  local.id = record?.id;
670
747
  local.timestamp = record?.timestamp;
748
+ local.hash = record?.hash;
671
749
  local.source = record?.source;
672
750
  local.provenance = record?.provenance;
673
751
  }
674
- const { toCreate, toInclude, toUpdate, toDelete, conflicts } = categorizeElements(localElements, apiElementsMap);
752
+ const serviceNames = new Map(localElements
753
+ .filter((el) => el.folder === 'services' && el.data.name)
754
+ .map((el) => [el.key, String(el.data.name)]));
755
+ for (const local of localElements) {
756
+ if (isEndpointList(local)) {
757
+ local.defaultName = serviceNames.get(local.key);
758
+ }
759
+ }
760
+ for (const warning of validateEndpointReferences(localElements, great)) {
761
+ log(chalk.yellow(`Warning: ${warning}`));
762
+ }
763
+ const { toCreate, toInclude, toUpdate, toDetach, toDelete, conflicts } = categorizeElements(localElements, apiElementsMap);
675
764
  if (conflicts.length > 0) {
676
765
  handleConflicts(conflicts, log);
677
766
  return;
678
767
  }
768
+ const detached = await resolveDetaches(toDetach, promptForDetachFn, graphqlClient, fsImpl, great, log);
769
+ if (!detached) {
770
+ log(chalk.yellow('\nPush cancelled'));
771
+ return;
772
+ }
773
+ toUpdate.push(...detached);
679
774
  const remoteImportsMap = buildRemoteImportsMap(integration.templateImports ?? []);
680
775
  const importsToRegister = findImportsToRegister(great, remoteImportsMap);
681
776
  if (toCreate.length +
@@ -687,7 +782,7 @@ export const action = (log, apiToken, client, fsImpl = fs, config, promptForValu
687
782
  log(chalk.green('No changes to push'));
688
783
  return;
689
784
  }
690
- let shouldSetValue = false;
785
+ let shouldSetValue;
691
786
  try {
692
787
  shouldSetValue = await promptForValueSettingFn([...toCreate, ...toUpdate], log);
693
788
  }