@pymthouse/builder-sdk 0.4.1-rc.2 → 0.4.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 (60) hide show
  1. package/README.md +10 -10
  2. package/dist/env.cjs +4 -13
  3. package/dist/env.cjs.map +1 -1
  4. package/dist/env.js +4 -13
  5. package/dist/env.js.map +1 -1
  6. package/dist/{index-B0ryx942.d.cts → index-D5wdxNYy.d.cts} +1 -1
  7. package/dist/{index-CvV5syf_.d.ts → index-DFJ6qcK0.d.ts} +1 -1
  8. package/dist/index.cjs +4 -13
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.js +4 -13
  13. package/dist/index.js.map +1 -1
  14. package/dist/{proxy-JrT6raU_.d.cts → proxy-0wa8QZIU.d.cts} +16 -2
  15. package/dist/{proxy-U32DFNuj.d.ts → proxy-KrA1vEmh.d.ts} +16 -2
  16. package/dist/signer/server.cjs +89 -72
  17. package/dist/signer/server.cjs.map +1 -1
  18. package/dist/signer/server.d.cts +2 -2
  19. package/dist/signer/server.d.ts +2 -2
  20. package/dist/signer/server.js +89 -72
  21. package/dist/signer/server.js.map +1 -1
  22. package/dist/signer/webhook/adapters/api-key.cjs +1 -1
  23. package/dist/signer/webhook/adapters/api-key.cjs.map +1 -1
  24. package/dist/signer/webhook/adapters/api-key.d.cts +1 -1
  25. package/dist/signer/webhook/adapters/api-key.d.ts +1 -1
  26. package/dist/signer/webhook/adapters/api-key.js +1 -1
  27. package/dist/signer/webhook/adapters/api-key.js.map +1 -1
  28. package/dist/signer/webhook/adapters/composite.cjs +1 -1
  29. package/dist/signer/webhook/adapters/composite.cjs.map +1 -1
  30. package/dist/signer/webhook/adapters/composite.d.cts +1 -1
  31. package/dist/signer/webhook/adapters/composite.d.ts +1 -1
  32. package/dist/signer/webhook/adapters/composite.js +1 -1
  33. package/dist/signer/webhook/adapters/composite.js.map +1 -1
  34. package/dist/signer/webhook/adapters/oidc.cjs +6 -3
  35. package/dist/signer/webhook/adapters/oidc.cjs.map +1 -1
  36. package/dist/signer/webhook/adapters/oidc.d.cts +2 -2
  37. package/dist/signer/webhook/adapters/oidc.d.ts +2 -2
  38. package/dist/signer/webhook/adapters/oidc.js +6 -3
  39. package/dist/signer/webhook/adapters/oidc.js.map +1 -1
  40. package/dist/signer/webhook/adapters/trusted-headers.cjs +1 -1
  41. package/dist/signer/webhook/adapters/trusted-headers.cjs.map +1 -1
  42. package/dist/signer/webhook/adapters/trusted-headers.d.cts +1 -1
  43. package/dist/signer/webhook/adapters/trusted-headers.d.ts +1 -1
  44. package/dist/signer/webhook/adapters/trusted-headers.js +1 -1
  45. package/dist/signer/webhook/adapters/trusted-headers.js.map +1 -1
  46. package/dist/signer/webhook.cjs +7 -71
  47. package/dist/signer/webhook.cjs.map +1 -1
  48. package/dist/signer/webhook.d.cts +5 -14
  49. package/dist/signer/webhook.d.ts +5 -14
  50. package/dist/signer/webhook.js +8 -70
  51. package/dist/signer/webhook.js.map +1 -1
  52. package/dist/{verifier-B-WFDMz6.d.cts → verifier-Be9WAjFF.d.cts} +3 -2
  53. package/dist/{verifier-B-WFDMz6.d.ts → verifier-Be9WAjFF.d.ts} +3 -2
  54. package/package.json +2 -8
  55. package/dist/signer/webhook/adapters/oauth1.cjs +0 -18
  56. package/dist/signer/webhook/adapters/oauth1.cjs.map +0 -1
  57. package/dist/signer/webhook/adapters/oauth1.d.cts +0 -19
  58. package/dist/signer/webhook/adapters/oauth1.d.ts +0 -19
  59. package/dist/signer/webhook/adapters/oauth1.js +0 -16
  60. package/dist/signer/webhook/adapters/oauth1.js.map +0 -1
package/README.md CHANGED
@@ -126,21 +126,18 @@ reference **integration security** webhook that validates end-user credentials a
126
126
  returns `UsageIdentity` to the signer (`POST /authorize`).
127
127
 
128
128
  Transport (signer shared-secret auth, wire protocol) is separate from **end-user
129
- auth strategies** (`EndUserAuthVerifier`). OIDC/JWT is the default MVP; OAuth 1.0
130
- has a stub verifier for future integrations.
129
+ auth strategies** (`EndUserAuthVerifier`). OIDC/JWT is the default; an API-key
130
+ adapter and a composite "first match" adapter are also provided, and you can
131
+ plug in any custom verifier.
131
132
 
132
133
  ```ts
133
134
  import {
135
+ createApiKeyEndUserVerifier,
134
136
  createOidcRemoteSignerWebhookConfig,
135
137
  createRemoteSignerAuthorizeHandler,
136
- readOidcRemoteSignerWebhookConfigFromEnv,
137
- startRemoteSignerWebhookServer,
138
138
  type EndUserAuthVerifier,
139
139
  } from "@pymthouse/builder-sdk/signer/webhook";
140
140
 
141
- // Standalone sidecar (loads JWT_ISSUER, JWT_AUDIENCE, WEBHOOK_SECRET from env)
142
- startRemoteSignerWebhookServer();
143
-
144
141
  // OIDC (default): Auth0, pymthouse issuer, etc.
145
142
  const authorize = createRemoteSignerAuthorizeHandler(
146
143
  createOidcRemoteSignerWebhookConfig({
@@ -151,6 +148,12 @@ const authorize = createRemoteSignerAuthorizeHandler(
151
148
  }),
152
149
  );
153
150
 
151
+ // API key: resolve your own keys to a UsageIdentity
152
+ const apiKeyVerifier = createApiKeyEndUserVerifier({
153
+ issuer: process.env.JWT_ISSUER!,
154
+ resolveApiKey: async (key) => (await lookup(key)) ?? null,
155
+ });
156
+
154
157
  // Custom provider: implement EndUserAuthVerifier
155
158
  const customConfig = {
156
159
  webhookSecret: process.env.WEBHOOK_SECRET!,
@@ -167,9 +170,6 @@ const customConfig = {
167
170
  Env vars align with `auth0-livepeer` bootstrap output (`.env.livepeer`). For Auth0,
168
171
  set `CLAIM_CLIENT_ID=azp` and `USAGE_SUBJECT_TYPE=auth0_user_id`.
169
172
 
170
- OAuth 1.0: `createOAuth1EndUserVerifier` exists as a stub; signature verification
171
- is not implemented yet.
172
-
173
173
  ## Subpath exports
174
174
 
175
175
  | Import | Purpose |
package/dist/env.cjs CHANGED
@@ -213,14 +213,8 @@ var init_fetch_json = __esm({
213
213
  });
214
214
 
215
215
  // src/signer/handler-errors.ts
216
- function isPmtHouseError(error) {
217
- if (error instanceof PmtHouseError) {
218
- return true;
219
- }
220
- return error instanceof Error && typeof error.status === "number" && typeof error.code === "string";
221
- }
222
216
  function signerHandlerErrorResponse(error) {
223
- if (isPmtHouseError(error)) {
217
+ if (error instanceof PmtHouseError) {
224
218
  return new Response(
225
219
  JSON.stringify({
226
220
  error: error.code,
@@ -273,9 +267,6 @@ var init_json_fields = __esm({
273
267
  });
274
268
 
275
269
  // src/signer/mint-token.ts
276
- function signerJwtAudience(issuerUrl) {
277
- return stripTrailingSlashes(issuerUrl);
278
- }
279
270
  function parseMintUserSignerTokenResponse(body, ttlRefreshRatio = DEFAULT_TTL_REFRESH_RATIO) {
280
271
  const accessToken = readStringField(body, "access_token", TOKEN_RESPONSE_ERROR, "Token response");
281
272
  const expiresIn = readExpiresIn(body, TOKEN_RESPONSE_ERROR);
@@ -302,11 +293,11 @@ function parseMintUserSignerTokenResponse(body, ttlRefreshRatio = DEFAULT_TTL_RE
302
293
  lifetimeGrantedUsdMicros
303
294
  };
304
295
  }
305
- var DEFAULT_TTL_REFRESH_RATIO, TOKEN_RESPONSE_ERROR;
296
+ var LIVEPEER_REMOTE_SIGNER_AUDIENCE, DEFAULT_TTL_REFRESH_RATIO, TOKEN_RESPONSE_ERROR;
306
297
  var init_mint_token = __esm({
307
298
  "src/signer/mint-token.ts"() {
308
- init_string_utils();
309
299
  init_json_fields();
300
+ LIVEPEER_REMOTE_SIGNER_AUDIENCE = "livepeer-remote-signer";
310
301
  DEFAULT_TTL_REFRESH_RATIO = 0.8;
311
302
  TOKEN_RESPONSE_ERROR = "invalid_token_response";
312
303
  }
@@ -373,7 +364,7 @@ async function mintSignerTokenFromDeviceToken(options) {
373
364
  code: "oidc_discovery_invalid"
374
365
  });
375
366
  }
376
- const audience = options.audience?.trim() || signerJwtAudience(issuerUrl);
367
+ const audience = options.audience?.trim() || LIVEPEER_REMOTE_SIGNER_AUDIENCE;
377
368
  const params = new URLSearchParams({
378
369
  grant_type: TOKEN_EXCHANGE_GRANT,
379
370
  subject_token: options.deviceToken,