great 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/README.md +141 -43
  2. package/dist/accounts/create.d.ts +1 -1
  3. package/dist/accounts/create.js +2 -4
  4. package/dist/accounts/create.js.map +1 -1
  5. package/dist/accounts/index.d.ts +1 -1
  6. package/dist/accounts/index.js +2 -4
  7. package/dist/accounts/index.js.map +1 -1
  8. package/dist/clone/index.d.ts +4 -2
  9. package/dist/clone/index.js +19 -43
  10. package/dist/clone/index.js.map +1 -1
  11. package/dist/config/index.js +4 -30
  12. package/dist/config/index.js.map +1 -1
  13. package/dist/deploy/index.d.ts +1 -1
  14. package/dist/deploy/index.js +55 -15
  15. package/dist/deploy/index.js.map +1 -1
  16. package/dist/env/index.d.ts +12 -0
  17. package/dist/env/index.js +131 -0
  18. package/dist/env/index.js.map +1 -0
  19. package/dist/explode/transform.d.ts +1 -1
  20. package/dist/explode/transform.js +6 -2
  21. package/dist/explode/transform.js.map +1 -1
  22. package/dist/explode/unescapeMongo.js +9 -1
  23. package/dist/explode/unescapeMongo.js.map +1 -1
  24. package/dist/generated/operations.d.ts +617 -0
  25. package/dist/generated/operations.js +2 -0
  26. package/dist/generated/operations.js.map +1 -0
  27. package/dist/generated/schema.d.ts +965 -0
  28. package/dist/generated/{graphql.js → schema.js} +20 -2
  29. package/dist/generated/schema.js.map +1 -0
  30. package/dist/implode/escapeMongo.d.ts +1 -0
  31. package/dist/implode/escapeMongo.js +23 -0
  32. package/dist/implode/escapeMongo.js.map +1 -0
  33. package/dist/implode/index.d.ts +6 -0
  34. package/dist/implode/index.js +132 -0
  35. package/dist/implode/index.js.map +1 -0
  36. package/dist/implode/transform.d.ts +45 -0
  37. package/dist/implode/transform.js +73 -0
  38. package/dist/implode/transform.js.map +1 -0
  39. package/dist/import/index.d.ts +8 -0
  40. package/dist/import/index.js +43 -0
  41. package/dist/import/index.js.map +1 -0
  42. package/dist/include/index.d.ts +10 -0
  43. package/dist/include/index.js +41 -0
  44. package/dist/include/index.js.map +1 -0
  45. package/dist/index.js +15 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/init/index.js +8 -16
  48. package/dist/init/index.js.map +1 -1
  49. package/dist/integrations/create.d.ts +1 -1
  50. package/dist/integrations/create.js +3 -5
  51. package/dist/integrations/create.js.map +1 -1
  52. package/dist/integrations/list.d.ts +1 -1
  53. package/dist/integrations/list.js +3 -5
  54. package/dist/integrations/list.js.map +1 -1
  55. package/dist/migrate/index.d.ts +5 -0
  56. package/dist/migrate/index.js +101 -0
  57. package/dist/migrate/index.js.map +1 -0
  58. package/dist/pull/index.d.ts +4 -2
  59. package/dist/pull/index.js +25 -44
  60. package/dist/pull/index.js.map +1 -1
  61. package/dist/push/index.d.ts +1 -1
  62. package/dist/push/index.js +364 -93
  63. package/dist/push/index.js.map +1 -1
  64. package/dist/rename/index.d.ts +8 -0
  65. package/dist/rename/index.js +109 -0
  66. package/dist/rename/index.js.map +1 -0
  67. package/dist/repl/dispatch.d.ts +8 -2
  68. package/dist/repl/dispatch.js +43 -29
  69. package/dist/repl/dispatch.js.map +1 -1
  70. package/dist/repl/dispatchAndLoad.d.ts +7 -0
  71. package/dist/repl/dispatchAndLoad.js +35 -0
  72. package/dist/repl/dispatchAndLoad.js.map +1 -0
  73. package/dist/repl/help.js +13 -2
  74. package/dist/repl/help.js.map +1 -1
  75. package/dist/repl/index.d.ts +1 -1
  76. package/dist/repl/index.js +31 -10
  77. package/dist/repl/index.js.map +1 -1
  78. package/dist/repl/load.d.ts +8 -0
  79. package/dist/repl/load.js +53 -0
  80. package/dist/repl/load.js.map +1 -0
  81. package/dist/run/index.d.ts +7 -5
  82. package/dist/run/index.js +5 -7
  83. package/dist/run/index.js.map +1 -1
  84. package/dist/status/index.d.ts +1 -1
  85. package/dist/status/index.js +6 -8
  86. package/dist/status/index.js.map +1 -1
  87. package/dist/utils/config.d.ts +9 -2
  88. package/dist/utils/config.js +39 -6
  89. package/dist/utils/config.js.map +1 -1
  90. package/dist/utils/createIntegrationFromFile.d.ts +3 -1
  91. package/dist/utils/createIntegrationFromFile.js +14 -30
  92. package/dist/utils/createIntegrationFromFile.js.map +1 -1
  93. package/dist/utils/detectPullConflicts.d.ts +8 -0
  94. package/dist/utils/detectPullConflicts.js +65 -0
  95. package/dist/utils/detectPullConflicts.js.map +1 -0
  96. package/dist/utils/dispatch.d.ts +2 -2
  97. package/dist/utils/dispatch.js +5 -4
  98. package/dist/utils/dispatch.js.map +1 -1
  99. package/dist/utils/elementFiles.d.ts +13 -0
  100. package/dist/utils/elementFiles.js +76 -0
  101. package/dist/utils/elementFiles.js.map +1 -0
  102. package/dist/utils/fetchIntegrationDefinition.d.ts +8 -0
  103. package/dist/utils/fetchIntegrationDefinition.js +58 -0
  104. package/dist/utils/fetchIntegrationDefinition.js.map +1 -0
  105. package/dist/utils/fetchLocal.d.ts +3 -1
  106. package/dist/utils/fetchLocal.js +11 -9
  107. package/dist/utils/fetchLocal.js.map +1 -1
  108. package/dist/utils/fetchSession.d.ts +1 -1
  109. package/dist/utils/fetchSession.js +2 -1
  110. package/dist/utils/fetchSession.js.map +1 -1
  111. package/dist/utils/graphqlClient.d.ts +3 -0
  112. package/dist/utils/graphqlClient.js +3 -0
  113. package/dist/utils/graphqlClient.js.map +1 -1
  114. package/dist/utils/graphqlError.d.ts +2 -1
  115. package/dist/utils/graphqlError.js +17 -3
  116. package/dist/utils/graphqlError.js.map +1 -1
  117. package/dist/utils/greatFile.d.ts +40 -0
  118. package/dist/utils/greatFile.js +66 -0
  119. package/dist/utils/greatFile.js.map +1 -0
  120. package/dist/utils/hashContent.js +1 -1
  121. package/dist/utils/hashContent.js.map +1 -1
  122. package/dist/utils/integrationType.d.ts +3 -0
  123. package/dist/utils/integrationType.js +15 -0
  124. package/dist/utils/integrationType.js.map +1 -0
  125. package/dist/utils/parseJson.d.ts +1 -0
  126. package/dist/utils/parseJson.js +5 -0
  127. package/dist/utils/parseJson.js.map +1 -0
  128. package/dist/utils/resolveAccount.d.ts +5 -4
  129. package/dist/utils/resolveAccount.js +17 -9
  130. package/dist/utils/resolveAccount.js.map +1 -1
  131. package/dist/utils/resolveElement.d.ts +1 -1
  132. package/dist/utils/resolveElementInclude.d.ts +3 -0
  133. package/dist/utils/resolveElementInclude.js +28 -0
  134. package/dist/utils/resolveElementInclude.js.map +1 -0
  135. package/dist/utils/resolveIntegration.d.ts +4 -2
  136. package/dist/utils/resolveIntegration.js +7 -3
  137. package/dist/utils/resolveIntegration.js.map +1 -1
  138. package/dist/utils/resolveTemplateImport.d.ts +3 -0
  139. package/dist/utils/resolveTemplateImport.js +31 -0
  140. package/dist/utils/resolveTemplateImport.js.map +1 -0
  141. package/dist/utils/response.d.ts +3 -0
  142. package/dist/utils/response.js +24 -0
  143. package/dist/utils/response.js.map +1 -0
  144. package/dist/utils/saveIntegration.d.ts +8 -4
  145. package/dist/utils/saveIntegration.js +76 -34
  146. package/dist/utils/saveIntegration.js.map +1 -1
  147. package/dist/utils/token.js +1 -1
  148. package/dist/utils/token.js.map +1 -1
  149. package/dist/utils/url.d.ts +1 -0
  150. package/dist/utils/url.js +10 -0
  151. package/dist/utils/url.js.map +1 -0
  152. package/dist/utils/writeShadowElement.d.ts +26 -0
  153. package/dist/utils/writeShadowElement.js +119 -0
  154. package/dist/utils/writeShadowElement.js.map +1 -0
  155. package/dist/{value → values}/get.d.ts +1 -1
  156. package/dist/{value → values}/get.js +7 -8
  157. package/dist/values/get.js.map +1 -0
  158. package/dist/{value → values}/index.js +13 -1
  159. package/dist/values/index.js.map +1 -0
  160. package/dist/{value → values}/list.js +10 -9
  161. package/dist/values/list.js.map +1 -0
  162. package/dist/{value → values}/set.d.ts +1 -1
  163. package/dist/{value → values}/set.js +9 -9
  164. package/dist/values/set.js.map +1 -0
  165. package/dist/values/unset.d.ts +8 -0
  166. package/dist/values/unset.js +61 -0
  167. package/dist/values/unset.js.map +1 -0
  168. package/dist/whoami/fetchSession.d.ts +3 -3
  169. package/dist/whoami/fetchSession.js +2 -4
  170. package/dist/whoami/fetchSession.js.map +1 -1
  171. package/dist/whoami/index.d.ts +1 -1
  172. package/package.json +20 -19
  173. package/dist/generated/graphql.d.ts +0 -1784
  174. package/dist/generated/graphql.js.map +0 -1
  175. package/dist/value/get.js.map +0 -1
  176. package/dist/value/index.js.map +0 -1
  177. package/dist/value/list.js.map +0 -1
  178. package/dist/value/set.js.map +0 -1
  179. /package/dist/{value → values}/index.d.ts +0 -0
  180. /package/dist/{value → values}/list.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/integrations/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EACL,mBAAmB,GAEpB,MAAM,2BAA2B,CAAA;AAClC,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;AAC7D,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAA;AAGrE,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,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QACzE,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,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YACrB,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,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,6 +1,6 @@
1
1
  import Conf from 'conf';
2
2
  import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
3
- import { type ConfigSchema } from '../utils/config.js';
3
+ import type { ConfigSchema } from '../utils/config.js';
4
4
  export default function listIntegrations(log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, config?: Conf<ConfigSchema>): (options?: {
5
5
  account?: string;
6
6
  all?: boolean;
@@ -1,10 +1,9 @@
1
1
  import chalk from 'chalk';
2
2
  import columnify from 'columnify';
3
- import { createGraphQLClient, } from '../utils/graphqlClient.js';
3
+ import { getClient } from '../utils/graphqlClient.js';
4
4
  import { handleGraphQLError } from '../utils/graphqlError.js';
5
5
  import { gql } from 'graphql-tag';
6
6
  import { resolveAccountId } from '../utils/resolveAccount.js';
7
- import { getApiBaseUrl } from '../utils/config.js';
8
7
  const IntegrationsQueryDocument = gql `
9
8
  query Integrations {
10
9
  integrations(orderBy: name, direction: asc) {
@@ -79,8 +78,7 @@ function displayIntegrations({ integrations, count, accountName }, log) {
79
78
  }
80
79
  export default function listIntegrations(log, apiToken, client, config) {
81
80
  return async function integrationsList(options) {
82
- const apiBaseUrl = getApiBaseUrl(config);
83
- const graphqlClient = client ?? createGraphQLClient(apiToken, apiBaseUrl);
81
+ const graphqlClient = getClient(apiToken, client, config);
84
82
  let result;
85
83
  if (options?.all) {
86
84
  result = await fetchAllIntegrations(graphqlClient, log);
@@ -88,7 +86,7 @@ export default function listIntegrations(log, apiToken, client, config) {
88
86
  else {
89
87
  const { accountId, error } = await resolveAccountId(options ?? {}, apiToken ?? '', graphqlClient, config);
90
88
  if (error) {
91
- log(chalk.red(error));
89
+ handleGraphQLError(error, log);
92
90
  return;
93
91
  }
94
92
  result = accountId
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,SAAS,EAA6B,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAK7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,MAAM,yBAAyB,GAAG,GAAG,CAAA;;;;;;;;;;;CAWpC,CAAA;AAED,MAAM,mCAAmC,GAAG,GAAG,CAAA;;;;;;;;;;;;;;CAc9C,CAAA;AAQD,KAAK,UAAU,oBAAoB,CACjC,MAA4B,EAC5B,GAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,yBAAyB,EACzB,EAAE,CACH,CAAA;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;QACpD,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,IAAI,CAAC;KAClD,CAAA;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,MAA4B,EAC5B,SAAiB,EACjB,GAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CACjC,mCAAmC,EACnC,EAAE,SAAS,EAAE,CACd,CAAA;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;QAC7D,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,CAAC;QAC1D,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,SAAS;KACrD,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAsB,EACxD,GAA8B;IAE9B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,CACD,SAAS,CAAC,YAAY,EAAE;YACtB,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;YAC9B,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE;oBACJ,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;iBAClD;gBACD,EAAE,EAAE;oBACF,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBACjD,gBAAgB,EAAE,CAAC,OAAe,EAAE,EAAE,CACpC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;iBACpC;aACF;SACF,CAAC,CACH,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,EAAE;QAC5D,CAAC,CAAC,iBAAiB,CAAA;IACrB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CACtC,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAA2B;IAE3B,OAAO,KAAK,UAAU,gBAAgB,CAAC,OAGtC;QACC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAEzD,IAAI,MAAM,CAAA;QACV,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;YAEjB,MAAM,GAAG,MAAM,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACzD,CAAC;aAAM,CAAC;YAEN,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,gBAAgB,CACjD,OAAO,IAAI,EAAE,EACb,QAAQ,IAAI,EAAE,EACd,aAAa,EACb,MAAM,CACP,CAAA;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAC9B,OAAM;YACR,CAAC;YAED,MAAM,GAAG,SAAS;gBAChB,CAAC,CAAC,MAAM,wBAAwB,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC;gBAC/D,CAAC,CAAC,MAAM,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAClC,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import fs from 'node:fs';
2
+ import type { Command } from 'commander';
3
+ export declare const action: (log: (message: string) => void, fsImpl?: typeof fs) => () => Promise<void>;
4
+ declare const _default: (program: Command) => Command;
5
+ export default _default;
@@ -0,0 +1,101 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import chalk from 'chalk';
4
+ import parseJson from '../utils/parseJson.js';
5
+ import hashContent from '../utils/hashContent.js';
6
+ import { currentIntegrationKey } from '../utils/fetchLocal.js';
7
+ import { ELEMENT_FOLDERS, elementKeyFromFileName, } from '../utils/elementFiles.js';
8
+ import { readGreatFile, writeGreatFile, getElementRecord, setElementRecord, } from '../utils/greatFile.js';
9
+ const hasMetaProps = (data) => '__id' in data || '__key' in data || '__timestamp' in data;
10
+ function migrateIntegrationFile(great, log, fsImpl) {
11
+ const filePath = 'integration.json';
12
+ if (!fsImpl.existsSync(filePath)) {
13
+ return false;
14
+ }
15
+ const data = parseJson(fsImpl.readFileSync(filePath, 'utf8'));
16
+ const { __id, __key, __timestamp, account, key, ...rest } = data;
17
+ if (typeof __id === 'string') {
18
+ great.id = __id;
19
+ }
20
+ if (typeof __timestamp === 'string') {
21
+ great.timestamp = __timestamp;
22
+ }
23
+ const folderKey = currentIntegrationKey();
24
+ const storedKey = typeof __key === 'string' ? __key : key;
25
+ if (typeof storedKey === 'string' && storedKey && storedKey !== folderKey) {
26
+ log(chalk.yellow(`Note: stored key "${storedKey}" differs from folder name "${folderKey}", which is now the key. Rename the folder to "${storedKey}" to keep it.`));
27
+ }
28
+ if (account && typeof account === 'object') {
29
+ const { __id: accId, __key: accKey } = account;
30
+ const id = typeof accId === 'string' ? accId : great.account?.id;
31
+ const accountKey = typeof accKey === 'string' ? accKey : great.account?.key;
32
+ if (id || accountKey) {
33
+ great.account = {
34
+ ...(id ? { id } : {}),
35
+ ...(accountKey ? { key: accountKey } : {}),
36
+ };
37
+ }
38
+ }
39
+ fsImpl.writeFileSync(filePath, JSON.stringify(rest, undefined, 2));
40
+ return hasMetaProps(data) || !!account || key !== undefined;
41
+ }
42
+ function migrateElementFiles(great, fsImpl) {
43
+ let count = 0;
44
+ for (const folder of ELEMENT_FOLDERS) {
45
+ if (!fsImpl.existsSync(folder)) {
46
+ continue;
47
+ }
48
+ for (const file of fsImpl.readdirSync(folder)) {
49
+ const fileName = String(file);
50
+ const key = elementKeyFromFileName(fileName);
51
+ if (!key) {
52
+ continue;
53
+ }
54
+ const filePath = path.join(folder, fileName);
55
+ const data = parseJson(fsImpl.readFileSync(filePath, 'utf8'));
56
+ if (!hasMetaProps(data)) {
57
+ continue;
58
+ }
59
+ const { __id, __key, __timestamp, ...content } = data;
60
+ fsImpl.writeFileSync(filePath, JSON.stringify(content, undefined, 2));
61
+ const existing = getElementRecord(great, folder, key);
62
+ setElementRecord(great, folder, key, {
63
+ ...(typeof __id === 'string'
64
+ ? { id: __id }
65
+ : existing?.id
66
+ ? { id: existing.id }
67
+ : {}),
68
+ ...(typeof __timestamp === 'string'
69
+ ? { timestamp: __timestamp }
70
+ : existing?.timestamp
71
+ ? { timestamp: existing.timestamp }
72
+ : {}),
73
+ hash: hashContent(content),
74
+ });
75
+ count++;
76
+ }
77
+ }
78
+ return count;
79
+ }
80
+ export const action = (log, fsImpl = fs) => async function migrate() {
81
+ if (!fsImpl.existsSync('integration.json')) {
82
+ log(chalk.red('No integration.json found in this directory'));
83
+ return;
84
+ }
85
+ const great = readGreatFile(undefined, fsImpl);
86
+ const integrationMigrated = migrateIntegrationFile(great, log, fsImpl);
87
+ const elementCount = migrateElementFiles(great, fsImpl);
88
+ writeGreatFile(great, undefined, fsImpl);
89
+ if (integrationMigrated || elementCount > 0) {
90
+ log(chalk.green('✓ Migrated to .great.json'));
91
+ log(` Elements migrated: ${elementCount}`);
92
+ }
93
+ else {
94
+ log(chalk.green('Already migrated — nothing to do'));
95
+ }
96
+ };
97
+ export default (program) => program
98
+ .command('migrate')
99
+ .description('Migrate sync bookkeeping from inline __id/__key/__timestamp props to .great.json')
100
+ .action(action(console.log));
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrate/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import fs from 'node:fs';
2
2
  import Conf from 'conf';
3
3
  import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
4
- import { type ConfigSchema } from '../utils/config.js';
4
+ import type { ConfigSchema } from '../utils/config.js';
5
5
  import type { Command } from 'commander';
6
- export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: typeof fs, config?: Conf<ConfigSchema>) => () => Promise<void>;
6
+ export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: typeof fs, config?: Conf<ConfigSchema>) => (options?: {
7
+ force?: boolean;
8
+ }) => Promise<void>;
7
9
  declare const _default: (program: Command, apiToken?: string) => Command;
8
10
  export default _default;
@@ -1,62 +1,43 @@
1
1
  import chalk from 'chalk';
2
2
  import saveIntegration from '../utils/saveIntegration.js';
3
- import { fetchIdFromFile } from '../utils/fetchLocal.js';
4
- import { createGraphQLClient, } from '../utils/graphqlClient.js';
5
- import { handleGraphQLError } from '../utils/graphqlError.js';
6
- import { getApiBaseUrl } from '../utils/config.js';
7
- import { gql } from 'graphql-tag';
8
- const IntegrationDefinitionQueryDocument = gql `
9
- query IntegrationDefinition($id: ID!) {
10
- integration(id: $id) {
11
- id
12
- key
13
- name
14
- description
15
- status
16
- account {
17
- id
18
- key
19
- name
20
- }
21
- latest {
22
- timestamp
23
- elements {
24
- id
25
- key
26
- name
27
- __typename
28
- content {
29
- timestamp
30
- data
31
- }
32
- }
33
- }
3
+ import { fetchIntegrationId } from '../utils/fetchLocal.js';
4
+ import { getClient } from '../utils/graphqlClient.js';
5
+ import { fetchIntegrationDefinition } from '../utils/fetchIntegrationDefinition.js';
6
+ import { readGreatFile } from '../utils/greatFile.js';
7
+ import detectPullConflicts from '../utils/detectPullConflicts.js';
8
+ function reportConflicts(conflicts, log) {
9
+ log(chalk.red.bold('!! Conflicts detected!\n'));
10
+ for (const conflict of conflicts) {
11
+ log(`${chalk.bold(conflict.filePath)}`);
12
+ log(` ${conflict.reason}`);
34
13
  }
35
- }
36
- `;
37
- export const action = (log, apiToken, client, fsImpl, config) => async function pullIntegration() {
38
- const id = fetchIdFromFile(fsImpl);
14
+ log(`\nCommit or revert your local changes, or run ${chalk.bold('great pull --force')} to overwrite them.`);
15
+ }
16
+ export const action = (log, apiToken, client, fsImpl, config) => async function pullIntegration(options = {}) {
17
+ const id = fetchIntegrationId(fsImpl);
39
18
  if (!id) {
40
19
  log(chalk.red('No local integration project found'));
41
20
  log(`Run ${chalk.bold('great clone <integration-id>')} to clone an integration to a new folder`);
42
21
  return;
43
22
  }
44
- const apiBaseUrl = getApiBaseUrl(config);
45
- const graphqlClient = client ?? createGraphQLClient(apiToken, apiBaseUrl);
46
- const result = await graphqlClient.request(IntegrationDefinitionQueryDocument, { id });
47
- if (result.error) {
48
- handleGraphQLError(result.error, log);
23
+ const graphqlClient = getClient(apiToken, client, config);
24
+ const integration = await fetchIntegrationDefinition(graphqlClient, id, log);
25
+ if (!integration) {
49
26
  return;
50
27
  }
51
- const integration = result.data?.integration;
52
- if (!integration || !integration.latest) {
53
- log(chalk.red('Integration has no latest version'));
54
- return;
28
+ if (!options.force) {
29
+ const priorGreat = readGreatFile(undefined, fsImpl);
30
+ const conflicts = detectPullConflicts(integration.latest, priorGreat, undefined, fsImpl);
31
+ if (conflicts.length > 0) {
32
+ reportConflicts(conflicts, log);
33
+ return;
34
+ }
55
35
  }
56
36
  saveIntegration(integration, integration.latest, undefined, fsImpl);
57
37
  };
58
38
  export default (program, apiToken) => program
59
39
  .command('pull')
60
40
  .description('pull remote changes to the current integration folder')
41
+ .option('-f, --force', 'overwrite local changes without conflict check')
61
42
  .action(action(console.log, apiToken));
62
43
  //# sourceMappingURL=index.js.map
@@ -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,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EACL,mBAAmB,GAEpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAA;AAGrE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,MAAM,kCAAkC,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B7C,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAA8B,EAC9B,QAAiB,EACjB,MAA6B,EAC7B,MAAkB,EAClB,MAA2B,EAC3B,EAAE,CACF,KAAK,UAAU,eAAe;IAE5B,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAClC,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,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CACxC,kCAAkC,EAClC,EAAE,EAAE,EAAE,CACP,CAAA;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAAA;IAC5C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;QACnD,OAAM;IACR,CAAC;IAGD,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,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA"}
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,7 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import Conf from 'conf';
3
3
  import { type GraphQLRequestClient } from '../utils/graphqlClient.js';
4
- import { type ConfigSchema } from '../utils/config.js';
4
+ import type { ConfigSchema } from '../utils/config.js';
5
5
  import { promptForValueSetting } from '../utils/promptForValue.js';
6
6
  import type { Command } from 'commander';
7
7
  export declare const action: (log: (message: string) => void, apiToken?: string, client?: GraphQLRequestClient, fsImpl?: typeof fs, config?: Conf<ConfigSchema>, promptForValueSettingFn?: typeof promptForValueSetting) => (options?: {