oblien 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +2 -2
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/tunnel.d.ts +14 -0
- package/dist/cli/commands/tunnel.d.ts.map +1 -0
- package/dist/cli/commands/tunnel.js +201 -0
- package/dist/cli/commands/tunnel.js.map +1 -0
- package/dist/cli/index.js +16 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -1
- package/dist/edge-tunnel.d.ts +95 -0
- package/dist/edge-tunnel.d.ts.map +1 -0
- package/dist/edge-tunnel.js +127 -0
- package/dist/edge-tunnel.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime/transfer.d.ts.map +1 -1
- package/dist/runtime/transfer.js +43 -1
- package/dist/runtime/transfer.js.map +1 -1
- package/dist/runtime-http.d.ts +10 -0
- package/dist/runtime-http.d.ts.map +1 -1
- package/dist/runtime-http.js +83 -1
- package/dist/runtime-http.js.map +1 -1
- package/dist/tunnel/client.d.ts +70 -0
- package/dist/tunnel/client.d.ts.map +1 -0
- package/dist/tunnel/client.js +280 -0
- package/dist/tunnel/client.js.map +1 -0
- package/dist/tunnel/protocol.d.ts +38 -0
- package/dist/tunnel/protocol.d.ts.map +1 -0
- package/dist/tunnel/protocol.js +66 -0
- package/dist/tunnel/protocol.js.map +1 -0
- package/dist/types/edge-tunnel.d.ts +40 -0
- package/dist/types/edge-tunnel.d.ts.map +1 -0
- package/dist/types/edge-tunnel.js +3 -0
- package/dist/types/edge-tunnel.js.map +1 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +16 -0
- package/dist/types/runtime.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { TunnelClient } from './tunnel/client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Edge tunnel — expose local ports to the internet through the Oblien edge.
|
|
4
|
+
*
|
|
5
|
+
* **Programmatic usage:**
|
|
6
|
+
* ```ts
|
|
7
|
+
* import Oblien from 'oblien';
|
|
8
|
+
* const client = new Oblien({ clientId, clientSecret });
|
|
9
|
+
*
|
|
10
|
+
* // One-liner: create + connect
|
|
11
|
+
* const tunnel = await client.edgeTunnel.connect({
|
|
12
|
+
* name: 'dev-server',
|
|
13
|
+
* port: 3000,
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* tunnel.on('request', (streamId, port) => {
|
|
17
|
+
* console.log(`Request → localhost:${port}`);
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Later…
|
|
21
|
+
* tunnel.close();
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* **Low-level control:**
|
|
25
|
+
* ```ts
|
|
26
|
+
* const { tunnel } = await client.edgeTunnel.create({ name: 'api', port: 8080 });
|
|
27
|
+
* const { token, connect_url } = await client.edgeTunnel.issueToken(tunnel.id);
|
|
28
|
+
*
|
|
29
|
+
* const tc = new TunnelClient({ connectUrl: connect_url, token });
|
|
30
|
+
* tc.connect();
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export class EdgeTunnel {
|
|
34
|
+
/** @internal */
|
|
35
|
+
_http;
|
|
36
|
+
_base = '/edge/tunnels';
|
|
37
|
+
constructor(client) {
|
|
38
|
+
this._http = client._http;
|
|
39
|
+
}
|
|
40
|
+
/** List all tunnels for the authenticated user. */
|
|
41
|
+
async list() {
|
|
42
|
+
return this._http.request({ method: 'GET', path: this._base });
|
|
43
|
+
}
|
|
44
|
+
/** Get a single tunnel by ID. */
|
|
45
|
+
async get(tunnelId) {
|
|
46
|
+
return this._http.request({ method: 'GET', path: `${this._base}/${tunnelId}` });
|
|
47
|
+
}
|
|
48
|
+
/** Create a new edge tunnel. */
|
|
49
|
+
async create(params) {
|
|
50
|
+
return this._http.request({ method: 'POST', path: this._base, body: params });
|
|
51
|
+
}
|
|
52
|
+
/** Update tunnel name, slug, or port. */
|
|
53
|
+
async update(tunnelId, params) {
|
|
54
|
+
return this._http.request({ method: 'PUT', path: `${this._base}/${tunnelId}`, body: params });
|
|
55
|
+
}
|
|
56
|
+
/** Enable a disabled tunnel (re-creates the edge route). */
|
|
57
|
+
async enable(tunnelId) {
|
|
58
|
+
return this._http.request({ method: 'POST', path: `${this._base}/${tunnelId}/enable` });
|
|
59
|
+
}
|
|
60
|
+
/** Disable a tunnel (removes the edge route, keeps DB record). */
|
|
61
|
+
async disable(tunnelId) {
|
|
62
|
+
return this._http.request({ method: 'POST', path: `${this._base}/${tunnelId}/disable` });
|
|
63
|
+
}
|
|
64
|
+
/** Permanently delete a tunnel. */
|
|
65
|
+
async delete(tunnelId) {
|
|
66
|
+
return this._http.request({ method: 'DELETE', path: `${this._base}/${tunnelId}` });
|
|
67
|
+
}
|
|
68
|
+
/** Issue a short-lived JWT for agent authentication with the tunnel broker. */
|
|
69
|
+
async issueToken(tunnelId, options) {
|
|
70
|
+
return this._http.request({
|
|
71
|
+
method: 'POST',
|
|
72
|
+
path: `${this._base}/${tunnelId}/token`,
|
|
73
|
+
body: options?.expiresIn ? { expires_in: options.expiresIn } : undefined,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create a tunnel (or reuse an existing one) and connect in one call.
|
|
78
|
+
*
|
|
79
|
+
* Returns a connected {@link TunnelClient} that forwards incoming Oblien edge
|
|
80
|
+
* traffic to `localhost:<port>`. The tunnel stays open until you call `.close()`.
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const tunnel = await client.edgeTunnel.connect({ name: 'dev', port: 3000 });
|
|
84
|
+
* console.log(tunnel.url); // https://dev-xyz.preview.oblien.com
|
|
85
|
+
*
|
|
86
|
+
* tunnel.on('open', () => console.log('connected'));
|
|
87
|
+
* tunnel.on('request', (id, port) => console.log(`→ localhost:${port}`));
|
|
88
|
+
* tunnel.on('close', () => console.log('disconnected'));
|
|
89
|
+
*
|
|
90
|
+
* // Graceful shutdown
|
|
91
|
+
* tunnel.close();
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @param params - Tunnel creation params (port is required).
|
|
95
|
+
* @param connectOpts - Optional overrides for the WebSocket client.
|
|
96
|
+
*/
|
|
97
|
+
async connect(params, connectOpts) {
|
|
98
|
+
// 1. Check for an existing active tunnel on this port.
|
|
99
|
+
let tunnel;
|
|
100
|
+
try {
|
|
101
|
+
const { tunnels } = await this.list();
|
|
102
|
+
tunnel = tunnels.find(t => t.port === params.port && t.status === 'active');
|
|
103
|
+
}
|
|
104
|
+
catch { /* first tunnel */ }
|
|
105
|
+
// 2. Create if needed.
|
|
106
|
+
if (!tunnel) {
|
|
107
|
+
const res = await this.create(params);
|
|
108
|
+
tunnel = res.tunnel;
|
|
109
|
+
}
|
|
110
|
+
// 3. Issue token.
|
|
111
|
+
const tokenRes = await this.issueToken(tunnel.id);
|
|
112
|
+
// 4. Build and connect the tunnel client.
|
|
113
|
+
const tc = new TunnelClient({
|
|
114
|
+
connectUrl: tokenRes.connect_url,
|
|
115
|
+
token: tokenRes.token,
|
|
116
|
+
localPort: connectOpts?.localPort ?? params.port,
|
|
117
|
+
minTokenTtlMs: connectOpts?.minTokenTtlMs,
|
|
118
|
+
tokenExpiresAt: connectOpts?.tokenExpiresAt ?? tokenRes.expires_at,
|
|
119
|
+
});
|
|
120
|
+
// Attach metadata for convenience.
|
|
121
|
+
tc.url = tunnel.url;
|
|
122
|
+
tc.tunnelId = tunnel.id;
|
|
123
|
+
tc.connect();
|
|
124
|
+
return tc;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=edge-tunnel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tunnel.js","sourceRoot":"","sources":["../src/edge-tunnel.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,10 +7,13 @@ export { Pages } from './pages.js';
|
|
|
7
7
|
/** @deprecated Use {@link Pages} instead. */
|
|
8
8
|
export { Pages as Sites } from './pages.js';
|
|
9
9
|
export { EdgeProxy } from './edge-proxy.js';
|
|
10
|
+
export { EdgeTunnel } from './edge-tunnel.js';
|
|
11
|
+
export { TunnelClient } from './tunnel/client.js';
|
|
12
|
+
export type { TunnelClientOptions } from './tunnel/client.js';
|
|
10
13
|
export { Domain } from './domain.js';
|
|
11
14
|
export { Tokens } from './tokens.js';
|
|
12
15
|
export { Runtime } from './runtime.js';
|
|
13
16
|
export { RuntimeWebSocket } from './runtime/ws.js';
|
|
14
17
|
export { OblienError, AuthenticationError, NotFoundError, RateLimitError, ValidationError, PaymentRequiredError, ConflictError, } from './error.js';
|
|
15
|
-
export type { OblienOptions, RequestOptions, ApiResponse, WorkspaceCreateParams, WorkspaceUpdateParams, WorkspaceListParams, WorkspaceListResponse, WorkspaceData, ResourceSpec, LifecycleSpec, NetworkSpec, FirewallRule, PrivateLink, RuntimeOptions, FileListParams, FileEntry, FileListResponse, FileReadParams, FileReadResponse, FileWriteParams, FileWriteResponse, FileMkdirParams, FileStatParams, FileStatResponse, FileDeleteParams, ContentSearchParams, SearchMatch, ContentSearchResponse, FileSearchParams, FileSearchResponse, SearchStatusResponse, SearchInitResponse, ExecRunParams, ExecTask, ExecListResponse, ExecStreamEvent, TerminalCreateParams, TerminalSession, TerminalListResponse, TerminalScrollbackResponse, WatcherCreateParams, WatcherInfo, WatcherListResponse, WSOptions, WSMessage, WSTerminalResize, WSTerminalExit, WSTerminalEvent, WSWatcherChange, WSWatcherReady, WSWatcherOverflow, WSWatcherEvent, TransferDownloadParams, TransferUploadParams, TransferUploadResponse, LifecycleStatus, MakeTemporaryParams, UpdateTtlParams, SshStatus, SshPasswordParams, SshKeyParams, PublicAccessPort, ExposePortParams, UpdateSlugParams, SnapshotParams, ArchiveCreateParams, ArchiveInfo, WorkloadCreateParams, WorkloadUpdateParams, WorkloadInfo, WorkloadListParams, UsageParams, UpdateResourcesParams, UpdateMetadataParams, ApiAccessStatus, RawTokenResponse, NetworkUpdateParams, NetworkConfig, LogsParams, LogFile, LogStreamEvent, StatsEvent, WorkloadStatsEvent, WorkloadLogEntry, ImagesListParams, DomainInfo, ConnectDomainParams, ConnectDomainResponse, CheckDNSParams, CheckDNSResponse, RenewSSLResponse, CheckSlugParams, CheckSlugResponse, VerifyDomainParams, VerifyDomainResponse, PageData, PageCreateParams, PageDeployParams, PageUpdateParams, PageListResponse, PageDomainResponse, PageDNSCheckResponse, PageSSLRenewResponse, SiteData, SiteCreateParams, SiteUpdateParams, SiteListResponse, EdgeProxyData, EdgeProxyCreateParams, EdgeProxyUpdateParams, EdgeProxyListResponse, NamespaceStatus, NamespaceType, NamespaceResourceLimits, NamespaceData, NamespaceCreateParams, NamespaceEnsureParams, NamespaceEnsureResponse, NamespaceUpdateParams, NamespaceListParams, NamespaceListResponse, NamespaceActivity, NamespaceActivityParams, NamespaceUsageParams, NamespaceDeleteParams, QuotaPeriod, OverdraftAction, NamespaceQuota, SetNamespaceQuotaParams, ResetNamespaceQuotaParams, NamespaceListWithQuotasParams, NamespaceDetailsParams, DefaultQuotaConfig, SetDefaultQuotaParams, ToggleDefaultQuotaAutoApplyParams, DeleteDefaultQuotaParams, } from './types/index.js';
|
|
18
|
+
export type { OblienOptions, RequestOptions, ApiResponse, WorkspaceCreateParams, WorkspaceUpdateParams, WorkspaceListParams, WorkspaceListResponse, WorkspaceData, ResourceSpec, LifecycleSpec, NetworkSpec, FirewallRule, PrivateLink, RuntimeOptions, FileListParams, FileEntry, FileListResponse, FileReadParams, FileReadResponse, FileWriteParams, FileWriteResponse, FileMkdirParams, FileStatParams, FileStatResponse, FileDeleteParams, ContentSearchParams, SearchMatch, ContentSearchResponse, FileSearchParams, FileSearchResponse, SearchStatusResponse, SearchInitResponse, ExecRunParams, ExecTask, ExecListResponse, ExecStreamEvent, TerminalCreateParams, TerminalSession, TerminalListResponse, TerminalScrollbackResponse, WatcherCreateParams, WatcherInfo, WatcherListResponse, WSOptions, WSMessage, WSTerminalResize, WSTerminalExit, WSTerminalEvent, WSWatcherChange, WSWatcherReady, WSWatcherOverflow, WSWatcherEvent, TransferProgress, TransferDownloadParams, TransferUploadParams, TransferUploadResponse, LifecycleStatus, MakeTemporaryParams, UpdateTtlParams, SshStatus, SshPasswordParams, SshKeyParams, PublicAccessPort, ExposePortParams, UpdateSlugParams, SnapshotParams, ArchiveCreateParams, ArchiveInfo, WorkloadCreateParams, WorkloadUpdateParams, WorkloadInfo, WorkloadListParams, UsageParams, UpdateResourcesParams, UpdateMetadataParams, ApiAccessStatus, RawTokenResponse, NetworkUpdateParams, NetworkConfig, LogsParams, LogFile, LogStreamEvent, StatsEvent, WorkloadStatsEvent, WorkloadLogEntry, ImagesListParams, DomainInfo, ConnectDomainParams, ConnectDomainResponse, CheckDNSParams, CheckDNSResponse, RenewSSLResponse, CheckSlugParams, CheckSlugResponse, VerifyDomainParams, VerifyDomainResponse, PageData, PageCreateParams, PageDeployParams, PageUpdateParams, PageListResponse, PageDomainResponse, PageDNSCheckResponse, PageSSLRenewResponse, SiteData, SiteCreateParams, SiteUpdateParams, SiteListResponse, EdgeProxyData, EdgeProxyCreateParams, EdgeProxyUpdateParams, EdgeProxyListResponse, EdgeTunnelData, EdgeTunnelCreateParams, EdgeTunnelUpdateParams, EdgeTunnelListResponse, EdgeTunnelIssueTokenParams, EdgeTunnelTokenResponse, NamespaceStatus, NamespaceType, NamespaceResourceLimits, NamespaceData, NamespaceCreateParams, NamespaceEnsureParams, NamespaceEnsureResponse, NamespaceUpdateParams, NamespaceListParams, NamespaceListResponse, NamespaceActivity, NamespaceActivityParams, NamespaceUsageParams, NamespaceDeleteParams, QuotaPeriod, OverdraftAction, NamespaceQuota, SetNamespaceQuotaParams, ResetNamespaceQuotaParams, NamespaceListWithQuotasParams, NamespaceDetailsParams, DefaultQuotaConfig, SetDefaultQuotaParams, ToggleDefaultQuotaAutoApplyParams, DeleteDefaultQuotaParams, } from './types/index.js';
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,6CAA6C;AAC7C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,YAAY,EAEV,aAAa,EACb,cAAc,EACd,WAAW,EAEX,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,cAAc,EACd,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EAEnB,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EAEtB,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,OAAO,EACP,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAEhB,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAEhB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EAEpB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EAEpB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAEhB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EAErB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,8 @@ export { Pages } from './pages.js';
|
|
|
9
9
|
/** @deprecated Use {@link Pages} instead. */
|
|
10
10
|
export { Pages as Sites } from './pages.js';
|
|
11
11
|
export { EdgeProxy } from './edge-proxy.js';
|
|
12
|
+
export { EdgeTunnel } from './edge-tunnel.js';
|
|
13
|
+
export { TunnelClient } from './tunnel/client.js';
|
|
12
14
|
export { Domain } from './domain.js';
|
|
13
15
|
export { Tokens } from './tokens.js';
|
|
14
16
|
export { Runtime } from './runtime.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAEhD,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,6CAA6C;AAC7C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,SAAS;AACT,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAEhD,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,6CAA6C;AAC7C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,SAAS;AACT,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/runtime/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../src/runtime/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAEV,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,iBAAiB;IAErD;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkDjE;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CAS5E"}
|
package/dist/runtime/transfer.js
CHANGED
|
@@ -25,7 +25,7 @@ export class TransferResource {
|
|
|
25
25
|
* Returns the raw `Response` — read `.body` for the binary stream.
|
|
26
26
|
*/
|
|
27
27
|
async download(params) {
|
|
28
|
-
|
|
28
|
+
const response = await this._http.requestStream({
|
|
29
29
|
method: 'POST',
|
|
30
30
|
path: '/files/transfer/download',
|
|
31
31
|
body: {
|
|
@@ -33,6 +33,40 @@ export class TransferResource {
|
|
|
33
33
|
exclude_patterns: params.excludePatterns,
|
|
34
34
|
},
|
|
35
35
|
});
|
|
36
|
+
if (!params.onProgress || !response.body) {
|
|
37
|
+
return response;
|
|
38
|
+
}
|
|
39
|
+
const totalBytesHeader = response.headers.get('content-length');
|
|
40
|
+
const totalBytes = totalBytesHeader ? Number(totalBytesHeader) : undefined;
|
|
41
|
+
let loadedBytes = 0;
|
|
42
|
+
const reader = response.body.getReader();
|
|
43
|
+
const stream = new ReadableStream({
|
|
44
|
+
async pull(controller) {
|
|
45
|
+
const { done, value } = await reader.read();
|
|
46
|
+
if (done) {
|
|
47
|
+
controller.close();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (value) {
|
|
51
|
+
loadedBytes += value.byteLength;
|
|
52
|
+
params.onProgress?.({
|
|
53
|
+
phase: 'download',
|
|
54
|
+
loadedBytes,
|
|
55
|
+
totalBytes: Number.isFinite(totalBytes) ? totalBytes : undefined,
|
|
56
|
+
percent: computePercent(loadedBytes, totalBytes),
|
|
57
|
+
});
|
|
58
|
+
controller.enqueue(value);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
async cancel(reason) {
|
|
62
|
+
await reader.cancel(reason);
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
return new Response(stream, {
|
|
66
|
+
status: response.status,
|
|
67
|
+
statusText: response.statusText,
|
|
68
|
+
headers: response.headers,
|
|
69
|
+
});
|
|
36
70
|
}
|
|
37
71
|
/**
|
|
38
72
|
* Upload a tar.gz archive and extract it into the workspace.
|
|
@@ -43,7 +77,15 @@ export class TransferResource {
|
|
|
43
77
|
path: '/files/transfer/upload',
|
|
44
78
|
body: params.body,
|
|
45
79
|
query: { dest: params.dest ?? '/' },
|
|
80
|
+
totalBytes: params.totalBytes,
|
|
81
|
+
onProgress: params.onProgress,
|
|
46
82
|
});
|
|
47
83
|
}
|
|
48
84
|
}
|
|
85
|
+
function computePercent(loadedBytes, totalBytes) {
|
|
86
|
+
if (typeof totalBytes !== 'number' || !Number.isFinite(totalBytes) || totalBytes <= 0) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
return Math.min(100, (loadedBytes / totalBytes) * 100);
|
|
90
|
+
}
|
|
49
91
|
//# sourceMappingURL=transfer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/runtime/transfer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/runtime/transfer.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime-http.d.ts
CHANGED
|
@@ -33,10 +33,20 @@ export declare class RuntimeHttpClient {
|
|
|
33
33
|
body: ArrayBuffer | Uint8Array | Blob | ReadableStream<Uint8Array>;
|
|
34
34
|
query?: Record<string, string | number | boolean | undefined>;
|
|
35
35
|
contentType?: string;
|
|
36
|
+
totalBytes?: number;
|
|
37
|
+
onProgress?: (progress: {
|
|
38
|
+
phase: 'upload';
|
|
39
|
+
loadedBytes: number;
|
|
40
|
+
totalBytes?: number;
|
|
41
|
+
percent?: number;
|
|
42
|
+
}) => void;
|
|
36
43
|
}): Promise<T>;
|
|
37
44
|
getBaseUrl(): string;
|
|
38
45
|
getHeaders(): Record<string, string>;
|
|
39
46
|
private buildUrl;
|
|
40
47
|
private errorForStatus;
|
|
48
|
+
private wrapUploadBody;
|
|
49
|
+
private normalizeUploadSource;
|
|
50
|
+
private computePercent;
|
|
41
51
|
}
|
|
42
52
|
//# sourceMappingURL=runtime-http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-http.d.ts","sourceRoot":"","sources":["../src/runtime-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,EAAE,cAAc;IAQ7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;QAClC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2Bd,kCAAkC;IAC5B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB9D;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBrB,gFAAgF;IAC1E,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;QACxC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACnE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-http.d.ts","sourceRoot":"","sources":["../src/runtime-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,EAAE,cAAc;IAQ7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;QAClC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2Bd,kCAAkC;IAC5B,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB9D;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBrB,gFAAgF;IAC1E,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;QACxC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QACnE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;QAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE;YAAE,KAAK,EAAE,QAAQ,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,CAAC;KAClH,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBd,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMpC,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IA4CtB,OAAO,CAAC,qBAAqB;IA0C7B,OAAO,CAAC,cAAc;CAMvB"}
|
package/dist/runtime-http.js
CHANGED
|
@@ -76,13 +76,14 @@ export class RuntimeHttpClient {
|
|
|
76
76
|
/** Send a raw binary body (for tar.gz upload). Returns parsed JSON response. */
|
|
77
77
|
async requestUpload(options) {
|
|
78
78
|
const url = this.buildUrl(options.path, options.query);
|
|
79
|
+
const upload = this.wrapUploadBody(options.body, options.totalBytes, options.onProgress);
|
|
79
80
|
const res = await fetch(url, {
|
|
80
81
|
method: 'POST',
|
|
81
82
|
headers: {
|
|
82
83
|
'Authorization': this.headers['Authorization'],
|
|
83
84
|
'Content-Type': options.contentType ?? 'application/gzip',
|
|
84
85
|
},
|
|
85
|
-
body:
|
|
86
|
+
body: upload.body,
|
|
86
87
|
duplex: 'half',
|
|
87
88
|
});
|
|
88
89
|
const json = await res.json().catch(() => null);
|
|
@@ -111,5 +112,86 @@ export class RuntimeHttpClient {
|
|
|
111
112
|
errorForStatus(status, body) {
|
|
112
113
|
return buildOblienError(status, body);
|
|
113
114
|
}
|
|
115
|
+
wrapUploadBody(body, totalBytes, onProgress) {
|
|
116
|
+
if (!onProgress) {
|
|
117
|
+
return { body };
|
|
118
|
+
}
|
|
119
|
+
const source = this.normalizeUploadSource(body, totalBytes);
|
|
120
|
+
let loadedBytes = 0;
|
|
121
|
+
const stream = new ReadableStream({
|
|
122
|
+
start: async (controller) => {
|
|
123
|
+
const reader = source.stream.getReader();
|
|
124
|
+
try {
|
|
125
|
+
for (;;) {
|
|
126
|
+
const { done, value } = await reader.read();
|
|
127
|
+
if (done)
|
|
128
|
+
break;
|
|
129
|
+
if (!value)
|
|
130
|
+
continue;
|
|
131
|
+
loadedBytes += value.byteLength;
|
|
132
|
+
onProgress({
|
|
133
|
+
phase: 'upload',
|
|
134
|
+
loadedBytes,
|
|
135
|
+
totalBytes: source.totalBytes,
|
|
136
|
+
percent: this.computePercent(loadedBytes, source.totalBytes),
|
|
137
|
+
});
|
|
138
|
+
controller.enqueue(value);
|
|
139
|
+
}
|
|
140
|
+
if (source.totalBytes === 0) {
|
|
141
|
+
onProgress({ phase: 'upload', loadedBytes: 0, totalBytes: 0, percent: 100 });
|
|
142
|
+
}
|
|
143
|
+
controller.close();
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
controller.error(error);
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
reader.releaseLock();
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
return { body: stream };
|
|
154
|
+
}
|
|
155
|
+
normalizeUploadSource(body, totalBytes) {
|
|
156
|
+
if (body instanceof Uint8Array) {
|
|
157
|
+
return {
|
|
158
|
+
stream: new ReadableStream({
|
|
159
|
+
start(controller) {
|
|
160
|
+
controller.enqueue(body);
|
|
161
|
+
controller.close();
|
|
162
|
+
},
|
|
163
|
+
}),
|
|
164
|
+
totalBytes: totalBytes ?? body.byteLength,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if (body instanceof ArrayBuffer) {
|
|
168
|
+
const bytes = new Uint8Array(body);
|
|
169
|
+
return {
|
|
170
|
+
stream: new ReadableStream({
|
|
171
|
+
start(controller) {
|
|
172
|
+
controller.enqueue(bytes);
|
|
173
|
+
controller.close();
|
|
174
|
+
},
|
|
175
|
+
}),
|
|
176
|
+
totalBytes: totalBytes ?? bytes.byteLength,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (typeof Blob !== 'undefined' && body instanceof Blob) {
|
|
180
|
+
return {
|
|
181
|
+
stream: body.stream(),
|
|
182
|
+
totalBytes: totalBytes ?? body.size,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
stream: body,
|
|
187
|
+
totalBytes,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
computePercent(loadedBytes, totalBytes) {
|
|
191
|
+
if (typeof totalBytes !== 'number' || totalBytes <= 0) {
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
return Math.min(100, (loadedBytes / totalBytes) * 100);
|
|
195
|
+
}
|
|
114
196
|
}
|
|
115
197
|
//# sourceMappingURL=runtime-http.js.map
|
package/dist/runtime-http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-http.js","sourceRoot":"","sources":["../src/runtime-http.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime-http.js","sourceRoot":"","sources":["../src/runtime-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tunnel client — connects to the broker over WebSocket and forwards
|
|
3
|
+
* incoming requests to a local TCP port.
|
|
4
|
+
*
|
|
5
|
+
* This is the agent side of the tunnel. Use it directly for programmatic
|
|
6
|
+
* control, or via {@link EdgeTunnel.connect} for the full create+connect flow.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { TunnelClient } from 'oblien';
|
|
10
|
+
*
|
|
11
|
+
* const client = new TunnelClient({
|
|
12
|
+
* connectUrl: 'wss://edge.oblien.com/connect',
|
|
13
|
+
* token: '<tunnel-jwt>',
|
|
14
|
+
* localPort: 3000,
|
|
15
|
+
* });
|
|
16
|
+
*
|
|
17
|
+
* client.on('open', () => console.log('connected'));
|
|
18
|
+
* client.on('request', (streamId, port) => console.log(`→ localhost:${port}`));
|
|
19
|
+
* client.on('disconnect', (code, reason) => console.log('lost connection'));
|
|
20
|
+
* client.on('close', () => console.log('done'));
|
|
21
|
+
*
|
|
22
|
+
* client.connect();
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { EventEmitter } from 'node:events';
|
|
26
|
+
export interface TunnelClientOptions {
|
|
27
|
+
/** WebSocket URL (wss://edge.oblien.com/connect). */
|
|
28
|
+
connectUrl: string;
|
|
29
|
+
/** JWT token for broker auth. */
|
|
30
|
+
token: string;
|
|
31
|
+
/** Override the local port to forward to. */
|
|
32
|
+
localPort?: number;
|
|
33
|
+
/** Optional absolute token expiry time from the issuer. */
|
|
34
|
+
tokenExpiresAt?: string | Date;
|
|
35
|
+
/** Minimum TTL required before connect proceeds. Defaults to 15 seconds. */
|
|
36
|
+
minTokenTtlMs?: number;
|
|
37
|
+
}
|
|
38
|
+
export declare class TunnelClient extends EventEmitter {
|
|
39
|
+
private readonly opts;
|
|
40
|
+
private ws;
|
|
41
|
+
private streams;
|
|
42
|
+
private connected;
|
|
43
|
+
private closing;
|
|
44
|
+
constructor(opts: TunnelClientOptions);
|
|
45
|
+
/** Open the WebSocket connection and start forwarding. */
|
|
46
|
+
connect(): void;
|
|
47
|
+
/** Gracefully close the tunnel. */
|
|
48
|
+
close(): void;
|
|
49
|
+
/** Whether the WebSocket is connected. */
|
|
50
|
+
get isConnected(): boolean;
|
|
51
|
+
private handleFrame;
|
|
52
|
+
/**
|
|
53
|
+
* OPEN: broker wants us to open a TCP connection to localhost:port.
|
|
54
|
+
* We open the connection immediately and store it in the stream map.
|
|
55
|
+
*/
|
|
56
|
+
private onOpen;
|
|
57
|
+
/**
|
|
58
|
+
* DATA: raw bytes for an existing stream → write to the TCP socket.
|
|
59
|
+
*/
|
|
60
|
+
private onData;
|
|
61
|
+
/**
|
|
62
|
+
* CLOSE: broker is done sending request data.
|
|
63
|
+
* Half-close the TCP write side and start reading the response.
|
|
64
|
+
*/
|
|
65
|
+
private onClose;
|
|
66
|
+
private sendFrame;
|
|
67
|
+
private cleanup;
|
|
68
|
+
private getPreflightAuthFailure;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tunnel/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAe3C,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD,qBAAa,YAAa,SAAQ,YAAY;IAMhC,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEK,IAAI,EAAE,mBAAmB;IAItD,0DAA0D;IAC1D,OAAO,IAAI,IAAI;IAgDf,mCAAmC;IACnC,KAAK,IAAI,IAAI;IAUb,0CAA0C;IAC1C,IAAI,WAAW,IAAI,OAAO,CAEzB;IAID,OAAO,CAAC,WAAW;IAkBnB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAed;;OAEG;IACH,OAAO,CAAC,MAAM;IAMd;;;OAGG;IACH,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,uBAAuB;CA4BhC"}
|