@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 @@
1
+ {"version":3,"sources":["../../../../src/errors.ts","../../../../src/signer/webhook/bearer.ts","../../../../src/signer/webhook/adapters/api-key/verifier.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EAET,YACE,OAAA,EACA;AAAA,IACE,MAAA,GAAS,GAAA;AAAA,IACT,IAAA,GAAO,iBAAA;AAAA,IACP;AAAA,GACF,GAII,EAAC,EACL;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF,CAAA;;;ACvBO,SAAS,6BAA6B,aAAA,EAA+B;AAC1E,EAAA,MAAM,OAAA,GAAU,cAAc,IAAA,EAAK;AACnC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AACA,EAAA,MAAM,MAAA,GAAS,SAAA;AACf,EAAA,IAAI,CAAC,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,EAAG;AAC/B,IAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,MAAM,EAAE,IAAA,EAAK;AAChD,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACtC;AACA,EAAA,OAAO,KAAA;AACT;;;ACMO,SAAS,4BACd,MAAA,EACqB;AACrB,EAAA,MAAM,MAAA,GAAS,OAAO,YAAA,IAAgB,KAAA;AACtC,EAAA,MAAM,eAAA,GAAkB,OAAO,eAAA,IAAmB,gBAAA;AAClD,EAAA,MAAM,uBAAA,GACJ,OAAO,uBAAA,IAA2B,eAAA;AACpC,EAAA,MAAM,GAAA,GAAM,OAAO,gBAAA,IAAoB,EAAA;AAEvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,OAAO,EAAE,aAAA,EAAc,KAAM;AACnC,MAAA,MAAM,KAAA,GAAQ,6BAA6B,aAAa,CAAA;AACxD,MAAA,IAAI,MAAA,IAAU,CAAC,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,EAAG;AACvC,QAAA,MAAM,IAAI,cAAc,iBAAA,EAAmB;AAAA,UACzC,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,aAAA,CAAc,KAAK,CAAA;AACjD,MAAA,IAAI,CAAC,UAAU,MAAA,EAAQ;AACrB,QAAA,MAAM,IAAI,cAAc,iBAAA,EAAmB;AAAA,UACzC,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,QAAA,GAA0B;AAAA,QAC9B,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAA,EAAW,SAAS,QAAA,IAAY,eAAA;AAAA,QAChC,eAAe,QAAA,CAAS,MAAA;AAAA,QACxB,kBAAA,EACE,SAAS,gBAAA,IAAoB;AAAA,OACjC;AAEA,MAAA,OAAO;AAAA,QACL,QAAA;AAAA,QACA,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAA,GAAI,GAAA;AAAA,QACxC,GAAA,EAAK;AAAA,OACP;AAAA,IACF;AAAA,GACF;AACF","file":"api-key.cjs","sourcesContent":["export class PmtHouseError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details?: unknown;\n\n constructor(\n message: string,\n {\n status = 500,\n code = \"pymthouse_error\",\n details,\n }: {\n status?: number;\n code?: string;\n details?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"PmtHouseError\";\n this.status = status;\n this.code = code;\n this.details = details;\n }\n}\n\nexport function toPmtHouseError(\n error: unknown,\n fallbackMessage: string,\n): PmtHouseError {\n if (error instanceof PmtHouseError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new PmtHouseError(error.message || fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n }\n\n return new PmtHouseError(fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n}\n","export function bearerTokenFromAuthorization(authorization: string): string {\n const trimmed = authorization.trim();\n if (!trimmed) {\n throw new Error(\"missing authorization\");\n }\n const prefix = \"Bearer \";\n if (!trimmed.startsWith(prefix)) {\n throw new Error(\"authorization must be Bearer token\");\n }\n const token = trimmed.slice(prefix.length).trim();\n if (!token) {\n throw new Error(\"empty bearer token\");\n }\n return token;\n}\n","import { PmtHouseError } from \"../../../../errors.js\";\nimport { bearerTokenFromAuthorization } from \"../../bearer.js\";\nimport type { UsageIdentity } from \"../../types.js\";\nimport type { EndUserAuthVerifier } from \"../../verifier.js\";\n\nexport type ApiKeyResolveResult = {\n userId: string;\n clientId?: string;\n usageSubjectType?: string;\n};\n\nexport type ApiKeyEndUserVerifierConfig = {\n issuer: string;\n resolveApiKey: (apiKey: string) => Promise<ApiKeyResolveResult | null>;\n expiryTtlSeconds?: number;\n apiKeyPrefix?: string;\n defaultClientId?: string;\n defaultUsageSubjectType?: string;\n};\n\nexport function createApiKeyEndUserVerifier(\n config: ApiKeyEndUserVerifierConfig,\n): EndUserAuthVerifier {\n const prefix = config.apiKeyPrefix ?? \"sk_\";\n const defaultClientId = config.defaultClientId ?? \"daydream-scope\";\n const defaultUsageSubjectType =\n config.defaultUsageSubjectType ?? \"clerk_user_id\";\n const ttl = config.expiryTtlSeconds ?? 60;\n\n return {\n kind: \"custom\",\n verify: async ({ authorization }) => {\n const token = bearerTokenFromAuthorization(authorization);\n if (prefix && !token.startsWith(prefix)) {\n throw new PmtHouseError(\"invalid api key\", {\n status: 401,\n code: \"invalid_api_key\",\n });\n }\n\n const resolved = await config.resolveApiKey(token);\n if (!resolved?.userId) {\n throw new PmtHouseError(\"invalid api key\", {\n status: 401,\n code: \"invalid_api_key\",\n });\n }\n\n const identity: UsageIdentity = {\n issuer: config.issuer,\n client_id: resolved.clientId ?? defaultClientId,\n usage_subject: resolved.userId,\n usage_subject_type:\n resolved.usageSubjectType ?? defaultUsageSubjectType,\n };\n\n return {\n identity,\n expiry: Math.trunc(Date.now() / 1000) + ttl,\n raw: resolved,\n };\n },\n };\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { E as EndUserAuthVerifier } from '../../../verifier-B-WFDMz6.cjs';
2
+
3
+ type ApiKeyResolveResult = {
4
+ userId: string;
5
+ clientId?: string;
6
+ usageSubjectType?: string;
7
+ };
8
+ type ApiKeyEndUserVerifierConfig = {
9
+ issuer: string;
10
+ resolveApiKey: (apiKey: string) => Promise<ApiKeyResolveResult | null>;
11
+ expiryTtlSeconds?: number;
12
+ apiKeyPrefix?: string;
13
+ defaultClientId?: string;
14
+ defaultUsageSubjectType?: string;
15
+ };
16
+ declare function createApiKeyEndUserVerifier(config: ApiKeyEndUserVerifierConfig): EndUserAuthVerifier;
17
+
18
+ export { type ApiKeyEndUserVerifierConfig, type ApiKeyResolveResult, createApiKeyEndUserVerifier };
@@ -0,0 +1,18 @@
1
+ import { E as EndUserAuthVerifier } from '../../../verifier-B-WFDMz6.js';
2
+
3
+ type ApiKeyResolveResult = {
4
+ userId: string;
5
+ clientId?: string;
6
+ usageSubjectType?: string;
7
+ };
8
+ type ApiKeyEndUserVerifierConfig = {
9
+ issuer: string;
10
+ resolveApiKey: (apiKey: string) => Promise<ApiKeyResolveResult | null>;
11
+ expiryTtlSeconds?: number;
12
+ apiKeyPrefix?: string;
13
+ defaultClientId?: string;
14
+ defaultUsageSubjectType?: string;
15
+ };
16
+ declare function createApiKeyEndUserVerifier(config: ApiKeyEndUserVerifierConfig): EndUserAuthVerifier;
17
+
18
+ export { type ApiKeyEndUserVerifierConfig, type ApiKeyResolveResult, createApiKeyEndUserVerifier };
@@ -0,0 +1,76 @@
1
+ // src/errors.ts
2
+ var PmtHouseError = class extends Error {
3
+ status;
4
+ code;
5
+ details;
6
+ constructor(message, {
7
+ status = 500,
8
+ code = "pymthouse_error",
9
+ details
10
+ } = {}) {
11
+ super(message);
12
+ this.name = "PmtHouseError";
13
+ this.status = status;
14
+ this.code = code;
15
+ this.details = details;
16
+ }
17
+ };
18
+
19
+ // src/signer/webhook/bearer.ts
20
+ function bearerTokenFromAuthorization(authorization) {
21
+ const trimmed = authorization.trim();
22
+ if (!trimmed) {
23
+ throw new Error("missing authorization");
24
+ }
25
+ const prefix = "Bearer ";
26
+ if (!trimmed.startsWith(prefix)) {
27
+ throw new Error("authorization must be Bearer token");
28
+ }
29
+ const token = trimmed.slice(prefix.length).trim();
30
+ if (!token) {
31
+ throw new Error("empty bearer token");
32
+ }
33
+ return token;
34
+ }
35
+
36
+ // src/signer/webhook/adapters/api-key/verifier.ts
37
+ function createApiKeyEndUserVerifier(config) {
38
+ const prefix = config.apiKeyPrefix ?? "sk_";
39
+ const defaultClientId = config.defaultClientId ?? "daydream-scope";
40
+ const defaultUsageSubjectType = config.defaultUsageSubjectType ?? "clerk_user_id";
41
+ const ttl = config.expiryTtlSeconds ?? 60;
42
+ return {
43
+ kind: "custom",
44
+ verify: async ({ authorization }) => {
45
+ const token = bearerTokenFromAuthorization(authorization);
46
+ if (prefix && !token.startsWith(prefix)) {
47
+ throw new PmtHouseError("invalid api key", {
48
+ status: 401,
49
+ code: "invalid_api_key"
50
+ });
51
+ }
52
+ const resolved = await config.resolveApiKey(token);
53
+ if (!resolved?.userId) {
54
+ throw new PmtHouseError("invalid api key", {
55
+ status: 401,
56
+ code: "invalid_api_key"
57
+ });
58
+ }
59
+ const identity = {
60
+ issuer: config.issuer,
61
+ client_id: resolved.clientId ?? defaultClientId,
62
+ usage_subject: resolved.userId,
63
+ usage_subject_type: resolved.usageSubjectType ?? defaultUsageSubjectType
64
+ };
65
+ return {
66
+ identity,
67
+ expiry: Math.trunc(Date.now() / 1e3) + ttl,
68
+ raw: resolved
69
+ };
70
+ }
71
+ };
72
+ }
73
+
74
+ export { createApiKeyEndUserVerifier };
75
+ //# sourceMappingURL=api-key.js.map
76
+ //# sourceMappingURL=api-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/errors.ts","../../../../src/signer/webhook/bearer.ts","../../../../src/signer/webhook/adapters/api-key/verifier.ts"],"names":[],"mappings":";AAAO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EAET,YACE,OAAA,EACA;AAAA,IACE,MAAA,GAAS,GAAA;AAAA,IACT,IAAA,GAAO,iBAAA;AAAA,IACP;AAAA,GACF,GAII,EAAC,EACL;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF,CAAA;;;ACvBO,SAAS,6BAA6B,aAAA,EAA+B;AAC1E,EAAA,MAAM,OAAA,GAAU,cAAc,IAAA,EAAK;AACnC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,EACzC;AACA,EAAA,MAAM,MAAA,GAAS,SAAA;AACf,EAAA,IAAI,CAAC,OAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,EAAG;AAC/B,IAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,MAAM,EAAE,IAAA,EAAK;AAChD,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACtC;AACA,EAAA,OAAO,KAAA;AACT;;;ACMO,SAAS,4BACd,MAAA,EACqB;AACrB,EAAA,MAAM,MAAA,GAAS,OAAO,YAAA,IAAgB,KAAA;AACtC,EAAA,MAAM,eAAA,GAAkB,OAAO,eAAA,IAAmB,gBAAA;AAClD,EAAA,MAAM,uBAAA,GACJ,OAAO,uBAAA,IAA2B,eAAA;AACpC,EAAA,MAAM,GAAA,GAAM,OAAO,gBAAA,IAAoB,EAAA;AAEvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,OAAO,EAAE,aAAA,EAAc,KAAM;AACnC,MAAA,MAAM,KAAA,GAAQ,6BAA6B,aAAa,CAAA;AACxD,MAAA,IAAI,MAAA,IAAU,CAAC,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,EAAG;AACvC,QAAA,MAAM,IAAI,cAAc,iBAAA,EAAmB;AAAA,UACzC,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,MAAA,CAAO,aAAA,CAAc,KAAK,CAAA;AACjD,MAAA,IAAI,CAAC,UAAU,MAAA,EAAQ;AACrB,QAAA,MAAM,IAAI,cAAc,iBAAA,EAAmB;AAAA,UACzC,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AAEA,MAAA,MAAM,QAAA,GAA0B;AAAA,QAC9B,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAA,EAAW,SAAS,QAAA,IAAY,eAAA;AAAA,QAChC,eAAe,QAAA,CAAS,MAAA;AAAA,QACxB,kBAAA,EACE,SAAS,gBAAA,IAAoB;AAAA,OACjC;AAEA,MAAA,OAAO;AAAA,QACL,QAAA;AAAA,QACA,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,GAAA,EAAI,GAAI,GAAI,CAAA,GAAI,GAAA;AAAA,QACxC,GAAA,EAAK;AAAA,OACP;AAAA,IACF;AAAA,GACF;AACF","file":"api-key.js","sourcesContent":["export class PmtHouseError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details?: unknown;\n\n constructor(\n message: string,\n {\n status = 500,\n code = \"pymthouse_error\",\n details,\n }: {\n status?: number;\n code?: string;\n details?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"PmtHouseError\";\n this.status = status;\n this.code = code;\n this.details = details;\n }\n}\n\nexport function toPmtHouseError(\n error: unknown,\n fallbackMessage: string,\n): PmtHouseError {\n if (error instanceof PmtHouseError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new PmtHouseError(error.message || fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n }\n\n return new PmtHouseError(fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n}\n","export function bearerTokenFromAuthorization(authorization: string): string {\n const trimmed = authorization.trim();\n if (!trimmed) {\n throw new Error(\"missing authorization\");\n }\n const prefix = \"Bearer \";\n if (!trimmed.startsWith(prefix)) {\n throw new Error(\"authorization must be Bearer token\");\n }\n const token = trimmed.slice(prefix.length).trim();\n if (!token) {\n throw new Error(\"empty bearer token\");\n }\n return token;\n}\n","import { PmtHouseError } from \"../../../../errors.js\";\nimport { bearerTokenFromAuthorization } from \"../../bearer.js\";\nimport type { UsageIdentity } from \"../../types.js\";\nimport type { EndUserAuthVerifier } from \"../../verifier.js\";\n\nexport type ApiKeyResolveResult = {\n userId: string;\n clientId?: string;\n usageSubjectType?: string;\n};\n\nexport type ApiKeyEndUserVerifierConfig = {\n issuer: string;\n resolveApiKey: (apiKey: string) => Promise<ApiKeyResolveResult | null>;\n expiryTtlSeconds?: number;\n apiKeyPrefix?: string;\n defaultClientId?: string;\n defaultUsageSubjectType?: string;\n};\n\nexport function createApiKeyEndUserVerifier(\n config: ApiKeyEndUserVerifierConfig,\n): EndUserAuthVerifier {\n const prefix = config.apiKeyPrefix ?? \"sk_\";\n const defaultClientId = config.defaultClientId ?? \"daydream-scope\";\n const defaultUsageSubjectType =\n config.defaultUsageSubjectType ?? \"clerk_user_id\";\n const ttl = config.expiryTtlSeconds ?? 60;\n\n return {\n kind: \"custom\",\n verify: async ({ authorization }) => {\n const token = bearerTokenFromAuthorization(authorization);\n if (prefix && !token.startsWith(prefix)) {\n throw new PmtHouseError(\"invalid api key\", {\n status: 401,\n code: \"invalid_api_key\",\n });\n }\n\n const resolved = await config.resolveApiKey(token);\n if (!resolved?.userId) {\n throw new PmtHouseError(\"invalid api key\", {\n status: 401,\n code: \"invalid_api_key\",\n });\n }\n\n const identity: UsageIdentity = {\n issuer: config.issuer,\n client_id: resolved.clientId ?? defaultClientId,\n usage_subject: resolved.userId,\n usage_subject_type:\n resolved.usageSubjectType ?? defaultUsageSubjectType,\n };\n\n return {\n identity,\n expiry: Math.trunc(Date.now() / 1000) + ttl,\n raw: resolved,\n };\n },\n };\n}\n"]}
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ // src/errors.ts
4
+ var PmtHouseError = class extends Error {
5
+ status;
6
+ code;
7
+ details;
8
+ constructor(message, {
9
+ status = 500,
10
+ code = "pymthouse_error",
11
+ details
12
+ } = {}) {
13
+ super(message);
14
+ this.name = "PmtHouseError";
15
+ this.status = status;
16
+ this.code = code;
17
+ this.details = details;
18
+ }
19
+ };
20
+
21
+ // src/signer/webhook/adapters/composite/verifier.ts
22
+ function createFirstMatchEndUserVerifier(verifiers) {
23
+ if (verifiers.length === 0) {
24
+ throw new PmtHouseError("at least one verifier is required", {
25
+ status: 500,
26
+ code: "invalid_verifier_config"
27
+ });
28
+ }
29
+ return {
30
+ kind: "custom",
31
+ verify: async (context) => {
32
+ let lastError;
33
+ for (const verifier of verifiers) {
34
+ try {
35
+ return await verifier.verify(context);
36
+ } catch (err) {
37
+ lastError = err;
38
+ }
39
+ }
40
+ if (lastError instanceof PmtHouseError) {
41
+ throw lastError;
42
+ }
43
+ if (lastError instanceof Error) {
44
+ throw new PmtHouseError(lastError.message, {
45
+ status: 401,
46
+ code: "invalid_credentials"
47
+ });
48
+ }
49
+ throw new PmtHouseError("invalid credentials", {
50
+ status: 401,
51
+ code: "invalid_credentials"
52
+ });
53
+ },
54
+ adminRoutes: verifiers.flatMap((verifier) => verifier.adminRoutes ?? [])
55
+ };
56
+ }
57
+
58
+ exports.createFirstMatchEndUserVerifier = createFirstMatchEndUserVerifier;
59
+ //# sourceMappingURL=composite.cjs.map
60
+ //# sourceMappingURL=composite.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/errors.ts","../../../../src/signer/webhook/adapters/composite/verifier.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EAET,YACE,OAAA,EACA;AAAA,IACE,MAAA,GAAS,GAAA;AAAA,IACT,IAAA,GAAO,iBAAA;AAAA,IACP;AAAA,GACF,GAII,EAAC,EACL;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF,CAAA;;;ACpBO,SAAS,gCACd,SAAA,EACqB;AACrB,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,cAAc,mCAAA,EAAqC;AAAA,MAC3D,MAAA,EAAQ,GAAA;AAAA,MACR,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,OAAO,OAAA,KAAY;AACzB,MAAA,IAAI,SAAA;AACJ,MAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,QAAA,IAAI;AACF,UAAA,OAAO,MAAM,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AAAA,QACtC,SAAS,GAAA,EAAK;AACZ,UAAA,SAAA,GAAY,GAAA;AAAA,QACd;AAAA,MACF;AAEA,MAAA,IAAI,qBAAqB,aAAA,EAAe;AACtC,QAAA,MAAM,SAAA;AAAA,MACR;AACA,MAAA,IAAI,qBAAqB,KAAA,EAAO;AAC9B,QAAA,MAAM,IAAI,aAAA,CAAc,SAAA,CAAU,OAAA,EAAS;AAAA,UACzC,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AACA,MAAA,MAAM,IAAI,cAAc,qBAAA,EAAuB;AAAA,QAC7C,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAA;AAAA,IACA,WAAA,EAAa,UAAU,OAAA,CAAQ,CAAC,aAAa,QAAA,CAAS,WAAA,IAAe,EAAE;AAAA,GACzE;AACF","file":"composite.cjs","sourcesContent":["export class PmtHouseError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details?: unknown;\n\n constructor(\n message: string,\n {\n status = 500,\n code = \"pymthouse_error\",\n details,\n }: {\n status?: number;\n code?: string;\n details?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"PmtHouseError\";\n this.status = status;\n this.code = code;\n this.details = details;\n }\n}\n\nexport function toPmtHouseError(\n error: unknown,\n fallbackMessage: string,\n): PmtHouseError {\n if (error instanceof PmtHouseError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new PmtHouseError(error.message || fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n }\n\n return new PmtHouseError(fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n}\n","import { PmtHouseError } from \"../../../../errors.js\";\nimport type { EndUserAuthVerifier } from \"../../verifier.js\";\n\nexport function createFirstMatchEndUserVerifier(\n verifiers: EndUserAuthVerifier[],\n): EndUserAuthVerifier {\n if (verifiers.length === 0) {\n throw new PmtHouseError(\"at least one verifier is required\", {\n status: 500,\n code: \"invalid_verifier_config\",\n });\n }\n\n return {\n kind: \"custom\",\n verify: async (context) => {\n let lastError: unknown;\n for (const verifier of verifiers) {\n try {\n return await verifier.verify(context);\n } catch (err) {\n lastError = err;\n }\n }\n\n if (lastError instanceof PmtHouseError) {\n throw lastError;\n }\n if (lastError instanceof Error) {\n throw new PmtHouseError(lastError.message, {\n status: 401,\n code: \"invalid_credentials\",\n });\n }\n throw new PmtHouseError(\"invalid credentials\", {\n status: 401,\n code: \"invalid_credentials\",\n });\n },\n adminRoutes: verifiers.flatMap((verifier) => verifier.adminRoutes ?? []),\n };\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { E as EndUserAuthVerifier } from '../../../verifier-B-WFDMz6.cjs';
2
+
3
+ declare function createFirstMatchEndUserVerifier(verifiers: EndUserAuthVerifier[]): EndUserAuthVerifier;
4
+
5
+ export { createFirstMatchEndUserVerifier };
@@ -0,0 +1,5 @@
1
+ import { E as EndUserAuthVerifier } from '../../../verifier-B-WFDMz6.js';
2
+
3
+ declare function createFirstMatchEndUserVerifier(verifiers: EndUserAuthVerifier[]): EndUserAuthVerifier;
4
+
5
+ export { createFirstMatchEndUserVerifier };
@@ -0,0 +1,58 @@
1
+ // src/errors.ts
2
+ var PmtHouseError = class extends Error {
3
+ status;
4
+ code;
5
+ details;
6
+ constructor(message, {
7
+ status = 500,
8
+ code = "pymthouse_error",
9
+ details
10
+ } = {}) {
11
+ super(message);
12
+ this.name = "PmtHouseError";
13
+ this.status = status;
14
+ this.code = code;
15
+ this.details = details;
16
+ }
17
+ };
18
+
19
+ // src/signer/webhook/adapters/composite/verifier.ts
20
+ function createFirstMatchEndUserVerifier(verifiers) {
21
+ if (verifiers.length === 0) {
22
+ throw new PmtHouseError("at least one verifier is required", {
23
+ status: 500,
24
+ code: "invalid_verifier_config"
25
+ });
26
+ }
27
+ return {
28
+ kind: "custom",
29
+ verify: async (context) => {
30
+ let lastError;
31
+ for (const verifier of verifiers) {
32
+ try {
33
+ return await verifier.verify(context);
34
+ } catch (err) {
35
+ lastError = err;
36
+ }
37
+ }
38
+ if (lastError instanceof PmtHouseError) {
39
+ throw lastError;
40
+ }
41
+ if (lastError instanceof Error) {
42
+ throw new PmtHouseError(lastError.message, {
43
+ status: 401,
44
+ code: "invalid_credentials"
45
+ });
46
+ }
47
+ throw new PmtHouseError("invalid credentials", {
48
+ status: 401,
49
+ code: "invalid_credentials"
50
+ });
51
+ },
52
+ adminRoutes: verifiers.flatMap((verifier) => verifier.adminRoutes ?? [])
53
+ };
54
+ }
55
+
56
+ export { createFirstMatchEndUserVerifier };
57
+ //# sourceMappingURL=composite.js.map
58
+ //# sourceMappingURL=composite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/errors.ts","../../../../src/signer/webhook/adapters/composite/verifier.ts"],"names":[],"mappings":";AAAO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EAET,YACE,OAAA,EACA;AAAA,IACE,MAAA,GAAS,GAAA;AAAA,IACT,IAAA,GAAO,iBAAA;AAAA,IACP;AAAA,GACF,GAII,EAAC,EACL;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF,CAAA;;;ACpBO,SAAS,gCACd,SAAA,EACqB;AACrB,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,cAAc,mCAAA,EAAqC;AAAA,MAC3D,MAAA,EAAQ,GAAA;AAAA,MACR,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ,OAAO,OAAA,KAAY;AACzB,MAAA,IAAI,SAAA;AACJ,MAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,QAAA,IAAI;AACF,UAAA,OAAO,MAAM,QAAA,CAAS,MAAA,CAAO,OAAO,CAAA;AAAA,QACtC,SAAS,GAAA,EAAK;AACZ,UAAA,SAAA,GAAY,GAAA;AAAA,QACd;AAAA,MACF;AAEA,MAAA,IAAI,qBAAqB,aAAA,EAAe;AACtC,QAAA,MAAM,SAAA;AAAA,MACR;AACA,MAAA,IAAI,qBAAqB,KAAA,EAAO;AAC9B,QAAA,MAAM,IAAI,aAAA,CAAc,SAAA,CAAU,OAAA,EAAS;AAAA,UACzC,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAAA,MACH;AACA,MAAA,MAAM,IAAI,cAAc,qBAAA,EAAuB;AAAA,QAC7C,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM;AAAA,OACP,CAAA;AAAA,IACH,CAAA;AAAA,IACA,WAAA,EAAa,UAAU,OAAA,CAAQ,CAAC,aAAa,QAAA,CAAS,WAAA,IAAe,EAAE;AAAA,GACzE;AACF","file":"composite.js","sourcesContent":["export class PmtHouseError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details?: unknown;\n\n constructor(\n message: string,\n {\n status = 500,\n code = \"pymthouse_error\",\n details,\n }: {\n status?: number;\n code?: string;\n details?: unknown;\n } = {},\n ) {\n super(message);\n this.name = \"PmtHouseError\";\n this.status = status;\n this.code = code;\n this.details = details;\n }\n}\n\nexport function toPmtHouseError(\n error: unknown,\n fallbackMessage: string,\n): PmtHouseError {\n if (error instanceof PmtHouseError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new PmtHouseError(error.message || fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n }\n\n return new PmtHouseError(fallbackMessage, {\n code: \"unexpected_error\",\n status: 500,\n });\n}\n","import { PmtHouseError } from \"../../../../errors.js\";\nimport type { EndUserAuthVerifier } from \"../../verifier.js\";\n\nexport function createFirstMatchEndUserVerifier(\n verifiers: EndUserAuthVerifier[],\n): EndUserAuthVerifier {\n if (verifiers.length === 0) {\n throw new PmtHouseError(\"at least one verifier is required\", {\n status: 500,\n code: \"invalid_verifier_config\",\n });\n }\n\n return {\n kind: \"custom\",\n verify: async (context) => {\n let lastError: unknown;\n for (const verifier of verifiers) {\n try {\n return await verifier.verify(context);\n } catch (err) {\n lastError = err;\n }\n }\n\n if (lastError instanceof PmtHouseError) {\n throw lastError;\n }\n if (lastError instanceof Error) {\n throw new PmtHouseError(lastError.message, {\n status: 401,\n code: \"invalid_credentials\",\n });\n }\n throw new PmtHouseError(\"invalid credentials\", {\n status: 401,\n code: \"invalid_credentials\",\n });\n },\n adminRoutes: verifiers.flatMap((verifier) => verifier.adminRoutes ?? []),\n };\n}\n"]}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ // src/signer/webhook/adapters/oauth1/verifier.ts
4
+ function createOAuth1EndUserVerifier(config) {
5
+ return {
6
+ kind: "oauth1",
7
+ verify: async () => {
8
+ if (!config.consumerKey.trim() || !config.consumerSecret.trim()) {
9
+ throw new Error("OAuth 1.0 consumer credentials are required");
10
+ }
11
+ throw new Error("OAuth 1.0 webhook verification is not implemented yet");
12
+ }
13
+ };
14
+ }
15
+
16
+ exports.createOAuth1EndUserVerifier = createOAuth1EndUserVerifier;
17
+ //# sourceMappingURL=oauth1.cjs.map
18
+ //# sourceMappingURL=oauth1.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/signer/webhook/adapters/oauth1/verifier.ts"],"names":[],"mappings":";;;AAkBO,SAAS,4BACd,MAAA,EACqB;AACrB,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,QAAQ,YAAY;AAClB,MAAA,IAAI,CAAC,OAAO,WAAA,CAAY,IAAA,MAAU,CAAC,MAAA,CAAO,cAAA,CAAe,IAAA,EAAK,EAAG;AAC/D,QAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,MAC/D;AACA,MAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,IACzE;AAAA,GACF;AACF","file":"oauth1.cjs","sourcesContent":["import type { UsageIdentity } from \"../../types.js\";\nimport type { EndUserAuthVerifier } from \"../../verifier.js\";\n\nexport type OAuth1EndUserAuthConfig = {\n consumerKey: string;\n consumerSecret: string;\n /** Resolve oauth_token → UsageIdentity (platform-owned store). */\n resolveIdentity: (oauthToken: string) => Promise<UsageIdentity>;\n tokenSecretLookup?: (oauthToken: string) => Promise<string | undefined>;\n};\n\n/**\n * OAuth 1.0a end-user auth verifier (stub).\n *\n * A full implementation will parse `Authorization: OAuth …` from\n * `context.authorization`, validate the signature using `context.payload.headers`\n * and the request URL, then call `resolveIdentity`.\n */\nexport function createOAuth1EndUserVerifier(\n config: OAuth1EndUserAuthConfig,\n): EndUserAuthVerifier {\n return {\n kind: \"oauth1\",\n verify: async () => {\n if (!config.consumerKey.trim() || !config.consumerSecret.trim()) {\n throw new Error(\"OAuth 1.0 consumer credentials are required\");\n }\n throw new Error(\"OAuth 1.0 webhook verification is not implemented yet\");\n },\n };\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import { U as UsageIdentity, E as EndUserAuthVerifier } from '../../../verifier-B-WFDMz6.cjs';
2
+
3
+ type OAuth1EndUserAuthConfig = {
4
+ consumerKey: string;
5
+ consumerSecret: string;
6
+ /** Resolve oauth_token → UsageIdentity (platform-owned store). */
7
+ resolveIdentity: (oauthToken: string) => Promise<UsageIdentity>;
8
+ tokenSecretLookup?: (oauthToken: string) => Promise<string | undefined>;
9
+ };
10
+ /**
11
+ * OAuth 1.0a end-user auth verifier (stub).
12
+ *
13
+ * A full implementation will parse `Authorization: OAuth …` from
14
+ * `context.authorization`, validate the signature using `context.payload.headers`
15
+ * and the request URL, then call `resolveIdentity`.
16
+ */
17
+ declare function createOAuth1EndUserVerifier(config: OAuth1EndUserAuthConfig): EndUserAuthVerifier;
18
+
19
+ export { type OAuth1EndUserAuthConfig, createOAuth1EndUserVerifier };
@@ -0,0 +1,19 @@
1
+ import { U as UsageIdentity, E as EndUserAuthVerifier } from '../../../verifier-B-WFDMz6.js';
2
+
3
+ type OAuth1EndUserAuthConfig = {
4
+ consumerKey: string;
5
+ consumerSecret: string;
6
+ /** Resolve oauth_token → UsageIdentity (platform-owned store). */
7
+ resolveIdentity: (oauthToken: string) => Promise<UsageIdentity>;
8
+ tokenSecretLookup?: (oauthToken: string) => Promise<string | undefined>;
9
+ };
10
+ /**
11
+ * OAuth 1.0a end-user auth verifier (stub).
12
+ *
13
+ * A full implementation will parse `Authorization: OAuth …` from
14
+ * `context.authorization`, validate the signature using `context.payload.headers`
15
+ * and the request URL, then call `resolveIdentity`.
16
+ */
17
+ declare function createOAuth1EndUserVerifier(config: OAuth1EndUserAuthConfig): EndUserAuthVerifier;
18
+
19
+ export { type OAuth1EndUserAuthConfig, createOAuth1EndUserVerifier };
@@ -0,0 +1,16 @@
1
+ // src/signer/webhook/adapters/oauth1/verifier.ts
2
+ function createOAuth1EndUserVerifier(config) {
3
+ return {
4
+ kind: "oauth1",
5
+ verify: async () => {
6
+ if (!config.consumerKey.trim() || !config.consumerSecret.trim()) {
7
+ throw new Error("OAuth 1.0 consumer credentials are required");
8
+ }
9
+ throw new Error("OAuth 1.0 webhook verification is not implemented yet");
10
+ }
11
+ };
12
+ }
13
+
14
+ export { createOAuth1EndUserVerifier };
15
+ //# sourceMappingURL=oauth1.js.map
16
+ //# sourceMappingURL=oauth1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/signer/webhook/adapters/oauth1/verifier.ts"],"names":[],"mappings":";AAkBO,SAAS,4BACd,MAAA,EACqB;AACrB,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,QAAQ,YAAY;AAClB,MAAA,IAAI,CAAC,OAAO,WAAA,CAAY,IAAA,MAAU,CAAC,MAAA,CAAO,cAAA,CAAe,IAAA,EAAK,EAAG;AAC/D,QAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,MAC/D;AACA,MAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,IACzE;AAAA,GACF;AACF","file":"oauth1.js","sourcesContent":["import type { UsageIdentity } from \"../../types.js\";\nimport type { EndUserAuthVerifier } from \"../../verifier.js\";\n\nexport type OAuth1EndUserAuthConfig = {\n consumerKey: string;\n consumerSecret: string;\n /** Resolve oauth_token → UsageIdentity (platform-owned store). */\n resolveIdentity: (oauthToken: string) => Promise<UsageIdentity>;\n tokenSecretLookup?: (oauthToken: string) => Promise<string | undefined>;\n};\n\n/**\n * OAuth 1.0a end-user auth verifier (stub).\n *\n * A full implementation will parse `Authorization: OAuth …` from\n * `context.authorization`, validate the signature using `context.payload.headers`\n * and the request URL, then call `resolveIdentity`.\n */\nexport function createOAuth1EndUserVerifier(\n config: OAuth1EndUserAuthConfig,\n): EndUserAuthVerifier {\n return {\n kind: \"oauth1\",\n verify: async () => {\n if (!config.consumerKey.trim() || !config.consumerSecret.trim()) {\n throw new Error(\"OAuth 1.0 consumer credentials are required\");\n }\n throw new Error(\"OAuth 1.0 webhook verification is not implemented yet\");\n },\n };\n}\n"]}