@multiplatform.one/wallet 7.7.2
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/README.md +8 -0
- package/dist/cjs/SiweKeycloakProvider.cjs +273 -0
- package/dist/cjs/SiweKeycloakProvider.native.js +309 -0
- package/dist/cjs/SiweKeycloakProvider.native.js.map +1 -0
- package/dist/cjs/base64.cjs +51 -0
- package/dist/cjs/base64.native.js +55 -0
- package/dist/cjs/base64.native.js.map +1 -0
- package/dist/cjs/base64.spec.cjs +57 -0
- package/dist/cjs/base64.spec.native.js +79 -0
- package/dist/cjs/base64.spec.native.js.map +1 -0
- package/dist/cjs/context.cjs +29 -0
- package/dist/cjs/context.native.js +32 -0
- package/dist/cjs/context.native.js.map +1 -0
- package/dist/cjs/hooks/context.cjs +29 -0
- package/dist/cjs/hooks/context.native.js +32 -0
- package/dist/cjs/hooks/context.native.js.map +1 -0
- package/dist/cjs/hooks/index.cjs +20 -0
- package/dist/cjs/hooks/index.native.js +23 -0
- package/dist/cjs/hooks/index.native.js.map +1 -0
- package/dist/cjs/hooks/useSiweKeycloak.cjs +61 -0
- package/dist/cjs/hooks/useSiweKeycloak.native.js +64 -0
- package/dist/cjs/hooks/useSiweKeycloak.native.js.map +1 -0
- package/dist/cjs/index.cjs +133 -0
- package/dist/cjs/index.native.js +189 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/render.cjs +78 -0
- package/dist/cjs/render.native.js +82 -0
- package/dist/cjs/render.native.js.map +1 -0
- package/dist/cjs/siwe.cjs +76 -0
- package/dist/cjs/siwe.native.js +94 -0
- package/dist/cjs/siwe.native.js.map +1 -0
- package/dist/cjs/types.cjs +18 -0
- package/dist/cjs/types.native.js +21 -0
- package/dist/cjs/types.native.js.map +1 -0
- package/dist/cjs/util.cjs +53 -0
- package/dist/cjs/util.native.js +56 -0
- package/dist/cjs/util.native.js.map +1 -0
- package/dist/cjs/util.spec.cjs +53 -0
- package/dist/cjs/util.spec.native.js +62 -0
- package/dist/cjs/util.spec.native.js.map +1 -0
- package/dist/esm/SiweKeycloakProvider.mjs +237 -0
- package/dist/esm/SiweKeycloakProvider.mjs.map +1 -0
- package/dist/esm/SiweKeycloakProvider.native.js +270 -0
- package/dist/esm/SiweKeycloakProvider.native.js.map +1 -0
- package/dist/esm/base64.mjs +26 -0
- package/dist/esm/base64.mjs.map +1 -0
- package/dist/esm/base64.native.js +27 -0
- package/dist/esm/base64.native.js.map +1 -0
- package/dist/esm/base64.spec.mjs +58 -0
- package/dist/esm/base64.spec.mjs.map +1 -0
- package/dist/esm/base64.spec.native.js +77 -0
- package/dist/esm/base64.spec.native.js.map +1 -0
- package/dist/esm/context.mjs +4 -0
- package/dist/esm/context.mjs.map +1 -0
- package/dist/esm/context.native.js +4 -0
- package/dist/esm/context.native.js.map +1 -0
- package/dist/esm/hooks/context.mjs +4 -0
- package/dist/esm/hooks/context.mjs.map +1 -0
- package/dist/esm/hooks/context.native.js +4 -0
- package/dist/esm/hooks/context.native.js.map +1 -0
- package/dist/esm/hooks/index.mjs +2 -0
- package/dist/esm/hooks/index.mjs.map +1 -0
- package/dist/esm/hooks/index.native.js +2 -0
- package/dist/esm/hooks/index.native.js.map +1 -0
- package/dist/esm/hooks/useSiweKeycloak.mjs +36 -0
- package/dist/esm/hooks/useSiweKeycloak.mjs.map +1 -0
- package/dist/esm/hooks/useSiweKeycloak.native.js +36 -0
- package/dist/esm/hooks/useSiweKeycloak.native.js.map +1 -0
- package/dist/esm/index.mjs +107 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +160 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/render.mjs +42 -0
- package/dist/esm/render.mjs.map +1 -0
- package/dist/esm/render.native.js +43 -0
- package/dist/esm/render.native.js.map +1 -0
- package/dist/esm/siwe.mjs +51 -0
- package/dist/esm/siwe.mjs.map +1 -0
- package/dist/esm/siwe.native.js +66 -0
- package/dist/esm/siwe.native.js.map +1 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/util.mjs +27 -0
- package/dist/esm/util.mjs.map +1 -0
- package/dist/esm/util.native.js +27 -0
- package/dist/esm/util.native.js.map +1 -0
- package/dist/esm/util.spec.mjs +54 -0
- package/dist/esm/util.spec.mjs.map +1 -0
- package/dist/esm/util.spec.native.js +60 -0
- package/dist/esm/util.spec.native.js.map +1 -0
- package/package.json +81 -0
- package/src/SiweKeycloakProvider.tsx +297 -0
- package/src/base64.spec.ts +65 -0
- package/src/base64.ts +26 -0
- package/src/context.ts +10 -0
- package/src/hooks/context.ts +10 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useSiweKeycloak.ts +23 -0
- package/src/index.ts +127 -0
- package/src/main/java/com/bitspur/keycloak/siwe/Errors.java +21 -0
- package/src/main/java/com/bitspur/keycloak/siwe/LiteAuthenticationService.java +167 -0
- package/src/main/java/com/bitspur/keycloak/siwe/SiweCredentials.java +36 -0
- package/src/main/java/com/bitspur/keycloak/siwe/SiweSession.java +36 -0
- package/src/main/java/com/bitspur/keycloak/siwe/SiweUtil.java +599 -0
- package/src/main/java/com/bitspur/keycloak/siwe/Token.java +85 -0
- package/src/main/java/com/bitspur/keycloak/siwe/authenticators/browser/SiweBrowserAuthenticator.java +109 -0
- package/src/main/java/com/bitspur/keycloak/siwe/authenticators/browser/SiweBrowserAuthenticatorFactory.java +93 -0
- package/src/main/java/com/bitspur/keycloak/siwe/authenticators/directgrant/SiweDirectGrantAuthenticator.java +153 -0
- package/src/main/java/com/bitspur/keycloak/siwe/authenticators/directgrant/SiweDirectGrantAuthenticatorFactory.java +93 -0
- package/src/main/java/com/bitspur/keycloak/siwe/jpa/nonce/SiweNonce.java +95 -0
- package/src/main/java/com/bitspur/keycloak/siwe/jpa/nonce/SiweNonceJpaEntityProvider.java +82 -0
- package/src/main/java/com/bitspur/keycloak/siwe/jpa/nonce/SiweNonceJpaEntityProviderFactory.java +46 -0
- package/src/main/java/com/bitspur/keycloak/siwe/jpa/wallet/SiweWalletAddress.java +103 -0
- package/src/main/java/com/bitspur/keycloak/siwe/jpa/wallet/SiweWalletJpaEntityProvider.java +43 -0
- package/src/main/java/com/bitspur/keycloak/siwe/jpa/wallet/SiweWalletJpaEntityProviderFactory.java +46 -0
- package/src/main/java/com/bitspur/keycloak/siwe/protocol/SiweWalletProtocolMapper.java +85 -0
- package/src/main/java/com/bitspur/keycloak/siwe/resource/SiweResource.java +210 -0
- package/src/main/java/com/bitspur/keycloak/siwe/resource/SiweResourceProvider.java +34 -0
- package/src/main/java/com/bitspur/keycloak/siwe/resource/SiweResourceProviderFactory.java +46 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/SiuCredentials.java +52 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/SiuMessage.java +362 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/SiuParseException.java +23 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/SiuUtil.java +547 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/authenticators/browser/SiuBrowserAuthenticator.java +112 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/authenticators/browser/SiuBrowserAuthenticatorFactory.java +96 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/authenticators/directgrant/SiuDirectGrantAuthenticator.java +169 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/authenticators/directgrant/SiuDirectGrantAuthenticatorFactory.java +96 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/resource/SiuResource.java +244 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/resource/SiuResourceProvider.java +34 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siu/resource/SiuResourceProviderFactory.java +48 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/SiwsCredentials.java +52 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/SiwsMessage.java +362 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/SiwsParseException.java +23 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/SiwsUtil.java +564 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/authenticators/browser/SiwsBrowserAuthenticator.java +112 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/authenticators/browser/SiwsBrowserAuthenticatorFactory.java +96 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/authenticators/directgrant/SiwsDirectGrantAuthenticator.java +169 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/authenticators/directgrant/SiwsDirectGrantAuthenticatorFactory.java +96 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/resource/SiwsResource.java +244 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/resource/SiwsResourceProvider.java +34 -0
- package/src/main/java/com/bitspur/keycloak/siwe/siws/resource/SiwsResourceProviderFactory.java +48 -0
- package/src/main/resources/META-INF/keycloak-themes.json +8 -0
- package/src/main/resources/META-INF/services/org.keycloak.authentication.AuthenticatorFactory +6 -0
- package/src/main/resources/META-INF/services/org.keycloak.connections.jpa.entityprovider.JpaEntityProviderFactory +2 -0
- package/src/main/resources/META-INF/services/org.keycloak.protocol.ProtocolMapper +1 -0
- package/src/main/resources/META-INF/services/org.keycloak.services.resource.RealmResourceProviderFactory +3 -0
- package/src/main/resources/META-INF/siwe-nonce-changelog.xml +29 -0
- package/src/main/resources/META-INF/siwe-wallet-changelog.xml +46 -0
- package/src/render.tsx +47 -0
- package/src/siwe.tsx +57 -0
- package/src/types.ts +6 -0
- package/src/util.spec.ts +72 -0
- package/src/util.ts +28 -0
package/README.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# @multiplatform.one/wallet
|
|
2
|
+
|
|
3
|
+
erc-4361 sign-in with ethereum plugin for keycloak
|
|
4
|
+
|
|
5
|
+
JS client exports (`SiweKeycloakProvider`, `useSiweKeycloak`, …) keep those
|
|
6
|
+
names; import them from `@multiplatform.one/wallet`. The Keycloak SPI JAR is
|
|
7
|
+
still `siwe-keycloak` (`com.bitspur.keycloak.siwe`) because realm.json depends
|
|
8
|
+
on those authenticator IDs.
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: () => from[key],
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: true
|
|
30
|
+
}) : target, mod));
|
|
31
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: true
|
|
33
|
+
}), mod);
|
|
34
|
+
var SiweKeycloakProvider_exports = {};
|
|
35
|
+
__export(SiweKeycloakProvider_exports, {
|
|
36
|
+
SiweKeycloakProvider: () => SiweKeycloakProvider
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(SiweKeycloakProvider_exports);
|
|
39
|
+
var import_keycloak_js = __toESM(require("@multiplatform.one/keycloak-js"));
|
|
40
|
+
var import_react_query = require("@tanstack/react-query");
|
|
41
|
+
var import_connectkit = require("@multiplatform.one/web3/connectkit");
|
|
42
|
+
var import_react = require("react");
|
|
43
|
+
var import_wagmi = require("wagmi");
|
|
44
|
+
var import_chains = require("wagmi/chains");
|
|
45
|
+
var import_store = require("@multiplatform.one/store");
|
|
46
|
+
var import_context = require("./hooks/context.cjs");
|
|
47
|
+
var import_base64 = require("./base64.cjs");
|
|
48
|
+
var import_util = require("./util.cjs");
|
|
49
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
50
|
+
const queryClient = new import_react_query.QueryClient();
|
|
51
|
+
const logger = console;
|
|
52
|
+
const ACCESS_TOKEN_KEY = "KEYCLOAK_TOKEN";
|
|
53
|
+
const ID_TOKEN_KEY = "KEYCLOAK_ID_TOKEN";
|
|
54
|
+
const REFRESH_TOKEN_KEY = "KEYCLOAK_REFRESH_TOKEN";
|
|
55
|
+
function SiweKeycloakProvider({
|
|
56
|
+
children,
|
|
57
|
+
clearTokens: clearTokensProp,
|
|
58
|
+
debug,
|
|
59
|
+
getTokens: getTokensProp,
|
|
60
|
+
keycloak: keycloakProp,
|
|
61
|
+
siwe,
|
|
62
|
+
setTokens: setTokensProp,
|
|
63
|
+
wagmi: wagmiProp,
|
|
64
|
+
onSignedIn,
|
|
65
|
+
onSignedInFailed,
|
|
66
|
+
...props
|
|
67
|
+
}) {
|
|
68
|
+
const keycloakConfig = (0, import_react.useMemo)(() => ({
|
|
69
|
+
...keycloakProp,
|
|
70
|
+
...(typeof keycloakProp?.baseUrl !== "undefined" ? {
|
|
71
|
+
baseUrl: keycloakProp.baseUrl
|
|
72
|
+
} : {
|
|
73
|
+
baseUrl: "http://localhost:8080"
|
|
74
|
+
}),
|
|
75
|
+
...(typeof keycloakProp?.clientId !== "undefined" ? {
|
|
76
|
+
clientId: keycloakProp.clientId
|
|
77
|
+
} : {
|
|
78
|
+
clientId: "app"
|
|
79
|
+
}),
|
|
80
|
+
...(typeof keycloakProp?.realm !== "undefined" ? {
|
|
81
|
+
realm: keycloakProp.realm
|
|
82
|
+
} : {
|
|
83
|
+
realm: "main"
|
|
84
|
+
}),
|
|
85
|
+
...(typeof keycloakProp?.scope !== "undefined" ? {
|
|
86
|
+
scope: keycloakProp.scope
|
|
87
|
+
} : {
|
|
88
|
+
scope: []
|
|
89
|
+
})
|
|
90
|
+
}), [keycloakProp]);
|
|
91
|
+
const keycloak = (0, import_react.useMemo)(() => typeof window !== "undefined" ? new import_keycloak_js.default({
|
|
92
|
+
clientId: keycloakConfig.clientId,
|
|
93
|
+
realm: keycloakConfig.realm,
|
|
94
|
+
url: keycloakConfig.baseUrl
|
|
95
|
+
}) : void 0, [keycloakConfig]);
|
|
96
|
+
const clearTokens = (0, import_react.useMemo)(() => clearTokensProp || (async () => {
|
|
97
|
+
await Promise.resolve(import_store.storage.removeItem(ID_TOKEN_KEY));
|
|
98
|
+
await Promise.resolve(import_store.storage.removeItem(REFRESH_TOKEN_KEY));
|
|
99
|
+
await Promise.resolve(import_store.storage.removeItem(ACCESS_TOKEN_KEY));
|
|
100
|
+
}), [clearTokensProp]);
|
|
101
|
+
const setTokens = (0, import_react.useMemo)(() => setTokensProp || (async ({
|
|
102
|
+
accessToken,
|
|
103
|
+
refreshToken,
|
|
104
|
+
idToken
|
|
105
|
+
}) => {
|
|
106
|
+
await Promise.resolve(import_store.storage.setItem(ID_TOKEN_KEY, idToken));
|
|
107
|
+
await Promise.resolve(import_store.storage.setItem(REFRESH_TOKEN_KEY, refreshToken));
|
|
108
|
+
await Promise.resolve(import_store.storage.setItem(ACCESS_TOKEN_KEY, accessToken));
|
|
109
|
+
}), [setTokensProp]);
|
|
110
|
+
const getTokens = (0, import_react.useMemo)(() => getTokensProp || (async () => ({
|
|
111
|
+
accessToken: (await Promise.resolve(import_store.storage.getItem(ACCESS_TOKEN_KEY))) || "",
|
|
112
|
+
idToken: (await Promise.resolve(import_store.storage.getItem(ID_TOKEN_KEY))) || "",
|
|
113
|
+
refreshToken: (await Promise.resolve(import_store.storage.getItem(REFRESH_TOKEN_KEY))) || ""
|
|
114
|
+
})), [getTokensProp]);
|
|
115
|
+
const keycloakRealmUrl = (0, import_react.useMemo)(() => `${keycloakConfig.baseUrl}/realms/${keycloakConfig.realm || "main"}`, [keycloakConfig]);
|
|
116
|
+
const keycloakSiweUrl = (0, import_react.useMemo)(() => `${keycloakRealmUrl}/siwe`, [keycloakRealmUrl]);
|
|
117
|
+
const config = (0, import_react.useMemo)(() => (0, import_wagmi.createConfig)((0, import_connectkit.getDefaultConfig)({
|
|
118
|
+
appName: "Example",
|
|
119
|
+
chains: [import_chains.mainnet, import_chains.polygon, import_chains.optimism, import_chains.arbitrum],
|
|
120
|
+
walletConnectProjectId: props.appName || "Example",
|
|
121
|
+
...props,
|
|
122
|
+
...wagmiProp
|
|
123
|
+
})), [props, wagmiProp]);
|
|
124
|
+
const siweConfig = (0, import_react.useMemo)(() => {
|
|
125
|
+
const siweConfig2 = {
|
|
126
|
+
getNonce: async () => (0, import_util.getNonce)(keycloakSiweUrl),
|
|
127
|
+
// Chain-agnostic: derives the signer family from the active connector's
|
|
128
|
+
// (possibly synthetic) chainId and builds the matching SIWx message, so EVM
|
|
129
|
+
// and Solana/Sui/Bitcoin all sign in through ConnectKit's one signIn().
|
|
130
|
+
createMessage({
|
|
131
|
+
nonce,
|
|
132
|
+
address,
|
|
133
|
+
chainId
|
|
134
|
+
}) {
|
|
135
|
+
return (0, import_connectkit.createWalletMessage)({
|
|
136
|
+
address,
|
|
137
|
+
chainId,
|
|
138
|
+
nonce
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
async verifyMessage({
|
|
142
|
+
message,
|
|
143
|
+
signature
|
|
144
|
+
}) {
|
|
145
|
+
const formData = new URLSearchParams({
|
|
146
|
+
client_id: keycloakConfig.clientId,
|
|
147
|
+
grant_type: "password",
|
|
148
|
+
password: (0, import_base64.encodeBase64)(message),
|
|
149
|
+
username: signature,
|
|
150
|
+
scope: ["openid", [...(Array.isArray(keycloakConfig.scope) ? keycloakConfig.scope : keycloakConfig.scope ? [keycloakConfig.scope] : [])]].join(" ")
|
|
151
|
+
});
|
|
152
|
+
const res = await fetch(`${keycloakRealmUrl}/protocol/openid-connect/token`, {
|
|
153
|
+
method: "POST",
|
|
154
|
+
credentials: "include",
|
|
155
|
+
headers: {
|
|
156
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
157
|
+
},
|
|
158
|
+
body: formData
|
|
159
|
+
});
|
|
160
|
+
if (!res.ok) {
|
|
161
|
+
const error = new Error(`sign in failed with status ${res.status}`);
|
|
162
|
+
logger.warn(error);
|
|
163
|
+
onSignedInFailed?.(error);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
const data = await res.json();
|
|
167
|
+
if (!data.access_token || !data.id_token || !data.refresh_token) {
|
|
168
|
+
const error = new Error(`missing tokens ${[!data.access_token && "access_token", !data.id_token && "id_token", !data.refresh_token && "refresh_token"].filter(Boolean).reduce((acc, curr, i, arr) => {
|
|
169
|
+
if (i === 0) return curr;
|
|
170
|
+
if (i === arr.length - 1) return `${acc} and ${curr}`;
|
|
171
|
+
return `${acc}, ${curr}`;
|
|
172
|
+
}, "")}`);
|
|
173
|
+
logger.warn(error);
|
|
174
|
+
onSignedInFailed?.(error);
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
await Promise.resolve(setTokens({
|
|
178
|
+
accessToken: data.access_token,
|
|
179
|
+
idToken: data.id_token,
|
|
180
|
+
refreshToken: data.refresh_token
|
|
181
|
+
}));
|
|
182
|
+
onSignedIn?.();
|
|
183
|
+
return true;
|
|
184
|
+
},
|
|
185
|
+
async getSession() {
|
|
186
|
+
if (!keycloak) return null;
|
|
187
|
+
const {
|
|
188
|
+
accessToken,
|
|
189
|
+
refreshToken,
|
|
190
|
+
idToken
|
|
191
|
+
} = await Promise.resolve(getTokens());
|
|
192
|
+
await keycloak.init({
|
|
193
|
+
checkLoginIframe: false,
|
|
194
|
+
flow: "implicit",
|
|
195
|
+
idToken,
|
|
196
|
+
onLoad: void 0,
|
|
197
|
+
refreshToken,
|
|
198
|
+
timeSkew: 0,
|
|
199
|
+
token: accessToken
|
|
200
|
+
});
|
|
201
|
+
if (keycloak.token !== accessToken || keycloak.refreshToken !== refreshToken || keycloak.idToken !== idToken) {
|
|
202
|
+
await Promise.resolve(setTokens({
|
|
203
|
+
accessToken: keycloak.token || accessToken,
|
|
204
|
+
idToken: keycloak.idToken || idToken,
|
|
205
|
+
refreshToken: keycloak.refreshToken || refreshToken
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
const res = await fetch(`${keycloakSiweUrl}/session`, {
|
|
210
|
+
headers: {
|
|
211
|
+
Authorization: `Bearer ${keycloak.token}`
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
if (res.ok) return res.json();
|
|
215
|
+
if (res.status === 401) return null;
|
|
216
|
+
throw new Error("Failed to get session");
|
|
217
|
+
} catch (err) {
|
|
218
|
+
if (err instanceof Error && err.message === "Failed to get session") {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
throw err;
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
async signOut() {
|
|
225
|
+
if (!keycloak) return false;
|
|
226
|
+
keycloak.idToken = void 0;
|
|
227
|
+
keycloak.refreshToken = void 0;
|
|
228
|
+
keycloak.token = void 0;
|
|
229
|
+
await Promise.resolve(clearTokens());
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
return siweConfig2;
|
|
234
|
+
}, [keycloakRealmUrl, keycloakSiweUrl, keycloakConfig]);
|
|
235
|
+
if (siwe) {
|
|
236
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_wagmi.WagmiProvider, {
|
|
237
|
+
config,
|
|
238
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {
|
|
239
|
+
client: queryClient,
|
|
240
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_connectkit.SIWEProvider, {
|
|
241
|
+
signOutOnAccountChange: false,
|
|
242
|
+
signOutOnDisconnect: false,
|
|
243
|
+
signOutOnNetworkChange: false,
|
|
244
|
+
...siweConfig,
|
|
245
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_connectkit.ConnectKitProvider, {
|
|
246
|
+
debugMode: debug,
|
|
247
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SiweKeycloakContext.Provider, {
|
|
248
|
+
value: {
|
|
249
|
+
keycloak
|
|
250
|
+
},
|
|
251
|
+
children
|
|
252
|
+
})
|
|
253
|
+
})
|
|
254
|
+
})
|
|
255
|
+
})
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_wagmi.WagmiProvider, {
|
|
259
|
+
config,
|
|
260
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {
|
|
261
|
+
client: queryClient,
|
|
262
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_connectkit.ConnectKitProvider, {
|
|
263
|
+
debugMode: debug,
|
|
264
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SiweKeycloakContext.Provider, {
|
|
265
|
+
value: {
|
|
266
|
+
keycloak
|
|
267
|
+
},
|
|
268
|
+
children
|
|
269
|
+
})
|
|
270
|
+
})
|
|
271
|
+
})
|
|
272
|
+
});
|
|
273
|
+
}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: true
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
18
|
+
get: () => from[key],
|
|
19
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
25
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
26
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
27
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
28
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
29
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
30
|
+
value: mod,
|
|
31
|
+
enumerable: true
|
|
32
|
+
}) : target, mod));
|
|
33
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
34
|
+
value: true
|
|
35
|
+
}), mod);
|
|
36
|
+
var SiweKeycloakProvider_exports = {};
|
|
37
|
+
__export(SiweKeycloakProvider_exports, {
|
|
38
|
+
SiweKeycloakProvider: () => SiweKeycloakProvider
|
|
39
|
+
});
|
|
40
|
+
module.exports = __toCommonJS(SiweKeycloakProvider_exports);
|
|
41
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
42
|
+
var import_keycloak_js = __toESM(require("@multiplatform.one/keycloak-js"));
|
|
43
|
+
var import_react_query = require("@tanstack/react-query");
|
|
44
|
+
var import_connectkit = require("@multiplatform.one/web3/connectkit");
|
|
45
|
+
var import_react = require("react");
|
|
46
|
+
var import_wagmi = require("wagmi");
|
|
47
|
+
var import_chains = require("wagmi/chains");
|
|
48
|
+
var import_store = require("@multiplatform.one/store");
|
|
49
|
+
var import_context = require("./hooks/context.native.js");
|
|
50
|
+
var import_base64 = require("./base64.native.js");
|
|
51
|
+
var import_util = require("./util.native.js");
|
|
52
|
+
function _instanceof(left, right) {
|
|
53
|
+
"@swc/helpers - instanceof";
|
|
54
|
+
|
|
55
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
56
|
+
return !!right[Symbol.hasInstance](left);
|
|
57
|
+
} else {
|
|
58
|
+
return left instanceof right;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
var queryClient = new import_react_query.QueryClient();
|
|
62
|
+
var logger = console;
|
|
63
|
+
var ACCESS_TOKEN_KEY = "KEYCLOAK_TOKEN";
|
|
64
|
+
var ID_TOKEN_KEY = "KEYCLOAK_ID_TOKEN";
|
|
65
|
+
var REFRESH_TOKEN_KEY = "KEYCLOAK_REFRESH_TOKEN";
|
|
66
|
+
function SiweKeycloakProvider(param) {
|
|
67
|
+
var {
|
|
68
|
+
children,
|
|
69
|
+
clearTokens: clearTokensProp,
|
|
70
|
+
debug,
|
|
71
|
+
getTokens: getTokensProp,
|
|
72
|
+
keycloak: keycloakProp,
|
|
73
|
+
siwe,
|
|
74
|
+
setTokens: setTokensProp,
|
|
75
|
+
wagmi: wagmiProp,
|
|
76
|
+
onSignedIn,
|
|
77
|
+
onSignedInFailed,
|
|
78
|
+
...props
|
|
79
|
+
} = param;
|
|
80
|
+
var keycloakConfig = (0, import_react.useMemo)(function () {
|
|
81
|
+
return {
|
|
82
|
+
...keycloakProp,
|
|
83
|
+
...(typeof (keycloakProp === null || keycloakProp === void 0 ? void 0 : keycloakProp.baseUrl) !== "undefined" ? {
|
|
84
|
+
baseUrl: keycloakProp.baseUrl
|
|
85
|
+
} : {
|
|
86
|
+
baseUrl: "http://localhost:8080"
|
|
87
|
+
}),
|
|
88
|
+
...(typeof (keycloakProp === null || keycloakProp === void 0 ? void 0 : keycloakProp.clientId) !== "undefined" ? {
|
|
89
|
+
clientId: keycloakProp.clientId
|
|
90
|
+
} : {
|
|
91
|
+
clientId: "app"
|
|
92
|
+
}),
|
|
93
|
+
...(typeof (keycloakProp === null || keycloakProp === void 0 ? void 0 : keycloakProp.realm) !== "undefined" ? {
|
|
94
|
+
realm: keycloakProp.realm
|
|
95
|
+
} : {
|
|
96
|
+
realm: "main"
|
|
97
|
+
}),
|
|
98
|
+
...(typeof (keycloakProp === null || keycloakProp === void 0 ? void 0 : keycloakProp.scope) !== "undefined" ? {
|
|
99
|
+
scope: keycloakProp.scope
|
|
100
|
+
} : {
|
|
101
|
+
scope: []
|
|
102
|
+
})
|
|
103
|
+
};
|
|
104
|
+
}, [keycloakProp]);
|
|
105
|
+
var keycloak = (0, import_react.useMemo)(function () {
|
|
106
|
+
return typeof window !== "undefined" ? new import_keycloak_js.default({
|
|
107
|
+
clientId: keycloakConfig.clientId,
|
|
108
|
+
realm: keycloakConfig.realm,
|
|
109
|
+
url: keycloakConfig.baseUrl
|
|
110
|
+
}) : void 0;
|
|
111
|
+
}, [keycloakConfig]);
|
|
112
|
+
var clearTokens = (0, import_react.useMemo)(function () {
|
|
113
|
+
return clearTokensProp || async function () {
|
|
114
|
+
await Promise.resolve(import_store.storage.removeItem(ID_TOKEN_KEY));
|
|
115
|
+
await Promise.resolve(import_store.storage.removeItem(REFRESH_TOKEN_KEY));
|
|
116
|
+
await Promise.resolve(import_store.storage.removeItem(ACCESS_TOKEN_KEY));
|
|
117
|
+
};
|
|
118
|
+
}, [clearTokensProp]);
|
|
119
|
+
var setTokens = (0, import_react.useMemo)(function () {
|
|
120
|
+
return setTokensProp || async function (param2) {
|
|
121
|
+
var {
|
|
122
|
+
accessToken,
|
|
123
|
+
refreshToken,
|
|
124
|
+
idToken
|
|
125
|
+
} = param2;
|
|
126
|
+
await Promise.resolve(import_store.storage.setItem(ID_TOKEN_KEY, idToken));
|
|
127
|
+
await Promise.resolve(import_store.storage.setItem(REFRESH_TOKEN_KEY, refreshToken));
|
|
128
|
+
await Promise.resolve(import_store.storage.setItem(ACCESS_TOKEN_KEY, accessToken));
|
|
129
|
+
};
|
|
130
|
+
}, [setTokensProp]);
|
|
131
|
+
var getTokens = (0, import_react.useMemo)(function () {
|
|
132
|
+
return getTokensProp || async function () {
|
|
133
|
+
return {
|
|
134
|
+
accessToken: (await Promise.resolve(import_store.storage.getItem(ACCESS_TOKEN_KEY))) || "",
|
|
135
|
+
idToken: (await Promise.resolve(import_store.storage.getItem(ID_TOKEN_KEY))) || "",
|
|
136
|
+
refreshToken: (await Promise.resolve(import_store.storage.getItem(REFRESH_TOKEN_KEY))) || ""
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
}, [getTokensProp]);
|
|
140
|
+
var keycloakRealmUrl = (0, import_react.useMemo)(function () {
|
|
141
|
+
return `${keycloakConfig.baseUrl}/realms/${keycloakConfig.realm || "main"}`;
|
|
142
|
+
}, [keycloakConfig]);
|
|
143
|
+
var keycloakSiweUrl = (0, import_react.useMemo)(function () {
|
|
144
|
+
return `${keycloakRealmUrl}/siwe`;
|
|
145
|
+
}, [keycloakRealmUrl]);
|
|
146
|
+
var config = (0, import_react.useMemo)(function () {
|
|
147
|
+
return (0, import_wagmi.createConfig)((0, import_connectkit.getDefaultConfig)({
|
|
148
|
+
appName: "Example",
|
|
149
|
+
chains: [import_chains.mainnet, import_chains.polygon, import_chains.optimism, import_chains.arbitrum],
|
|
150
|
+
walletConnectProjectId: props.appName || "Example",
|
|
151
|
+
...props,
|
|
152
|
+
...wagmiProp
|
|
153
|
+
}));
|
|
154
|
+
}, [props, wagmiProp]);
|
|
155
|
+
var siweConfig = (0, import_react.useMemo)(function () {
|
|
156
|
+
var siweConfig2 = {
|
|
157
|
+
getNonce: async function getNonce1() {
|
|
158
|
+
return (0, import_util.getNonce)(keycloakSiweUrl);
|
|
159
|
+
},
|
|
160
|
+
// Chain-agnostic: derives the signer family from the active connector's
|
|
161
|
+
// (possibly synthetic) chainId and builds the matching SIWx message, so EVM
|
|
162
|
+
// and Solana/Sui/Bitcoin all sign in through ConnectKit's one signIn().
|
|
163
|
+
createMessage(param2) {
|
|
164
|
+
var {
|
|
165
|
+
nonce,
|
|
166
|
+
address,
|
|
167
|
+
chainId
|
|
168
|
+
} = param2;
|
|
169
|
+
return (0, import_connectkit.createWalletMessage)({
|
|
170
|
+
address,
|
|
171
|
+
chainId,
|
|
172
|
+
nonce
|
|
173
|
+
});
|
|
174
|
+
},
|
|
175
|
+
async verifyMessage(param2) {
|
|
176
|
+
var {
|
|
177
|
+
message,
|
|
178
|
+
signature
|
|
179
|
+
} = param2;
|
|
180
|
+
var formData = new URLSearchParams({
|
|
181
|
+
client_id: keycloakConfig.clientId,
|
|
182
|
+
grant_type: "password",
|
|
183
|
+
password: (0, import_base64.encodeBase64)(message),
|
|
184
|
+
username: signature,
|
|
185
|
+
scope: ["openid", [...(Array.isArray(keycloakConfig.scope) ? keycloakConfig.scope : keycloakConfig.scope ? [keycloakConfig.scope] : [])]].join(" ")
|
|
186
|
+
});
|
|
187
|
+
var res = await fetch(`${keycloakRealmUrl}/protocol/openid-connect/token`, {
|
|
188
|
+
method: "POST",
|
|
189
|
+
credentials: "include",
|
|
190
|
+
headers: {
|
|
191
|
+
"Content-Type": "application/x-www-form-urlencoded"
|
|
192
|
+
},
|
|
193
|
+
body: formData
|
|
194
|
+
});
|
|
195
|
+
if (!res.ok) {
|
|
196
|
+
var error = new Error(`sign in failed with status ${res.status}`);
|
|
197
|
+
logger.warn(error);
|
|
198
|
+
onSignedInFailed === null || onSignedInFailed === void 0 ? void 0 : onSignedInFailed(error);
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
var data = await res.json();
|
|
202
|
+
if (!data.access_token || !data.id_token || !data.refresh_token) {
|
|
203
|
+
var error1 = new Error(`missing tokens ${[!data.access_token && "access_token", !data.id_token && "id_token", !data.refresh_token && "refresh_token"].filter(Boolean).reduce(function (acc, curr, i, arr) {
|
|
204
|
+
if (i === 0) return curr;
|
|
205
|
+
if (i === arr.length - 1) return `${acc} and ${curr}`;
|
|
206
|
+
return `${acc}, ${curr}`;
|
|
207
|
+
}, "")}`);
|
|
208
|
+
logger.warn(error1);
|
|
209
|
+
onSignedInFailed === null || onSignedInFailed === void 0 ? void 0 : onSignedInFailed(error1);
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
await Promise.resolve(setTokens({
|
|
213
|
+
accessToken: data.access_token,
|
|
214
|
+
idToken: data.id_token,
|
|
215
|
+
refreshToken: data.refresh_token
|
|
216
|
+
}));
|
|
217
|
+
onSignedIn === null || onSignedIn === void 0 ? void 0 : onSignedIn();
|
|
218
|
+
return true;
|
|
219
|
+
},
|
|
220
|
+
async getSession() {
|
|
221
|
+
if (!keycloak) return null;
|
|
222
|
+
var {
|
|
223
|
+
accessToken,
|
|
224
|
+
refreshToken,
|
|
225
|
+
idToken
|
|
226
|
+
} = await Promise.resolve(getTokens());
|
|
227
|
+
await keycloak.init({
|
|
228
|
+
checkLoginIframe: false,
|
|
229
|
+
flow: "implicit",
|
|
230
|
+
idToken,
|
|
231
|
+
onLoad: void 0,
|
|
232
|
+
refreshToken,
|
|
233
|
+
timeSkew: 0,
|
|
234
|
+
token: accessToken
|
|
235
|
+
});
|
|
236
|
+
if (keycloak.token !== accessToken || keycloak.refreshToken !== refreshToken || keycloak.idToken !== idToken) {
|
|
237
|
+
await Promise.resolve(setTokens({
|
|
238
|
+
accessToken: keycloak.token || accessToken,
|
|
239
|
+
idToken: keycloak.idToken || idToken,
|
|
240
|
+
refreshToken: keycloak.refreshToken || refreshToken
|
|
241
|
+
}));
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
var res = await fetch(`${keycloakSiweUrl}/session`, {
|
|
245
|
+
headers: {
|
|
246
|
+
Authorization: `Bearer ${keycloak.token}`
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
if (res.ok) return res.json();
|
|
250
|
+
if (res.status === 401) return null;
|
|
251
|
+
throw new Error("Failed to get session");
|
|
252
|
+
} catch (err) {
|
|
253
|
+
if (_instanceof(err, Error) && err.message === "Failed to get session") {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
throw err;
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
async signOut() {
|
|
260
|
+
if (!keycloak) return false;
|
|
261
|
+
keycloak.idToken = void 0;
|
|
262
|
+
keycloak.refreshToken = void 0;
|
|
263
|
+
keycloak.token = void 0;
|
|
264
|
+
await Promise.resolve(clearTokens());
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
return siweConfig2;
|
|
269
|
+
}, [keycloakRealmUrl, keycloakSiweUrl, keycloakConfig]);
|
|
270
|
+
if (siwe) {
|
|
271
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_wagmi.WagmiProvider, {
|
|
272
|
+
config,
|
|
273
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {
|
|
274
|
+
client: queryClient,
|
|
275
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_connectkit.SIWEProvider, {
|
|
276
|
+
signOutOnAccountChange: false,
|
|
277
|
+
signOutOnDisconnect: false,
|
|
278
|
+
signOutOnNetworkChange: false,
|
|
279
|
+
...siweConfig,
|
|
280
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_connectkit.ConnectKitProvider, {
|
|
281
|
+
debugMode: debug,
|
|
282
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SiweKeycloakContext.Provider, {
|
|
283
|
+
value: {
|
|
284
|
+
keycloak
|
|
285
|
+
},
|
|
286
|
+
children
|
|
287
|
+
})
|
|
288
|
+
})
|
|
289
|
+
})
|
|
290
|
+
})
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_wagmi.WagmiProvider, {
|
|
294
|
+
config,
|
|
295
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, {
|
|
296
|
+
client: queryClient,
|
|
297
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_connectkit.ConnectKitProvider, {
|
|
298
|
+
debugMode: debug,
|
|
299
|
+
children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_context.SiweKeycloakContext.Provider, {
|
|
300
|
+
value: {
|
|
301
|
+
keycloak
|
|
302
|
+
},
|
|
303
|
+
children
|
|
304
|
+
})
|
|
305
|
+
})
|
|
306
|
+
})
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=SiweKeycloakProvider.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","SiweKeycloakProvider_exports","__export","SiweKeycloakProvider","module","exports","import_jsx_runtime","require","import_keycloak_js","__toESM","import_react_query","import_connectkit","import_react","import_wagmi","import_chains","import_store","import_context","import_base64","import_util","_instanceof","left","right","Symbol","hasInstance","queryClient","QueryClient","logger","console","ACCESS_TOKEN_KEY","ID_TOKEN_KEY","REFRESH_TOKEN_KEY","param","children","clearTokens","clearTokensProp","debug","getTokens","getTokensProp","keycloak","keycloakProp","siwe","setTokens","setTokensProp","wagmi","wagmiProp","onSignedIn","onSignedInFailed","props","keycloakConfig","useMemo","baseUrl","clientId","realm","scope","window","default","url","Promise","resolve","storage","removeItem","param2","accessToken","refreshToken","idToken","setItem","getItem","keycloakRealmUrl","keycloakSiweUrl","config","createConfig","getDefaultConfig","appName","chains","mainnet","polygon","optimism","arbitrum","walletConnectProjectId","siweConfig","siweConfig2","getNonce","getNonce1","createMessage","nonce","address","chainId","createWalletMessage","verifyMessage","message","signature","formData","URLSearchParams","client_id","grant_type","password","encodeBase64","username","Array","isArray","join","res","fetch","method","credentials","headers","body","ok","error","Error","status","warn","data","json","access_token","id_token","refresh_token","error1","filter","Boolean","reduce","acc","curr","i","arr","length","getSession","init","checkLoginIframe","flow","onLoad","timeSkew","token","Authorization"],"sources":["../../src/SiweKeycloakProvider.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,4BAAA;AAAAC,QAAA,CAAAD,4BAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAqB,CAAAK,4BAAA;AACrB,IAAAK,kBAAA,GAAiDC,OAAA;AAGjD,IAAAC,kBAAA,GAKOC,OAAA,CAAAF,OAAA;AAEP,IAAAG,kBAAwB,GAAAH,OAAA;AACxB,IAAAI,iBAA4C,GAAAJ,OAAA;AAC5C,IAAAK,YAAA,GAAAL,OAAqD;AAErD,IAAAM,YAAA,GAAwBN,OAAA;AACxB,IAAAO,aAAA,GAAAP,OAAoC;AAEpC,IAAAQ,YAAA,GAAAR,OAA6B;AAC7B,IAAAS,cAAyB,GAAAT,OAAA;AAiQX,IAAAU,aAAA,GAAAV,OAAA;AAvOd,IAAAW,WAAM,GAAAX,OAAkB;AACxB,SAAMY,WAASA,CAAAC,IAAA,EAAAC,KAAA;EACf,2BAAyB;;EACzB,IAAMA,KAAA,YAAe,OAAAC,MAAA,oBAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IACrB,OAAM,EAAAF,KAAA,CAAAC,MAAA,CAAoBC,WAAA,EAAAH,IAAA;EAEnB,OAAS;IACd,OAAAA,IAAA,YAAAC,KAAA;EACA;AAAa;AACb,IACAG,WAAW,OAAAd,kBAAA,CAAAe,WAAA;AAAA,IACXC,MAAA,GAAUC,OAAA;AAAA,IACVC,gBAAA;AAAA,IACAC,YAAW;AAAA,IACXC,iBAAO;AAAA,SACP3B,qBAAA4B,KAAA;EACA;IAAAC,QAAA;IAAAC,WAAA,EAAAC,eAAA;IAAAC,KAAA;IAAAC,SAAA,EAAAC,aAAA;IAAAC,QAAA,EAAAC,YAAA;IAAAC,IAAA;IAAAC,SAAA,EAAAC,aAAA;IAAAC,KAAA,EAAAC,SAAA;IAAAC,UAAA;IAAAC,gBAAA;IAAA,GAAAC;EAAA,IAAAhB,KAAA;EACA,IAAGiB,cAAA,OAAApC,YAAA,CAAAqC,OAAA;IACyB;MAC5B,GAAMV,YAAA;MACJ,YAAOA,YAAA,aAAAA,YAAA,uBAAAA,YAAA,CAAAW,OAAA;QACLA,OAAG,EAAAX,YAAA,CAAAW;MACH,IAAI;QAGEA,OAAA,EAAS;MACX;MACJ,IAAI,QAAOX,YAAA,KAAc,QAAAA,YAAa,KAChC,cAAU,IAAAA,YAAa,CAAAY,QACvB,iBAAgB;QACtBA,QAAW,EAAAZ,YAAc,CAAAY;MAGzB,IAAI;QAGNA,QAAA;MACC;MACH,YAAAZ,YAAA,aAAAA,YAAA,uBAAAA,YAAA,CAAAa,KAAA;QACMA,KAAA,EAAAb,YAAW,CAAAa;MACf,IACE;QAEMA,KAAA;MACA;MACA,YAAKb,YAAe,aAAAA,YAAA,uBAAAA,YAAA,CAAAc,KAAA;QACrBA,KACD,EAAAd,YAAA,CAAAc;MACL;QACHA,KAAA;MACA;IACE;EAGI,IACAd,YAAM,CACN;EAA0D,IAC5DD,QAAA,OAAA1B,YAAA,CAAAqC,OAAA;IACF,OAAC,OAAAK,MAAe,uBAAA9C,kBAAA,CAAA+C,OAAA;MAClBJ,QAAA,EAAAH,cAAA,CAAAG,QAAA;MACAC,KAAM,EAAAJ,cAAY,CAAAI,KAAA;MAChBI,GAAA,EACER,cAAA,CAAAE;IAEE,UAAM;EACN,IACAF,cAAM,CAA8D,CACtE;EAAA,IACDf,WAAA,GAAa,IAAArB,YAAA,CAAAqC,OAAA;IAChB,OAAAf,eAAA;MACA,MAAMuB,OAAA,CAAAC,OAAY,CAAA3C,YAAA,CAAA4C,OAAA,CAAAC,UAAA,CAAA/B,YAAA;MAChB,MACE4B,OAAA,CAAAC,OAAA,CACC3C,YAAA,CAAa4C,OAAA,CAAAC,UAAA,CAAA9B,iBAAA;MACZ,MAAA2B,OAAc,CAAAC,OAAM,CAAA3C,YAAQ,CAAQ4C,OAAA,CAAAC,UAAA,CAAAhC,gBAAgB;IAAuB;EACR,IAErEM,eAAA,EACF;EACF,IAAAO,SAAA,OAAA7B,YAAA,CAAAqC,OAAA;IACA,OAAMP,aAAA,oBAAmBmB,MAAA;MACvB,IAAM;QAAAC,WAAG;QAAAC,YAAsB;QAAAC;MAAW,IAAAH,MAAA;MACzC,MAAAJ,OAAc,CAAAC,OAAA,CAAA3C,YAAA,CAAA4C,OAAA,CAAAM,OAAA,CAAApC,YAAA,EAAAmC,OAAA;MACjB,MAAAP,OAAA,CAAAC,OAAA,CAAA3C,YAAA,CAAA4C,OAAA,CAAAM,OAAA,CAAAnC,iBAAA,EAAAiC,YAAA;MACA,MAAMN,OAAA,CAAAC,OAAA,CAAA3C,YAAkB,CAAA4C,OAAA,CAAAM,OAAQ,CAAArC,gBAAS,EAAAkC,WAAyB,CAAC;IACnE;EAAe,GACb,CACEpB,aACE,CAAiB;EACN,IAAAN,SACT,GAAS,IAAAxB,YAAA,CAAAqC,OAAS;IAA2B,OAC7CZ,aAAA,sBAA8B;MAAW,OACtC;QACHyB,WAAG,SAAAL,OAAA,CAAAC,OAAA,CAAA3C,YAAA,CAAA4C,OAAA,CAAAO,OAAA,CAAAtC,gBAAA;QACJoC,OAAA,SAAAP,OAAA,CAAAC,OAAA,CAAA3C,YAAA,CAAA4C,OAAA,CAAAO,OAAA,CAAArC,YAAA;QACHkC,YAAA,SAAAN,OAAA,CAAAC,OAAA,CAAA3C,YAAA,CAAA4C,OAAA,CAAAO,OAAA,CAAApC,iBAAA;MACD;IACH;EACA,IACEO,aAAM,CAAyB;EACiB,IAAA8B,gBAAA,OAAAvD,YAAA,CAAAqC,OAAA;IAAA,UAAAD,cAAA,CAAAE,OAAA,WAAAF,cAAA,CAAAI,KAAA;EAAA,IAAAJ,cAI9C,CACE;EAAsD,IACxDoB,eAAA,OAAAxD,YAAA,CAAAqC,OAAA;IAAA,OACA,GAAMkB,gBAAgB,OAAS;EAC7B,IAAqCA,gBACnC,CAA0B;EACd,IAAAE,MACZ,OAAAzD,YAAU,CAAAqC,OAAA,cAAa;IAAO,OAC9B,IAAApC,YAAU,CAAAyD,YAAA,MAAA3D,iBAAA,CAAA4D,gBAAA;MAAAC,OACV,WAAO;MAAAC,MACL,GAAA3D,aACA,CAAA4D,OAAA,EAAA5D,aACM,CAAA6D,OAAM,EAIH7D,aACT,CAAA8D,QAAA,EAAA9D,aACQ,CAAA+D,QAAA;MAEZC,sBAAkB,EAAA/B,KAAS,CAAAyB,OAAA,aAAgB;MAAkC,GAAAzB,KAC3E;MAAQ,GAAAH;IACK;EACJ,IACSG,KAAA,EAClBH,SACA,CAAM;EAER,IAAAmC,UAAK,GAAI,EAAI,EAAAnE,YAAA,CAAAqC,OAAA;IACX,IAAA+B,WAAM;MACNC,QAAA,iBAAiBC,UAAA;QACjB,WAAAhE,WAAmB,CAAA+D,QAAK,EAAAb,eAAA;MACxB;MAAO;MAET;MACA;MACEe,aAAMA,CAAAtB,MAAQ,EAAI;QAAA,IAChB;UAAAuB,KAAA;UAAAC,OAAA;UAAkBC;QAAA,IAAAzB,MAAA;QAAA,OACf,IAAAlD,iBAAqB,CAAA4E,mBAAA;UAAAF,OACrB;UAAiBC,OACjB;UAAsBF;QAIrB;MACA;MACA,MAAAI,aAAUA,CAAA3B,MAAQ;QAAI,IACxB;UAAA4B,OAAM;UAAAC;QAAA,IAAA7B,MAAA;QAAA,IACV8B,QAAA,OAAAC,eAAA;UACAC,SAAO,EAAA7C,cAAU,CAAAG,QAAA;UACjB2C,UAAA,YAAmB;UACnBC,QAAO,MAAA9E,aAAA,CAAA+E,YAAA,EAAAP,OAAA;UACTQ,QAAA,EAAAP,SAAA;UACArC,KAAM,GACJ,QAAU,EACR,CACA,IAAA6C,KAAS,CAAAC,OAAK,CAAAnD,cAAA,CAAAK,KAAA,IAAAL,cAAA,CAAAK,KAAA,GAAAL,cAAA,CAAAK,KAAA,IACdL,cAAc,CAAKK,KAAA,CACpB,OACH,CACA,CAAA+C,IAAA;QACA;QACF,IAAAC,GAAA,SAAAC,KAAA,IAAAnC,gBAAA;UACAoC,MAAM;UACJC,WAAK,EAAU,SAAO;UACtBC,OAAQ;YACR,cAAe,EAAK;UAClB;UACAC,IAAA,EAAMf;QAAA,EACN;QAAA,IACA,CAAAU,GAAA,CAAAM,EAAQ;UACR,IAAAC,KAAA,OAAAC,KAAA,+BAAAR,GAAA,CAAAS,MAAA;UACApF,MAAA,CAAAqF,IAAU,CAAAH,KAAA;UACV9D,gBAAO,aAAAA,gBAAA,uBAAAA,gBAAA,CAAA8D,KAAA;UACR;QACD;QAKE,IAAAI,IAAM,SAAQX,GAAA,CAAAY,IAAA;QAAA,IACZ,CAAAD,IAAA,CAAAE,YAAU,KAAAF,IAAA,CAAAG,QAAA,KAAAH,IAAA,CAAAI,aAAA;UAAA,IACRC,MAAA,OAAaR,KAAA,mBAAkB,EAAAG,IAC/B,CAAAE,YAAS,IAAS,cAAW,GAAAF,IAC7B,CAAAG,QAAA,IAAc,UAAS,EACzB,CAACH,IAAA,CAAAI,aAAA,oBACH,CAAAE,MAAA,CAAAC,OAAA,EAAAC,MAAA,WAAAC,GAAA,EAAAC,IAAA,EAAAC,CAAA,EAAAC,GAAA;YACF,IAAAD,CAAA,eAAAD,IAAA;YACI,IAAAC,CAAA,KAAAC,GAAA,CAAAC,MAAA,gBAAAJ,GAAA,QAAAC,IAAA;YACF,OAAM,GAAMD,GAAA,KAAMC,IAAM;UAA8B,GACpD;UAAShG,MACP,CAAAqF,IAAA,CAAAM,MAAA,CAAe;UAAwBvE,gBACzC,aAAAA,gBAAA,uBAAAA,gBAAA,CAAAuE,MAAA;UACF,OAAC;QACD;QACA,MAAI5D,OAAI,CAAAC,OAAW,CAAAjB,SAAK;UACxBqB,WAAU,EAAAkD,IAAM,CAAAE,YAAA;UAClBlD,OAAS,EAAAgD,IAAK,CAAAG,QAAA;UACZpD,YAAI,EAAAiD,IAAA,CAAeI;QACjB;QAAOvE,UACT,aAAAA,UAAA,uBAAAA,UAAA;QACA,WAAM;MAAA;MAEV,MAAAiF,WAAA;QACA,IAAM,CAAAxF,QAAA,EAAU;QACd,IAAI;UAACwB,WAAU;UAAAC,YAAO;UAAAC;QAAA,UAAAP,OAAA,CAAAC,OAAA,CAAAtB,SAAA;QACtB,MAAAE,QAAS,CAAAyF,IAAU;UACnBC,gBAAS,OAAe;UACxBC,IAAA,YAAiB;UACjBjE,OAAM;UACNkE,MAAO;UACTnE,YAAA;UACFoE,QAAA;UACAC,KAAO,EAAAtE;QACL;QAEA,IAAMxB,QAAA,CAAA8F,KAAA,KAAAtE,WAAA,IAAAxB,QAAA,CAAAyB,YAAA,KAAAA,YAAA,IAAAzB,QAAA,CAAA0B,OAAA,KAAAA,OAAA;UACR,MACEP,OAAA,CAAAC,OAAA,CAAAjB,SAAA;YAEKqB,WAAA,EAAAxB,QAAA,CAAA8F,KAAA,IAAAtE,WAAA;YAAAE,OAAA,EAAA1B,QAAA,CAAA0B,OAAA,IAAAA,OAAA;YACCD,YAAA,EAAAzB,QAAwB,CAAAyB,YAAA,IAAAA;UACxB;QACA;QACC,IAAG;UAEJ,IAAAsC,GAAA,SAAAC,KAAA,IAAAlC,eAAA,YAAC;YAIDqC,OAAA;cAGN4B,aAAA,YAAA/F,QAAA,CAAA8F,KAAA;YAEJ;UAEE;UAUJ,IAAA/B,GAAA,CAAAM,EAAA,SAAAN,GAAA,CAAAY,IAAA","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
14
|
+
get: () => from[key],
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
}), mod);
|
|
23
|
+
var base64_exports = {};
|
|
24
|
+
__export(base64_exports, {
|
|
25
|
+
encodeBase64: () => encodeBase64
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(base64_exports);
|
|
28
|
+
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
29
|
+
function encodeBytes(bytes) {
|
|
30
|
+
let output = "";
|
|
31
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
32
|
+
const a = bytes[i] ?? 0;
|
|
33
|
+
const b = bytes[i + 1] ?? 0;
|
|
34
|
+
const c = bytes[i + 2] ?? 0;
|
|
35
|
+
const triple = a << 16 | b << 8 | c;
|
|
36
|
+
output += alphabet[triple >> 18 & 63];
|
|
37
|
+
output += alphabet[triple >> 12 & 63];
|
|
38
|
+
output += i + 1 < bytes.length ? alphabet[triple >> 6 & 63] : "=";
|
|
39
|
+
output += i + 2 < bytes.length ? alphabet[triple & 63] : "=";
|
|
40
|
+
}
|
|
41
|
+
return output;
|
|
42
|
+
}
|
|
43
|
+
function encodeBase64(input) {
|
|
44
|
+
if (typeof globalThis.btoa === "function") {
|
|
45
|
+
return globalThis.btoa(input);
|
|
46
|
+
}
|
|
47
|
+
if (typeof Buffer !== "undefined") {
|
|
48
|
+
return Buffer.from(input, "utf-8").toString("base64");
|
|
49
|
+
}
|
|
50
|
+
return encodeBytes(new TextEncoder().encode(input));
|
|
51
|
+
}
|