@renown/sdk 6.0.0-dev.4 → 6.0.0-dev.40
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/src/common.d.ts +14 -8
- package/dist/src/common.d.ts.map +1 -1
- package/dist/src/common.js +35 -27
- package/dist/src/common.js.map +1 -1
- package/dist/src/crypto/browser-key-storage.d.ts +4 -2
- package/dist/src/crypto/browser-key-storage.d.ts.map +1 -1
- package/dist/src/crypto/browser-key-storage.js +54 -51
- package/dist/src/crypto/browser-key-storage.js.map +1 -1
- package/dist/src/crypto/index.d.ts +5 -34
- package/dist/src/crypto/index.d.ts.map +1 -1
- package/dist/src/crypto/index.js +7 -128
- package/dist/src/crypto/index.js.map +1 -1
- package/dist/src/crypto/memory-key-storage.d.ts +9 -0
- package/dist/src/crypto/memory-key-storage.d.ts.map +1 -0
- package/dist/src/crypto/memory-key-storage.js +18 -0
- package/dist/src/crypto/memory-key-storage.js.map +1 -0
- package/dist/src/crypto/node-key-storage.d.ts +16 -3
- package/dist/src/crypto/node-key-storage.d.ts.map +1 -1
- package/dist/src/crypto/node-key-storage.js +82 -42
- package/dist/src/crypto/node-key-storage.js.map +1 -1
- package/dist/src/crypto/renown-crypto-builder.d.ts +11 -0
- package/dist/src/crypto/renown-crypto-builder.d.ts.map +1 -0
- package/dist/src/crypto/renown-crypto-builder.js +34 -0
- package/dist/src/crypto/renown-crypto-builder.js.map +1 -0
- package/dist/src/crypto/renown-crypto.d.ts +26 -0
- package/dist/src/crypto/renown-crypto.d.ts.map +1 -0
- package/dist/src/crypto/renown-crypto.js +56 -0
- package/dist/src/crypto/renown-crypto.js.map +1 -0
- package/dist/src/crypto/signer.d.ts +13 -8
- package/dist/src/crypto/signer.d.ts.map +1 -1
- package/dist/src/crypto/signer.js +27 -26
- package/dist/src/crypto/signer.js.map +1 -1
- package/dist/src/crypto/types.d.ts +27 -0
- package/dist/src/crypto/types.d.ts.map +1 -0
- package/dist/src/crypto/types.js +2 -0
- package/dist/src/crypto/types.js.map +1 -0
- package/dist/src/crypto/utils.d.ts +13 -0
- package/dist/src/crypto/utils.d.ts.map +1 -0
- package/dist/src/crypto/utils.js +39 -0
- package/dist/src/crypto/utils.js.map +1 -0
- package/dist/src/event/memory.d.ts +8 -0
- package/dist/src/event/memory.d.ts.map +1 -0
- package/dist/src/event/memory.js +16 -0
- package/dist/src/event/memory.js.map +1 -0
- package/dist/src/hooks/use-user.d.ts +1 -1
- package/dist/src/hooks/use-user.js +1 -1
- package/dist/src/index.browser.d.ts +1 -1
- package/dist/src/index.browser.d.ts.map +1 -1
- package/dist/src/index.browser.js +1 -1
- package/dist/src/index.browser.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.d.ts +1 -1
- package/dist/src/index.node.d.ts.map +1 -1
- package/dist/src/index.node.js +1 -1
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/init.browser.d.ts +51 -2
- package/dist/src/init.browser.d.ts.map +1 -1
- package/dist/src/init.browser.js +62 -3
- package/dist/src/init.browser.js.map +1 -1
- package/dist/src/init.node.d.ts +28 -2
- package/dist/src/init.node.d.ts.map +1 -1
- package/dist/src/init.node.js +26 -4
- package/dist/src/init.node.js.map +1 -1
- package/dist/src/lib/renown/credential.d.ts +2 -0
- package/dist/src/lib/renown/credential.d.ts.map +1 -0
- package/dist/src/lib/renown/credential.js +68 -0
- package/dist/src/lib/renown/credential.js.map +1 -0
- package/dist/src/lib/renown/utils.d.ts +4 -4
- package/dist/src/lib/renown/utils.d.ts.map +1 -1
- package/dist/src/lib/renown/utils.js +24 -43
- package/dist/src/lib/renown/utils.js.map +1 -1
- package/dist/src/node.d.ts +5 -1
- package/dist/src/node.d.ts.map +1 -1
- package/dist/src/node.js +5 -1
- package/dist/src/node.js.map +1 -1
- package/dist/src/providers/renown-user-provider.d.ts +9 -5
- package/dist/src/providers/renown-user-provider.d.ts.map +1 -1
- package/dist/src/providers/renown-user-provider.js +25 -30
- package/dist/src/providers/renown-user-provider.js.map +1 -1
- package/dist/src/renown-builder.d.ts +60 -0
- package/dist/src/renown-builder.d.ts.map +1 -0
- package/dist/src/renown-builder.js +115 -0
- package/dist/src/renown-builder.js.map +1 -0
- package/dist/src/storage/common.d.ts +14 -10
- package/dist/src/storage/common.d.ts.map +1 -1
- package/dist/src/storage/common.js +16 -3
- package/dist/src/storage/common.js.map +1 -1
- package/dist/src/storage/storage.browser.d.ts +1 -0
- package/dist/src/storage/storage.browser.d.ts.map +1 -1
- package/dist/src/storage/storage.browser.js +3 -1
- package/dist/src/storage/storage.browser.js.map +1 -1
- package/dist/src/storage/storage.node.d.ts +1 -1
- package/dist/src/storage/storage.node.d.ts.map +1 -1
- package/dist/src/storage/storage.node.js +7 -5
- package/dist/src/storage/storage.node.js.map +1 -1
- package/dist/src/types.d.ts +28 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +11 -10
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +8 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/{tests → test}/auth.test.d.ts.map +1 -1
- package/dist/test/auth.test.js.map +1 -0
- package/dist/test/script.test.d.ts +2 -0
- package/dist/test/script.test.d.ts.map +1 -0
- package/dist/test/script.test.js +45 -0
- package/dist/test/script.test.js.map +1 -0
- package/dist/test/storage.node.test.d.ts +2 -0
- package/dist/test/storage.node.test.d.ts.map +1 -0
- package/dist/test/storage.node.test.js +66 -0
- package/dist/test/storage.node.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +7 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +5 -5
- package/dist/src/lib/crypto/browser.d.ts +0 -8
- package/dist/src/lib/crypto/browser.d.ts.map +0 -1
- package/dist/src/lib/crypto/browser.js +0 -73
- package/dist/src/lib/crypto/browser.js.map +0 -1
- package/dist/src/lib/crypto/index.d.ts +0 -36
- package/dist/src/lib/crypto/index.d.ts.map +0 -1
- package/dist/src/lib/crypto/index.js +0 -150
- package/dist/src/lib/crypto/index.js.map +0 -1
- package/dist/src/lib/crypto/node.d.ts +0 -8
- package/dist/src/lib/crypto/node.d.ts.map +0 -1
- package/dist/src/lib/crypto/node.js +0 -67
- package/dist/src/lib/crypto/node.js.map +0 -1
- package/dist/tests/auth.test.js.map +0 -1
- /package/dist/{tests → test}/auth.test.d.ts +0 -0
- /package/dist/{tests → test}/auth.test.js +0 -0
package/dist/src/node.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
export * from "./common.js";
|
|
1
2
|
export * from "./crypto/index.js";
|
|
2
3
|
export * from "./crypto/node-key-storage.js";
|
|
3
|
-
export
|
|
4
|
+
export * from "./renown-builder.js";
|
|
5
|
+
export * from "./event/event.node.js";
|
|
6
|
+
export * from "./init.node.js";
|
|
7
|
+
export * from "./storage/storage.node.js";
|
|
4
8
|
export * from "./types.js";
|
|
5
9
|
export * from "./utils.js";
|
|
6
10
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/src/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/dist/src/node.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
export * from "./common.js";
|
|
1
2
|
export * from "./crypto/index.js";
|
|
2
3
|
export * from "./crypto/node-key-storage.js";
|
|
3
|
-
export
|
|
4
|
+
export * from "./renown-builder.js";
|
|
5
|
+
export * from "./event/event.node.js";
|
|
6
|
+
export * from "./init.node.js";
|
|
7
|
+
export * from "./storage/storage.node.js";
|
|
4
8
|
export * from "./types.js";
|
|
5
9
|
export * from "./utils.js";
|
|
6
10
|
//# sourceMappingURL=node.js.map
|
package/dist/src/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IRenownCrypto } from "../crypto/index.js";
|
|
2
2
|
import type { LoginStatus, User } from "../lib/renown/index.js";
|
|
3
3
|
import type { IRenown } from "../types.js";
|
|
4
4
|
export interface RenownUserContextValue {
|
|
@@ -10,20 +10,24 @@ export interface RenownUserContextValue {
|
|
|
10
10
|
isLoading: boolean;
|
|
11
11
|
/** Whether the user system has been initialized */
|
|
12
12
|
isInitialized: boolean;
|
|
13
|
-
/** Login with optional DID (defaults to
|
|
13
|
+
/** Login with optional DID (defaults to renownCrypto DID) */
|
|
14
14
|
login: (userDid?: string) => Promise<void>;
|
|
15
15
|
/** Logout the current user */
|
|
16
16
|
logout: () => Promise<void>;
|
|
17
17
|
/** Open Renown portal for authentication */
|
|
18
18
|
openRenown: () => void;
|
|
19
|
-
/**
|
|
20
|
-
|
|
19
|
+
/** RenownCrypto instance for cryptographic operations */
|
|
20
|
+
renownCrypto: IRenownCrypto | null;
|
|
21
21
|
/** Renown SDK instance */
|
|
22
22
|
renown: IRenown | null;
|
|
23
23
|
}
|
|
24
24
|
export declare const RenownUserContext: import("react").Context<RenownUserContextValue | null>;
|
|
25
25
|
interface RenownUserProviderProps {
|
|
26
26
|
children: React.ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Name of the application. Will be part of the credential.
|
|
29
|
+
*/
|
|
30
|
+
appName?: string;
|
|
27
31
|
/**
|
|
28
32
|
* Renown service URL
|
|
29
33
|
* @default 'https://www.renown.id'
|
|
@@ -67,6 +71,6 @@ interface RenownUserProviderProps {
|
|
|
67
71
|
* const { user, login, logout } = useUser()
|
|
68
72
|
* ```
|
|
69
73
|
*/
|
|
70
|
-
export declare function RenownUserProvider({ children, renownUrl, networkId, chainId, loadingComponent, errorComponent, }: RenownUserProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
74
|
+
export declare function RenownUserProvider({ children, appName, renownUrl, networkId, chainId, loadingComponent, errorComponent, }: RenownUserProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
71
75
|
export {};
|
|
72
76
|
//# sourceMappingURL=renown-user-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renown-user-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/renown-user-provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"renown-user-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/renown-user-provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAShE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,WAAW,sBAAsB;IACrC,4DAA4D;IAC5D,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,2BAA2B;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,aAAa,EAAE,OAAO,CAAC;IACvB,6DAA6D;IAC7D,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,8BAA8B;IAC9B,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,yDAAyD;IACzD,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,0BAA0B;IAC1B,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,wDAE7B,CAAC;AAEF,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;CACvE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,OAAY,EACZ,SAAmC,EACnC,SAAoB,EACpB,OAAa,EACb,gBAAgB,EAChB,cAAc,GACf,EAAE,uBAAuB,2CAgKzB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useCallback, useEffect, useState } from "react";
|
|
4
|
-
import { BrowserKeyStorage,
|
|
5
|
-
import {
|
|
4
|
+
import { BrowserKeyStorage, RenownCryptoBuilder } from "../crypto/index.js";
|
|
5
|
+
import { RenownBuilder } from "../init.browser.js";
|
|
6
6
|
import { fetchProfileDataForUser, handleRenownReturn, openRenown as openRenownPortal, login as renownLogin, logout as renownLogout, } from "../lib/renown/index.js";
|
|
7
7
|
import { SessionStorageManager } from "../lib/session-storage.js";
|
|
8
8
|
export const RenownUserContext = createContext(null);
|
|
@@ -23,13 +23,13 @@ export const RenownUserContext = createContext(null);
|
|
|
23
23
|
* const { user, login, logout } = useUser()
|
|
24
24
|
* ```
|
|
25
25
|
*/
|
|
26
|
-
export function RenownUserProvider({ children, renownUrl = "https://www.renown.id", networkId = "eip155", chainId = "1", loadingComponent, errorComponent, }) {
|
|
26
|
+
export function RenownUserProvider({ children, appName = "", renownUrl = "https://www.renown.id", networkId = "eip155", chainId = "1", loadingComponent, errorComponent, }) {
|
|
27
27
|
const [user, setUser] = useState(null);
|
|
28
28
|
const [loginStatus, setLoginStatus] = useState("initial");
|
|
29
29
|
const [isLoading, setIsLoading] = useState(false);
|
|
30
30
|
const [isInitialized, setIsInitialized] = useState(false);
|
|
31
31
|
const [initError, setInitError] = useState(null);
|
|
32
|
-
const [
|
|
32
|
+
const [renownCrypto, setRenownCrypto] = useState(null);
|
|
33
33
|
const [renown, setRenown] = useState(null);
|
|
34
34
|
// Initialize auth system
|
|
35
35
|
useEffect(() => {
|
|
@@ -40,22 +40,26 @@ export function RenownUserProvider({ children, renownUrl = "https://www.renown.i
|
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
// Initialize SDK if not already initialized
|
|
43
|
-
if (!window.renown || !window.
|
|
44
|
-
// Initialize
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
if (!window.renown || !window.renownCrypto) {
|
|
44
|
+
// Initialize RenownCrypto with browser key storage
|
|
45
|
+
const keyStorage = await BrowserKeyStorage.create();
|
|
46
|
+
const cryptoInstance = await new RenownCryptoBuilder()
|
|
47
|
+
.withKeyPairStorage(keyStorage)
|
|
48
|
+
.build();
|
|
49
|
+
const renownInstance = await new RenownBuilder(appName)
|
|
50
|
+
.withCrypto(cryptoInstance)
|
|
51
|
+
.build();
|
|
48
52
|
// Attach to window for global access
|
|
49
53
|
window.renown = renownInstance;
|
|
50
|
-
window.
|
|
54
|
+
window.renownCrypto = cryptoInstance;
|
|
51
55
|
// Save to state
|
|
52
|
-
|
|
56
|
+
setRenownCrypto(cryptoInstance);
|
|
53
57
|
setRenown(renownInstance);
|
|
54
58
|
}
|
|
55
59
|
else {
|
|
56
60
|
// Use existing instances from window
|
|
57
|
-
setConnectCrypto(window.connectCrypto);
|
|
58
61
|
setRenown(window.renown);
|
|
62
|
+
setRenownCrypto(window.renownCrypto);
|
|
59
63
|
}
|
|
60
64
|
// Check for stored session first
|
|
61
65
|
const storedUserData = SessionStorageManager.getUserData();
|
|
@@ -70,12 +74,7 @@ export function RenownUserProvider({ children, renownUrl = "https://www.renown.i
|
|
|
70
74
|
}
|
|
71
75
|
// Handle return from Renown authentication
|
|
72
76
|
await handleRenownReturn();
|
|
73
|
-
|
|
74
|
-
let currentUser = window.renown.user instanceof Function
|
|
75
|
-
? window.renown.user()
|
|
76
|
-
: window.renown.user;
|
|
77
|
-
currentUser =
|
|
78
|
-
currentUser instanceof Promise ? await currentUser : currentUser;
|
|
77
|
+
const currentUser = window.renown.user;
|
|
79
78
|
if (currentUser) {
|
|
80
79
|
// Fetch profile data for the logged-in user
|
|
81
80
|
const userWithProfile = await fetchProfileDataForUser(currentUser);
|
|
@@ -95,25 +94,25 @@ export function RenownUserProvider({ children, renownUrl = "https://www.renown.i
|
|
|
95
94
|
setIsInitialized(true);
|
|
96
95
|
}
|
|
97
96
|
};
|
|
98
|
-
init();
|
|
97
|
+
init().catch(console.error);
|
|
99
98
|
}, [renownUrl, networkId, chainId]);
|
|
100
99
|
// Login handler
|
|
101
100
|
const login = useCallback(async (userDid) => {
|
|
102
101
|
if (typeof window === "undefined")
|
|
103
102
|
return;
|
|
104
103
|
const renown = window.renown;
|
|
105
|
-
const
|
|
106
|
-
if (!renown || !
|
|
107
|
-
console.error("Renown or
|
|
104
|
+
const renownCrypto = window.renownCrypto;
|
|
105
|
+
if (!renown || !renownCrypto) {
|
|
106
|
+
console.error("Renown or RenownCrypto not available");
|
|
108
107
|
setLoginStatus("not-authorized");
|
|
109
108
|
return;
|
|
110
109
|
}
|
|
111
110
|
try {
|
|
112
111
|
setIsLoading(true);
|
|
113
112
|
setLoginStatus("checking");
|
|
114
|
-
const did = userDid
|
|
113
|
+
const did = userDid ?? renownCrypto.did;
|
|
115
114
|
// Perform login
|
|
116
|
-
const loggedInUser = await renownLogin(did, renown,
|
|
115
|
+
const loggedInUser = await renownLogin(did, renown, renownCrypto);
|
|
117
116
|
if (loggedInUser) {
|
|
118
117
|
// Fetch profile data and update state
|
|
119
118
|
const userWithProfile = await fetchProfileDataForUser(loggedInUser);
|
|
@@ -143,10 +142,6 @@ export function RenownUserProvider({ children, renownUrl = "https://www.renown.i
|
|
|
143
142
|
console.error("Logout failed:", error);
|
|
144
143
|
}
|
|
145
144
|
}, []);
|
|
146
|
-
// Open Renown portal
|
|
147
|
-
const openRenown = useCallback(() => {
|
|
148
|
-
openRenownPortal();
|
|
149
|
-
}, []);
|
|
150
145
|
// Show loading state while initializing
|
|
151
146
|
if (!isInitialized && loadingComponent) {
|
|
152
147
|
return _jsx(_Fragment, { children: loadingComponent });
|
|
@@ -162,8 +157,8 @@ export function RenownUserProvider({ children, renownUrl = "https://www.renown.i
|
|
|
162
157
|
isInitialized,
|
|
163
158
|
login,
|
|
164
159
|
logout,
|
|
165
|
-
openRenown,
|
|
166
|
-
|
|
160
|
+
openRenown: openRenownPortal,
|
|
161
|
+
renownCrypto,
|
|
167
162
|
renown,
|
|
168
163
|
};
|
|
169
164
|
return (_jsx(RenownUserContext.Provider, { value: value, children: children }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renown-user-provider.js","sourceRoot":"","sources":["../../../src/providers/renown-user-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"renown-user-provider.js","sourceRoot":"","sources":["../../../src/providers/renown-user-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,UAAU,IAAI,gBAAgB,EAC9B,KAAK,IAAI,WAAW,EACpB,MAAM,IAAI,YAAY,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAyBlE,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC5C,IAAI,CACL,CAAC;AAmCF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,uBAAuB,EACnC,SAAS,GAAG,QAAQ,EACpB,OAAO,GAAG,GAAG,EACb,gBAAgB,EAChB,cAAc,GACU;IACxB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAc,SAAS,CAAC,CAAC;IACvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAC/D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAuB,IAAI,CAAC,CAAC;IAC7E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IAE3D,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC;gBACH,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;oBAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;gBAED,4CAA4C;gBAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC3C,mDAAmD;oBACnD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC;oBACpD,MAAM,cAAc,GAAG,MAAM,IAAI,mBAAmB,EAAE;yBACnD,kBAAkB,CAAC,UAAU,CAAC;yBAC9B,KAAK,EAAE,CAAC;oBACX,MAAM,cAAc,GAAG,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC;yBACpD,UAAU,CAAC,cAAc,CAAC;yBAC1B,KAAK,EAAE,CAAC;oBAEX,qCAAqC;oBACrC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;oBAC/B,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;oBAErC,gBAAgB;oBAChB,eAAe,CAAC,cAAc,CAAC,CAAC;oBAChC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,qCAAqC;oBACrC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACzB,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACvC,CAAC;gBAED,iCAAiC;gBACjC,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;gBAC3D,IACE,cAAc;oBACd,qBAAqB,CAAC,eAAe,CAAC,cAAc,CAAC,EACrD,CAAC;oBACD,mCAAmC;oBACnC,MAAM,eAAe,GAAG,MAAM,uBAAuB,CACnD,cAAc,CAAC,IAAI,CACpB,CAAC;oBACF,OAAO,CAAC,eAAe,CAAC,CAAC;oBACzB,cAAc,CAAC,YAAY,CAAC,CAAC;oBAC7B,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,kBAAkB,EAAE,CAAC;gBAE3B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBAEvC,IAAI,WAAW,EAAE,CAAC;oBAChB,4CAA4C;oBAC5C,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;oBACnE,OAAO,CAAC,eAAe,CAAC,CAAC;oBACzB,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,gBAAgB,CAAC,CAAC;gBACnC,CAAC;gBAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;gBAC7D,YAAY,CAAC,KAAc,CAAC,CAAC;gBAC7B,cAAc,CAAC,gBAAgB,CAAC,CAAC;gBACjC,uDAAuD;gBACvD,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,gBAAgB;IAChB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;QACnD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAEzC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,cAAc,CAAC,UAAU,CAAC,CAAC;YAE3B,MAAM,GAAG,GAAG,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC;YAExC,gBAAgB;YAChB,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAClE,IAAI,YAAY,EAAE,CAAC;gBACjB,sCAAsC;gBACtC,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;gBACpE,OAAO,CAAC,eAAe,CAAC,CAAC;gBACzB,cAAc,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACtC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iBAAiB;IACjB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC;YACH,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,wCAAwC;IACxC,IAAI,CAAC,aAAa,IAAI,gBAAgB,EAAE,CAAC;QACvC,OAAO,4BAAG,gBAAgB,GAAI,CAAC;IACjC,CAAC;IAED,4CAA4C;IAC5C,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;QAChC,OAAO,4BAAG,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAI,CAAC;IAC1E,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,IAAI;QACJ,WAAW;QACX,SAAS;QACT,aAAa;QACb,KAAK;QACL,MAAM;QACN,UAAU,EAAE,gBAAgB;QAC5B,YAAY;QACZ,MAAM;KACP,CAAC;IAEF,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrC,QAAQ,GACkB,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Renown } from "./common.js";
|
|
2
|
+
import type { IRenownCrypto, JsonWebKeyPairStorage } from "./crypto/types.js";
|
|
3
|
+
import type { RenownEventEmitter, RenownStorage } from "./types.js";
|
|
4
|
+
export interface RenownBuilderOptions {
|
|
5
|
+
appName: string;
|
|
6
|
+
storage?: RenownStorage;
|
|
7
|
+
eventEmitter?: RenownEventEmitter;
|
|
8
|
+
crypto?: IRenownCrypto;
|
|
9
|
+
keyPairStorage?: JsonWebKeyPairStorage;
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Base builder for creating Renown instances.
|
|
14
|
+
* Use platform-specific builders (RenownBuilder from init.browser.js or init.node.js)
|
|
15
|
+
* for pre-configured defaults.
|
|
16
|
+
*/
|
|
17
|
+
export declare class BaseRenownBuilder {
|
|
18
|
+
#private;
|
|
19
|
+
/**
|
|
20
|
+
* @param appName - Application name used for signing context
|
|
21
|
+
*/
|
|
22
|
+
constructor(appName: string);
|
|
23
|
+
/**
|
|
24
|
+
* Set custom storage for user data persistence.
|
|
25
|
+
* Defaults to in-memory storage if not set.
|
|
26
|
+
*/
|
|
27
|
+
withStorage(storage: RenownStorage): this;
|
|
28
|
+
/**
|
|
29
|
+
* Set custom event emitter for user state changes.
|
|
30
|
+
* Defaults to in-memory event emitter if not set.
|
|
31
|
+
*/
|
|
32
|
+
withEventEmitter(eventEmitter: RenownEventEmitter): this;
|
|
33
|
+
/**
|
|
34
|
+
* Set a pre-built crypto instance.
|
|
35
|
+
* Either crypto or keyPairStorage must be provided.
|
|
36
|
+
*/
|
|
37
|
+
withCrypto(crypto: IRenownCrypto): this;
|
|
38
|
+
/**
|
|
39
|
+
* Set key pair storage for cryptographic keys.
|
|
40
|
+
* A crypto instance will be built from this storage.
|
|
41
|
+
* Either crypto or keyPairStorage must be provided.
|
|
42
|
+
*/
|
|
43
|
+
withKeyPairStorage(keyPairStorage: JsonWebKeyPairStorage): this;
|
|
44
|
+
/**
|
|
45
|
+
* Set the Renown server URL for credential verification.
|
|
46
|
+
* Defaults to https://www.renown.id
|
|
47
|
+
*/
|
|
48
|
+
withBaseUrl(baseUrl: string): this;
|
|
49
|
+
/**
|
|
50
|
+
* Build and initialize the Renown instance.
|
|
51
|
+
* If a user is stored, attempts to re-authenticate them.
|
|
52
|
+
* @throws Error if neither crypto nor keyPairStorage is provided
|
|
53
|
+
*/
|
|
54
|
+
build(): Promise<Renown>;
|
|
55
|
+
/**
|
|
56
|
+
* Create a BaseRenownBuilder from options object for a more concise API
|
|
57
|
+
*/
|
|
58
|
+
static from(options: RenownBuilderOptions): BaseRenownBuilder;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=renown-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renown-builder.d.ts","sourceRoot":"","sources":["../../src/renown-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;;IAQ5B;;OAEG;gBACS,OAAO,EAAE,MAAM;IAI3B;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC;;;OAGG;IACH,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAKxD;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKvC;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,qBAAqB,GAAG,IAAI;IAK/D;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAqC9B;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,GAAG,iBAAiB;CAqB9D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Renown, RenownMemoryStorage } from "./common.js";
|
|
2
|
+
import { DEFAULT_RENOWN_URL } from "./constants.js";
|
|
3
|
+
import { RenownCryptoBuilder } from "./crypto/renown-crypto-builder.js";
|
|
4
|
+
import { MemoryEventEmitter } from "./event/memory.js";
|
|
5
|
+
/**
|
|
6
|
+
* Base builder for creating Renown instances.
|
|
7
|
+
* Use platform-specific builders (RenownBuilder from init.browser.js or init.node.js)
|
|
8
|
+
* for pre-configured defaults.
|
|
9
|
+
*/
|
|
10
|
+
export class BaseRenownBuilder {
|
|
11
|
+
#appName;
|
|
12
|
+
#storage;
|
|
13
|
+
#eventEmitter;
|
|
14
|
+
#crypto;
|
|
15
|
+
#keyPairStorage;
|
|
16
|
+
#baseUrl;
|
|
17
|
+
/**
|
|
18
|
+
* @param appName - Application name used for signing context
|
|
19
|
+
*/
|
|
20
|
+
constructor(appName) {
|
|
21
|
+
this.#appName = appName;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Set custom storage for user data persistence.
|
|
25
|
+
* Defaults to in-memory storage if not set.
|
|
26
|
+
*/
|
|
27
|
+
withStorage(storage) {
|
|
28
|
+
this.#storage = storage;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Set custom event emitter for user state changes.
|
|
33
|
+
* Defaults to in-memory event emitter if not set.
|
|
34
|
+
*/
|
|
35
|
+
withEventEmitter(eventEmitter) {
|
|
36
|
+
this.#eventEmitter = eventEmitter;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Set a pre-built crypto instance.
|
|
41
|
+
* Either crypto or keyPairStorage must be provided.
|
|
42
|
+
*/
|
|
43
|
+
withCrypto(crypto) {
|
|
44
|
+
this.#crypto = crypto;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Set key pair storage for cryptographic keys.
|
|
49
|
+
* A crypto instance will be built from this storage.
|
|
50
|
+
* Either crypto or keyPairStorage must be provided.
|
|
51
|
+
*/
|
|
52
|
+
withKeyPairStorage(keyPairStorage) {
|
|
53
|
+
this.#keyPairStorage = keyPairStorage;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Set the Renown server URL for credential verification.
|
|
58
|
+
* Defaults to https://www.renown.id
|
|
59
|
+
*/
|
|
60
|
+
withBaseUrl(baseUrl) {
|
|
61
|
+
this.#baseUrl = baseUrl;
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build and initialize the Renown instance.
|
|
66
|
+
* If a user is stored, attempts to re-authenticate them.
|
|
67
|
+
* @throws Error if neither crypto nor keyPairStorage is provided
|
|
68
|
+
*/
|
|
69
|
+
async build() {
|
|
70
|
+
if (!this.#crypto && !this.#keyPairStorage) {
|
|
71
|
+
throw new Error("Either crypto or keyPairStorage is required. Use withCrypto() or withKeyPairStorage() to set one.");
|
|
72
|
+
}
|
|
73
|
+
const crypto = this.#crypto ??
|
|
74
|
+
(await new RenownCryptoBuilder()
|
|
75
|
+
.withKeyPairStorage(this.#keyPairStorage)
|
|
76
|
+
.build());
|
|
77
|
+
const storage = this.#storage ?? new RenownMemoryStorage();
|
|
78
|
+
const eventEmitter = this.#eventEmitter ?? new MemoryEventEmitter();
|
|
79
|
+
const baseUrl = this.#baseUrl ?? DEFAULT_RENOWN_URL;
|
|
80
|
+
const renown = new Renown(storage, eventEmitter, crypto, this.#appName, baseUrl);
|
|
81
|
+
// Re-authenticate stored user if present
|
|
82
|
+
if (renown.user) {
|
|
83
|
+
try {
|
|
84
|
+
await renown.login(renown.user.did);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error("Failed to re-authenticate user:", error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return renown;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create a BaseRenownBuilder from options object for a more concise API
|
|
94
|
+
*/
|
|
95
|
+
static from(options) {
|
|
96
|
+
const builder = new BaseRenownBuilder(options.appName);
|
|
97
|
+
if (options.storage) {
|
|
98
|
+
builder.withStorage(options.storage);
|
|
99
|
+
}
|
|
100
|
+
if (options.eventEmitter) {
|
|
101
|
+
builder.withEventEmitter(options.eventEmitter);
|
|
102
|
+
}
|
|
103
|
+
if (options.crypto) {
|
|
104
|
+
builder.withCrypto(options.crypto);
|
|
105
|
+
}
|
|
106
|
+
if (options.keyPairStorage) {
|
|
107
|
+
builder.withKeyPairStorage(options.keyPairStorage);
|
|
108
|
+
}
|
|
109
|
+
if (options.baseUrl) {
|
|
110
|
+
builder.withBaseUrl(options.baseUrl);
|
|
111
|
+
}
|
|
112
|
+
return builder;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=renown-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renown-builder.js","sourceRoot":"","sources":["../../src/renown-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
export interface IStorage<T extends Record<string, unknown> = Record<string, unknown
|
|
2
|
-
get
|
|
3
|
-
set
|
|
4
|
-
delete(key:
|
|
1
|
+
export interface IStorage<T extends Record<string, unknown> = Record<string, unknown>, Key extends keyof T = keyof T> {
|
|
2
|
+
get(key: Key): T[Key] | undefined;
|
|
3
|
+
set(key: Key, value?: T[Key]): void;
|
|
4
|
+
delete(key: Key): void;
|
|
5
5
|
}
|
|
6
|
-
export declare abstract class BaseStorage<T extends Record<string, unknown> = Record<string, unknown
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
abstract
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
export declare abstract class BaseStorage<T extends Record<string, unknown> = Record<string, unknown>, Key extends keyof T = keyof T> implements IStorage<T> {
|
|
7
|
+
abstract get(key: Key): T[Key] | undefined;
|
|
8
|
+
abstract set(key: Key, value?: T[Key]): void;
|
|
9
|
+
abstract delete(key: Key): void;
|
|
10
|
+
}
|
|
11
|
+
export declare class MemoryStorage<T extends Record<string, unknown> = Record<string, unknown>, Key extends keyof T = keyof T> extends BaseStorage<T> {
|
|
12
|
+
private readonly data;
|
|
13
|
+
get(key: Key): T[Key] | undefined;
|
|
14
|
+
set(key: Key, value?: T[Key]): void;
|
|
15
|
+
delete(key: Key): void;
|
|
12
16
|
}
|
|
13
17
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/storage/common.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/storage/common.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC;IAE7B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAClC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;CACxB;AAED,8BAAsB,WAAW,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,CAC7B,YAAW,QAAQ,CAAC,CAAC,CAAC;IAEtB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAC5C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;CAChC;AAED,qBAAa,aAAa,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,CAAC,CAC7B,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAE/C,GAAG,CAAC,GAAG,EAAE,GAAG;IAIZ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAQnC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;CAGvB"}
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
export class BaseStorage {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
}
|
|
3
|
+
export class MemoryStorage extends BaseStorage {
|
|
4
|
+
data = new Map();
|
|
5
|
+
get(key) {
|
|
6
|
+
return this.data.get(key);
|
|
7
|
+
}
|
|
8
|
+
set(key, value) {
|
|
9
|
+
if (value === undefined) {
|
|
10
|
+
this.data.delete(key);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
this.data.set(key, value);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
delete(key) {
|
|
17
|
+
this.data.delete(key);
|
|
5
18
|
}
|
|
6
19
|
}
|
|
7
20
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/storage/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/storage/common.ts"],"names":[],"mappings":"AASA,MAAM,OAAgB,WAAW;CAQhC;AAED,MAAM,OAAO,aAGX,SAAQ,WAAc;IACL,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAE/C,GAAG,CAAC,GAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAQ,EAAE,KAAc;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAQ;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BaseStorage } from "./common.js";
|
|
2
2
|
export declare class BrowserStorage<T extends Record<string, unknown> = Record<string, unknown>> extends BaseStorage<T> {
|
|
3
3
|
#private;
|
|
4
|
+
private readonly namespace;
|
|
4
5
|
constructor(namespace: string, basename: string | undefined);
|
|
5
6
|
get<Key extends keyof T>(key: Key): T[Key] | undefined;
|
|
6
7
|
set<Key extends keyof T>(key: Key, value?: T[Key]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.browser.d.ts","sourceRoot":"","sources":["../../../src/storage/storage.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,cAAc,CACzB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC3D,SAAQ,WAAW,CAAC,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"storage.browser.d.ts","sourceRoot":"","sources":["../../../src/storage/storage.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,cAAc,CACzB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC3D,SAAQ,WAAW,CAAC,CAAC,CAAC;;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;IAQ3D,GAAG,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAQtD,GAAG,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAMxD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI;CAG3B"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { BaseStorage } from "./common.js";
|
|
2
2
|
export class BrowserStorage extends BaseStorage {
|
|
3
|
+
namespace;
|
|
3
4
|
constructor(namespace, basename) {
|
|
4
|
-
super(
|
|
5
|
+
super();
|
|
6
|
+
this.namespace = `${basename}:${namespace}`;
|
|
5
7
|
}
|
|
6
8
|
#buildKey(key) {
|
|
7
9
|
return `${this.namespace}:${key.toString()}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.browser.js","sourceRoot":"","sources":["../../../src/storage/storage.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,cAEX,SAAQ,WAAc;
|
|
1
|
+
{"version":3,"file":"storage.browser.js","sourceRoot":"","sources":["../../../src/storage/storage.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,cAEX,SAAQ,WAAc;IACL,SAAS,CAAS;IAEnC,YAAY,SAAiB,EAAE,QAA4B;QACzD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,GAAY;QACpB,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC/C,CAAC;IACD,GAAG,CAAsB,GAAQ;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAW,CAAC;QACrC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,GAAG,CAAsB,GAAQ,EAAE,KAAc;QAC/C,OAAO,KAAK;YACV,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClE,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,GAAY;QACjB,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseStorage } from "./common.js";
|
|
2
2
|
export declare class NodeStorage<T extends Record<string, unknown> = Record<string, unknown>> extends BaseStorage<T> {
|
|
3
3
|
private readonly filePath;
|
|
4
|
-
constructor(filePath: string
|
|
4
|
+
constructor(filePath: string);
|
|
5
5
|
private readData;
|
|
6
6
|
private writeData;
|
|
7
7
|
get<Key extends keyof T>(key: Key): T[Key] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.node.d.ts","sourceRoot":"","sources":["../../../src/storage/storage.node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,WAAW,CACtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC3D,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"storage.node.d.ts","sourceRoot":"","sources":["../../../src/storage/storage.node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,WAAW,CACtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC3D,SAAQ,WAAW,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,EAAE,MAAM;IAY5B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;IAIjB,GAAG,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAKtD,GAAG,CAAC,GAAG,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;IAUxD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI;CAK3B"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
3
|
import { BaseStorage } from "./common.js";
|
|
4
4
|
export class NodeStorage extends BaseStorage {
|
|
5
5
|
filePath;
|
|
6
|
-
constructor(filePath
|
|
7
|
-
super(
|
|
6
|
+
constructor(filePath) {
|
|
7
|
+
super();
|
|
8
8
|
this.filePath = filePath;
|
|
9
|
+
const parentFolder = dirname(this.filePath);
|
|
10
|
+
mkdirSync(parentFolder, { recursive: true });
|
|
9
11
|
if (!existsSync(this.filePath)) {
|
|
10
12
|
writeFileSync(this.filePath, JSON.stringify({}));
|
|
11
13
|
}
|
|
@@ -15,7 +17,7 @@ export class NodeStorage extends BaseStorage {
|
|
|
15
17
|
return JSON.parse(data);
|
|
16
18
|
}
|
|
17
19
|
writeData(data) {
|
|
18
|
-
writeFileSync(
|
|
20
|
+
writeFileSync(this.filePath, JSON.stringify(data, null, 2));
|
|
19
21
|
}
|
|
20
22
|
get(key) {
|
|
21
23
|
const data = this.readData();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.node.js","sourceRoot":"","sources":["../../../src/storage/storage.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"storage.node.js","sourceRoot":"","sources":["../../../src/storage/storage.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,WAEX,SAAQ,WAAc;IACL,QAAQ,CAAS;IAElC,YAAY,QAAgB;QAC1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,QAAQ;QACd,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAEO,SAAS,CAAC,IAAO;QACvB,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,GAAG,CAAsB,GAAQ;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAsB,GAAQ,EAAE,KAAc;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,GAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;CACF"}
|