@pymthouse/builder-sdk 0.3.1 → 0.4.1-rc.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 +54 -28
- package/dist/{client-BHfjDvIe.d.ts → client-CauCfGa7.d.ts} +1 -1
- package/dist/{client-CvhJEhjV.d.cts → client-D1Xz-xlx.d.cts} +1 -1
- package/dist/config.cjs +0 -21
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +1 -5
- package/dist/config.d.ts +1 -5
- package/dist/config.js +1 -20
- package/dist/config.js.map +1 -1
- package/dist/device-initiate.cjs.map +1 -1
- package/dist/device-initiate.js.map +1 -1
- package/dist/device.cjs.map +1 -1
- package/dist/device.d.cts +1 -1
- package/dist/device.d.ts +1 -1
- package/dist/device.js.map +1 -1
- package/dist/env.cjs +13 -4
- package/dist/env.cjs.map +1 -1
- package/dist/env.d.cts +2 -2
- package/dist/env.d.ts +2 -2
- package/dist/env.js +13 -4
- package/dist/env.js.map +1 -1
- package/dist/index-B0ryx942.d.cts +66 -0
- package/dist/index-CvV5syf_.d.ts +66 -0
- package/dist/index.cjs +13 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -5
- package/dist/index.d.ts +29 -5
- package/dist/index.js +13 -4
- package/dist/index.js.map +1 -1
- package/dist/{ingest-DoKJTWU9.d.ts → proxy-JrT6raU_.d.cts} +5 -42
- package/dist/{ingest-B3Yi8Tb1.d.cts → proxy-U32DFNuj.d.ts} +5 -42
- package/dist/signer/server.cjs +799 -895
- package/dist/signer/server.cjs.map +1 -1
- package/dist/signer/server.d.cts +11 -15
- package/dist/signer/server.d.ts +11 -15
- package/dist/signer/server.js +799 -893
- package/dist/signer/server.js.map +1 -1
- package/dist/signer/webhook/adapters/api-key.cjs +82 -0
- package/dist/signer/webhook/adapters/api-key.cjs.map +1 -0
- package/dist/signer/webhook/adapters/api-key.d.cts +18 -0
- package/dist/signer/webhook/adapters/api-key.d.ts +18 -0
- package/dist/signer/webhook/adapters/api-key.js +80 -0
- package/dist/signer/webhook/adapters/api-key.js.map +1 -0
- package/dist/signer/webhook/adapters/composite.cjs +60 -0
- package/dist/signer/webhook/adapters/composite.cjs.map +1 -0
- package/dist/signer/webhook/adapters/composite.d.cts +5 -0
- package/dist/signer/webhook/adapters/composite.d.ts +5 -0
- package/dist/signer/webhook/adapters/composite.js +58 -0
- package/dist/signer/webhook/adapters/composite.js.map +1 -0
- package/dist/signer/webhook/adapters/oauth1.cjs +18 -0
- package/dist/signer/webhook/adapters/oauth1.cjs.map +1 -0
- package/dist/signer/webhook/adapters/oauth1.d.cts +19 -0
- package/dist/signer/webhook/adapters/oauth1.d.ts +19 -0
- package/dist/signer/webhook/adapters/oauth1.js +16 -0
- package/dist/signer/webhook/adapters/oauth1.js.map +1 -0
- package/dist/signer/webhook/adapters/oidc.cjs +533 -0
- package/dist/signer/webhook/adapters/oidc.cjs.map +1 -0
- package/dist/signer/webhook/adapters/oidc.d.cts +4 -0
- package/dist/signer/webhook/adapters/oidc.d.ts +4 -0
- package/dist/signer/webhook/adapters/oidc.js +526 -0
- package/dist/signer/webhook/adapters/oidc.js.map +1 -0
- package/dist/signer/webhook/adapters/trusted-headers.cjs +110 -0
- package/dist/signer/webhook/adapters/trusted-headers.cjs.map +1 -0
- package/dist/signer/webhook/adapters/trusted-headers.d.cts +18 -0
- package/dist/signer/webhook/adapters/trusted-headers.d.ts +18 -0
- package/dist/signer/webhook/adapters/trusted-headers.js +106 -0
- package/dist/signer/webhook/adapters/trusted-headers.js.map +1 -0
- package/dist/signer/webhook.cjs +759 -0
- package/dist/signer/webhook.cjs.map +1 -0
- package/dist/signer/webhook.d.cts +26 -0
- package/dist/signer/webhook.d.ts +26 -0
- package/dist/signer/webhook.js +732 -0
- package/dist/signer/webhook.js.map +1 -0
- package/dist/tokens.d.cts +1 -1
- package/dist/tokens.d.ts +1 -1
- package/dist/{types-_R1AwEZp.d.cts → types-BORaHW_x.d.cts} +5 -5
- package/dist/{types-_R1AwEZp.d.ts → types-BORaHW_x.d.ts} +5 -5
- package/dist/verifier-B-WFDMz6.d.cts +48 -0
- package/dist/verifier-B-WFDMz6.d.ts +48 -0
- package/dist/verify.cjs.map +1 -1
- package/dist/verify.d.cts +1 -1
- package/dist/verify.d.ts +1 -1
- package/dist/verify.js.map +1 -1
- package/package.json +30 -30
- package/dist/gateway/client/index.cjs +0 -492
- package/dist/gateway/client/index.cjs.map +0 -1
- package/dist/gateway/client/index.d.cts +0 -63
- package/dist/gateway/client/index.d.ts +0 -63
- package/dist/gateway/client/index.js +0 -489
- package/dist/gateway/client/index.js.map +0 -1
- package/dist/gateway/index.cjs +0 -16
- package/dist/gateway/index.cjs.map +0 -1
- package/dist/gateway/index.d.cts +0 -52
- package/dist/gateway/index.d.ts +0 -52
- package/dist/gateway/index.js +0 -10
- package/dist/gateway/index.js.map +0 -1
- package/dist/gateway/server/index.cjs +0 -1248
- package/dist/gateway/server/index.cjs.map +0 -1
- package/dist/gateway/server/index.d.cts +0 -31
- package/dist/gateway/server/index.d.ts +0 -31
- package/dist/gateway/server/index.js +0 -1233
- package/dist/gateway/server/index.js.map +0 -1
- package/gateway/proto/lp_rpc.proto +0 -542
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { F as FetchLike } from './types-BORaHW_x.cjs';
|
|
2
|
+
import { U as UsageIdentity, P as PaymentWebhookRequest, V as VerifiedEndUserAuth, E as EndUserAuthVerifier } from './verifier-B-WFDMz6.cjs';
|
|
3
|
+
import { TrustedHeadersEndUserAuthConfig } from './signer/webhook/adapters/trusted-headers.cjs';
|
|
4
|
+
|
|
5
|
+
type WebhookIdentityClaimMapping = {
|
|
6
|
+
claimClientId: string;
|
|
7
|
+
claimUsageSubject: string;
|
|
8
|
+
usageSubjectType: string;
|
|
9
|
+
};
|
|
10
|
+
declare const DEFAULT_WEBHOOK_IDENTITY_CLAIMS: WebhookIdentityClaimMapping;
|
|
11
|
+
declare function identityFromWebhookClaims(claims: Record<string, unknown>, mapping?: Partial<WebhookIdentityClaimMapping>): UsageIdentity;
|
|
12
|
+
declare function claimExpirySeconds(claims: Record<string, unknown>, fallbackTtlSeconds?: number): number;
|
|
13
|
+
|
|
14
|
+
type WebhookAuthorizeContext = {
|
|
15
|
+
authorization: string;
|
|
16
|
+
payload: PaymentWebhookRequest;
|
|
17
|
+
request: Request;
|
|
18
|
+
verified: VerifiedEndUserAuth;
|
|
19
|
+
identity: VerifiedEndUserAuth["identity"];
|
|
20
|
+
};
|
|
21
|
+
type RemoteSignerWebhookConfig = {
|
|
22
|
+
webhookSecret: string;
|
|
23
|
+
endUserAuth: EndUserAuthVerifier;
|
|
24
|
+
afterVerify?: (context: WebhookAuthorizeContext) => Promise<void>;
|
|
25
|
+
};
|
|
26
|
+
declare function authenticateWebhookCaller(request: Request, secret: string): boolean;
|
|
27
|
+
declare function handleRemoteSignerAuthorize(request: Request, config: RemoteSignerWebhookConfig): Promise<Response>;
|
|
28
|
+
declare function createRemoteSignerAuthorizeHandler(config: RemoteSignerWebhookConfig): (request: Request) => Promise<Response>;
|
|
29
|
+
declare function routeRemoteSignerWebhookRequest(request: Request, config: RemoteSignerWebhookConfig): Promise<Response | null>;
|
|
30
|
+
|
|
31
|
+
/** Returns the token after `Bearer `, or null when the header is missing or not Bearer. */
|
|
32
|
+
declare function optionalBearerToken(authorization: string): string | null;
|
|
33
|
+
declare function bearerTokenFromAuthorization(authorization: string): string;
|
|
34
|
+
|
|
35
|
+
type OidcEndUserAuthConfig = {
|
|
36
|
+
jwtIssuer: string;
|
|
37
|
+
jwtAudience: string;
|
|
38
|
+
claimMapping?: Partial<WebhookIdentityClaimMapping>;
|
|
39
|
+
allowInsecureHttp?: boolean;
|
|
40
|
+
fetch?: FetchLike;
|
|
41
|
+
requiredScopes?: string[];
|
|
42
|
+
webhookSecret: string;
|
|
43
|
+
};
|
|
44
|
+
declare function handleRemoteSignerRefreshJwks(request: Request, config: Pick<OidcEndUserAuthConfig, "webhookSecret" | "jwtIssuer" | "fetch" | "allowInsecureHttp">): Promise<Response>;
|
|
45
|
+
declare function createOidcEndUserVerifier(config: OidcEndUserAuthConfig): EndUserAuthVerifier;
|
|
46
|
+
|
|
47
|
+
type OidcRemoteSignerWebhookConfigInput = OidcEndUserAuthConfig & {
|
|
48
|
+
afterVerify?: (context: WebhookAuthorizeContext) => Promise<void>;
|
|
49
|
+
};
|
|
50
|
+
type SignerDmzRemoteSignerWebhookConfigInput = OidcRemoteSignerWebhookConfigInput & {
|
|
51
|
+
/** When true (default), accept Apache DMZ X-Livepeer-* identity headers. */
|
|
52
|
+
dmzTrustedHeaders?: boolean;
|
|
53
|
+
trustedHeaders?: Omit<TrustedHeadersEndUserAuthConfig, "expectedIssuer">;
|
|
54
|
+
};
|
|
55
|
+
declare function createOidcRemoteSignerWebhookConfig(input: OidcRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
|
|
56
|
+
/**
|
|
57
|
+
* PymtHouse signer-dmz: Apache validates the end-user JWT (iss/aud = issuer), injects
|
|
58
|
+
* X-Livepeer-* headers, and go-livepeer forwards those headers to this webhook per
|
|
59
|
+
* go-livepeer remote-signer.md. Falls back to Bearer JWT verification when present.
|
|
60
|
+
*/
|
|
61
|
+
declare function createSignerDmzRemoteSignerWebhookConfig(input: SignerDmzRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
|
|
62
|
+
declare function readOidcRemoteSignerWebhookConfigFromEnv(env?: NodeJS.ProcessEnv): RemoteSignerWebhookConfig;
|
|
63
|
+
/** @deprecated Use readOidcRemoteSignerWebhookConfigFromEnv */
|
|
64
|
+
declare const readRemoteSignerWebhookConfigFromEnv: typeof readOidcRemoteSignerWebhookConfigFromEnv;
|
|
65
|
+
|
|
66
|
+
export { DEFAULT_WEBHOOK_IDENTITY_CLAIMS as D, type OidcRemoteSignerWebhookConfigInput as O, type RemoteSignerWebhookConfig as R, type SignerDmzRemoteSignerWebhookConfigInput as S, type WebhookAuthorizeContext as W, type OidcEndUserAuthConfig as a, type WebhookIdentityClaimMapping as b, authenticateWebhookCaller as c, bearerTokenFromAuthorization as d, claimExpirySeconds as e, createOidcEndUserVerifier as f, createOidcRemoteSignerWebhookConfig as g, createRemoteSignerAuthorizeHandler as h, createSignerDmzRemoteSignerWebhookConfig as i, handleRemoteSignerAuthorize as j, handleRemoteSignerRefreshJwks as k, identityFromWebhookClaims as l, readRemoteSignerWebhookConfigFromEnv as m, routeRemoteSignerWebhookRequest as n, optionalBearerToken as o, readOidcRemoteSignerWebhookConfigFromEnv as r };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { F as FetchLike } from './types-BORaHW_x.js';
|
|
2
|
+
import { U as UsageIdentity, P as PaymentWebhookRequest, V as VerifiedEndUserAuth, E as EndUserAuthVerifier } from './verifier-B-WFDMz6.js';
|
|
3
|
+
import { TrustedHeadersEndUserAuthConfig } from './signer/webhook/adapters/trusted-headers.js';
|
|
4
|
+
|
|
5
|
+
type WebhookIdentityClaimMapping = {
|
|
6
|
+
claimClientId: string;
|
|
7
|
+
claimUsageSubject: string;
|
|
8
|
+
usageSubjectType: string;
|
|
9
|
+
};
|
|
10
|
+
declare const DEFAULT_WEBHOOK_IDENTITY_CLAIMS: WebhookIdentityClaimMapping;
|
|
11
|
+
declare function identityFromWebhookClaims(claims: Record<string, unknown>, mapping?: Partial<WebhookIdentityClaimMapping>): UsageIdentity;
|
|
12
|
+
declare function claimExpirySeconds(claims: Record<string, unknown>, fallbackTtlSeconds?: number): number;
|
|
13
|
+
|
|
14
|
+
type WebhookAuthorizeContext = {
|
|
15
|
+
authorization: string;
|
|
16
|
+
payload: PaymentWebhookRequest;
|
|
17
|
+
request: Request;
|
|
18
|
+
verified: VerifiedEndUserAuth;
|
|
19
|
+
identity: VerifiedEndUserAuth["identity"];
|
|
20
|
+
};
|
|
21
|
+
type RemoteSignerWebhookConfig = {
|
|
22
|
+
webhookSecret: string;
|
|
23
|
+
endUserAuth: EndUserAuthVerifier;
|
|
24
|
+
afterVerify?: (context: WebhookAuthorizeContext) => Promise<void>;
|
|
25
|
+
};
|
|
26
|
+
declare function authenticateWebhookCaller(request: Request, secret: string): boolean;
|
|
27
|
+
declare function handleRemoteSignerAuthorize(request: Request, config: RemoteSignerWebhookConfig): Promise<Response>;
|
|
28
|
+
declare function createRemoteSignerAuthorizeHandler(config: RemoteSignerWebhookConfig): (request: Request) => Promise<Response>;
|
|
29
|
+
declare function routeRemoteSignerWebhookRequest(request: Request, config: RemoteSignerWebhookConfig): Promise<Response | null>;
|
|
30
|
+
|
|
31
|
+
/** Returns the token after `Bearer `, or null when the header is missing or not Bearer. */
|
|
32
|
+
declare function optionalBearerToken(authorization: string): string | null;
|
|
33
|
+
declare function bearerTokenFromAuthorization(authorization: string): string;
|
|
34
|
+
|
|
35
|
+
type OidcEndUserAuthConfig = {
|
|
36
|
+
jwtIssuer: string;
|
|
37
|
+
jwtAudience: string;
|
|
38
|
+
claimMapping?: Partial<WebhookIdentityClaimMapping>;
|
|
39
|
+
allowInsecureHttp?: boolean;
|
|
40
|
+
fetch?: FetchLike;
|
|
41
|
+
requiredScopes?: string[];
|
|
42
|
+
webhookSecret: string;
|
|
43
|
+
};
|
|
44
|
+
declare function handleRemoteSignerRefreshJwks(request: Request, config: Pick<OidcEndUserAuthConfig, "webhookSecret" | "jwtIssuer" | "fetch" | "allowInsecureHttp">): Promise<Response>;
|
|
45
|
+
declare function createOidcEndUserVerifier(config: OidcEndUserAuthConfig): EndUserAuthVerifier;
|
|
46
|
+
|
|
47
|
+
type OidcRemoteSignerWebhookConfigInput = OidcEndUserAuthConfig & {
|
|
48
|
+
afterVerify?: (context: WebhookAuthorizeContext) => Promise<void>;
|
|
49
|
+
};
|
|
50
|
+
type SignerDmzRemoteSignerWebhookConfigInput = OidcRemoteSignerWebhookConfigInput & {
|
|
51
|
+
/** When true (default), accept Apache DMZ X-Livepeer-* identity headers. */
|
|
52
|
+
dmzTrustedHeaders?: boolean;
|
|
53
|
+
trustedHeaders?: Omit<TrustedHeadersEndUserAuthConfig, "expectedIssuer">;
|
|
54
|
+
};
|
|
55
|
+
declare function createOidcRemoteSignerWebhookConfig(input: OidcRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
|
|
56
|
+
/**
|
|
57
|
+
* PymtHouse signer-dmz: Apache validates the end-user JWT (iss/aud = issuer), injects
|
|
58
|
+
* X-Livepeer-* headers, and go-livepeer forwards those headers to this webhook per
|
|
59
|
+
* go-livepeer remote-signer.md. Falls back to Bearer JWT verification when present.
|
|
60
|
+
*/
|
|
61
|
+
declare function createSignerDmzRemoteSignerWebhookConfig(input: SignerDmzRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
|
|
62
|
+
declare function readOidcRemoteSignerWebhookConfigFromEnv(env?: NodeJS.ProcessEnv): RemoteSignerWebhookConfig;
|
|
63
|
+
/** @deprecated Use readOidcRemoteSignerWebhookConfigFromEnv */
|
|
64
|
+
declare const readRemoteSignerWebhookConfigFromEnv: typeof readOidcRemoteSignerWebhookConfigFromEnv;
|
|
65
|
+
|
|
66
|
+
export { DEFAULT_WEBHOOK_IDENTITY_CLAIMS as D, type OidcRemoteSignerWebhookConfigInput as O, type RemoteSignerWebhookConfig as R, type SignerDmzRemoteSignerWebhookConfigInput as S, type WebhookAuthorizeContext as W, type OidcEndUserAuthConfig as a, type WebhookIdentityClaimMapping as b, authenticateWebhookCaller as c, bearerTokenFromAuthorization as d, claimExpirySeconds as e, createOidcEndUserVerifier as f, createOidcRemoteSignerWebhookConfig as g, createRemoteSignerAuthorizeHandler as h, createSignerDmzRemoteSignerWebhookConfig as i, handleRemoteSignerAuthorize as j, handleRemoteSignerRefreshJwks as k, identityFromWebhookClaims as l, readRemoteSignerWebhookConfigFromEnv as m, routeRemoteSignerWebhookRequest as n, optionalBearerToken as o, readOidcRemoteSignerWebhookConfigFromEnv as r };
|
package/dist/index.cjs
CHANGED
|
@@ -244,8 +244,14 @@ var init_fetch_json = __esm({
|
|
|
244
244
|
});
|
|
245
245
|
|
|
246
246
|
// src/signer/handler-errors.ts
|
|
247
|
-
function
|
|
247
|
+
function isPmtHouseError(error) {
|
|
248
248
|
if (error instanceof exports.PmtHouseError) {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
return error instanceof Error && typeof error.status === "number" && typeof error.code === "string";
|
|
252
|
+
}
|
|
253
|
+
function signerHandlerErrorResponse(error) {
|
|
254
|
+
if (isPmtHouseError(error)) {
|
|
249
255
|
return new Response(
|
|
250
256
|
JSON.stringify({
|
|
251
257
|
error: error.code,
|
|
@@ -298,6 +304,9 @@ var init_json_fields = __esm({
|
|
|
298
304
|
});
|
|
299
305
|
|
|
300
306
|
// src/signer/mint-token.ts
|
|
307
|
+
function signerJwtAudience(issuerUrl) {
|
|
308
|
+
return stripTrailingSlashes(issuerUrl);
|
|
309
|
+
}
|
|
301
310
|
function parseMintUserSignerTokenResponse(body, ttlRefreshRatio = DEFAULT_TTL_REFRESH_RATIO) {
|
|
302
311
|
const accessToken = readStringField(body, "access_token", TOKEN_RESPONSE_ERROR, "Token response");
|
|
303
312
|
const expiresIn = readExpiresIn(body, TOKEN_RESPONSE_ERROR);
|
|
@@ -324,11 +333,11 @@ function parseMintUserSignerTokenResponse(body, ttlRefreshRatio = DEFAULT_TTL_RE
|
|
|
324
333
|
lifetimeGrantedUsdMicros
|
|
325
334
|
};
|
|
326
335
|
}
|
|
327
|
-
var
|
|
336
|
+
var DEFAULT_TTL_REFRESH_RATIO, TOKEN_RESPONSE_ERROR;
|
|
328
337
|
var init_mint_token = __esm({
|
|
329
338
|
"src/signer/mint-token.ts"() {
|
|
339
|
+
init_string_utils();
|
|
330
340
|
init_json_fields();
|
|
331
|
-
LIVEPEER_REMOTE_SIGNER_AUDIENCE = "livepeer-remote-signer";
|
|
332
341
|
DEFAULT_TTL_REFRESH_RATIO = 0.8;
|
|
333
342
|
TOKEN_RESPONSE_ERROR = "invalid_token_response";
|
|
334
343
|
}
|
|
@@ -395,7 +404,7 @@ async function mintSignerTokenFromDeviceToken(options) {
|
|
|
395
404
|
code: "oidc_discovery_invalid"
|
|
396
405
|
});
|
|
397
406
|
}
|
|
398
|
-
const audience = options.audience?.trim() ||
|
|
407
|
+
const audience = options.audience?.trim() || signerJwtAudience(issuerUrl);
|
|
399
408
|
const params = new URLSearchParams({
|
|
400
409
|
grant_type: TOKEN_EXCHANGE_GRANT,
|
|
401
410
|
subject_token: options.deviceToken,
|