@multiplatform.one/wallet 7.7.3 → 7.7.4
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/package.json +7 -6
- package/types/SiweKeycloakProvider.d.ts +28 -0
- package/types/SiweKeycloakProvider.d.ts.map +1 -0
- package/types/base64.d.ts +2 -0
- package/types/base64.d.ts.map +1 -0
- package/types/context.d.ts +7 -0
- package/types/context.d.ts.map +1 -0
- package/types/hooks/context.d.ts +7 -0
- package/types/hooks/context.d.ts.map +1 -0
- package/types/hooks/index.d.ts +2 -0
- package/types/hooks/index.d.ts.map +1 -0
- package/types/hooks/useSiweKeycloak.d.ts +11 -0
- package/types/hooks/useSiweKeycloak.d.ts.map +1 -0
- package/types/index.d.ts +30 -0
- package/types/index.d.ts.map +1 -0
- package/types/render.d.ts +7 -0
- package/types/render.d.ts.map +1 -0
- package/types/siwe.d.ts +17 -0
- package/types/siwe.d.ts.map +1 -0
- package/types/types.d.ts +7 -0
- package/types/types.d.ts.map +1 -0
- package/types/util.d.ts +4 -0
- package/types/util.d.ts.map +1 -0
- package/dist/cjs/base64.spec.cjs +0 -57
- package/dist/cjs/base64.spec.native.js +0 -79
- package/dist/cjs/base64.spec.native.js.map +0 -1
- package/dist/cjs/util.spec.cjs +0 -53
- package/dist/cjs/util.spec.native.js +0 -62
- package/dist/cjs/util.spec.native.js.map +0 -1
- package/dist/esm/base64.spec.mjs +0 -58
- package/dist/esm/base64.spec.mjs.map +0 -1
- package/dist/esm/base64.spec.native.js +0 -77
- package/dist/esm/base64.spec.native.js.map +0 -1
- package/dist/esm/util.spec.mjs +0 -54
- package/dist/esm/util.spec.mjs.map +0 -1
- package/dist/esm/util.spec.native.js +0 -60
- package/dist/esm/util.spec.native.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/wallet",
|
|
3
|
-
"version": "7.7.
|
|
3
|
+
"version": "7.7.4",
|
|
4
4
|
"description": "siwe keycloak client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"4361",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"siwe": "^3.0.0",
|
|
46
|
-
"@multiplatform.one/keycloak-js": "7.7.
|
|
47
|
-
"@multiplatform.one/store": "7.7.
|
|
48
|
-
"@multiplatform.one/web3": "7.7.
|
|
46
|
+
"@multiplatform.one/keycloak-js": "7.7.4",
|
|
47
|
+
"@multiplatform.one/store": "7.7.4",
|
|
48
|
+
"@multiplatform.one/web3": "7.7.4"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@tamagui/build": "2.7.6",
|
|
@@ -60,7 +60,8 @@
|
|
|
60
60
|
"react-native-web": "^0.21.2",
|
|
61
61
|
"typescript": "~5.9.3",
|
|
62
62
|
"viem": "^2.48.7",
|
|
63
|
-
"wagmi": "^3.7.1"
|
|
63
|
+
"wagmi": "^3.7.1",
|
|
64
|
+
"@multiplatform.one/config": "7.7.4"
|
|
64
65
|
},
|
|
65
66
|
"peerDependencies": {
|
|
66
67
|
"@tanstack/react-query": "^5.62.16",
|
|
@@ -74,7 +75,7 @@
|
|
|
74
75
|
"node": ">=22.0.0"
|
|
75
76
|
},
|
|
76
77
|
"scripts": {
|
|
77
|
-
"build": "rm -rf dist types 2>/dev/null && tamagui-build",
|
|
78
|
+
"build": "rm -rf dist types 2>/dev/null && tamagui-build --ts-project ./tsconfig.build.json --exclude '\\.spec\\.|\\.test\\.|\\.stories\\.'",
|
|
78
79
|
"test": "vitest run --coverage --coverage.provider=v8 --coverage.reporter=text --coverage.reporter=lcov --coverage.reporter=html",
|
|
79
80
|
"typecheck": "tsgo --noEmit"
|
|
80
81
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CreateConfigParameters } from "@wagmi/core";
|
|
2
|
+
import type { PropsWithChildren } from "react";
|
|
3
|
+
import type { CoinbaseWalletParameters } from "wagmi/connectors";
|
|
4
|
+
import type { KeycloakConfig } from "./types";
|
|
5
|
+
export interface Tokens {
|
|
6
|
+
accessToken: string;
|
|
7
|
+
idToken: string;
|
|
8
|
+
refreshToken: string;
|
|
9
|
+
}
|
|
10
|
+
export interface SiweKeycloakProviderProps extends PropsWithChildren {
|
|
11
|
+
appDescription?: string;
|
|
12
|
+
appIcon?: string;
|
|
13
|
+
appName?: string;
|
|
14
|
+
appUrl?: string;
|
|
15
|
+
clearTokens?: () => void | Promise<void>;
|
|
16
|
+
coinbaseWalletPreference?: CoinbaseWalletParameters<"4">["preference"];
|
|
17
|
+
debug?: boolean;
|
|
18
|
+
getTokens?: () => Tokens | Promise<Tokens>;
|
|
19
|
+
keycloak?: Partial<KeycloakConfig>;
|
|
20
|
+
onSignedIn?: () => any;
|
|
21
|
+
onSignedInFailed?: (err: Error) => any;
|
|
22
|
+
setTokens?: (tokens: Tokens) => void | Promise<void>;
|
|
23
|
+
siwe?: boolean;
|
|
24
|
+
wagmi?: Partial<CreateConfigParameters>;
|
|
25
|
+
walletConnectProjectId?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function SiweKeycloakProvider({ children, clearTokens: clearTokensProp, debug, getTokens: getTokensProp, keycloak: keycloakProp, siwe, setTokens: setTokensProp, wagmi: wagmiProp, onSignedIn, onSignedInFailed, ...props }: SiweKeycloakProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=SiweKeycloakProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiweKeycloakProvider.d.ts","sourceRoot":"","sources":["../src/SiweKeycloakProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAQ1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,wBAAwB,CAAC,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAQD,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,WAAW,EAAE,eAAe,EAC5B,KAAK,EACL,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,YAAY,EACtB,IAAI,EACJ,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,EAChB,UAAU,EACV,gBAAgB,EAChB,GAAG,KAAK,EACT,EAAE,yBAAyB,2CAyO3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"AAiBA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type Keycloak from "@multiplatform.one/keycloak-js";
|
|
2
|
+
interface SiweKeycloakContextValue {
|
|
3
|
+
keycloak?: Keycloak;
|
|
4
|
+
}
|
|
5
|
+
export declare const SiweKeycloakContext: import("react").Context<SiweKeycloakContextValue>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gCAAgC,CAAC;AAG3D,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,mBAAmB,mDAE/B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type Keycloak from "@multiplatform.one/keycloak-js";
|
|
2
|
+
interface SiweKeycloakContextValue {
|
|
3
|
+
keycloak?: Keycloak;
|
|
4
|
+
}
|
|
5
|
+
export declare const SiweKeycloakContext: import("react").Context<SiweKeycloakContextValue>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/hooks/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gCAAgC,CAAC;AAG3D,UAAU,wBAAwB;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,mBAAmB,mDAE/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function useSiweKeycloak(): {
|
|
2
|
+
signOut: any;
|
|
3
|
+
openSIWE: (triggerSIWE?: boolean) => void;
|
|
4
|
+
openSwitchNetworks: () => void;
|
|
5
|
+
openOnboarding: () => void;
|
|
6
|
+
openAbout: () => void;
|
|
7
|
+
openProfile: () => void;
|
|
8
|
+
keycloak: import("@multiplatform.one/keycloak-js").default | undefined;
|
|
9
|
+
connect(): void;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=useSiweKeycloak.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSiweKeycloak.d.ts","sourceRoot":"","sources":["../../src/hooks/useSiweKeycloak.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe;;;;;;;;;EAiB9B"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { GetWalletClientData } from "@wagmi/core/query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import type { UseClientReturnType } from "wagmi";
|
|
4
|
+
import type { RenderOptions } from "./render";
|
|
5
|
+
import type { KeycloakConfig } from "./types";
|
|
6
|
+
export interface SiweKeycloakOptions extends RenderOptions {
|
|
7
|
+
}
|
|
8
|
+
export declare class SiweKeycloak {
|
|
9
|
+
private _walletClientResolvers;
|
|
10
|
+
addresses: readonly [Address, ...Address[]] | readonly Address[];
|
|
11
|
+
client?: UseClientReturnType;
|
|
12
|
+
connect?: () => Promise<void>;
|
|
13
|
+
keycloakConfig: KeycloakConfig;
|
|
14
|
+
openAbout?: () => any;
|
|
15
|
+
openOnboarding?: () => any;
|
|
16
|
+
openProfile?: () => Promise<void>;
|
|
17
|
+
openSIWE?: () => Promise<void>;
|
|
18
|
+
openSwitchNetworks?: () => any;
|
|
19
|
+
signOut?: () => any;
|
|
20
|
+
walletClient?: GetWalletClientData<any, any>;
|
|
21
|
+
constructor(options?: Omit<SiweKeycloakOptions, "onSetClient" | "onSetConnect" | "onSetOpenAbout" | "onSetOpenOnboarding" | "onSetOpenProfile" | "onSetOpenSIWE" | "onSetOpenSwitchNetworks" | "onSetSignOut" | "onSetWalletClient">);
|
|
22
|
+
private _asyncTrigger;
|
|
23
|
+
getNonce(): Promise<string>;
|
|
24
|
+
createMessage(address: Address): Promise<string | undefined>;
|
|
25
|
+
}
|
|
26
|
+
export * from "./SiweKeycloakProvider";
|
|
27
|
+
export * from "./hooks";
|
|
28
|
+
export * from "./types";
|
|
29
|
+
export * from "./util";
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,mBAAoB,SAAQ,aAAa;CAAG;AAE7D,qBAAa,YAAY;IACvB,OAAO,CAAC,sBAAsB,CAAiC;IAE/D,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,CAAM;IACtE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,YAAY,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAG3C,OAAO,CAAC,EAAE,IAAI,CACZ,mBAAmB,EACjB,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,eAAe,GACf,yBAAyB,GACzB,cAAc,GACd,mBAAmB,CACtB;IA4DH,OAAO,CAAC,aAAa;IAcf,QAAQ;IAMR,aAAa,CAAC,OAAO,EAAE,OAAO;CAKrC;AAED,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SiweProps } from "./siwe";
|
|
2
|
+
import type { SiweKeycloakProviderProps } from "./index";
|
|
3
|
+
export interface RenderOptions extends SiweKeycloakProviderProps, SiweProps {
|
|
4
|
+
element?: HTMLElement | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function render({ element, onAddresses, onSetClient, onSetConnect, onSetOpenAbout, onSetOpenOnboarding, onSetOpenProfile, onSetOpenSIWE, onSetOpenSwitchNetworks, onSetSignOut, onSetWalletClient, setTokens: _setTokens, ...props }: RenderOptions): void;
|
|
7
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,aAAc,SAAQ,yBAAyB,EAAE,SAAS;IACzE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EAAE,UAAU,EACrB,GAAG,KAAK,EACT,EAAE,aAAa,QAqBf"}
|
package/types/siwe.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { GetWalletClientData } from "@wagmi/core/query";
|
|
2
|
+
import type { Address } from "viem";
|
|
3
|
+
import { type UseClientReturnType } from "wagmi";
|
|
4
|
+
export interface SiweProps {
|
|
5
|
+
onSetOpenAbout: (openAbout: () => void) => void;
|
|
6
|
+
onSetOpenOnboarding: (openOnboarding: () => void) => void;
|
|
7
|
+
onSetOpenProfile: (openProfile: () => void) => void;
|
|
8
|
+
onSetOpenSIWE: (openSIWE: (triggerSIWE?: boolean) => void) => void;
|
|
9
|
+
onSetOpenSwitchNetworks: (openSwitchNetworks: () => void) => void;
|
|
10
|
+
onSetSignOut: (signOut: () => void) => void;
|
|
11
|
+
onSetClient: (client: UseClientReturnType) => void;
|
|
12
|
+
onSetConnect: (connect: () => void) => void;
|
|
13
|
+
onSetWalletClient: (walletClient: GetWalletClientData<any, any>) => void;
|
|
14
|
+
onAddresses?: (addresses: readonly [Address, ...Address[]] | readonly Address[]) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function Siwe({ onSetOpenAbout, onSetOpenOnboarding, onSetOpenProfile, onSetOpenSIWE, onSetOpenSwitchNetworks, onSetSignOut, onSetClient, onSetWalletClient, onSetConnect, onAddresses, }: SiweProps): null;
|
|
17
|
+
//# sourceMappingURL=siwe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siwe.d.ts","sourceRoot":"","sources":["../src/siwe.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,KAAK,mBAAmB,EAA0C,MAAM,OAAO,CAAC;AAGzF,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,cAAc,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC1D,gBAAgB,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpD,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACnE,uBAAuB,EAAE,CAAC,kBAAkB,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAClE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC5C,iBAAiB,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACzE,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,KAAK,IAAI,CAAC;CAC1F;AAED,wBAAgB,IAAI,CAAC,EACnB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,EAAE,SAAS,QA0BX"}
|
package/types/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B"}
|
package/types/util.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,wBAAsB,QAAQ,CAAC,eAAe,EAAE,MAAM,mBASrD;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAanF"}
|
package/dist/cjs/base64.spec.cjs
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
var import_vitest = require("vitest");
|
|
2
|
-
var import_base64 = require("./base64.cjs");
|
|
3
|
-
(0, import_vitest.describe)("encodeBase64", () => {
|
|
4
|
-
(0, import_vitest.afterEach)(() => {
|
|
5
|
-
import_vitest.vi.restoreAllMocks();
|
|
6
|
-
});
|
|
7
|
-
(0, import_vitest.it)("encodes an empty string", () => {
|
|
8
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("")).toBe("");
|
|
9
|
-
});
|
|
10
|
-
(0, import_vitest.it)("encodes a simple ASCII string", () => {
|
|
11
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("Hello")).toBe("SGVsbG8=");
|
|
12
|
-
});
|
|
13
|
-
(0, import_vitest.it)("encodes 'Hello, World!'", () => {
|
|
14
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("Hello, World!")).toBe("SGVsbG8sIFdvcmxkIQ==");
|
|
15
|
-
});
|
|
16
|
-
(0, import_vitest.it)("encodes a single character", () => {
|
|
17
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("A")).toBe("QQ==");
|
|
18
|
-
});
|
|
19
|
-
(0, import_vitest.it)("encodes two characters (padding = 1)", () => {
|
|
20
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("AB")).toBe("QUI=");
|
|
21
|
-
});
|
|
22
|
-
(0, import_vitest.it)("encodes three characters (no padding)", () => {
|
|
23
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("ABC")).toBe("QUJD");
|
|
24
|
-
});
|
|
25
|
-
(0, import_vitest.it)("encodes strings with special characters", () => {
|
|
26
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("foo:bar")).toBe("Zm9vOmJhcg==");
|
|
27
|
-
});
|
|
28
|
-
(0, import_vitest.it)("encodes strings with numbers", () => {
|
|
29
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("12345")).toBe("MTIzNDU=");
|
|
30
|
-
});
|
|
31
|
-
(0, import_vitest.it)("produces output matching btoa for ASCII input", () => {
|
|
32
|
-
const inputs = ["test", "a", "ab", "abc", "abcd", "Hello, World!", "base64 encoding test"];
|
|
33
|
-
for (const input of inputs) {
|
|
34
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)(input)).toBe(btoa(input));
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
(0, import_vitest.it)("falls back to manual encoding when btoa is unavailable", () => {
|
|
38
|
-
const originalBtoa = globalThis.btoa;
|
|
39
|
-
import_vitest.vi.spyOn(globalThis, "btoa").mockImplementation(() => {
|
|
40
|
-
throw new Error("btoa not available");
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
43
|
-
value: void 0,
|
|
44
|
-
configurable: true
|
|
45
|
-
});
|
|
46
|
-
try {
|
|
47
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("Hello")).toBe("SGVsbG8=");
|
|
48
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("ABC")).toBe("QUJD");
|
|
49
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("")).toBe("");
|
|
50
|
-
} finally {
|
|
51
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
52
|
-
value: originalBtoa,
|
|
53
|
-
configurable: true
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
});
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var import_vitest = require("vitest");
|
|
4
|
-
var import_base64 = require("./base64.native.js");
|
|
5
|
-
(0, import_vitest.describe)("encodeBase64", function () {
|
|
6
|
-
(0, import_vitest.afterEach)(function () {
|
|
7
|
-
import_vitest.vi.restoreAllMocks();
|
|
8
|
-
});
|
|
9
|
-
(0, import_vitest.it)("encodes an empty string", function () {
|
|
10
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("")).toBe("");
|
|
11
|
-
});
|
|
12
|
-
(0, import_vitest.it)("encodes a simple ASCII string", function () {
|
|
13
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("Hello")).toBe("SGVsbG8=");
|
|
14
|
-
});
|
|
15
|
-
(0, import_vitest.it)("encodes 'Hello, World!'", function () {
|
|
16
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("Hello, World!")).toBe("SGVsbG8sIFdvcmxkIQ==");
|
|
17
|
-
});
|
|
18
|
-
(0, import_vitest.it)("encodes a single character", function () {
|
|
19
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("A")).toBe("QQ==");
|
|
20
|
-
});
|
|
21
|
-
(0, import_vitest.it)("encodes two characters (padding = 1)", function () {
|
|
22
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("AB")).toBe("QUI=");
|
|
23
|
-
});
|
|
24
|
-
(0, import_vitest.it)("encodes three characters (no padding)", function () {
|
|
25
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("ABC")).toBe("QUJD");
|
|
26
|
-
});
|
|
27
|
-
(0, import_vitest.it)("encodes strings with special characters", function () {
|
|
28
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("foo:bar")).toBe("Zm9vOmJhcg==");
|
|
29
|
-
});
|
|
30
|
-
(0, import_vitest.it)("encodes strings with numbers", function () {
|
|
31
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("12345")).toBe("MTIzNDU=");
|
|
32
|
-
});
|
|
33
|
-
(0, import_vitest.it)("produces output matching btoa for ASCII input", function () {
|
|
34
|
-
var inputs = ["test", "a", "ab", "abc", "abcd", "Hello, World!", "base64 encoding test"];
|
|
35
|
-
var _iteratorNormalCompletion = true,
|
|
36
|
-
_didIteratorError = false,
|
|
37
|
-
_iteratorError = void 0;
|
|
38
|
-
try {
|
|
39
|
-
for (var _iterator = inputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
40
|
-
var input = _step.value;
|
|
41
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)(input)).toBe(btoa(input));
|
|
42
|
-
}
|
|
43
|
-
} catch (err) {
|
|
44
|
-
_didIteratorError = true;
|
|
45
|
-
_iteratorError = err;
|
|
46
|
-
} finally {
|
|
47
|
-
try {
|
|
48
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
49
|
-
_iterator.return();
|
|
50
|
-
}
|
|
51
|
-
} finally {
|
|
52
|
-
if (_didIteratorError) {
|
|
53
|
-
throw _iteratorError;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
(0, import_vitest.it)("falls back to manual encoding when btoa is unavailable", function () {
|
|
59
|
-
var originalBtoa = globalThis.btoa;
|
|
60
|
-
import_vitest.vi.spyOn(globalThis, "btoa").mockImplementation(function () {
|
|
61
|
-
throw new Error("btoa not available");
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
64
|
-
value: void 0,
|
|
65
|
-
configurable: true
|
|
66
|
-
});
|
|
67
|
-
try {
|
|
68
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("Hello")).toBe("SGVsbG8=");
|
|
69
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("ABC")).toBe("QUJD");
|
|
70
|
-
(0, import_vitest.expect)((0, import_base64.encodeBase64)("")).toBe("");
|
|
71
|
-
} finally {
|
|
72
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
73
|
-
value: originalBtoa,
|
|
74
|
-
configurable: true
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
//# sourceMappingURL=base64.spec.native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["import_vitest","require","import_base64","describe","afterEach","vi","restoreAllMocks","it","expect","encodeBase64","toBe","inputs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","input","value","btoa","err"],"sources":["../../src/base64.spec.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,aAAA,GAA6BC,OAAA;AAAA,IAE7BC,aAAA,GAAAD,OAAA,CAAS;AACP,IAAAD,aAAA,CAAAG,QAAA,gBAAgB;EACd,IAAAH,aAAA,CAAAI,SAAG,cAAgB;IACpBJ,aAAA,CAAAK,EAAA,CAAAC,eAAA;EAED;EACE,IAAAN,aAAA,CAAAO,EAAA,2BAAO,cAAa;IACrB,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,OAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,iCAAO,cAAa;IACrB,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,YAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,2BAAO,cAAa;IACrB,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,oBAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,8BAAO,cAAgB;IACxB,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,QAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,wCAAoB,cAAY;IACjC,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,SAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,yCAAoB,cAAa;IAClC,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,UAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,2CAAoB,cAAY;IACjC,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,cAAAC,IAAA;EAED;EACE,IAAAV,aAAA,CAAAO,EAAA,gCAAO,cAAa;IACrB,IAAAP,aAAA,CAAAQ,MAAA,MAAAN,aAAA,CAAAO,YAAA,YAAAC,IAAA;EAED;EACE,IAAAV,aAAe,CAACO,EAAA,iDAAmD;IACnE,IAAAI,MAAA,GAAW,CACT,QACF,KACD,MAED,OACE,MAAM,EACN,eAAG,EACD,sBAAgB,CACjB;IAGD,IAAAC,yBAAsB,OAAY;MAAAC,iBAAiB,QAAW;MAAAC,cAAoB;IAElF,IAAI;MACF,SAAAC,SAAA,GAAAJ,MAAA,CAAAK,MAAO,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAA4B,GAAU,CAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;QAC7C,IAAAS,KAAA,GAAAH,KAAA,CAAAI,KAAA;QACA,IAAAtB,aAAA,CAAAQ,MAAA,IAAO,EAAAN,aAAA,CAAAO,YAAa,EAAEY,KAAG,GAAKX,IAAE,CAAAa,IAAA,CAAAF,KAAA;MAClC;IACE,SAAOG,GAAA;MACTX,iBAAA;MACDC,cAAA,GAAAU,GAAA;IACF","ignoreList":[]}
|
package/dist/cjs/util.spec.cjs
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
var import_vitest = require("vitest");
|
|
2
|
-
var import_util = require("./util.cjs");
|
|
3
|
-
(0, import_vitest.describe)("getNonce", () => {
|
|
4
|
-
(0, import_vitest.beforeEach)(() => {
|
|
5
|
-
import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn().mockResolvedValue({
|
|
6
|
-
ok: true,
|
|
7
|
-
text: () => Promise.resolve("abc123nonce")
|
|
8
|
-
}));
|
|
9
|
-
});
|
|
10
|
-
(0, import_vitest.afterEach)(() => {
|
|
11
|
-
import_vitest.vi.restoreAllMocks();
|
|
12
|
-
});
|
|
13
|
-
(0, import_vitest.it)("fetches nonce from the keycloak SIWE URL", async () => {
|
|
14
|
-
const nonce = await (0, import_util.getNonce)("https://auth.example.com/siwe");
|
|
15
|
-
(0, import_vitest.expect)(fetch).toHaveBeenCalledWith("https://auth.example.com/siwe/nonce", {
|
|
16
|
-
credentials: "include"
|
|
17
|
-
});
|
|
18
|
-
(0, import_vitest.expect)(nonce).toBe("abc123nonce");
|
|
19
|
-
});
|
|
20
|
-
(0, import_vitest.it)("throws when response is not ok", async () => {
|
|
21
|
-
import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn().mockResolvedValue({
|
|
22
|
-
ok: false,
|
|
23
|
-
text: () => Promise.resolve("")
|
|
24
|
-
}));
|
|
25
|
-
await (0, import_vitest.expect)((0, import_util.getNonce)("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
26
|
-
});
|
|
27
|
-
(0, import_vitest.it)("throws when response body is empty", async () => {
|
|
28
|
-
import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn().mockResolvedValue({
|
|
29
|
-
ok: true,
|
|
30
|
-
text: () => Promise.resolve("")
|
|
31
|
-
}));
|
|
32
|
-
await (0, import_vitest.expect)((0, import_util.getNonce)("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
(0, import_vitest.describe)("createMessage", () => {
|
|
36
|
-
(0, import_vitest.it)("throws when window is undefined (non-browser)", async () => {
|
|
37
|
-
const origWindow = globalThis.window;
|
|
38
|
-
delete globalThis.window;
|
|
39
|
-
try {
|
|
40
|
-
await (0, import_vitest.expect)((0, import_util.createMessage)("nonce123", "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", 1)).rejects.toThrow("createMessage requires browser context");
|
|
41
|
-
} finally {
|
|
42
|
-
globalThis.window = origWindow;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
(0, import_vitest.it)("creates a SIWE message using browser location", async () => {
|
|
46
|
-
const addr = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
|
|
47
|
-
const message = await (0, import_util.createMessage)("nonce123", addr, 1);
|
|
48
|
-
(0, import_vitest.expect)(message).toContain("Sign in With Ethereum.");
|
|
49
|
-
(0, import_vitest.expect)(message).toContain("nonce123");
|
|
50
|
-
(0, import_vitest.expect)(message).toContain(addr);
|
|
51
|
-
(0, import_vitest.expect)(message).toContain("Chain ID: 1");
|
|
52
|
-
});
|
|
53
|
-
});
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var import_vitest = require("vitest");
|
|
4
|
-
var import_util = require("./util.native.js");
|
|
5
|
-
(0, import_vitest.describe)("getNonce", function () {
|
|
6
|
-
(0, import_vitest.beforeEach)(function () {
|
|
7
|
-
import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn().mockResolvedValue({
|
|
8
|
-
ok: true,
|
|
9
|
-
text: function text() {
|
|
10
|
-
return Promise.resolve("abc123nonce");
|
|
11
|
-
}
|
|
12
|
-
}));
|
|
13
|
-
});
|
|
14
|
-
(0, import_vitest.afterEach)(function () {
|
|
15
|
-
import_vitest.vi.restoreAllMocks();
|
|
16
|
-
});
|
|
17
|
-
(0, import_vitest.it)("fetches nonce from the keycloak SIWE URL", async function () {
|
|
18
|
-
var nonce = await (0, import_util.getNonce)("https://auth.example.com/siwe");
|
|
19
|
-
(0, import_vitest.expect)(fetch).toHaveBeenCalledWith("https://auth.example.com/siwe/nonce", {
|
|
20
|
-
credentials: "include"
|
|
21
|
-
});
|
|
22
|
-
(0, import_vitest.expect)(nonce).toBe("abc123nonce");
|
|
23
|
-
});
|
|
24
|
-
(0, import_vitest.it)("throws when response is not ok", async function () {
|
|
25
|
-
import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn().mockResolvedValue({
|
|
26
|
-
ok: false,
|
|
27
|
-
text: function text() {
|
|
28
|
-
return Promise.resolve("");
|
|
29
|
-
}
|
|
30
|
-
}));
|
|
31
|
-
await (0, import_vitest.expect)((0, import_util.getNonce)("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
32
|
-
});
|
|
33
|
-
(0, import_vitest.it)("throws when response body is empty", async function () {
|
|
34
|
-
import_vitest.vi.stubGlobal("fetch", import_vitest.vi.fn().mockResolvedValue({
|
|
35
|
-
ok: true,
|
|
36
|
-
text: function text() {
|
|
37
|
-
return Promise.resolve("");
|
|
38
|
-
}
|
|
39
|
-
}));
|
|
40
|
-
await (0, import_vitest.expect)((0, import_util.getNonce)("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
(0, import_vitest.describe)("createMessage", function () {
|
|
44
|
-
(0, import_vitest.it)("throws when window is undefined (non-browser)", async function () {
|
|
45
|
-
var origWindow = globalThis.window;
|
|
46
|
-
delete globalThis.window;
|
|
47
|
-
try {
|
|
48
|
-
await (0, import_vitest.expect)((0, import_util.createMessage)("nonce123", "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", 1)).rejects.toThrow("createMessage requires browser context");
|
|
49
|
-
} finally {
|
|
50
|
-
globalThis.window = origWindow;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
(0, import_vitest.it)("creates a SIWE message using browser location", async function () {
|
|
54
|
-
var addr = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
|
|
55
|
-
var message = await (0, import_util.createMessage)("nonce123", addr, 1);
|
|
56
|
-
(0, import_vitest.expect)(message).toContain("Sign in With Ethereum.");
|
|
57
|
-
(0, import_vitest.expect)(message).toContain("nonce123");
|
|
58
|
-
(0, import_vitest.expect)(message).toContain(addr);
|
|
59
|
-
(0, import_vitest.expect)(message).toContain("Chain ID: 1");
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
//# sourceMappingURL=util.spec.native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["import_vitest","require","import_util","describe","beforeEach","vi","stubGlobal","fn","mockResolvedValue","ok","text","Promise","resolve","afterEach","restoreAllMocks","it","nonce","getNonce","expect","fetch","toHaveBeenCalledWith","credentials","toBe","rejects","toThrow","origWindow","globalThis","window","createMessage","addr","message","toContain"],"sources":["../../src/util.spec.ts"],"sourcesContent":[null],"mappings":"AAAA;;AACA,IAAAA,aAAA,GAAwCC,OAAA;AAAA,IAExCC,WAAA,GAAAD,OAAA,mBAAS;AACP,IAAAD,aAAA,CAAAG,QAAA,YAAiB;EACf,IAAAH,aAAA,CAAAI,UAAG;IAAAJ,aACD,CAAAK,EAAA,CAAAC,UAAA,UAAAN,aAAA,CAAAK,EAAA,CAAAE,EAAA,GAAAC,iBAAA;MACAC,EAAA;MAA0BC,IACxB,EAAI,SAAAA,KAAA;QACJ,OAAMC,OAAM,CAAAC,OAAQ,cAAQ;MAC9B;IACF;EACF,CAAC;EAED,IAAAZ,aAAA,CAAAa,SAAA,EAAU,YAAM;IACdb,aAAA,CAAAK,EAAA,CAAGS,eAAA,CAAgB;EACrB,CAAC;EAED,IAAAd,aAAA,CAAAe,EAAA,EAAG,4CAA4C,kBAAY;IACzD,IAAAC,KAAM,SAAQ,IAAAd,WAAM,CAAAe,QAAA,iCAAS;IAC7B,IAAAjB,aAAA,CAAAkB,MAAA,EAAOC,KAAK,EAAEC,oBAAA,CAAqB,uCAAuC;MACxEC,WAAA,EAAa;IACf,CAAC;IACD,IAAArB,aAAA,CAAAkB,MAAA,EAAOF,KAAK,EAAEM,IAAA,CAAK,aAAa;EAClC,CAAC;EAED,IAAAtB,aAAA,CAAAe,EAAA,EAAG,kCAAkC,kBAAY;IAC/Cf,aAAA,CAAAK,EAAA,CAAGC,UAAA,UAAAN,aAAA,CAAAK,EAAA,CAAAE,EAAA,GAAAC,iBAAA;MACDC,EAAA;MACAC,IAAA,WAAAA,IAAGA,CAAA,EAAK;QACN,OAAIC,OAAA,CAAAC,OAAA;MAAA;IAC0B,EAChC,CAAC;IACH,UAAAZ,aAAA,CAAAkB,MAAA,MAAAhB,WAAA,CAAAe,QAAA,oCAAAM,OAAA,CAAAC,OAAA;EACA;EACF,CAAC,GAAAxB,aAAA,CAAAe,EAAA;IAEDf,aAAA,CAAAK,EAAA,CAAAC,UAAG,UAAAN,aAAA,CAAAK,EAAA,CAAAE,EAAA,EAAsC,CAAAC,iBAAY;MACnDC,EAAA;MACEC,IAAA,WAAAA,KAAA;QACA,OAAAC,OAAA,CAAGC,OAAK;MAAkB;IACpB;IAC0B,MAC/B,IAAAZ,aAAA,CAAAkB,MAAA,MAAAhB,WAAA,CAAAe,QAAA,oCAAAM,OAAA,CAAAC,OAAA;EAAA,EACH;AACA;AAA6F,EAC/F,EAACxB,aAAA,CAAAG,QAAA;EACF,IAAAH,aAAA,CAAAe,EAAA;IAED,IAAAU,UAAA,GAAAC,UAAS,CAAAC,MAAA;IACP,OAAAD,UAAA,CAAAC,MAAG;IACD;MAEA,MAAO,IAAA3B,aAAW,CAAAkB,MAAA,MAAAhB,WAAA,CAAA0B,aAAA,gEAAAL,OAAA,CAAAC,OAAA;IAClB,UAAI;MACFE,UAAM,CAAAC,MAAA,GAAAF,UAAA;IAAA;EACqE;EACjB,EAC5D,EAAAzB,aAAE,CAAAe,EAAA;IACA,IAAAc,IAAA,+CAAoB;IACtB,IAAAC,OAAA,aAAA5B,WAAA,CAAA0B,aAAA,cAAAC,IAAA;IACD,IAAA7B,aAAA,CAAAkB,MAAA,EAAAY,OAAA,EAAAC,SAAA;IAED,IAAA/B,aAAA,CAAAkB,MAAG,EAAAY,OAAA,EAAAC,SAAA;IACD,IAAA/B,aAAa,CAAAkB,MAAA,EAAAY,OAAA,EAAAC,SAAA,CAAAF,IAAA;IACb,IAAA7B,aAAgB,CAAAkB,MAAA,EAAMY,OAAA,EAAAC,SAAA,cAAc;EACpC;AACA","ignoreList":[]}
|
package/dist/esm/base64.spec.mjs
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, afterEach } from "vitest";
|
|
2
|
-
import { encodeBase64 } from "./base64.mjs";
|
|
3
|
-
describe("encodeBase64", () => {
|
|
4
|
-
afterEach(() => {
|
|
5
|
-
vi.restoreAllMocks();
|
|
6
|
-
});
|
|
7
|
-
it("encodes an empty string", () => {
|
|
8
|
-
expect(encodeBase64("")).toBe("");
|
|
9
|
-
});
|
|
10
|
-
it("encodes a simple ASCII string", () => {
|
|
11
|
-
expect(encodeBase64("Hello")).toBe("SGVsbG8=");
|
|
12
|
-
});
|
|
13
|
-
it("encodes 'Hello, World!'", () => {
|
|
14
|
-
expect(encodeBase64("Hello, World!")).toBe("SGVsbG8sIFdvcmxkIQ==");
|
|
15
|
-
});
|
|
16
|
-
it("encodes a single character", () => {
|
|
17
|
-
expect(encodeBase64("A")).toBe("QQ==");
|
|
18
|
-
});
|
|
19
|
-
it("encodes two characters (padding = 1)", () => {
|
|
20
|
-
expect(encodeBase64("AB")).toBe("QUI=");
|
|
21
|
-
});
|
|
22
|
-
it("encodes three characters (no padding)", () => {
|
|
23
|
-
expect(encodeBase64("ABC")).toBe("QUJD");
|
|
24
|
-
});
|
|
25
|
-
it("encodes strings with special characters", () => {
|
|
26
|
-
expect(encodeBase64("foo:bar")).toBe("Zm9vOmJhcg==");
|
|
27
|
-
});
|
|
28
|
-
it("encodes strings with numbers", () => {
|
|
29
|
-
expect(encodeBase64("12345")).toBe("MTIzNDU=");
|
|
30
|
-
});
|
|
31
|
-
it("produces output matching btoa for ASCII input", () => {
|
|
32
|
-
const inputs = ["test", "a", "ab", "abc", "abcd", "Hello, World!", "base64 encoding test"];
|
|
33
|
-
for (const input of inputs) {
|
|
34
|
-
expect(encodeBase64(input)).toBe(btoa(input));
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
it("falls back to manual encoding when btoa is unavailable", () => {
|
|
38
|
-
const originalBtoa = globalThis.btoa;
|
|
39
|
-
vi.spyOn(globalThis, "btoa").mockImplementation(() => {
|
|
40
|
-
throw new Error("btoa not available");
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
43
|
-
value: void 0,
|
|
44
|
-
configurable: true
|
|
45
|
-
});
|
|
46
|
-
try {
|
|
47
|
-
expect(encodeBase64("Hello")).toBe("SGVsbG8=");
|
|
48
|
-
expect(encodeBase64("ABC")).toBe("QUJD");
|
|
49
|
-
expect(encodeBase64("")).toBe("");
|
|
50
|
-
} finally {
|
|
51
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
52
|
-
value: originalBtoa,
|
|
53
|
-
configurable: true
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=base64.spec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","vi","afterEach","encodeBase64","restoreAllMocks","toBe","inputs","input","btoa","originalBtoa","globalThis","spyOn","mockImplementation","Error","Object","defineProperty","value","configurable"],"sources":["../../src/base64.spec.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,EAAIC,SAAA,QAAiB;AACpD,SAASC,YAAA,QAAoB;AAE7BL,QAAA,CAAS,gBAAgB,MAAM;EAC7BI,SAAA,CAAU,MAAM;IACdD,EAAA,CAAGG,eAAA,CAAgB;EACrB,CAAC;EAEDJ,EAAA,CAAG,2BAA2B,MAAM;IAClCD,MAAA,CAAOI,YAAA,CAAa,EAAE,CAAC,EAAEE,IAAA,CAAK,EAAE;EAClC,CAAC;EAEDL,EAAA,CAAG,iCAAiC,MAAM;IACxCD,MAAA,CAAOI,YAAA,CAAa,OAAO,CAAC,EAAEE,IAAA,CAAK,UAAU;EAC/C,CAAC;EAEDL,EAAA,CAAG,2BAA2B,MAAM;IAClCD,MAAA,CAAOI,YAAA,CAAa,eAAe,CAAC,EAAEE,IAAA,CAAK,sBAAsB;EACnE,CAAC;EAEDL,EAAA,CAAG,8BAA8B,MAAM;IACrCD,MAAA,CAAOI,YAAA,CAAa,GAAG,CAAC,EAAEE,IAAA,CAAK,MAAM;EACvC,CAAC;EAEDL,EAAA,CAAG,wCAAwC,MAAM;IAC/CD,MAAA,CAAOI,YAAA,CAAa,IAAI,CAAC,EAAEE,IAAA,CAAK,MAAM;EACxC,CAAC;EAEDL,EAAA,CAAG,yCAAyC,MAAM;IAChDD,MAAA,CAAOI,YAAA,CAAa,KAAK,CAAC,EAAEE,IAAA,CAAK,MAAM;EACzC,CAAC;EAEDL,EAAA,CAAG,2CAA2C,MAAM;IAClDD,MAAA,CAAOI,YAAA,CAAa,SAAS,CAAC,EAAEE,IAAA,CAAK,cAAc;EACrD,CAAC;EAEDL,EAAA,CAAG,gCAAgC,MAAM;IACvCD,MAAA,CAAOI,YAAA,CAAa,OAAO,CAAC,EAAEE,IAAA,CAAK,UAAU;EAC/C,CAAC;EAEDL,EAAA,CAAG,iDAAiD,MAAM;IACxD,MAAMM,MAAA,GAAS,CAAC,QAAQ,KAAK,MAAM,OAAO,QAAQ,iBAAiB,sBAAsB;IACzF,WAAWC,KAAA,IAASD,MAAA,EAAQ;MAC1BP,MAAA,CAAOI,YAAA,CAAaI,KAAK,CAAC,EAAEF,IAAA,CAAKG,IAAA,CAAKD,KAAK,CAAC;IAC9C;EACF,CAAC;EAEDP,EAAA,CAAG,0DAA0D,MAAM;IACjE,MAAMS,YAAA,GAAeC,UAAA,CAAWF,IAAA;IAChCP,EAAA,CAAGU,KAAA,CAAMD,UAAA,EAAY,MAAM,EAAEE,kBAAA,CAAmB,MAAM;MACpD,MAAM,IAAIC,KAAA,CAAM,oBAAoB;IACtC,CAAC;IAGDC,MAAA,CAAOC,cAAA,CAAeL,UAAA,EAAY,QAAQ;MAAEM,KAAA,EAAO;MAAWC,YAAA,EAAc;IAAK,CAAC;IAElF,IAAI;MACFlB,MAAA,CAAOI,YAAA,CAAa,OAAO,CAAC,EAAEE,IAAA,CAAK,UAAU;MAC7CN,MAAA,CAAOI,YAAA,CAAa,KAAK,CAAC,EAAEE,IAAA,CAAK,MAAM;MACvCN,MAAA,CAAOI,YAAA,CAAa,EAAE,CAAC,EAAEE,IAAA,CAAK,EAAE;IAClC,UAAE;MACAS,MAAA,CAAOC,cAAA,CAAeL,UAAA,EAAY,QAAQ;QAAEM,KAAA,EAAOP,YAAA;QAAcQ,YAAA,EAAc;MAAK,CAAC;IACvF;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, afterEach } from "vitest";
|
|
2
|
-
import { encodeBase64 } from "./base64.native.js";
|
|
3
|
-
describe("encodeBase64", function () {
|
|
4
|
-
afterEach(function () {
|
|
5
|
-
vi.restoreAllMocks();
|
|
6
|
-
});
|
|
7
|
-
it("encodes an empty string", function () {
|
|
8
|
-
expect(encodeBase64("")).toBe("");
|
|
9
|
-
});
|
|
10
|
-
it("encodes a simple ASCII string", function () {
|
|
11
|
-
expect(encodeBase64("Hello")).toBe("SGVsbG8=");
|
|
12
|
-
});
|
|
13
|
-
it("encodes 'Hello, World!'", function () {
|
|
14
|
-
expect(encodeBase64("Hello, World!")).toBe("SGVsbG8sIFdvcmxkIQ==");
|
|
15
|
-
});
|
|
16
|
-
it("encodes a single character", function () {
|
|
17
|
-
expect(encodeBase64("A")).toBe("QQ==");
|
|
18
|
-
});
|
|
19
|
-
it("encodes two characters (padding = 1)", function () {
|
|
20
|
-
expect(encodeBase64("AB")).toBe("QUI=");
|
|
21
|
-
});
|
|
22
|
-
it("encodes three characters (no padding)", function () {
|
|
23
|
-
expect(encodeBase64("ABC")).toBe("QUJD");
|
|
24
|
-
});
|
|
25
|
-
it("encodes strings with special characters", function () {
|
|
26
|
-
expect(encodeBase64("foo:bar")).toBe("Zm9vOmJhcg==");
|
|
27
|
-
});
|
|
28
|
-
it("encodes strings with numbers", function () {
|
|
29
|
-
expect(encodeBase64("12345")).toBe("MTIzNDU=");
|
|
30
|
-
});
|
|
31
|
-
it("produces output matching btoa for ASCII input", function () {
|
|
32
|
-
var inputs = ["test", "a", "ab", "abc", "abcd", "Hello, World!", "base64 encoding test"];
|
|
33
|
-
var _iteratorNormalCompletion = true,
|
|
34
|
-
_didIteratorError = false,
|
|
35
|
-
_iteratorError = void 0;
|
|
36
|
-
try {
|
|
37
|
-
for (var _iterator = inputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
38
|
-
var input = _step.value;
|
|
39
|
-
expect(encodeBase64(input)).toBe(btoa(input));
|
|
40
|
-
}
|
|
41
|
-
} catch (err) {
|
|
42
|
-
_didIteratorError = true;
|
|
43
|
-
_iteratorError = err;
|
|
44
|
-
} finally {
|
|
45
|
-
try {
|
|
46
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
47
|
-
_iterator.return();
|
|
48
|
-
}
|
|
49
|
-
} finally {
|
|
50
|
-
if (_didIteratorError) {
|
|
51
|
-
throw _iteratorError;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
it("falls back to manual encoding when btoa is unavailable", function () {
|
|
57
|
-
var originalBtoa = globalThis.btoa;
|
|
58
|
-
vi.spyOn(globalThis, "btoa").mockImplementation(function () {
|
|
59
|
-
throw new Error("btoa not available");
|
|
60
|
-
});
|
|
61
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
62
|
-
value: void 0,
|
|
63
|
-
configurable: true
|
|
64
|
-
});
|
|
65
|
-
try {
|
|
66
|
-
expect(encodeBase64("Hello")).toBe("SGVsbG8=");
|
|
67
|
-
expect(encodeBase64("ABC")).toBe("QUJD");
|
|
68
|
-
expect(encodeBase64("")).toBe("");
|
|
69
|
-
} finally {
|
|
70
|
-
Object.defineProperty(globalThis, "btoa", {
|
|
71
|
-
value: originalBtoa,
|
|
72
|
-
configurable: true
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
//# sourceMappingURL=base64.spec.native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","vi","afterEach","encodeBase64","restoreAllMocks","toBe","inputs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","input","value","btoa","err"],"sources":["../../src/base64.spec.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,EAAIC,SAAA,QAAiB;AACpD,SAASC,YAAA,QAAoB;AAE7BL,QAAA,CAAS,gBAAgB,YAAM;EAC7BI,SAAA,CAAU,YAAM;IACdD,EAAA,CAAGG,eAAA,CAAgB;EACrB,CAAC;EAEDJ,EAAA,CAAG,2BAA2B,YAAM;IAClCD,MAAA,CAAOI,YAAA,CAAa,EAAE,CAAC,EAAEE,IAAA,CAAK,EAAE;EAClC,CAAC;EAEDL,EAAA,CAAG,iCAAiC,YAAM;IACxCD,MAAA,CAAOI,YAAA,CAAa,OAAO,CAAC,EAAEE,IAAA,CAAK,UAAU;EAC/C,CAAC;EAEDL,EAAA,CAAG,2BAA2B,YAAM;IAClCD,MAAA,CAAOI,YAAA,CAAa,eAAe,CAAC,EAAEE,IAAA,CAAK,sBAAsB;EACnE,CAAC;EAEDL,EAAA,CAAG,8BAA8B,YAAM;IACrCD,MAAA,CAAOI,YAAA,CAAa,GAAG,CAAC,EAAEE,IAAA,CAAK,MAAM;EACvC,CAAC;EAEDL,EAAA,CAAG,wCAAwC,YAAM;IAC/CD,MAAA,CAAOI,YAAA,CAAa,IAAI,CAAC,EAAEE,IAAA,CAAK,MAAM;EACxC,CAAC;EAEDL,EAAA,CAAG,yCAAyC,YAAM;IAChDD,MAAA,CAAOI,YAAA,CAAa,KAAK,CAAC,EAAEE,IAAA,CAAK,MAAM;EACzC,CAAC;EAEDL,EAAA,CAAG,2CAA2C,YAAM;IAClDD,MAAA,CAAOI,YAAA,CAAa,SAAS,CAAC,EAAEE,IAAA,CAAK,cAAc;EACrD,CAAC;EAEDL,EAAA,CAAG,gCAAgC,YAAM;IACvCD,MAAA,CAAOI,YAAA,CAAa,OAAO,CAAC,EAAEE,IAAA,CAAK,UAAU;EAC/C,CAAC;EAEDL,EAAA,CAAG,iDAAiD,YAAM;IACxD,IAAAM,MAAM,IACN,QACE,KACF,MACD,OAEE,QACD,eAAM,EACN,sBAAqB,CACnB;IACF,IAACC,yBAAA;MAAAC,iBAAA;MAAAC,cAAA;IAGD;MAEA,KAAI,IAAAC,SAAA,GAAAJ,MAAA,CAAAK,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;QACF,IAAAS,KAAO,GAAAH,KAAA,CAAaI,KAAA;QACpBlB,MAAO,CAAAI,YAAa,CAAAa,KAAM,CAAE,EAAAX,IAAK,CAAAa,IAAM,CAAAF,KAAA;MACvC;IACF,SAAAG,GAAE;MACAX,iBAAO,OAAe;MACxBC,cAAA,GAAAU,GAAA;IACD;MACF","ignoreList":[]}
|
package/dist/esm/util.spec.mjs
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { getNonce, createMessage } from "./util.mjs";
|
|
3
|
-
describe("getNonce", () => {
|
|
4
|
-
beforeEach(() => {
|
|
5
|
-
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
|
|
6
|
-
ok: true,
|
|
7
|
-
text: () => Promise.resolve("abc123nonce")
|
|
8
|
-
}));
|
|
9
|
-
});
|
|
10
|
-
afterEach(() => {
|
|
11
|
-
vi.restoreAllMocks();
|
|
12
|
-
});
|
|
13
|
-
it("fetches nonce from the keycloak SIWE URL", async () => {
|
|
14
|
-
const nonce = await getNonce("https://auth.example.com/siwe");
|
|
15
|
-
expect(fetch).toHaveBeenCalledWith("https://auth.example.com/siwe/nonce", {
|
|
16
|
-
credentials: "include"
|
|
17
|
-
});
|
|
18
|
-
expect(nonce).toBe("abc123nonce");
|
|
19
|
-
});
|
|
20
|
-
it("throws when response is not ok", async () => {
|
|
21
|
-
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
|
|
22
|
-
ok: false,
|
|
23
|
-
text: () => Promise.resolve("")
|
|
24
|
-
}));
|
|
25
|
-
await expect(getNonce("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
26
|
-
});
|
|
27
|
-
it("throws when response body is empty", async () => {
|
|
28
|
-
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
|
|
29
|
-
ok: true,
|
|
30
|
-
text: () => Promise.resolve("")
|
|
31
|
-
}));
|
|
32
|
-
await expect(getNonce("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
describe("createMessage", () => {
|
|
36
|
-
it("throws when window is undefined (non-browser)", async () => {
|
|
37
|
-
const origWindow = globalThis.window;
|
|
38
|
-
delete globalThis.window;
|
|
39
|
-
try {
|
|
40
|
-
await expect(createMessage("nonce123", "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", 1)).rejects.toThrow("createMessage requires browser context");
|
|
41
|
-
} finally {
|
|
42
|
-
globalThis.window = origWindow;
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
it("creates a SIWE message using browser location", async () => {
|
|
46
|
-
const addr = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
|
|
47
|
-
const message = await createMessage("nonce123", addr, 1);
|
|
48
|
-
expect(message).toContain("Sign in With Ethereum.");
|
|
49
|
-
expect(message).toContain("nonce123");
|
|
50
|
-
expect(message).toContain(addr);
|
|
51
|
-
expect(message).toContain("Chain ID: 1");
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=util.spec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","vi","beforeEach","afterEach","getNonce","createMessage","stubGlobal","fn","mockResolvedValue","ok","text","Promise","resolve","restoreAllMocks","nonce","fetch","toHaveBeenCalledWith","credentials","toBe","rejects","toThrow","origWindow","globalThis","window","addr","message","toContain"],"sources":["../../src/util.spec.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,EAAIC,UAAA,EAAYC,SAAA,QAAiB;AAChE,SAASC,QAAA,EAAUC,aAAA,QAAqB;AAExCP,QAAA,CAAS,YAAY,MAAM;EACzBI,UAAA,CAAW,MAAM;IACfD,EAAA,CAAGK,UAAA,CACD,SACAL,EAAA,CAAGM,EAAA,CAAG,EAAEC,iBAAA,CAAkB;MACxBC,EAAA,EAAI;MACJC,IAAA,EAAMA,CAAA,KAAMC,OAAA,CAAQC,OAAA,CAAQ,aAAa;IAC3C,CAAC,CACH;EACF,CAAC;EAEDT,SAAA,CAAU,MAAM;IACdF,EAAA,CAAGY,eAAA,CAAgB;EACrB,CAAC;EAEDb,EAAA,CAAG,4CAA4C,YAAY;IACzD,MAAMc,KAAA,GAAQ,MAAMV,QAAA,CAAS,+BAA+B;IAC5DL,MAAA,CAAOgB,KAAK,EAAEC,oBAAA,CAAqB,uCAAuC;MACxEC,WAAA,EAAa;IACf,CAAC;IACDlB,MAAA,CAAOe,KAAK,EAAEI,IAAA,CAAK,aAAa;EAClC,CAAC;EAEDlB,EAAA,CAAG,kCAAkC,YAAY;IAC/CC,EAAA,CAAGK,UAAA,CACD,SACAL,EAAA,CAAGM,EAAA,CAAG,EAAEC,iBAAA,CAAkB;MACxBC,EAAA,EAAI;MACJC,IAAA,EAAMA,CAAA,KAAMC,OAAA,CAAQC,OAAA,CAAQ,EAAE;IAChC,CAAC,CACH;IACA,MAAMb,MAAA,CAAOK,QAAA,CAAS,+BAA+B,CAAC,EAAEe,OAAA,CAAQC,OAAA,CAAQ,qBAAqB;EAC/F,CAAC;EAEDpB,EAAA,CAAG,sCAAsC,YAAY;IACnDC,EAAA,CAAGK,UAAA,CACD,SACAL,EAAA,CAAGM,EAAA,CAAG,EAAEC,iBAAA,CAAkB;MACxBC,EAAA,EAAI;MACJC,IAAA,EAAMA,CAAA,KAAMC,OAAA,CAAQC,OAAA,CAAQ,EAAE;IAChC,CAAC,CACH;IACA,MAAMb,MAAA,CAAOK,QAAA,CAAS,+BAA+B,CAAC,EAAEe,OAAA,CAAQC,OAAA,CAAQ,qBAAqB;EAC/F,CAAC;AACH,CAAC;AAEDtB,QAAA,CAAS,iBAAiB,MAAM;EAC9BE,EAAA,CAAG,iDAAiD,YAAY;IAC9D,MAAMqB,UAAA,GAAaC,UAAA,CAAWC,MAAA;IAE9B,OAAOD,UAAA,CAAWC,MAAA;IAClB,IAAI;MACF,MAAMxB,MAAA,CACJM,aAAA,CAAc,YAAY,8CAA8C,CAAC,CAC3E,EAAEc,OAAA,CAAQC,OAAA,CAAQ,wCAAwC;IAC5D,UAAE;MACAE,UAAA,CAAWC,MAAA,GAASF,UAAA;IACtB;EACF,CAAC;EAEDrB,EAAA,CAAG,iDAAiD,YAAY;IAC9D,MAAMwB,IAAA,GAAO;IACb,MAAMC,OAAA,GAAU,MAAMpB,aAAA,CAAc,YAAYmB,IAAA,EAAM,CAAC;IACvDzB,MAAA,CAAO0B,OAAO,EAAEC,SAAA,CAAU,wBAAwB;IAClD3B,MAAA,CAAO0B,OAAO,EAAEC,SAAA,CAAU,UAAU;IACpC3B,MAAA,CAAO0B,OAAO,EAAEC,SAAA,CAAUF,IAAI;IAC9BzB,MAAA,CAAO0B,OAAO,EAAEC,SAAA,CAAU,aAAa;EACzC,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { getNonce, createMessage } from "./util.native.js";
|
|
3
|
-
describe("getNonce", function () {
|
|
4
|
-
beforeEach(function () {
|
|
5
|
-
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
|
|
6
|
-
ok: true,
|
|
7
|
-
text: function text() {
|
|
8
|
-
return Promise.resolve("abc123nonce");
|
|
9
|
-
}
|
|
10
|
-
}));
|
|
11
|
-
});
|
|
12
|
-
afterEach(function () {
|
|
13
|
-
vi.restoreAllMocks();
|
|
14
|
-
});
|
|
15
|
-
it("fetches nonce from the keycloak SIWE URL", async function () {
|
|
16
|
-
var nonce = await getNonce("https://auth.example.com/siwe");
|
|
17
|
-
expect(fetch).toHaveBeenCalledWith("https://auth.example.com/siwe/nonce", {
|
|
18
|
-
credentials: "include"
|
|
19
|
-
});
|
|
20
|
-
expect(nonce).toBe("abc123nonce");
|
|
21
|
-
});
|
|
22
|
-
it("throws when response is not ok", async function () {
|
|
23
|
-
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
|
|
24
|
-
ok: false,
|
|
25
|
-
text: function text() {
|
|
26
|
-
return Promise.resolve("");
|
|
27
|
-
}
|
|
28
|
-
}));
|
|
29
|
-
await expect(getNonce("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
30
|
-
});
|
|
31
|
-
it("throws when response body is empty", async function () {
|
|
32
|
-
vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
|
|
33
|
-
ok: true,
|
|
34
|
-
text: function text() {
|
|
35
|
-
return Promise.resolve("");
|
|
36
|
-
}
|
|
37
|
-
}));
|
|
38
|
-
await expect(getNonce("https://auth.example.com/siwe")).rejects.toThrow("failed to get nonce");
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
describe("createMessage", function () {
|
|
42
|
-
it("throws when window is undefined (non-browser)", async function () {
|
|
43
|
-
var origWindow = globalThis.window;
|
|
44
|
-
delete globalThis.window;
|
|
45
|
-
try {
|
|
46
|
-
await expect(createMessage("nonce123", "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", 1)).rejects.toThrow("createMessage requires browser context");
|
|
47
|
-
} finally {
|
|
48
|
-
globalThis.window = origWindow;
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
it("creates a SIWE message using browser location", async function () {
|
|
52
|
-
var addr = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
|
|
53
|
-
var message = await createMessage("nonce123", addr, 1);
|
|
54
|
-
expect(message).toContain("Sign in With Ethereum.");
|
|
55
|
-
expect(message).toContain("nonce123");
|
|
56
|
-
expect(message).toContain(addr);
|
|
57
|
-
expect(message).toContain("Chain ID: 1");
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
//# sourceMappingURL=util.spec.native.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["describe","expect","it","vi","beforeEach","afterEach","getNonce","createMessage","stubGlobal","fn","mockResolvedValue","ok","text","Promise","resolve","restoreAllMocks","nonce","fetch","toHaveBeenCalledWith","credentials","toBe","rejects","toThrow","origWindow","globalThis","window","addr","message","toContain"],"sources":["../../src/util.spec.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,EAAIC,UAAA,EAAYC,SAAA,QAAiB;AAChE,SAASC,QAAA,EAAUC,aAAA,QAAqB;AAExCP,QAAA,CAAS,YAAY,YAAM;EACzBI,UAAA,CAAW,YAAM;IACfD,EAAA,CAAGK,UAAA,UAAAL,EAAA,CAAAM,EAAA,GAAAC,iBAAA;MACDC,EAAA;MACAC,IAAG,EAAG,SAAEA,KAAA;QACN,OAAIC,OAAA,CAAAC,OAAA;MAAA;IACqC,EAC3C,CAAC;EAAA,EACH;EACFT,SAAC;IAEDF,EAAA,CAAAY,eAAgB;EACd;EACFb,EAAC;IAED,IAAGc,KAAA,SAAAV,QAAA,gCAAwD;IACzDL,MAAM,CAAAgB,KAAA,EAAQC,oBAAe,sCAA+B;MAC5DC,WAAY,EAAE;IAA4D,EACxE;IACFlB,MAAC,CAAAe,KAAA,EAAAI,IAAA;EACD;EACFlB,EAAC;IAEDC,EAAG,CAAAK,UAAA,UAAAL,EAAA,CAAAM,EAAA,GAAAC,iBAA8C;MAC/CC,EAAG;MACDC,IAAA,WAAAA,KAAA;QACA,OAAQC,OAAA,CAAAC,OAAA,GAAkB;MAAA;IACpB;IAC0B,MAC/Bb,MAAA,CAAAK,QAAA,mCAAAe,OAAA,CAAAC,OAAA;EAAA,EACH;EACApB,EAAA,qCAAsB,oBAAkC;IACzDC,EAAA,CAAAK,UAAA,UAAAL,EAAA,CAAAM,EAAA,GAAAC,iBAAA;MAEEC,EAAA;MACDC,IAAG,WAAAA,KAAA;QACD,OAAAC,OAAA,CAAAC,OAAA;MACA;IAA0B;IACpB,MACJb,MAAM,CAAAK,QAAM,gCAAkB,GAAAe,OAAA,CAAAC,OAAA;EAAA;AAC/B;AAEHtB,QAAA,gBAAa,EAAS;EACxBE,EAAC;IACF,IAAAqB,UAAA,GAAAC,UAAA,CAAAC,MAAA;IAED,OAASD,UAAA,CAAAC,MAAiB;IACxB,IAAG;MACD,MAAMxB,MAAA,CAAAM,aAAa,WAAW,oDAAAc,OAAA,CAAAC,OAAA;IAE9B,UAAO;MACPE,UAAI,CAAAC,MAAA,GAAAF,UAAA;IACF;EAAM;EACqErB,EAAA,gDACzD,oBAAwC;IAC5D,IAAAwB,IAAA,GAAE;IACA,IAAAC,OAAA,GAAW,MAAApB,aAAS,aAAAmB,IAAA;IACtBzB,MAAA,CAAA0B,OAAA,EAAAC,SAAA;IACD3B,MAAA,CAAA0B,OAAA,EAAAC,SAAA;IAED3B,MAAG,CAAA0B,OAAA,EAAAC,SAAA,CAAAF,IAAA;IACDzB,MAAM,CAAA0B,OAAO,EAAAC,SAAA;EACb;AACA","ignoreList":[]}
|