@devrev/airsync-sdk 2.0.0-beta.1 → 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.
- package/README.md +7 -21
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts +6 -7
- package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +4 -3
- package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -1
- package/dist/attachments-streaming/attachments-streaming-pool.js +69 -61
- package/dist/common/constants.d.ts +15 -12
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +20 -34
- package/dist/common/helpers.d.ts +3 -27
- package/dist/common/helpers.d.ts.map +1 -1
- package/dist/common/helpers.js +6 -36
- package/dist/http/{axios-client-internal.d.ts → client.d.ts} +1 -1
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/{axios-client-internal.js → client.js} +7 -4
- package/dist/http/errors.d.ts +8 -0
- package/dist/http/errors.d.ts.map +1 -0
- package/dist/http/errors.js +31 -0
- package/dist/index.d.ts +30 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -28
- package/dist/logger/logger.d.ts +13 -70
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.interfaces.d.ts +4 -7
- package/dist/logger/logger.interfaces.d.ts.map +1 -1
- package/dist/logger/logger.js +67 -92
- package/dist/mappers/mappers.d.ts +10 -43
- package/dist/mappers/mappers.d.ts.map +1 -1
- package/dist/mappers/mappers.interfaces.d.ts +173 -0
- package/dist/mappers/mappers.interfaces.d.ts.map +1 -0
- package/dist/mappers/{mappers.interface.js → mappers.interfaces.js} +1 -10
- package/dist/mappers/mappers.js +32 -46
- package/dist/multithreading/adapters/base-adapter.d.ts +39 -0
- package/dist/multithreading/adapters/base-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/base-adapter.js +212 -0
- package/dist/multithreading/adapters/extraction-adapter.d.ts +49 -0
- package/dist/multithreading/adapters/extraction-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/extraction-adapter.js +375 -0
- package/dist/multithreading/adapters/loading-adapter.d.ts +26 -0
- package/dist/multithreading/adapters/loading-adapter.d.ts.map +1 -0
- package/dist/multithreading/adapters/loading-adapter.helpers.d.ts +12 -0
- package/dist/multithreading/adapters/loading-adapter.helpers.d.ts.map +1 -0
- package/dist/multithreading/{worker-adapter/worker-adapter.helpers.js → adapters/loading-adapter.helpers.js} +2 -12
- package/dist/multithreading/adapters/loading-adapter.js +279 -0
- package/dist/multithreading/emit.d.ts +11 -0
- package/dist/multithreading/emit.d.ts.map +1 -0
- package/dist/multithreading/emit.js +25 -0
- package/dist/multithreading/process-task.d.ts +6 -1
- package/dist/multithreading/process-task.d.ts.map +1 -1
- package/dist/multithreading/process-task.js +120 -82
- package/dist/multithreading/spawn/spawn.d.ts +10 -11
- package/dist/multithreading/spawn/spawn.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.d.ts +12 -11
- package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -1
- package/dist/multithreading/spawn/spawn.helpers.js +142 -77
- package/dist/multithreading/spawn/spawn.js +59 -75
- package/dist/multithreading/worker.js +16 -5
- package/dist/repo/repo.d.ts +14 -5
- package/dist/repo/repo.d.ts.map +1 -1
- package/dist/repo/repo.helpers.d.ts +6 -0
- package/dist/repo/repo.helpers.d.ts.map +1 -0
- package/dist/repo/repo.helpers.js +16 -0
- package/dist/repo/repo.interfaces.d.ts +11 -20
- package/dist/repo/repo.interfaces.d.ts.map +1 -1
- package/dist/repo/repo.js +36 -22
- package/dist/state/base-state.d.ts +58 -0
- package/dist/state/base-state.d.ts.map +1 -0
- package/dist/state/base-state.js +242 -0
- package/dist/state/extraction-state.d.ts +14 -0
- package/dist/state/extraction-state.d.ts.map +1 -0
- package/dist/state/extraction-state.js +140 -0
- package/dist/state/install-initial-domain-mapping.d.ts +4 -0
- package/dist/state/install-initial-domain-mapping.d.ts.map +1 -0
- package/dist/{common → state}/install-initial-domain-mapping.js +5 -7
- package/dist/state/loading-state.d.ts +8 -0
- package/dist/state/loading-state.d.ts.map +1 -0
- package/dist/state/loading-state.js +29 -0
- package/dist/state/state.d.ts +3 -29
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.interfaces.d.ts +31 -12
- package/dist/state/state.interfaces.d.ts.map +1 -1
- package/dist/state/state.interfaces.js +17 -1
- package/dist/state/state.js +9 -164
- package/dist/state/time-value-resolver.d.ts +17 -0
- package/dist/state/time-value-resolver.d.ts.map +1 -0
- package/dist/state/time-value-resolver.js +110 -0
- package/dist/testing/mock-event.d.ts +10 -0
- package/dist/testing/mock-event.d.ts.map +1 -0
- package/dist/testing/mock-event.js +96 -0
- package/dist/testing/mock-server.d.ts +31 -0
- package/dist/testing/mock-server.d.ts.map +1 -0
- package/dist/testing/mock-server.interfaces.d.ts +54 -0
- package/dist/testing/mock-server.interfaces.d.ts.map +1 -0
- package/dist/testing/mock-server.interfaces.js +4 -0
- package/dist/testing/mock-server.js +297 -0
- package/dist/testing/test-adapters.d.ts +22 -0
- package/dist/testing/test-adapters.d.ts.map +1 -0
- package/dist/testing/test-adapters.js +32 -0
- package/dist/types/common.d.ts +4 -37
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +2 -17
- package/dist/types/errors.d.ts +15 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +28 -0
- package/dist/types/external-domain-metadata.d.ts +40 -162
- package/dist/types/external-domain-metadata.d.ts.map +1 -1
- package/dist/types/extraction.d.ts +135 -278
- package/dist/types/extraction.d.ts.map +1 -1
- package/dist/types/extraction.js +46 -133
- package/dist/types/loading.d.ts +15 -55
- package/dist/types/loading.d.ts.map +1 -1
- package/dist/types/loading.js +1 -23
- package/dist/types/workers.d.ts +70 -103
- package/dist/types/workers.d.ts.map +1 -1
- package/dist/types/workers.js +1 -6
- package/dist/uploader/uploader.d.ts +10 -61
- package/dist/uploader/uploader.d.ts.map +1 -1
- package/dist/uploader/uploader.helpers.d.ts +7 -27
- package/dist/uploader/uploader.helpers.d.ts.map +1 -1
- package/dist/uploader/uploader.helpers.js +80 -30
- package/dist/uploader/uploader.interfaces.d.ts +19 -54
- package/dist/uploader/uploader.interfaces.d.ts.map +1 -1
- package/dist/uploader/uploader.interfaces.js +8 -0
- package/dist/uploader/uploader.js +72 -124
- package/docs/MIGRATION.md +696 -0
- package/package.json +35 -22
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +0 -2
- package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +0 -1
- package/dist/attachments-streaming/attachments-streaming-pool.test.js +0 -321
- package/dist/common/control-protocol.d.ts +0 -10
- package/dist/common/control-protocol.d.ts.map +0 -1
- package/dist/common/control-protocol.js +0 -31
- package/dist/common/errors.d.ts +0 -6
- package/dist/common/errors.d.ts.map +0 -1
- package/dist/common/errors.js +0 -4
- package/dist/common/event-type-translation.d.ts +0 -24
- package/dist/common/event-type-translation.d.ts.map +0 -1
- package/dist/common/event-type-translation.js +0 -117
- package/dist/common/install-initial-domain-mapping.d.ts +0 -4
- package/dist/common/install-initial-domain-mapping.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.test.d.ts +0 -2
- package/dist/common/install-initial-domain-mapping.test.d.ts.map +0 -1
- package/dist/common/install-initial-domain-mapping.test.js +0 -208
- package/dist/deprecated/adapter/index.d.ts +0 -62
- package/dist/deprecated/adapter/index.d.ts.map +0 -1
- package/dist/deprecated/adapter/index.js +0 -151
- package/dist/deprecated/common/helpers.d.ts +0 -7
- package/dist/deprecated/common/helpers.d.ts.map +0 -1
- package/dist/deprecated/common/helpers.js +0 -47
- package/dist/deprecated/demo-extractor/external_domain_metadata.json +0 -38
- package/dist/deprecated/demo-extractor/index.d.ts +0 -18
- package/dist/deprecated/demo-extractor/index.d.ts.map +0 -1
- package/dist/deprecated/demo-extractor/index.js +0 -161
- package/dist/deprecated/http/client.d.ts +0 -22
- package/dist/deprecated/http/client.d.ts.map +0 -1
- package/dist/deprecated/http/client.js +0 -161
- package/dist/deprecated/uploader/index.d.ts +0 -35
- package/dist/deprecated/uploader/index.d.ts.map +0 -1
- package/dist/deprecated/uploader/index.js +0 -161
- package/dist/http/axios-client-internal.d.ts.map +0 -1
- package/dist/http/axios-client-internal.test.d.ts +0 -2
- package/dist/http/axios-client-internal.test.d.ts.map +0 -1
- package/dist/http/axios-client-internal.test.js +0 -154
- package/dist/http/axios-client.d.ts +0 -27
- package/dist/http/axios-client.d.ts.map +0 -1
- package/dist/http/axios-client.js +0 -57
- package/dist/http/constants.d.ts +0 -4
- package/dist/http/constants.d.ts.map +0 -1
- package/dist/http/constants.js +0 -6
- package/dist/http/index.d.ts +0 -3
- package/dist/http/index.d.ts.map +0 -1
- package/dist/http/index.js +0 -18
- package/dist/http/types.d.ts +0 -17
- package/dist/http/types.d.ts.map +0 -1
- package/dist/http/types.js +0 -2
- package/dist/logger/logger.constants.d.ts +0 -6
- package/dist/logger/logger.constants.d.ts.map +0 -1
- package/dist/logger/logger.constants.js +0 -13
- package/dist/logger/logger.context.d.ts +0 -58
- package/dist/logger/logger.context.d.ts.map +0 -1
- package/dist/logger/logger.context.js +0 -86
- package/dist/logger/logger.test.d.ts +0 -2
- package/dist/logger/logger.test.d.ts.map +0 -1
- package/dist/logger/logger.test.js +0 -490
- package/dist/mappers/mappers.interface.d.ts +0 -294
- package/dist/mappers/mappers.interface.d.ts.map +0 -1
- package/dist/mappers/mappers.test.d.ts +0 -2
- package/dist/mappers/mappers.test.d.ts.map +0 -1
- package/dist/mappers/mappers.test.js +0 -107
- package/dist/multithreading/create-worker.test.d.ts +0 -2
- package/dist/multithreading/create-worker.test.d.ts.map +0 -1
- package/dist/multithreading/create-worker.test.js +0 -89
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts +0 -2
- package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/spawn/spawn.helpers.test.js +0 -293
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +0 -127
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts +0 -91
- package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +0 -22
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +0 -514
- package/dist/multithreading/worker-adapter/worker-adapter.js +0 -745
- package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +0 -2
- package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +0 -1
- package/dist/multithreading/worker-adapter/worker-adapter.test.js +0 -483
- package/dist/repo/repo.test.d.ts +0 -2
- package/dist/repo/repo.test.d.ts.map +0 -1
- package/dist/repo/repo.test.js +0 -131
- package/dist/state/state.test.d.ts +0 -2
- package/dist/state/state.test.d.ts.map +0 -1
- package/dist/state/state.test.js +0 -224
- package/dist/types/extraction.test.d.ts +0 -2
- package/dist/types/extraction.test.d.ts.map +0 -1
- package/dist/types/extraction.test.js +0 -70
- package/dist/types/index.d.ts +0 -10
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -18
- package/dist/uploader/uploader.helpers.test.d.ts +0 -2
- package/dist/uploader/uploader.helpers.test.d.ts.map +0 -1
- package/dist/uploader/uploader.helpers.test.js +0 -267
- package/dist/uploader/uploader.test.d.ts +0 -2
- package/dist/uploader/uploader.test.d.ts.map +0 -1
- package/dist/uploader/uploader.test.js +0 -589
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
export declare const DEFAULT_MOCK_SERVER_PORT = 3001;
|
|
3
|
+
export interface ParsedRequest extends IncomingMessage {
|
|
4
|
+
/** URL path without query string */
|
|
5
|
+
path: string;
|
|
6
|
+
/** Parsed JSON body (if any) */
|
|
7
|
+
body?: unknown;
|
|
8
|
+
}
|
|
9
|
+
export interface MockResponse extends ServerResponse {
|
|
10
|
+
set(headers: Record<string, string>): MockResponse;
|
|
11
|
+
status(code: number): MockResponse;
|
|
12
|
+
json(data: unknown): void;
|
|
13
|
+
buffer(data: Buffer): void;
|
|
14
|
+
send(): void;
|
|
15
|
+
}
|
|
16
|
+
/** Simulates failures before succeeding. */
|
|
17
|
+
export interface RetryConfig {
|
|
18
|
+
/** Failures before success (default: 4) */
|
|
19
|
+
failureCount?: number;
|
|
20
|
+
/** Status code during failures (default: 500) */
|
|
21
|
+
errorStatus?: number;
|
|
22
|
+
errorBody?: unknown;
|
|
23
|
+
headers?: Record<string, string>;
|
|
24
|
+
/** Delay in ms before each failure response */
|
|
25
|
+
delay?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface RouteConfig {
|
|
28
|
+
path: string;
|
|
29
|
+
method: string;
|
|
30
|
+
status: number;
|
|
31
|
+
body?: unknown;
|
|
32
|
+
/** Raw binary body, e.g. gzipped JSONL (takes precedence over `body`) */
|
|
33
|
+
bodyBuffer?: Buffer;
|
|
34
|
+
headers?: Record<string, string>;
|
|
35
|
+
retry?: RetryConfig;
|
|
36
|
+
/** Succeed for the first `successCount` requests, then fail (partial-upload scenarios). */
|
|
37
|
+
succeedThenFail?: {
|
|
38
|
+
successCount: number;
|
|
39
|
+
errorStatus?: number;
|
|
40
|
+
errorBody?: unknown;
|
|
41
|
+
};
|
|
42
|
+
/** Delay in ms before sending the response */
|
|
43
|
+
delay?: number;
|
|
44
|
+
}
|
|
45
|
+
export type RouteHandler = (req: ParsedRequest, res: MockResponse) => unknown;
|
|
46
|
+
export interface RequestInfo {
|
|
47
|
+
method: string;
|
|
48
|
+
url: string;
|
|
49
|
+
body?: unknown;
|
|
50
|
+
}
|
|
51
|
+
export type RouteHandlers = Map<string, RouteHandler>;
|
|
52
|
+
/** Request counts per route. */
|
|
53
|
+
export type RequestCounts = Map<string, number>;
|
|
54
|
+
//# sourceMappingURL=mock-server.interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-server.interfaces.d.ts","sourceRoot":"","sources":["../../src/testing/mock-server.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAEvD,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,IAAI,IAAI,CAAC;CACd;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,2FAA2F;IAC3F,eAAe,CAAC,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEtD,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockServer = exports.MOCK_SERVER_DEFAULT_URL = void 0;
|
|
4
|
+
const http_1 = require("http");
|
|
5
|
+
const mock_server_interfaces_1 = require("./mock-server.interfaces");
|
|
6
|
+
// Port 0 lets the OS assign a free port at listen time; tests read the
|
|
7
|
+
// resolved URL from `mockServer.baseUrl`.
|
|
8
|
+
exports.MOCK_SERVER_DEFAULT_URL = 'http://localhost:0';
|
|
9
|
+
const MAX_BODY_SIZE = 10 * 1024 * 1024; // 10mb
|
|
10
|
+
async function parseJsonBody(req) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
const chunks = [];
|
|
13
|
+
let size = 0;
|
|
14
|
+
req.on('data', (chunk) => {
|
|
15
|
+
size += chunk.length;
|
|
16
|
+
if (size > MAX_BODY_SIZE) {
|
|
17
|
+
reject(new Error('Request body too large'));
|
|
18
|
+
req.destroy();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
chunks.push(chunk);
|
|
22
|
+
});
|
|
23
|
+
req.on('end', () => {
|
|
24
|
+
if (chunks.length === 0) {
|
|
25
|
+
resolve(undefined);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const raw = Buffer.concat(chunks).toString('utf-8');
|
|
30
|
+
resolve(JSON.parse(raw));
|
|
31
|
+
}
|
|
32
|
+
catch (_a) {
|
|
33
|
+
resolve(undefined);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
req.on('error', reject);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function wrapResponse(res) {
|
|
40
|
+
const mock = res;
|
|
41
|
+
let statusCode = 200;
|
|
42
|
+
mock.set = (headers) => {
|
|
43
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
44
|
+
res.setHeader(key, value);
|
|
45
|
+
}
|
|
46
|
+
return mock;
|
|
47
|
+
};
|
|
48
|
+
mock.status = (code) => {
|
|
49
|
+
statusCode = code;
|
|
50
|
+
return mock;
|
|
51
|
+
};
|
|
52
|
+
mock.json = (data) => {
|
|
53
|
+
res.writeHead(statusCode, { 'Content-Type': 'application/json' });
|
|
54
|
+
res.end(JSON.stringify(data));
|
|
55
|
+
};
|
|
56
|
+
mock.buffer = (data) => {
|
|
57
|
+
res.writeHead(statusCode, { 'Content-Type': 'application/octet-stream' });
|
|
58
|
+
res.end(data);
|
|
59
|
+
};
|
|
60
|
+
mock.send = () => {
|
|
61
|
+
res.writeHead(statusCode);
|
|
62
|
+
res.end();
|
|
63
|
+
};
|
|
64
|
+
return mock;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Mocks internal AirSync endpoints in tests, with per-test route
|
|
68
|
+
* configuration to simulate different response scenarios.
|
|
69
|
+
*/
|
|
70
|
+
class MockServer {
|
|
71
|
+
constructor(port = mock_server_interfaces_1.DEFAULT_MOCK_SERVER_PORT) {
|
|
72
|
+
this.server = null;
|
|
73
|
+
this.routeHandlers = new Map();
|
|
74
|
+
this.requests = [];
|
|
75
|
+
this.requestCounts = new Map();
|
|
76
|
+
this.internalPort = port;
|
|
77
|
+
this.port = port;
|
|
78
|
+
this.baseUrl = `http://localhost:${this.port}`;
|
|
79
|
+
}
|
|
80
|
+
async start() {
|
|
81
|
+
return new Promise((resolve) => {
|
|
82
|
+
this.server = (0, http_1.createServer)((req, res) => {
|
|
83
|
+
this.handleRequest(req, res).catch(() => {
|
|
84
|
+
res.writeHead(500);
|
|
85
|
+
res.end();
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
this.server.listen(this.internalPort, () => {
|
|
89
|
+
var _a, _b;
|
|
90
|
+
const actualPort = (_b = (_a = this.server) === null || _a === void 0 ? void 0 : _a.address()) === null || _b === void 0 ? void 0 : _b.port;
|
|
91
|
+
if (actualPort) {
|
|
92
|
+
this.port = actualPort;
|
|
93
|
+
this.baseUrl = `http://localhost:${this.port}`;
|
|
94
|
+
}
|
|
95
|
+
console.log(`Mock server running on http://localhost:${this.port}.`);
|
|
96
|
+
resolve();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async stop() {
|
|
101
|
+
if (!this.server) {
|
|
102
|
+
return Promise.resolve();
|
|
103
|
+
}
|
|
104
|
+
return new Promise((resolve, reject) => {
|
|
105
|
+
this.server.close((err) => {
|
|
106
|
+
if (err) {
|
|
107
|
+
reject(err);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log('Mock server stopped.');
|
|
111
|
+
this.server = null;
|
|
112
|
+
resolve();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async handleRequest(raw, rawRes) {
|
|
118
|
+
const req = raw;
|
|
119
|
+
const res = wrapResponse(rawRes);
|
|
120
|
+
const urlPath = (req.url || '/').split('?')[0];
|
|
121
|
+
req.path = urlPath;
|
|
122
|
+
req.body = await parseJsonBody(req);
|
|
123
|
+
const requestInfo = Object.assign({ method: req.method || 'GET', url: req.url || urlPath }, (req.body !== undefined && req.body !== null
|
|
124
|
+
? { body: req.body }
|
|
125
|
+
: {}));
|
|
126
|
+
this.requests.push(requestInfo);
|
|
127
|
+
const method = (req.method || 'GET').toUpperCase();
|
|
128
|
+
const key = `${method}:${urlPath}`;
|
|
129
|
+
const customHandler = this.routeHandlers.get(key);
|
|
130
|
+
if (customHandler) {
|
|
131
|
+
customHandler(req, res);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.defaultRouteHandler(req, res);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Falls back to { success: true } for routes not explicitly set. */
|
|
138
|
+
defaultRouteHandler(req, res) {
|
|
139
|
+
if (req.method === 'GET' && req.path === '/worker_data_url.get') {
|
|
140
|
+
res.status(200).json({
|
|
141
|
+
state: JSON.stringify({}),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else if (req.method === 'GET' && req.path === '/internal/snap-ins.get') {
|
|
145
|
+
res.status(200).json({
|
|
146
|
+
snap_in: {
|
|
147
|
+
imports: [{ name: 'test_import_slug' }],
|
|
148
|
+
snap_in_version: { slug: 'test_snap_in_slug' },
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
else if (req.method === 'GET' &&
|
|
153
|
+
req.path === '/internal/airdrop.artifacts.upload-url') {
|
|
154
|
+
const artifactId = `artifact-${Date.now()}-${Math.random()
|
|
155
|
+
.toString(36)
|
|
156
|
+
.substr(2, 9)}`;
|
|
157
|
+
res.status(200).json({
|
|
158
|
+
upload_url: `${this.baseUrl}/file-upload-url`,
|
|
159
|
+
artifact_id: artifactId,
|
|
160
|
+
form_data: [],
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
res.status(200).json({ success: true });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
getRouteKey(method, path) {
|
|
168
|
+
return `${method.toUpperCase()}:${path}`;
|
|
169
|
+
}
|
|
170
|
+
setRoute(config) {
|
|
171
|
+
const { path, method, status, body, bodyBuffer, retry, succeedThenFail, headers, delay, } = config;
|
|
172
|
+
const key = this.getRouteKey(method, path);
|
|
173
|
+
if (retry || succeedThenFail) {
|
|
174
|
+
this.requestCounts.set(key, 0);
|
|
175
|
+
}
|
|
176
|
+
this.routeHandlers.set(key, (req, res) => {
|
|
177
|
+
const sendResponse = (responseDelay) => {
|
|
178
|
+
const send = () => {
|
|
179
|
+
var _a, _b, _c;
|
|
180
|
+
if (succeedThenFail) {
|
|
181
|
+
const currentCount = this.requestCounts.get(key) || 0;
|
|
182
|
+
this.requestCounts.set(key, currentCount + 1);
|
|
183
|
+
if (currentCount < succeedThenFail.successCount) {
|
|
184
|
+
if (headers) {
|
|
185
|
+
res.set(headers);
|
|
186
|
+
}
|
|
187
|
+
if (bodyBuffer !== undefined) {
|
|
188
|
+
res.status(status).buffer(bodyBuffer);
|
|
189
|
+
}
|
|
190
|
+
else if (body !== undefined) {
|
|
191
|
+
res.status(status).json(body);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
this.defaultRouteHandler(req, res);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
const errorStatus = (_a = succeedThenFail.errorStatus) !== null && _a !== void 0 ? _a : 400;
|
|
199
|
+
if (succeedThenFail.errorBody !== undefined) {
|
|
200
|
+
res.status(errorStatus).json(succeedThenFail.errorBody);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
res.status(errorStatus).send();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else if (retry) {
|
|
208
|
+
const currentCount = this.requestCounts.get(key) || 0;
|
|
209
|
+
const failureCount = (_b = retry.failureCount) !== null && _b !== void 0 ? _b : 4;
|
|
210
|
+
const errorStatus = (_c = retry.errorStatus) !== null && _c !== void 0 ? _c : 500;
|
|
211
|
+
if (currentCount < failureCount) {
|
|
212
|
+
this.requestCounts.set(key, currentCount + 1);
|
|
213
|
+
const sendFailure = () => {
|
|
214
|
+
if (retry.headers) {
|
|
215
|
+
res.set(retry.headers);
|
|
216
|
+
}
|
|
217
|
+
if (retry.errorBody !== undefined) {
|
|
218
|
+
res.status(errorStatus).json(retry.errorBody);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
res.status(errorStatus).send();
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
if (retry.delay) {
|
|
225
|
+
setTimeout(sendFailure, retry.delay);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
sendFailure();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.requestCounts.set(key, currentCount + 1);
|
|
233
|
+
if (headers) {
|
|
234
|
+
res.set(headers);
|
|
235
|
+
}
|
|
236
|
+
if (bodyBuffer !== undefined) {
|
|
237
|
+
res.status(status).buffer(bodyBuffer);
|
|
238
|
+
}
|
|
239
|
+
else if (body !== undefined) {
|
|
240
|
+
res.status(status).json(body);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
this.defaultRouteHandler(req, res);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
if (headers) {
|
|
249
|
+
res.set(headers);
|
|
250
|
+
}
|
|
251
|
+
if (bodyBuffer !== undefined) {
|
|
252
|
+
res.status(status).buffer(bodyBuffer);
|
|
253
|
+
}
|
|
254
|
+
else if (body !== undefined) {
|
|
255
|
+
res.status(status).json(body);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
res.status(status).send();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
if (responseDelay) {
|
|
263
|
+
setTimeout(send, responseDelay);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
send();
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
sendResponse(delay);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/** Restores default handlers and clears request tracking data. */
|
|
273
|
+
resetRoutes() {
|
|
274
|
+
this.routeHandlers.clear();
|
|
275
|
+
this.requestCounts.clear();
|
|
276
|
+
this.requests = [];
|
|
277
|
+
}
|
|
278
|
+
getLastRequest() {
|
|
279
|
+
if (this.requests.length === 0) {
|
|
280
|
+
return undefined;
|
|
281
|
+
}
|
|
282
|
+
return this.requests[this.requests.length - 1];
|
|
283
|
+
}
|
|
284
|
+
/** POST requests to the platform callback URL, i.e. emitted events. */
|
|
285
|
+
getCallbackRequests() {
|
|
286
|
+
return this.requests.filter((req) => req.method.toUpperCase() === 'POST' && req.url.includes('callback_url'));
|
|
287
|
+
}
|
|
288
|
+
getRequestCount(method, path) {
|
|
289
|
+
return this.getRequests(method, path).length;
|
|
290
|
+
}
|
|
291
|
+
getRequests(method, path) {
|
|
292
|
+
const pathWithoutQuery = path.split('?')[0];
|
|
293
|
+
return this.requests.filter((req) => req.method.toUpperCase() === method.toUpperCase() &&
|
|
294
|
+
req.url.split('?')[0] === pathWithoutQuery);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
exports.MockServer = MockServer;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ExtractionAdapter } from '../multithreading/adapters/extraction-adapter';
|
|
2
|
+
import { LoadingAdapter } from '../multithreading/adapters/loading-adapter';
|
|
3
|
+
import { AirSyncEvent } from '../types/extraction';
|
|
4
|
+
import { FileToLoad } from '../types/loading';
|
|
5
|
+
import { SpawnOptions } from '../types/workers';
|
|
6
|
+
export interface TestAdapterParams<ConnectorState> {
|
|
7
|
+
event: AirSyncEvent;
|
|
8
|
+
initialState: ConnectorState;
|
|
9
|
+
options?: SpawnOptions;
|
|
10
|
+
}
|
|
11
|
+
export interface TestLoadingAdapterParams<ConnectorState> extends TestAdapterParams<ConnectorState> {
|
|
12
|
+
/** Transformer files to resume from, as if a START_* event had set them. */
|
|
13
|
+
filesToLoad?: FileToLoad[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds an extraction adapter for connector tests without fetching state.
|
|
17
|
+
* Platform calls still go to the event's URLs; point them at a MockServer.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createTestExtractionAdapter<ConnectorState>({ event, initialState, options, }: TestAdapterParams<ConnectorState>): ExtractionAdapter<ConnectorState>;
|
|
20
|
+
/** Loading counterpart of {@link createTestExtractionAdapter}. */
|
|
21
|
+
export declare function createTestLoadingAdapter<ConnectorState>({ event, initialState, filesToLoad, options, }: TestLoadingAdapterParams<ConnectorState>): LoadingAdapter<ConnectorState>;
|
|
22
|
+
//# sourceMappingURL=test-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-adapters.d.ts","sourceRoot":"","sources":["../../src/testing/test-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,iBAAiB,CAAC,cAAc;IAC/C,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,EAAE,cAAc,CAAC;IAC7B,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB,CAAC,cAAc,CACtD,SAAQ,iBAAiB,CAAC,cAAc,CAAC;IACzC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,EAC1D,KAAK,EACL,YAAY,EACZ,OAAO,GACR,EAAE,iBAAiB,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAOvE;AAED,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,EACvD,KAAK,EACL,YAAY,EACZ,WAAW,EACX,OAAO,GACR,EAAE,wBAAwB,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,CAU3E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTestExtractionAdapter = createTestExtractionAdapter;
|
|
4
|
+
exports.createTestLoadingAdapter = createTestLoadingAdapter;
|
|
5
|
+
const extraction_adapter_1 = require("../multithreading/adapters/extraction-adapter");
|
|
6
|
+
const loading_adapter_1 = require("../multithreading/adapters/loading-adapter");
|
|
7
|
+
const extraction_state_1 = require("../state/extraction-state");
|
|
8
|
+
const loading_state_1 = require("../state/loading-state");
|
|
9
|
+
/**
|
|
10
|
+
* Builds an extraction adapter for connector tests without fetching state.
|
|
11
|
+
* Platform calls still go to the event's URLs; point them at a MockServer.
|
|
12
|
+
*/
|
|
13
|
+
function createTestExtractionAdapter({ event, initialState, options, }) {
|
|
14
|
+
const adapterState = new extraction_state_1.ExtractionState({
|
|
15
|
+
event,
|
|
16
|
+
initialState,
|
|
17
|
+
options,
|
|
18
|
+
});
|
|
19
|
+
return new extraction_adapter_1.ExtractionAdapter({ event, adapterState, options });
|
|
20
|
+
}
|
|
21
|
+
/** Loading counterpart of {@link createTestExtractionAdapter}. */
|
|
22
|
+
function createTestLoadingAdapter({ event, initialState, filesToLoad, options, }) {
|
|
23
|
+
const adapterState = new loading_state_1.LoadingState({
|
|
24
|
+
event,
|
|
25
|
+
initialState,
|
|
26
|
+
options,
|
|
27
|
+
});
|
|
28
|
+
if (filesToLoad) {
|
|
29
|
+
adapterState.sdkState.fromDevRev = { filesToLoad };
|
|
30
|
+
}
|
|
31
|
+
return new loading_adapter_1.LoadingAdapter({ event, adapterState, options });
|
|
32
|
+
}
|
package/dist/types/common.d.ts
CHANGED
|
@@ -1,47 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* ErrorLevel is an enum that represents the level of an error.
|
|
4
|
-
* @deprecated
|
|
5
|
-
*/
|
|
6
|
-
export declare enum ErrorLevel {
|
|
7
|
-
Warning = "WARNING",
|
|
8
|
-
Error = "ERROR",
|
|
9
|
-
Info = "INFO"
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* ErrorRecord is an interface that defines the structure of an error record.
|
|
13
|
-
*/
|
|
1
|
+
import { AirSyncErrorCode } from './errors';
|
|
14
2
|
export interface ErrorRecord {
|
|
15
3
|
message: string;
|
|
4
|
+
/** Platform-recognized condition; when set, it replaces the wire message. */
|
|
5
|
+
code?: AirSyncErrorCode;
|
|
16
6
|
}
|
|
17
|
-
/**
|
|
18
|
-
* LogRecord is an interface that defines the structure of a log record.
|
|
19
|
-
* @deprecated
|
|
20
|
-
*/
|
|
21
|
-
export interface LogRecord {
|
|
22
|
-
level: ErrorLevel;
|
|
23
|
-
message: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* AdapterUpdateParams is an interface that defines the structure of the parameters that can be passed to the update adapter.
|
|
27
|
-
* @deprecated
|
|
28
|
-
*/
|
|
29
|
-
export interface AdapterUpdateParams {
|
|
30
|
-
artifact?: Artifact;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* InitialDomainMapping is an interface that defines the structure of the initial domain mapping.
|
|
34
|
-
*/
|
|
35
7
|
export interface InitialDomainMapping {
|
|
36
8
|
starting_recipe_blueprint?: object;
|
|
37
9
|
additional_mappings?: object;
|
|
38
10
|
}
|
|
39
|
-
/**
|
|
40
|
-
* SyncMode is an enum that defines the different modes of sync that can be used by the external extractor.
|
|
41
|
-
* It can be either INITIAL, INCREMENTAL or LOADING. INITIAL mode is used for
|
|
42
|
-
* the first/initial import, while INCREMENTAL mode is used for doing syncs. LOADING mode is used for
|
|
43
|
-
* loading data from DevRev to the external system.
|
|
44
|
-
*/
|
|
11
|
+
/** INITIAL = first import, INCREMENTAL = subsequent syncs, LOADING = DevRev to external system. */
|
|
45
12
|
export declare enum SyncMode {
|
|
46
13
|
INITIAL = "INITIAL",
|
|
47
14
|
INCREMENTAL = "INCREMENTAL",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,mGAAmG;AACnG,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;CACpB"}
|
package/dist/types/common.js
CHANGED
|
@@ -1,22 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SyncMode =
|
|
4
|
-
/**
|
|
5
|
-
* ErrorLevel is an enum that represents the level of an error.
|
|
6
|
-
* @deprecated
|
|
7
|
-
*/
|
|
8
|
-
var ErrorLevel;
|
|
9
|
-
(function (ErrorLevel) {
|
|
10
|
-
ErrorLevel["Warning"] = "WARNING";
|
|
11
|
-
ErrorLevel["Error"] = "ERROR";
|
|
12
|
-
ErrorLevel["Info"] = "INFO";
|
|
13
|
-
})(ErrorLevel || (exports.ErrorLevel = ErrorLevel = {}));
|
|
14
|
-
/**
|
|
15
|
-
* SyncMode is an enum that defines the different modes of sync that can be used by the external extractor.
|
|
16
|
-
* It can be either INITIAL, INCREMENTAL or LOADING. INITIAL mode is used for
|
|
17
|
-
* the first/initial import, while INCREMENTAL mode is used for doing syncs. LOADING mode is used for
|
|
18
|
-
* loading data from DevRev to the external system.
|
|
19
|
-
*/
|
|
3
|
+
exports.SyncMode = void 0;
|
|
4
|
+
/** INITIAL = first import, INCREMENTAL = subsequent syncs, LOADING = DevRev to external system. */
|
|
20
5
|
var SyncMode;
|
|
21
6
|
(function (SyncMode) {
|
|
22
7
|
SyncMode["INITIAL"] = "INITIAL";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes the platform reacts to (e.g. stopping periodic syncs). Set them
|
|
3
|
+
* on `ErrorRecord.code`; the platform matches the code exactly, so the SDK
|
|
4
|
+
* sends it as the whole wire message.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum AirSyncErrorCode {
|
|
7
|
+
EXTERNAL_SYNC_UNIT_DELETED = "EXTERNAL_SYNC_UNIT_DELETED",
|
|
8
|
+
EXTERNAL_SYNC_UNIT_DEACTIVATED = "EXTERNAL_SYNC_UNIT_DEACTIVATED",
|
|
9
|
+
USER_DELETED = "USER_DELETED",
|
|
10
|
+
EXTERNAL_SYSTEM_NO_ACCESS = "EXTERNAL_SYSTEM_NO_ACCESS",
|
|
11
|
+
EXTERNAL_SYSTEM_NO_PERMISSION = "EXTERNAL_SYSTEM_NO_PERMISSION",
|
|
12
|
+
HISTORICAL_DATA_EXTRACTION_DONE = "HISTORICAL_DATA_EXTRACTION_DONE"
|
|
13
|
+
}
|
|
14
|
+
export declare function formatErrorCode(code: AirSyncErrorCode): string;
|
|
15
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,oBAAY,gBAAgB;IAG1B,0BAA0B,+BAA+B;IACzD,8BAA8B,mCAAmC;IACjE,YAAY,iBAAiB;IAG7B,yBAAyB,8BAA8B;IAEvD,6BAA6B,kCAAkC;IAE/D,+BAA+B,oCAAoC;CACpE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AirSyncErrorCode = void 0;
|
|
4
|
+
exports.formatErrorCode = formatErrorCode;
|
|
5
|
+
const ERROR_PREFIX = 'ERROR_CODE';
|
|
6
|
+
const ERROR_DELIMITER = '=';
|
|
7
|
+
/**
|
|
8
|
+
* Error codes the platform reacts to (e.g. stopping periodic syncs). Set them
|
|
9
|
+
* on `ErrorRecord.code`; the platform matches the code exactly, so the SDK
|
|
10
|
+
* sends it as the whole wire message.
|
|
11
|
+
*/
|
|
12
|
+
var AirSyncErrorCode;
|
|
13
|
+
(function (AirSyncErrorCode) {
|
|
14
|
+
// Persistent conditions (system deleted, deactivated, access permanently
|
|
15
|
+
// revoked) that require stopping periodic syncs, not transient failures.
|
|
16
|
+
AirSyncErrorCode["EXTERNAL_SYNC_UNIT_DELETED"] = "EXTERNAL_SYNC_UNIT_DELETED";
|
|
17
|
+
AirSyncErrorCode["EXTERNAL_SYNC_UNIT_DEACTIVATED"] = "EXTERNAL_SYNC_UNIT_DEACTIVATED";
|
|
18
|
+
AirSyncErrorCode["USER_DELETED"] = "USER_DELETED";
|
|
19
|
+
// Could not find an accessible resource in the source system.
|
|
20
|
+
AirSyncErrorCode["EXTERNAL_SYSTEM_NO_ACCESS"] = "EXTERNAL_SYSTEM_NO_ACCESS";
|
|
21
|
+
// The user is missing a required permission.
|
|
22
|
+
AirSyncErrorCode["EXTERNAL_SYSTEM_NO_PERMISSION"] = "EXTERNAL_SYSTEM_NO_PERMISSION";
|
|
23
|
+
// The historical periodic sync reached the end; nothing left to extract.
|
|
24
|
+
AirSyncErrorCode["HISTORICAL_DATA_EXTRACTION_DONE"] = "HISTORICAL_DATA_EXTRACTION_DONE";
|
|
25
|
+
})(AirSyncErrorCode || (exports.AirSyncErrorCode = AirSyncErrorCode = {}));
|
|
26
|
+
function formatErrorCode(code) {
|
|
27
|
+
return `${ERROR_PREFIX}${ERROR_DELIMITER}${code}`;
|
|
28
|
+
}
|