@deephaven/auth-plugins 0.70.0 → 0.70.1-beta.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AuthPluginPsk.d.ts","sourceRoot":"","sources":["../src/AuthPluginPsk.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAsC3D,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAuKF,QAAA,MAAM,aAAa,EAAE,UAGpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"AuthPluginPsk.d.ts","sourceRoot":"","sources":["../src/AuthPluginPsk.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAsC3D,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAiKF,QAAA,MAAM,aAAa,EAAE,UAGpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,8 +1,7 @@
1
1
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
2
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
3
3
  import React, { useCallback, useEffect, useRef, useState } from 'react';
4
- import { CSSTransition } from 'react-transition-group';
5
- import { LoadingOverlay, ThemeExport } from '@deephaven/components';
4
+ import { FadeTransition, LoadingOverlay } from '@deephaven/components';
6
5
  import { useClient } from '@deephaven/jsapi-bootstrap';
7
6
  import { useBroadcastLoginListener } from '@deephaven/jsapi-components';
8
7
  import Log from '@deephaven/log';
@@ -168,10 +167,8 @@ function Component(_ref) {
168
167
  (_inputField$current = inputField.current) === null || _inputField$current === void 0 ? void 0 : _inputField$current.focus();
169
168
  }, [inputField, isInputRequired]);
170
169
  return /*#__PURE__*/_jsxs(_Fragment, {
171
- children: [isLoggedIn && children, isInputRequired && /*#__PURE__*/_jsx(CSSTransition, {
170
+ children: [isLoggedIn && children, isInputRequired && /*#__PURE__*/_jsx(FadeTransition, {
172
171
  in: !isLoggedIn,
173
- timeout: ThemeExport.transitionMs,
174
- classNames: "fade",
175
172
  mountOnEnter: true,
176
173
  unmountOnExit: true,
177
174
  children: /*#__PURE__*/_jsx(Login, {
@@ -1 +1 @@
1
- {"version":3,"file":"AuthPluginPsk.js","names":["React","useCallback","useEffect","useRef","useState","CSSTransition","LoadingOverlay","ThemeExport","useClient","useBroadcastLoginListener","Log","getErrorMessage","Cookies","LoginForm","Login","AuthenticationError","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","log","module","getWindowToken","URLSearchParams","window","location","search","get","clearWindowToken","debug2","url","URL","href","searchParams","delete","history","replaceState","readCookieToken","_Cookies$get","storeCookieToken","token","set","secure","sameSite","remove","Component","_ref","children","logoPath","client","inputField","loginPromise","error","setError","isInputRequired","setIsInputRequired","isLoggedIn","setIsLoggedIn","isLoggingIn","setIsLoggingIn","setToken","login","_ref2","_asyncToGenerator","loginToken","showError","arguments","length","undefined","info","newLoginPromise","type","current","e","_getErrorMessage","message","_x","apply","cancelLogin","onLogin","debug","newToken","onLogout","isCanceled","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","autoFocusInput","_inputField$current","focus","in","timeout","transitionMs","classNames","mountOnEnter","unmountOnExit","errorMessage","onSubmit","className","htmlFor","id","name","autoComplete","autoCapitalize","autoCorrect","spellCheck","ref","value","onChange","event","target","isLoaded","isLoading","AuthPluginPsk","isAvailable","authHandlers","includes"],"sources":["../src/AuthPluginPsk.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { LoadingOverlay, ThemeExport } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport Log from '@deephaven/log';\nimport { getErrorMessage } from '@deephaven/utils';\nimport Cookies from 'js-cookie';\nimport { AuthPlugin, AuthPluginProps } from './AuthPlugin';\nimport LoginForm from './LoginForm';\nimport Login from './Login';\nimport AuthenticationError from './AuthenticationError';\n\nconst AUTH_TYPE = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n\nconst PSK_QUERY_PARAM_KEY = 'psk';\n\nconst PSK_TOKEN_KEY = 'io.deephaven.web.client.auth.psk.token';\n\nconst log = Log.module('AuthPluginPsk');\n\nfunction getWindowToken(): string | null {\n return new URLSearchParams(window.location.search).get(PSK_QUERY_PARAM_KEY);\n}\n\nfunction clearWindowToken(): void {\n log.debug2('clearWindowToken');\n const url = new URL(window.location.href);\n url.searchParams.delete(PSK_QUERY_PARAM_KEY);\n\n window.history.replaceState(null, '', url.href);\n}\n\nfunction readCookieToken(): string | null {\n return Cookies.get(PSK_TOKEN_KEY) ?? null;\n}\n\nfunction storeCookieToken(token: string | null): void {\n log.debug2('Storing token in cookie', token);\n if (token != null) {\n Cookies.set(PSK_TOKEN_KEY, token, { secure: true, sameSite: 'strict' });\n } else {\n Cookies.remove(PSK_TOKEN_KEY);\n }\n}\n\nexport type AuthPluginPskProps = AuthPluginProps & {\n /** Custom path to a logo to display on the login screen */\n logoPath?: string;\n};\n\n/**\n * AuthPlugin that tries to login using a pre-shared key.\n * Add the `psk=<token>` parameter to your URL string to set the token.\n */\nfunction Component({ children, logoPath }: AuthPluginPskProps): JSX.Element {\n const client = useClient();\n const inputField = useRef<HTMLInputElement>(null);\n const loginPromise = useRef<Promise<void> | null>(null);\n const [error, setError] = useState<unknown>();\n const [isInputRequired, setIsInputRequired] = useState(false);\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [token, setToken] = useState('');\n\n const login = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n async (loginToken: string, showError: boolean = true) => {\n log.info('Logging in...');\n setIsLoggingIn(true);\n let newLoginPromise: Promise<void> | null = null;\n try {\n newLoginPromise = client.login({ type: AUTH_TYPE, token: loginToken });\n loginPromise.current = newLoginPromise;\n await newLoginPromise;\n\n log.info('Logged in successfully');\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n storeCookieToken(loginToken);\n setIsLoggedIn(true);\n } catch (e) {\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n setIsInputRequired(true);\n if (showError) {\n log.error('Unable to login', e);\n const message =\n getErrorMessage(e) ?? 'Unable to login: Verify credentials.';\n setError(new AuthenticationError(message));\n }\n }\n setIsLoggingIn(false);\n },\n [client]\n );\n\n const cancelLogin = useCallback(() => {\n loginPromise.current = null;\n setIsLoggingIn(false);\n }, []);\n\n const onLogin = useCallback(async () => {\n log.debug('onLogin');\n\n // User logged in successfully in another tab, we should be able to read the token from the cookie and login\n const newToken = readCookieToken();\n if (isLoggedIn || isLoggingIn || newToken == null) {\n return;\n }\n\n login(newToken, false);\n }, [isLoggedIn, isLoggingIn, login]);\n const onLogout = useCallback(() => {\n storeCookieToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n\n useEffect(() => {\n let isCanceled = false;\n async function initialLogin(): Promise<void> {\n const initialToken = getWindowToken() ?? readCookieToken();\n clearWindowToken();\n\n if (initialToken == null) {\n setIsInputRequired(true);\n return;\n }\n\n setIsLoggingIn(true);\n try {\n await client.login({ type: AUTH_TYPE, token: initialToken });\n if (!isCanceled) {\n storeCookieToken(initialToken);\n setIsLoggedIn(true);\n setIsLoggingIn(false);\n }\n } catch (e) {\n if (!isCanceled) {\n setIsInputRequired(true);\n setIsLoggingIn(false);\n }\n }\n }\n initialLogin();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n\n const handleSubmit = useCallback(() => {\n if (!isLoggingIn) {\n login(token);\n } else {\n cancelLogin();\n }\n }, [cancelLogin, isLoggingIn, login, token]);\n\n useEffect(\n function autoFocusInput() {\n inputField.current?.focus();\n },\n [inputField, isInputRequired]\n );\n\n return (\n <>\n {isLoggedIn && children}\n {isInputRequired && (\n <CSSTransition\n in={!isLoggedIn}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <Login logoPath={logoPath}>\n <LoginForm\n errorMessage={getErrorMessage(error)}\n isLoggingIn={isLoggingIn}\n onSubmit={handleSubmit}\n >\n <div className=\"form-group\">\n <label htmlFor=\"auth-psk-token-input\">Token</label>\n <input\n id=\"auth-psk-token-input\"\n name=\"token\"\n className=\"input-token form-control\"\n type=\"text\"\n autoComplete=\"username\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n ref={inputField}\n value={token}\n onChange={event => {\n setError(undefined);\n setToken(event.target.value);\n }}\n />\n </div>\n </LoginForm>\n </Login>\n </CSSTransition>\n )}\n <LoadingOverlay\n data-testid=\"auth-psk-loading\"\n isLoaded={isLoggedIn || isInputRequired}\n isLoading={!isLoggedIn && !isInputRequired}\n />\n </>\n );\n}\n\nconst AuthPluginPsk: AuthPlugin = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_TYPE),\n};\n\nexport default AuthPluginPsk;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AuthPluginPsk.js","names":["React","useCallback","useEffect","useRef","useState","FadeTransition","LoadingOverlay","useClient","useBroadcastLoginListener","Log","getErrorMessage","Cookies","LoginForm","Login","AuthenticationError","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AUTH_TYPE","PSK_QUERY_PARAM_KEY","PSK_TOKEN_KEY","log","module","getWindowToken","URLSearchParams","window","location","search","get","clearWindowToken","debug2","url","URL","href","searchParams","delete","history","replaceState","readCookieToken","_Cookies$get","storeCookieToken","token","set","secure","sameSite","remove","Component","_ref","children","logoPath","client","inputField","loginPromise","error","setError","isInputRequired","setIsInputRequired","isLoggedIn","setIsLoggedIn","isLoggingIn","setIsLoggingIn","setToken","login","_ref2","_asyncToGenerator","loginToken","showError","arguments","length","undefined","info","newLoginPromise","type","current","e","_getErrorMessage","message","_x","apply","cancelLogin","onLogin","debug","newToken","onLogout","isCanceled","initialLogin","_initialLogin","_getWindowToken","initialToken","handleSubmit","autoFocusInput","_inputField$current","focus","in","mountOnEnter","unmountOnExit","errorMessage","onSubmit","className","htmlFor","id","name","autoComplete","autoCapitalize","autoCorrect","spellCheck","ref","value","onChange","event","target","isLoaded","isLoading","AuthPluginPsk","isAvailable","authHandlers","includes"],"sources":["../src/AuthPluginPsk.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { FadeTransition, LoadingOverlay } from '@deephaven/components';\nimport { useClient } from '@deephaven/jsapi-bootstrap';\nimport { useBroadcastLoginListener } from '@deephaven/jsapi-components';\nimport Log from '@deephaven/log';\nimport { getErrorMessage } from '@deephaven/utils';\nimport Cookies from 'js-cookie';\nimport { AuthPlugin, AuthPluginProps } from './AuthPlugin';\nimport LoginForm from './LoginForm';\nimport Login from './Login';\nimport AuthenticationError from './AuthenticationError';\n\nconst AUTH_TYPE = 'io.deephaven.authentication.psk.PskAuthenticationHandler';\n\nconst PSK_QUERY_PARAM_KEY = 'psk';\n\nconst PSK_TOKEN_KEY = 'io.deephaven.web.client.auth.psk.token';\n\nconst log = Log.module('AuthPluginPsk');\n\nfunction getWindowToken(): string | null {\n return new URLSearchParams(window.location.search).get(PSK_QUERY_PARAM_KEY);\n}\n\nfunction clearWindowToken(): void {\n log.debug2('clearWindowToken');\n const url = new URL(window.location.href);\n url.searchParams.delete(PSK_QUERY_PARAM_KEY);\n\n window.history.replaceState(null, '', url.href);\n}\n\nfunction readCookieToken(): string | null {\n return Cookies.get(PSK_TOKEN_KEY) ?? null;\n}\n\nfunction storeCookieToken(token: string | null): void {\n log.debug2('Storing token in cookie', token);\n if (token != null) {\n Cookies.set(PSK_TOKEN_KEY, token, { secure: true, sameSite: 'strict' });\n } else {\n Cookies.remove(PSK_TOKEN_KEY);\n }\n}\n\nexport type AuthPluginPskProps = AuthPluginProps & {\n /** Custom path to a logo to display on the login screen */\n logoPath?: string;\n};\n\n/**\n * AuthPlugin that tries to login using a pre-shared key.\n * Add the `psk=<token>` parameter to your URL string to set the token.\n */\nfunction Component({ children, logoPath }: AuthPluginPskProps): JSX.Element {\n const client = useClient();\n const inputField = useRef<HTMLInputElement>(null);\n const loginPromise = useRef<Promise<void> | null>(null);\n const [error, setError] = useState<unknown>();\n const [isInputRequired, setIsInputRequired] = useState(false);\n const [isLoggedIn, setIsLoggedIn] = useState(false);\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n const [token, setToken] = useState('');\n\n const login = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\n async (loginToken: string, showError: boolean = true) => {\n log.info('Logging in...');\n setIsLoggingIn(true);\n let newLoginPromise: Promise<void> | null = null;\n try {\n newLoginPromise = client.login({ type: AUTH_TYPE, token: loginToken });\n loginPromise.current = newLoginPromise;\n await newLoginPromise;\n\n log.info('Logged in successfully');\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n storeCookieToken(loginToken);\n setIsLoggedIn(true);\n } catch (e) {\n if (loginPromise.current !== newLoginPromise) {\n return;\n }\n setIsInputRequired(true);\n if (showError) {\n log.error('Unable to login', e);\n const message =\n getErrorMessage(e) ?? 'Unable to login: Verify credentials.';\n setError(new AuthenticationError(message));\n }\n }\n setIsLoggingIn(false);\n },\n [client]\n );\n\n const cancelLogin = useCallback(() => {\n loginPromise.current = null;\n setIsLoggingIn(false);\n }, []);\n\n const onLogin = useCallback(async () => {\n log.debug('onLogin');\n\n // User logged in successfully in another tab, we should be able to read the token from the cookie and login\n const newToken = readCookieToken();\n if (isLoggedIn || isLoggingIn || newToken == null) {\n return;\n }\n\n login(newToken, false);\n }, [isLoggedIn, isLoggingIn, login]);\n const onLogout = useCallback(() => {\n storeCookieToken(null);\n }, []);\n useBroadcastLoginListener(onLogin, onLogout);\n\n useEffect(() => {\n let isCanceled = false;\n async function initialLogin(): Promise<void> {\n const initialToken = getWindowToken() ?? readCookieToken();\n clearWindowToken();\n\n if (initialToken == null) {\n setIsInputRequired(true);\n return;\n }\n\n setIsLoggingIn(true);\n try {\n await client.login({ type: AUTH_TYPE, token: initialToken });\n if (!isCanceled) {\n storeCookieToken(initialToken);\n setIsLoggedIn(true);\n setIsLoggingIn(false);\n }\n } catch (e) {\n if (!isCanceled) {\n setIsInputRequired(true);\n setIsLoggingIn(false);\n }\n }\n }\n initialLogin();\n return () => {\n isCanceled = true;\n };\n }, [client]);\n\n const handleSubmit = useCallback(() => {\n if (!isLoggingIn) {\n login(token);\n } else {\n cancelLogin();\n }\n }, [cancelLogin, isLoggingIn, login, token]);\n\n useEffect(\n function autoFocusInput() {\n inputField.current?.focus();\n },\n [inputField, isInputRequired]\n );\n\n return (\n <>\n {isLoggedIn && children}\n {isInputRequired && (\n <FadeTransition in={!isLoggedIn} mountOnEnter unmountOnExit>\n <Login logoPath={logoPath}>\n <LoginForm\n errorMessage={getErrorMessage(error)}\n isLoggingIn={isLoggingIn}\n onSubmit={handleSubmit}\n >\n <div className=\"form-group\">\n <label htmlFor=\"auth-psk-token-input\">Token</label>\n <input\n id=\"auth-psk-token-input\"\n name=\"token\"\n className=\"input-token form-control\"\n type=\"text\"\n autoComplete=\"username\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n ref={inputField}\n value={token}\n onChange={event => {\n setError(undefined);\n setToken(event.target.value);\n }}\n />\n </div>\n </LoginForm>\n </Login>\n </FadeTransition>\n )}\n <LoadingOverlay\n data-testid=\"auth-psk-loading\"\n isLoaded={isLoggedIn || isInputRequired}\n isLoading={!isLoggedIn && !isInputRequired}\n />\n </>\n );\n}\n\nconst AuthPluginPsk: AuthPlugin = {\n Component,\n isAvailable: authHandlers => authHandlers.includes(AUTH_TYPE),\n};\n\nexport default AuthPluginPsk;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/auth-plugins",
3
- "version": "0.70.0",
3
+ "version": "0.70.1-beta.1+b49b5069",
4
4
  "description": "Deephaven Auth Plugins",
5
5
  "keywords": [
6
6
  "Deephaven",
@@ -33,17 +33,16 @@
33
33
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
34
34
  },
35
35
  "dependencies": {
36
- "@deephaven/components": "^0.70.0",
37
- "@deephaven/jsapi-bootstrap": "^0.70.0",
38
- "@deephaven/jsapi-components": "^0.70.0",
36
+ "@deephaven/components": "^0.70.1-beta.1+b49b5069",
37
+ "@deephaven/jsapi-bootstrap": "^0.70.1-beta.1+b49b5069",
38
+ "@deephaven/jsapi-components": "^0.70.1-beta.1+b49b5069",
39
39
  "@deephaven/jsapi-types": "1.0.0-dev0.33.1",
40
- "@deephaven/jsapi-utils": "^0.70.0",
41
- "@deephaven/log": "^0.70.0",
42
- "@deephaven/redux": "^0.70.0",
43
- "@deephaven/utils": "^0.70.0",
40
+ "@deephaven/jsapi-utils": "^0.70.1-beta.1+b49b5069",
41
+ "@deephaven/log": "^0.70.1-beta.1+b49b5069",
42
+ "@deephaven/redux": "^0.70.1-beta.1+b49b5069",
43
+ "@deephaven/utils": "^0.70.1-beta.1+b49b5069",
44
44
  "classnames": "^2.3.1",
45
- "js-cookie": "^3.0.5",
46
- "react-transition-group": "^4.4.2"
45
+ "js-cookie": "^3.0.5"
47
46
  },
48
47
  "devDependencies": {
49
48
  "@types/react": "^17.0.2"
@@ -59,5 +58,5 @@
59
58
  "publishConfig": {
60
59
  "access": "public"
61
60
  },
62
- "gitHead": "29353c229ac59589bf92880e6eb4c9f324fb1965"
61
+ "gitHead": "b49b5069d637ac136578ce839d9fc0416f468adf"
63
62
  }