@pymthouse/builder-sdk 0.3.1 → 0.4.1-rc.1

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.
Files changed (103) hide show
  1. package/README.md +54 -28
  2. package/dist/{client-BHfjDvIe.d.ts → client-CauCfGa7.d.ts} +1 -1
  3. package/dist/{client-CvhJEhjV.d.cts → client-D1Xz-xlx.d.cts} +1 -1
  4. package/dist/config.cjs +0 -21
  5. package/dist/config.cjs.map +1 -1
  6. package/dist/config.d.cts +1 -5
  7. package/dist/config.d.ts +1 -5
  8. package/dist/config.js +1 -20
  9. package/dist/config.js.map +1 -1
  10. package/dist/device-initiate.cjs.map +1 -1
  11. package/dist/device-initiate.js.map +1 -1
  12. package/dist/device.cjs.map +1 -1
  13. package/dist/device.d.cts +1 -1
  14. package/dist/device.d.ts +1 -1
  15. package/dist/device.js.map +1 -1
  16. package/dist/env.cjs +13 -4
  17. package/dist/env.cjs.map +1 -1
  18. package/dist/env.d.cts +2 -2
  19. package/dist/env.d.ts +2 -2
  20. package/dist/env.js +13 -4
  21. package/dist/env.js.map +1 -1
  22. package/dist/index-BTDKEorK.d.ts +64 -0
  23. package/dist/index-BixH4VIG.d.cts +64 -0
  24. package/dist/index.cjs +13 -4
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +29 -5
  27. package/dist/index.d.ts +29 -5
  28. package/dist/index.js +13 -4
  29. package/dist/index.js.map +1 -1
  30. package/dist/{ingest-DoKJTWU9.d.ts → proxy-JrT6raU_.d.cts} +5 -42
  31. package/dist/{ingest-B3Yi8Tb1.d.cts → proxy-U32DFNuj.d.ts} +5 -42
  32. package/dist/signer/server.cjs +799 -895
  33. package/dist/signer/server.cjs.map +1 -1
  34. package/dist/signer/server.d.cts +9 -13
  35. package/dist/signer/server.d.ts +9 -13
  36. package/dist/signer/server.js +799 -893
  37. package/dist/signer/server.js.map +1 -1
  38. package/dist/signer/webhook/adapters/api-key.cjs +78 -0
  39. package/dist/signer/webhook/adapters/api-key.cjs.map +1 -0
  40. package/dist/signer/webhook/adapters/api-key.d.cts +18 -0
  41. package/dist/signer/webhook/adapters/api-key.d.ts +18 -0
  42. package/dist/signer/webhook/adapters/api-key.js +76 -0
  43. package/dist/signer/webhook/adapters/api-key.js.map +1 -0
  44. package/dist/signer/webhook/adapters/composite.cjs +60 -0
  45. package/dist/signer/webhook/adapters/composite.cjs.map +1 -0
  46. package/dist/signer/webhook/adapters/composite.d.cts +5 -0
  47. package/dist/signer/webhook/adapters/composite.d.ts +5 -0
  48. package/dist/signer/webhook/adapters/composite.js +58 -0
  49. package/dist/signer/webhook/adapters/composite.js.map +1 -0
  50. package/dist/signer/webhook/adapters/oauth1.cjs +18 -0
  51. package/dist/signer/webhook/adapters/oauth1.cjs.map +1 -0
  52. package/dist/signer/webhook/adapters/oauth1.d.cts +19 -0
  53. package/dist/signer/webhook/adapters/oauth1.d.ts +19 -0
  54. package/dist/signer/webhook/adapters/oauth1.js +16 -0
  55. package/dist/signer/webhook/adapters/oauth1.js.map +1 -0
  56. package/dist/signer/webhook/adapters/oidc.cjs +522 -0
  57. package/dist/signer/webhook/adapters/oidc.cjs.map +1 -0
  58. package/dist/signer/webhook/adapters/oidc.d.cts +4 -0
  59. package/dist/signer/webhook/adapters/oidc.d.ts +4 -0
  60. package/dist/signer/webhook/adapters/oidc.js +515 -0
  61. package/dist/signer/webhook/adapters/oidc.js.map +1 -0
  62. package/dist/signer/webhook/adapters/trusted-headers.cjs +103 -0
  63. package/dist/signer/webhook/adapters/trusted-headers.cjs.map +1 -0
  64. package/dist/signer/webhook/adapters/trusted-headers.d.cts +18 -0
  65. package/dist/signer/webhook/adapters/trusted-headers.d.ts +18 -0
  66. package/dist/signer/webhook/adapters/trusted-headers.js +99 -0
  67. package/dist/signer/webhook/adapters/trusted-headers.js.map +1 -0
  68. package/dist/signer/webhook.cjs +747 -0
  69. package/dist/signer/webhook.cjs.map +1 -0
  70. package/dist/signer/webhook.d.cts +26 -0
  71. package/dist/signer/webhook.d.ts +26 -0
  72. package/dist/signer/webhook.js +721 -0
  73. package/dist/signer/webhook.js.map +1 -0
  74. package/dist/tokens.d.cts +1 -1
  75. package/dist/tokens.d.ts +1 -1
  76. package/dist/{types-_R1AwEZp.d.cts → types-BORaHW_x.d.cts} +5 -5
  77. package/dist/{types-_R1AwEZp.d.ts → types-BORaHW_x.d.ts} +5 -5
  78. package/dist/verifier-B-WFDMz6.d.cts +48 -0
  79. package/dist/verifier-B-WFDMz6.d.ts +48 -0
  80. package/dist/verify.cjs.map +1 -1
  81. package/dist/verify.d.cts +1 -1
  82. package/dist/verify.d.ts +1 -1
  83. package/dist/verify.js.map +1 -1
  84. package/package.json +30 -30
  85. package/dist/gateway/client/index.cjs +0 -492
  86. package/dist/gateway/client/index.cjs.map +0 -1
  87. package/dist/gateway/client/index.d.cts +0 -63
  88. package/dist/gateway/client/index.d.ts +0 -63
  89. package/dist/gateway/client/index.js +0 -489
  90. package/dist/gateway/client/index.js.map +0 -1
  91. package/dist/gateway/index.cjs +0 -16
  92. package/dist/gateway/index.cjs.map +0 -1
  93. package/dist/gateway/index.d.cts +0 -52
  94. package/dist/gateway/index.d.ts +0 -52
  95. package/dist/gateway/index.js +0 -10
  96. package/dist/gateway/index.js.map +0 -1
  97. package/dist/gateway/server/index.cjs +0 -1248
  98. package/dist/gateway/server/index.cjs.map +0 -1
  99. package/dist/gateway/server/index.d.cts +0 -31
  100. package/dist/gateway/server/index.d.ts +0 -31
  101. package/dist/gateway/server/index.js +0 -1233
  102. package/dist/gateway/server/index.js.map +0 -1
  103. package/gateway/proto/lp_rpc.proto +0 -542
@@ -0,0 +1,64 @@
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
+ declare function bearerTokenFromAuthorization(authorization: string): string;
32
+
33
+ type OidcEndUserAuthConfig = {
34
+ jwtIssuer: string;
35
+ jwtAudience: string;
36
+ claimMapping?: Partial<WebhookIdentityClaimMapping>;
37
+ allowInsecureHttp?: boolean;
38
+ fetch?: FetchLike;
39
+ requiredScopes?: string[];
40
+ webhookSecret: string;
41
+ };
42
+ declare function handleRemoteSignerRefreshJwks(request: Request, config: Pick<OidcEndUserAuthConfig, "webhookSecret" | "jwtIssuer" | "fetch" | "allowInsecureHttp">): Promise<Response>;
43
+ declare function createOidcEndUserVerifier(config: OidcEndUserAuthConfig): EndUserAuthVerifier;
44
+
45
+ type OidcRemoteSignerWebhookConfigInput = OidcEndUserAuthConfig & {
46
+ afterVerify?: (context: WebhookAuthorizeContext) => Promise<void>;
47
+ };
48
+ type SignerDmzRemoteSignerWebhookConfigInput = OidcRemoteSignerWebhookConfigInput & {
49
+ /** When true (default), accept Apache DMZ X-Livepeer-* identity headers. */
50
+ dmzTrustedHeaders?: boolean;
51
+ trustedHeaders?: Omit<TrustedHeadersEndUserAuthConfig, "expectedIssuer">;
52
+ };
53
+ declare function createOidcRemoteSignerWebhookConfig(input: OidcRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
54
+ /**
55
+ * PymtHouse signer-dmz: Apache validates the end-user JWT (iss/aud = issuer), injects
56
+ * X-Livepeer-* headers, and go-livepeer forwards those headers to this webhook per
57
+ * go-livepeer remote-signer.md. Falls back to Bearer JWT verification when present.
58
+ */
59
+ declare function createSignerDmzRemoteSignerWebhookConfig(input: SignerDmzRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
60
+ declare function readOidcRemoteSignerWebhookConfigFromEnv(env?: NodeJS.ProcessEnv): RemoteSignerWebhookConfig;
61
+ /** @deprecated Use readOidcRemoteSignerWebhookConfigFromEnv */
62
+ declare const readRemoteSignerWebhookConfigFromEnv: typeof readOidcRemoteSignerWebhookConfigFromEnv;
63
+
64
+ 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, readOidcRemoteSignerWebhookConfigFromEnv as r };
@@ -0,0 +1,64 @@
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
+ declare function bearerTokenFromAuthorization(authorization: string): string;
32
+
33
+ type OidcEndUserAuthConfig = {
34
+ jwtIssuer: string;
35
+ jwtAudience: string;
36
+ claimMapping?: Partial<WebhookIdentityClaimMapping>;
37
+ allowInsecureHttp?: boolean;
38
+ fetch?: FetchLike;
39
+ requiredScopes?: string[];
40
+ webhookSecret: string;
41
+ };
42
+ declare function handleRemoteSignerRefreshJwks(request: Request, config: Pick<OidcEndUserAuthConfig, "webhookSecret" | "jwtIssuer" | "fetch" | "allowInsecureHttp">): Promise<Response>;
43
+ declare function createOidcEndUserVerifier(config: OidcEndUserAuthConfig): EndUserAuthVerifier;
44
+
45
+ type OidcRemoteSignerWebhookConfigInput = OidcEndUserAuthConfig & {
46
+ afterVerify?: (context: WebhookAuthorizeContext) => Promise<void>;
47
+ };
48
+ type SignerDmzRemoteSignerWebhookConfigInput = OidcRemoteSignerWebhookConfigInput & {
49
+ /** When true (default), accept Apache DMZ X-Livepeer-* identity headers. */
50
+ dmzTrustedHeaders?: boolean;
51
+ trustedHeaders?: Omit<TrustedHeadersEndUserAuthConfig, "expectedIssuer">;
52
+ };
53
+ declare function createOidcRemoteSignerWebhookConfig(input: OidcRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
54
+ /**
55
+ * PymtHouse signer-dmz: Apache validates the end-user JWT (iss/aud = issuer), injects
56
+ * X-Livepeer-* headers, and go-livepeer forwards those headers to this webhook per
57
+ * go-livepeer remote-signer.md. Falls back to Bearer JWT verification when present.
58
+ */
59
+ declare function createSignerDmzRemoteSignerWebhookConfig(input: SignerDmzRemoteSignerWebhookConfigInput): RemoteSignerWebhookConfig;
60
+ declare function readOidcRemoteSignerWebhookConfigFromEnv(env?: NodeJS.ProcessEnv): RemoteSignerWebhookConfig;
61
+ /** @deprecated Use readOidcRemoteSignerWebhookConfigFromEnv */
62
+ declare const readRemoteSignerWebhookConfigFromEnv: typeof readOidcRemoteSignerWebhookConfigFromEnv;
63
+
64
+ 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, 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 signerHandlerErrorResponse(error) {
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 LIVEPEER_REMOTE_SIGNER_AUDIENCE, DEFAULT_TTL_REFRESH_RATIO, TOKEN_RESPONSE_ERROR;
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() || LIVEPEER_REMOTE_SIGNER_AUDIENCE;
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,