@query-farm/vgi-rpc 0.3.4 → 0.6.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/README.md +47 -0
- package/dist/auth.d.ts +13 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/client/connect.d.ts.map +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/introspect.d.ts +1 -0
- package/dist/client/introspect.d.ts.map +1 -1
- package/dist/client/oauth.d.ts +62 -0
- package/dist/client/oauth.d.ts.map +1 -0
- package/dist/client/pipe.d.ts +3 -0
- package/dist/client/pipe.d.ts.map +1 -1
- package/dist/client/stream.d.ts +5 -0
- package/dist/client/stream.d.ts.map +1 -1
- package/dist/client/types.d.ts +6 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/constants.d.ts +3 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/dispatch/describe.d.ts.map +1 -1
- package/dist/dispatch/stream.d.ts +2 -1
- package/dist/dispatch/stream.d.ts.map +1 -1
- package/dist/dispatch/unary.d.ts +2 -1
- package/dist/dispatch/unary.d.ts.map +1 -1
- package/dist/external.d.ts +45 -0
- package/dist/external.d.ts.map +1 -0
- package/dist/gcs.d.ts +38 -0
- package/dist/gcs.d.ts.map +1 -0
- package/dist/http/auth.d.ts +32 -0
- package/dist/http/auth.d.ts.map +1 -0
- package/dist/http/bearer.d.ts +34 -0
- package/dist/http/bearer.d.ts.map +1 -0
- package/dist/http/dispatch.d.ts +4 -0
- package/dist/http/dispatch.d.ts.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/index.d.ts +8 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/jwt.d.ts +21 -0
- package/dist/http/jwt.d.ts.map +1 -0
- package/dist/http/mtls.d.ts +78 -0
- package/dist/http/mtls.d.ts.map +1 -0
- package/dist/http/pages.d.ts +9 -0
- package/dist/http/pages.d.ts.map +1 -0
- package/dist/http/types.d.ts +22 -1
- package/dist/http/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2576 -317
- package/dist/index.js.map +27 -18
- package/dist/otel.d.ts +47 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/s3.d.ts +43 -0
- package/dist/s3.d.ts.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/types.d.ts +38 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/wire/response.d.ts.map +1 -1
- package/package.json +46 -2
- package/src/auth.ts +31 -0
- package/src/client/connect.ts +28 -6
- package/src/client/index.ts +11 -0
- package/src/client/introspect.ts +15 -3
- package/src/client/oauth.ts +167 -0
- package/src/client/pipe.ts +19 -4
- package/src/client/stream.ts +32 -7
- package/src/client/types.ts +6 -0
- package/src/constants.ts +4 -1
- package/src/dispatch/describe.ts +20 -0
- package/src/dispatch/stream.ts +18 -4
- package/src/dispatch/unary.ts +6 -1
- package/src/external.ts +209 -0
- package/src/gcs.ts +86 -0
- package/src/http/auth.ts +110 -0
- package/src/http/bearer.ts +107 -0
- package/src/http/dispatch.ts +32 -10
- package/src/http/handler.ts +120 -3
- package/src/http/index.ts +14 -0
- package/src/http/jwt.ts +80 -0
- package/src/http/mtls.ts +298 -0
- package/src/http/pages.ts +298 -0
- package/src/http/types.ts +23 -1
- package/src/index.ts +32 -0
- package/src/otel.ts +161 -0
- package/src/s3.ts +94 -0
- package/src/server.ts +42 -8
- package/src/types.ts +51 -3
- package/src/wire/response.ts +28 -14
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ Define RPC methods with Arrow-typed schemas, serve them over stdin/stdout, and i
|
|
|
15
15
|
- **Type-safe streaming state** — generic `<S>` parameter threads state types through init and produce/exchange functions
|
|
16
16
|
- **Runtime introspection** — opt-in `__describe__` method for dynamic service discovery via the CLI
|
|
17
17
|
- **Result validation** — missing required fields in handler results throw descriptive errors at emit time
|
|
18
|
+
- **Authentication** — bearer tokens, JWT, mTLS (PEM-in-header and XFCC), with chainable authenticators
|
|
18
19
|
- **Three client transports** — HTTP, subprocess, and raw pipe, all sharing a unified `RpcClient` interface
|
|
19
20
|
|
|
20
21
|
## Installation
|
|
@@ -297,6 +298,52 @@ handler: async ({ a, b }) => {
|
|
|
297
298
|
|
|
298
299
|
Errors are transmitted as zero-row Arrow batches with `EXCEPTION`-level metadata. The transport remains clean for subsequent requests.
|
|
299
300
|
|
|
301
|
+
## Authentication
|
|
302
|
+
|
|
303
|
+
The HTTP handler supports pluggable authentication. Built-in factories cover common strategies:
|
|
304
|
+
|
|
305
|
+
```typescript
|
|
306
|
+
import {
|
|
307
|
+
createHttpHandler,
|
|
308
|
+
chainAuthenticate,
|
|
309
|
+
mtlsAuthenticateSubject,
|
|
310
|
+
bearerAuthenticateStatic,
|
|
311
|
+
jwtAuthenticate,
|
|
312
|
+
AuthContext,
|
|
313
|
+
} from "@query-farm/vgi-rpc";
|
|
314
|
+
|
|
315
|
+
// mTLS via proxy-forwarded client certificate
|
|
316
|
+
const mtlsAuth = mtlsAuthenticateSubject({
|
|
317
|
+
allowedSubjects: new Set(["my-service"]),
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
// Static API key map
|
|
321
|
+
const apiKeyAuth = bearerAuthenticateStatic({
|
|
322
|
+
tokens: { "sk-abc123": new AuthContext("apikey", true, "ci-bot") },
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// Chain: try mTLS first, fall back to API key
|
|
326
|
+
const auth = chainAuthenticate(mtlsAuth, apiKeyAuth);
|
|
327
|
+
|
|
328
|
+
const handler = createHttpHandler(protocol, {
|
|
329
|
+
signingKey: myKey,
|
|
330
|
+
authenticate: auth,
|
|
331
|
+
});
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
Available factories:
|
|
335
|
+
|
|
336
|
+
| Factory | Description |
|
|
337
|
+
|---------|-------------|
|
|
338
|
+
| `bearerAuthenticate` | Custom bearer token validation |
|
|
339
|
+
| `bearerAuthenticateStatic` | Static token map with constant-time comparison |
|
|
340
|
+
| `jwtAuthenticate` | JWT validation via OIDC discovery |
|
|
341
|
+
| `mtlsAuthenticate` | Custom X.509 certificate validation |
|
|
342
|
+
| `mtlsAuthenticateFingerprint` | Certificate fingerprint lookup |
|
|
343
|
+
| `mtlsAuthenticateSubject` | Subject CN extraction with optional allowlist |
|
|
344
|
+
| `mtlsAuthenticateXfcc` | Envoy `x-forwarded-client-cert` header |
|
|
345
|
+
| `chainAuthenticate` | Try multiple strategies in order |
|
|
346
|
+
|
|
300
347
|
## Testing with the Python CLI
|
|
301
348
|
|
|
302
349
|
The [vgi-rpc CLI](https://github.com/Query-farm/vgi-rpc-python) can introspect and call methods on any TypeScript server:
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Authentication context available to RPC handlers. */
|
|
2
|
+
export declare class AuthContext {
|
|
3
|
+
readonly domain: string;
|
|
4
|
+
readonly authenticated: boolean;
|
|
5
|
+
readonly principal: string | null;
|
|
6
|
+
readonly claims: Record<string, any>;
|
|
7
|
+
constructor(domain: string, authenticated: boolean, principal: string | null, claims?: Record<string, any>);
|
|
8
|
+
/** Create an unauthenticated (anonymous) context. */
|
|
9
|
+
static anonymous(): AuthContext;
|
|
10
|
+
/** Throw an RpcError if this context is not authenticated. */
|
|
11
|
+
requireAuthenticated(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAKA,wDAAwD;AACxD,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEzB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAO9G,qDAAqD;IACrD,MAAM,CAAC,SAAS,IAAI,WAAW;IAI/B,8DAA8D;IAC9D,oBAAoB,IAAI,IAAI;CAK7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/client/connect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/client/connect.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAS3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKpE,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACxC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAsSpF"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { httpConnect, type RpcClient } from "./connect.js";
|
|
2
2
|
export { httpIntrospect, type MethodInfo, parseDescribeResponse, type ServiceDescription } from "./introspect.js";
|
|
3
|
+
export type { OAuthResourceMetadataResponse } from "./oauth.js";
|
|
4
|
+
export { fetchOAuthMetadata, httpOAuthMetadata, parseClientId, parseClientSecret, parseDeviceCodeClientId, parseDeviceCodeClientSecret, parseResourceMetadataUrl, parseUseIdTokenAsBearer, } from "./oauth.js";
|
|
3
5
|
export { PipeStreamSession, pipeConnect, subprocessConnect } from "./pipe.js";
|
|
4
6
|
export { HttpStreamSession } from "./stream.js";
|
|
5
7
|
export type { HttpConnectOptions, LogMessage, PipeConnectOptions, StreamSession, SubprocessConnectOptions, } from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClH,YAAY,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
|
@@ -26,5 +26,6 @@ export declare function parseDescribeResponse(batches: RecordBatch[], onLog?: (m
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function httpIntrospect(baseUrl: string, options?: {
|
|
28
28
|
prefix?: string;
|
|
29
|
+
authorization?: string;
|
|
29
30
|
}): Promise<ServiceDescription>;
|
|
30
31
|
//# sourceMappingURL=introspect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/client/introspect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,WAAW,EAAqB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/client/introspect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,WAAW,EAAqB,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AASD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAwE7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,kBAAkB,CAAC,CAuB7B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/** RFC 9728 OAuth Protected Resource Metadata (client-side response). */
|
|
2
|
+
export interface OAuthResourceMetadataResponse {
|
|
3
|
+
resource: string;
|
|
4
|
+
authorizationServers: string[];
|
|
5
|
+
scopesSupported?: string[];
|
|
6
|
+
bearerMethodsSupported?: string[];
|
|
7
|
+
resourceSigningAlgValuesSupported?: string[];
|
|
8
|
+
resourceName?: string;
|
|
9
|
+
resourceDocumentation?: string;
|
|
10
|
+
resourcePolicyUri?: string;
|
|
11
|
+
resourceTosUri?: string;
|
|
12
|
+
/** OAuth client_id advertised by the server. */
|
|
13
|
+
clientId?: string;
|
|
14
|
+
/** OAuth client_secret advertised by the server. */
|
|
15
|
+
clientSecret?: string;
|
|
16
|
+
/** When true, use the OIDC id_token as the Bearer token instead of access_token. */
|
|
17
|
+
useIdTokenAsBearer?: boolean;
|
|
18
|
+
/** OAuth client_id for device code flow. */
|
|
19
|
+
deviceCodeClientId?: string;
|
|
20
|
+
/** OAuth client_secret for device code flow. */
|
|
21
|
+
deviceCodeClientSecret?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Discover OAuth Protected Resource Metadata (RFC 9728) from a vgi-rpc server.
|
|
25
|
+
* Returns `null` if the server does not serve the well-known endpoint.
|
|
26
|
+
*/
|
|
27
|
+
export declare function httpOAuthMetadata(baseUrl: string, prefix?: string): Promise<OAuthResourceMetadataResponse | null>;
|
|
28
|
+
/**
|
|
29
|
+
* Fetch OAuth Protected Resource Metadata from an explicit metadata URL.
|
|
30
|
+
*/
|
|
31
|
+
export declare function fetchOAuthMetadata(metadataUrl: string): Promise<OAuthResourceMetadataResponse>;
|
|
32
|
+
/**
|
|
33
|
+
* Extract the `resource_metadata` URL from a WWW-Authenticate Bearer challenge.
|
|
34
|
+
* Returns `null` if no resource_metadata parameter is found.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseResourceMetadataUrl(wwwAuthenticate: string): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Extract the `client_id` from a WWW-Authenticate Bearer challenge.
|
|
39
|
+
* Returns `null` if no client_id parameter is found.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseClientId(wwwAuthenticate: string): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Extract the `client_secret` from a WWW-Authenticate Bearer challenge.
|
|
44
|
+
* Returns `null` if no client_secret parameter is found.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseClientSecret(wwwAuthenticate: string): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Extract the `use_id_token_as_bearer` flag from a WWW-Authenticate Bearer challenge.
|
|
49
|
+
* Returns `true` if the parameter is present and set to "true", `false` otherwise.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseUseIdTokenAsBearer(wwwAuthenticate: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Extract the `device_code_client_id` from a WWW-Authenticate Bearer challenge.
|
|
54
|
+
* Returns `null` if no device_code_client_id parameter is found.
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseDeviceCodeClientId(wwwAuthenticate: string): string | null;
|
|
57
|
+
/**
|
|
58
|
+
* Extract the `device_code_client_secret` from a WWW-Authenticate Bearer challenge.
|
|
59
|
+
* Returns `null` if no device_code_client_secret parameter is found.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseDeviceCodeClientSecret(wwwAuthenticate: string): string | null;
|
|
62
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/client/oauth.ts"],"names":[],"mappings":"AAGA,yEAAyE;AACzE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,iCAAiC,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAuBD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAS/C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAOpG;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU/E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASpE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASxE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CASxE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS9E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASlF"}
|
package/dist/client/pipe.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Schema } from "@query-farm/apache-arrow";
|
|
2
|
+
import { type ExternalLocationConfig } from "../external.js";
|
|
2
3
|
import { IpcStreamReader } from "../wire/reader.js";
|
|
3
4
|
import type { RpcClient } from "./connect.js";
|
|
4
5
|
import type { LogMessage, PipeConnectOptions, StreamSession, SubprocessConnectOptions } from "./types.js";
|
|
@@ -20,6 +21,7 @@ export declare class PipeStreamSession implements StreamSession {
|
|
|
20
21
|
private _outputSchema;
|
|
21
22
|
private _releaseBusy;
|
|
22
23
|
private _setDrainPromise;
|
|
24
|
+
private _externalConfig?;
|
|
23
25
|
constructor(opts: {
|
|
24
26
|
reader: IpcStreamReader;
|
|
25
27
|
writeFn: WriteFn;
|
|
@@ -28,6 +30,7 @@ export declare class PipeStreamSession implements StreamSession {
|
|
|
28
30
|
outputSchema: Schema;
|
|
29
31
|
releaseBusy: () => void;
|
|
30
32
|
setDrainPromise: (p: Promise<void>) => void;
|
|
33
|
+
externalConfig?: ExternalLocationConfig;
|
|
31
34
|
});
|
|
32
35
|
get header(): Record<string, any> | null;
|
|
33
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../src/client/pipe.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,MAAM,EAGP,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../src/client/pipe.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,MAAM,EAGP,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,KAAK,sBAAsB,EAAoD,MAAM,gBAAgB,CAAC;AAE/G,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAM1G,UAAU,YAAY;IACpB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,GAAG,IAAI,IAAI,CAAC;CACb;AAED,KAAK,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AA6C3C,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAC,CAA4B;IAC3C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAAC,CAAyB;gBAErC,IAAI,EAAE;QAChB,MAAM,EAAE,eAAe,CAAC;QACxB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QACnC,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;QAC5C,cAAc,CAAC,EAAE,sBAAsB,CAAC;KACzC;IAWD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAEvC;IAED;;;;OAIG;YACW,gBAAgB;IAqB9B;;;;;OAKG;YACW,mBAAmB;IASjC;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAsG5E;;OAEG;YACW,QAAQ;IAiBtB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAqD7E,KAAK,IAAI,IAAI;CAoCd;AAMD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,SAAS,CAkOX;AAMD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAwC9F"}
|
package/dist/client/stream.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RecordBatch, Schema } from "@query-farm/apache-arrow";
|
|
2
|
+
import { type ExternalLocationConfig } from "../external.js";
|
|
2
3
|
import type { LogMessage, StreamSession } from "./types.js";
|
|
3
4
|
type CompressFn = (data: Uint8Array, level: number) => Uint8Array;
|
|
4
5
|
type DecompressFn = (data: Uint8Array) => Uint8Array;
|
|
@@ -16,6 +17,8 @@ export declare class HttpStreamSession implements StreamSession {
|
|
|
16
17
|
private _compressionLevel?;
|
|
17
18
|
private _compressFn?;
|
|
18
19
|
private _decompressFn?;
|
|
20
|
+
private _authorization?;
|
|
21
|
+
private _externalConfig?;
|
|
19
22
|
constructor(opts: {
|
|
20
23
|
baseUrl: string;
|
|
21
24
|
prefix: string;
|
|
@@ -30,6 +33,8 @@ export declare class HttpStreamSession implements StreamSession {
|
|
|
30
33
|
compressionLevel?: number;
|
|
31
34
|
compressFn?: CompressFn;
|
|
32
35
|
decompressFn?: DecompressFn;
|
|
36
|
+
authorization?: string;
|
|
37
|
+
externalConfig?: ExternalLocationConfig;
|
|
33
38
|
});
|
|
34
39
|
get header(): Record<string, any> | null;
|
|
35
40
|
private _buildHeaders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,WAAW,EAAE,MAAM,EAA2B,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/client/stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,WAAW,EAAE,MAAM,EAA2B,MAAM,0BAA0B,CAAC;AAGzG,OAAO,EAAE,KAAK,sBAAsB,EAAoD,MAAM,gBAAgB,CAAC;AAG/G,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC;AAClE,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC;AAErD,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAC,CAA4B;IAC3C,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,eAAe,CAAC,CAAyB;gBAErC,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;QAClC,cAAc,EAAE,WAAW,EAAE,CAAC;QAC9B,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,sBAAsB,CAAC;KACzC;IAkBD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAEvC;IAED,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;YAON,aAAa;IAQ3B;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YA0D9D,WAAW;IAuCzB,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAkD/D,iBAAiB;IA2B/B,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/client/types.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ export interface HttpConnectOptions {
|
|
|
2
2
|
prefix?: string;
|
|
3
3
|
onLog?: (msg: LogMessage) => void;
|
|
4
4
|
compressionLevel?: number;
|
|
5
|
+
/** Authorization header value (e.g. "Bearer <token>"). Sent with every request. */
|
|
6
|
+
authorization?: string;
|
|
7
|
+
/** External storage config for resolving externalized batches. */
|
|
8
|
+
externalLocation?: import("../external.js").ExternalLocationConfig;
|
|
5
9
|
}
|
|
6
10
|
export interface LogMessage {
|
|
7
11
|
level: string;
|
|
@@ -16,6 +20,8 @@ export interface StreamSession {
|
|
|
16
20
|
}
|
|
17
21
|
export interface PipeConnectOptions {
|
|
18
22
|
onLog?: (msg: LogMessage) => void;
|
|
23
|
+
/** External storage config for resolving externalized batches. */
|
|
24
|
+
externalLocation?: import("../external.js").ExternalLocationConfig;
|
|
19
25
|
}
|
|
20
26
|
export interface SubprocessConnectOptions extends PipeConnectOptions {
|
|
21
27
|
cwd?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,EAAE,sBAAsB,CAAC;CACpE;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,EAAE,sBAAsB,CAAC;CACpE;AAED,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;CACxC"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -9,7 +9,9 @@ export declare const SERVER_ID_KEY = "vgi_rpc.server_id";
|
|
|
9
9
|
export declare const REQUEST_ID_KEY = "vgi_rpc.request_id";
|
|
10
10
|
export declare const PROTOCOL_NAME_KEY = "vgi_rpc.protocol_name";
|
|
11
11
|
export declare const DESCRIBE_VERSION_KEY = "vgi_rpc.describe_version";
|
|
12
|
-
export declare const DESCRIBE_VERSION = "
|
|
12
|
+
export declare const DESCRIBE_VERSION = "3";
|
|
13
13
|
export declare const DESCRIBE_METHOD_NAME = "__describe__";
|
|
14
14
|
export declare const STATE_KEY = "vgi_rpc.stream_state#b64";
|
|
15
|
+
export declare const LOCATION_KEY = "vgi_rpc.location";
|
|
16
|
+
export declare const LOCATION_SHA256_KEY = "vgi_rpc.location.sha256";
|
|
15
17
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAE7D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAC/D,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,eAAO,MAAM,SAAS,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAE7D,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,eAAe,wBAAwB,CAAC;AACrD,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,aAAa,sBAAsB,CAAC;AACjD,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAC/D,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,eAAO,MAAM,SAAS,6BAA6B,CAAC;AAEpD,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/dispatch/describe.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,WAAW,EACX,MAAM,EAIP,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD;;GAEG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../src/dispatch/describe.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,WAAW,EACX,MAAM,EAIP,MAAM,0BAA0B,CAAC;AASlC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD;;GAEG;AACH,eAAO,MAAM,eAAe,aAa1B,CAAC;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACtC,QAAQ,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAgHvD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ExternalLocationConfig } from "../external.js";
|
|
1
2
|
import type { MethodDefinition } from "../types.js";
|
|
2
3
|
import type { IpcStreamReader } from "../wire/reader.js";
|
|
3
4
|
import type { IpcStreamWriter } from "../wire/writer.js";
|
|
@@ -16,5 +17,5 @@ import type { IpcStreamWriter } from "../wire/writer.js";
|
|
|
16
17
|
* - Server writes output batch(es) for each input
|
|
17
18
|
* - Stream ends when client closes input (EOS)
|
|
18
19
|
*/
|
|
19
|
-
export declare function dispatchStream(method: MethodDefinition, params: Record<string, any>, writer: IpcStreamWriter, reader: IpcStreamReader, serverId: string, requestId: string | null): Promise<void>;
|
|
20
|
+
export declare function dispatchStream(method: MethodDefinition, params: Record<string, any>, writer: IpcStreamWriter, reader: IpcStreamReader, serverId: string, requestId: string | null, externalConfig?: ExternalLocationConfig): Promise<void>;
|
|
20
21
|
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/dispatch/stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/dispatch/stream.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAyB,MAAM,gBAAgB,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,cAAc,CAAC,EAAE,sBAAsB,GACtC,OAAO,CAAC,IAAI,CAAC,CA8Hf"}
|
package/dist/dispatch/unary.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ExternalLocationConfig } from "../external.js";
|
|
1
2
|
import type { MethodDefinition } from "../types.js";
|
|
2
3
|
import type { IpcStreamWriter } from "../wire/writer.js";
|
|
3
4
|
/**
|
|
@@ -5,5 +6,5 @@ import type { IpcStreamWriter } from "../wire/writer.js";
|
|
|
5
6
|
* Calls the handler with parsed params, writes result or error batch.
|
|
6
7
|
* Supports client-directed logging via ctx.clientLog().
|
|
7
8
|
*/
|
|
8
|
-
export declare function dispatchUnary(method: MethodDefinition, params: Record<string, any>, writer: IpcStreamWriter, serverId: string, requestId: string | null): Promise<void>;
|
|
9
|
+
export declare function dispatchUnary(method: MethodDefinition, params: Record<string, any>, writer: IpcStreamWriter, serverId: string, requestId: string | null, externalConfig?: ExternalLocationConfig): Promise<void>;
|
|
9
10
|
//# sourceMappingURL=unary.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unary.d.ts","sourceRoot":"","sources":["../../src/dispatch/unary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"unary.d.ts","sourceRoot":"","sources":["../../src/dispatch/unary.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,sBAAsB,EAAyB,MAAM,gBAAgB,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,cAAc,CAAC,EAAE,sBAAsB,GACtC,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External storage support for large Arrow IPC batches.
|
|
3
|
+
*
|
|
4
|
+
* When a batch exceeds a configurable threshold, it is serialized to IPC,
|
|
5
|
+
* optionally compressed with zstd, and uploaded to pluggable storage.
|
|
6
|
+
* The batch is replaced with a zero-row "pointer batch" containing the
|
|
7
|
+
* download URL and SHA-256 checksum in metadata.
|
|
8
|
+
*/
|
|
9
|
+
import { type RecordBatch, type Schema } from "@query-farm/apache-arrow";
|
|
10
|
+
/** Pluggable storage backend for uploading large batches. */
|
|
11
|
+
export interface ExternalStorage {
|
|
12
|
+
/** Upload IPC data and return a URL for retrieval. */
|
|
13
|
+
upload(data: Uint8Array, contentEncoding: string): Promise<string>;
|
|
14
|
+
}
|
|
15
|
+
/** Configuration for external storage of large batches. */
|
|
16
|
+
export interface ExternalLocationConfig {
|
|
17
|
+
/** Storage backend for uploading. */
|
|
18
|
+
storage: ExternalStorage;
|
|
19
|
+
/** Minimum batch byte size to trigger externalization. Default: 1MB. */
|
|
20
|
+
externalizeThresholdBytes?: number;
|
|
21
|
+
/** Optional zstd compression for uploaded data. */
|
|
22
|
+
compression?: {
|
|
23
|
+
algorithm: "zstd";
|
|
24
|
+
level?: number;
|
|
25
|
+
};
|
|
26
|
+
/** URL validator called before fetching. Throw to reject. Default: HTTPS-only. */
|
|
27
|
+
urlValidator?: ((url: string) => void) | null;
|
|
28
|
+
}
|
|
29
|
+
/** Default validator that rejects non-HTTPS URLs. */
|
|
30
|
+
export declare function httpsOnlyValidator(url: string): void;
|
|
31
|
+
/** Returns true if the batch is a zero-row pointer to external data. */
|
|
32
|
+
export declare function isExternalLocationBatch(batch: RecordBatch): boolean;
|
|
33
|
+
/** Create a zero-row pointer batch with location URL and optional SHA-256. */
|
|
34
|
+
export declare function makeExternalLocationBatch(schema: Schema, url: string, sha256?: string): RecordBatch;
|
|
35
|
+
/**
|
|
36
|
+
* Maybe externalize a batch if it exceeds the threshold.
|
|
37
|
+
* Returns the original batch unchanged if below threshold or no config.
|
|
38
|
+
*/
|
|
39
|
+
export declare function maybeExternalizeBatch(batch: RecordBatch, config?: ExternalLocationConfig | null): Promise<RecordBatch>;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve an external pointer batch by fetching the data from the URL.
|
|
42
|
+
* Returns the original batch unchanged if not a pointer or no config.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveExternalLocation(batch: RecordBatch, config?: ExternalLocationConfig | null): Promise<RecordBatch>;
|
|
45
|
+
//# sourceMappingURL=external.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,WAAW,EAA8C,KAAK,MAAM,EAAE,MAAM,0BAA0B,CAAC;AASrH,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,wEAAwE;IACxE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mDAAmD;IACnD,WAAW,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,kFAAkF;IAClF,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/C;AAQD,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKpD;AAoBD,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAKnE;AAMD,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAOnG;AA4BD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACrC,OAAO,CAAC,WAAW,CAAC,CAyBtB;AAMD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACrC,OAAO,CAAC,WAAW,CAAC,CA4CtB"}
|
package/dist/gcs.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Cloud Storage backend for external storage of large Arrow IPC batches.
|
|
3
|
+
*
|
|
4
|
+
* Requires `@google-cloud/storage` as a peer dependency.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { createGCSStorage } from "@query-farm/vgi-rpc/gcs";
|
|
9
|
+
*
|
|
10
|
+
* const storage = createGCSStorage({
|
|
11
|
+
* bucket: "my-bucket",
|
|
12
|
+
* prefix: "vgi-rpc/",
|
|
13
|
+
* });
|
|
14
|
+
* const handler = createHttpHandler(protocol, {
|
|
15
|
+
* externalLocation: { storage, externalizeThresholdBytes: 1_048_576 },
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import type { ExternalStorage } from "./external.js";
|
|
20
|
+
/** Configuration for the GCS storage backend. */
|
|
21
|
+
export interface GCSStorageConfig {
|
|
22
|
+
/** GCS bucket name. */
|
|
23
|
+
bucket: string;
|
|
24
|
+
/** Key prefix for uploaded objects. Default: "vgi-rpc/". */
|
|
25
|
+
prefix?: string;
|
|
26
|
+
/** Lifetime of signed GET URLs in seconds. Default: 3600 (1 hour). */
|
|
27
|
+
presignExpirySeconds?: number;
|
|
28
|
+
/** GCS project ID. If omitted, uses Application Default Credentials. */
|
|
29
|
+
projectId?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create a GCS-backed ExternalStorage.
|
|
33
|
+
*
|
|
34
|
+
* Lazily imports `@google-cloud/storage` on first upload to avoid
|
|
35
|
+
* loading the SDK unless needed.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createGCSStorage(config: GCSStorageConfig): ExternalStorage;
|
|
38
|
+
//# sourceMappingURL=gcs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcs.d.ts","sourceRoot":"","sources":["../src/gcs.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CA2C1E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AuthContext } from "../auth.js";
|
|
2
|
+
/** Async function that authenticates an incoming HTTP request. */
|
|
3
|
+
export type AuthenticateFn = (request: Request) => AuthContext | Promise<AuthContext>;
|
|
4
|
+
/** RFC 9728 OAuth Protected Resource Metadata. */
|
|
5
|
+
export interface OAuthResourceMetadata {
|
|
6
|
+
resource: string;
|
|
7
|
+
authorizationServers: string[];
|
|
8
|
+
scopesSupported?: string[];
|
|
9
|
+
bearerMethodsSupported?: string[];
|
|
10
|
+
resourceSigningAlgValuesSupported?: string[];
|
|
11
|
+
resourceName?: string;
|
|
12
|
+
resourceDocumentation?: string;
|
|
13
|
+
resourcePolicyUri?: string;
|
|
14
|
+
resourceTosUri?: string;
|
|
15
|
+
/** OAuth client_id that clients should use with the authorization server. */
|
|
16
|
+
clientId?: string;
|
|
17
|
+
/** OAuth client_secret that clients should use with the authorization server. */
|
|
18
|
+
clientSecret?: string;
|
|
19
|
+
/** OAuth client_id for device code flow. */
|
|
20
|
+
deviceCodeClientId?: string;
|
|
21
|
+
/** OAuth client_secret for device code flow. */
|
|
22
|
+
deviceCodeClientSecret?: string;
|
|
23
|
+
/** When true, clients should use the OIDC id_token as the Bearer token instead of access_token. */
|
|
24
|
+
useIdTokenAsBearer?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Convert OAuthResourceMetadata to RFC 9728 snake_case JSON object. */
|
|
27
|
+
export declare function oauthResourceMetadataToJson(metadata: OAuthResourceMetadata): Record<string, any>;
|
|
28
|
+
/** Compute the well-known path for OAuth Protected Resource Metadata. */
|
|
29
|
+
export declare function wellKnownPath(prefix: string): string;
|
|
30
|
+
/** Build a WWW-Authenticate header value with optional resource_metadata URL, client_id, client_secret, device_code_client_id, device_code_client_secret, and use_id_token_as_bearer. */
|
|
31
|
+
export declare function buildWwwAuthenticateHeader(metadataUrl?: string, clientId?: string, clientSecret?: string, useIdTokenAsBearer?: boolean, deviceCodeClientId?: string, deviceCodeClientSecret?: string): string;
|
|
32
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/http/auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEtF,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,iCAAiC,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mGAAmG;IACnG,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wEAAwE;AACxE,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAyChG;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,yLAAyL;AACzL,wBAAgB,0BAA0B,CACxC,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,kBAAkB,CAAC,EAAE,MAAM,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,MAAM,CAqBR"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AuthContext } from "../auth.js";
|
|
2
|
+
import type { AuthenticateFn } from "./auth.js";
|
|
3
|
+
/** Receives the raw bearer token string, returns an AuthContext on success. Must throw on failure. */
|
|
4
|
+
export type BearerValidateFn = (token: string) => AuthContext | Promise<AuthContext>;
|
|
5
|
+
/**
|
|
6
|
+
* Create a bearer-token authenticate callback.
|
|
7
|
+
*
|
|
8
|
+
* Extracts the `Authorization: Bearer <token>` header and delegates
|
|
9
|
+
* validation to the user-supplied `validate` callback.
|
|
10
|
+
*/
|
|
11
|
+
export declare function bearerAuthenticate(options: {
|
|
12
|
+
validate: BearerValidateFn;
|
|
13
|
+
}): AuthenticateFn;
|
|
14
|
+
/**
|
|
15
|
+
* Create a bearer-token authenticate callback from a static token map.
|
|
16
|
+
*
|
|
17
|
+
* Convenience wrapper around `bearerAuthenticate` that looks up the
|
|
18
|
+
* token in a pre-built mapping using constant-time comparison.
|
|
19
|
+
*/
|
|
20
|
+
export declare function bearerAuthenticateStatic(options: {
|
|
21
|
+
tokens: ReadonlyMap<string, AuthContext> | Record<string, AuthContext>;
|
|
22
|
+
}): AuthenticateFn;
|
|
23
|
+
/**
|
|
24
|
+
* Chain multiple authenticate callbacks, trying each in order.
|
|
25
|
+
*
|
|
26
|
+
* Each authenticator is called in sequence. Plain `Error` (credential
|
|
27
|
+
* rejection) causes the next authenticator to be tried. Error subclasses
|
|
28
|
+
* (`TypeError`, `RangeError`, etc.), `PermissionError`-named errors, and
|
|
29
|
+
* non-Error throws propagate immediately.
|
|
30
|
+
*
|
|
31
|
+
* @throws Error if no authenticators are provided.
|
|
32
|
+
*/
|
|
33
|
+
export declare function chainAuthenticate(...authenticators: AuthenticateFn[]): AuthenticateFn;
|
|
34
|
+
//# sourceMappingURL=bearer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bearer.d.ts","sourceRoot":"","sources":["../../src/http/bearer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAErF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,gBAAgB,CAAA;CAAE,GAAG,cAAc,CAW1F;AAWD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACxE,GAAG,cAAc,CAYjB;AAgBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,cAAc,EAAE,cAAc,EAAE,GAAG,cAAc,CAsBrF"}
|
package/dist/http/dispatch.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { AuthContext } from "../auth.js";
|
|
2
|
+
import { type ExternalLocationConfig } from "../external.js";
|
|
1
3
|
import type { MethodDefinition } from "../types.js";
|
|
2
4
|
import type { StateSerializer } from "./types.js";
|
|
3
5
|
export interface DispatchContext {
|
|
@@ -6,6 +8,8 @@ export interface DispatchContext {
|
|
|
6
8
|
serverId: string;
|
|
7
9
|
maxStreamResponseBytes?: number;
|
|
8
10
|
stateSerializer: StateSerializer;
|
|
11
|
+
authContext?: AuthContext;
|
|
12
|
+
externalLocation?: ExternalLocationConfig;
|
|
9
13
|
}
|
|
10
14
|
/** Dispatch a __describe__ request. */
|
|
11
15
|
export declare function httpDispatchDescribe(protocolName: string, methods: Map<string, MethodDefinition>, serverId: string): Response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/http/dispatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/http/dispatch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,KAAK,sBAAsB,EAAyB,MAAM,gBAAgB,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAUlD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC3C;AAED,uCAAuC;AACvC,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACtC,QAAQ,EAAE,MAAM,GACf,QAAQ,CAIV;AAED,qCAAqC;AACrC,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,QAAQ,CAAC,CA0BnB;AAED,kEAAkE;AAClE,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,QAAQ,CAAC,CA2EnB;AAED,yFAAyF;AACzF,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqHnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAa/C,OAAO,EAAE,KAAK,kBAAkB,EAAuB,MAAM,YAAY,CAAC;AAI1E;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiSpD"}
|
package/dist/http/index.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
export type { AuthenticateFn, OAuthResourceMetadata } from "./auth.js";
|
|
2
|
+
export { oauthResourceMetadataToJson } from "./auth.js";
|
|
3
|
+
export type { BearerValidateFn } from "./bearer.js";
|
|
4
|
+
export { bearerAuthenticate, bearerAuthenticateStatic, chainAuthenticate } from "./bearer.js";
|
|
1
5
|
export { ARROW_CONTENT_TYPE } from "./common.js";
|
|
2
6
|
export { createHttpHandler } from "./handler.js";
|
|
7
|
+
export type { JwtAuthenticateOptions } from "./jwt.js";
|
|
8
|
+
export { jwtAuthenticate } from "./jwt.js";
|
|
9
|
+
export type { CertValidateFn, XfccElement, XfccValidateFn } from "./mtls.js";
|
|
10
|
+
export { mtlsAuthenticate, mtlsAuthenticateFingerprint, mtlsAuthenticateSubject, mtlsAuthenticateXfcc, parseXfcc, } from "./mtls.js";
|
|
3
11
|
export { type UnpackedToken, unpackStateToken } from "./token.js";
|
|
4
12
|
export type { HttpHandlerOptions, StateSerializer } from "./types.js";
|
|
5
13
|
export { jsonStateSerializer } from "./types.js";
|
package/dist/http/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,SAAS,GACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,KAAK,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AuthenticateFn } from "./auth.js";
|
|
2
|
+
export interface JwtAuthenticateOptions {
|
|
3
|
+
/** The expected `iss` claim (also used to discover AS metadata). */
|
|
4
|
+
issuer: string;
|
|
5
|
+
/** The expected `aud` claim. If an array, tries each audience in order. */
|
|
6
|
+
audience: string | string[];
|
|
7
|
+
/** Explicit JWKS URI. If omitted, discovered from issuer metadata. */
|
|
8
|
+
jwksUri?: string;
|
|
9
|
+
/** JWT claim to use as the principal. Default: "sub". */
|
|
10
|
+
principalClaim?: string;
|
|
11
|
+
/** AuthContext domain. Default: "jwt". */
|
|
12
|
+
domain?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create an AuthenticateFn that validates JWT Bearer tokens using oauth4webapi.
|
|
16
|
+
*
|
|
17
|
+
* On first call, discovers the Authorization Server metadata from the issuer
|
|
18
|
+
* to obtain the JWKS URI (unless `jwksUri` is provided directly).
|
|
19
|
+
*/
|
|
20
|
+
export declare function jwtAuthenticate(options: JwtAuthenticateOptions): AuthenticateFn;
|
|
21
|
+
//# sourceMappingURL=jwt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/http/jwt.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,cAAc,CAqD/E"}
|