@authticon/client 0.0.0-beta2 → 0.0.0-beta20
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/dist/Acccount.d.ts +9 -0
- package/dist/Acccount.d.ts.map +1 -0
- package/dist/Acccount.js +22 -0
- package/dist/Acccount.js.map +1 -0
- package/dist/Auth.d.ts +7 -15
- package/dist/Auth.d.ts.map +1 -1
- package/dist/Auth.js +15 -24
- package/dist/Auth.js.map +1 -1
- package/dist/Authticon.d.ts +129 -11
- package/dist/Authticon.d.ts.map +1 -1
- package/dist/Authticon.js +86 -1
- package/dist/Authticon.js.map +1 -1
- package/dist/Challange.d.ts +8 -0
- package/dist/Challange.d.ts.map +1 -0
- package/dist/Challange.js +24 -0
- package/dist/Challange.js.map +1 -0
- package/dist/CookieStorageAdapter.d.ts +14 -0
- package/dist/CookieStorageAdapter.d.ts.map +1 -0
- package/dist/CookieStorageAdapter.js +43 -0
- package/dist/CookieStorageAdapter.js.map +1 -0
- package/dist/CookieStorageAdapter.test.d.ts +2 -0
- package/dist/CookieStorageAdapter.test.d.ts.map +1 -0
- package/dist/CookieStorageAdapter.test.js +137 -0
- package/dist/CookieStorageAdapter.test.js.map +1 -0
- package/dist/InMemoryCacheAdapter.d.ts +3 -0
- package/dist/InMemoryCacheAdapter.d.ts.map +1 -0
- package/dist/InMemoryCacheAdapter.js +13 -0
- package/dist/InMemoryCacheAdapter.js.map +1 -0
- package/dist/InMemoryCacheAdapter.test.d.ts +2 -0
- package/dist/InMemoryCacheAdapter.test.d.ts.map +1 -0
- package/dist/InMemoryCacheAdapter.test.js +38 -0
- package/dist/InMemoryCacheAdapter.test.js.map +1 -0
- package/dist/Session.d.ts +10 -0
- package/dist/Session.d.ts.map +1 -0
- package/dist/Session.js +16 -0
- package/dist/Session.js.map +1 -0
- package/dist/TokenManager.d.ts +15 -8
- package/dist/TokenManager.d.ts.map +1 -1
- package/dist/TokenManager.js +23 -22
- package/dist/TokenManager.js.map +1 -1
- package/dist/TokenManager.test.js +15 -27
- package/dist/TokenManager.test.js.map +1 -1
- package/dist/TokenStorage.d.ts +14 -2
- package/dist/TokenStorage.d.ts.map +1 -1
- package/dist/TokenStorage.js +69 -11
- package/dist/TokenStorage.js.map +1 -1
- package/dist/TokenStorage.test.js +70 -4
- package/dist/TokenStorage.test.js.map +1 -1
- package/dist/TokenVerifier.d.ts +7 -5
- package/dist/TokenVerifier.d.ts.map +1 -1
- package/dist/TokenVerifier.js +36 -15
- package/dist/TokenVerifier.js.map +1 -1
- package/dist/TokenVerifier.test.js +22 -0
- package/dist/TokenVerifier.test.js.map +1 -1
- package/dist/TwoFa.d.ts +26 -0
- package/dist/TwoFa.d.ts.map +1 -0
- package/dist/TwoFa.js +55 -0
- package/dist/TwoFa.js.map +1 -0
- package/dist/User.d.ts +25 -0
- package/dist/User.d.ts.map +1 -0
- package/dist/User.js +27 -0
- package/dist/User.js.map +1 -0
- package/dist/Users.d.ts +3 -3
- package/dist/Users.d.ts.map +1 -1
- package/dist/Users.js +7 -6
- package/dist/Users.js.map +1 -1
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +40 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/index.d.ts +2 -2
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/sdk.gen.d.ts +15 -24
- package/dist/generated/sdk.gen.d.ts.map +1 -1
- package/dist/generated/sdk.gen.js +56 -121
- package/dist/generated/sdk.gen.js.map +1 -1
- package/dist/generated/types.gen.d.ts +270 -600
- package/dist/generated/types.gen.d.ts.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +23 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/user.d.ts +54 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +55 -0
- package/dist/user.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from "vitest";
|
|
2
|
+
import { CookieStorageAdapter, createCookieStorageAdapter, } from "./CookieStorageAdapter.js";
|
|
3
|
+
const defaultSetOptions = {
|
|
4
|
+
path: "/",
|
|
5
|
+
secure: true,
|
|
6
|
+
sameSite: "Lax",
|
|
7
|
+
maxAge: 900,
|
|
8
|
+
};
|
|
9
|
+
const makeRequest = (cookieHeader) => new Request("http://localhost", {
|
|
10
|
+
headers: cookieHeader ? { Cookie: cookieHeader } : {},
|
|
11
|
+
});
|
|
12
|
+
describe("CookieStorageAdapter", () => {
|
|
13
|
+
let adapter;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
adapter = new CookieStorageAdapter(makeRequest("foo=bar; token=abc123"));
|
|
16
|
+
});
|
|
17
|
+
describe("get", () => {
|
|
18
|
+
it("should return the value of an existing cookie", () => {
|
|
19
|
+
expect(adapter.get("foo")).toBe("bar");
|
|
20
|
+
expect(adapter.get("token")).toBe("abc123");
|
|
21
|
+
});
|
|
22
|
+
it("should return null for a missing cookie", () => {
|
|
23
|
+
expect(adapter.get("nonexistent")).toBeNull();
|
|
24
|
+
});
|
|
25
|
+
it("should handle empty cookie string", () => {
|
|
26
|
+
const empty = new CookieStorageAdapter(makeRequest(""));
|
|
27
|
+
expect(empty.get("anything")).toBeNull();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe("set", () => {
|
|
31
|
+
it("should make new cookie visible via get", () => {
|
|
32
|
+
adapter.set("new_cookie", "val", defaultSetOptions);
|
|
33
|
+
expect(adapter.get("new_cookie")).toBe("val");
|
|
34
|
+
});
|
|
35
|
+
it("should not overwrite request cookies in get", () => {
|
|
36
|
+
adapter.set("foo", "baz", defaultSetOptions);
|
|
37
|
+
expect(adapter.get("foo")).toBe("bar");
|
|
38
|
+
});
|
|
39
|
+
it("should include the cookie in stringifySetCookies output", () => {
|
|
40
|
+
adapter.set("sid", "s1", defaultSetOptions);
|
|
41
|
+
const result = adapter.stringifySetCookies();
|
|
42
|
+
expect(result).toHaveLength(1);
|
|
43
|
+
const cookie = result[0];
|
|
44
|
+
expect(cookie).toContain("sid=s1");
|
|
45
|
+
expect(cookie).toContain("Path=/");
|
|
46
|
+
expect(cookie).toContain("Secure");
|
|
47
|
+
expect(cookie).toContain("SameSite=Lax");
|
|
48
|
+
expect(cookie).toContain("Max-Age=900");
|
|
49
|
+
});
|
|
50
|
+
it("should pass sameSite through to the underlying cookie lib", () => {
|
|
51
|
+
adapter.set("x", "1", { ...defaultSetOptions, sameSite: "Strict" });
|
|
52
|
+
const result = adapter.stringifySetCookies();
|
|
53
|
+
expect(result.some((c) => c.includes("SameSite=Strict"))).toBe(true);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe("remove", () => {
|
|
57
|
+
it("should make get return null for the removed cookie", () => {
|
|
58
|
+
adapter.remove("foo");
|
|
59
|
+
expect(adapter.get("foo")).toBeNull();
|
|
60
|
+
});
|
|
61
|
+
it("should exclude removed cookie from stringifyCookies", () => {
|
|
62
|
+
adapter.remove("foo");
|
|
63
|
+
const result = adapter.stringifyCookies();
|
|
64
|
+
expect(result).not.toContain("foo=");
|
|
65
|
+
expect(result).toContain("token=abc123");
|
|
66
|
+
});
|
|
67
|
+
it("should exclude removed cookie from stringifySetCookies", () => {
|
|
68
|
+
adapter.set("foo", "new", defaultSetOptions);
|
|
69
|
+
adapter.remove("foo");
|
|
70
|
+
const result = adapter.stringifySetCookies();
|
|
71
|
+
expect(result.every((c) => !c.includes("foo="))).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
it("should be a no-op for a nonexistent cookie", () => {
|
|
74
|
+
adapter.remove("ghost");
|
|
75
|
+
expect(adapter.get("foo")).toBe("bar");
|
|
76
|
+
expect(adapter.get("token")).toBe("abc123");
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe("stringifySetCookies", () => {
|
|
80
|
+
it("should return empty array when no cookies were set", () => {
|
|
81
|
+
expect(adapter.stringifySetCookies()).toEqual([]);
|
|
82
|
+
});
|
|
83
|
+
it("should return one entry per set cookie", () => {
|
|
84
|
+
adapter.set("a", "1", defaultSetOptions);
|
|
85
|
+
adapter.set("b", "2", defaultSetOptions);
|
|
86
|
+
const result = adapter.stringifySetCookies();
|
|
87
|
+
expect(result).toHaveLength(2);
|
|
88
|
+
expect(result[0]).toContain("a=1");
|
|
89
|
+
expect(result[1]).toContain("b=2");
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("stringifyCookies", () => {
|
|
93
|
+
it("should serialize initial cookies", () => {
|
|
94
|
+
const result = adapter.stringifyCookies();
|
|
95
|
+
expect(result).toContain("foo=bar");
|
|
96
|
+
expect(result).toContain("token=abc123");
|
|
97
|
+
});
|
|
98
|
+
it("should not include cookies added via set", () => {
|
|
99
|
+
adapter.set("extra", "yes", defaultSetOptions);
|
|
100
|
+
expect(adapter.stringifyCookies()).not.toContain("extra=yes");
|
|
101
|
+
});
|
|
102
|
+
it("should return empty string for empty adapter", () => {
|
|
103
|
+
const empty = new CookieStorageAdapter(makeRequest(""));
|
|
104
|
+
expect(empty.stringifyCookies()).toBe("");
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe("applyToResponse", () => {
|
|
108
|
+
it("should set Cookie header on response", () => {
|
|
109
|
+
const response = new Response();
|
|
110
|
+
adapter.applyToResponse(response);
|
|
111
|
+
const cookieHeader = response.headers.get("Cookie");
|
|
112
|
+
expect(cookieHeader).toContain("foo=bar");
|
|
113
|
+
expect(cookieHeader).toContain("token=abc123");
|
|
114
|
+
});
|
|
115
|
+
it("should set Set-Cookie header when cookies were set", () => {
|
|
116
|
+
adapter.set("sid", "session1", defaultSetOptions);
|
|
117
|
+
const response = new Response();
|
|
118
|
+
adapter.applyToResponse(response);
|
|
119
|
+
const setCookieHeader = response.headers.get("Set-Cookie");
|
|
120
|
+
expect(setCookieHeader).toContain("sid=session1");
|
|
121
|
+
});
|
|
122
|
+
it("should not set Set-Cookie header when no cookies were set", () => {
|
|
123
|
+
const response = new Response();
|
|
124
|
+
adapter.applyToResponse(response);
|
|
125
|
+
expect(response.headers.has("Set-Cookie")).toBe(false);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe("createCookieStorageAdapter", () => {
|
|
130
|
+
it("should return a CookieStorageAdapter instance", () => {
|
|
131
|
+
const request = makeRequest("key=value");
|
|
132
|
+
const adapter = createCookieStorageAdapter(request);
|
|
133
|
+
expect(adapter).toBeInstanceOf(CookieStorageAdapter);
|
|
134
|
+
expect(adapter.get("key")).toBe("value");
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=CookieStorageAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CookieStorageAdapter.test.js","sourceRoot":"","sources":["../src/CookieStorageAdapter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCacheAdapter.d.ts","sourceRoot":"","sources":["../src/InMemoryCacheAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,0BAA0B,QAAO,YAY7C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const createInMemoryCacheAdapter = () => {
|
|
2
|
+
const store = new Map();
|
|
3
|
+
return {
|
|
4
|
+
get: (key) => store.get(key),
|
|
5
|
+
set: (key, value) => {
|
|
6
|
+
store.set(key, value);
|
|
7
|
+
},
|
|
8
|
+
delete: (key) => {
|
|
9
|
+
store.delete(key);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=InMemoryCacheAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCacheAdapter.js","sourceRoot":"","sources":["../src/InMemoryCacheAdapter.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAiB,EAAE;IAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEzC,OAAO;QACL,GAAG,EAAE,CAAI,GAAW,EAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAkB;QACvE,GAAG,EAAE,CAAI,GAAW,EAAE,KAAQ,EAAQ,EAAE;YACtC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,EAAE,CAAC,GAAW,EAAQ,EAAE;YAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCacheAdapter.test.d.ts","sourceRoot":"","sources":["../src/InMemoryCacheAdapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { createInMemoryCacheAdapter } from "./InMemoryCacheAdapter.js";
|
|
3
|
+
describe("InMemoryCacheAdapter", () => {
|
|
4
|
+
it("should return undefined for missing key", () => {
|
|
5
|
+
const cache = createInMemoryCacheAdapter();
|
|
6
|
+
expect(cache.get("missing")).toBeUndefined();
|
|
7
|
+
});
|
|
8
|
+
it("should store and retrieve a value", () => {
|
|
9
|
+
const cache = createInMemoryCacheAdapter();
|
|
10
|
+
cache.set("key", { data: 42 });
|
|
11
|
+
expect(cache.get("key")).toEqual({ data: 42 });
|
|
12
|
+
});
|
|
13
|
+
it("should overwrite existing value", () => {
|
|
14
|
+
const cache = createInMemoryCacheAdapter();
|
|
15
|
+
cache.set("key", "first");
|
|
16
|
+
cache.set("key", "second");
|
|
17
|
+
expect(cache.get("key")).toBe("second");
|
|
18
|
+
});
|
|
19
|
+
it("should delete a value", () => {
|
|
20
|
+
const cache = createInMemoryCacheAdapter();
|
|
21
|
+
cache.set("key", "value");
|
|
22
|
+
cache.delete("key");
|
|
23
|
+
expect(cache.get("key")).toBeUndefined();
|
|
24
|
+
});
|
|
25
|
+
it("should not throw when deleting a non-existent key", () => {
|
|
26
|
+
const cache = createInMemoryCacheAdapter();
|
|
27
|
+
expect(() => cache.delete("missing")).not.toThrow();
|
|
28
|
+
});
|
|
29
|
+
it("should isolate keys from each other", () => {
|
|
30
|
+
const cache = createInMemoryCacheAdapter();
|
|
31
|
+
cache.set("a", 1);
|
|
32
|
+
cache.set("b", 2);
|
|
33
|
+
cache.delete("a");
|
|
34
|
+
expect(cache.get("a")).toBeUndefined();
|
|
35
|
+
expect(cache.get("b")).toBe(2);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=InMemoryCacheAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCacheAdapter.test.js","sourceRoot":"","sources":["../src/InMemoryCacheAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;QAE3C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAmB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE3B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;QAE3C,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,KAAK,GAAG,0BAA0B,EAAE,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAElB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Client } from "./generated/client/index.js";
|
|
2
|
+
export declare class Session {
|
|
3
|
+
private readonly client;
|
|
4
|
+
constructor(client: Client);
|
|
5
|
+
completeTwoFaChallange(sessionId: string, code: string): Promise<{
|
|
6
|
+
accessToken: string;
|
|
7
|
+
rememberToken: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAG1D,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAErC,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;CAQ7D"}
|
package/dist/Session.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { postApiV1SessionsBySessionIdChallangesTwoFa } from "./generated/index.js";
|
|
2
|
+
export class Session {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
async completeTwoFaChallange(sessionId, code) {
|
|
8
|
+
const { data } = await postApiV1SessionsBySessionIdChallangesTwoFa({
|
|
9
|
+
client: this.client,
|
|
10
|
+
path: { sessionId },
|
|
11
|
+
body: { code },
|
|
12
|
+
});
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2CAA2C,EAAE,MAAM,sBAAsB,CAAC;AAEnF,MAAM,OAAO,OAAO;IACW;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,sBAAsB,CAAC,SAAiB,EAAE,IAAY;QAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,2CAA2C,CAAC;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,EAAE,SAAS,EAAE;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/TokenManager.d.ts
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Logger } from "pino";
|
|
2
2
|
import type { Client } from "./generated/client/index.js";
|
|
3
|
-
|
|
3
|
+
import type { AccessTokenPayload, TokenManagerOptions, TokenPair } from "./types.js";
|
|
4
|
+
export declare class TokenManager<Payload extends Record<string, any> = Record<string, any>> {
|
|
4
5
|
private readonly client;
|
|
5
6
|
private readonly verifier;
|
|
6
7
|
private readonly storage;
|
|
7
|
-
constructor(client: Client, options: TokenManagerOptions);
|
|
8
|
+
constructor(client: Client, options: TokenManagerOptions, logger?: Logger);
|
|
8
9
|
private requireStorage;
|
|
9
|
-
readonly verifyToken: (token
|
|
10
|
+
readonly verifyToken: (token?: string) => Promise<AccessTokenPayload<Payload>>;
|
|
10
11
|
readonly clearKeyCache: () => void;
|
|
11
12
|
readonly save: (tokens: TokenPair) => void;
|
|
13
|
+
readonly setAccessToken: (accessToken: string) => void;
|
|
14
|
+
readonly setRefreshToken: (refreshToken: string) => void;
|
|
15
|
+
readonly setRememberToken: (rememberToken: string) => void;
|
|
12
16
|
readonly getAccessToken: () => string | null;
|
|
13
17
|
readonly getRefreshToken: () => string | null;
|
|
18
|
+
readonly getRememberToken: () => string | null;
|
|
19
|
+
readonly getDeviceId: () => string | null;
|
|
20
|
+
readonly setDeviceId: (deviceId: string) => void;
|
|
14
21
|
readonly getAll: () => TokenPair | null;
|
|
15
22
|
readonly clear: () => void;
|
|
23
|
+
readonly clearAccessToken: () => void;
|
|
24
|
+
readonly clearRefreshToken: () => void;
|
|
25
|
+
readonly clearDeviceId: () => void;
|
|
26
|
+
readonly clearRememberToken: () => void;
|
|
16
27
|
readonly hasStorage: () => boolean;
|
|
17
|
-
readonly verifyStoredAccessToken: () => Promise<JWTPayload | null>;
|
|
18
|
-
refreshAccessToken(refreshToken?: string): Promise<{
|
|
19
|
-
accessToken: string;
|
|
20
|
-
}>;
|
|
21
28
|
}
|
|
22
29
|
//# sourceMappingURL=TokenManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenManager.d.ts","sourceRoot":"","sources":["../src/TokenManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TokenManager.d.ts","sourceRoot":"","sources":["../src/TokenManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAG1D,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY,CACvB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMvD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;gBAG3B,MAAM,EAAE,MAAM,EAC/B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,CAAC,EAAE,MAAM;IAiBjB,OAAO,CAAC,cAAc;IAStB,QAAQ,CAAC,WAAW,GAClB,QAAQ,MAAM,KACb,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAMrC;IAEF,QAAQ,CAAC,aAAa,QAAO,IAAI,CAAkC;IAEnE,QAAQ,CAAC,IAAI,GAAI,QAAQ,SAAS,KAAG,IAAI,CACJ;IAErC,QAAQ,CAAC,cAAc,GAAI,aAAa,MAAM,KAAG,IAAI,CACD;IAEpD,QAAQ,CAAC,eAAe,GAAI,cAAc,MAAM,KAAG,IAAI,CACD;IAEtD,QAAQ,CAAC,gBAAgB,GAAI,eAAe,MAAM,KAAG,IAAI,CACD;IAExD,QAAQ,CAAC,cAAc,sBAAgD;IAEvE,QAAQ,CAAC,eAAe,sBAAiD;IAEzE,QAAQ,CAAC,gBAAgB,sBAAkD;IAE3E,QAAQ,CAAC,WAAW,sBAA6C;IAEjE,QAAQ,CAAC,WAAW,GAAI,UAAU,MAAM,KAAG,IAAI,CACD;IAE9C,QAAQ,CAAC,MAAM,QAAO,SAAS,GAAG,IAAI,CAAmC;IAEzE,QAAQ,CAAC,KAAK,QAAO,IAAI,CAAkC;IAE3D,QAAQ,CAAC,gBAAgB,QAAO,IAAI,CACO;IAE3C,QAAQ,CAAC,iBAAiB,QAAO,IAAI,CACO;IAE5C,QAAQ,CAAC,aAAa,QAAO,IAAI,CAA0C;IAE3E,QAAQ,CAAC,kBAAkB,QAAO,IAAI,CACO;IAE7C,QAAQ,CAAC,UAAU,QAAO,OAAO,CAA0B;CAC5D"}
|
package/dist/TokenManager.js
CHANGED
|
@@ -1,45 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthticonError } from "./errors.js";
|
|
2
2
|
import { TokenStorage } from "./TokenStorage.js";
|
|
3
|
-
import {
|
|
3
|
+
import { TokenVerifier } from "./TokenVerifier.js";
|
|
4
4
|
export class TokenManager {
|
|
5
5
|
client;
|
|
6
6
|
verifier;
|
|
7
7
|
storage;
|
|
8
|
-
constructor(client, options) {
|
|
8
|
+
constructor(client, options, logger) {
|
|
9
9
|
this.client = client;
|
|
10
|
-
this.verifier = new TokenVerifier(options.jwksUrl, options.jwksCacheTtlMs);
|
|
10
|
+
this.verifier = new TokenVerifier(options.jwksUrl, options.jwksCacheTtlMs, logger?.child({ authticon: "token-verifier" }), options.cache);
|
|
11
11
|
this.storage = options.cookies
|
|
12
|
-
? new TokenStorage(options.cookies, options.storage)
|
|
12
|
+
? new TokenStorage(options.cookies, options.storage, logger?.child({ authticon: "token-storage" }))
|
|
13
13
|
: null;
|
|
14
14
|
}
|
|
15
15
|
requireStorage() {
|
|
16
16
|
if (!this.storage) {
|
|
17
|
-
throw new
|
|
17
|
+
throw new AuthticonError("TokenStorage is not configured. Provide a CookieAdapter to enable token storage.");
|
|
18
18
|
}
|
|
19
19
|
return this.storage;
|
|
20
20
|
}
|
|
21
|
-
verifyToken = async (token) =>
|
|
21
|
+
verifyToken = async (token) => {
|
|
22
|
+
const accessToken = token ?? this.getAccessToken();
|
|
23
|
+
if (!accessToken) {
|
|
24
|
+
throw new AuthticonError("No access token found");
|
|
25
|
+
}
|
|
26
|
+
return this.verifier.verifyToken(accessToken);
|
|
27
|
+
};
|
|
22
28
|
clearKeyCache = () => this.verifier.clearKeyCache();
|
|
23
29
|
save = (tokens) => this.requireStorage().save(tokens);
|
|
30
|
+
setAccessToken = (accessToken) => this.requireStorage().setAccessToken(accessToken);
|
|
31
|
+
setRefreshToken = (refreshToken) => this.requireStorage().setRefreshToken(refreshToken);
|
|
32
|
+
setRememberToken = (rememberToken) => this.requireStorage().setRememberToken(rememberToken);
|
|
24
33
|
getAccessToken = () => this.requireStorage().getAccessToken();
|
|
25
34
|
getRefreshToken = () => this.requireStorage().getRefreshToken();
|
|
35
|
+
getRememberToken = () => this.requireStorage().getRememberToken();
|
|
36
|
+
getDeviceId = () => this.requireStorage().getDeviceId();
|
|
37
|
+
setDeviceId = (deviceId) => this.requireStorage().setDeviceId(deviceId);
|
|
26
38
|
getAll = () => this.requireStorage().getAll();
|
|
27
39
|
clear = () => this.requireStorage().clear();
|
|
40
|
+
clearAccessToken = () => this.requireStorage().clearAccessToken();
|
|
41
|
+
clearRefreshToken = () => this.requireStorage().clearRefreshToken();
|
|
42
|
+
clearDeviceId = () => this.requireStorage().clearDeviceId();
|
|
43
|
+
clearRememberToken = () => this.requireStorage().clearRememberToken();
|
|
28
44
|
hasStorage = () => this.storage !== null;
|
|
29
|
-
verifyStoredAccessToken = async () => {
|
|
30
|
-
const token = this.requireStorage().getAccessToken();
|
|
31
|
-
if (!token)
|
|
32
|
-
return null;
|
|
33
|
-
return this.verifier.verifyToken(token);
|
|
34
|
-
};
|
|
35
|
-
async refreshAccessToken(refreshToken) {
|
|
36
|
-
const { data } = await postApiV1AuthTokenRefresh({
|
|
37
|
-
client: this.client,
|
|
38
|
-
body: {
|
|
39
|
-
refreshToken: refreshToken ?? this.getRefreshToken() ?? "",
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
return data;
|
|
43
|
-
}
|
|
44
45
|
}
|
|
45
46
|
//# sourceMappingURL=TokenManager.js.map
|
package/dist/TokenManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenManager.js","sourceRoot":"","sources":["../src/TokenManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TokenManager.js","sourceRoot":"","sources":["../src/TokenManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
2
|
import { TokenManager } from "./TokenManager.js";
|
|
3
3
|
vi.mock("./TokenVerifier.js", () => ({
|
|
4
4
|
TokenVerifier: class {
|
|
@@ -34,28 +34,19 @@ describe("TokenManager", () => {
|
|
|
34
34
|
expect(manager.hasStorage()).toBe(false);
|
|
35
35
|
});
|
|
36
36
|
it("should throw on save without adapter", () => {
|
|
37
|
-
expect(() => manager.save({ accessToken: "a", refreshToken: "r", deviceId: "d" }))
|
|
38
|
-
.toThrow("TokenStorage is not configured");
|
|
37
|
+
expect(() => manager.save({ accessToken: "a", refreshToken: "r", deviceId: "d" })).toThrow("TokenStorage is not configured");
|
|
39
38
|
});
|
|
40
39
|
it("should throw on getAccessToken without adapter", () => {
|
|
41
|
-
expect(() => manager.getAccessToken())
|
|
42
|
-
.toThrow("TokenStorage is not configured");
|
|
40
|
+
expect(() => manager.getAccessToken()).toThrow("TokenStorage is not configured");
|
|
43
41
|
});
|
|
44
42
|
it("should throw on getRefreshToken without adapter", () => {
|
|
45
|
-
expect(() => manager.getRefreshToken())
|
|
46
|
-
.toThrow("TokenStorage is not configured");
|
|
43
|
+
expect(() => manager.getRefreshToken()).toThrow("TokenStorage is not configured");
|
|
47
44
|
});
|
|
48
45
|
it("should throw on getAll without adapter", () => {
|
|
49
|
-
expect(() => manager.getAll())
|
|
50
|
-
.toThrow("TokenStorage is not configured");
|
|
46
|
+
expect(() => manager.getAll()).toThrow("TokenStorage is not configured");
|
|
51
47
|
});
|
|
52
48
|
it("should throw on clear without adapter", () => {
|
|
53
|
-
expect(() => manager.clear())
|
|
54
|
-
.toThrow("TokenStorage is not configured");
|
|
55
|
-
});
|
|
56
|
-
it("should throw on verifyStoredAccessToken without adapter", async () => {
|
|
57
|
-
await expect(manager.verifyStoredAccessToken())
|
|
58
|
-
.rejects.toThrow("TokenStorage is not configured");
|
|
49
|
+
expect(() => manager.clear()).toThrow("TokenStorage is not configured");
|
|
59
50
|
});
|
|
60
51
|
});
|
|
61
52
|
describe("with storage (CookieAdapter provided)", () => {
|
|
@@ -72,7 +63,11 @@ describe("TokenManager", () => {
|
|
|
72
63
|
expect(manager.hasStorage()).toBe(true);
|
|
73
64
|
});
|
|
74
65
|
it("should save tokens via adapter", () => {
|
|
75
|
-
manager.save({
|
|
66
|
+
manager.save({
|
|
67
|
+
accessToken: "abc",
|
|
68
|
+
refreshToken: "xyz",
|
|
69
|
+
deviceId: "dev-1",
|
|
70
|
+
});
|
|
76
71
|
expect(adapter.set).toHaveBeenCalledTimes(3);
|
|
77
72
|
expect(adapter.set).toHaveBeenCalledWith("access_token", "abc", expect.any(Object));
|
|
78
73
|
expect(adapter.set).toHaveBeenCalledWith("refresh_token", "xyz", expect.any(Object));
|
|
@@ -90,11 +85,13 @@ describe("TokenManager", () => {
|
|
|
90
85
|
vi.mocked(adapter.get)
|
|
91
86
|
.mockReturnValueOnce("access-val")
|
|
92
87
|
.mockReturnValueOnce("refresh-val")
|
|
93
|
-
.mockReturnValueOnce("device-val")
|
|
88
|
+
.mockReturnValueOnce("device-val")
|
|
89
|
+
.mockReturnValueOnce("remember-val");
|
|
94
90
|
expect(manager.getAll()).toEqual({
|
|
95
91
|
accessToken: "access-val",
|
|
96
92
|
refreshToken: "refresh-val",
|
|
97
93
|
deviceId: "device-val",
|
|
94
|
+
rememberToken: "remember-val",
|
|
98
95
|
});
|
|
99
96
|
});
|
|
100
97
|
it("should return null from getAll when tokens are missing", () => {
|
|
@@ -102,16 +99,7 @@ describe("TokenManager", () => {
|
|
|
102
99
|
});
|
|
103
100
|
it("should clear tokens via adapter", () => {
|
|
104
101
|
manager.clear();
|
|
105
|
-
expect(adapter.remove).toHaveBeenCalledTimes(
|
|
106
|
-
});
|
|
107
|
-
it("should verify stored access token", async () => {
|
|
108
|
-
vi.mocked(adapter.get).mockReturnValue("stored-jwt");
|
|
109
|
-
const payload = await manager.verifyStoredAccessToken();
|
|
110
|
-
expect(payload).toEqual({ sub: "user-1", exp: 9999999999 });
|
|
111
|
-
});
|
|
112
|
-
it("should return null from verifyStoredAccessToken when no token stored", async () => {
|
|
113
|
-
const payload = await manager.verifyStoredAccessToken();
|
|
114
|
-
expect(payload).toBeNull();
|
|
102
|
+
expect(adapter.remove).toHaveBeenCalledTimes(4);
|
|
115
103
|
});
|
|
116
104
|
});
|
|
117
105
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenManager.test.js","sourceRoot":"","sources":["../src/TokenManager.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"TokenManager.test.js","sourceRoot":"","sources":["../src/TokenManager.test.ts"],"names":[],"mappings":"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"}
|
package/dist/TokenStorage.d.ts
CHANGED
|
@@ -1,17 +1,29 @@
|
|
|
1
|
+
import type { Logger } from "pino";
|
|
1
2
|
import type { CookieAdapter, TokenPair, TokenStorageOptions } from "./types.js";
|
|
2
3
|
export declare class TokenStorage {
|
|
3
4
|
private readonly cookies;
|
|
5
|
+
private readonly logger?;
|
|
4
6
|
private readonly accessName;
|
|
5
7
|
private readonly refreshName;
|
|
6
8
|
private readonly deviceIdName;
|
|
9
|
+
private readonly rememberName;
|
|
7
10
|
private readonly setOptions;
|
|
8
11
|
private readonly removeOptions;
|
|
9
|
-
constructor(cookies: CookieAdapter, options?: TokenStorageOptions);
|
|
12
|
+
constructor(cookies: CookieAdapter, options?: TokenStorageOptions, logger?: Logger | undefined);
|
|
10
13
|
readonly save: (tokens: TokenPair) => void;
|
|
14
|
+
readonly clear: () => void;
|
|
11
15
|
readonly getAccessToken: () => string | null;
|
|
12
16
|
readonly getRefreshToken: () => string | null;
|
|
13
17
|
readonly getDeviceId: () => string | null;
|
|
18
|
+
readonly getRememberToken: () => string | null;
|
|
19
|
+
readonly setAccessToken: (accessToken: string) => void;
|
|
20
|
+
readonly setRememberToken: (rememberToken: string) => void;
|
|
21
|
+
readonly setRefreshToken: (refreshToken: string) => void;
|
|
22
|
+
readonly setDeviceId: (deviceId: string) => void;
|
|
23
|
+
readonly clearDeviceId: () => void;
|
|
24
|
+
readonly clearRememberToken: () => void;
|
|
25
|
+
readonly clearRefreshToken: () => void;
|
|
26
|
+
readonly clearAccessToken: () => void;
|
|
14
27
|
readonly getAll: () => TokenPair | null;
|
|
15
|
-
readonly clear: () => void;
|
|
16
28
|
}
|
|
17
29
|
//# sourceMappingURL=TokenStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../src/TokenStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAGb,SAAS,EACT,mBAAmB,EACpB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../src/TokenStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EACV,aAAa,EAGb,SAAS,EACT,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAUpB,qBAAa,YAAY;IAcrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAf1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;IACF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAGjC,OAAO,EAAE,aAAa,EACvC,OAAO,GAAE,mBAAwB,EAChB,MAAM,CAAC,EAAE,MAAM,YAAA;IA+ClC,QAAQ,CAAC,IAAI,GAAI,QAAQ,SAAS,KAAG,IAAI,CASvC;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAKvB;IAEF,QAAQ,CAAC,cAAc,sBAA2C;IAElE,QAAQ,CAAC,eAAe,sBAA4C;IAEpE,QAAQ,CAAC,WAAW,sBAA6C;IAEjE,QAAQ,CAAC,gBAAgB,sBAA6C;IAEtE,QAAQ,CAAC,cAAc,GAAI,aAAa,MAAM,KAAG,IAAI,CAMnD;IAEF,QAAQ,CAAC,gBAAgB,GAAI,eAAe,MAAM,KAAG,IAAI,CAUvD;IAEF,QAAQ,CAAC,eAAe,GAAI,cAAc,MAAM,KAAG,IAAI,CAMrD;IAEF,QAAQ,CAAC,WAAW,GAAI,UAAU,MAAM,KAAG,IAAI,CAG7C;IAEF,QAAQ,CAAC,aAAa,QAAO,IAAI,CAG/B;IAEF,QAAQ,CAAC,kBAAkB,QAAO,IAAI,CAGpC;IAEF,QAAQ,CAAC,iBAAiB,QAAO,IAAI,CAGnC;IAEF,QAAQ,CAAC,gBAAgB,QAAO,IAAI,CAGlC;IAEF,QAAQ,CAAC,MAAM,QAAO,SAAS,GAAG,IAAI,CAUpC;CACH"}
|