@avantmedia/id-react 0.0.2 → 0.0.3
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/assert.d.ts +3 -0
- package/dist/assert.d.ts.map +1 -0
- package/dist/assert.js +7 -0
- package/dist/assert.js.map +1 -0
- package/dist/assert.test.d.ts +2 -0
- package/dist/assert.test.d.ts.map +1 -0
- package/dist/assert.test.js +88 -0
- package/dist/assert.test.js.map +1 -0
- package/dist/pkce.d.ts.map +1 -1
- package/dist/pkce.js +19 -2
- package/dist/pkce.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +9 -17
- package/dist/provider.js.map +1 -1
- package/package.json +1 -1
package/dist/assert.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,iBAAS,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,SAAqB,GAAG,OAAO,CAAC,SAAS,CAI5E;AAED,eAAe,MAAM,CAAC"}
|
package/dist/assert.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,SAAS,MAAM,CAAI,SAAY,EAAE,GAAG,GAAG,kBAAkB;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.test.d.ts","sourceRoot":"","sources":["../src/assert.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import assert from './assert';
|
|
3
|
+
describe('assert', () => {
|
|
4
|
+
test('should not throw when condition is truthy', () => {
|
|
5
|
+
expect(() => assert(true)).not.toThrow();
|
|
6
|
+
expect(() => assert(1)).not.toThrow();
|
|
7
|
+
expect(() => assert('non-empty string')).not.toThrow();
|
|
8
|
+
expect(() => assert({})).not.toThrow();
|
|
9
|
+
expect(() => assert([])).not.toThrow();
|
|
10
|
+
expect(() => assert(() => true)).not.toThrow();
|
|
11
|
+
});
|
|
12
|
+
test('should throw when condition is falsy', () => {
|
|
13
|
+
expect(() => assert(false)).toThrow('Assertion failed');
|
|
14
|
+
expect(() => assert(0)).toThrow('Assertion failed');
|
|
15
|
+
expect(() => assert('')).toThrow('Assertion failed');
|
|
16
|
+
expect(() => assert(null)).toThrow('Assertion failed');
|
|
17
|
+
expect(() => assert(undefined)).toThrow('Assertion failed');
|
|
18
|
+
expect(() => assert(NaN)).toThrow('Assertion failed');
|
|
19
|
+
});
|
|
20
|
+
test('should throw Error instance', () => {
|
|
21
|
+
try {
|
|
22
|
+
assert(false);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
expect(error).toBeInstanceOf(Error);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
test('should use default error message when no message provided', () => {
|
|
29
|
+
expect(() => assert(false)).toThrow('Assertion failed');
|
|
30
|
+
});
|
|
31
|
+
test('should use custom error message when provided', () => {
|
|
32
|
+
const customMessage = 'Custom assertion error';
|
|
33
|
+
expect(() => assert(false, customMessage)).toThrow(customMessage);
|
|
34
|
+
});
|
|
35
|
+
test('should work with complex conditions', () => {
|
|
36
|
+
const obj = { prop: 'value' };
|
|
37
|
+
const arr = [1, 2, 3];
|
|
38
|
+
expect(() => assert(obj.prop === 'value')).not.toThrow();
|
|
39
|
+
expect(() => assert(arr.length > 0)).not.toThrow();
|
|
40
|
+
expect(() => assert(arr.includes(2))).not.toThrow();
|
|
41
|
+
expect(() => assert(obj.prop === 'wrong')).toThrow();
|
|
42
|
+
expect(() => assert(arr.length === 0)).toThrow();
|
|
43
|
+
expect(() => assert(arr.includes(999))).toThrow();
|
|
44
|
+
});
|
|
45
|
+
test('should work as type guard', () => {
|
|
46
|
+
// Use a deterministic value to avoid non-determinism in tests
|
|
47
|
+
const value = 'test';
|
|
48
|
+
if (value !== null) {
|
|
49
|
+
assert(value, 'Value should not be null');
|
|
50
|
+
// After assertion, TypeScript should know that value is string
|
|
51
|
+
expect(typeof value).toBe('string');
|
|
52
|
+
expect(value.toLowerCase()).toBe(value.toLowerCase()); // This wouldn't compile if value could be null
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
test('should work with function conditions', () => {
|
|
56
|
+
const isValid = (val) => val > 0;
|
|
57
|
+
expect(() => assert(isValid(5))).not.toThrow();
|
|
58
|
+
expect(() => assert(isValid(-1))).toThrow();
|
|
59
|
+
});
|
|
60
|
+
test('should preserve original condition value in type narrowing', () => {
|
|
61
|
+
function testFunction(input) {
|
|
62
|
+
assert(typeof input === 'string', 'Input must be a string');
|
|
63
|
+
// TypeScript should now know input is a string
|
|
64
|
+
return input.toUpperCase();
|
|
65
|
+
}
|
|
66
|
+
expect(testFunction('hello')).toBe('HELLO');
|
|
67
|
+
expect(() => testFunction(123)).toThrow('Input must be a string');
|
|
68
|
+
});
|
|
69
|
+
test('should work with array type narrowing', () => {
|
|
70
|
+
function processArray(input) {
|
|
71
|
+
assert(Array.isArray(input), 'Input must be an array');
|
|
72
|
+
// TypeScript should now know input is an array
|
|
73
|
+
return input.length;
|
|
74
|
+
}
|
|
75
|
+
expect(processArray([1, 2, 3])).toBe(3);
|
|
76
|
+
expect(() => processArray('not an array')).toThrow('Input must be an array');
|
|
77
|
+
});
|
|
78
|
+
test('should work with object property existence', () => {
|
|
79
|
+
function getUserName(user) {
|
|
80
|
+
assert(user.name, 'User must have a name');
|
|
81
|
+
// TypeScript should now know user.name is defined
|
|
82
|
+
return user.name.toUpperCase();
|
|
83
|
+
}
|
|
84
|
+
expect(getUserName({ id: 1, name: 'John' })).toBe('JOHN');
|
|
85
|
+
expect(() => getUserName({ id: 1 })).toThrow('User must have a name');
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=assert.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assert.test.js","sourceRoot":"","sources":["../src/assert.test.ts"],"names":[],"mappings":"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"}
|
package/dist/pkce.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7E;AAmBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAIpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIlD"}
|
package/dist/pkce.js
CHANGED
|
@@ -2,13 +2,25 @@
|
|
|
2
2
|
* PKCE (Proof Key for Code Exchange) utilities
|
|
3
3
|
* Used to secure the OAuth2 authorization code flow for SPAs
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Get the crypto object, checking for availability
|
|
7
|
+
*/
|
|
8
|
+
function getCrypto() {
|
|
9
|
+
if (typeof globalThis !== "undefined" && globalThis.crypto) {
|
|
10
|
+
return globalThis.crypto;
|
|
11
|
+
}
|
|
12
|
+
if (typeof window !== "undefined" && window.crypto) {
|
|
13
|
+
return window.crypto;
|
|
14
|
+
}
|
|
15
|
+
throw new Error("Web Crypto API is not available");
|
|
16
|
+
}
|
|
5
17
|
/**
|
|
6
18
|
* Generate a cryptographically random code verifier
|
|
7
19
|
* Must be between 43 and 128 characters
|
|
8
20
|
*/
|
|
9
21
|
export function generateCodeVerifier() {
|
|
10
22
|
const array = new Uint8Array(32);
|
|
11
|
-
|
|
23
|
+
getCrypto().getRandomValues(array);
|
|
12
24
|
return base64UrlEncode(array);
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
@@ -16,9 +28,14 @@ export function generateCodeVerifier() {
|
|
|
16
28
|
* SHA256 hash of verifier, base64url encoded
|
|
17
29
|
*/
|
|
18
30
|
export async function generateCodeChallenge(verifier) {
|
|
31
|
+
const cryptoObj = getCrypto();
|
|
32
|
+
if (!cryptoObj.subtle) {
|
|
33
|
+
throw new Error("crypto.subtle is not available. This usually means you are not using HTTPS. " +
|
|
34
|
+
"The Web Crypto API requires a secure context (HTTPS or localhost).");
|
|
35
|
+
}
|
|
19
36
|
const encoder = new TextEncoder();
|
|
20
37
|
const data = encoder.encode(verifier);
|
|
21
|
-
const hash = await
|
|
38
|
+
const hash = await cryptoObj.subtle.digest("SHA-256", data);
|
|
22
39
|
return base64UrlEncode(new Uint8Array(hash));
|
|
23
40
|
}
|
|
24
41
|
/**
|
package/dist/pkce.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.js","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,
|
|
1
|
+
{"version":3,"file":"pkce.js","sourceRoot":"","sources":["../src/pkce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,SAAS,SAAS;IAChB,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAC3D,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAE9B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,8EAA8E;YAC9E,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAkB;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM;SACV,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,SAAS,GAAG,sBAAsB,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,cAAc,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,WAAW,KAAK,KAAK,CAAC;AAC/B,CAAC"}
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAuB,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAuB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAkBpF,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAmPzE;AAED,wBAAgB,cAAc,IAAI,gBAAgB,CAIjD"}
|
package/dist/provider.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext, useState, useEffect, useCallback } from "react";
|
|
3
3
|
import { generateCodeVerifier, generateCodeChallenge, storeCodeVerifier, retrieveCodeVerifier, generateState, verifyState, } from "./pkce";
|
|
4
|
+
import assert from "./assert";
|
|
4
5
|
const AuthContext = createContext(null);
|
|
5
6
|
// Token storage keys
|
|
6
7
|
const ACCESS_TOKEN_KEY = "avant_id_access_token";
|
|
@@ -22,10 +23,10 @@ export function AvantIdProvider({ children, config }) {
|
|
|
22
23
|
const storeTokens = useCallback((tokens) => {
|
|
23
24
|
const expiry = Date.now() + tokens.expires_in * 1000;
|
|
24
25
|
setAccessToken(tokens.access_token);
|
|
25
|
-
setRefreshToken(tokens.refresh_token);
|
|
26
|
+
setRefreshToken(tokens.refresh_token ?? null);
|
|
26
27
|
setTokenExpiry(expiry);
|
|
27
28
|
// Always store access token in memory, optionally persist refresh token
|
|
28
|
-
if (config.persistSession) {
|
|
29
|
+
if (config.persistSession && tokens.refresh_token) {
|
|
29
30
|
localStorage.setItem(REFRESH_TOKEN_KEY, tokens.refresh_token);
|
|
30
31
|
localStorage.setItem(TOKEN_EXPIRY_KEY, expiry.toString());
|
|
31
32
|
}
|
|
@@ -171,20 +172,12 @@ export function AvantIdProvider({ children, config }) {
|
|
|
171
172
|
}
|
|
172
173
|
if (code && state) {
|
|
173
174
|
// Verify state
|
|
174
|
-
|
|
175
|
-
console.error("State mismatch - possible CSRF attack");
|
|
176
|
-
setIsLoading(false);
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
175
|
+
assert(verifyState(state), "State mismatch - possible CSRF attack");
|
|
179
176
|
// Get stored code verifier
|
|
180
177
|
const codeVerifier = retrieveCodeVerifier();
|
|
181
|
-
|
|
182
|
-
console.error("No code verifier found");
|
|
183
|
-
setIsLoading(false);
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
178
|
+
assert(codeVerifier, "No code verifier found");
|
|
186
179
|
// Exchange code for tokens
|
|
187
|
-
|
|
180
|
+
await exchangeCode(code, codeVerifier);
|
|
188
181
|
// Clean up URL
|
|
189
182
|
window.history.replaceState({}, "", window.location.pathname);
|
|
190
183
|
setIsLoading(false);
|
|
@@ -193,7 +186,8 @@ export function AvantIdProvider({ children, config }) {
|
|
|
193
186
|
// No callback params - check for existing session
|
|
194
187
|
if (config.persistSession) {
|
|
195
188
|
const storedRefresh = localStorage.getItem(REFRESH_TOKEN_KEY);
|
|
196
|
-
|
|
189
|
+
// Check for valid refresh token (not empty, not the string "undefined" or "null")
|
|
190
|
+
if (storedRefresh && storedRefresh !== "undefined" && storedRefresh !== "null") {
|
|
197
191
|
setRefreshToken(storedRefresh);
|
|
198
192
|
const tokens = await refreshAccessToken(storedRefresh);
|
|
199
193
|
if (tokens) {
|
|
@@ -225,9 +219,7 @@ export function AvantIdProvider({ children, config }) {
|
|
|
225
219
|
}
|
|
226
220
|
export function useAuthContext() {
|
|
227
221
|
const context = useContext(AuthContext);
|
|
228
|
-
|
|
229
|
-
throw new Error("useAuth must be used within an AvantIdProvider");
|
|
230
|
-
}
|
|
222
|
+
assert(context, "useAuth must be used within an AvantIdProvider");
|
|
231
223
|
return context;
|
|
232
224
|
}
|
|
233
225
|
//# sourceMappingURL=provider.js.map
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAkB,MAAM,OAAO,CAAC;AAEpG,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,WAAW,GACZ,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
|