@devrev/airsync-sdk 2.0.0-beta.0 → 2.0.0-beta.10

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 (227) hide show
  1. package/README.md +7 -21
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +7 -1
  3. package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
  4. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +4 -3
  5. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
  6. package/dist/attachments-streaming/attachments-streaming-pool.js +70 -33
  7. package/dist/common/constants.d.ts +15 -12
  8. package/dist/common/constants.d.ts.map +1 -1
  9. package/dist/common/constants.js +20 -34
  10. package/dist/common/helpers.d.ts +3 -27
  11. package/dist/common/helpers.d.ts.map +1 -1
  12. package/dist/common/helpers.js +6 -36
  13. package/dist/http/{axios-client-internal.d.ts → client.d.ts} +1 -1
  14. package/dist/http/client.d.ts.map +1 -0
  15. package/dist/http/{axios-client-internal.js → client.js} +7 -4
  16. package/dist/http/errors.d.ts +8 -0
  17. package/dist/http/errors.d.ts.map +1 -0
  18. package/dist/http/errors.js +31 -0
  19. package/dist/index.d.ts +30 -12
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +47 -28
  22. package/dist/logger/logger.d.ts +13 -70
  23. package/dist/logger/logger.d.ts.map +1 -1
  24. package/dist/logger/logger.interfaces.d.ts +4 -7
  25. package/dist/logger/logger.interfaces.d.ts.map +1 -1
  26. package/dist/logger/logger.js +67 -92
  27. package/dist/mappers/mappers.d.ts +10 -43
  28. package/dist/mappers/mappers.d.ts.map +1 -1
  29. package/dist/mappers/mappers.interfaces.d.ts +173 -0
  30. package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
  31. package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +1 -10
  32. package/dist/mappers/mappers.js +32 -46
  33. package/dist/multithreading/adapters/base-adapter.d.ts +39 -0
  34. package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
  35. package/dist/multithreading/adapters/base-adapter.js +212 -0
  36. package/dist/multithreading/adapters/extraction-adapter.d.ts +49 -0
  37. package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
  38. package/dist/multithreading/adapters/extraction-adapter.js +375 -0
  39. package/dist/multithreading/adapters/loading-adapter.d.ts +26 -0
  40. package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
  41. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts +12 -0
  42. package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
  43. package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +2 -12
  44. package/dist/multithreading/adapters/loading-adapter.js +279 -0
  45. package/dist/multithreading/emit.d.ts +11 -0
  46. package/dist/multithreading/emit.d.ts.map +1 -0
  47. package/dist/multithreading/emit.js +25 -0
  48. package/dist/multithreading/process-task.d.ts +6 -1
  49. package/dist/multithreading/process-task.d.ts.map +1 -1
  50. package/dist/multithreading/process-task.js +124 -51
  51. package/dist/multithreading/spawn/spawn.d.ts +11 -11
  52. package/dist/multithreading/spawn/spawn.d.ts.map +1 -1
  53. package/dist/multithreading/spawn/spawn.helpers.d.ts +12 -11
  54. package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
  55. package/dist/multithreading/spawn/spawn.helpers.js +142 -77
  56. package/dist/multithreading/spawn/spawn.js +74 -75
  57. package/dist/multithreading/worker.js +16 -5
  58. package/dist/repo/repo.d.ts +14 -5
  59. package/dist/repo/repo.d.ts.map +1 -1
  60. package/dist/repo/repo.helpers.d.ts +6 -0
  61. package/dist/repo/repo.helpers.d.ts.map +1 -0
  62. package/dist/repo/repo.helpers.js +16 -0
  63. package/dist/repo/repo.interfaces.d.ts +11 -20
  64. package/dist/repo/repo.interfaces.d.ts.map +1 -1
  65. package/dist/repo/repo.js +36 -22
  66. package/dist/state/base-state.d.ts +58 -0
  67. package/dist/state/base-state.d.ts.map +1 -0
  68. package/dist/state/base-state.js +242 -0
  69. package/dist/state/extraction-state.d.ts +14 -0
  70. package/dist/state/extraction-state.d.ts.map +1 -0
  71. package/dist/state/extraction-state.js +140 -0
  72. package/dist/state/install-initial-domain-mapping.d.ts +4 -0
  73. package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
  74. package/dist/{common → state}/install-initial-domain-mapping.js +5 -7
  75. package/dist/state/loading-state.d.ts +8 -0
  76. package/dist/state/loading-state.d.ts.map +1 -0
  77. package/dist/state/loading-state.js +29 -0
  78. package/dist/state/state.d.ts +3 -29
  79. package/dist/state/state.d.ts.map +1 -1
  80. package/dist/state/state.interfaces.d.ts +36 -10
  81. package/dist/state/state.interfaces.d.ts.map +1 -1
  82. package/dist/state/state.interfaces.js +17 -1
  83. package/dist/state/state.js +9 -164
  84. package/dist/state/time-value-resolver.d.ts +17 -0
  85. package/dist/state/time-value-resolver.d.ts.map +1 -0
  86. package/dist/state/time-value-resolver.js +110 -0
  87. package/dist/testing/mock-event.d.ts +10 -0
  88. package/dist/testing/mock-event.d.ts.map +1 -0
  89. package/dist/testing/mock-event.js +96 -0
  90. package/dist/testing/mock-server.d.ts +31 -0
  91. package/dist/testing/mock-server.d.ts.map +1 -0
  92. package/dist/testing/mock-server.interfaces.d.ts +54 -0
  93. package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
  94. package/dist/testing/mock-server.interfaces.js +4 -0
  95. package/dist/testing/mock-server.js +297 -0
  96. package/dist/testing/test-adapters.d.ts +22 -0
  97. package/dist/testing/test-adapters.d.ts.map +1 -0
  98. package/dist/testing/test-adapters.js +32 -0
  99. package/dist/types/common.d.ts +4 -37
  100. package/dist/types/common.d.ts.map +1 -1
  101. package/dist/types/common.js +2 -17
  102. package/dist/types/errors.d.ts +15 -0
  103. package/dist/types/errors.d.ts.map +1 -0
  104. package/dist/types/errors.js +28 -0
  105. package/dist/types/external-domain-metadata.d.ts +197 -0
  106. package/dist/types/external-domain-metadata.d.ts.map +1 -0
  107. package/dist/types/extraction.d.ts +135 -278
  108. package/dist/types/extraction.d.ts.map +1 -1
  109. package/dist/types/extraction.js +46 -133
  110. package/dist/types/loading.d.ts +15 -55
  111. package/dist/types/loading.d.ts.map +1 -1
  112. package/dist/types/loading.js +1 -23
  113. package/dist/types/workers.d.ts +70 -103
  114. package/dist/types/workers.d.ts.map +1 -1
  115. package/dist/types/workers.js +1 -6
  116. package/dist/uploader/uploader.d.ts +10 -61
  117. package/dist/uploader/uploader.d.ts.map +1 -1
  118. package/dist/uploader/uploader.helpers.d.ts +7 -27
  119. package/dist/uploader/uploader.helpers.d.ts.map +1 -1
  120. package/dist/uploader/uploader.helpers.js +80 -30
  121. package/dist/uploader/uploader.interfaces.d.ts +19 -54
  122. package/dist/uploader/uploader.interfaces.d.ts.map +1 -1
  123. package/dist/uploader/uploader.interfaces.js +8 -0
  124. package/dist/uploader/uploader.js +72 -124
  125. package/docs/MIGRATION.md +696 -0
  126. package/package.json +37 -20
  127. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
  128. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
  129. package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -267
  130. package/dist/common/control-protocol.d.ts +0 -10
  131. package/dist/common/control-protocol.d.ts.map +0 -1
  132. package/dist/common/control-protocol.js +0 -31
  133. package/dist/common/errors.d.ts +0 -6
  134. package/dist/common/errors.d.ts.map +0 -1
  135. package/dist/common/errors.js +0 -4
  136. package/dist/common/event-type-translation.d.ts +0 -24
  137. package/dist/common/event-type-translation.d.ts.map +0 -1
  138. package/dist/common/event-type-translation.js +0 -117
  139. package/dist/common/install-initial-domain-mapping.d.ts +0 -4
  140. package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
  141. package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
  142. package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
  143. package/dist/common/install-initial-domain-mapping.test.js +0 -207
  144. package/dist/deprecated/adapter/index.d.ts +0 -62
  145. package/dist/deprecated/adapter/index.d.ts.map +0 -1
  146. package/dist/deprecated/adapter/index.js +0 -151
  147. package/dist/deprecated/common/helpers.d.ts +0 -7
  148. package/dist/deprecated/common/helpers.d.ts.map +0 -1
  149. package/dist/deprecated/common/helpers.js +0 -47
  150. package/dist/deprecated/demo-extractor/external_domain_metadata.json +0 -38
  151. package/dist/deprecated/demo-extractor/index.d.ts +0 -18
  152. package/dist/deprecated/demo-extractor/index.d.ts.map +0 -1
  153. package/dist/deprecated/demo-extractor/index.js +0 -161
  154. package/dist/deprecated/http/client.d.ts +0 -22
  155. package/dist/deprecated/http/client.d.ts.map +0 -1
  156. package/dist/deprecated/http/client.js +0 -161
  157. package/dist/deprecated/uploader/index.d.ts +0 -35
  158. package/dist/deprecated/uploader/index.d.ts.map +0 -1
  159. package/dist/deprecated/uploader/index.js +0 -161
  160. package/dist/http/axios-client-internal.d.ts.map +0 -1
  161. package/dist/http/axios-client-internal.test.d.ts +0 -2
  162. package/dist/http/axios-client-internal.test.d.ts.map +0 -1
  163. package/dist/http/axios-client-internal.test.js +0 -154
  164. package/dist/http/axios-client.d.ts +0 -27
  165. package/dist/http/axios-client.d.ts.map +0 -1
  166. package/dist/http/axios-client.js +0 -57
  167. package/dist/http/constants.d.ts +0 -4
  168. package/dist/http/constants.d.ts.map +0 -1
  169. package/dist/http/constants.js +0 -6
  170. package/dist/http/index.d.ts +0 -3
  171. package/dist/http/index.d.ts.map +0 -1
  172. package/dist/http/index.js +0 -18
  173. package/dist/http/types.d.ts +0 -17
  174. package/dist/http/types.d.ts.map +0 -1
  175. package/dist/logger/logger.constants.d.ts +0 -6
  176. package/dist/logger/logger.constants.d.ts.map +0 -1
  177. package/dist/logger/logger.constants.js +0 -13
  178. package/dist/logger/logger.context.d.ts +0 -58
  179. package/dist/logger/logger.context.d.ts.map +0 -1
  180. package/dist/logger/logger.context.js +0 -86
  181. package/dist/logger/logger.test.d.ts +0 -2
  182. package/dist/logger/logger.test.d.ts.map +0 -1
  183. package/dist/logger/logger.test.js +0 -490
  184. package/dist/mappers/mappers.interface.d.ts +0 -294
  185. package/dist/mappers/mappers.interface.d.ts.map +0 -1
  186. package/dist/mappers/mappers.test.d.ts +0 -2
  187. package/dist/mappers/mappers.test.d.ts.map +0 -1
  188. package/dist/mappers/mappers.test.js +0 -107
  189. package/dist/multithreading/create-worker.test.d.ts +0 -2
  190. package/dist/multithreading/create-worker.test.d.ts.map +0 -1
  191. package/dist/multithreading/create-worker.test.js +0 -89
  192. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
  193. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
  194. package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
  195. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
  196. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
  197. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -127
  198. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
  199. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
  200. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +0 -22
  201. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
  202. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
  203. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
  204. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
  205. package/dist/multithreading/worker-adapter/worker-adapter.js +0 -747
  206. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
  207. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
  208. package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
  209. package/dist/repo/repo.test.d.ts +0 -2
  210. package/dist/repo/repo.test.d.ts.map +0 -1
  211. package/dist/repo/repo.test.js +0 -131
  212. package/dist/state/state.test.d.ts +0 -2
  213. package/dist/state/state.test.d.ts.map +0 -1
  214. package/dist/state/state.test.js +0 -224
  215. package/dist/types/extraction.test.d.ts +0 -2
  216. package/dist/types/extraction.test.d.ts.map +0 -1
  217. package/dist/types/extraction.test.js +0 -70
  218. package/dist/types/index.d.ts +0 -9
  219. package/dist/types/index.d.ts.map +0 -1
  220. package/dist/types/index.js +0 -18
  221. package/dist/uploader/uploader.helpers.test.d.ts +0 -2
  222. package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
  223. package/dist/uploader/uploader.helpers.test.js +0 -267
  224. package/dist/uploader/uploader.test.d.ts +0 -2
  225. package/dist/uploader/uploader.test.d.ts.map +0 -1
  226. package/dist/uploader/uploader.test.js +0 -589
  227. /package/dist/{http/types.js → types/external-domain-metadata.js} +0 -0
package/dist/repo/repo.js CHANGED
@@ -3,13 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Repo = void 0;
4
4
  const constants_1 = require("../common/constants");
5
5
  const uploader_1 = require("../uploader/uploader");
6
+ const repo_helpers_1 = require("./repo.helpers");
6
7
  class Repo {
7
- constructor({ event, itemType, normalize, onUpload, options, }) {
8
+ /** @internal */
9
+ constructor({ event, itemType, normalize, onUpload, options, skipConfirmation, }) {
10
+ this.dateRanges = {
11
+ creationDate: {},
12
+ modifiedDate: {},
13
+ };
8
14
  this.items = [];
9
15
  this.itemType = itemType;
10
16
  this.normalize = normalize;
11
17
  this.onUpload = onUpload;
12
- this.uploader = new uploader_1.Uploader({ event, options });
18
+ this.uploader = new uploader_1.Uploader({ event, options, skipConfirmation });
13
19
  this.options = options;
14
20
  this.uploadedArtifacts = [];
15
21
  }
@@ -17,17 +23,33 @@ class Repo {
17
23
  return this.items;
18
24
  }
19
25
  async upload(batch) {
26
+ var _a;
20
27
  const itemsToUpload = batch || this.items;
21
28
  if (itemsToUpload.length > 0) {
29
+ for (const item of itemsToUpload) {
30
+ const createdDate = item === null || item === void 0 ? void 0 : item.created_date;
31
+ if (createdDate != null) {
32
+ const createdMs = (0, repo_helpers_1.toValidTimestamp)(createdDate);
33
+ if (createdMs !== undefined) {
34
+ (0, repo_helpers_1.updateRange)(this.dateRanges.creationDate, createdMs);
35
+ }
36
+ }
37
+ const modifiedDate = item === null || item === void 0 ? void 0 : item.modified_date;
38
+ if (modifiedDate != null && modifiedDate !== '') {
39
+ const modifiedMs = (0, repo_helpers_1.toValidTimestamp)(modifiedDate);
40
+ if (modifiedMs !== undefined) {
41
+ (0, repo_helpers_1.updateRange)(this.dateRanges.modifiedDate, modifiedMs);
42
+ }
43
+ }
44
+ }
22
45
  console.log(`Uploading ${itemsToUpload.length} items of type ${this.itemType}. `);
23
46
  const { artifact, error } = await this.uploader.upload(this.itemType, itemsToUpload);
24
47
  if (error || !artifact) {
25
- console.error('Error while uploading batch', error);
26
- return error;
48
+ console.error(`Error while uploading batch of ${itemsToUpload.length} items of type ${this.itemType}.`, error);
49
+ throw new Error((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : `Upload failed for item type "${this.itemType}" without artifact.`);
27
50
  }
28
51
  this.onUpload(artifact);
29
52
  this.uploadedArtifacts.push(artifact);
30
- // Clear the uploaded items from the main items array if no batch was specified
31
53
  if (!batch) {
32
54
  this.items = [];
33
55
  }
@@ -37,39 +59,31 @@ class Repo {
37
59
  console.log(`No items to upload for type ${this.itemType}. Skipping upload.`);
38
60
  }
39
61
  }
62
+ /** Buffers items and uploads every full batch. Throws if an upload fails. */
40
63
  async push(items) {
41
64
  var _a;
42
65
  let recordsToPush;
43
66
  if (!items || items.length === 0) {
44
67
  console.log(`No items to push for type ${this.itemType}. Skipping push.`);
45
- return true;
68
+ return;
46
69
  }
47
- // Normalize items if needed
48
70
  if (this.normalize &&
49
- this.itemType != constants_1.AIRDROP_DEFAULT_ITEM_TYPES.EXTERNAL_DOMAIN_METADATA &&
50
- this.itemType != constants_1.AIRDROP_DEFAULT_ITEM_TYPES.SSOR_ATTACHMENT) {
71
+ this.itemType != constants_1.AirSyncDefaultItemTypes.EXTERNAL_DOMAIN_METADATA &&
72
+ this.itemType != constants_1.SSOR_ATTACHMENT) {
51
73
  recordsToPush = items.map((item) => this.normalize(item));
52
74
  }
53
75
  else {
54
76
  recordsToPush = items;
55
77
  }
56
- // Add the new records to the items array
57
78
  this.items.push(...recordsToPush);
58
- // Upload in batches while the number of items exceeds the batch size
59
79
  const batchSize = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.batchSize) || constants_1.ARTIFACT_BATCH_SIZE;
60
80
  while (this.items.length >= batchSize) {
61
- // Slice out a batch of batchSize items to upload
62
- const batch = this.items.splice(0, batchSize);
63
- try {
64
- // Upload the batch
65
- await this.upload(batch);
66
- }
67
- catch (error) {
68
- console.error('Error while uploading batch', error);
69
- return false;
70
- }
81
+ // Items leave the repo only after their batch uploaded, so a failed
82
+ // batch is still there for the next flush.
83
+ const batch = this.items.slice(0, batchSize);
84
+ await this.upload(batch);
85
+ this.items.splice(0, batchSize);
71
86
  }
72
- return true;
73
87
  }
74
88
  }
75
89
  exports.Repo = Repo;
@@ -0,0 +1,58 @@
1
+ import { InitialDomainMapping } from '../types/common';
2
+ import { AirSyncEvent } from '../types/extraction';
3
+ import { ExtractionScope } from '../types/workers';
4
+ import { SdkState, StateInterface } from './state.interfaces';
5
+ /**
6
+ * State lifecycle shared by all sync modes: connector/SDK state separation,
7
+ * fetch/init/post, the v1 to v2 migration shim, and the snap-in-version-gated
8
+ * initial domain mapping install. Subclasses seed the SDK-owned state.
9
+ */
10
+ export declare abstract class BaseState<ConnectorState> {
11
+ protected _connectorState: ConnectorState;
12
+ protected _sdkState: SdkState;
13
+ protected _extractionScope: ExtractionScope;
14
+ protected readonly initialSdkState: SdkState;
15
+ protected readonly event: AirSyncEvent;
16
+ private workerUrl;
17
+ private devrevToken;
18
+ private syncUnitId;
19
+ private requestId;
20
+ constructor({ event, initialState }: StateInterface<ConnectorState>, initialSdkState: SdkState);
21
+ /** Connector-owned state; what `adapter.state` exposes to snap-in code. */
22
+ get state(): ConnectorState;
23
+ set state(value: ConnectorState);
24
+ /** SDK-internal bookkeeping state. Never exposed to connector code. */
25
+ get sdkState(): SdkState;
26
+ set sdkState(value: SdkState);
27
+ get extractionScope(): ExtractionScope;
28
+ /**
29
+ * Installs the initial domain mapping when the snap-in version in state
30
+ * differs from the event context. Shared by all modes so a loading run still
31
+ * installs the mapping if extraction has not done so.
32
+ */
33
+ installInitialDomainMappingIfNeeded(initialDomainMapping?: InitialDomainMapping): Promise<void>;
34
+ /**
35
+ * Fetches state from API, or creates the initial state on 404. Reads both
36
+ * the v2 envelope and a legacy flat v1 blob (migrated on read); always
37
+ * persists the v2 envelope going forward.
38
+ */
39
+ init(initialState: ConnectorState): Promise<void>;
40
+ /**
41
+ * Normalizes fetched state into the `{ connectorState, sdkState }` envelope.
42
+ * Versioned envelopes are read by `stateVersion`; unversioned ones (2.0.0
43
+ * betas) by their keys; anything else is a flat v1 blob split by
44
+ * `V1_SDK_STATE_KEYS`.
45
+ */
46
+ private normalizeFetchedState;
47
+ private readEnvelope;
48
+ /**
49
+ * Posts the v2 envelope (connector and SDK state as they are now) to the
50
+ * API. Throws on failure so a caller can stop before a risky external write.
51
+ */
52
+ postState(): Promise<void>;
53
+ fetchState(): Promise<{
54
+ state: string;
55
+ objects?: string;
56
+ }>;
57
+ }
58
+ //# sourceMappingURL=base-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-state.d.ts","sourceRoot":"","sources":["../../src/state/base-state.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAEL,QAAQ,EAER,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,8BAAsB,SAAS,CAAC,cAAc;IAC5C,SAAS,CAAC,eAAe,EAAE,cAAc,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC9B,SAAS,CAAC,gBAAgB,EAAE,eAAe,CAAM;IACjD,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAGxB,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,EACvD,eAAe,EAAE,QAAQ;IAY3B,2EAA2E;IAC3E,IAAI,KAAK,IAAI,cAAc,CAE1B;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,cAAc,EAE9B;IAED,uEAAuE;IACvE,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAE3B;IAED,IAAI,eAAe,IAAI,eAAe,CAErC;IAED;;;;OAIG;IACG,mCAAmC,CACvC,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;OAIG;IACG,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDvD;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA2C7B,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C1B,UAAU,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAqBjE"}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseState = void 0;
7
+ const node_worker_threads_1 = require("node:worker_threads");
8
+ const axios_1 = __importDefault(require("axios"));
9
+ const client_1 = require("../http/client");
10
+ const logger_1 = require("../logger/logger");
11
+ const workers_1 = require("../types/workers");
12
+ const install_initial_domain_mapping_1 = require("./install-initial-domain-mapping");
13
+ const state_interfaces_1 = require("./state.interfaces");
14
+ /**
15
+ * State lifecycle shared by all sync modes: connector/SDK state separation,
16
+ * fetch/init/post, the v1 to v2 migration shim, and the snap-in-version-gated
17
+ * initial domain mapping install. Subclasses seed the SDK-owned state.
18
+ */
19
+ class BaseState {
20
+ constructor({ event, initialState }, initialSdkState) {
21
+ this._extractionScope = {};
22
+ this.event = event;
23
+ this.initialSdkState = initialSdkState;
24
+ this._connectorState = initialState;
25
+ this._sdkState = Object.assign({}, initialSdkState);
26
+ this.workerUrl = event.payload.event_context.worker_data_url;
27
+ this.devrevToken = event.context.secrets.service_account_token;
28
+ this.syncUnitId = event.payload.event_context.sync_unit_id;
29
+ this.requestId = event.payload.event_context.request_id_adaas;
30
+ }
31
+ /** Connector-owned state; what `adapter.state` exposes to snap-in code. */
32
+ get state() {
33
+ return this._connectorState;
34
+ }
35
+ set state(value) {
36
+ this._connectorState = value;
37
+ }
38
+ /** SDK-internal bookkeeping state. Never exposed to connector code. */
39
+ get sdkState() {
40
+ return this._sdkState;
41
+ }
42
+ set sdkState(value) {
43
+ this._sdkState = value;
44
+ }
45
+ get extractionScope() {
46
+ return this._extractionScope;
47
+ }
48
+ /**
49
+ * Installs the initial domain mapping when the snap-in version in state
50
+ * differs from the event context. Shared by all modes so a loading run still
51
+ * installs the mapping if extraction has not done so.
52
+ */
53
+ async installInitialDomainMappingIfNeeded(initialDomainMapping) {
54
+ const snapInVersionId = this.event.context.snap_in_version_id;
55
+ const hasSnapInVersionInState = 'snapInVersionId' in this.sdkState;
56
+ const shouldUpdateIDM = !hasSnapInVersionInState ||
57
+ this.sdkState.snapInVersionId !== snapInVersionId;
58
+ if (!shouldUpdateIDM) {
59
+ console.log(`Snap-in version in state matches the version in event context "${snapInVersionId}". Skipping initial domain mapping installation.`);
60
+ return;
61
+ }
62
+ try {
63
+ console.log(`Snap-in version in state "${this.sdkState.snapInVersionId}" does not match the version in event context "${snapInVersionId}". Installing initial domain mapping.`);
64
+ if (initialDomainMapping) {
65
+ await (0, install_initial_domain_mapping_1.installInitialDomainMapping)(this.event, initialDomainMapping);
66
+ this.sdkState.snapInVersionId = snapInVersionId;
67
+ }
68
+ else {
69
+ throw new Error('No initial domain mapping was passed to spawn function. Skipping initial domain mapping installation.');
70
+ }
71
+ }
72
+ catch (error) {
73
+ const errorMessage = `Error while installing initial domain mapping. ${(0, logger_1.serializeError)(error)}`;
74
+ console.error(errorMessage);
75
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
76
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
77
+ payload: { message: errorMessage },
78
+ });
79
+ process.exit(1);
80
+ }
81
+ }
82
+ /**
83
+ * Fetches state from API, or creates the initial state on 404. Reads both
84
+ * the v2 envelope and a legacy flat v1 blob (migrated on read); always
85
+ * persists the v2 envelope going forward.
86
+ */
87
+ async init(initialState) {
88
+ var _a;
89
+ try {
90
+ const { state: stringifiedState, objects } = await this.fetchState();
91
+ if (!stringifiedState) {
92
+ throw new Error('No state found in response.');
93
+ }
94
+ let parsed;
95
+ try {
96
+ parsed = JSON.parse(stringifiedState);
97
+ }
98
+ catch (error) {
99
+ throw new Error(`Failed to parse state. ${error}`);
100
+ }
101
+ const { connectorState, sdkState } = this.normalizeFetchedState(parsed);
102
+ this.state = connectorState;
103
+ this.sdkState = sdkState;
104
+ console.log('State fetched successfully. Current state', {
105
+ connectorState: (0, logger_1.getPrintableState)(this.state),
106
+ sdkState: (0, logger_1.getPrintableState)(this.sdkState),
107
+ });
108
+ if (objects) {
109
+ try {
110
+ this._extractionScope = JSON.parse(objects);
111
+ }
112
+ catch (error) {
113
+ console.warn(`Failed to parse extractionScope. ${error}`);
114
+ }
115
+ }
116
+ }
117
+ catch (error) {
118
+ try {
119
+ if (!(axios_1.default.isAxiosError(error) && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 404)) {
120
+ throw error;
121
+ }
122
+ console.log('State not found. Initializing state with initial state.');
123
+ this.state = initialState;
124
+ this.sdkState = Object.assign({}, this.initialSdkState);
125
+ await this.postState();
126
+ }
127
+ catch (initError) {
128
+ const errorMessage = `Failed to init state. ${(0, logger_1.serializeError)(initError)}`;
129
+ console.error(errorMessage);
130
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
131
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
132
+ payload: { message: errorMessage },
133
+ });
134
+ process.exit(1);
135
+ }
136
+ }
137
+ }
138
+ /**
139
+ * Normalizes fetched state into the `{ connectorState, sdkState }` envelope.
140
+ * Versioned envelopes are read by `stateVersion`; unversioned ones (2.0.0
141
+ * betas) by their keys; anything else is a flat v1 blob split by
142
+ * `V1_SDK_STATE_KEYS`.
143
+ */
144
+ normalizeFetchedState(parsed) {
145
+ if (parsed === null || typeof parsed !== 'object') {
146
+ throw new Error('Fetched state is not a JSON object.');
147
+ }
148
+ const record = parsed;
149
+ if (record.stateVersion !== undefined) {
150
+ if (record.stateVersion !== state_interfaces_1.STATE_VERSION) {
151
+ throw new Error(`Unsupported state version ${String(record.stateVersion)}; this SDK reads version ${state_interfaces_1.STATE_VERSION}.`);
152
+ }
153
+ return this.readEnvelope(record);
154
+ }
155
+ // Envelopes written by 2.0.0 betas carry no version marker.
156
+ if ('connectorState' in record || 'sdkState' in record) {
157
+ return this.readEnvelope(record);
158
+ }
159
+ // Legacy flat v1 blob: split known SDK keys out of the connector state.
160
+ const connectorState = {};
161
+ const sdkState = {};
162
+ for (const [key, value] of Object.entries(record)) {
163
+ if (state_interfaces_1.V1_SDK_STATE_KEYS.has(key)) {
164
+ sdkState[key] = value;
165
+ }
166
+ else {
167
+ connectorState[key] = value;
168
+ }
169
+ }
170
+ return {
171
+ connectorState: connectorState,
172
+ sdkState: Object.assign(Object.assign({}, this.initialSdkState), sdkState),
173
+ };
174
+ }
175
+ readEnvelope(record) {
176
+ if (!('connectorState' in record) || !('sdkState' in record)) {
177
+ throw new Error('Malformed state envelope: expected both "connectorState" and "sdkState".');
178
+ }
179
+ return {
180
+ connectorState: record.connectorState,
181
+ sdkState: Object.assign(Object.assign({}, this.initialSdkState), record.sdkState),
182
+ };
183
+ }
184
+ /**
185
+ * Posts the v2 envelope (connector and SDK state as they are now) to the
186
+ * API. Throws on failure so a caller can stop before a risky external write.
187
+ */
188
+ async postState() {
189
+ const url = this.workerUrl + '.update';
190
+ const envelope = {
191
+ stateVersion: state_interfaces_1.STATE_VERSION,
192
+ connectorState: this.state,
193
+ sdkState: this.sdkState,
194
+ };
195
+ let stringifiedState;
196
+ try {
197
+ stringifiedState = JSON.stringify(envelope);
198
+ }
199
+ catch (error) {
200
+ throw new Error(`Failed to stringify state. ${(0, logger_1.serializeError)(error)}`);
201
+ }
202
+ try {
203
+ await client_1.axiosClient.post(url, {
204
+ state: stringifiedState,
205
+ }, {
206
+ headers: {
207
+ Authorization: this.devrevToken,
208
+ },
209
+ params: {
210
+ sync_unit: this.syncUnitId,
211
+ request_id: this.requestId,
212
+ },
213
+ });
214
+ }
215
+ catch (error) {
216
+ throw new Error(`Failed to update the state. ${(0, logger_1.serializeError)(error)}`);
217
+ }
218
+ console.log('State updated successfully to', {
219
+ connectorState: (0, logger_1.getPrintableState)(this.state),
220
+ sdkState: (0, logger_1.getPrintableState)(this.sdkState),
221
+ });
222
+ }
223
+ async fetchState() {
224
+ var _a, _b;
225
+ console.log(`Fetching state with sync unit id ${this.syncUnitId} and request id ${this.requestId}.`);
226
+ const url = this.workerUrl + '.get';
227
+ const response = await client_1.axiosClient.get(url, {
228
+ headers: {
229
+ Authorization: this.devrevToken,
230
+ },
231
+ params: {
232
+ sync_unit: this.syncUnitId,
233
+ request_id: this.requestId,
234
+ },
235
+ });
236
+ return {
237
+ state: (_a = response.data) === null || _a === void 0 ? void 0 : _a.state,
238
+ objects: (_b = response.data) === null || _b === void 0 ? void 0 : _b.objects,
239
+ };
240
+ }
241
+ }
242
+ exports.BaseState = BaseState;
@@ -0,0 +1,14 @@
1
+ import { BaseState } from './base-state';
2
+ import { StateInterface } from './state.interfaces';
3
+ /** State for extraction workers: seeds extraction SDK state and adds extraction-window resolution. */
4
+ export declare class ExtractionState<ConnectorState> extends BaseState<ConnectorState> {
5
+ constructor(params: StateInterface<ConnectorState>);
6
+ /**
7
+ * Resolves the extraction window onto the event context. StartExtractingMetadata
8
+ * resolves fresh from the event's TimeValues and overwrites the pending boundaries;
9
+ * all other events reuse those cached boundaries. Validates extract_from < extract_to.
10
+ */
11
+ resolveExtractionWindow(): void;
12
+ }
13
+ export declare function createExtractionState<ConnectorState>({ event, initialState, initialDomainMapping, options, }: StateInterface<ConnectorState>): Promise<ExtractionState<ConnectorState>>;
14
+ //# sourceMappingURL=extraction-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction-state.d.ts","sourceRoot":"","sources":["../../src/state/extraction-state.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGxE,sGAAsG;AACtG,qBAAa,eAAe,CAAC,cAAc,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC;gBAChE,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC;IAIlD;;;;OAIG;IACH,uBAAuB,IAAI,IAAI;CAyHhC;AAED,wBAAsB,qBAAqB,CAAC,cAAc,EAAE,EAC1D,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,GACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAkB3E"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtractionState = void 0;
4
+ exports.createExtractionState = createExtractionState;
5
+ const node_worker_threads_1 = require("node:worker_threads");
6
+ const constants_1 = require("../common/constants");
7
+ const logger_1 = require("../logger/logger");
8
+ const extraction_1 = require("../types/extraction");
9
+ const workers_1 = require("../types/workers");
10
+ const base_state_1 = require("./base-state");
11
+ const state_interfaces_1 = require("./state.interfaces");
12
+ const time_value_resolver_1 = require("./time-value-resolver");
13
+ /** State for extraction workers: seeds extraction SDK state and adds extraction-window resolution. */
14
+ class ExtractionState extends base_state_1.BaseState {
15
+ constructor(params) {
16
+ super(params, state_interfaces_1.extractionSdkState);
17
+ }
18
+ /**
19
+ * Resolves the extraction window onto the event context. StartExtractingMetadata
20
+ * resolves fresh from the event's TimeValues and overwrites the pending boundaries;
21
+ * all other events reuse those cached boundaries. Validates extract_from < extract_to.
22
+ */
23
+ resolveExtractionWindow() {
24
+ const sdkState = this.sdkState;
25
+ const eventContext = this.event.payload.event_context;
26
+ const overrideExtractFrom = (value) => {
27
+ if (eventContext.extract_from !== undefined) {
28
+ eventContext.original_extract_from = eventContext.extract_from;
29
+ }
30
+ eventContext.extract_from = value;
31
+ };
32
+ if (this.event.payload.event_type === extraction_1.EventType.StartExtractingData &&
33
+ !sdkState.lastSyncStarted) {
34
+ sdkState.lastSyncStarted = new Date().toISOString();
35
+ console.log(`Setting lastSyncStarted to ${sdkState.lastSyncStarted}.`);
36
+ }
37
+ if (this.event.payload.event_type === extraction_1.EventType.StartExtractingMetadata) {
38
+ const timeFields = [
39
+ {
40
+ source: 'extraction_start_time',
41
+ target: 'extract_from',
42
+ pending: 'pendingWorkersOldest',
43
+ },
44
+ {
45
+ source: 'extraction_end_time',
46
+ target: 'extract_to',
47
+ pending: 'pendingWorkersNewest',
48
+ },
49
+ ];
50
+ for (const { source, target, pending } of timeFields) {
51
+ const timeValue = eventContext[source];
52
+ if (timeValue && timeValue.type) {
53
+ try {
54
+ const resolved = (0, time_value_resolver_1.resolveTimeValue)(timeValue, sdkState);
55
+ if (target === 'extract_from') {
56
+ overrideExtractFrom(resolved);
57
+ }
58
+ else {
59
+ eventContext[target] = resolved;
60
+ }
61
+ sdkState[pending] = resolved;
62
+ console.log(`Resolved ${target} to ${resolved}. Stored in ${pending}.`);
63
+ }
64
+ catch (error) {
65
+ const errorMessage = `Failed to resolve ${source}: ${(0, logger_1.serializeError)(error)}`;
66
+ console.error(errorMessage);
67
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
68
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
69
+ payload: { message: errorMessage },
70
+ });
71
+ process.exit(1);
72
+ }
73
+ }
74
+ else if (target === 'extract_from') {
75
+ // Non-CPv2 platforms send no TimeValue: prefer the last successful
76
+ // sync start, else the extract_from the platform supplied directly.
77
+ const fallback = sdkState.lastSuccessfulSyncStarted || eventContext.extract_from;
78
+ if (fallback) {
79
+ if (sdkState.lastSuccessfulSyncStarted) {
80
+ overrideExtractFrom(fallback);
81
+ }
82
+ sdkState.pendingWorkersOldest = fallback;
83
+ console.log(`Using ${sdkState.lastSuccessfulSyncStarted
84
+ ? 'lastSuccessfulSyncStarted'
85
+ : 'platform-provided extract_from'} as extract_from: ${fallback}. Stored in pendingWorkersOldest.`);
86
+ }
87
+ }
88
+ }
89
+ }
90
+ else {
91
+ const pendingExtractFrom = sdkState.pendingWorkersOldest || sdkState.lastSuccessfulSyncStarted;
92
+ if (pendingExtractFrom) {
93
+ if (eventContext.extract_from !== pendingExtractFrom) {
94
+ overrideExtractFrom(pendingExtractFrom);
95
+ }
96
+ console.log(`Using ${sdkState.pendingWorkersOldest
97
+ ? 'pendingWorkersOldest'
98
+ : 'lastSuccessfulSyncStarted'} as extract_from: ${pendingExtractFrom}.`);
99
+ }
100
+ else {
101
+ console.log('pendingWorkersOldest is not set in state. extract_from will not be populated for this invocation.');
102
+ }
103
+ if (sdkState.pendingWorkersNewest) {
104
+ eventContext.extract_to = sdkState.pendingWorkersNewest;
105
+ console.log(`Reusing pendingWorkersNewest as extract_to: ${sdkState.pendingWorkersNewest}.`);
106
+ }
107
+ else {
108
+ console.log('pendingWorkersNewest is not set in state. extract_to will not be populated for this invocation.');
109
+ }
110
+ }
111
+ if (eventContext.extract_from && eventContext.extract_to) {
112
+ if (eventContext.extract_from >= eventContext.extract_to) {
113
+ const errorMessage = `Invalid extraction window: extract_from (${eventContext.extract_from}) must be older than extract_to (${eventContext.extract_to}). This indicates an error in the platform.`;
114
+ console.error(errorMessage);
115
+ node_worker_threads_1.parentPort === null || node_worker_threads_1.parentPort === void 0 ? void 0 : node_worker_threads_1.parentPort.postMessage({
116
+ subject: workers_1.WorkerMessageSubject.WorkerMessageFailed,
117
+ payload: { message: errorMessage },
118
+ });
119
+ process.exit(1);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ exports.ExtractionState = ExtractionState;
125
+ async function createExtractionState({ event, initialState, initialDomainMapping, options, }) {
126
+ // Clone so the caller's initialState is never mutated.
127
+ const deepCloneInitialState = structuredClone(initialState);
128
+ const state = new ExtractionState({
129
+ event,
130
+ initialState: deepCloneInitialState,
131
+ initialDomainMapping,
132
+ options,
133
+ });
134
+ if (!constants_1.STATELESS_EVENT_TYPES.includes(event.payload.event_type)) {
135
+ await state.init(deepCloneInitialState);
136
+ await state.installInitialDomainMappingIfNeeded(initialDomainMapping);
137
+ state.resolveExtractionWindow();
138
+ }
139
+ return state;
140
+ }
@@ -0,0 +1,4 @@
1
+ import { InitialDomainMapping } from '../types/common';
2
+ import { AirSyncEvent } from '../types/extraction';
3
+ export declare function installInitialDomainMapping(event: AirSyncEvent, initialDomainMappingJson: InitialDomainMapping): Promise<void>;
4
+ //# sourceMappingURL=install-initial-domain-mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-initial-domain-mapping.d.ts","sourceRoot":"","sources":["../../src/state/install-initial-domain-mapping.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,YAAY,EACnB,wBAAwB,EAAE,oBAAoB,GAC7C,OAAO,CAAC,IAAI,CAAC,CAwFf"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.installInitialDomainMapping = installInitialDomainMapping;
4
- const axios_client_internal_1 = require("../http/axios-client-internal");
4
+ const client_1 = require("../http/client");
5
5
  const logger_1 = require("../logger/logger");
6
6
  async function installInitialDomainMapping(event, initialDomainMappingJson) {
7
7
  var _a, _b, _c, _d, _e, _f, _g;
@@ -12,8 +12,7 @@ async function installInitialDomainMapping(event, initialDomainMappingJson) {
12
12
  console.warn('No initial domain mapping found.');
13
13
  return;
14
14
  }
15
- // Get snap-in details
16
- const snapInResponse = await axios_client_internal_1.axiosClient.get(devrevEndpoint + '/internal/snap-ins.get', {
15
+ const snapInResponse = await client_1.axiosClient.get(devrevEndpoint + '/internal/snap-ins.get', {
17
16
  headers: {
18
17
  Authorization: devrevToken,
19
18
  },
@@ -28,12 +27,12 @@ async function installInitialDomainMapping(event, initialDomainMappingJson) {
28
27
  throw new Error(errorMessage);
29
28
  }
30
29
  const startingRecipeBlueprint = initialDomainMappingJson === null || initialDomainMappingJson === void 0 ? void 0 : initialDomainMappingJson.starting_recipe_blueprint;
31
- // Try to create a recipe blueprint
30
+ // Recipe blueprint creation is best-effort; install proceeds without it.
32
31
  let recipeBlueprintId;
33
32
  if (startingRecipeBlueprint &&
34
33
  Object.keys(startingRecipeBlueprint).length !== 0) {
35
34
  try {
36
- const recipeBlueprintResponse = await axios_client_internal_1.axiosClient.post(`${devrevEndpoint}/internal/airdrop.recipe.blueprints.create`, Object.assign({}, startingRecipeBlueprint), {
35
+ const recipeBlueprintResponse = await client_1.axiosClient.post(`${devrevEndpoint}/internal/airdrop.recipe.blueprints.create`, Object.assign({}, startingRecipeBlueprint), {
37
36
  headers: {
38
37
  Authorization: devrevToken,
39
38
  },
@@ -45,9 +44,8 @@ async function installInitialDomainMapping(event, initialDomainMappingJson) {
45
44
  console.warn('Error while creating recipe blueprint. Continuing without it.', (0, logger_1.serializeError)(error));
46
45
  }
47
46
  }
48
- // Install the initial domain mappings
49
47
  const additionalMappings = initialDomainMappingJson.additional_mappings || {};
50
- const initialDomainMappingInstallResponse = await axios_client_internal_1.axiosClient.post(`${devrevEndpoint}/internal/airdrop.recipe.initial-domain-mappings.install`, Object.assign(Object.assign({ external_system_type: 'ADaaS', import_slug: importSlug, snap_in_slug: snapInSlug }, (recipeBlueprintId && {
48
+ const initialDomainMappingInstallResponse = await client_1.axiosClient.post(`${devrevEndpoint}/internal/airdrop.recipe.initial-domain-mappings.install`, Object.assign(Object.assign({ external_system_type: 'ADaaS', import_slug: importSlug, snap_in_slug: snapInSlug }, (recipeBlueprintId && {
51
49
  starting_recipe_blueprint: recipeBlueprintId,
52
50
  })), additionalMappings), {
53
51
  headers: {
@@ -0,0 +1,8 @@
1
+ import { BaseState } from './base-state';
2
+ import { StateInterface } from './state.interfaces';
3
+ /** State for loading workers: seeds loading SDK state; no extraction-window resolution. */
4
+ export declare class LoadingState<ConnectorState> extends BaseState<ConnectorState> {
5
+ constructor(params: StateInterface<ConnectorState>);
6
+ }
7
+ export declare function createLoadingState<ConnectorState>({ event, initialState, initialDomainMapping, options, }: StateInterface<ConnectorState>): Promise<LoadingState<ConnectorState>>;
8
+ //# sourceMappingURL=loading-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-state.d.ts","sourceRoot":"","sources":["../../src/state/loading-state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAmB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAErE,2FAA2F;AAC3F,qBAAa,YAAY,CAAC,cAAc,CAAE,SAAQ,SAAS,CAAC,cAAc,CAAC;gBAC7D,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC;CAGnD;AAED,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,EACvD,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,OAAO,GACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAiBxE"}