@replit/connectors-sdk 0.1.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/client.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import type { Connection, ListConnectionsOptions, ProxyOptions, ReplitConnectorsOptions } from './types';
2
+ export declare class ReplitConnectors {
3
+ private readonly baseUrl;
4
+ constructor(options?: ReplitConnectorsOptions);
5
+ proxy(connectorName: string, path: string, options?: ProxyOptions): Promise<Response>;
6
+ listConnections(options?: ListConnectionsOptions): Promise<Connection[]>;
7
+ getProxyUrl(): string;
8
+ createProxyFetch(connectorName: string): typeof fetch;
9
+ }
10
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EAEtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAsChB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,OAAO,CAAC,EAAE,uBAAuB;IAIvC,KAAK,CACT,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,QAAQ,CAAC;IA8Cd,eAAe,CACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,UAAU,EAAE,CAAC;IA6CxB,WAAW,IAAI,MAAM;IAIrB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,KAAK;CA0DtD"}
package/client.js ADDED
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReplitConnectors = void 0;
4
+ const identity_1 = require("./identity");
5
+ function getProxyUrl(baseUrl) {
6
+ return `${baseUrl}/api/v2/proxy`;
7
+ }
8
+ function resolveProxyTarget(url, proxyBase) {
9
+ if (url.startsWith(proxyBase)) {
10
+ return url;
11
+ }
12
+ if (url.startsWith('http://') || url.startsWith('https://')) {
13
+ const parsed = new URL(url);
14
+ return `${proxyBase}${parsed.pathname}${parsed.search}`;
15
+ }
16
+ return `${proxyBase}${url.startsWith('/') ? '' : '/'}${url}`;
17
+ }
18
+ function flattenHeaders(headers) {
19
+ if (!headers) {
20
+ return {};
21
+ }
22
+ const result = {};
23
+ if (headers instanceof Headers) {
24
+ headers.forEach((value, key) => {
25
+ result[key] = value;
26
+ });
27
+ }
28
+ else if (Array.isArray(headers)) {
29
+ for (const pair of headers) {
30
+ result[pair[0]] = pair[1];
31
+ }
32
+ }
33
+ else {
34
+ Object.assign(result, headers);
35
+ }
36
+ return result;
37
+ }
38
+ class ReplitConnectors {
39
+ constructor(options) {
40
+ this.baseUrl = options?.baseUrl ?? (0, identity_1.resolveBaseUrl)();
41
+ }
42
+ async proxy(connectorName, path, options) {
43
+ const method = options?.method ?? 'GET';
44
+ const normalizedPath = path.startsWith('/') ? path : `/${path}`;
45
+ const url = `${getProxyUrl(this.baseUrl)}${normalizedPath}`;
46
+ const headers = {
47
+ ...(await (0, identity_1.buildHeaders)()),
48
+ 'Connector-Name': connectorName,
49
+ ...(options?.headers ?? {}),
50
+ };
51
+ const init = { method, headers };
52
+ if (options?.body !== undefined && options.body !== null) {
53
+ if (typeof options.body === 'string' ||
54
+ (typeof Buffer !== 'undefined' && options.body instanceof Buffer) ||
55
+ options.body instanceof ArrayBuffer ||
56
+ options.body instanceof FormData ||
57
+ options.body instanceof URLSearchParams ||
58
+ options.body instanceof Blob ||
59
+ options.body instanceof ReadableStream) {
60
+ init.body = options.body;
61
+ }
62
+ else {
63
+ init.body = JSON.stringify(options.body);
64
+ if (!headers['Content-Type']) {
65
+ headers['Content-Type'] = 'application/json';
66
+ }
67
+ }
68
+ }
69
+ const response = await fetch(url, init);
70
+ if (response.status === 401) {
71
+ const freshAuth = await (0, identity_1.buildHeaders)();
72
+ const retryResponse = await fetch(url, {
73
+ ...init,
74
+ headers: { ...headers, ...freshAuth },
75
+ });
76
+ return retryResponse;
77
+ }
78
+ return response;
79
+ }
80
+ async listConnections(options) {
81
+ const params = new URLSearchParams();
82
+ if (options?.connector_names) {
83
+ params.set('connector_names', options.connector_names);
84
+ }
85
+ for (const val of options?.expand ?? ['connector']) {
86
+ params.append('expand', val);
87
+ }
88
+ params.set('refresh_policy', options?.refresh_policy ?? 'none');
89
+ const qs = params.toString();
90
+ const url = `${this.baseUrl}/api/v2/connection${qs ? `?${qs}` : ''}`;
91
+ const headers = await (0, identity_1.buildHeaders)();
92
+ const response = await fetch(url, { method: 'GET', headers });
93
+ if (response.status === 401) {
94
+ const freshHeaders = await (0, identity_1.buildHeaders)();
95
+ const retryResponse = await fetch(url, {
96
+ method: 'GET',
97
+ headers: freshHeaders,
98
+ });
99
+ if (!retryResponse.ok) {
100
+ throw new Error(`Failed to list connections: ${retryResponse.status} ${retryResponse.statusText}`);
101
+ }
102
+ const data = (await retryResponse.json());
103
+ return data.items ?? [];
104
+ }
105
+ if (!response.ok) {
106
+ throw new Error(`Failed to list connections: ${response.status} ${response.statusText}`);
107
+ }
108
+ const data = (await response.json());
109
+ return data.items ?? [];
110
+ }
111
+ getProxyUrl() {
112
+ return `${this.baseUrl}/api/v2/proxy`;
113
+ }
114
+ createProxyFetch(connectorName) {
115
+ const proxyBase = getProxyUrl(this.baseUrl);
116
+ return async (input, init) => {
117
+ const rawUrl = input instanceof Request ? input.url : String(input);
118
+ const targetUrl = resolveProxyTarget(rawUrl, proxyBase);
119
+ const authHeaders = await (0, identity_1.buildHeaders)();
120
+ const userHeaders = flattenHeaders(init?.headers ?? (input instanceof Request ? input.headers : undefined));
121
+ const headers = {
122
+ ...authHeaders,
123
+ 'Connector-Name': connectorName,
124
+ ...userHeaders,
125
+ };
126
+ const requestDefaults = input instanceof Request
127
+ ? {
128
+ method: input.method,
129
+ body: input.body,
130
+ cache: input.cache,
131
+ credentials: input.credentials,
132
+ integrity: input.integrity,
133
+ keepalive: input.keepalive,
134
+ mode: input.mode,
135
+ redirect: input.redirect,
136
+ referrer: input.referrer,
137
+ referrerPolicy: input.referrerPolicy,
138
+ signal: input.signal,
139
+ // @ts-expect-error duplex is required for streaming bodies but missing from RequestInit
140
+ duplex: input.body ? 'half' : undefined,
141
+ }
142
+ : {};
143
+ const fetchInit = { ...requestDefaults, ...init, headers };
144
+ const response = await fetch(targetUrl, fetchInit);
145
+ if (response.status === 401) {
146
+ const freshAuth = await (0, identity_1.buildHeaders)();
147
+ return fetch(targetUrl, {
148
+ ...fetchInit,
149
+ headers: {
150
+ ...freshAuth,
151
+ 'Connector-Name': connectorName,
152
+ ...userHeaders,
153
+ },
154
+ });
155
+ }
156
+ return response;
157
+ };
158
+ }
159
+ }
160
+ exports.ReplitConnectors = ReplitConnectors;
161
+ //# sourceMappingURL=client.js.map
package/client.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/identity.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export declare function createIdentityToken(): Promise<string>;
2
+ export declare function resolveIdentityToken(): Promise<string>;
3
+ export declare function resolveBaseUrl(): string;
4
+ export declare function buildHeaders(): Promise<Record<string, string>>;
5
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAOA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAmB3D;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAwB5D;AAED,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWpE"}
package/identity.js ADDED
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createIdentityToken = createIdentityToken;
4
+ exports.resolveIdentityToken = resolveIdentityToken;
5
+ exports.resolveBaseUrl = resolveBaseUrl;
6
+ exports.buildHeaders = buildHeaders;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_util_1 = require("node:util");
9
+ const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
10
+ const DEFAULT_CONNECTORS_HOST = 'connectors.replit.com';
11
+ async function createIdentityToken() {
12
+ const replitBinary = process.env['REPLIT_CLI'] || 'replit';
13
+ const audience = resolveBaseUrl();
14
+ const { stdout } = await execFileAsync(replitBinary, [
15
+ 'identity',
16
+ 'create',
17
+ '--audience',
18
+ audience,
19
+ ]);
20
+ const token = stdout.trim();
21
+ if (!token) {
22
+ throw new Error(`replit identity create returned an empty token (audience: ${audience})`);
23
+ }
24
+ return token;
25
+ }
26
+ async function resolveIdentityToken() {
27
+ try {
28
+ const token = await createIdentityToken();
29
+ return token;
30
+ }
31
+ catch {
32
+ // CLI not available — fall through to env var strategies
33
+ }
34
+ const replIdentity = process.env['REPL_IDENTITY'];
35
+ if (replIdentity) {
36
+ return `repl ${replIdentity}`;
37
+ }
38
+ const deplToken = process.env['WEB_REPL_RENEWAL'];
39
+ if (deplToken) {
40
+ return `depl ${deplToken}`;
41
+ }
42
+ throw new Error('Replit identity token not found. ' +
43
+ 'Could not run `replit identity create` and neither ' +
44
+ 'REPL_IDENTITY nor WEB_REPL_RENEWAL are set in the environment. ' +
45
+ 'Are you running this inside a Repl?');
46
+ }
47
+ function resolveBaseUrl() {
48
+ const hostname = process.env['REPLIT_CONNECTORS_HOSTNAME'];
49
+ if (hostname) {
50
+ if (hostname.startsWith('http://') || hostname.startsWith('https://')) {
51
+ return hostname;
52
+ }
53
+ return `https://${hostname}`;
54
+ }
55
+ return `https://${DEFAULT_CONNECTORS_HOST}`;
56
+ }
57
+ async function buildHeaders() {
58
+ const token = await resolveIdentityToken();
59
+ const headers = {
60
+ Accept: 'application/json',
61
+ };
62
+ if (token.startsWith('repl ') || token.startsWith('depl ')) {
63
+ headers['X-Replit-Token'] = token;
64
+ }
65
+ else {
66
+ headers['Replit-Authentication'] = `Bearer ${token}`;
67
+ }
68
+ return headers;
69
+ }
70
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";;AAOA,kDAmBC;AAED,oDAwBC;AAED,wCASC;AAED,oCAWC;AA5ED,2DAA2C;AAC3C,yCAAmC;AAEnC,MAAM,aAAa,GAAG,IAAA,qBAAS,EAAC,6BAAQ,CAAC,CAAA;AAEzC,MAAM,uBAAuB,GAAG,uBAAuB,CAAA;AAEhD,KAAK,UAAU,mBAAmB;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAA;IAC1D,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;IAEjC,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE;QACjD,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,QAAQ;KACT,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,6DAA6D,QAAQ,GAAG,CACzE,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAEM,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAA;QACzC,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,QAAQ,YAAY,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACjD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,QAAQ,SAAS,EAAE,CAAA;IAC5B,CAAC;IAED,MAAM,IAAI,KAAK,CACb,mCAAmC;QACjC,qDAAqD;QACrD,iEAAiE;QACjE,qCAAqC,CACxC,CAAA;AACH,CAAC;AAED,SAAgB,cAAc;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACtE,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,OAAO,WAAW,QAAQ,EAAE,CAAA;IAC9B,CAAC;IACD,OAAO,WAAW,uBAAuB,EAAE,CAAA;AAC7C,CAAC;AAEM,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,MAAM,oBAAoB,EAAE,CAAA;IAC1C,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,kBAAkB;KAC3B,CAAA;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAA;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,uBAAuB,CAAC,GAAG,UAAU,KAAK,EAAE,CAAA;IACtD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export { ReplitConnectors } from './client';
2
+ export type { Connection, Connector, ListConnectionsOptions, ListResponse, ProxyOptions, ReplitConnectorsOptions, } from './types';
3
+ //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAA;AACzC,YAAY,EACV,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,uBAAuB,GACxB,MAAM,SAAS,CAAA"}
package/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReplitConnectors = void 0;
4
+ var client_1 = require("./client");
5
+ Object.defineProperty(exports, "ReplitConnectors", { enumerable: true, get: function () { return client_1.ReplitConnectors; } });
6
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAAjC,0GAAA,gBAAgB,OAAA"}
package/package.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@replit/connectors-sdk",
3
+ "version": "0.1.0",
4
+ "description": "Replit Connectors SDK — identity resolution, proxy, and credential helpers for Repls",
5
+ "sideEffects": false,
6
+ "main": "./index.js",
7
+ "types": "./index.d.ts",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ }
11
+ }
package/types.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ export interface Connector {
2
+ name: string;
3
+ display_name?: string;
4
+ logo_url?: string;
5
+ stage?: string;
6
+ platforms?: string[];
7
+ auth_type?: string;
8
+ description?: string;
9
+ verticals?: string[];
10
+ packages?: Record<string, unknown>;
11
+ [key: string]: unknown;
12
+ }
13
+ export interface Connection {
14
+ id: string;
15
+ connector_name: string;
16
+ customer_id: string;
17
+ status?: string;
18
+ status_message?: string | null;
19
+ created_at?: string;
20
+ updated_at?: string;
21
+ metadata?: Record<string, unknown> | null;
22
+ connector?: Connector;
23
+ integration?: Record<string, unknown>;
24
+ [key: string]: unknown;
25
+ }
26
+ export interface ReplitConnectorsOptions {
27
+ baseUrl?: string;
28
+ }
29
+ export interface ProxyOptions {
30
+ method?: string;
31
+ body?: unknown;
32
+ headers?: Record<string, string>;
33
+ }
34
+ export interface ListResponse<T> {
35
+ items: T[];
36
+ total?: number;
37
+ limit?: number;
38
+ offset?: number;
39
+ }
40
+ export interface ListConnectionsOptions {
41
+ connector_names?: string;
42
+ expand?: string[];
43
+ refresh_policy?: 'none' | 'force' | 'auto';
44
+ }
45
+ //# sourceMappingURL=types.d.ts.map
package/types.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACzC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;CAC3C"}
package/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}