@replit/connectors-sdk 0.4.2 → 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/client.d.ts +4 -4
- package/client.d.ts.map +1 -1
- package/client.js +56 -24
- package/client.js.map +1 -1
- package/identity.d.ts.map +1 -1
- package/identity.js +98 -12
- package/identity.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/types.d.ts +4 -1
- package/types.d.ts.map +1 -1
package/client.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { CliConfig, Connection, ListConnectionsOptions, ProxyOptions, ReplitConnectorsOptions } from './types';
|
|
1
|
+
import type { CliConfig, Connection, ConnectionSelection, ListConnectionsOptions, ProxyOptions, ReplitConnectorsOptions } from './types';
|
|
2
2
|
export declare class ReplitConnectors {
|
|
3
3
|
private readonly baseUrl;
|
|
4
4
|
constructor(options?: ReplitConnectorsOptions);
|
|
5
5
|
proxy(connectorName: string, path: string, options?: ProxyOptions): Promise<Response>;
|
|
6
6
|
listConnections(options?: ListConnectionsOptions): Promise<Connection[]>;
|
|
7
7
|
getProxyUrl(): string;
|
|
8
|
-
getProxyHeaders(connectorName: string): Promise<Record<string, string>>;
|
|
9
|
-
getCliConfig(connectorName: string): Promise<CliConfig>;
|
|
10
|
-
createProxyFetch(connectorName: string): typeof fetch;
|
|
8
|
+
getProxyHeaders(connectorName: string, selection?: ConnectionSelection): Promise<Record<string, string>>;
|
|
9
|
+
getCliConfig(connectorName: string, selection?: ConnectionSelection): Promise<CliConfig>;
|
|
10
|
+
createProxyFetch(connectorName: string, selection?: ConnectionSelection): typeof fetch;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=client.d.ts.map
|
package/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,sBAAsB,EAEtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EAEtB,YAAY,EACZ,uBAAuB,EACxB,MAAM,SAAS,CAAA;AA6HhB,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;IAkDd,eAAe,CACnB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,UAAU,EAAE,CAAC;IA6CxB,WAAW,IAAI,MAAM;IAIf,eAAe,CACnB,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAW5B,YAAY,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC,SAAS,CAAC;IA0CrB,gBAAgB,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,mBAAmB,GAC9B,OAAO,KAAK;CAyDhB"}
|
package/client.js
CHANGED
|
@@ -12,6 +12,35 @@ function resolveProxyTarget(url, proxyBase) {
|
|
|
12
12
|
}
|
|
13
13
|
return `${proxyBase}${url.startsWith('/') ? '' : '/'}${url}`;
|
|
14
14
|
}
|
|
15
|
+
const CONNECTION_ID_HEADER = 'Connection-Id';
|
|
16
|
+
// Headers that pin one connection. An explicit `connectionId` is sent as
|
|
17
|
+
// CONNECTION_ID_HEADER; without one, nothing is added and the server keeps its
|
|
18
|
+
// existing connector-name resolution.
|
|
19
|
+
function connectionSelectionHeaders(selection) {
|
|
20
|
+
const connectionId = selection?.connectionId;
|
|
21
|
+
if (connectionId === undefined) {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
if (typeof connectionId !== 'string' || connectionId.trim() === '') {
|
|
25
|
+
throw new Error('connectionId must be a non-empty string');
|
|
26
|
+
}
|
|
27
|
+
return { [CONNECTION_ID_HEADER]: connectionId };
|
|
28
|
+
}
|
|
29
|
+
// Header names are case-insensitive, but object keys are not: a caller's
|
|
30
|
+
// lowercase spelling would sit beside CONNECTION_ID_HEADER and Fetch would join
|
|
31
|
+
// the two values. A pin therefore drops every caller spelling before it is added.
|
|
32
|
+
function applyConnectionSelection(headers, selectionHeaders) {
|
|
33
|
+
if (!(CONNECTION_ID_HEADER in selectionHeaders)) {
|
|
34
|
+
return headers;
|
|
35
|
+
}
|
|
36
|
+
const pinned = {};
|
|
37
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
38
|
+
if (name.toLowerCase() !== CONNECTION_ID_HEADER.toLowerCase()) {
|
|
39
|
+
pinned[name] = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return { ...pinned, ...selectionHeaders };
|
|
43
|
+
}
|
|
15
44
|
function flattenHeaders(headers) {
|
|
16
45
|
if (!headers) {
|
|
17
46
|
return {};
|
|
@@ -72,11 +101,12 @@ class ReplitConnectors {
|
|
|
72
101
|
const method = options?.method ?? 'GET';
|
|
73
102
|
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|
74
103
|
const url = `${this.getProxyUrl()}${normalizedPath}`;
|
|
75
|
-
const
|
|
104
|
+
const selectionHeaders = connectionSelectionHeaders(options);
|
|
105
|
+
const headers = applyConnectionSelection({
|
|
76
106
|
...(await (0, identity_1.buildHeaders)()),
|
|
77
107
|
'Connector-Name': connectorName,
|
|
78
108
|
...(options?.headers ?? {}),
|
|
79
|
-
};
|
|
109
|
+
}, selectionHeaders);
|
|
80
110
|
const init = { method, headers };
|
|
81
111
|
if (options?.body !== undefined && options.body !== null) {
|
|
82
112
|
if (typeof options.body === 'string' ||
|
|
@@ -140,22 +170,31 @@ class ReplitConnectors {
|
|
|
140
170
|
getProxyUrl() {
|
|
141
171
|
return `${this.baseUrl}/api/v2/proxy`;
|
|
142
172
|
}
|
|
143
|
-
async getProxyHeaders(connectorName) {
|
|
144
|
-
const
|
|
145
|
-
return { ...
|
|
173
|
+
async getProxyHeaders(connectorName, selection) {
|
|
174
|
+
const selectionHeaders = connectionSelectionHeaders(selection);
|
|
175
|
+
return applyConnectionSelection({ ...(await (0, identity_1.buildHeaders)()), 'Connector-Name': connectorName }, selectionHeaders);
|
|
146
176
|
}
|
|
147
|
-
|
|
177
|
+
// With `connectionId`, the CLI is configured for exactly that connection and
|
|
178
|
+
// no connections are listed; the server still authorizes it on every call.
|
|
179
|
+
// Without it, the first listed connection is used, as before.
|
|
180
|
+
async getCliConfig(connectorName, selection) {
|
|
148
181
|
const strategy = CLI_CONFIG_STRATEGIES[connectorName];
|
|
149
182
|
if (!strategy) {
|
|
150
183
|
const supported = Object.keys(CLI_CONFIG_STRATEGIES).join(', ');
|
|
151
184
|
throw new Error(`getCliConfig() is only supported for ${supported}, got: ${connectorName}`);
|
|
152
185
|
}
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
186
|
+
const pinnedConnectionId = connectionSelectionHeaders(selection)[CONNECTION_ID_HEADER];
|
|
187
|
+
let connectionId = pinnedConnectionId;
|
|
188
|
+
if (connectionId === undefined) {
|
|
189
|
+
const connections = await this.listConnections({
|
|
190
|
+
connector_names: connectorName,
|
|
191
|
+
});
|
|
192
|
+
// FAULT OF-1.1: picks the first connection for a connector name, not an assigned connection_id.
|
|
193
|
+
const connection = connections[0];
|
|
194
|
+
if (!connection) {
|
|
195
|
+
throw new Error(`No ${connectorName} connection found`);
|
|
196
|
+
}
|
|
197
|
+
connectionId = connection.id;
|
|
159
198
|
}
|
|
160
199
|
const headers = await (0, identity_1.buildHeaders)();
|
|
161
200
|
const identityToken = headers['X-Replit-Token'] ?? headers['Replit-Authentication'];
|
|
@@ -166,22 +205,19 @@ class ReplitConnectors {
|
|
|
166
205
|
return strategy({
|
|
167
206
|
baseUrl: this.baseUrl,
|
|
168
207
|
connectorName,
|
|
169
|
-
connectionId
|
|
208
|
+
connectionId,
|
|
170
209
|
rawIdentityToken: rawToken,
|
|
171
210
|
});
|
|
172
211
|
}
|
|
173
|
-
createProxyFetch(connectorName) {
|
|
212
|
+
createProxyFetch(connectorName, selection) {
|
|
174
213
|
const proxyBase = this.getProxyUrl();
|
|
214
|
+
const selectionHeaders = connectionSelectionHeaders(selection);
|
|
175
215
|
return async (input, init) => {
|
|
176
216
|
const rawUrl = input instanceof Request ? input.url : String(input);
|
|
177
217
|
const targetUrl = resolveProxyTarget(rawUrl, proxyBase);
|
|
178
218
|
const authHeaders = await (0, identity_1.buildHeaders)();
|
|
179
219
|
const userHeaders = flattenHeaders(init?.headers ?? (input instanceof Request ? input.headers : undefined));
|
|
180
|
-
const headers = {
|
|
181
|
-
...authHeaders,
|
|
182
|
-
'Connector-Name': connectorName,
|
|
183
|
-
...userHeaders,
|
|
184
|
-
};
|
|
220
|
+
const headers = applyConnectionSelection({ ...authHeaders, 'Connector-Name': connectorName, ...userHeaders }, selectionHeaders);
|
|
185
221
|
const requestDefaults = input instanceof Request
|
|
186
222
|
? {
|
|
187
223
|
method: input.method,
|
|
@@ -205,11 +241,7 @@ class ReplitConnectors {
|
|
|
205
241
|
const freshAuth = await (0, identity_1.buildHeaders)();
|
|
206
242
|
return fetch(targetUrl, {
|
|
207
243
|
...fetchInit,
|
|
208
|
-
headers: {
|
|
209
|
-
...freshAuth,
|
|
210
|
-
'Connector-Name': connectorName,
|
|
211
|
-
...userHeaders,
|
|
212
|
-
},
|
|
244
|
+
headers: applyConnectionSelection({ ...freshAuth, 'Connector-Name': connectorName, ...userHeaders }, selectionHeaders),
|
|
213
245
|
});
|
|
214
246
|
}
|
|
215
247
|
return response;
|
package/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/identity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AA0BA,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAsB3D;AAkFD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuB5D;AAED,wBAAgB,cAAc,IAAI,MAAM,CASvC;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWpE"}
|
package/identity.js
CHANGED
|
@@ -6,9 +6,27 @@ exports.resolveIdentityToken = resolveIdentityToken;
|
|
|
6
6
|
exports.resolveBaseUrl = resolveBaseUrl;
|
|
7
7
|
exports.buildHeaders = buildHeaders;
|
|
8
8
|
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const promises_1 = require("node:timers/promises");
|
|
9
10
|
const node_util_1 = require("node:util");
|
|
10
11
|
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
11
12
|
const DEFAULT_CONNECTORS_HOST = 'connectors.replit.com';
|
|
13
|
+
const DEPLOYMENT_IDENTITY_ENDPOINT = 'http://127.0.0.1:1105/getIdentityToken';
|
|
14
|
+
const IDENTITY_MINT_TIMEOUT_MS = 5000;
|
|
15
|
+
const IDENTITY_MINT_RETRY_DELAY_MS = 250;
|
|
16
|
+
class TransientLocalIdentityError extends Error {
|
|
17
|
+
}
|
|
18
|
+
function isDeploymentEnvironment() {
|
|
19
|
+
// Conrun exposes the same deployment markers, but is being retired and is
|
|
20
|
+
// deliberately outside this migration. Preserve its existing Repl identity
|
|
21
|
+
// path until the remaining callers move to replvisor.
|
|
22
|
+
if (process.env['REPLIT_CONRUN'])
|
|
23
|
+
return false;
|
|
24
|
+
return [
|
|
25
|
+
'REPLIT_DEPLOYMENT_ID',
|
|
26
|
+
'REPLIT_DEPLOYMENT_ENVIRONMENT',
|
|
27
|
+
'WEB_REPL_RENEWAL',
|
|
28
|
+
].some((name) => Boolean(process.env[name]));
|
|
29
|
+
}
|
|
12
30
|
function resolveAudience() {
|
|
13
31
|
const audience = process.env['REPLIT_CONNECTORS_AUDIENCE'];
|
|
14
32
|
if (audience) {
|
|
@@ -22,19 +40,91 @@ function resolveAudience() {
|
|
|
22
40
|
async function createIdentityToken() {
|
|
23
41
|
const replitBinary = process.env['REPLIT_CLI'] || 'replit';
|
|
24
42
|
const audience = resolveAudience();
|
|
25
|
-
const { stdout } = await execFileAsync(replitBinary, [
|
|
26
|
-
'
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
]);
|
|
43
|
+
const { stdout } = await execFileAsync(replitBinary, ['identity', 'create', '--audience', audience], {
|
|
44
|
+
encoding: 'utf8',
|
|
45
|
+
timeout: IDENTITY_MINT_TIMEOUT_MS,
|
|
46
|
+
windowsHide: true,
|
|
47
|
+
});
|
|
31
48
|
const token = stdout.trim();
|
|
32
49
|
if (!token) {
|
|
33
50
|
throw new Error(`replit identity create returned an empty token (audience: ${audience})`);
|
|
34
51
|
}
|
|
35
52
|
return token;
|
|
36
53
|
}
|
|
54
|
+
async function createIdentityTokenFromLocalEndpoint(timeoutMs) {
|
|
55
|
+
const controller = new AbortController();
|
|
56
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
57
|
+
try {
|
|
58
|
+
let response;
|
|
59
|
+
try {
|
|
60
|
+
response = await fetch(DEPLOYMENT_IDENTITY_ENDPOINT, {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: { 'Content-Type': 'application/json' },
|
|
63
|
+
body: JSON.stringify({ audience: resolveAudience() }),
|
|
64
|
+
signal: controller.signal,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (cause) {
|
|
68
|
+
if (cause instanceof TypeError) {
|
|
69
|
+
throw new TransientLocalIdentityError('local identity endpoint is not accepting connections');
|
|
70
|
+
}
|
|
71
|
+
throw cause;
|
|
72
|
+
}
|
|
73
|
+
if (!response.ok) {
|
|
74
|
+
const message = `local identity endpoint returned HTTP ${response.status}`;
|
|
75
|
+
if (response.status >= 500) {
|
|
76
|
+
throw new TransientLocalIdentityError(message);
|
|
77
|
+
}
|
|
78
|
+
throw new Error(message);
|
|
79
|
+
}
|
|
80
|
+
const payload = (await response.json());
|
|
81
|
+
if (typeof payload.identityToken !== 'string') {
|
|
82
|
+
throw new Error('local identity endpoint returned an invalid response');
|
|
83
|
+
}
|
|
84
|
+
const token = payload.identityToken.trim();
|
|
85
|
+
if (!token) {
|
|
86
|
+
throw new Error('local identity endpoint returned an empty token');
|
|
87
|
+
}
|
|
88
|
+
return token;
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
clearTimeout(timeout);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async function createDeploymentIdentityToken() {
|
|
95
|
+
const deadline = Date.now() + IDENTITY_MINT_TIMEOUT_MS;
|
|
96
|
+
try {
|
|
97
|
+
return await createIdentityToken();
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// hostingpid1 also exposes the same audience-scoped mint over loopback.
|
|
101
|
+
}
|
|
102
|
+
// hostingpid1 starts the application and identity renewal concurrently. Its
|
|
103
|
+
// loopback endpoint can therefore be listening briefly before the first
|
|
104
|
+
// signing key is installed. Retry only that local startup seam, under the
|
|
105
|
+
// same bounded mint deadline, and continue to fail closed.
|
|
106
|
+
do {
|
|
107
|
+
const remainingMs = Math.max(1, deadline - Date.now());
|
|
108
|
+
try {
|
|
109
|
+
return await createIdentityTokenFromLocalEndpoint(remainingMs);
|
|
110
|
+
}
|
|
111
|
+
catch (cause) {
|
|
112
|
+
if (!(cause instanceof TransientLocalIdentityError))
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
const retryBudgetMs = deadline - Date.now();
|
|
116
|
+
if (retryBudgetMs <= 0)
|
|
117
|
+
break;
|
|
118
|
+
await (0, promises_1.setTimeout)(Math.min(IDENTITY_MINT_RETRY_DELAY_MS, retryBudgetMs));
|
|
119
|
+
} while (Date.now() < deadline);
|
|
120
|
+
throw new Error('Could not mint an audience-scoped deployment identity. ' +
|
|
121
|
+
'Neither `replit identity create` nor the local hostingpid1 identity ' +
|
|
122
|
+
'endpoint is available. Raw WEB_REPL_RENEWAL credentials are not accepted.');
|
|
123
|
+
}
|
|
37
124
|
async function resolveIdentityToken() {
|
|
125
|
+
if (isDeploymentEnvironment()) {
|
|
126
|
+
return `depl ${await createDeploymentIdentityToken()}`;
|
|
127
|
+
}
|
|
38
128
|
try {
|
|
39
129
|
const token = await createIdentityToken();
|
|
40
130
|
return token;
|
|
@@ -46,13 +136,9 @@ async function resolveIdentityToken() {
|
|
|
46
136
|
if (replIdentity) {
|
|
47
137
|
return `repl ${replIdentity}`;
|
|
48
138
|
}
|
|
49
|
-
const deplToken = process.env['WEB_REPL_RENEWAL'];
|
|
50
|
-
if (deplToken) {
|
|
51
|
-
return `depl ${deplToken}`;
|
|
52
|
-
}
|
|
53
139
|
throw new Error('Replit identity token not found. ' +
|
|
54
|
-
'Could not run `replit identity create` and
|
|
55
|
-
'REPL_IDENTITY
|
|
140
|
+
'Could not run `replit identity create` and ' +
|
|
141
|
+
'REPL_IDENTITY is not set in the environment. ' +
|
|
56
142
|
'Are you running this inside a Repl?');
|
|
57
143
|
}
|
|
58
144
|
function resolveBaseUrl() {
|
package/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ReplitConnectors } from './client';
|
|
2
|
-
export type { CliConfig, Connection, Connector, ListConnectionsOptions, ListResponse, ProxyOptions, ReplitConnectorsOptions, } from './types';
|
|
2
|
+
export type { CliConfig, Connection, ConnectionSelection, Connector, ListConnectionsOptions, ListResponse, ProxyOptions, ReplitConnectorsOptions, } from './types';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +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,SAAS,EACT,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,uBAAuB,GACxB,MAAM,SAAS,CAAA"}
|
|
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,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,SAAS,EACT,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,uBAAuB,GACxB,MAAM,SAAS,CAAA"}
|
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -26,7 +26,10 @@ export interface Connection {
|
|
|
26
26
|
export interface ReplitConnectorsOptions {
|
|
27
27
|
baseUrl?: string;
|
|
28
28
|
}
|
|
29
|
-
export interface
|
|
29
|
+
export interface ConnectionSelection {
|
|
30
|
+
connectionId?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ProxyOptions extends ConnectionSelection {
|
|
30
33
|
method?: string;
|
|
31
34
|
body?: unknown;
|
|
32
35
|
headers?: Record<string, string>;
|
package/types.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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;AAKD,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,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;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;CACtB"}
|