@devrev/airsync-sdk 2.0.0-beta.1 → 2.0.0-beta.11

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 (229) hide show
  1. package/README.md +7 -21
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +6 -7
  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 +69 -61
  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/client.d.ts +4 -0
  14. package/dist/http/client.d.ts.map +1 -0
  15. package/dist/http/client.js +80 -0
  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 +120 -82
  51. package/dist/multithreading/spawn/spawn.d.ts +10 -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 +59 -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 +146 -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 +31 -12
  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 +40 -162
  106. package/dist/types/external-domain-metadata.d.ts.map +1 -1
  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 +751 -0
  126. package/package.json +35 -22
  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 -321
  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 -208
  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 +0 -3
  161. package/dist/http/axios-client-internal.d.ts.map +0 -1
  162. package/dist/http/axios-client-internal.js +0 -66
  163. package/dist/http/axios-client-internal.test.d.ts +0 -2
  164. package/dist/http/axios-client-internal.test.d.ts.map +0 -1
  165. package/dist/http/axios-client-internal.test.js +0 -154
  166. package/dist/http/axios-client.d.ts +0 -27
  167. package/dist/http/axios-client.d.ts.map +0 -1
  168. package/dist/http/axios-client.js +0 -57
  169. package/dist/http/constants.d.ts +0 -4
  170. package/dist/http/constants.d.ts.map +0 -1
  171. package/dist/http/constants.js +0 -6
  172. package/dist/http/index.d.ts +0 -3
  173. package/dist/http/index.d.ts.map +0 -1
  174. package/dist/http/index.js +0 -18
  175. package/dist/http/types.d.ts +0 -17
  176. package/dist/http/types.d.ts.map +0 -1
  177. package/dist/http/types.js +0 -2
  178. package/dist/logger/logger.constants.d.ts +0 -6
  179. package/dist/logger/logger.constants.d.ts.map +0 -1
  180. package/dist/logger/logger.constants.js +0 -13
  181. package/dist/logger/logger.context.d.ts +0 -58
  182. package/dist/logger/logger.context.d.ts.map +0 -1
  183. package/dist/logger/logger.context.js +0 -86
  184. package/dist/logger/logger.test.d.ts +0 -2
  185. package/dist/logger/logger.test.d.ts.map +0 -1
  186. package/dist/logger/logger.test.js +0 -490
  187. package/dist/mappers/mappers.interface.d.ts +0 -294
  188. package/dist/mappers/mappers.interface.d.ts.map +0 -1
  189. package/dist/mappers/mappers.test.d.ts +0 -2
  190. package/dist/mappers/mappers.test.d.ts.map +0 -1
  191. package/dist/mappers/mappers.test.js +0 -107
  192. package/dist/multithreading/create-worker.test.d.ts +0 -2
  193. package/dist/multithreading/create-worker.test.d.ts.map +0 -1
  194. package/dist/multithreading/create-worker.test.js +0 -89
  195. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
  196. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
  197. package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
  198. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
  199. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
  200. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -127
  201. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
  202. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
  203. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +0 -22
  204. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
  205. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
  206. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
  207. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
  208. package/dist/multithreading/worker-adapter/worker-adapter.js +0 -745
  209. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
  210. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
  211. package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
  212. package/dist/repo/repo.test.d.ts +0 -2
  213. package/dist/repo/repo.test.d.ts.map +0 -1
  214. package/dist/repo/repo.test.js +0 -131
  215. package/dist/state/state.test.d.ts +0 -2
  216. package/dist/state/state.test.d.ts.map +0 -1
  217. package/dist/state/state.test.js +0 -224
  218. package/dist/types/extraction.test.d.ts +0 -2
  219. package/dist/types/extraction.test.d.ts.map +0 -1
  220. package/dist/types/extraction.test.js +0 -70
  221. package/dist/types/index.d.ts +0 -10
  222. package/dist/types/index.d.ts.map +0 -1
  223. package/dist/types/index.js +0 -18
  224. package/dist/uploader/uploader.helpers.test.d.ts +0 -2
  225. package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
  226. package/dist/uploader/uploader.helpers.test.js +0 -267
  227. package/dist/uploader/uploader.test.d.ts +0 -2
  228. package/dist/uploader/uploader.test.d.ts.map +0 -1
  229. package/dist/uploader/uploader.test.js +0 -589
package/README.md CHANGED
@@ -1,31 +1,17 @@
1
1
  # AirSync SDK
2
2
 
3
- [![Coverage Status](https://coveralls.io/repos/github/devrev/adaas-sdk/badge.svg?branch=v2&t=s4Otlm)](https://coveralls.io/github/devrev/adaas-sdk?branch=v2)
3
+ [![Coverage Status](https://coveralls.io/repos/github/devrev/adaas-sdk/badge.svg?branch=main&t=s4Otlm)](https://coveralls.io/github/devrev/adaas-sdk?branch=main)
4
4
 
5
- > **Note:** This is the v2 beta of the AirSync SDK (formerly Airdrop SDK). The package has been renamed from `@devrev/ts-adaas` to `@devrev/airsync-sdk`.
6
-
7
- ## Overview
8
-
9
- The AirSync SDK for TypeScript helps developers build snap-ins that integrate with DevRev's AirSync platform. This SDK simplifies the workflow for handling data extraction and loading, event-driven actions, state management, and artifact handling.
10
-
11
- It provides features such as:
12
-
13
- - Type Definitions: Structured types for AirSync control protocol
14
- - Event Management: Easily emit events for different extraction or loading phases
15
- - State Handling: Update and access state in real-time within tasks
16
- - Artifact Management: Supports batched storage of artifacts
17
- - Error & Timeout Support: Error handling and timeout management for long-running tasks
5
+ TypeScript SDK for building AirSync snap-ins (connectors) that sync data between external systems and DevRev. It handles the AirSync control protocol for you: worker threads, timeouts, state, artifact uploads, attachment streaming and loading.
18
6
 
19
7
  ## Installation
20
8
 
21
9
  ```bash
22
- npm install @devrev/airsync-sdk@beta
10
+ npm install @devrev/airsync-sdk
23
11
  ```
24
12
 
25
- ## Changelog
26
-
27
- See [CHANGELOG.md](./CHANGELOG.md) for release notes and migration guides.
28
-
29
- ## Reference
13
+ ## Documentation
30
14
 
31
- Please refer to the [REFERENCE.md](./REFERENCE.md) file for more information on the types, interfaces and functions used in the library.
15
+ - [Architecture](docs/ARCHITECTURE.md): how the SDK works and how it talks to the AirSync platform.
16
+ - [Migration from v1](docs/MIGRATION.md): moving from `@devrev/ts-adaas` to `@devrev/airsync-sdk`.
17
+ - [Contributing](docs/CONTRIBUTING.md): workflow, versioning and testing conventions.
@@ -1,4 +1,4 @@
1
- import { ProcessAttachmentReturnType } from '../types';
1
+ import { ProcessAttachmentReturnType } from '../types/extraction';
2
2
  import { AttachmentsStreamingPoolParams } from './attachments-streaming-pool.interfaces';
3
3
  export declare class AttachmentsStreamingPool<ConnectorState> {
4
4
  private adapter;
@@ -9,14 +9,13 @@ export declare class AttachmentsStreamingPool<ConnectorState> {
9
9
  private totalProcessedCount;
10
10
  private readonly PROGRESS_REPORT_INTERVAL;
11
11
  constructor({ adapter, attachments, batchSize, stream, }: AttachmentsStreamingPoolParams<ConnectorState>);
12
- private updateProgress;
12
+ private recordProcessedAttachment;
13
13
  /**
14
- * Migrates processed attachments from the legacy string[] format to the new ProcessedAttachment[] format.
15
- *
16
- * @param attachments - The attachments list to migrate (either string[] or ProcessedAttachment[])
17
- * @returns Migrated array of ProcessedAttachment objects, or empty array if input is invalid
14
+ * Backfills `status` on entries recorded before the field existed (those
15
+ * only ever held successes); state from >= v1.15.2 needs no shape migration.
18
16
  */
19
- private migrateProcessedAttachments;
17
+ private backfillProcessedAttachmentStatus;
18
+ private updateProgress;
20
19
  streamAll(): Promise<ProcessAttachmentReturnType>;
21
20
  startPoolStreaming(): Promise<void>;
22
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"attachments-streaming-pool.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAGzF,qBAAa,wBAAwB,CAAC,cAAc;IAClD,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAA4C;IAE1D,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAM;gBAEnC,EACV,OAAO,EACP,WAAW,EACX,SAAc,EACd,MAAM,GACP,EAAE,8BAA8B,CAAC,cAAc,CAAC;YAQnC,cAAc;IAS5B;;;;;OAKG;IAEH,OAAO,CAAC,2BAA2B;IAsB7B,SAAS,IAAI,OAAO,CAAC,2BAA2B,CAAC;IA8CjD,kBAAkB;CA0EzB"}
1
+ {"version":3,"file":"attachments-streaming-pool.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAEzF,qBAAa,wBAAwB,CAAC,cAAc;IAClD,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAA4C;IAE1D,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAM;gBAEnC,EACV,OAAO,EACP,WAAW,EACX,SAAc,EACd,MAAM,GACP,EAAE,8BAA8B,CAAC,cAAc,CAAC;IAQjD,OAAO,CAAC,yBAAyB;IAyBjC;;;OAGG;IACH,OAAO,CAAC,iCAAiC;YAS3B,cAAc;IAUtB,SAAS,IAAI,OAAO,CAAC,2BAA2B,CAAC;IA6CjD,kBAAkB;CAwFzB"}
@@ -1,7 +1,8 @@
1
- import { ExternalSystemAttachmentStreamingFunction, NormalizedAttachment } from '../types';
2
- import { WorkerAdapter } from '../multithreading/worker-adapter/worker-adapter';
1
+ import { ExtractionAdapter } from '../multithreading/adapters/extraction-adapter';
2
+ import { NormalizedAttachment } from '../repo/repo.interfaces';
3
+ import { ExternalSystemAttachmentStreamingFunction } from '../types/extraction';
3
4
  export interface AttachmentsStreamingPoolParams<ConnectorState> {
4
- adapter: WorkerAdapter<ConnectorState>;
5
+ adapter: ExtractionAdapter<ConnectorState>;
5
6
  attachments: NormalizedAttachment[];
6
7
  batchSize?: number;
7
8
  stream: ExternalSystemAttachmentStreamingFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"attachments-streaming-pool.interfaces.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,MAAM,WAAW,8BAA8B,CAAC,cAAc;IAC5D,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,yCAAyC,CAAC;CACnD"}
1
+ {"version":3,"file":"attachments-streaming-pool.interfaces.d.ts","sourceRoot":"","sources":["../../src/attachments-streaming/attachments-streaming-pool.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,yCAAyC,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,WAAW,8BAA8B,CAAC,cAAc;IAC5D,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC3C,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,yCAAyC,CAAC;CACnD"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AttachmentsStreamingPool = void 0;
4
4
  const helpers_1 = require("../common/helpers");
5
+ const state_interfaces_1 = require("../state/state.interfaces");
5
6
  class AttachmentsStreamingPool {
6
7
  constructor({ adapter, attachments, batchSize = 10, stream, }) {
7
8
  this.totalProcessedCount = 0;
@@ -12,112 +13,119 @@ class AttachmentsStreamingPool {
12
13
  this.delay = undefined;
13
14
  this.stream = stream;
14
15
  }
15
- async updateProgress() {
16
- this.totalProcessedCount++;
17
- if (this.totalProcessedCount % this.PROGRESS_REPORT_INTERVAL === 0) {
18
- console.info(`Processed ${this.totalProcessedCount} attachments so far.`);
19
- // Sleep for 100ms to avoid blocking the event loop
20
- await (0, helpers_1.sleep)(100);
16
+ recordProcessedAttachment(attachment, status) {
17
+ var _a;
18
+ const attachmentsMetadata = (_a = this.adapter.sdkState.toDevRev) === null || _a === void 0 ? void 0 : _a.attachmentsMetadata;
19
+ if (!(attachmentsMetadata === null || attachmentsMetadata === void 0 ? void 0 : attachmentsMetadata.lastProcessedAttachmentsIdsList)) {
20
+ return;
21
+ }
22
+ const processedAttachmentsIdsList = attachmentsMetadata.lastProcessedAttachmentsIdsList;
23
+ const alreadyRecorded = processedAttachmentsIdsList.some((it) => it.id === attachment.id && it.parent_id === attachment.parent_id);
24
+ if (!alreadyRecorded) {
25
+ processedAttachmentsIdsList.push({
26
+ id: attachment.id,
27
+ parent_id: attachment.parent_id,
28
+ status,
29
+ });
21
30
  }
22
31
  }
23
32
  /**
24
- * Migrates processed attachments from the legacy string[] format to the new ProcessedAttachment[] format.
25
- *
26
- * @param attachments - The attachments list to migrate (either string[] or ProcessedAttachment[])
27
- * @returns Migrated array of ProcessedAttachment objects, or empty array if input is invalid
33
+ * Backfills `status` on entries recorded before the field existed (those
34
+ * only ever held successes); state from >= v1.15.2 needs no shape migration.
28
35
  */
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- migrateProcessedAttachments(attachments) {
31
- // Handle null/undefined
32
- if (!attachments || !Array.isArray(attachments)) {
33
- return [];
34
- }
35
- // If already migrated (first element is an object), return as-is
36
- if (attachments.length > 0 && typeof attachments[0] === 'object') {
37
- return attachments;
38
- }
39
- // Migrate old string[] format
40
- if (attachments.length > 0 && typeof attachments[0] === 'string') {
41
- return attachments.map((it) => ({
42
- id: it,
43
- parent_id: '',
44
- }));
36
+ backfillProcessedAttachmentStatus(attachments) {
37
+ return attachments.map((it) => {
38
+ var _a;
39
+ return (Object.assign(Object.assign({}, it), { status: (_a = it.status) !== null && _a !== void 0 ? _a : state_interfaces_1.ProcessedAttachmentStatus.Success }));
40
+ });
41
+ }
42
+ async updateProgress() {
43
+ this.totalProcessedCount++;
44
+ if (this.totalProcessedCount % this.PROGRESS_REPORT_INTERVAL === 0) {
45
+ console.info(`Processed ${this.totalProcessedCount} attachments so far.`);
46
+ // Let a pending soft-timeout message (WorkerMessageExit) be delivered so
47
+ // adapter.isTimeout can flip before the next batch is processed.
48
+ await (0, helpers_1.yieldToEventLoop)();
45
49
  }
46
- return [];
47
50
  }
48
51
  async streamAll() {
49
52
  console.log(`Starting download of ${this.attachments.length} attachments, streaming ${this.batchSize} at once.`);
50
- if (!this.adapter.state.toDevRev) {
51
- const error = new Error('toDevRev state is not initialized');
52
- console.error(error);
53
- return { error };
53
+ if (!this.adapter.sdkState.toDevRev) {
54
+ const message = 'toDevRev state is not initialized';
55
+ console.error(message);
56
+ return { status: 'error', error: { message } };
54
57
  }
55
- // Get the list of successfully processed attachments in previous (possibly incomplete) batch extraction.
56
- // If no such list exists, create an empty one.
57
- if (!this.adapter.state.toDevRev.attachmentsMetadata
58
+ // Attachments processed (successfully or not) by a previous, possibly incomplete, run.
59
+ if (!this.adapter.sdkState.toDevRev.attachmentsMetadata
58
60
  .lastProcessedAttachmentsIdsList) {
59
- this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
61
+ this.adapter.sdkState.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
60
62
  [];
61
63
  }
62
- // Migrate old processed attachments to the new format.
63
- this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
64
- this.migrateProcessedAttachments(this.adapter.state.toDevRev.attachmentsMetadata
64
+ this.adapter.sdkState.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList =
65
+ this.backfillProcessedAttachmentStatus(this.adapter.sdkState.toDevRev.attachmentsMetadata
65
66
  .lastProcessedAttachmentsIdsList);
66
- // Start initial batch of promises up to batchSize limit
67
67
  const initialBatchSize = Math.min(this.batchSize, this.attachments.length);
68
68
  const initialPromises = [];
69
69
  for (let i = 0; i < initialBatchSize; i++) {
70
70
  initialPromises.push(this.startPoolStreaming());
71
71
  }
72
- // Wait for all promises to complete
73
- await Promise.all(initialPromises);
72
+ await Promise.race([
73
+ Promise.all(initialPromises),
74
+ this.adapter.timeoutSignal,
75
+ ]);
74
76
  if (this.delay) {
75
- return { delay: this.delay };
77
+ return { status: 'delay', delaySeconds: this.delay };
76
78
  }
77
- return {};
79
+ return { status: 'success' };
78
80
  }
79
81
  async startPoolStreaming() {
80
- var _a, _b, _c, _d;
81
- // Process attachments until the attachments array is empty
82
+ var _a;
82
83
  while (this.attachments.length > 0) {
83
- // If delay is set, stop streaming
84
84
  if (this.delay) {
85
85
  break;
86
86
  }
87
- // If timeout is set, stop streaming
88
87
  if (this.adapter.isTimeout) {
89
88
  console.log('Timeout detected while streaming attachments. Stopping streaming.');
90
89
  break;
91
90
  }
92
- // Check if we can process next attachment
93
91
  const attachment = this.attachments.shift();
94
92
  if (!attachment) {
95
- break; // Exit if no more attachments
93
+ break;
96
94
  }
97
- if (this.adapter.state.toDevRev &&
98
- ((_a = this.adapter.state.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList) === null || _a === void 0 ? void 0 : _a.some((it) => it.id == attachment.id && it.parent_id == attachment.parent_id))) {
99
- continue; // Skip if the attachment ID is already processed
95
+ if (this.adapter.sdkState.toDevRev &&
96
+ ((_a = this.adapter.sdkState.toDevRev.attachmentsMetadata.lastProcessedAttachmentsIdsList) === null || _a === void 0 ? void 0 : _a.some((it) => it.id == attachment.id && it.parent_id == attachment.parent_id))) {
97
+ continue; // Already processed in a previous run
100
98
  }
101
99
  try {
102
100
  const response = await this.adapter.processAttachment(attachment, this.stream);
103
- // Check if rate limit was hit
104
- if (response === null || response === void 0 ? void 0 : response.delay) {
105
- this.delay = response.delay; // Set the delay for rate limiting
101
+ if (response.status === 'delay') {
102
+ this.delay = response.delaySeconds;
106
103
  return;
107
104
  }
108
- if (response === null || response === void 0 ? void 0 : response.error) {
109
- console.warn(`Skipping attachment with ID ${attachment.id} due to error returned by the stream function`, response.error);
105
+ if (response.status === 'error') {
106
+ const fileExtension = attachment.file_name.split('.').pop() || '';
107
+ const fileSizeInfo = response.error.fileSize
108
+ ? `and size ${response.error.fileSize} bytes `
109
+ : '';
110
+ const contentTypeInfo = attachment.content_type
111
+ ? `and content_type ${attachment.content_type} `
112
+ : '';
113
+ console.warn(`Skipping attachment with ID ${attachment.id} with extension ${fileExtension} ${fileSizeInfo}${contentTypeInfo}due to error returned by the stream function`, response.error.message);
114
+ this.recordProcessedAttachment(attachment, state_interfaces_1.ProcessedAttachmentStatus.Failed);
110
115
  await this.updateProgress();
111
116
  continue;
112
117
  }
113
- // No rate limiting, process normally
114
- if ((_c = (_b = this.adapter.state.toDevRev) === null || _b === void 0 ? void 0 : _b.attachmentsMetadata) === null || _c === void 0 ? void 0 : _c.lastProcessedAttachmentsIdsList) {
115
- (_d = this.adapter.state.toDevRev) === null || _d === void 0 ? void 0 : _d.attachmentsMetadata.lastProcessedAttachmentsIdsList.push({ id: attachment.id, parent_id: attachment.parent_id });
118
+ if (!this.adapter.isTimeout) {
119
+ this.recordProcessedAttachment(attachment, state_interfaces_1.ProcessedAttachmentStatus.Success);
116
120
  }
117
121
  await this.updateProgress();
118
122
  }
119
123
  catch (error) {
120
- console.warn(`Skipping attachment with ID ${attachment.id} due to error in processAttachment function`, error);
124
+ const fileExtension = attachment.file_name.split('.').pop() || '';
125
+ const contentTypeInfo = attachment.content_type
126
+ ? ` and content_type ${attachment.content_type}`
127
+ : '';
128
+ console.warn(`Skipping attachment with ID ${attachment.id} with extension ${fileExtension}${contentTypeInfo} due to error in processAttachment function`, error);
121
129
  await this.updateProgress();
122
130
  }
123
131
  }
@@ -1,25 +1,28 @@
1
1
  import { EventType } from '../types/extraction';
2
- export declare const ALLOWED_EXTRACTION_EVENT_TYPES: EventType[];
3
- export declare const ALLOWED_LOADING_EVENT_TYPES: EventType[];
4
- export declare const ALLOWED_EVENT_TYPES: EventType[];
5
2
  export declare const STATELESS_EXTRACTION_EVENT_TYPES: EventType[];
6
3
  export declare const STATELESS_LOADING_EVENT_TYPES: EventType[];
7
4
  export declare const STATELESS_EVENT_TYPES: EventType[];
8
- export declare const STATEFUL_EXTRACTION_EVENT_TYPES: EventType[];
9
- export declare const STATEFUL_LOADING_EVENT_TYPES: EventType[];
10
- export declare const STATEFUL_EVENT_TYPES: EventType[];
11
5
  export declare const ARTIFACT_BATCH_SIZE = 2000;
12
6
  export declare const MAX_DEVREV_ARTIFACT_SIZE: number;
13
7
  export declare const MAX_DEVREV_FILENAME_LENGTH = 256;
14
8
  export declare const MAX_DEVREV_FILENAME_EXTENSION_LENGTH = 20;
15
- export declare const AIRDROP_DEFAULT_ITEM_TYPES: {
16
- EXTERNAL_DOMAIN_METADATA: string;
17
- ATTACHMENTS: string;
18
- SSOR_ATTACHMENT: string;
19
- };
9
+ export declare const MAX_EVENT_SIZE_BYTES = 200000;
10
+ export declare const EVENT_SIZE_THRESHOLD_BYTES: number;
11
+ export declare const SSOR_ATTACHMENT: string;
12
+ export declare const UNKNOWN_EVENT_TYPE = "UNKNOWN_EVENT_TYPE";
13
+ export declare enum AirSyncDefaultItemTypes {
14
+ EXTERNAL_DOMAIN_METADATA = "external_domain_metadata",
15
+ ATTACHMENTS = "attachments",
16
+ EXTERNAL_SYNC_UNITS = "external_sync_units"
17
+ }
20
18
  export declare const LIBRARY_VERSION: any;
21
19
  export declare const DEFAULT_LAMBDA_TIMEOUT: number;
22
20
  export declare const HARD_TIMEOUT_MULTIPLIER = 1.3;
23
21
  export declare const MEMORY_LOG_INTERVAL: number;
24
- export declare const DEFAULT_SLEEP_DELAY_MS: number;
22
+ /**
23
+ * Sentinel for an unbounded extraction timestamp (TimeValueType.UNBOUNDED),
24
+ * stored as workersOldest. The Unix epoch guarantees no real timestamp can be
25
+ * earlier, so subsequent syncs cannot accidentally overwrite the boundary.
26
+ */
27
+ export declare const UNBOUNDED_DATE_TIME_VALUE = "1970-01-01T00:00:00.000Z";
25
28
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,eAAO,MAAM,8BAA8B,aAS1C,CAAC;AAEF,eAAO,MAAM,2BAA2B,aAKvC,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAG/B,CAAC;AAEF,eAAO,MAAM,gCAAgC,aAI5C,CAAC;AAEF,eAAO,MAAM,6BAA6B,aAGzC,CAAC;AAEF,eAAO,MAAM,qBAAqB,aAGjC,CAAC;AAEF,eAAO,MAAM,+BAA+B,aAGzC,CAAC;AAEJ,eAAO,MAAM,4BAA4B,aAExC,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAGhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,wBAAwB,QAAyB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAEvD,eAAO,MAAM,0BAA0B;;;;CAItC,CAAC;AAEF,eAAO,MAAM,eAAe,KAAsB,CAAC;AAEnD,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAE7C,eAAO,MAAM,sBAAsB,QAAgB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIhD,eAAO,MAAM,gCAAgC,aAI5C,CAAC;AAEF,eAAO,MAAM,6BAA6B,aAGzC,CAAC;AAEF,eAAO,MAAM,qBAAqB,aAGjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,wBAAwB,QAAyB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAGvD,eAAO,MAAM,oBAAoB,SAAU,CAAC;AAE5C,eAAO,MAAM,0BAA0B,QAEtC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAA0B,CAAC;AACzD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,oBAAY,uBAAuB;IACjC,wBAAwB,6BAA6B;IACrD,WAAW,gBAAgB;IAC3B,mBAAmB,wBAAwB;CAC5C;AAED,eAAO,MAAM,eAAe,KAAsB,CAAC;AAEnD,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,mBAAmB,QAAY,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,6BAA6B,CAAC"}
@@ -1,28 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_SLEEP_DELAY_MS = exports.MEMORY_LOG_INTERVAL = exports.HARD_TIMEOUT_MULTIPLIER = exports.DEFAULT_LAMBDA_TIMEOUT = exports.LIBRARY_VERSION = exports.AIRDROP_DEFAULT_ITEM_TYPES = exports.MAX_DEVREV_FILENAME_EXTENSION_LENGTH = exports.MAX_DEVREV_FILENAME_LENGTH = exports.MAX_DEVREV_ARTIFACT_SIZE = exports.ARTIFACT_BATCH_SIZE = exports.STATEFUL_EVENT_TYPES = exports.STATEFUL_LOADING_EVENT_TYPES = exports.STATEFUL_EXTRACTION_EVENT_TYPES = exports.STATELESS_EVENT_TYPES = exports.STATELESS_LOADING_EVENT_TYPES = exports.STATELESS_EXTRACTION_EVENT_TYPES = exports.ALLOWED_EVENT_TYPES = exports.ALLOWED_LOADING_EVENT_TYPES = exports.ALLOWED_EXTRACTION_EVENT_TYPES = void 0;
3
+ exports.UNBOUNDED_DATE_TIME_VALUE = exports.MEMORY_LOG_INTERVAL = exports.HARD_TIMEOUT_MULTIPLIER = exports.DEFAULT_LAMBDA_TIMEOUT = exports.LIBRARY_VERSION = exports.AirSyncDefaultItemTypes = exports.UNKNOWN_EVENT_TYPE = exports.SSOR_ATTACHMENT = exports.EVENT_SIZE_THRESHOLD_BYTES = exports.MAX_EVENT_SIZE_BYTES = exports.MAX_DEVREV_FILENAME_EXTENSION_LENGTH = exports.MAX_DEVREV_FILENAME_LENGTH = exports.MAX_DEVREV_ARTIFACT_SIZE = exports.ARTIFACT_BATCH_SIZE = exports.STATELESS_EVENT_TYPES = exports.STATELESS_LOADING_EVENT_TYPES = exports.STATELESS_EXTRACTION_EVENT_TYPES = void 0;
4
4
  const extraction_1 = require("../types/extraction");
5
5
  const helpers_1 = require("./helpers");
6
- exports.ALLOWED_EXTRACTION_EVENT_TYPES = [
7
- extraction_1.EventType.StartExtractingExternalSyncUnits,
8
- extraction_1.EventType.StartExtractingMetadata,
9
- extraction_1.EventType.StartExtractingData,
10
- extraction_1.EventType.ContinueExtractingData,
11
- extraction_1.EventType.StartDeletingExtractorState,
12
- extraction_1.EventType.StartExtractingAttachments,
13
- extraction_1.EventType.ContinueExtractingAttachments,
14
- extraction_1.EventType.StartDeletingExtractorAttachmentsState,
15
- ];
16
- exports.ALLOWED_LOADING_EVENT_TYPES = [
17
- extraction_1.EventType.StartLoadingData,
18
- extraction_1.EventType.ContinueLoadingData,
19
- extraction_1.EventType.StartDeletingLoaderState,
20
- extraction_1.EventType.StartDeletingLoaderAttachmentState,
21
- ];
22
- exports.ALLOWED_EVENT_TYPES = [
23
- ...exports.ALLOWED_EXTRACTION_EVENT_TYPES,
24
- ...exports.ALLOWED_LOADING_EVENT_TYPES,
25
- ];
26
6
  exports.STATELESS_EXTRACTION_EVENT_TYPES = [
27
7
  extraction_1.EventType.StartExtractingExternalSyncUnits,
28
8
  extraction_1.EventType.StartDeletingExtractorState,
@@ -36,23 +16,29 @@ exports.STATELESS_EVENT_TYPES = [
36
16
  ...exports.STATELESS_EXTRACTION_EVENT_TYPES,
37
17
  ...exports.STATELESS_LOADING_EVENT_TYPES,
38
18
  ];
39
- exports.STATEFUL_EXTRACTION_EVENT_TYPES = exports.ALLOWED_EXTRACTION_EVENT_TYPES.filter((eventType) => !exports.STATELESS_EXTRACTION_EVENT_TYPES.includes(eventType));
40
- exports.STATEFUL_LOADING_EVENT_TYPES = exports.ALLOWED_LOADING_EVENT_TYPES.filter((eventType) => !exports.STATELESS_LOADING_EVENT_TYPES.includes(eventType));
41
- exports.STATEFUL_EVENT_TYPES = [
42
- ...exports.STATEFUL_EXTRACTION_EVENT_TYPES,
43
- ...exports.STATEFUL_LOADING_EVENT_TYPES,
44
- ];
45
19
  exports.ARTIFACT_BATCH_SIZE = 2000;
46
20
  exports.MAX_DEVREV_ARTIFACT_SIZE = 2 * 1024 * 1024 * 1024; // 2GB
47
21
  exports.MAX_DEVREV_FILENAME_LENGTH = 256;
48
- exports.MAX_DEVREV_FILENAME_EXTENSION_LENGTH = 20; // 20 characters for the file extension
49
- exports.AIRDROP_DEFAULT_ITEM_TYPES = {
50
- EXTERNAL_DOMAIN_METADATA: 'external_domain_metadata',
51
- ATTACHMENTS: 'attachments',
52
- SSOR_ATTACHMENT: 'ssor_attachment',
53
- };
22
+ exports.MAX_DEVREV_FILENAME_EXTENSION_LENGTH = 20;
23
+ // Max SQS message size is 250KB, we want to leave some room for the other data in the message
24
+ exports.MAX_EVENT_SIZE_BYTES = 200000;
25
+ // We want to leave some room for the other data in the message and process the rest of queued messages
26
+ exports.EVENT_SIZE_THRESHOLD_BYTES = Math.floor(exports.MAX_EVENT_SIZE_BYTES * 0.8);
27
+ exports.SSOR_ATTACHMENT = 'ssor_attachment';
28
+ exports.UNKNOWN_EVENT_TYPE = 'UNKNOWN_EVENT_TYPE';
29
+ var AirSyncDefaultItemTypes;
30
+ (function (AirSyncDefaultItemTypes) {
31
+ AirSyncDefaultItemTypes["EXTERNAL_DOMAIN_METADATA"] = "external_domain_metadata";
32
+ AirSyncDefaultItemTypes["ATTACHMENTS"] = "attachments";
33
+ AirSyncDefaultItemTypes["EXTERNAL_SYNC_UNITS"] = "external_sync_units";
34
+ })(AirSyncDefaultItemTypes || (exports.AirSyncDefaultItemTypes = AirSyncDefaultItemTypes = {}));
54
35
  exports.LIBRARY_VERSION = (0, helpers_1.getLibraryVersion)();
55
36
  exports.DEFAULT_LAMBDA_TIMEOUT = 10 * 60 * 1000; // 10 minutes
56
37
  exports.HARD_TIMEOUT_MULTIPLIER = 1.3;
57
38
  exports.MEMORY_LOG_INTERVAL = 30 * 1000; // 30 seconds
58
- exports.DEFAULT_SLEEP_DELAY_MS = 3 * 60 * 1000; // 3 minutes
39
+ /**
40
+ * Sentinel for an unbounded extraction timestamp (TimeValueType.UNBOUNDED),
41
+ * stored as workersOldest. The Unix epoch guarantees no real timestamp can be
42
+ * earlier, so subsequent syncs cannot accidentally overwrite the boundary.
43
+ */
44
+ exports.UNBOUNDED_DATE_TIME_VALUE = '1970-01-01T00:00:00.000Z';
@@ -1,30 +1,10 @@
1
- /**
2
- * Gets the library version from the package.json file.
3
- * @returns {string} The library version
4
- */
5
1
  export declare function getLibraryVersion(): any;
6
- /**
7
- * Sleeps for a given number of milliseconds.
8
- * @param {number} ms - The number of milliseconds to sleep
9
- * @returns {Promise<void>} A promise that resolves after the given number of milliseconds
10
- */
11
2
  export declare function sleep(ms: number): Promise<unknown>;
12
3
  /**
13
- * Truncates a filename if it exceeds the maximum allowed length.
14
- * @param {string} filename - The filename to truncate
15
- * @returns {string} The truncated filename
16
- */
17
- export declare function truncateFilename(filename: string): string;
18
- /**
19
- * MemoryInfo is an interface that represents the memory usage information.
20
- * @interface MemoryInfo
21
- * @property {string} rssUsedMB - The RSS used in MB
22
- * @property {string} rssUsedPercent - The RSS used percentage
23
- * @property {string} heapUsedPercent - The heap used percentage
24
- * @property {string} externalMB - The external memory used in MB
25
- * @property {string} arrayBuffersMB - The array buffers memory used in MB
26
- * @property {string} formattedMessage - The formatted message
4
+ * Yields once to the event loop so pending events (e.g. worker messages) can
5
+ * be delivered before continuing.
27
6
  */
7
+ export declare function yieldToEventLoop(): Promise<void>;
28
8
  export interface MemoryInfo {
29
9
  rssUsedMB: string;
30
10
  rssUsedPercent: string;
@@ -33,9 +13,5 @@ export interface MemoryInfo {
33
13
  arrayBuffersMB: string;
34
14
  formattedMessage: string;
35
15
  }
36
- /**
37
- * Gets the memory usage information.
38
- * @returns {MemoryInfo} The memory usage information
39
- */
40
16
  export declare function getMemoryUsage(): MemoryInfo;
41
17
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,iBAAiB,QAiBhC;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAGrC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBzD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAmD3C"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":"AAIA,wBAAgB,iBAAiB,QAchC;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAErC;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEtD;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,cAAc,IAAI,UAAU,CA+C3C"}
@@ -35,16 +35,11 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getLibraryVersion = getLibraryVersion;
37
37
  exports.sleep = sleep;
38
- exports.truncateFilename = truncateFilename;
38
+ exports.yieldToEventLoop = yieldToEventLoop;
39
39
  exports.getMemoryUsage = getMemoryUsage;
40
40
  const fs_1 = require("fs");
41
41
  const path = __importStar(require("path"));
42
42
  const v8 = __importStar(require("v8"));
43
- const constants_1 = require("./constants");
44
- /**
45
- * Gets the library version from the package.json file.
46
- * @returns {string} The library version
47
- */
48
43
  function getLibraryVersion() {
49
44
  var _a;
50
45
  try {
@@ -55,41 +50,20 @@ function getLibraryVersion() {
55
50
  return '';
56
51
  }
57
52
  catch (error) {
58
- console.error('Error reading adaas library version from package.json', error);
53
+ console.error('Error reading SDK version from package.json', error);
59
54
  return '';
60
55
  }
61
56
  }
62
- /**
63
- * Sleeps for a given number of milliseconds.
64
- * @param {number} ms - The number of milliseconds to sleep
65
- * @returns {Promise<void>} A promise that resolves after the given number of milliseconds
66
- */
67
57
  async function sleep(ms) {
68
- console.log(`Sleeping for ${ms}ms.`);
69
58
  return new Promise((resolve) => setTimeout(resolve, ms));
70
59
  }
71
60
  /**
72
- * Truncates a filename if it exceeds the maximum allowed length.
73
- * @param {string} filename - The filename to truncate
74
- * @returns {string} The truncated filename
61
+ * Yields once to the event loop so pending events (e.g. worker messages) can
62
+ * be delivered before continuing.
75
63
  */
76
- function truncateFilename(filename) {
77
- // If the filename is already within the limit, return it as is.
78
- if (filename.length <= constants_1.MAX_DEVREV_FILENAME_LENGTH) {
79
- return filename;
80
- }
81
- console.warn(`Filename length exceeds the maximum limit of ${constants_1.MAX_DEVREV_FILENAME_LENGTH} characters. Truncating filename.`);
82
- const extension = filename.slice(-constants_1.MAX_DEVREV_FILENAME_EXTENSION_LENGTH);
83
- // Calculate how many characters are available for the name part after accounting for the extension and "..."
84
- const availableNameLength = constants_1.MAX_DEVREV_FILENAME_LENGTH - constants_1.MAX_DEVREV_FILENAME_EXTENSION_LENGTH - 3; // -3 for "..."
85
- // Truncate the name part and add an ellipsis
86
- const truncatedFilename = filename.slice(0, availableNameLength);
87
- return `${truncatedFilename}...${extension}`;
64
+ async function yieldToEventLoop() {
65
+ return new Promise((resolve) => setImmediate(resolve));
88
66
  }
89
- /**
90
- * Gets the memory usage information.
91
- * @returns {MemoryInfo} The memory usage information
92
- */
93
67
  function getMemoryUsage() {
94
68
  try {
95
69
  const memUsage = process.memoryUsage();
@@ -97,16 +71,12 @@ function getMemoryUsage() {
97
71
  const rssUsedMB = memUsage.rss / 1024 / 1024;
98
72
  const heapLimitMB = heapStats.heap_size_limit / 1024 / 1024;
99
73
  const effectiveMemoryLimitMB = heapLimitMB;
100
- // Calculate heap values for consistent format
101
74
  const heapUsedMB = heapStats.used_heap_size / 1024 / 1024;
102
75
  const heapTotalMB = heapStats.heap_size_limit / 1024 / 1024;
103
- // Calculate external and buffer values (critical for detecting stream leaks)
104
76
  const externalMB = memUsage.external / 1024 / 1024;
105
77
  const arrayBuffersMB = memUsage.arrayBuffers / 1024 / 1024;
106
- // Critical percentages for OOM detection
107
78
  const rssUsedPercent = ((rssUsedMB / effectiveMemoryLimitMB) * 100).toFixed(2) + '%';
108
79
  const heapUsedPercent = ((heapStats.used_heap_size / heapStats.heap_size_limit) * 100).toFixed(2) + '%';
109
- // Detailed message showing RSS breakdown for leak detection
110
80
  const formattedMessage = `Memory: RSS ${rssUsedMB.toFixed(2)}/${effectiveMemoryLimitMB.toFixed(2)}MB (${rssUsedPercent}) [Heap ${heapUsedMB.toFixed(2)}/${heapTotalMB.toFixed(2)}MB (${heapUsedPercent}) + External ${externalMB.toFixed(2)}MB + Buffers ${arrayBuffersMB.toFixed(2)}MB].`;
111
81
  return {
112
82
  rssUsedMB: rssUsedMB.toFixed(2),
@@ -0,0 +1,4 @@
1
+ import { AxiosInstance } from 'axios';
2
+ declare const axiosClient: Pick<AxiosInstance, 'get' | 'post'>;
3
+ export { axiosClient };
4
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAc,aAAa,EAAE,MAAM,OAAO,CAAC;AAmGzD,QAAA,MAAM,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,MAAM,CAGpD,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,CAAC"}