@obul.ai/sdk 0.1.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.
Files changed (61) hide show
  1. package/dist/adapters/cloudflare.d.ts +6 -0
  2. package/dist/adapters/cloudflare.d.ts.map +1 -0
  3. package/dist/adapters/cloudflare.js +12 -0
  4. package/dist/adapters/cloudflare.js.map +1 -0
  5. package/dist/adapters/express.d.ts +3 -0
  6. package/dist/adapters/express.d.ts.map +1 -0
  7. package/dist/adapters/express.js +22 -0
  8. package/dist/adapters/express.js.map +1 -0
  9. package/dist/adapters/hono.d.ts +4 -0
  10. package/dist/adapters/hono.d.ts.map +1 -0
  11. package/dist/adapters/hono.js +19 -0
  12. package/dist/adapters/hono.js.map +1 -0
  13. package/dist/adapters/next.d.ts +6 -0
  14. package/dist/adapters/next.d.ts.map +1 -0
  15. package/dist/adapters/next.js +15 -0
  16. package/dist/adapters/next.js.map +1 -0
  17. package/dist/adapters/node.d.ts +21 -0
  18. package/dist/adapters/node.d.ts.map +1 -0
  19. package/dist/adapters/node.js +108 -0
  20. package/dist/adapters/node.js.map +1 -0
  21. package/dist/browser/index.d.ts +52 -0
  22. package/dist/browser/index.d.ts.map +1 -0
  23. package/dist/browser/index.js +202 -0
  24. package/dist/browser/index.js.map +1 -0
  25. package/dist/core/cookies.d.ts +4 -0
  26. package/dist/core/cookies.d.ts.map +1 -0
  27. package/dist/core/cookies.js +44 -0
  28. package/dist/core/cookies.js.map +1 -0
  29. package/dist/core/crypto.d.ts +10 -0
  30. package/dist/core/crypto.d.ts.map +1 -0
  31. package/dist/core/crypto.js +68 -0
  32. package/dist/core/crypto.js.map +1 -0
  33. package/dist/core/index.d.ts +7 -0
  34. package/dist/core/index.d.ts.map +1 -0
  35. package/dist/core/index.js +6 -0
  36. package/dist/core/index.js.map +1 -0
  37. package/dist/core/jwt.d.ts +8 -0
  38. package/dist/core/jwt.d.ts.map +1 -0
  39. package/dist/core/jwt.js +15 -0
  40. package/dist/core/jwt.js.map +1 -0
  41. package/dist/core/oauth.d.ts +39 -0
  42. package/dist/core/oauth.d.ts.map +1 -0
  43. package/dist/core/oauth.js +86 -0
  44. package/dist/core/oauth.js.map +1 -0
  45. package/dist/core/stores.d.ts +18 -0
  46. package/dist/core/stores.d.ts.map +1 -0
  47. package/dist/core/stores.js +39 -0
  48. package/dist/core/stores.js.map +1 -0
  49. package/dist/core/types.d.ts +84 -0
  50. package/dist/core/types.d.ts.map +1 -0
  51. package/dist/core/types.js +2 -0
  52. package/dist/core/types.js.map +1 -0
  53. package/dist/index.d.ts +2 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +2 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/server/index.d.ts +31 -0
  58. package/dist/server/index.d.ts.map +1 -0
  59. package/dist/server/index.js +368 -0
  60. package/dist/server/index.js.map +1 -0
  61. package/package.json +68 -0
@@ -0,0 +1,6 @@
1
+ import type { ObulServerConfig } from "../core";
2
+ type ConfigFactory<Env = unknown, Ctx = unknown> = (env: Env, ctx: Ctx) => ObulServerConfig;
3
+ type Handler<Env = unknown, Ctx = unknown> = (request: Request, env: Env, ctx: Ctx) => Promise<Response>;
4
+ export declare function createObulWorkerHandler<Env = unknown, Ctx = unknown>(config: ObulServerConfig | ConfigFactory<Env, Ctx>): Handler<Env, Ctx>;
5
+ export {};
6
+ //# sourceMappingURL=cloudflare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,KAAK,aAAa,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,gBAAgB,CAAA;AAE3F,KAAK,OAAO,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAExG,wBAAgB,uBAAuB,CAAC,GAAG,GAAG,OAAO,EAAE,GAAG,GAAG,OAAO,EAClE,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GACjD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAUnB"}
@@ -0,0 +1,12 @@
1
+ import { createObulServer } from "../server";
2
+ export function createObulWorkerHandler(config) {
3
+ if (typeof config === "function") {
4
+ return async (request, env, ctx) => {
5
+ const { handle } = createObulServer(config(env, ctx));
6
+ return handle(request);
7
+ };
8
+ }
9
+ const { handle } = createObulServer(config);
10
+ return async (request) => handle(request);
11
+ }
12
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/adapters/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAO5C,MAAM,UAAU,uBAAuB,CACrC,MAAkD;IAElD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC,CAAA;IACH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ObulServerConfig } from "../core";
2
+ export declare function createObulExpressRouter(config: ObulServerConfig): import("express-serve-static-core").Router;
3
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/adapters/express.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,8CAkB/D"}
@@ -0,0 +1,22 @@
1
+ import express from "express";
2
+ import cookieParser from "cookie-parser";
3
+ import { createObulServer } from "../server";
4
+ import { nodeRequestToFetch, sendFetchResponse } from "./node";
5
+ export function createObulExpressRouter(config) {
6
+ const { handle } = createObulServer(config);
7
+ const router = express.Router();
8
+ router.use(cookieParser());
9
+ router.use(express.json({ type: ["application/json", "application/*+json"] }));
10
+ router.all("/obul/*", async (req, res, next) => {
11
+ try {
12
+ const request = await nodeRequestToFetch(req);
13
+ const response = await handle(request);
14
+ await sendFetchResponse(res, response);
15
+ }
16
+ catch (err) {
17
+ next(err);
18
+ }
19
+ });
20
+ return router;
21
+ }
22
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/adapters/express.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAG9D,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAE/B,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;IAC1B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAA;IAE9E,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAA;YAC7C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;YACtC,MAAM,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Hono } from "hono";
2
+ import type { ObulServerConfig } from "../core";
3
+ export declare function createObulHonoRouter(config: ObulServerConfig): Promise<Hono>;
4
+ //# sourceMappingURL=hono.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono.d.ts","sourceRoot":"","sources":["../../src/adapters/hono.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAA;AAEzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBlF"}
@@ -0,0 +1,19 @@
1
+ import { createObulServer } from "../server";
2
+ export async function createObulHonoRouter(config) {
3
+ let honoModule;
4
+ try {
5
+ honoModule = await import("hono");
6
+ }
7
+ catch (error) {
8
+ const message = error instanceof Error ? error.message : String(error);
9
+ throw new Error(`Hono is not installed. Add it to your dependencies to use the Hono adapter. (${message})`);
10
+ }
11
+ const { handle } = createObulServer(config);
12
+ const router = new honoModule.Hono();
13
+ router.all("/obul/*", async (c) => {
14
+ const response = await handle(c.req.raw);
15
+ return response;
16
+ });
17
+ return router;
18
+ }
19
+ //# sourceMappingURL=hono.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono.js","sourceRoot":"","sources":["../../src/adapters/hono.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAwB;IACjE,IAAI,UAAiC,CAAA;IACrC,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,MAAM,IAAI,KAAK,CACb,gFAAgF,OAAO,GAAG,CAC3F,CAAA;IACH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAA;IAEpC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAU,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACxC,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ObulServerConfig } from "../core";
2
+ export declare function createObulNextHandler(config: ObulServerConfig): (request: Request) => Promise<Response>;
3
+ export declare function createObulNextApiHandler(config: ObulServerConfig): (req: import("http").IncomingMessage & {
4
+ body?: unknown;
5
+ }, res: import("http").ServerResponse) => Promise<void>;
6
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/adapters/next.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,IAEpD,SAAS,OAAO,uBACzB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,IAEjD,KAAK,OAAO,MAAM,EAAE,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,OAAO,MAAM,EAAE,cAAc,mBAK3G"}
@@ -0,0 +1,15 @@
1
+ import { createObulServer } from "../server";
2
+ import { nodeRequestToFetch, sendFetchResponse } from "./node";
3
+ export function createObulNextHandler(config) {
4
+ const { handle } = createObulServer(config);
5
+ return (request) => handle(request);
6
+ }
7
+ export function createObulNextApiHandler(config) {
8
+ const { handle } = createObulServer(config);
9
+ return async (req, res) => {
10
+ const request = await nodeRequestToFetch(req);
11
+ const response = await handle(request);
12
+ await sendFetchResponse(res, response);
13
+ };
14
+ }
15
+ //# sourceMappingURL=next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/adapters/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAG9D,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,OAAO,CAAC,OAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAwB;IAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC3C,OAAO,KAAK,EAAE,GAAwD,EAAE,GAAkC,EAAE,EAAE;QAC5G,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QACtC,MAAM,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ type NodeHeaders = Record<string, string | string[] | undefined>;
2
+ type NodeRequest = {
3
+ headers?: NodeHeaders;
4
+ method?: string;
5
+ protocol?: string;
6
+ originalUrl?: string;
7
+ url?: string;
8
+ body?: unknown;
9
+ on: (event: "data" | "end" | "error", handler: (chunk?: Uint8Array | string | Error) => void) => void;
10
+ };
11
+ type NodeResponse = {
12
+ status?: (code: number) => NodeResponse;
13
+ statusCode?: number;
14
+ setHeader?: (name: string, value: string | string[]) => void;
15
+ append?: (name: string, value: string) => void;
16
+ end?: (data?: Uint8Array) => void;
17
+ };
18
+ export declare function nodeRequestToFetch(req: NodeRequest): Promise<Request>;
19
+ export declare function sendFetchResponse(res: NodeResponse, response: Response): Promise<void>;
20
+ export {};
21
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/adapters/node.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;AAEhE,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,KAAK,IAAI,CAAA;CACtG,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAA;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAA;IAC5D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;CAClC,CAAA;AAwDD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB3E;AAWD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5F"}
@@ -0,0 +1,108 @@
1
+ function getHeaderValue(headers, name) {
2
+ const value = headers[name];
3
+ if (Array.isArray(value))
4
+ return value.join(",");
5
+ return value;
6
+ }
7
+ function concatChunks(chunks) {
8
+ const total = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
9
+ const merged = new Uint8Array(total);
10
+ let offset = 0;
11
+ for (const chunk of chunks) {
12
+ merged.set(chunk, offset);
13
+ offset += chunk.length;
14
+ }
15
+ return merged;
16
+ }
17
+ function toArrayBuffer(bytes) {
18
+ const copy = new Uint8Array(bytes.byteLength);
19
+ copy.set(bytes);
20
+ return copy.buffer;
21
+ }
22
+ async function readNodeBody(req) {
23
+ if (req.body !== undefined) {
24
+ if (typeof req.body === "string") {
25
+ return toArrayBuffer(new TextEncoder().encode(req.body));
26
+ }
27
+ if (req.body instanceof Uint8Array) {
28
+ return toArrayBuffer(req.body);
29
+ }
30
+ if (req.body && typeof req.body === "object") {
31
+ return toArrayBuffer(new TextEncoder().encode(JSON.stringify(req.body)));
32
+ }
33
+ }
34
+ return new Promise((resolve, reject) => {
35
+ const chunks = [];
36
+ req.on("data", (chunk) => {
37
+ if (!chunk || chunk instanceof Error)
38
+ return;
39
+ if (typeof chunk === "string") {
40
+ chunks.push(new TextEncoder().encode(chunk));
41
+ }
42
+ else {
43
+ chunks.push(chunk);
44
+ }
45
+ });
46
+ req.on("end", () => {
47
+ if (chunks.length === 0)
48
+ return resolve(undefined);
49
+ resolve(toArrayBuffer(concatChunks(chunks)));
50
+ });
51
+ req.on("error", reject);
52
+ });
53
+ }
54
+ export async function nodeRequestToFetch(req) {
55
+ const headers = new Headers();
56
+ for (const [key, value] of Object.entries(req.headers ?? {})) {
57
+ if (Array.isArray(value))
58
+ headers.set(key, value.join(","));
59
+ else if (value != null)
60
+ headers.set(key, String(value));
61
+ }
62
+ const proto = getHeaderValue(req.headers ?? {}, "x-forwarded-proto") ?? req.protocol ?? "http";
63
+ const host = getHeaderValue(req.headers ?? {}, "host") ?? "localhost";
64
+ const originalUrl = req.originalUrl ?? req.url ?? "/";
65
+ const url = `${proto}://${host}${originalUrl}`;
66
+ const method = (req.method ?? "GET").toUpperCase();
67
+ const body = await readNodeBody(req);
68
+ return new Request(url, {
69
+ method,
70
+ headers,
71
+ body: body && method !== "GET" && method !== "HEAD" ? body : undefined
72
+ });
73
+ }
74
+ function getSetCookieValues(headers) {
75
+ const maybeHeaders = headers;
76
+ if (typeof maybeHeaders.getSetCookie === "function") {
77
+ return maybeHeaders.getSetCookie();
78
+ }
79
+ const single = headers.get("set-cookie");
80
+ return single ? [single] : [];
81
+ }
82
+ export async function sendFetchResponse(res, response) {
83
+ if (typeof res.status === "function")
84
+ res.status(response.status);
85
+ else
86
+ res.statusCode = response.status;
87
+ const setCookies = getSetCookieValues(response.headers);
88
+ response.headers.forEach((value, key) => {
89
+ if (key.toLowerCase() === "set-cookie")
90
+ return;
91
+ if (typeof res.setHeader === "function")
92
+ res.setHeader(key, value);
93
+ });
94
+ if (setCookies.length > 0) {
95
+ if (typeof res.append === "function") {
96
+ for (const value of setCookies)
97
+ res.append("Set-Cookie", value);
98
+ }
99
+ else if (typeof res.setHeader === "function") {
100
+ res.setHeader("Set-Cookie", setCookies);
101
+ }
102
+ }
103
+ const buffer = new Uint8Array(await response.arrayBuffer());
104
+ if (typeof res.end === "function") {
105
+ res.end(buffer);
106
+ }
107
+ }
108
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/adapters/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export type ObulSession = {
2
+ authenticated: boolean;
3
+ expiresAt?: number;
4
+ limits?: {
5
+ allowed_hosts: string[];
6
+ max_price_per_request: number;
7
+ };
8
+ };
9
+ export type ObulEventName = "signed_in" | "signed_out" | "session_expired" | "error";
10
+ export type ObulClientConfig = {
11
+ baseUrl?: string;
12
+ postLoginRedirect?: string;
13
+ postLogoutRedirect?: string;
14
+ sessionCheckIntervalMs?: number;
15
+ fetch?: typeof fetch;
16
+ };
17
+ export type HandleCallbackResult = {
18
+ ok: boolean;
19
+ redirectTo?: string;
20
+ session?: ObulSession;
21
+ error?: {
22
+ code: string;
23
+ message: string;
24
+ };
25
+ };
26
+ export type ObulApiRequestOptions = {
27
+ headers?: Record<string, string>;
28
+ query?: Record<string, string | number | boolean>;
29
+ maxPricePerRequest?: number;
30
+ body?: unknown;
31
+ signal?: AbortSignal;
32
+ };
33
+ export type ObulClient = {
34
+ signIn: () => void;
35
+ handleCallback: (options?: {
36
+ redirect?: boolean;
37
+ }) => Promise<HandleCallbackResult>;
38
+ getSession: () => Promise<ObulSession>;
39
+ signOut: () => Promise<void>;
40
+ api: {
41
+ request: (method: string, path: string, options?: ObulApiRequestOptions) => Promise<Response>;
42
+ get: (path: string, options?: ObulApiRequestOptions) => Promise<Response>;
43
+ post: (path: string, options?: ObulApiRequestOptions) => Promise<Response>;
44
+ put: (path: string, options?: ObulApiRequestOptions) => Promise<Response>;
45
+ patch: (path: string, options?: ObulApiRequestOptions) => Promise<Response>;
46
+ delete: (path: string, options?: ObulApiRequestOptions) => Promise<Response>;
47
+ };
48
+ on: (eventName: ObulEventName, handler: (payload?: unknown) => void) => void;
49
+ off: (eventName: ObulEventName, handler: (payload?: unknown) => void) => void;
50
+ };
51
+ export declare function createObulClient(config?: ObulClientConfig): ObulClient;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ class Emitter {
2
+ constructor() {
3
+ this.listeners = new Map();
4
+ }
5
+ on(event, handler) {
6
+ const set = this.listeners.get(event) ?? new Set();
7
+ set.add(handler);
8
+ this.listeners.set(event, set);
9
+ }
10
+ off(event, handler) {
11
+ const set = this.listeners.get(event);
12
+ if (!set)
13
+ return;
14
+ set.delete(handler);
15
+ }
16
+ emit(event, payload) {
17
+ const set = this.listeners.get(event);
18
+ if (!set)
19
+ return;
20
+ for (const handler of set)
21
+ handler(payload);
22
+ }
23
+ }
24
+ function normalizeBaseUrl(baseUrl) {
25
+ if (!baseUrl)
26
+ return "";
27
+ return baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
28
+ }
29
+ function readCookie(name) {
30
+ if (typeof document === "undefined")
31
+ return undefined;
32
+ const parts = document.cookie.split(";");
33
+ for (const part of parts) {
34
+ const [key, ...rest] = part.trim().split("=");
35
+ if (key === name)
36
+ return decodeURIComponent(rest.join("="));
37
+ }
38
+ return undefined;
39
+ }
40
+ function toQueryString(query) {
41
+ if (!query)
42
+ return "";
43
+ const params = new URLSearchParams();
44
+ for (const [key, value] of Object.entries(query)) {
45
+ params.set(key, String(value));
46
+ }
47
+ const qs = params.toString();
48
+ return qs ? `?${qs}` : "";
49
+ }
50
+ function isPlainObject(value) {
51
+ return Object.prototype.toString.call(value) === "[object Object]";
52
+ }
53
+ export function createObulClient(config = {}) {
54
+ const baseUrl = normalizeBaseUrl(config.baseUrl);
55
+ const fetcher = config.fetch ?? (typeof fetch !== "undefined" ? fetch.bind(globalThis) : undefined);
56
+ if (!fetcher) {
57
+ throw new Error("createObulClient requires a fetch implementation");
58
+ }
59
+ const emitter = new Emitter();
60
+ let currentSession = null;
61
+ const updateSession = (next) => {
62
+ const prev = currentSession;
63
+ currentSession = next;
64
+ if (!prev?.authenticated && next.authenticated) {
65
+ emitter.emit("signed_in", next);
66
+ return;
67
+ }
68
+ if (prev?.authenticated && !next.authenticated) {
69
+ const expired = typeof prev.expiresAt === "number" && prev.expiresAt <= Date.now();
70
+ emitter.emit(expired ? "session_expired" : "signed_out", next);
71
+ }
72
+ };
73
+ const getSession = async () => {
74
+ const res = await fetcher(`${baseUrl}/obul/session`, {
75
+ method: "GET",
76
+ credentials: "include",
77
+ headers: { Accept: "application/json" }
78
+ });
79
+ if (!res.ok) {
80
+ const error = { code: "session_fetch_failed", message: `Failed to fetch session (${res.status})` };
81
+ emitter.emit("error", error);
82
+ return { authenticated: false };
83
+ }
84
+ const session = (await res.json());
85
+ updateSession(session);
86
+ return session;
87
+ };
88
+ const handleCallback = async (options) => {
89
+ if (typeof window === "undefined") {
90
+ return { ok: false, error: { code: "not_in_browser", message: "handleCallback requires a browser environment" } };
91
+ }
92
+ const res = await fetcher(`${baseUrl}/obul/callback${window.location.search}`, {
93
+ method: "GET",
94
+ credentials: "include",
95
+ headers: {
96
+ Accept: "application/json",
97
+ "X-Obul-Client": "sdk-browser"
98
+ }
99
+ });
100
+ if (!res.ok) {
101
+ const error = { code: "callback_failed", message: `Callback failed (${res.status})` };
102
+ emitter.emit("error", error);
103
+ return { ok: false, error };
104
+ }
105
+ const data = (await res.json());
106
+ if (data.session)
107
+ updateSession(data.session);
108
+ const shouldRedirect = options?.redirect !== false;
109
+ if (shouldRedirect && data.redirectTo)
110
+ window.location.assign(data.redirectTo);
111
+ return data;
112
+ };
113
+ const signIn = () => {
114
+ if (typeof window === "undefined")
115
+ return;
116
+ const returnTo = config.postLoginRedirect ?? window.location.href;
117
+ const url = new URL(`${baseUrl}/obul/login`, window.location.origin);
118
+ url.searchParams.set("return_to", returnTo);
119
+ window.location.assign(url.toString());
120
+ };
121
+ const signOut = async () => {
122
+ const csrf = readCookie("obul_csrf");
123
+ const res = await fetcher(`${baseUrl}/obul/logout`, {
124
+ method: "POST",
125
+ credentials: "include",
126
+ headers: {
127
+ Accept: "application/json",
128
+ "Content-Type": "application/json",
129
+ "X-Obul-CSRF": csrf ?? ""
130
+ }
131
+ });
132
+ if (!res.ok) {
133
+ const error = { code: "logout_failed", message: `Logout failed (${res.status})` };
134
+ emitter.emit("error", error);
135
+ return;
136
+ }
137
+ updateSession({ authenticated: false });
138
+ if (typeof window !== "undefined" && config.postLogoutRedirect) {
139
+ window.location.assign(config.postLogoutRedirect);
140
+ }
141
+ };
142
+ const apiRequest = async (method, path, options) => {
143
+ const normalized = path.startsWith("/") ? path : `/${path}`;
144
+ const query = toQueryString(options?.query);
145
+ const headers = new Headers(options?.headers ?? {});
146
+ if (options?.maxPricePerRequest != null) {
147
+ headers.set("X-Obul-Max-Price", String(options.maxPricePerRequest));
148
+ }
149
+ let body;
150
+ if (options?.body != null && method !== "GET" && method !== "HEAD") {
151
+ if (options.body instanceof FormData || options.body instanceof Blob) {
152
+ body = options.body;
153
+ }
154
+ else if (options.body instanceof ArrayBuffer) {
155
+ body = options.body;
156
+ }
157
+ else if (typeof options.body === "string") {
158
+ body = options.body;
159
+ }
160
+ else if (isPlainObject(options.body)) {
161
+ if (!headers.has("Content-Type"))
162
+ headers.set("Content-Type", "application/json");
163
+ body = JSON.stringify(options.body);
164
+ }
165
+ else {
166
+ body = JSON.stringify(options.body);
167
+ if (!headers.has("Content-Type"))
168
+ headers.set("Content-Type", "application/json");
169
+ }
170
+ }
171
+ return fetcher(`${baseUrl}/obul/api${normalized}${query}`, {
172
+ method,
173
+ credentials: "include",
174
+ headers,
175
+ body,
176
+ signal: options?.signal
177
+ });
178
+ };
179
+ const intervalMs = config.sessionCheckIntervalMs ?? 0;
180
+ if (intervalMs > 0 && typeof window !== "undefined") {
181
+ window.setInterval(() => {
182
+ getSession().catch((error) => emitter.emit("error", error));
183
+ }, intervalMs);
184
+ }
185
+ return {
186
+ signIn,
187
+ handleCallback,
188
+ getSession,
189
+ signOut,
190
+ api: {
191
+ request: (method, path, options) => apiRequest(method, path, options),
192
+ get: (path, options) => apiRequest("GET", path, options),
193
+ post: (path, options) => apiRequest("POST", path, options),
194
+ put: (path, options) => apiRequest("PUT", path, options),
195
+ patch: (path, options) => apiRequest("PATCH", path, options),
196
+ delete: (path, options) => apiRequest("DELETE", path, options)
197
+ },
198
+ on: (eventName, handler) => emitter.on(eventName, handler),
199
+ off: (eventName, handler) => emitter.off(eventName, handler)
200
+ };
201
+ }
202
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CookieOptions } from "./types";
2
+ export declare function parseCookies(header: string | null | undefined): Record<string, string>;
3
+ export declare function serializeCookie(name: string, value: string, options?: CookieOptions): string;
4
+ //# sourceMappingURL=cookies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/core/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAiBhG"}
@@ -0,0 +1,44 @@
1
+ export function parseCookies(header) {
2
+ const result = {};
3
+ if (!header)
4
+ return result;
5
+ const parts = header.split(";");
6
+ for (const part of parts) {
7
+ const [key, ...rest] = part.trim().split("=");
8
+ if (!key)
9
+ continue;
10
+ result[key] = decodeURIComponent(rest.join("="));
11
+ }
12
+ return result;
13
+ }
14
+ export function serializeCookie(name, value, options = {}) {
15
+ const segments = [`${name}=${encodeURIComponent(value)}`];
16
+ if (options.maxAge != null) {
17
+ const maxAge = Math.floor(options.maxAge);
18
+ if (Number.isFinite(maxAge)) {
19
+ segments.push(`Max-Age=${maxAge}`);
20
+ }
21
+ }
22
+ if (options.domain)
23
+ segments.push(`Domain=${options.domain}`);
24
+ if (options.path)
25
+ segments.push(`Path=${options.path}`);
26
+ if (options.sameSite)
27
+ segments.push(`SameSite=${capitalizeSameSite(options.sameSite)}`);
28
+ if (options.secure)
29
+ segments.push("Secure");
30
+ if (options.httpOnly)
31
+ segments.push("HttpOnly");
32
+ return segments.join("; ");
33
+ }
34
+ function capitalizeSameSite(value) {
35
+ switch (value) {
36
+ case "lax":
37
+ return "Lax";
38
+ case "strict":
39
+ return "Strict";
40
+ case "none":
41
+ return "None";
42
+ }
43
+ }
44
+ //# sourceMappingURL=cookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/core/cookies.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,MAAiC;IAC5D,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAA;IAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,GAAG;YAAE,SAAQ;QAClB,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa,EAAE,UAAyB,EAAE;IACtF,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAEzD,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7D,IAAI,OAAO,CAAC,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACvD,IAAI,OAAO,CAAC,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvF,IAAI,OAAO,CAAC,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,OAAO,CAAC,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAE/C,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgC;IAC1D,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK;YACR,OAAO,KAAK,CAAA;QACd,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CryptoLike } from "./types";
2
+ export declare function base64UrlEncode(input: Uint8Array): string;
3
+ export declare function base64UrlDecode(input: string): Uint8Array;
4
+ export declare function createDefaultCrypto(): CryptoLike;
5
+ export declare function generatePkcePair(crypto: CryptoLike): Promise<{
6
+ codeVerifier: string;
7
+ codeChallenge: string;
8
+ }>;
9
+ export declare function randomId(crypto: CryptoLike, bytes?: number): string;
10
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/core/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AA+BzC,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAKzD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKzD;AAED,wBAAgB,mBAAmB,IAAI,UAAU,CAmBhD;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAKnH;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,SAAK,GAAG,MAAM,CAE/D"}