@multiplatform.one/wallet 7.7.2 → 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.
Files changed (49) hide show
  1. package/LICENSE +201 -0
  2. package/dist/esm/SiweKeycloakProvider.native.js.map +1 -1
  3. package/dist/esm/base64.native.js.map +1 -1
  4. package/dist/esm/context.native.js.map +1 -1
  5. package/dist/esm/hooks/context.native.js.map +1 -1
  6. package/dist/esm/hooks/index.native.js.map +1 -1
  7. package/dist/esm/hooks/useSiweKeycloak.native.js.map +1 -1
  8. package/dist/esm/index.native.js.map +1 -1
  9. package/dist/esm/render.native.js.map +1 -1
  10. package/dist/esm/siwe.native.js.map +1 -1
  11. package/dist/esm/types.native.js.map +1 -1
  12. package/dist/esm/util.native.js.map +1 -1
  13. package/package.json +13 -12
  14. package/types/SiweKeycloakProvider.d.ts +28 -0
  15. package/types/SiweKeycloakProvider.d.ts.map +1 -0
  16. package/types/base64.d.ts +2 -0
  17. package/types/base64.d.ts.map +1 -0
  18. package/types/context.d.ts +7 -0
  19. package/types/context.d.ts.map +1 -0
  20. package/types/hooks/context.d.ts +7 -0
  21. package/types/hooks/context.d.ts.map +1 -0
  22. package/types/hooks/index.d.ts +2 -0
  23. package/types/hooks/index.d.ts.map +1 -0
  24. package/types/hooks/useSiweKeycloak.d.ts +11 -0
  25. package/types/hooks/useSiweKeycloak.d.ts.map +1 -0
  26. package/types/index.d.ts +30 -0
  27. package/types/index.d.ts.map +1 -0
  28. package/types/render.d.ts +7 -0
  29. package/types/render.d.ts.map +1 -0
  30. package/types/siwe.d.ts +17 -0
  31. package/types/siwe.d.ts.map +1 -0
  32. package/types/types.d.ts +7 -0
  33. package/types/types.d.ts.map +1 -0
  34. package/types/util.d.ts +4 -0
  35. package/types/util.d.ts.map +1 -0
  36. package/dist/cjs/base64.spec.cjs +0 -57
  37. package/dist/cjs/base64.spec.native.js +0 -79
  38. package/dist/cjs/base64.spec.native.js.map +0 -1
  39. package/dist/cjs/util.spec.cjs +0 -53
  40. package/dist/cjs/util.spec.native.js +0 -62
  41. package/dist/cjs/util.spec.native.js.map +0 -1
  42. package/dist/esm/base64.spec.mjs +0 -58
  43. package/dist/esm/base64.spec.mjs.map +0 -1
  44. package/dist/esm/base64.spec.native.js +0 -77
  45. package/dist/esm/base64.spec.native.js.map +0 -1
  46. package/dist/esm/util.spec.mjs +0 -54
  47. package/dist/esm/util.spec.mjs.map +0 -1
  48. package/dist/esm/util.spec.native.js +0 -60
  49. package/dist/esm/util.spec.native.js.map +0 -1
@@ -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"}
@@ -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"}
@@ -0,0 +1,7 @@
1
+ export interface KeycloakConfig {
2
+ baseUrl: string;
3
+ clientId: string;
4
+ realm: string;
5
+ scope: string | string[];
6
+ }
7
+ //# sourceMappingURL=types.d.ts.map
@@ -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"}
@@ -0,0 +1,4 @@
1
+ import type { Address } from "viem";
2
+ export declare function getNonce(keycloakSiweUrl: string): Promise<string>;
3
+ export declare function createMessage(nonce: string, address: Address, chainId: number): Promise<string>;
4
+ //# sourceMappingURL=util.d.ts.map
@@ -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"}
@@ -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":[]}
@@ -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":[]}
@@ -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","return","originalBtoa","globalThis","spyOn","mockImplementation","Error","Object","defineProperty","configurable"],"sources":["base64.spec.native.js"],"sourcesContent":["import { describe, expect, it, vi, afterEach } from \"vitest\";\nimport { encodeBase64 } from \"./base64\";\ndescribe(\"encodeBase64\", function() {\n afterEach(function() {\n vi.restoreAllMocks();\n });\n it(\"encodes an empty string\", function() {\n expect(encodeBase64(\"\")).toBe(\"\");\n });\n it(\"encodes a simple ASCII string\", function() {\n expect(encodeBase64(\"Hello\")).toBe(\"SGVsbG8=\");\n });\n it(\"encodes 'Hello, World!'\", function() {\n expect(encodeBase64(\"Hello, World!\")).toBe(\"SGVsbG8sIFdvcmxkIQ==\");\n });\n it(\"encodes a single character\", function() {\n expect(encodeBase64(\"A\")).toBe(\"QQ==\");\n });\n it(\"encodes two characters (padding = 1)\", function() {\n expect(encodeBase64(\"AB\")).toBe(\"QUI=\");\n });\n it(\"encodes three characters (no padding)\", function() {\n expect(encodeBase64(\"ABC\")).toBe(\"QUJD\");\n });\n it(\"encodes strings with special characters\", function() {\n expect(encodeBase64(\"foo:bar\")).toBe(\"Zm9vOmJhcg==\");\n });\n it(\"encodes strings with numbers\", function() {\n expect(encodeBase64(\"12345\")).toBe(\"MTIzNDU=\");\n });\n it(\"produces output matching btoa for ASCII input\", function() {\n var inputs = [\n \"test\",\n \"a\",\n \"ab\",\n \"abc\",\n \"abcd\",\n \"Hello, World!\",\n \"base64 encoding test\"\n ];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = inputs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var input = _step.value;\n expect(encodeBase64(input)).toBe(btoa(input));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n it(\"falls back to manual encoding when btoa is unavailable\", function() {\n var originalBtoa = globalThis.btoa;\n vi.spyOn(globalThis, \"btoa\").mockImplementation(function() {\n throw new Error(\"btoa not available\");\n });\n Object.defineProperty(globalThis, \"btoa\", {\n value: void 0,\n configurable: true\n });\n try {\n expect(encodeBase64(\"Hello\")).toBe(\"SGVsbG8=\");\n expect(encodeBase64(\"ABC\")).toBe(\"QUJD\");\n expect(encodeBase64(\"\")).toBe(\"\");\n } finally {\n Object.defineProperty(globalThis, \"btoa\", {\n value: originalBtoa,\n configurable: true\n });\n }\n });\n});\n//# sourceMappingURL=base64.spec.js.map\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,EAAEC,EAAE,EAAEC,SAAS,QAAQ,QAAQ;AAC5D,SAASC,YAAY,QAAQ,oBAAU;AACvCL,QAAQ,CAAC,cAAc,EAAE,YAAW;EAClCI,SAAS,CAAC,YAAW;IACnBD,EAAE,CAACG,eAAe,CAAC,CAAC;EACtB,CAAC,CAAC;EACFJ,EAAE,CAAC,yBAAyB,EAAE,YAAW;IACvCD,MAAM,CAACI,YAAY,CAAC,EAAE,CAAC,CAAC,CAACE,IAAI,CAAC,EAAE,CAAC;EACnC,CAAC,CAAC;EACFL,EAAE,CAAC,+BAA+B,EAAE,YAAW;IAC7CD,MAAM,CAACI,YAAY,CAAC,OAAO,CAAC,CAAC,CAACE,IAAI,CAAC,UAAU,CAAC;EAChD,CAAC,CAAC;EACFL,EAAE,CAAC,yBAAyB,EAAE,YAAW;IACvCD,MAAM,CAACI,YAAY,CAAC,eAAe,CAAC,CAAC,CAACE,IAAI,CAAC,sBAAsB,CAAC;EACpE,CAAC,CAAC;EACFL,EAAE,CAAC,4BAA4B,EAAE,YAAW;IAC1CD,MAAM,CAACI,YAAY,CAAC,GAAG,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM,CAAC;EACxC,CAAC,CAAC;EACFL,EAAE,CAAC,sCAAsC,EAAE,YAAW;IACpDD,MAAM,CAACI,YAAY,CAAC,IAAI,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM,CAAC;EACzC,CAAC,CAAC;EACFL,EAAE,CAAC,uCAAuC,EAAE,YAAW;IACrDD,MAAM,CAACI,YAAY,CAAC,KAAK,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM,CAAC;EAC1C,CAAC,CAAC;EACFL,EAAE,CAAC,yCAAyC,EAAE,YAAW;IACvDD,MAAM,CAACI,YAAY,CAAC,SAAS,CAAC,CAAC,CAACE,IAAI,CAAC,cAAc,CAAC;EACtD,CAAC,CAAC;EACFL,EAAE,CAAC,8BAA8B,EAAE,YAAW;IAC5CD,MAAM,CAACI,YAAY,CAAC,OAAO,CAAC,CAAC,CAACE,IAAI,CAAC,UAAU,CAAC;EAChD,CAAC,CAAC;EACFL,EAAE,CAAC,+CAA+C,EAAE,YAAW;IAC7D,IAAIM,MAAM,GAAG,CACX,MAAM,EACN,GAAG,EACH,IAAI,EACJ,KAAK,EACL,MAAM,EACN,eAAe,EACf,sBAAsB,CACvB;IACD,IAAIC,yBAAyB,GAAG,IAAI;MAAEC,iBAAiB,GAAG,KAAK;MAAEC,cAAc,GAAG,KAAK,CAAC;IACxF,IAAI;MACF,KAAK,IAAIC,SAAS,GAAGJ,MAAM,CAACK,MAAM,CAACC,QAAQ,CAAC,CAAC,CAAC,EAAEC,KAAK,EAAE,EAAEN,yBAAyB,GAAG,CAACM,KAAK,GAAGH,SAAS,CAACI,IAAI,CAAC,CAAC,EAAEC,IAAI,CAAC,EAAER,yBAAyB,GAAG,IAAI,EAAE;QACvJ,IAAIS,KAAK,GAAGH,KAAK,CAACI,KAAK;QACvBlB,MAAM,CAACI,YAAY,CAACa,KAAK,CAAC,CAAC,CAACX,IAAI,CAACa,IAAI,CAACF,KAAK,CAAC,CAAC;MAC/C;IACF,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZX,iBAAiB,GAAG,IAAI;MACxBC,cAAc,GAAGU,GAAG;IACtB,CAAC,SAAS;MACR,IAAI;QACF,IAAI,CAACZ,yBAAyB,IAAIG,SAAS,CAACU,MAAM,IAAI,IAAI,EAAE;UAC1DV,SAAS,CAACU,MAAM,CAAC,CAAC;QACpB;MACF,CAAC,SAAS;QACR,IAAIZ,iBAAiB,EAAE;UACrB,MAAMC,cAAc;QACtB;MACF;IACF;EACF,CAAC,CAAC;EACFT,EAAE,CAAC,wDAAwD,EAAE,YAAW;IACtE,IAAIqB,YAAY,GAAGC,UAAU,CAACJ,IAAI;IAClCjB,EAAE,CAACsB,KAAK,CAACD,UAAU,EAAE,MAAM,CAAC,CAACE,kBAAkB,CAAC,YAAW;MACzD,MAAM,IAAIC,KAAK,CAAC,oBAAoB,CAAC;IACvC,CAAC,CAAC;IACFC,MAAM,CAACC,cAAc,CAACL,UAAU,EAAE,MAAM,EAAE;MACxCL,KAAK,EAAE,KAAK,CAAC;MACbW,YAAY,EAAE;IAChB,CAAC,CAAC;IACF,IAAI;MACF7B,MAAM,CAACI,YAAY,CAAC,OAAO,CAAC,CAAC,CAACE,IAAI,CAAC,UAAU,CAAC;MAC9CN,MAAM,CAACI,YAAY,CAAC,KAAK,CAAC,CAAC,CAACE,IAAI,CAAC,MAAM,CAAC;MACxCN,MAAM,CAACI,YAAY,CAAC,EAAE,CAAC,CAAC,CAACE,IAAI,CAAC,EAAE,CAAC;IACnC,CAAC,SAAS;MACRqB,MAAM,CAACC,cAAc,CAACL,UAAU,EAAE,MAAM,EAAE;QACxCL,KAAK,EAAEI,YAAY;QACnBO,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -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