@lobu/connector-sdk 11.1.0 → 11.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/http-client.d.ts +66 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +129 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/pagination.d.ts +42 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +39 -0
- package/dist/pagination.js.map +1 -0
- package/dist/sleep.d.ts +2 -0
- package/dist/sleep.d.ts.map +1 -0
- package/dist/sleep.js +4 -0
- package/dist/sleep.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth-aware HTTP client for connectors.
|
|
3
|
+
*
|
|
4
|
+
* Small fetch-based helper that centralizes the boilerplate every API-backed
|
|
5
|
+
* connector hand-rolls: `Authorization: Bearer` headers, `withHttpRetry`
|
|
6
|
+
* wrapping (exponential backoff with jitter), bounded honoring of 429
|
|
7
|
+
* `Retry-After`, and descriptive errors that include the status code and a
|
|
8
|
+
* truncated response body.
|
|
9
|
+
*/
|
|
10
|
+
/** Error thrown for non-2xx responses. Message: `<prefix> <METHOD> <url> failed (<status>): <truncated body>`. */
|
|
11
|
+
export declare class HttpStatusError extends Error {
|
|
12
|
+
readonly status: number;
|
|
13
|
+
readonly statusText: string;
|
|
14
|
+
readonly url: string;
|
|
15
|
+
readonly method: string;
|
|
16
|
+
/** Response body, truncated to the first 500 characters. */
|
|
17
|
+
readonly bodyText: string;
|
|
18
|
+
constructor(params: {
|
|
19
|
+
prefix: string;
|
|
20
|
+
method: string;
|
|
21
|
+
url: string;
|
|
22
|
+
status: number;
|
|
23
|
+
statusText: string;
|
|
24
|
+
bodyText: string;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
interface HttpClientRetryOptions {
|
|
28
|
+
operation?: string;
|
|
29
|
+
context?: Record<string, any>;
|
|
30
|
+
onRetry?: (error: Error, attempt: number) => void;
|
|
31
|
+
}
|
|
32
|
+
export interface CreateHttpClientOptions {
|
|
33
|
+
/**
|
|
34
|
+
* Called once per request; a truthy return value is sent as
|
|
35
|
+
* `Authorization: Bearer <token>` (unless the request already sets one).
|
|
36
|
+
*/
|
|
37
|
+
getAccessToken?: () => string | null | undefined | Promise<string | null | undefined>;
|
|
38
|
+
/** Static headers applied to every request (per-request headers win). */
|
|
39
|
+
headers?: Record<string, string>;
|
|
40
|
+
/** `withHttpRetry` options, or `false` to disable retrying entirely. */
|
|
41
|
+
retry?: HttpClientRetryOptions | false;
|
|
42
|
+
/** Prefix for error messages, e.g. `'Spotify API'`. Default `'HTTP'`. */
|
|
43
|
+
errorPrefix?: string;
|
|
44
|
+
/** Upper bound when honoring a 429 `Retry-After` header. Default 30s. */
|
|
45
|
+
maxRetryAfterMs?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface HttpClient {
|
|
48
|
+
/**
|
|
49
|
+
* Fetch with auth + retry, resolving with the raw `Response` for non-2xx
|
|
50
|
+
* statuses so callers can keep their own `response.ok` handling. Transient
|
|
51
|
+
* statuses (429/5xx) still throw to drive the retry loop, so they surface
|
|
52
|
+
* as a thrown `HttpStatusError` once retries are exhausted.
|
|
53
|
+
*/
|
|
54
|
+
raw(url: string, init?: RequestInit): Promise<Response>;
|
|
55
|
+
/** Fetch with auth + retry; throws `HttpStatusError` on any non-2xx status. */
|
|
56
|
+
request(url: string, init?: RequestInit): Promise<Response>;
|
|
57
|
+
/** `request()` + parse the response body as JSON (any method via `init`). */
|
|
58
|
+
json<T>(url: string, init?: RequestInit): Promise<T>;
|
|
59
|
+
/** GET returning parsed JSON. */
|
|
60
|
+
get<T>(url: string, init?: RequestInit): Promise<T>;
|
|
61
|
+
/** POST `body` as JSON (unless a Content-Type is supplied) returning parsed JSON. */
|
|
62
|
+
post<T>(url: string, body?: unknown, init?: RequestInit): Promise<T>;
|
|
63
|
+
}
|
|
64
|
+
export declare function createHttpClient(options?: CreateHttpClientOptions): HttpClient;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,kHAAkH;AAClH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB;CAWF;AAED,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACtF,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wEAAwE;IACxE,KAAK,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;IACvC,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,+EAA+E;IAC/E,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,6EAA6E;IAC7E,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACrD,iCAAiC;IACjC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpD,qFAAqF;IACrF,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACtE;AAYD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,UAAU,CA6FlF"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth-aware HTTP client for connectors.
|
|
3
|
+
*
|
|
4
|
+
* Small fetch-based helper that centralizes the boilerplate every API-backed
|
|
5
|
+
* connector hand-rolls: `Authorization: Bearer` headers, `withHttpRetry`
|
|
6
|
+
* wrapping (exponential backoff with jitter), bounded honoring of 429
|
|
7
|
+
* `Retry-After`, and descriptive errors that include the status code and a
|
|
8
|
+
* truncated response body.
|
|
9
|
+
*/
|
|
10
|
+
import { withHttpRetry } from './retry.js';
|
|
11
|
+
import { sleep } from './sleep.js';
|
|
12
|
+
/**
|
|
13
|
+
* Statuses treated as transient: the client throws an `HttpStatusError` for
|
|
14
|
+
* these so `withHttpRetry` can retry them (its keyword classifier recognizes
|
|
15
|
+
* the status code embedded in the message).
|
|
16
|
+
*/
|
|
17
|
+
const TRANSIENT_STATUSES = new Set([429, 500, 502, 503, 504]);
|
|
18
|
+
const BODY_PREVIEW_CHARS = 500;
|
|
19
|
+
const DEFAULT_MAX_RETRY_AFTER_MS = 30_000;
|
|
20
|
+
/** Error thrown for non-2xx responses. Message: `<prefix> <METHOD> <url> failed (<status>): <truncated body>`. */
|
|
21
|
+
export class HttpStatusError extends Error {
|
|
22
|
+
status;
|
|
23
|
+
statusText;
|
|
24
|
+
url;
|
|
25
|
+
method;
|
|
26
|
+
/** Response body, truncated to the first 500 characters. */
|
|
27
|
+
bodyText;
|
|
28
|
+
constructor(params) {
|
|
29
|
+
super(`${params.prefix} ${params.method} ${params.url} failed (${params.status}): ${params.bodyText}`);
|
|
30
|
+
this.name = 'HttpStatusError';
|
|
31
|
+
this.status = params.status;
|
|
32
|
+
this.statusText = params.statusText;
|
|
33
|
+
this.url = params.url;
|
|
34
|
+
this.method = params.method;
|
|
35
|
+
this.bodyText = params.bodyText;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function parseRetryAfterMs(value) {
|
|
39
|
+
if (!value)
|
|
40
|
+
return null;
|
|
41
|
+
const seconds = Number(value);
|
|
42
|
+
if (Number.isFinite(seconds)) {
|
|
43
|
+
return seconds > 0 ? seconds * 1000 : null;
|
|
44
|
+
}
|
|
45
|
+
const deltaMs = Date.parse(value) - Date.now();
|
|
46
|
+
return Number.isFinite(deltaMs) && deltaMs > 0 ? deltaMs : null;
|
|
47
|
+
}
|
|
48
|
+
export function createHttpClient(options = {}) {
|
|
49
|
+
const errorPrefix = options.errorPrefix ?? 'HTTP';
|
|
50
|
+
const maxRetryAfterMs = options.maxRetryAfterMs ?? DEFAULT_MAX_RETRY_AFTER_MS;
|
|
51
|
+
const retryEnabled = options.retry !== false;
|
|
52
|
+
const retryOptions = options.retry === false ? undefined : options.retry;
|
|
53
|
+
async function buildHeaders(init) {
|
|
54
|
+
const headers = new Headers(options.headers);
|
|
55
|
+
new Headers(init?.headers).forEach((value, key) => {
|
|
56
|
+
headers.set(key, value);
|
|
57
|
+
});
|
|
58
|
+
if (options.getAccessToken && !headers.has('authorization')) {
|
|
59
|
+
const token = await options.getAccessToken();
|
|
60
|
+
if (token)
|
|
61
|
+
headers.set('Authorization', `Bearer ${token}`);
|
|
62
|
+
}
|
|
63
|
+
return headers;
|
|
64
|
+
}
|
|
65
|
+
async function statusError(response, method, url) {
|
|
66
|
+
let bodyText = '';
|
|
67
|
+
try {
|
|
68
|
+
bodyText = await response.text();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
/* body unavailable — keep the status-only message */
|
|
72
|
+
}
|
|
73
|
+
if (bodyText.length > BODY_PREVIEW_CHARS) {
|
|
74
|
+
bodyText = `${bodyText.slice(0, BODY_PREVIEW_CHARS)}…`;
|
|
75
|
+
}
|
|
76
|
+
return new HttpStatusError({
|
|
77
|
+
prefix: errorPrefix,
|
|
78
|
+
method,
|
|
79
|
+
url,
|
|
80
|
+
status: response.status,
|
|
81
|
+
statusText: response.statusText,
|
|
82
|
+
bodyText,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async function attempt(url, init, throwOnAnyError) {
|
|
86
|
+
const method = (init?.method ?? 'GET').toUpperCase();
|
|
87
|
+
const headers = await buildHeaders(init);
|
|
88
|
+
const response = await fetch(url, { ...init, headers });
|
|
89
|
+
if (response.ok)
|
|
90
|
+
return response;
|
|
91
|
+
if (TRANSIENT_STATUSES.has(response.status)) {
|
|
92
|
+
const error = await statusError(response, method, url);
|
|
93
|
+
if (response.status === 429 && retryEnabled) {
|
|
94
|
+
const retryAfterMs = parseRetryAfterMs(response.headers.get('Retry-After'));
|
|
95
|
+
if (retryAfterMs)
|
|
96
|
+
await sleep(Math.min(retryAfterMs, maxRetryAfterMs));
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
if (throwOnAnyError)
|
|
101
|
+
throw await statusError(response, method, url);
|
|
102
|
+
return response;
|
|
103
|
+
}
|
|
104
|
+
function withRetry(fn) {
|
|
105
|
+
if (!retryEnabled)
|
|
106
|
+
return fn();
|
|
107
|
+
return withHttpRetry(fn, { operation: `${errorPrefix} request`, ...retryOptions });
|
|
108
|
+
}
|
|
109
|
+
const raw = (url, init) => withRetry(() => attempt(url, init, false));
|
|
110
|
+
const request = (url, init) => withRetry(() => attempt(url, init, true));
|
|
111
|
+
const json = async (url, init) => {
|
|
112
|
+
const response = await request(url, init);
|
|
113
|
+
return (await response.json());
|
|
114
|
+
};
|
|
115
|
+
const get = (url, init) => json(url, { ...init, method: 'GET' });
|
|
116
|
+
const post = (url, body, init = {}) => {
|
|
117
|
+
const headers = new Headers(init.headers);
|
|
118
|
+
if (!headers.has('content-type'))
|
|
119
|
+
headers.set('Content-Type', 'application/json');
|
|
120
|
+
return json(url, {
|
|
121
|
+
...init,
|
|
122
|
+
method: 'POST',
|
|
123
|
+
headers,
|
|
124
|
+
body: body === undefined ? init.body : JSON.stringify(body),
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
return { raw, request, json, get, post };
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,11 @@ export { IDENTITY } from './connector-types.js';
|
|
|
10
10
|
import { AssuranceLevel, assuranceMeets, AutoCreateWhenRule, CLAIM_COLLISION_SEMANTIC_TYPE, ClaimCollisionPayload, ConnectorFact, ConnectorIdentityCapability, DerivedFromProvenance, DerivedRelationshipMetadata, FactEventMetadata, IDENTITY_FACT_SEMANTIC_TYPE, RelationshipTypeIdentityMetadata } from './identity-types.js';
|
|
11
11
|
export { AssuranceLevel, assuranceMeets, AutoCreateWhenRule, CLAIM_COLLISION_SEMANTIC_TYPE, ClaimCollisionPayload, ConnectorFact, ConnectorIdentityCapability, DerivedFromProvenance, DerivedRelationshipMetadata, FactEventMetadata, IDENTITY_FACT_SEMANTIC_TYPE, RelationshipTypeIdentityMetadata, };
|
|
12
12
|
export { normalizeAuthUserId, normalizeEmail, normalizeGithubLogin, normalizeGithubRepoFullName, normalizeGoogleContactId, normalizeNumericId, normalizeIdentifier, normalizePhone, normalizeSlackUserId, normalizeWaJid, } from './identity-normalize.js';
|
|
13
|
+
export type { CreateHttpClientOptions, HttpClient } from './http-client.js';
|
|
14
|
+
export { createHttpClient, HttpStatusError } from './http-client.js';
|
|
13
15
|
export { sdkLogger, sdkLogger as logger } from './logger.js';
|
|
16
|
+
export type { CursorPage, OffsetPage, PaginateByCursorOptions, PaginateByOffsetOptions, } from './pagination.js';
|
|
17
|
+
export { paginateByCursor, paginateByOffset } from './pagination.js';
|
|
14
18
|
export { withHttpRetry } from './retry.js';
|
|
15
19
|
export { calculateEngagementScore } from './scoring.js';
|
|
16
20
|
export type { WatcherTimeGranularity } from './watcher-time.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,WAAW,EACX,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,GAAG,EACH,SAAS,EACT,OAAO,EACP,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAShD,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,EACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,CAAC;AACF,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAE7D,YAAY,EACV,UAAU,EACV,UAAU,EACV,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,gCAAgC,EAChC,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAM3B,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EACL,qBAAqB,EACrB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAMtC,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,8 +18,10 @@ export { IDENTITY } from './connector-types.js';
|
|
|
18
18
|
import { AssuranceLevel, assuranceMeets, AutoCreateWhenRule, CLAIM_COLLISION_SEMANTIC_TYPE, ClaimCollisionPayload, ConnectorFact, ConnectorIdentityCapability, DerivedFromProvenance, DerivedRelationshipMetadata, FactEventMetadata, IDENTITY_FACT_SEMANTIC_TYPE, RelationshipTypeIdentityMetadata, } from './identity-types.js';
|
|
19
19
|
export { AssuranceLevel, assuranceMeets, AutoCreateWhenRule, CLAIM_COLLISION_SEMANTIC_TYPE, ClaimCollisionPayload, ConnectorFact, ConnectorIdentityCapability, DerivedFromProvenance, DerivedRelationshipMetadata, FactEventMetadata, IDENTITY_FACT_SEMANTIC_TYPE, RelationshipTypeIdentityMetadata, };
|
|
20
20
|
export { normalizeAuthUserId, normalizeEmail, normalizeGithubLogin, normalizeGithubRepoFullName, normalizeGoogleContactId, normalizeNumericId, normalizeIdentifier, normalizePhone, normalizeSlackUserId, normalizeWaJid, } from './identity-normalize.js';
|
|
21
|
+
export { createHttpClient, HttpStatusError } from './http-client.js';
|
|
21
22
|
// Logger
|
|
22
23
|
export { sdkLogger, sdkLogger as logger } from './logger.js';
|
|
24
|
+
export { paginateByCursor, paginateByOffset } from './pagination.js';
|
|
23
25
|
// Retry
|
|
24
26
|
export { withHttpRetry } from './retry.js';
|
|
25
27
|
// Scoring
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAIhF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9C,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA6CxD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,sEAAsE;AACtE,2EAA2E;AAC3E,iEAAiE;AACjE,wEAAwE;AACxE,oEAAoE;AACpE,wEAAwE;AACxE,yEAAyE;AACzE,+CAA+C;AAC/C,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,CAAC;AACF,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,cAAc,GACf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAIhF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC9C,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA6CxD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,sEAAsE;AACtE,2EAA2E;AAC3E,iEAAiE;AACjE,wEAAwE;AACxE,oEAAoE;AACpE,wEAAwE;AACxE,yEAAyE;AACzE,+CAA+C;AAC/C,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,6BAA6B,EAC7B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,CAAC;AACF,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAQ7D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,UAAU;AACV,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,gCAAgC,EAChC,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,+BAA+B,EAC/B,mCAAmC,EACnC,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,qBAAqB,EACrB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAa/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAqB9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination generators for connectors.
|
|
3
|
+
*
|
|
4
|
+
* Async generators that capture the two hand-rolled pagination loops most
|
|
5
|
+
* API connectors repeat: offset/limit paging and opaque-cursor paging. Each
|
|
6
|
+
* yields one batch of items per page (including the final, possibly empty,
|
|
7
|
+
* batch) so callers keep full control over transformation, emission, and
|
|
8
|
+
* early exit (`break` stops further fetches).
|
|
9
|
+
*/
|
|
10
|
+
export interface OffsetPage<T> {
|
|
11
|
+
items: T[];
|
|
12
|
+
/** Whether another page should be fetched (e.g. `!!data.next`). */
|
|
13
|
+
hasMore: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface PaginateByOffsetOptions {
|
|
16
|
+
/** Items per page; the offset advances by this amount after each page. */
|
|
17
|
+
pageSize: number;
|
|
18
|
+
/** Maximum number of pages to fetch. Default: unbounded. */
|
|
19
|
+
maxPages?: number;
|
|
20
|
+
/** Offset for the first page. Default 0. */
|
|
21
|
+
startOffset?: number;
|
|
22
|
+
/** Optional politeness delay before each page after the first. */
|
|
23
|
+
delayMs?: number;
|
|
24
|
+
}
|
|
25
|
+
/** Yields item batches from an offset/limit-paginated endpoint. */
|
|
26
|
+
export declare function paginateByOffset<T>(fetchPage: (offset: number, pageSize: number) => Promise<OffsetPage<T>>, options: PaginateByOffsetOptions): AsyncGenerator<T[], void, void>;
|
|
27
|
+
export interface CursorPage<T, C = string> {
|
|
28
|
+
items: T[];
|
|
29
|
+
/** Cursor for the next page; `null`/`undefined` stops pagination. */
|
|
30
|
+
nextCursor: C | null | undefined;
|
|
31
|
+
}
|
|
32
|
+
export interface PaginateByCursorOptions<C = string> {
|
|
33
|
+
/** Maximum number of pages to fetch. Default: unbounded. */
|
|
34
|
+
maxPages?: number;
|
|
35
|
+
/** Cursor passed to the first `fetchPage` call. Default `null`. */
|
|
36
|
+
initialCursor?: C | null;
|
|
37
|
+
/** Optional politeness delay before each page after the first. */
|
|
38
|
+
delayMs?: number;
|
|
39
|
+
}
|
|
40
|
+
/** Yields item batches from a cursor/token-paginated endpoint. */
|
|
41
|
+
export declare function paginateByCursor<T, C = string>(fetchPage: (cursor: C | null) => Promise<CursorPage<T, C>>, options?: PaginateByCursorOptions<C>): AsyncGenerator<T[], void, void>;
|
|
42
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,wBAAuB,gBAAgB,CAAC,CAAC,EACvC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvE,OAAO,EAAE,uBAAuB,GAC/B,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAWjC;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM;IACvC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,qEAAqE;IACrE,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,MAAM;IACjD,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACzB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,wBAAuB,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EACnD,SAAS,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1D,OAAO,GAAE,uBAAuB,CAAC,CAAC,CAAM,GACvC,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAWjC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pagination generators for connectors.
|
|
3
|
+
*
|
|
4
|
+
* Async generators that capture the two hand-rolled pagination loops most
|
|
5
|
+
* API connectors repeat: offset/limit paging and opaque-cursor paging. Each
|
|
6
|
+
* yields one batch of items per page (including the final, possibly empty,
|
|
7
|
+
* batch) so callers keep full control over transformation, emission, and
|
|
8
|
+
* early exit (`break` stops further fetches).
|
|
9
|
+
*/
|
|
10
|
+
import { sleep } from './sleep.js';
|
|
11
|
+
/** Yields item batches from an offset/limit-paginated endpoint. */
|
|
12
|
+
export async function* paginateByOffset(fetchPage, options) {
|
|
13
|
+
const maxPages = options.maxPages ?? Number.POSITIVE_INFINITY;
|
|
14
|
+
let offset = options.startOffset ?? 0;
|
|
15
|
+
for (let page = 0; page < maxPages; page++) {
|
|
16
|
+
if (page > 0 && options.delayMs)
|
|
17
|
+
await sleep(options.delayMs);
|
|
18
|
+
const { items, hasMore } = await fetchPage(offset, options.pageSize);
|
|
19
|
+
yield items;
|
|
20
|
+
if (!hasMore)
|
|
21
|
+
return;
|
|
22
|
+
offset += options.pageSize;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Yields item batches from a cursor/token-paginated endpoint. */
|
|
26
|
+
export async function* paginateByCursor(fetchPage, options = {}) {
|
|
27
|
+
const maxPages = options.maxPages ?? Number.POSITIVE_INFINITY;
|
|
28
|
+
let cursor = options.initialCursor ?? null;
|
|
29
|
+
for (let page = 0; page < maxPages; page++) {
|
|
30
|
+
if (page > 0 && options.delayMs)
|
|
31
|
+
await sleep(options.delayMs);
|
|
32
|
+
const { items, nextCursor } = await fetchPage(cursor);
|
|
33
|
+
yield items;
|
|
34
|
+
if (nextCursor === null || nextCursor === undefined)
|
|
35
|
+
return;
|
|
36
|
+
cursor = nextCursor;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAmBnC,mEAAmE;AACnE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACrC,SAAuE,EACvE,OAAgC;IAEhC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC9D,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;IAEtC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO;YAAE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,KAAK,CAAC;QACZ,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC;IAC7B,CAAC;AACH,CAAC;AAiBD,kEAAkE;AAClE,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACrC,SAA0D,EAC1D,UAAsC,EAAE;IAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC;IAC9D,IAAI,MAAM,GAAa,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IAErD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO;YAAE,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;QACZ,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO;QAC5D,MAAM,GAAG,UAAU,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/dist/sleep.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
package/dist/sleep.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.js","sourceRoot":"","sources":["../src/sleep.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobu/connector-sdk",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.3.0",
|
|
4
4
|
"description": "Lobu memory SDK — build pluggable connectors for Lobu memory",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"clean": "rm -rf dist"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@lobu/core": "11.
|
|
51
|
+
"@lobu/core": "11.3.0",
|
|
52
52
|
"@sinclair/typebox": "^0.34.41",
|
|
53
53
|
"isomorphic-git": "^1.34.0",
|
|
54
54
|
"ky": "^1.14.0",
|