@openhandle/sdk 0.5.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/LICENSE +21 -0
- package/README.md +239 -0
- package/dist/errors.d.ts +26 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/operations.d.ts +1830 -0
- package/dist/generated/operations.d.ts.map +1 -0
- package/dist/generated/operations.js +2455 -0
- package/dist/generated/operations.js.map +1 -0
- package/dist/generated/public-types.d.ts +679 -0
- package/dist/generated/public-types.d.ts.map +1 -0
- package/dist/generated/public-types.js +3 -0
- package/dist/generated/public-types.js.map +1 -0
- package/dist/generated/resources.d.ts +1949 -0
- package/dist/generated/resources.d.ts.map +1 -0
- package/dist/generated/resources.js +3 -0
- package/dist/generated/resources.js.map +1 -0
- package/dist/generated/schema.d.ts +30218 -0
- package/dist/generated/schema.d.ts.map +1 -0
- package/dist/generated/schema.js +3 -0
- package/dist/generated/schema.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/references.d.ts +3 -0
- package/dist/references.d.ts.map +1 -0
- package/dist/references.js +162 -0
- package/dist/references.js.map +1 -0
- package/dist/runtime.d.ts +16 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +230 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +99 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/generated/schema.ts"],"names":[],"mappings":"AAAA,kDAAkD"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GeneratedClient } from './generated/resources.js';
|
|
2
|
+
import type { OpenHandleConfig } from './types.js';
|
|
3
|
+
export { OpenHandleError, OpenHandleReferenceError, ReferenceMismatchError, } from './errors.js';
|
|
4
|
+
export type * from './generated/public-types.js';
|
|
5
|
+
export type { components } from './generated/schema.js';
|
|
6
|
+
export type { Camelize, FetchOptions, Freshness, OpenHandleConfig, OperationOptions, OperationPage, OperationResponse, ProfileReference, RequestControls, ResourceReference, ResponseBilling, ResponseMetadata, } from './types.js';
|
|
7
|
+
declare class OpenHandleClient {
|
|
8
|
+
constructor(config: OpenHandleConfig);
|
|
9
|
+
}
|
|
10
|
+
export type OpenHandle = OpenHandleClient & GeneratedClient;
|
|
11
|
+
export declare const OpenHandle: new (config: OpenHandleConfig) => OpenHandle;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EACH,eAAe,EACf,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,aAAa,CAAC;AACrB,mBAAmB,6BAA6B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACnB,MAAM,YAAY,CAAC;AAEpB,cAAM,gBAAgB;gBACN,MAAM,EAAE,gBAAgB;CAIvC;AAED,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAC5D,eAAO,MAAM,UAAU,EAAuB,KAAK,MAAM,EAAE,gBAAgB,KAAK,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SDKRuntime } from './runtime.js';
|
|
2
|
+
export { OpenHandleError, OpenHandleReferenceError, ReferenceMismatchError, } from './errors.js';
|
|
3
|
+
class OpenHandleClient {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
const runtime = new SDKRuntime(config);
|
|
6
|
+
Object.assign(this, runtime.graph);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export const OpenHandle = OpenHandleClient;
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EACH,eAAe,EACf,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,aAAa,CAAC;AAkBrB,MAAM,gBAAgB;IAClB,YAAY,MAAwB;QAChC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;CACJ;AAGD,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AActE,eAAO,MAAM,gBAAgB,GAAI,OAAO,gBAAgB,GAAG,iBAAiB,EAAE,UAAU,MAAM,EAAE,UAAU,MAAM,KAAG,MAuClH,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { OpenHandleReferenceError, ReferenceMismatchError } from './errors.js';
|
|
2
|
+
const numericID = /^[0-9]+$/;
|
|
3
|
+
const instagramName = /^[A-Za-z0-9._]{1,30}$/;
|
|
4
|
+
const tiktokName = /^[A-Za-z0-9._]{2,24}$/;
|
|
5
|
+
const twitterName = /^[A-Za-z0-9_]{1,15}$/;
|
|
6
|
+
const shortcode = /^[A-Za-z0-9_-]+$/;
|
|
7
|
+
export const resolveReference = (input, platform, resource) => {
|
|
8
|
+
if (typeof input === 'number') {
|
|
9
|
+
throw new OpenHandleReferenceError('Platform IDs are opaque strings; numeric reference values are not accepted.');
|
|
10
|
+
}
|
|
11
|
+
if (typeof input === 'string') {
|
|
12
|
+
const value = requiredString(input);
|
|
13
|
+
return resource === 'profile' ? usernameReference(value, platform) : value;
|
|
14
|
+
}
|
|
15
|
+
if (!input || typeof input !== 'object' || Array.isArray(input)) {
|
|
16
|
+
throw new OpenHandleReferenceError('A reference must be a string or an object containing exactly one of username, id, or url.');
|
|
17
|
+
}
|
|
18
|
+
const entries = Object.entries(input).filter(([, value]) => value !== undefined);
|
|
19
|
+
if (entries.length !== 1) {
|
|
20
|
+
throw new OpenHandleReferenceError('A reference object must contain exactly one of username, id, or url.');
|
|
21
|
+
}
|
|
22
|
+
const [kind, raw] = entries[0] ?? [];
|
|
23
|
+
if (typeof raw !== 'string') {
|
|
24
|
+
throw new OpenHandleReferenceError('Reference values must be strings.');
|
|
25
|
+
}
|
|
26
|
+
const value = requiredString(raw);
|
|
27
|
+
if (kind === 'username') {
|
|
28
|
+
if (resource !== 'profile') {
|
|
29
|
+
throw new OpenHandleReferenceError(`The ${resource} resource does not accept username references.`);
|
|
30
|
+
}
|
|
31
|
+
return usernameReference(value, platform);
|
|
32
|
+
}
|
|
33
|
+
if (kind === 'id') {
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
if (kind === 'url') {
|
|
37
|
+
const resolution = resolveSocialURL(value);
|
|
38
|
+
if (resolution.platform !== platform || resolution.resource !== resource) {
|
|
39
|
+
throw new ReferenceMismatchError(platform, resource, resolution.platform, resolution.resource);
|
|
40
|
+
}
|
|
41
|
+
return resolution.identifier;
|
|
42
|
+
}
|
|
43
|
+
throw new OpenHandleReferenceError(`Unknown reference kind ${kind}.`);
|
|
44
|
+
};
|
|
45
|
+
const usernameReference = (input, platform) => {
|
|
46
|
+
const username = input.replace(/^@/, '');
|
|
47
|
+
const valid = platform === 'instagram' ? instagramName.test(username) : platform === 'tiktok' ? tiktokName.test(username) : twitterName.test(username);
|
|
48
|
+
if (!valid) {
|
|
49
|
+
throw new OpenHandleReferenceError(`Invalid ${platform} username.`);
|
|
50
|
+
}
|
|
51
|
+
return `@${username}`;
|
|
52
|
+
};
|
|
53
|
+
const resolveSocialURL = (input) => {
|
|
54
|
+
let parsed;
|
|
55
|
+
try {
|
|
56
|
+
parsed = new URL(input.includes('://') ? input : `https://${input}`);
|
|
57
|
+
}
|
|
58
|
+
catch (cause) {
|
|
59
|
+
throw new OpenHandleReferenceError(`Invalid social URL: ${cause instanceof Error ? cause.message : 'unable to parse URL'}.`);
|
|
60
|
+
}
|
|
61
|
+
if ((parsed.protocol !== 'http:' && parsed.protocol !== 'https:') || parsed.username || parsed.password) {
|
|
62
|
+
throw new OpenHandleReferenceError('Social URLs must use HTTP or HTTPS and cannot contain credentials.');
|
|
63
|
+
}
|
|
64
|
+
const host = parsed.hostname.toLowerCase().replace(/^www\./, '');
|
|
65
|
+
const parts = parsed.pathname.split('/').filter(Boolean);
|
|
66
|
+
if (host === 'instagram.com') {
|
|
67
|
+
return resolveInstagramURL(parts);
|
|
68
|
+
}
|
|
69
|
+
if (host === 'tiktok.com' || host === 'm.tiktok.com') {
|
|
70
|
+
return resolveTikTokURL(parts);
|
|
71
|
+
}
|
|
72
|
+
if (host === 'x.com' || host === 'twitter.com' || host === 'mobile.twitter.com') {
|
|
73
|
+
return resolveTwitterURL(parts);
|
|
74
|
+
}
|
|
75
|
+
throw new OpenHandleReferenceError(`Unsupported social domain ${host}.`);
|
|
76
|
+
};
|
|
77
|
+
const resolveInstagramURL = (parts) => {
|
|
78
|
+
if (parts.length === 2 && ['p', 'reel', 'tv'].includes(parts[0] ?? '') && shortcode.test(parts[1] ?? '')) {
|
|
79
|
+
return {
|
|
80
|
+
platform: 'instagram',
|
|
81
|
+
resource: 'post',
|
|
82
|
+
identifier: parts[1] ?? '',
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (parts.length === 3 && parts[0] === 'stories' && parts[1] === 'highlights' && numericID.test(parts[2] ?? '')) {
|
|
86
|
+
return {
|
|
87
|
+
platform: 'instagram',
|
|
88
|
+
resource: 'highlight',
|
|
89
|
+
identifier: parts[2] ?? '',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (parts.length === 3 && parts[0] === 'stories' && instagramName.test(parts[1] ?? '') && numericID.test(parts[2] ?? '')) {
|
|
93
|
+
return {
|
|
94
|
+
platform: 'instagram',
|
|
95
|
+
resource: 'story',
|
|
96
|
+
identifier: parts[2] ?? '',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (parts.length === 1 &&
|
|
100
|
+
instagramName.test(parts[0] ?? '') &&
|
|
101
|
+
!['p', 'reel', 'reels', 'tv', 'explore', 'accounts', 'direct', 'stories'].includes(parts[0]?.toLowerCase() ?? '')) {
|
|
102
|
+
return {
|
|
103
|
+
platform: 'instagram',
|
|
104
|
+
resource: 'profile',
|
|
105
|
+
identifier: `@${parts[0]}`,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
throw new OpenHandleReferenceError('Unsupported Instagram URL.');
|
|
109
|
+
};
|
|
110
|
+
const resolveTikTokURL = (parts) => {
|
|
111
|
+
const first = parts[0] ?? '';
|
|
112
|
+
const username = first.startsWith('@') ? first.slice(1) : '';
|
|
113
|
+
if (!tiktokName.test(username)) {
|
|
114
|
+
throw new OpenHandleReferenceError('Unsupported TikTok URL.');
|
|
115
|
+
}
|
|
116
|
+
if (parts.length === 3 && parts[1] === 'video' && numericID.test(parts[2] ?? '')) {
|
|
117
|
+
return { platform: 'tiktok', resource: 'post', identifier: parts[2] ?? '' };
|
|
118
|
+
}
|
|
119
|
+
if (parts.length === 1) {
|
|
120
|
+
return {
|
|
121
|
+
platform: 'tiktok',
|
|
122
|
+
resource: 'profile',
|
|
123
|
+
identifier: `@${username}`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
throw new OpenHandleReferenceError('Unsupported TikTok URL.');
|
|
127
|
+
};
|
|
128
|
+
const resolveTwitterURL = (parts) => {
|
|
129
|
+
if (parts.length >= 3 && parts[1]?.toLowerCase() === 'status' && twitterName.test(parts[0] ?? '') && numericID.test(parts[2] ?? '')) {
|
|
130
|
+
return {
|
|
131
|
+
platform: 'twitter',
|
|
132
|
+
resource: 'post',
|
|
133
|
+
identifier: parts[2] ?? '',
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (parts.length === 4 && parts[0] === 'i' && parts[1] === 'web' && parts[2] === 'status' && numericID.test(parts[3] ?? '')) {
|
|
137
|
+
return {
|
|
138
|
+
platform: 'twitter',
|
|
139
|
+
resource: 'post',
|
|
140
|
+
identifier: parts[3] ?? '',
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const username = parts[0] ?? '';
|
|
144
|
+
if (parts.length === 1 &&
|
|
145
|
+
twitterName.test(username) &&
|
|
146
|
+
!['home', 'explore', 'search', 'settings', 'messages', 'notifications', 'i', 'intent', 'share'].includes(username.toLowerCase())) {
|
|
147
|
+
return {
|
|
148
|
+
platform: 'twitter',
|
|
149
|
+
resource: 'profile',
|
|
150
|
+
identifier: `@${username}`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
throw new OpenHandleReferenceError('Unsupported Twitter URL.');
|
|
154
|
+
};
|
|
155
|
+
const requiredString = (input) => {
|
|
156
|
+
const value = input.trim();
|
|
157
|
+
if (!value) {
|
|
158
|
+
throw new OpenHandleReferenceError('Reference values must not be empty.');
|
|
159
|
+
}
|
|
160
|
+
return value;
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.js","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { OpenHandleConfig } from './types.js';
|
|
2
|
+
export declare class SDKRuntime {
|
|
3
|
+
readonly graph: Record<string, unknown>;
|
|
4
|
+
private readonly apiKey;
|
|
5
|
+
private readonly baseUrl;
|
|
6
|
+
private readonly fetcher;
|
|
7
|
+
private readonly maxRetries;
|
|
8
|
+
private readonly timeoutMs;
|
|
9
|
+
constructor(config: OpenHandleConfig);
|
|
10
|
+
private operationTree;
|
|
11
|
+
private materialize;
|
|
12
|
+
private platformFor;
|
|
13
|
+
private execute;
|
|
14
|
+
private request;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAyE,MAAM,YAAY,CAAC;AAa1H,qBAAa,UAAU;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,gBAAgB;IAYpC,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,WAAW;YAWL,OAAO;YAkBP,OAAO;CAuDxB"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { OpenHandleError } from './errors.js';
|
|
2
|
+
import { operations } from './generated/operations.js';
|
|
3
|
+
import { resolveReference } from './references.js';
|
|
4
|
+
const controlKeys = new Set(['maxRetries', 'signal', 'timeoutMs']);
|
|
5
|
+
export class SDKRuntime {
|
|
6
|
+
graph;
|
|
7
|
+
apiKey;
|
|
8
|
+
baseUrl;
|
|
9
|
+
fetcher;
|
|
10
|
+
maxRetries;
|
|
11
|
+
timeoutMs;
|
|
12
|
+
constructor(config) {
|
|
13
|
+
if (!config.apiKey?.trim()) {
|
|
14
|
+
throw new TypeError('OpenHandle requires a non-empty apiKey.');
|
|
15
|
+
}
|
|
16
|
+
this.apiKey = config.apiKey.trim();
|
|
17
|
+
this.baseUrl = (config.baseUrl ?? 'https://api.openhandle.dev').replace(/\/$/, '');
|
|
18
|
+
this.fetcher = config.fetch ?? globalThis.fetch;
|
|
19
|
+
this.maxRetries = config.maxRetries ?? 2;
|
|
20
|
+
this.timeoutMs = config.timeoutMs ?? 30_000;
|
|
21
|
+
this.graph = this.materialize(this.operationTree(), {});
|
|
22
|
+
}
|
|
23
|
+
operationTree() {
|
|
24
|
+
const root = { children: new Map(), operations: new Map() };
|
|
25
|
+
for (const operation of operations) {
|
|
26
|
+
let node = root;
|
|
27
|
+
for (const scope of operation.scope) {
|
|
28
|
+
let child = node.children.get(scope.name);
|
|
29
|
+
if (!child) {
|
|
30
|
+
child = { children: new Map(), operations: new Map(), scope };
|
|
31
|
+
node.children.set(scope.name, child);
|
|
32
|
+
}
|
|
33
|
+
node = child;
|
|
34
|
+
}
|
|
35
|
+
node.operations.set(operation.operation, operation);
|
|
36
|
+
}
|
|
37
|
+
return root;
|
|
38
|
+
}
|
|
39
|
+
materialize(node, bound) {
|
|
40
|
+
const value = {};
|
|
41
|
+
for (const [name, child] of node.children) {
|
|
42
|
+
if (child.scope?.parameter) {
|
|
43
|
+
value[name] = (reference) => {
|
|
44
|
+
const platform = this.platformFor(child);
|
|
45
|
+
const resolved = resolveReference(reference, platform, child.scope?.reference ?? child.scope?.name ?? name);
|
|
46
|
+
return this.materialize(child, {
|
|
47
|
+
...bound,
|
|
48
|
+
[child.scope?.parameter ?? '']: resolved,
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
value[name] = this.materialize(child, bound);
|
|
54
|
+
}
|
|
55
|
+
for (const [name, operation] of node.operations) {
|
|
56
|
+
value[name] =
|
|
57
|
+
operation.operation === 'fetch'
|
|
58
|
+
? (url, options = {}) => this.execute(operation, bound, options, url)
|
|
59
|
+
: (options = {}) => this.execute(operation, bound, options);
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
platformFor(node) {
|
|
64
|
+
let candidate = node;
|
|
65
|
+
while (candidate) {
|
|
66
|
+
for (const operation of candidate.operations.values()) {
|
|
67
|
+
return operation.scope[0]?.name ?? '';
|
|
68
|
+
}
|
|
69
|
+
candidate = candidate.children.values().next().value;
|
|
70
|
+
}
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
async execute(operation, bound, options, socialURL) {
|
|
74
|
+
const maxRetries = options.maxRetries ?? this.maxRetries;
|
|
75
|
+
let attempt = 0;
|
|
76
|
+
while (true) {
|
|
77
|
+
try {
|
|
78
|
+
return await this.request(operation, bound, options, socialURL);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
const retryable = error instanceof OpenHandleError ? error.retryable : true;
|
|
82
|
+
if (!retryable || attempt >= maxRetries || options.signal?.aborted) {
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
const retryAfter = error instanceof OpenHandleError ? error.retryAfter : undefined;
|
|
86
|
+
await delay(retryAfter ?? backoff(attempt), options.signal);
|
|
87
|
+
attempt++;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async request(operation, bound, options, socialURL) {
|
|
92
|
+
const path = operation.apiPath.replace(/\{([^}]+)\}/g, (_, parameter) => {
|
|
93
|
+
const value = bound[parameter];
|
|
94
|
+
if (!value) {
|
|
95
|
+
throw new TypeError(`Missing bound SDK reference ${parameter} for ${operation.path}.`);
|
|
96
|
+
}
|
|
97
|
+
return encodeURIComponent(value);
|
|
98
|
+
});
|
|
99
|
+
const url = new URL(`${this.baseUrl}${path}`);
|
|
100
|
+
const requestInit = {
|
|
101
|
+
headers: {
|
|
102
|
+
Accept: 'application/json',
|
|
103
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
104
|
+
'X-OpenHandle-Client': '@openhandle/sdk/0.1.0',
|
|
105
|
+
},
|
|
106
|
+
method: operation.method.toUpperCase(),
|
|
107
|
+
signal: requestSignal(options.signal, options.timeoutMs ?? this.timeoutMs),
|
|
108
|
+
};
|
|
109
|
+
if (operation.operation === 'fetch') {
|
|
110
|
+
if (typeof socialURL !== 'string' || !socialURL.trim()) {
|
|
111
|
+
throw new TypeError('fetch(url) requires a non-empty social URL.');
|
|
112
|
+
}
|
|
113
|
+
requestInit.headers = {
|
|
114
|
+
...requestInit.headers,
|
|
115
|
+
'Content-Type': 'application/json',
|
|
116
|
+
};
|
|
117
|
+
requestInit.body = JSON.stringify({
|
|
118
|
+
url: socialURL,
|
|
119
|
+
...requestValues(options),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
for (const [key, value] of Object.entries(requestValues(options))) {
|
|
124
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
125
|
+
url.searchParams.set(snakeCase(key), String(value));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const response = await this.fetcher(url, requestInit);
|
|
130
|
+
const body = await jsonBody(response);
|
|
131
|
+
if (!response.ok) {
|
|
132
|
+
throw apiError(response, body);
|
|
133
|
+
}
|
|
134
|
+
const result = camelize(body);
|
|
135
|
+
result.requestId = response.headers.get('X-Request-ID') ?? '';
|
|
136
|
+
result.billing = billingMetadata(response.headers);
|
|
137
|
+
if (operation.paginated) {
|
|
138
|
+
const nextCursor = pageCursor(result);
|
|
139
|
+
result.nextCursor = nextCursor;
|
|
140
|
+
result.hasNextPage = nextCursor !== null;
|
|
141
|
+
result.next = () => (nextCursor === null ? Promise.resolve(null) : this.execute(operation, bound, { ...options, cursor: nextCursor }));
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
const requestValues = (options) => Object.fromEntries(Object.entries(options).filter(([key]) => !controlKeys.has(key)));
|
|
147
|
+
const requestSignal = (signal, timeoutMs) => {
|
|
148
|
+
const timeout = AbortSignal.timeout(timeoutMs);
|
|
149
|
+
return signal ? AbortSignal.any([signal, timeout]) : timeout;
|
|
150
|
+
};
|
|
151
|
+
const jsonBody = async (response) => {
|
|
152
|
+
const text = await response.text();
|
|
153
|
+
if (!text) {
|
|
154
|
+
return {};
|
|
155
|
+
}
|
|
156
|
+
try {
|
|
157
|
+
return JSON.parse(text);
|
|
158
|
+
}
|
|
159
|
+
catch (cause) {
|
|
160
|
+
throw new OpenHandleError({
|
|
161
|
+
cause,
|
|
162
|
+
code: 'INVALID_RESPONSE',
|
|
163
|
+
message: 'OpenHandle returned invalid JSON.',
|
|
164
|
+
requestId: response.headers.get('X-Request-ID') ?? undefined,
|
|
165
|
+
status: response.status,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const apiError = (response, body) => {
|
|
170
|
+
const error = body && typeof body === 'object' && 'error' in body && body.error && typeof body.error === 'object' ? body.error : {};
|
|
171
|
+
return new OpenHandleError({
|
|
172
|
+
code: typeof error.code === 'string' ? error.code : `HTTP_${response.status}`,
|
|
173
|
+
details: error.details && typeof error.details === 'object' ? error.details : undefined,
|
|
174
|
+
message: typeof error.message === 'string' ? error.message : `OpenHandle request failed with status ${response.status}.`,
|
|
175
|
+
requestId: typeof error.request_id === 'string' ? error.request_id : (response.headers.get('X-Request-ID') ?? undefined),
|
|
176
|
+
retryable: typeof error.retryable === 'boolean' ? error.retryable : response.status === 429 || response.status >= 500,
|
|
177
|
+
retryAfter: retryAfterMilliseconds(response.headers.get('Retry-After')),
|
|
178
|
+
status: response.status,
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
const retryAfterMilliseconds = (value) => {
|
|
182
|
+
if (!value) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
const seconds = Number(value);
|
|
186
|
+
if (Number.isFinite(seconds)) {
|
|
187
|
+
return Math.max(0, seconds * 1_000);
|
|
188
|
+
}
|
|
189
|
+
const date = Date.parse(value);
|
|
190
|
+
return Number.isNaN(date) ? undefined : Math.max(0, date - Date.now());
|
|
191
|
+
};
|
|
192
|
+
const backoff = (attempt) => Math.min(4_000, 250 * 2 ** attempt) * (0.75 + Math.random() * 0.5);
|
|
193
|
+
const delay = (milliseconds, signal) => new Promise((resolve, reject) => {
|
|
194
|
+
const timeout = setTimeout(resolve, milliseconds);
|
|
195
|
+
signal?.addEventListener('abort', () => {
|
|
196
|
+
clearTimeout(timeout);
|
|
197
|
+
reject(signal.reason);
|
|
198
|
+
}, { once: true });
|
|
199
|
+
});
|
|
200
|
+
const billingMetadata = (headers) => ({
|
|
201
|
+
cost: headers.get('OpenHandle-Cost'),
|
|
202
|
+
datasetVersion: headers.get('OpenHandle-Dataset-Version'),
|
|
203
|
+
disposition: headerEnum(headers.get('OpenHandle-Billing-Disposition'), ['test', 'allowance', 'postpaid']),
|
|
204
|
+
environment: headerEnum(headers.get('OpenHandle-Environment'), ['test', 'live']),
|
|
205
|
+
listPrice: headers.get('OpenHandle-List-Price'),
|
|
206
|
+
});
|
|
207
|
+
const headerEnum = (value, values) => value !== null && values.includes(value) ? value : null;
|
|
208
|
+
const pageCursor = (response) => {
|
|
209
|
+
const meta = response.meta;
|
|
210
|
+
if (!meta || typeof meta !== 'object' || !('cursors' in meta)) {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
const cursors = meta.cursors;
|
|
214
|
+
if (!cursors || typeof cursors !== 'object' || !('next' in cursors)) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
return typeof cursors.next === 'string' && cursors.next ? cursors.next : null;
|
|
218
|
+
};
|
|
219
|
+
const camelize = (value) => {
|
|
220
|
+
if (Array.isArray(value)) {
|
|
221
|
+
return value.map(camelize);
|
|
222
|
+
}
|
|
223
|
+
if (!value || typeof value !== 'object') {
|
|
224
|
+
return value;
|
|
225
|
+
}
|
|
226
|
+
return Object.fromEntries(Object.entries(value).map(([key, child]) => [camelCase(key), camelize(child)]));
|
|
227
|
+
};
|
|
228
|
+
const camelCase = (value) => value.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
229
|
+
const snakeCase = (value) => value.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
|
|
230
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { paths } from './generated/schema.js';
|
|
2
|
+
export type Freshness = 'live' | '24h' | '7d' | '30d';
|
|
3
|
+
export type ProfileReference = string | {
|
|
4
|
+
username: string;
|
|
5
|
+
} | {
|
|
6
|
+
id: string;
|
|
7
|
+
} | {
|
|
8
|
+
url: string;
|
|
9
|
+
};
|
|
10
|
+
export type ResourceReference = string | {
|
|
11
|
+
id: string;
|
|
12
|
+
} | {
|
|
13
|
+
url: string;
|
|
14
|
+
};
|
|
15
|
+
export interface OpenHandleConfig {
|
|
16
|
+
/** Secret Test or Live API key. Never expose it in browser or mobile bundles. */
|
|
17
|
+
apiKey: string;
|
|
18
|
+
/** API origin. Defaults to https://api.openhandle.dev. */
|
|
19
|
+
baseUrl?: string;
|
|
20
|
+
/** Custom Fetch implementation, commonly used for testing or instrumentation. */
|
|
21
|
+
fetch?: typeof globalThis.fetch;
|
|
22
|
+
/** Maximum retry attempts after the initial request. Defaults to 2. */
|
|
23
|
+
maxRetries?: number;
|
|
24
|
+
/** Timeout in milliseconds for each request attempt. Defaults to 30,000. */
|
|
25
|
+
timeoutMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface RequestControls {
|
|
28
|
+
/** Override the client's maximum retry attempts for this operation. */
|
|
29
|
+
maxRetries?: number;
|
|
30
|
+
/** Abort this operation and stop further retry attempts. */
|
|
31
|
+
signal?: AbortSignal;
|
|
32
|
+
/** Override the client's per-attempt timeout in milliseconds for this operation. */
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
}
|
|
35
|
+
export interface ResponseBilling {
|
|
36
|
+
/** Authoritative charge for this request as a decimal string. */
|
|
37
|
+
cost: string | null;
|
|
38
|
+
/** Synthetic dataset version for Test responses. */
|
|
39
|
+
datasetVersion: string | null;
|
|
40
|
+
/** How this request was accounted for. */
|
|
41
|
+
disposition: 'test' | 'allowance' | 'postpaid' | null;
|
|
42
|
+
/** Environment selected by the API key. */
|
|
43
|
+
environment: 'test' | 'live' | null;
|
|
44
|
+
/** Live-equivalent list price as a decimal string. */
|
|
45
|
+
listPrice: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface ResponseMetadata {
|
|
48
|
+
/** Accounting headers normalized onto the response. */
|
|
49
|
+
billing: ResponseBilling;
|
|
50
|
+
/** Stable request identifier for logs and support. */
|
|
51
|
+
requestId: string;
|
|
52
|
+
}
|
|
53
|
+
type SnakeToCamel<Value extends string> = Value extends `${infer Head}_${infer Tail}` ? `${Head}${Capitalize<SnakeToCamel<Tail>>}` : Value;
|
|
54
|
+
export type Camelize<Value> = Value extends readonly (infer Item)[] ? Camelize<Item>[] : Value extends object ? {
|
|
55
|
+
[Key in keyof Value as Key extends string ? SnakeToCamel<Key> : Key]: Camelize<Value[Key]>;
|
|
56
|
+
} : Value;
|
|
57
|
+
type PathOperation<Path extends keyof paths, Method extends keyof paths[Path]> = NonNullable<paths[Path][Method]>;
|
|
58
|
+
type QueryFor<Path extends keyof paths, Method extends keyof paths[Path]> = PathOperation<Path, Method> extends {
|
|
59
|
+
parameters: {
|
|
60
|
+
query?: infer Query;
|
|
61
|
+
};
|
|
62
|
+
} ? NonNullable<Query> : Record<never, never>;
|
|
63
|
+
type SuccessBody<Path extends keyof paths, Method extends keyof paths[Path]> = PathOperation<Path, Method> extends {
|
|
64
|
+
responses: {
|
|
65
|
+
200: {
|
|
66
|
+
content: {
|
|
67
|
+
'application/json': infer Body;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
} ? Body : never;
|
|
72
|
+
export type OperationOptions<Path extends keyof paths, Method extends keyof paths[Path]> = Camelize<QueryFor<Path, Method>> & RequestControls;
|
|
73
|
+
export type OperationResponse<Path extends keyof paths, Method extends keyof paths[Path]> = Camelize<SuccessBody<Path, Method>> & ResponseMetadata;
|
|
74
|
+
export type OperationPage<Path extends keyof paths, Method extends keyof paths[Path]> = OperationResponse<Path, Method> & {
|
|
75
|
+
/** Whether the response includes another opaque cursor. */
|
|
76
|
+
hasNextPage: boolean;
|
|
77
|
+
/** Fetch the next page lazily, or return null after the final page. */
|
|
78
|
+
next(): Promise<OperationPage<Path, Method> | null>;
|
|
79
|
+
/** Opaque cursor for the next page, or null after the final page. */
|
|
80
|
+
nextCursor: string | null;
|
|
81
|
+
};
|
|
82
|
+
export type FetchOptions = RequestControls & {
|
|
83
|
+
freshness?: Freshness;
|
|
84
|
+
};
|
|
85
|
+
export interface OperationDefinition {
|
|
86
|
+
apiPath: string;
|
|
87
|
+
method: 'get' | 'post';
|
|
88
|
+
operation: 'fetch' | 'get' | 'list' | 'search';
|
|
89
|
+
paginated: boolean;
|
|
90
|
+
path: string;
|
|
91
|
+
scope: readonly OperationScope[];
|
|
92
|
+
}
|
|
93
|
+
export interface OperationScope {
|
|
94
|
+
name: string;
|
|
95
|
+
parameter?: string;
|
|
96
|
+
reference?: string;
|
|
97
|
+
}
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|