@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export class MemoryEventEmitter {
|
|
2
|
+
#listeners = new Map();
|
|
3
|
+
on(event, listener) {
|
|
4
|
+
if (!this.#listeners.has(event)) {
|
|
5
|
+
this.#listeners.set(event, new Set());
|
|
6
|
+
}
|
|
7
|
+
this.#listeners.get(event).add(listener);
|
|
8
|
+
return () => {
|
|
9
|
+
this.#listeners.get(event)?.delete(listener);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
emit(event, data) {
|
|
13
|
+
this.#listeners.get(event)?.forEach((listener) => listener(data));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/event/memory.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,kBAAkB;IAC7B,UAAU,GAAG,IAAI,GAAG,EAAoD,CAAC;IAEzE,EAAE,CACA,KAAQ,EACR,QAAyC;QAEzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,GAAG,CAAC,QAAmC,CAAC,CAAC;QACrE,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAmC,CAAC,CAAC;QAC1E,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAA+B,KAAQ,EAAE,IAAqB;QAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;CACF"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @example
|
|
10
10
|
* ```tsx
|
|
11
11
|
* function MyComponent() {
|
|
12
|
-
* const { user, loginStatus, isLoading, login, logout, openRenown,
|
|
12
|
+
* const { user, loginStatus, isLoading, login, logout, openRenown, renownCrypto, renown } = useUser()
|
|
13
13
|
*
|
|
14
14
|
* if (isLoading) return <div>Loading...</div>
|
|
15
15
|
* if (!user) return <button onClick={openRenown}>Login</button>
|
|
@@ -12,7 +12,7 @@ import { RenownUserContext } from "../providers/renown-user-provider.js";
|
|
|
12
12
|
* @example
|
|
13
13
|
* ```tsx
|
|
14
14
|
* function MyComponent() {
|
|
15
|
-
* const { user, loginStatus, isLoading, login, logout, openRenown,
|
|
15
|
+
* const { user, loginStatus, isLoading, login, logout, openRenown, renownCrypto, renown } = useUser()
|
|
16
16
|
*
|
|
17
17
|
* if (isLoading) return <div>Loading...</div>
|
|
18
18
|
* if (!user) return <button onClick={openRenown}>Login</button>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
export * from "./common.js";
|
|
1
2
|
export * from "./components/index.js";
|
|
2
3
|
export * from "./crypto/index.js";
|
|
3
4
|
export * from "./hooks/index.js";
|
|
4
|
-
export
|
|
5
|
+
export * from "./init.browser.js";
|
|
5
6
|
export * from "./providers/index.js";
|
|
7
|
+
export * from "./renown-builder.js";
|
|
6
8
|
export * from "./types.js";
|
|
7
9
|
export * from "./utils.js";
|
|
8
10
|
export { RENOWN_CHAIN_ID, RENOWN_NETWORK_ID, RENOWN_URL, } from "./lib/renown/constants.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,EACL,MAAM,EACN,UAAU,EACV,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
export * from "./common.js";
|
|
1
2
|
export * from "./components/index.js";
|
|
2
3
|
export * from "./crypto/index.js";
|
|
3
4
|
export * from "./hooks/index.js";
|
|
4
|
-
export
|
|
5
|
+
export * from "./init.browser.js";
|
|
5
6
|
export * from "./providers/index.js";
|
|
7
|
+
export * from "./renown-builder.js";
|
|
6
8
|
export * from "./types.js";
|
|
7
9
|
export * from "./utils.js";
|
|
8
10
|
// Export specific items from lib/renown to avoid conflicts
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,2DAA2D;AAC3D,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,EACL,MAAM,EACN,UAAU,EACV,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/src/index.node.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../src/index.node.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.node.d.ts","sourceRoot":"","sources":["../../src/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/dist/src/index.node.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../../src/index.node.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.node.js","sourceRoot":"","sources":["../../src/index.node.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -1,3 +1,52 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { Renown } from "./common.js";
|
|
2
|
+
import { BrowserEventEmitter } from "./event/event.browser.js";
|
|
3
|
+
import { BaseRenownBuilder } from "./renown-builder.js";
|
|
4
|
+
import { BrowserStorage } from "./storage/storage.browser.js";
|
|
5
|
+
import type { RenownEvents, RenownStorageMap } from "./types.js";
|
|
6
|
+
export declare class BrowserRenownStorage extends BrowserStorage<RenownStorageMap> {
|
|
7
|
+
}
|
|
8
|
+
export declare class BrowserRenownEventEmitter extends BrowserEventEmitter<RenownEvents> {
|
|
9
|
+
}
|
|
10
|
+
export interface BrowserRenownBuilderOptions {
|
|
11
|
+
/** Base path for storage keys (e.g., "/app" for multi-tenant apps) */
|
|
12
|
+
basename?: string;
|
|
13
|
+
/** Renown server URL. Defaults to https://www.renown.id */
|
|
14
|
+
baseUrl?: string;
|
|
15
|
+
/** IndexedDB database name for key storage. Defaults to "renownKeyDB" */
|
|
16
|
+
keyDbName?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Browser-specific Renown builder with pre-configured defaults.
|
|
20
|
+
* Uses localStorage for user data and IndexedDB for key storage.
|
|
21
|
+
*/
|
|
22
|
+
export declare class RenownBuilder extends BaseRenownBuilder {
|
|
23
|
+
#private;
|
|
24
|
+
/**
|
|
25
|
+
* @param appName - Application name used for signing context
|
|
26
|
+
* @param options - Browser-specific configuration options
|
|
27
|
+
*/
|
|
28
|
+
constructor(appName: string, options?: BrowserRenownBuilderOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Set base path for storage keys (e.g., "/app" for multi-tenant apps).
|
|
31
|
+
*/
|
|
32
|
+
withBasename(basename: string): this;
|
|
33
|
+
/**
|
|
34
|
+
* Set IndexedDB database name for key storage.
|
|
35
|
+
* Defaults to "renownKeyDB".
|
|
36
|
+
*/
|
|
37
|
+
withKeyDbName(keyDbName: string): this;
|
|
38
|
+
/**
|
|
39
|
+
* Build and initialize the Renown instance.
|
|
40
|
+
* Initializes IndexedDB for key storage before building.
|
|
41
|
+
*/
|
|
42
|
+
build(): Promise<Renown>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @deprecated Use RenownBuilder directly instead.
|
|
46
|
+
* Initialize a browser-specific Renown instance.
|
|
47
|
+
* @param appName - Application name used for signing context
|
|
48
|
+
* @param options - Browser-specific configuration options
|
|
49
|
+
* @returns Initialized Renown instance
|
|
50
|
+
*/
|
|
51
|
+
export declare function initRenown(appName: string, options?: BrowserRenownBuilderOptions): Promise<Renown>;
|
|
3
52
|
//# sourceMappingURL=init.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.browser.d.ts","sourceRoot":"","sources":["../../src/init.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.browser.d.ts","sourceRoot":"","sources":["../../src/init.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,oBAAqB,SAAQ,cAAc,CAAC,gBAAgB,CAAC;CAAG;AAC7E,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,YAAY,CAAC;CAAG;AAEnF,MAAM,WAAW,2BAA2B;IAC1C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;;IAIlD;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC;IAWtE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMpC;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKtC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CAK/B;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,2BAAgC,mBAG1C"}
|
package/dist/src/init.browser.js
CHANGED
|
@@ -1,7 +1,66 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BrowserKeyStorage } from "./crypto/browser-key-storage.js";
|
|
2
2
|
import { BrowserEventEmitter } from "./event/event.browser.js";
|
|
3
|
+
import { BaseRenownBuilder } from "./renown-builder.js";
|
|
3
4
|
import { BrowserStorage } from "./storage/storage.browser.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
5
|
+
export class BrowserRenownStorage extends BrowserStorage {
|
|
6
|
+
}
|
|
7
|
+
export class BrowserRenownEventEmitter extends BrowserEventEmitter {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Browser-specific Renown builder with pre-configured defaults.
|
|
11
|
+
* Uses localStorage for user data and IndexedDB for key storage.
|
|
12
|
+
*/
|
|
13
|
+
export class RenownBuilder extends BaseRenownBuilder {
|
|
14
|
+
#basename;
|
|
15
|
+
#keyDbName;
|
|
16
|
+
/**
|
|
17
|
+
* @param appName - Application name used for signing context
|
|
18
|
+
* @param options - Browser-specific configuration options
|
|
19
|
+
*/
|
|
20
|
+
constructor(appName, options = {}) {
|
|
21
|
+
super(appName);
|
|
22
|
+
this.#basename = options.basename;
|
|
23
|
+
this.#keyDbName = options.keyDbName;
|
|
24
|
+
this.withStorage(new BrowserRenownStorage("renown", this.#basename));
|
|
25
|
+
this.withEventEmitter(new BrowserRenownEventEmitter());
|
|
26
|
+
if (options.baseUrl) {
|
|
27
|
+
this.withBaseUrl(options.baseUrl);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Set base path for storage keys (e.g., "/app" for multi-tenant apps).
|
|
32
|
+
*/
|
|
33
|
+
withBasename(basename) {
|
|
34
|
+
this.#basename = basename;
|
|
35
|
+
this.withStorage(new BrowserRenownStorage("renown", this.#basename));
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Set IndexedDB database name for key storage.
|
|
40
|
+
* Defaults to "renownKeyDB".
|
|
41
|
+
*/
|
|
42
|
+
withKeyDbName(keyDbName) {
|
|
43
|
+
this.#keyDbName = keyDbName;
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build and initialize the Renown instance.
|
|
48
|
+
* Initializes IndexedDB for key storage before building.
|
|
49
|
+
*/
|
|
50
|
+
async build() {
|
|
51
|
+
const keyStorage = await BrowserKeyStorage.create(this.#keyDbName);
|
|
52
|
+
this.withKeyPairStorage(keyStorage);
|
|
53
|
+
return super.build();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated Use RenownBuilder directly instead.
|
|
58
|
+
* Initialize a browser-specific Renown instance.
|
|
59
|
+
* @param appName - Application name used for signing context
|
|
60
|
+
* @param options - Browser-specific configuration options
|
|
61
|
+
* @returns Initialized Renown instance
|
|
62
|
+
*/
|
|
63
|
+
export function initRenown(appName, options = {}) {
|
|
64
|
+
return new RenownBuilder(appName, options).build();
|
|
6
65
|
}
|
|
7
66
|
//# sourceMappingURL=init.browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.browser.js","sourceRoot":"","sources":["../../src/init.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.browser.js","sourceRoot":"","sources":["../../src/init.browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,MAAM,OAAO,oBAAqB,SAAQ,cAAgC;CAAG;AAC7E,MAAM,OAAO,yBAA0B,SAAQ,mBAAiC;CAAG;AAWnF;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAClD,SAAS,CAAU;IACnB,UAAU,CAAU;IAEpB;;;OAGG;IACH,YAAY,OAAe,EAAE,UAAuC,EAAE;QACpE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,UAAuC,EAAE;IAEzC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACrD,CAAC"}
|
package/dist/src/init.node.d.ts
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { NodeEventEmitter } from "./event/event.node.js";
|
|
2
|
+
import { BaseRenownBuilder } from "./renown-builder.js";
|
|
3
|
+
import { NodeStorage } from "./storage/storage.node.js";
|
|
4
|
+
import type { RenownEvents, RenownStorageMap } from "./types.js";
|
|
5
|
+
export declare class NodeRenownEventEmitter extends NodeEventEmitter<RenownEvents> {
|
|
6
|
+
}
|
|
7
|
+
export declare class NodeRenownStorage extends NodeStorage<RenownStorageMap> {
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_RENOWN_STORAGE_PATH = "./.ph/.renown.json";
|
|
10
|
+
export interface NodeRenownBuilderOptions {
|
|
11
|
+
/** File path for user storage. Defaults to ".ph/.renown.json" in cwd */
|
|
12
|
+
storagePath?: string;
|
|
13
|
+
/** File path for keypair storage. Defaults to ".ph/.keypair.json" in cwd */
|
|
14
|
+
keyPath?: string;
|
|
15
|
+
/** Renown server URL. Defaults to https://www.renown.id */
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Node.js-specific Renown builder with pre-configured defaults.
|
|
20
|
+
* Uses file-based storage for both user data and key storage.
|
|
21
|
+
*/
|
|
22
|
+
export declare class RenownBuilder extends BaseRenownBuilder {
|
|
23
|
+
/**
|
|
24
|
+
* @param appName - Application name used for signing context
|
|
25
|
+
* @param options - Node.js-specific configuration options
|
|
26
|
+
*/
|
|
27
|
+
constructor(appName: string, options?: NodeRenownBuilderOptions);
|
|
28
|
+
}
|
|
3
29
|
//# sourceMappingURL=init.node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.node.d.ts","sourceRoot":"","sources":["../../src/init.node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.node.d.ts","sourceRoot":"","sources":["../../src/init.node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,qBAAa,sBAAuB,SAAQ,gBAAgB,CAAC,YAAY,CAAC;CAAG;AAC7E,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;CAAG;AAEvE,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAEhE,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,iBAAiB;IAClD;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B;CAgBpE"}
|
package/dist/src/init.node.js
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeKeyStorage } from "./crypto/node-key-storage.js";
|
|
2
2
|
import { NodeEventEmitter } from "./event/event.node.js";
|
|
3
|
+
import { BaseRenownBuilder } from "./renown-builder.js";
|
|
3
4
|
import { NodeStorage } from "./storage/storage.node.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
export class NodeRenownEventEmitter extends NodeEventEmitter {
|
|
6
|
+
}
|
|
7
|
+
export class NodeRenownStorage extends NodeStorage {
|
|
8
|
+
}
|
|
9
|
+
export const DEFAULT_RENOWN_STORAGE_PATH = "./.ph/.renown.json";
|
|
10
|
+
/**
|
|
11
|
+
* Node.js-specific Renown builder with pre-configured defaults.
|
|
12
|
+
* Uses file-based storage for both user data and key storage.
|
|
13
|
+
*/
|
|
14
|
+
export class RenownBuilder extends BaseRenownBuilder {
|
|
15
|
+
/**
|
|
16
|
+
* @param appName - Application name used for signing context
|
|
17
|
+
* @param options - Node.js-specific configuration options
|
|
18
|
+
*/
|
|
19
|
+
constructor(appName, options = {}) {
|
|
20
|
+
super(appName);
|
|
21
|
+
const { storagePath = DEFAULT_RENOWN_STORAGE_PATH, keyPath, baseUrl, } = options;
|
|
22
|
+
this.withKeyPairStorage(new NodeKeyStorage(keyPath));
|
|
23
|
+
this.withStorage(new NodeRenownStorage(storagePath));
|
|
24
|
+
this.withEventEmitter(new NodeRenownEventEmitter());
|
|
25
|
+
if (baseUrl) {
|
|
26
|
+
this.withBaseUrl(baseUrl);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
7
29
|
}
|
|
8
30
|
//# sourceMappingURL=init.node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.node.js","sourceRoot":"","sources":["../../src/init.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.node.js","sourceRoot":"","sources":["../../src/init.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,MAAM,OAAO,sBAAuB,SAAQ,gBAA8B;CAAG;AAC7E,MAAM,OAAO,iBAAkB,SAAQ,WAA6B;CAAG;AAEvE,MAAM,CAAC,MAAM,2BAA2B,GAAG,oBAAoB,CAAC;AAWhE;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAClD;;;OAGG;IACH,YAAY,OAAe,EAAE,UAAoC,EAAE;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,MAAM,EACJ,WAAW,GAAG,2BAA2B,EACzC,OAAO,EACP,OAAO,GACR,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,kBAAkB,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential.d.ts","sourceRoot":"","sources":["../../../../src/lib/renown/credential.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// import { v4 as uuidv4 } from "uuid";
|
|
2
|
+
// import type { WalletClient } from "viem";
|
|
3
|
+
// import { CREDENTIAL_TYPES } from "./constants.js";
|
|
4
|
+
export {};
|
|
5
|
+
// export interface CreateEIP712CredentialParams {
|
|
6
|
+
// walletClient: WalletClient;
|
|
7
|
+
// chainId: number;
|
|
8
|
+
// app: string;
|
|
9
|
+
// connectId?: string;
|
|
10
|
+
// expiresInDays?: number;
|
|
11
|
+
// }
|
|
12
|
+
// /**
|
|
13
|
+
// * Create and sign an EIP-712 Verifiable Credential
|
|
14
|
+
// */
|
|
15
|
+
// export async function createEIP712Credential(
|
|
16
|
+
// params: CreateEIP712CredentialParams,
|
|
17
|
+
// ) {
|
|
18
|
+
// const { walletClient, chainId, app, connectId, expiresInDays = 7 } = params;
|
|
19
|
+
// if (!walletClient.account?.address) {
|
|
20
|
+
// throw new Error("Wallet not connected");
|
|
21
|
+
// }
|
|
22
|
+
// const address = walletClient.account.address;
|
|
23
|
+
// const issuerId = `did:pkh:eip155:${chainId}:${address.toLowerCase()}`;
|
|
24
|
+
// const credentialId = `urn:uuid:${uuidv4()}`;
|
|
25
|
+
// const now = new Date();
|
|
26
|
+
// const expirationDate = new Date(
|
|
27
|
+
// now.getTime() + expiresInDays * 24 * 60 * 60 * 1000,
|
|
28
|
+
// );
|
|
29
|
+
// // Build the credential
|
|
30
|
+
// const credential = {
|
|
31
|
+
// "@context": ["https://www.w3.org/2018/credentials/v1"],
|
|
32
|
+
// type: ["VerifiableCredential", "RenownCredential"],
|
|
33
|
+
// id: credentialId,
|
|
34
|
+
// issuer: {
|
|
35
|
+
// id: issuerId,
|
|
36
|
+
// ethereumAddress: address,
|
|
37
|
+
// },
|
|
38
|
+
// credentialSubject: {
|
|
39
|
+
// id: connectId || issuerId,
|
|
40
|
+
// app,
|
|
41
|
+
// },
|
|
42
|
+
// credentialSchema: {
|
|
43
|
+
// id: "https://renown.id/schemas/renown-credential/v1",
|
|
44
|
+
// type: "JsonSchemaValidator2018",
|
|
45
|
+
// },
|
|
46
|
+
// issuanceDate: now.toISOString(),
|
|
47
|
+
// expirationDate: expirationDate.toISOString(),
|
|
48
|
+
// };
|
|
49
|
+
// // EIP-712 domain
|
|
50
|
+
// const domain = {
|
|
51
|
+
// version: "1",
|
|
52
|
+
// chainId: BigInt(chainId),
|
|
53
|
+
// };
|
|
54
|
+
// // Sign with EIP-712
|
|
55
|
+
// const signature = await walletClient.signTypedData({
|
|
56
|
+
// account: walletClient.account,
|
|
57
|
+
// domain,
|
|
58
|
+
// types: CREDENTIAL_TYPES,
|
|
59
|
+
// primaryType: "VerifiableCredential",
|
|
60
|
+
// message: credential,
|
|
61
|
+
// });
|
|
62
|
+
// return {
|
|
63
|
+
// credential,
|
|
64
|
+
// signature,
|
|
65
|
+
// domain,
|
|
66
|
+
// };
|
|
67
|
+
// }
|
|
68
|
+
//# sourceMappingURL=credential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential.js","sourceRoot":"","sources":["../../../../src/lib/renown/credential.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,4CAA4C;AAC5C,qDAAqD;;AAErD,kDAAkD;AAClD,gCAAgC;AAChC,qBAAqB;AACrB,iBAAiB;AACjB,wBAAwB;AACxB,4BAA4B;AAC5B,IAAI;AAEJ,MAAM;AACN,sDAAsD;AACtD,MAAM;AACN,gDAAgD;AAChD,0CAA0C;AAC1C,MAAM;AACN,iFAAiF;AAEjF,0CAA0C;AAC1C,+CAA+C;AAC/C,MAAM;AAEN,kDAAkD;AAClD,2EAA2E;AAC3E,iDAAiD;AACjD,4BAA4B;AAC5B,qCAAqC;AACrC,2DAA2D;AAC3D,OAAO;AAEP,4BAA4B;AAC5B,yBAAyB;AACzB,8DAA8D;AAC9D,0DAA0D;AAC1D,wBAAwB;AACxB,gBAAgB;AAChB,sBAAsB;AACtB,kCAAkC;AAClC,SAAS;AACT,2BAA2B;AAC3B,mCAAmC;AACnC,aAAa;AACb,SAAS;AACT,0BAA0B;AAC1B,8DAA8D;AAC9D,yCAAyC;AACzC,SAAS;AACT,uCAAuC;AACvC,oDAAoD;AACpD,OAAO;AAEP,sBAAsB;AACtB,qBAAqB;AACrB,oBAAoB;AACpB,gCAAgC;AAChC,OAAO;AAEP,yBAAyB;AACzB,yDAAyD;AACzD,qCAAqC;AACrC,cAAc;AACd,+BAA+B;AAC/B,2CAA2C;AAC3C,2BAA2B;AAC3B,QAAQ;AAER,aAAa;AACb,kBAAkB;AAClB,iBAAiB;AACjB,cAAc;AACd,OAAO;AACP,IAAI"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IRenown } from "@renown/sdk";
|
|
2
|
-
import type {
|
|
2
|
+
import type { IRenownCrypto } from "../../crypto/index.js";
|
|
3
3
|
export type LoginStatus = "initial" | "checking" | "authorized" | "not-authorized";
|
|
4
4
|
export interface User {
|
|
5
5
|
did: string;
|
|
@@ -18,12 +18,12 @@ declare global {
|
|
|
18
18
|
setGenerateJwtHandler: (handler: (driveUrl: string) => Promise<string>) => void;
|
|
19
19
|
removeJwtHandler: () => void;
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
renownCrypto?: IRenownCrypto;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
export declare function openRenown(documentId?: string):
|
|
24
|
+
export declare function openRenown(documentId?: string): void;
|
|
25
25
|
export declare function handleRenownReturn(): Promise<void>;
|
|
26
|
-
export declare function login(userDid: string | undefined, renown: IRenown | undefined,
|
|
26
|
+
export declare function login(userDid: string | undefined, renown: IRenown | undefined, renownCrypto: IRenownCrypto | undefined): Promise<User | undefined>;
|
|
27
27
|
export declare function logout(): Promise<void>;
|
|
28
28
|
/**
|
|
29
29
|
* Re-authenticate using stored session data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/renown/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/renown/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAe3D,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,UAAU,GACV,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqDD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BvE;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE;YACR,qBAAqB,EAAE,CACrB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,KAC3C,IAAI,CAAC;YACV,gBAAgB,EAAE,MAAM,IAAI,CAAC;SAC9B,CAAC;QACF,YAAY,CAAC,EAAE,aAAa,CAAC;KAC9B;CACF;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,QA0B7C;AAGD,wBAAsB,kBAAkB,kBAkBvC;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,OAAO,GAAG,SAAS,EAC3B,YAAY,EAAE,aAAa,GAAG,SAAS,6BA4DxC;AAED,wBAAsB,MAAM,kBAS3B;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CA4BtE"}
|
|
@@ -65,7 +65,7 @@ export async function fetchProfileDataForUser(user) {
|
|
|
65
65
|
return user;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
export
|
|
68
|
+
export function openRenown(documentId) {
|
|
69
69
|
// If documentId is provided, open the profile page directly
|
|
70
70
|
if (documentId) {
|
|
71
71
|
const profileUrl = `${RENOWN_URL}/profile/${documentId}`;
|
|
@@ -74,18 +74,10 @@ export async function openRenown(documentId) {
|
|
|
74
74
|
}
|
|
75
75
|
// Otherwise, open the auth flow
|
|
76
76
|
const url = new URL(RENOWN_URL);
|
|
77
|
-
// Get DID from
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
|
|
81
|
-
connectDid = await window.connectCrypto.did();
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
console.error("Failed to get DID from connectCrypto:", error);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
console.warn("connectCrypto not available - authentication may not be properly initialized");
|
|
77
|
+
// Get DID from renownCrypto if available
|
|
78
|
+
const connectDid = window.renownCrypto?.did;
|
|
79
|
+
if (!connectDid) {
|
|
80
|
+
throw new Error("Keypair not found - authentication may not be properly initialized");
|
|
89
81
|
}
|
|
90
82
|
url.searchParams.set("connect", connectDid);
|
|
91
83
|
url.searchParams.set("network", RENOWN_NETWORK_ID);
|
|
@@ -101,9 +93,9 @@ export async function handleRenownReturn() {
|
|
|
101
93
|
const urlParams = new URLSearchParams(window.location.search);
|
|
102
94
|
const userDid = decodeURIComponent(urlParams.get("user") ?? "");
|
|
103
95
|
// If we have authentication parameters, attempt login
|
|
104
|
-
if (userDid && window.renown && window.
|
|
96
|
+
if (userDid && window.renown && window.renownCrypto) {
|
|
105
97
|
try {
|
|
106
|
-
await login(userDid, window.renown, window.
|
|
98
|
+
await login(userDid, window.renown, window.renownCrypto);
|
|
107
99
|
// Clean up URL parameters
|
|
108
100
|
const cleanUrl = new URL(window.location.href);
|
|
109
101
|
cleanUrl.searchParams.delete("user");
|
|
@@ -114,8 +106,8 @@ export async function handleRenownReturn() {
|
|
|
114
106
|
}
|
|
115
107
|
}
|
|
116
108
|
}
|
|
117
|
-
export async function login(userDid, renown,
|
|
118
|
-
if (!renown || !
|
|
109
|
+
export async function login(userDid, renown, renownCrypto) {
|
|
110
|
+
if (!renown || !renownCrypto) {
|
|
119
111
|
return;
|
|
120
112
|
}
|
|
121
113
|
// Validate that userDid is a valid pkh DID format
|
|
@@ -124,8 +116,7 @@ export async function login(userDid, renown, connectCrypto) {
|
|
|
124
116
|
return;
|
|
125
117
|
}
|
|
126
118
|
try {
|
|
127
|
-
|
|
128
|
-
user = user instanceof Promise ? await user : user;
|
|
119
|
+
const user = renown.user;
|
|
129
120
|
if (user?.did && (user.did === userDid || !userDid)) {
|
|
130
121
|
// Fetch profile data for the user
|
|
131
122
|
const userWithProfile = await fetchProfileDataForUser(user);
|
|
@@ -142,20 +133,18 @@ export async function login(userDid, renown, connectCrypto) {
|
|
|
142
133
|
if (!userDid) {
|
|
143
134
|
return;
|
|
144
135
|
}
|
|
145
|
-
const newUser = await renown.login(userDid
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
return userWithProfile;
|
|
158
|
-
}
|
|
136
|
+
const newUser = await renown.login(userDid);
|
|
137
|
+
// Fetch profile data for the user
|
|
138
|
+
const userWithProfile = await fetchProfileDataForUser(newUser);
|
|
139
|
+
// Set up JWT handler if reactor is available
|
|
140
|
+
// Store user data in sessionStorage for persistence
|
|
141
|
+
SessionStorageManager.setUserData({
|
|
142
|
+
user: userWithProfile,
|
|
143
|
+
userDid: userWithProfile.did,
|
|
144
|
+
loginStatus: "authorized",
|
|
145
|
+
timestamp: Date.now(),
|
|
146
|
+
});
|
|
147
|
+
return userWithProfile;
|
|
159
148
|
}
|
|
160
149
|
catch (error) {
|
|
161
150
|
console.error("Renown login error:", error);
|
|
@@ -175,9 +164,7 @@ export async function logout() {
|
|
|
175
164
|
* This allows calling renown.login without needing to go through the full auth flow again
|
|
176
165
|
*/
|
|
177
166
|
export async function reauthenticateFromSession() {
|
|
178
|
-
if (typeof window === "undefined" ||
|
|
179
|
-
!window.renown ||
|
|
180
|
-
!window.connectCrypto) {
|
|
167
|
+
if (typeof window === "undefined" || !window.renown || !window.renownCrypto) {
|
|
181
168
|
return null;
|
|
182
169
|
}
|
|
183
170
|
const storedUserDid = SessionStorageManager.getStoredUserDid();
|
|
@@ -185,13 +172,7 @@ export async function reauthenticateFromSession() {
|
|
|
185
172
|
return null;
|
|
186
173
|
}
|
|
187
174
|
try {
|
|
188
|
-
await login(storedUserDid, window.renown, window.
|
|
189
|
-
// Get the current user after login
|
|
190
|
-
let currentUser = window.renown.user instanceof Function
|
|
191
|
-
? window.renown.user()
|
|
192
|
-
: window.renown.user;
|
|
193
|
-
currentUser =
|
|
194
|
-
currentUser instanceof Promise ? await currentUser : currentUser;
|
|
175
|
+
const currentUser = await login(storedUserDid, window.renown, window.renownCrypto);
|
|
195
176
|
if (currentUser) {
|
|
196
177
|
// Fetch profile data for the restored user
|
|
197
178
|
const userWithProfile = await fetchProfileDataForUser(currentUser);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/renown/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AA4B3D,wDAAwD;AACxD,KAAK,UAAU,0BAA0B,CACvC,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,cAAc,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU;aACX,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CASpC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAU;IACtD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;gBACnC,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;gBACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC3C,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,OAAO;YACL,GAAG,IAAI;YACP,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAgBD,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/renown/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AA4B3D,wDAAwD;AACxD,KAAK,UAAU,0BAA0B,CACvC,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,cAAc,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU;aACX,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CASpC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAAU;IACtD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mCAAmC;QACnC,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAE7D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;gBACnC,MAAM,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;gBACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC3C,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,OAAO;YACL,GAAG,IAAI;YACP,UAAU;SACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAgBD,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,4DAA4D;IAC5D,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,GAAG,UAAU,YAAY,UAAU,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,gCAAgC;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEhC,yCAAyC;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACnD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhE,sDAAsD;IACtD,IAAI,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YACzD,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAA2B,EAC3B,MAA2B,EAC3B,YAAuC;IAEvC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,kDAAkD;IAClD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CACV,+BAA+B,EAC/B,OAAO,EACP,4BAA4B,CAC7B,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,kCAAkC;YAClC,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE5D,6CAA6C;YAE7C,oDAAoD;YACpD,qBAAqB,CAAC,WAAW,CAAC;gBAChC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,eAAe,CAAC,GAAG;gBAC5B,WAAW,EAAE,YAAY;gBACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YAEH,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5C,kCAAkC;QAClC,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE/D,6CAA6C;QAE7C,oDAAoD;QACpD,qBAAqB,CAAC,WAAW,CAAC;YAChC,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,eAAe,CAAC,GAAG;YAC5B,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,OAAO,eAAe,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAE/B,4BAA4B;IAC5B,qBAAqB,CAAC,aAAa,EAAE,CAAC;IAEtC,MAAM,MAAM,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;IAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,KAAK,CAC7B,aAAa,EACb,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,YAAY,CACpB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,2CAA2C;YAC3C,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;YACnE,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|