From 03a573f416488ea7a22489339d4f1f6dcd9f7c7d Mon Sep 17 00:00:00 2001 From: David Antoon Date: Mon, 22 Jul 2024 02:05:03 +0300 Subject: [PATCH] migrate to valtio --- .nvmrc | 1 + lerna.json | 2 +- packages/demo-saas/package.json | 4 +- packages/example/package.json | 2 +- packages/nuxt/package.json | 4 +- packages/sanity-check/package.json | 2 +- packages/vue/package.json | 4 +- packages/vue/rollup.config.js | 2 - packages/vue/src/StoreHolder.ts | 8 +- packages/vue/src/auth/mapAuthState.ts | 2 +- packages/vue/src/auth/service.ts | 15 +- packages/vue/src/interfaces.ts | 8 +- packages/vue/src/reducer.ts | 26 --- packages/vue/src/sdkVersion.ts | 2 +- packages/vue/src/types.ts | 40 +++-- packages/vue/src/utils.ts | 6 +- yarn.lock | 226 ++++++++------------------ 17 files changed, 112 insertions(+), 242 deletions(-) create mode 100644 .nvmrc delete mode 100644 packages/vue/src/reducer.ts diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..0c19c7b4 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.18.1 diff --git a/lerna.json b/lerna.json index 73c1ac7c..31c81353 100755 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "3.0.36", + "version": "4.0.0", "npmClient": "yarn", "useWorkspaces": true, "publishConfig": { diff --git a/packages/demo-saas/package.json b/packages/demo-saas/package.json index 20c47a9e..02c7f097 100644 --- a/packages/demo-saas/package.json +++ b/packages/demo-saas/package.json @@ -1,6 +1,6 @@ { "name": "vue-demo-saas", - "version": "3.0.36", + "version": "4.0.0", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -8,7 +8,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "@frontegg/vue": "^3.0.36", + "@frontegg/vue": "^4.0.0", "vue": "^2.6.11", "vue-router": "^3.2.0" }, diff --git a/packages/example/package.json b/packages/example/package.json index 13fb9fc4..086af178 100644 --- a/packages/example/package.json +++ b/packages/example/package.json @@ -1,6 +1,6 @@ { "name": "example-v3", - "version": "3.0.36", + "version": "4.0.0", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 8945acbb..b63ada23 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@frontegg/nuxt", - "version": "3.0.36", + "version": "4.0.0", "description": "", "main": "lib/module.js", "types": "types/index.d.ts", @@ -8,6 +8,6 @@ "lib" ], "dependencies": { - "@frontegg/vue": "^3.0.36" + "@frontegg/vue": "^4.0.0" } } diff --git a/packages/sanity-check/package.json b/packages/sanity-check/package.json index 9d9d1b28..6194e267 100644 --- a/packages/sanity-check/package.json +++ b/packages/sanity-check/package.json @@ -1,7 +1,7 @@ { "name": "frontegg-angular-sanity-check", "private": true, - "version": "3.0.36", + "version": "4.0.0", "scripts": { "build": "docker-compose build test", "build:dev": "docker-compose build test --no-cache", diff --git a/packages/vue/package.json b/packages/vue/package.json index 3e9b1b72..30095179 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@frontegg/vue", - "version": "3.0.36", + "version": "4.0.0", "description": "", "main": "dist/index.ssr.js", "browser": "dist/index.js", @@ -22,7 +22,7 @@ "build:unpkg": "cross-env NODE_ENV=production rollup --config rollup.config.js --format iife" }, "dependencies": { - "@frontegg/js": "6.206.0", + "@frontegg/js": "7.0.0-alpha.9", "get-value": "^3.0.1", "set-value": "^4.0.1" }, diff --git a/packages/vue/rollup.config.js b/packages/vue/rollup.config.js index 4bc01a25..b8e7e69d 100644 --- a/packages/vue/rollup.config.js +++ b/packages/vue/rollup.config.js @@ -75,7 +75,6 @@ const external = [ 'redux-saga/effects', 'set-value', 'get-value', - '@reduxjs/toolkit', ]; // UMD/IIFE shared settings: output.globals @@ -87,7 +86,6 @@ const globals = { '@frontegg/redux-store': 'fronteggReduxStore', '@frontegg/rest-api': 'fronteggRestApi', 'vue-moment': 'vueMoment', - '@reduxjs/toolkit': 'ReduxjsToolkit', 'redux-saga': 'reduxSaga', 'redux-saga/effects': 'reduxSagaEffects', 'set-value': 'setValue', diff --git a/packages/vue/src/StoreHolder.ts b/packages/vue/src/StoreHolder.ts index 6273f0f5..d646c8b7 100644 --- a/packages/vue/src/StoreHolder.ts +++ b/packages/vue/src/StoreHolder.ts @@ -1,9 +1,9 @@ -import { EnhancedStore } from '@reduxjs/toolkit'; +import { FronteggStore } from '@frontegg/redux-store'; export class StoreHolder { private static instance: StoreHolder; - private store!: EnhancedStore; + private store!: FronteggStore; private baseName: string | undefined; private static getInstance() { @@ -13,11 +13,11 @@ export class StoreHolder { return StoreHolder.instance; } - static setStore(store: EnhancedStore) { + static setStore(store: FronteggStore) { StoreHolder.getInstance().store = store; } - static getStore(): EnhancedStore { + static getStore(): FronteggStore { return StoreHolder.getInstance().store; } diff --git a/packages/vue/src/auth/mapAuthState.ts b/packages/vue/src/auth/mapAuthState.ts index 77d05848..78fc11c9 100644 --- a/packages/vue/src/auth/mapAuthState.ts +++ b/packages/vue/src/auth/mapAuthState.ts @@ -216,7 +216,7 @@ export const useFrontegg = () => { const loginWithRedirect = () => { const path = fronteggAuth.getCurrentRoute(); - if (!path.startsWith(authState.routes.hostedLoginRedirectUrl ?? defaultFronteggRoutes.hostedLoginRedirectUrl)) { + if (!path.startsWith(authState.routes.hostedLoginRedirectUrl ?? defaultFronteggRoutes.hostedLoginRedirectUrl ?? "oauth/callback")) { fronteggStore.dispatch({ type: 'auth/setState', payload: { isLoading: true } }); fronteggAuth.loginActions.requestHostedLoginAuthorize(); } diff --git a/packages/vue/src/auth/service.ts b/packages/vue/src/auth/service.ts index 4e857430..7fb8f9da 100644 --- a/packages/vue/src/auth/service.ts +++ b/packages/vue/src/auth/service.ts @@ -1,7 +1,6 @@ import { AuthPluginOptions } from './interfaces'; -import { FronteggPluginService, FronteggStore, PluginConfig, PluginOptions } from '../interfaces'; -import { EnhancedStore } from '@reduxjs/toolkit'; -import { bindActionCreators, CaseReducerActions, SliceCaseReducers } from '@frontegg/redux-store'; +import { FronteggPluginService, PluginConfig, PluginOptions } from '../interfaces'; +import { FronteggStore } from '@frontegg/redux-store'; import { authActions, LoginActions, @@ -39,17 +38,11 @@ import { import { ActionsHolder } from './ActionsHolder'; import VueRouter from 'vue-router'; -export const sliceReducerActionsBy = >(reducer: T): CaseReducerActions => { - const reducerKeys = Object.keys(reducer); - const reducerActions = reducerKeys.map(key => ({ [key]: (authActions as any)[key as keyof AuthActions] })); - return reducerActions.reduce((p, n) => ({ ...p, ...n }), {}) as CaseReducerActions; -}; - export class FronteggAuthService implements FronteggPluginService { pluginConfig!: PluginConfig; router?: VueRouter | null; private readonly _routes!: AuthPageRoutes; - private store?: EnhancedStore; + private store?: FronteggStore; private state: AuthState = authInitialState; loginActions!: LoginActions; socialLoginsActions!: SocialLoginActions; @@ -92,7 +85,7 @@ export class FronteggAuthService implements FronteggPluginService { return this.store?.getState().auth.user; } - init = (options: PluginOptions, store: EnhancedStore) => { + init = (options: PluginOptions, store: FronteggStore) => { this.store = store; Object.entries({ diff --git a/packages/vue/src/interfaces.ts b/packages/vue/src/interfaces.ts index cd1b8997..2549e673 100644 --- a/packages/vue/src/interfaces.ts +++ b/packages/vue/src/interfaces.ts @@ -1,5 +1,5 @@ import VueRouter from 'vue-router'; -import { AuthState, EnhancedStore } from '@frontegg/redux-store'; +import { FronteggStore } from '@frontegg/redux-store'; import { FronteggAppOptions } from '@frontegg/types'; export interface PluginConfig { @@ -9,9 +9,7 @@ export interface PluginConfig { preloadedState: any; } -export interface FronteggStore { - auth: AuthState; -} + export interface PluginOptions extends FronteggAppOptions { router: VueRouter; @@ -21,5 +19,5 @@ export abstract class FronteggPluginService { public loading!: boolean; public pluginConfig!: PluginConfig; - public abstract init(options: PluginOptions, store: EnhancedStore): void; + public abstract init(options: PluginOptions, store: FronteggStore): void; } diff --git a/packages/vue/src/reducer.ts b/packages/vue/src/reducer.ts deleted file mode 100644 index 34974664..00000000 --- a/packages/vue/src/reducer.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { ContextOptions } from '@frontegg/rest-api'; - -export interface RootState { - context?: ContextOptions; -} - -const initialState: RootState = { - context: undefined, -}; - -const { reducer, actions } = createSlice({ - name: 'root', - initialState, - reducers: { - setContext: { - prepare: (context: ContextOptions) => ({ payload: context }), - reducer: (state: RootState, { payload }: PayloadAction) => ({ - ...state, - context: payload, - }), - }, - }, -}); - -export { reducer as rootReducer, actions as rootActions, initialState as rootInitialState }; diff --git a/packages/vue/src/sdkVersion.ts b/packages/vue/src/sdkVersion.ts index 8dd6e9c1..03beb469 100644 --- a/packages/vue/src/sdkVersion.ts +++ b/packages/vue/src/sdkVersion.ts @@ -1 +1 @@ -export default { version: '3.0.36' }; +export default { version: '4.0.0' }; diff --git a/packages/vue/src/types.ts b/packages/vue/src/types.ts index 1958758f..20d8bc8b 100644 --- a/packages/vue/src/types.ts +++ b/packages/vue/src/types.ts @@ -1,6 +1,4 @@ -import { EnhancedStore } from '@reduxjs/toolkit'; -import { Unsubscribe } from 'redux'; -import { Entitlement, User } from '@frontegg/redux-store'; +import { Entitlement, User, FronteggStore } from '@frontegg/redux-store'; import { EntitledToOptions, LoadEntitlementsCallback, CustomAttributes } from '@frontegg/types'; import { FronteggPluginService } from './interfaces'; @@ -11,36 +9,36 @@ declare module 'vue/types/vue' { } interface Vue { - FRONTEGG_STORE_KEY?: EnhancedStore; + FRONTEGG_STORE_KEY?: FronteggStore; FRONTEGG_ACTIONS_KEY?: any; - FRONTEGG_UNSUBSCRIBE?: Unsubscribe; + FRONTEGG_UNSUBSCRIBE?: () => void; FRONTEGG_REDUX_BINDINGS?: any; _data?: any; fronteggLoaded: boolean; loginWithRedirect: () => void; /** - @param key feature key - @param customAttributes consumer attributes - @returns if the user is entitled to the given feature. Attaching the justification if not - @throws when entitlement is not enabled via frontegg options - */ + @param key feature key + @param customAttributes consumer attributes + @returns if the user is entitled to the given feature. Attaching the justification if not + @throws when entitlement is not enabled via frontegg options + */ getFeatureEntitlements: (_user: User | undefined | null, key: string, customAttributes?: CustomAttributes) => Entitlement; /** - @param key permission key - @param customAttributes consumer attributes - @returns if the user is entitled to the given permission. Attaching the justification if not - @throws when entitlement is not enabled via frontegg options - */ + @param key permission key + @param customAttributes consumer attributes + @returns if the user is entitled to the given permission. Attaching the justification if not + @throws when entitlement is not enabled via frontegg options + */ getPermissionEntitlements: (_user: User | undefined | null, key: string, customAttributes?: CustomAttributes) => Entitlement; /** - @param entitledToOptions - including permission or feature key - @param customAttributes consumer attributes - @returns if the user is entitled to the given permission or feature. Attaching the justification if not - @throws when entitlement is not enabled via frontegg options - */ + @param entitledToOptions - including permission or feature key + @param customAttributes consumer attributes + @returns if the user is entitled to the given permission or feature. Attaching the justification if not + @throws when entitlement is not enabled via frontegg options + */ getEntitlements: (_user: User | undefined | null, entitledToOptions: EntitledToOptions, customAttributes?: CustomAttributes) => Entitlement; /** @@ -48,7 +46,7 @@ declare module 'vue/types/vue' { * @param callback called on request completed with true if succeeded, false if failed */ loadEntitlements: (callback?: LoadEntitlementsCallback) => void; - + /** * Returns true when user is stepped up, o.w false */ diff --git a/packages/vue/src/utils.ts b/packages/vue/src/utils.ts index 8c537b7a..917d7b23 100644 --- a/packages/vue/src/utils.ts +++ b/packages/vue/src/utils.ts @@ -1,11 +1,11 @@ import _Vue from 'vue'; -import { EnhancedStore } from '@reduxjs/toolkit'; +import { FronteggStore } from '@frontegg/redux-store'; import { FRONTEGG_REDUX_BINDINGS, FRONTEGG_STORE_KEY, FRONTEGG_UNSUBSCRIBE, FRONTEGG_LOADER_UNSUBSCRIBE } from './constants'; // import { mapState } from './map-state'; import { FronteggPluginService } from './interfaces'; -export const setStoreKey = (instance: any, store: EnhancedStore) => instance[FRONTEGG_STORE_KEY] = instance[FRONTEGG_STORE_KEY] ?? store; -export const getStore = (instance: any): EnhancedStore => instance[FRONTEGG_STORE_KEY]; +export const setStoreKey = (instance: any, store: FronteggStore) => instance[FRONTEGG_STORE_KEY] = instance[FRONTEGG_STORE_KEY] ?? store; +export const getStore = (instance: any): FronteggStore => instance[FRONTEGG_STORE_KEY]; export const getStoreBinding = (instance: any) => instance[FRONTEGG_REDUX_BINDINGS]; export const setStoreBinding = (instance: any, data: any) => instance[FRONTEGG_REDUX_BINDINGS] = data; export const setStoreUnsubscribe = (instance: any, unsubscribe: () => void) => instance[FRONTEGG_UNSUBSCRIBE] = unsubscribe; diff --git a/yarn.lock b/yarn.lock index 2daed9e0..02d9ba9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1668,7 +1668,7 @@ "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-transform-typescript" "^7.13.0" -"@babel/runtime@^7.11.0", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.11.0", "@babel/runtime@^7.8.4": version "7.13.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.7.tgz#d494e39d198ee9ca04f4dcb76d25d9d7a1dc961a" integrity sha512-h+ilqoX998mRVM5FtB5ijRuHUDVt5l3yfoOi2uh18Z/O3hvyaHQ39NpxVkCIG5yFs+mLq/ewFp8Bss6zmWv6ZA== @@ -1696,13 +1696,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.9.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.5.tgz#665450911c6031af38f81db530f387ec04cd9a98" - integrity sha512-121rumjddw9c3NCQ55KGkyE1h/nzWhU/owjhw0l4mQrkzz4x9SGS1X8gFLraHwX7td3Yo4QTL+qj0NcIzN87BA== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/template@^7.0.0", "@babel/template@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" @@ -1849,42 +1842,42 @@ resolved "https://registry.yarnpkg.com/@frontegg/entitlements-javascript-commons/-/entitlements-javascript-commons-1.1.2.tgz#8c771cac0796fde5bbc05abe750cb6b8677ec2c6" integrity sha512-vwCFxj9KSIKHXinOH0HbBf4DhKRbUWhjCnL14+JfQnwuEl/zKtSGZoZecrXcPajWUypdi0uT+8q3GGcqnCW13Q== -"@frontegg/js@6.206.0": - version "6.206.0" - resolved "https://registry.yarnpkg.com/@frontegg/js/-/js-6.206.0.tgz#874f72ef779d3224d4e7973f9c90f8e6feda0573" - integrity sha512-J1R6oYBulzNygSV6N3YuiUaXrLUfeiDaiVeu+ZfAONpC9nZlGvCNmumTIleeQUI4HZ7shuavwLuDZgH6y89XJQ== +"@frontegg/js@7.0.0-alpha.9": + version "7.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@frontegg/js/-/js-7.0.0-alpha.9.tgz#a7d6f68566289642d29f36274ed36c46024d301f" + integrity sha512-9pugsQmk4d2hZKCQ3nSNbbyZ7TZkEcjEBi1DVbA1XFftwgi6lzjSSHDYExQbPDOL84PxwVrTn5H1fsG0fSAP4w== dependencies: "@babel/runtime" "^7.18.6" - "@frontegg/types" "6.206.0" + "@frontegg/types" "7.0.0-alpha.9" -"@frontegg/redux-store@6.206.0": - version "6.206.0" - resolved "https://registry.yarnpkg.com/@frontegg/redux-store/-/redux-store-6.206.0.tgz#f7ca6e028a2fc9b003d74b143fe0a390ee50ae4e" - integrity sha512-tb9ZI/nry1kDUQY03V8kk/z7knDj9hLBrNjD3TnyxPLePeJClhTcAThj61jymD6/jrM3Ose70dt7T2bk/FWCUg== +"@frontegg/redux-store@7.0.0-alpha.9": + version "7.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@frontegg/redux-store/-/redux-store-7.0.0-alpha.9.tgz#ae25592ac8c17a91b3f2225b3653f5587fa2306d" + integrity sha512-dKaF/LYJHjqJ4I/qEBLDD4st1MYbZjZmm5AQsLPQe5EUcEn4YXI4qUxeBKHIU8cO8yFjM3EgPb2vARULjL+3pg== dependencies: "@babel/runtime" "^7.18.6" "@frontegg/entitlements-javascript-commons" "1.1.2" - "@frontegg/rest-api" "3.1.78" - "@reduxjs/toolkit" "1.8.5" + "@frontegg/rest-api" "3.1.79-alpha.10029056154" fast-deep-equal "3.1.3" - redux-saga "^1.2.1" + set-value "^4.1.0" uuid "^8.3.2" + valtio "^1.13.0" -"@frontegg/rest-api@3.1.78": - version "3.1.78" - resolved "https://registry.yarnpkg.com/@frontegg/rest-api/-/rest-api-3.1.78.tgz#d23a646aff9a4f8bca261fd607817d4912d533d9" - integrity sha512-v2jKZFFfzGQFaRZMm4qE5QYWRLqsIJFrNgNBTi/uNolWrxdRCsTWFwutVQ9TSj7KO4NQaqGDaipZem5QHAIjow== +"@frontegg/rest-api@3.1.79-alpha.10029056154": + version "3.1.79-alpha.10029056154" + resolved "https://registry.yarnpkg.com/@frontegg/rest-api/-/rest-api-3.1.79-alpha.10029056154.tgz#18fd970c270d405caeae1283e290fa8bb524574f" + integrity sha512-BuaWboxVOj4bNjPLhtvZJ6+SrY3sX748Qa7AEvvvz56X6iBL58xngYFu7sK0CMy7K6ou1NkrHhPqI/tehMPw9A== dependencies: "@babel/runtime" "^7.17.2" "@frontegg/entitlements-javascript-commons" "1.1.2" -"@frontegg/types@6.206.0": - version "6.206.0" - resolved "https://registry.yarnpkg.com/@frontegg/types/-/types-6.206.0.tgz#88e377a63eb2c54f3b8cc9829abd12e41470a990" - integrity sha512-rw7886X5EruIH9ywbq6dDswaRhi3eqvGJ+4Wr9Vi9dPsXj+z7ywiyLSGoGol/VlLSjsMVnrE52zf23LTYsCy9w== +"@frontegg/types@7.0.0-alpha.9": + version "7.0.0-alpha.9" + resolved "https://registry.yarnpkg.com/@frontegg/types/-/types-7.0.0-alpha.9.tgz#8e4ba1bc0f87f79e4ae5812047bf40dac787b5d9" + integrity sha512-eFqy0ycJkJCYWISeF0uvQD3LhAOOrINxoFT4Nf8mK2R3d62AlbeQpmM3vOucnFzQkbtzn2GooLFE/nCdvWRsvQ== dependencies: "@babel/runtime" "^7.18.6" - "@frontegg/redux-store" "6.206.0" + "@frontegg/redux-store" "7.0.0-alpha.9" csstype "^3.0.9" deepmerge "^4.2.2" @@ -2839,60 +2832,6 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== -"@redux-saga/core@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.2.1.tgz#3680989621517d075a2cc85e0d2744b682990ed8" - integrity sha512-ABCxsZy9DwmNoYNo54ZlfuTvh77RXx8ODKpxOHeWam2dOaLGQ7vAktpfOtqSeTdYrKEORtTeWnxkGJMmPOoukg== - dependencies: - "@babel/runtime" "^7.6.3" - "@redux-saga/deferred" "^1.2.1" - "@redux-saga/delay-p" "^1.2.1" - "@redux-saga/is" "^1.1.3" - "@redux-saga/symbols" "^1.1.3" - "@redux-saga/types" "^1.2.1" - redux "^4.0.4" - typescript-tuple "^2.2.1" - -"@redux-saga/deferred@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.2.1.tgz#aca373a08ccafd6f3481037f2f7ee97f2c87c3ec" - integrity sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g== - -"@redux-saga/delay-p@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.2.1.tgz#e72ac4731c5080a21f75b61bedc31cb639d9e446" - integrity sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w== - dependencies: - "@redux-saga/symbols" "^1.1.3" - -"@redux-saga/is@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.3.tgz#b333f31967e87e32b4e6b02c75b78d609dd4ad73" - integrity sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q== - dependencies: - "@redux-saga/symbols" "^1.1.3" - "@redux-saga/types" "^1.2.1" - -"@redux-saga/symbols@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.3.tgz#b731d56201719e96dc887dc3ae9016e761654367" - integrity sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg== - -"@redux-saga/types@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8" - integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA== - -"@reduxjs/toolkit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.5.tgz#c14bece03ee08be88467f22dc0ecf9cf875527cd" - integrity sha512-f4D5EXO7A7Xq35T0zRbWq5kJQyXzzscnHKmjnu2+37B3rwHU6mX9PYlbfXdnxcY6P/7zfmjhgan0Z+yuOfeBmA== - dependencies: - immer "^9.0.7" - redux "^4.1.2" - redux-thunk "^2.4.1" - reselect "^4.1.5" - "@rollup/plugin-alias@^3.1.1": version "3.1.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.2.tgz#c585b05be4a7782d269c69d13def56f44e417772" @@ -6771,6 +6710,11 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +derive-valtio@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/derive-valtio/-/derive-valtio-0.1.0.tgz#4b9fb393dfefccfef15fcbbddd745dd22d5d63d7" + integrity sha512-OCg2UsLbXK7GmmpzMXhYkdO64vhJ1ROUUGaTFyHjVwEdMEcTTRj7W1TxLbSBxdY8QLBPCcp66MTyaSy0RpO17A== + des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -8775,11 +8719,6 @@ image-size@~0.5.0: resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= -immer@^9.0.7: - version "9.0.15" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" - integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== - import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -9261,6 +9200,11 @@ is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== +is-primitive@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05" + integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + is-promise@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -9452,16 +9396,16 @@ js-stringify@^1.0.1: resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -9920,13 +9864,6 @@ longest@^1.0.1: resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" @@ -12274,6 +12211,11 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-compare@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.6.0.tgz#5e8c8b5c3af7e7f17e839bf6cf1435bcc4d315b0" + integrity sha512-8xuCeM3l8yqdmbPoYeLbrAXCBWu19XEYc5/F28f5qOaoAIMyfmBUkl5axiK+x9olUvRlcekvnm98AP9RDngOIw== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -12718,33 +12660,6 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -redux-saga@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.2.1.tgz#3d730563c8d980525fa5e333ea1ee6e143452275" - integrity sha512-fVCicLlf4hLP+KB6H7RHfZlZ8LdYckhaemXBB3wh//a2ESyz/z/l8ygxlm0OqPjS/PARdsQ2hIdAltxEB+NgvA== - dependencies: - "@redux-saga/core" "^1.2.1" - -redux-thunk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714" - integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== - -redux@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - -redux@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" - integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== - dependencies: - "@babel/runtime" "^7.9.2" - regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -12962,11 +12877,6 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@^4.1.5: - version "4.1.6" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" - integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== - resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -13271,9 +13181,9 @@ selfsigned@^2.1.1: node-forge "^1" "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@7.0.0: version "7.0.0" @@ -13377,6 +13287,14 @@ set-value@^4.0.1: dependencies: is-plain-object "^2.0.4" +set-value@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-4.1.0.tgz#aa433662d87081b75ad88a4743bd450f044e7d09" + integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw== + dependencies: + is-plain-object "^2.0.4" + is-primitive "^3.0.1" + setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -14125,11 +14043,6 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -symbol-observable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -14583,25 +14496,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript-compare@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" - integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== - dependencies: - typescript-logic "^0.0.0" - -typescript-logic@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" - integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== - -typescript-tuple@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" - integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== - dependencies: - typescript-compare "^0.0.2" - typescript@^3.8.3, typescript@^3.9.7, typescript@~3.9.3: version "3.9.9" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" @@ -14820,6 +14714,11 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" +use-sync-external-store@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -14909,6 +14808,15 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +valtio@^1.13.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.13.2.tgz#e31d452d5da3550935417670aafd34d832dc7241" + integrity sha512-Qik0o+DSy741TmkqmRfjq+0xpZBXi/Y6+fXZLn0xNF1z/waFMbE3rkivv5Zcf9RrMUp6zswf2J7sbh2KBlba5A== + dependencies: + derive-valtio "0.1.0" + proxy-compare "2.6.0" + use-sync-external-store "1.2.0" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"