diff --git a/.changeset/config.json b/.changeset/config.json index af4eb021..c5ea1a4f 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -3,7 +3,15 @@ "changelog": "@changesets/cli/changelog", "commit": true, "fixed": [ - ["helux", "@helux/core", "@helux/openinula", "@helux/hooks", "@helux/hooks-impl", "@helux/types", "@helux/utils"] + [ + "helux", + "@helux/core", + "@helux/openinula", + "@helux/hooks", + "@helux/hooks-impl", + "@helux/types", + "@helux/utils" + ] ], "linked": [], "access": "restricted", diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 069e3c4b..1ef90ce7 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -17,7 +17,7 @@ jobs: # 如果配置 themeConfig.lastUpdated 为 false,则不需要添加该参数以加快检出速度 fetch-depth: 0 - name: Install pnpm - run: npm install -g pnpm@7.9.5 + run: npm install -g pnpm@10.5.2 - name: Install dependencies run: pnpm install --no-frozen-lockfile - name: Build helux libs diff --git a/.prettierignore b/.prettierignore index 72a2b9e9..3e318205 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,5 +8,8 @@ fixtures *.yaml *.less .turbo +.changeset +docs doc/src/components -./.changeset/config.json \ No newline at end of file +packages/f-guard/__tests__ +packages/helux-core/src/helpers/state.ts diff --git a/PUB.md b/PUB.md index 742c4874..2dbe907c 100644 --- a/PUB.md +++ b/PUB.md @@ -18,4 +18,9 @@ 3. 发布时执行 `pnpm changeset publish` +```bash +# 需要补充 otp 值 +pnpm changeset publish --otp=xxxxxx +``` + 发布配置见 `.changeset/config.json` 文件 diff --git a/docs/docs/api/utils/mark-raw.md b/docs/docs/api/utils/mark-raw.md index d46cb335..82b6f49b 100644 --- a/docs/docs/api/utils/mark-raw.md +++ b/docs/docs/api/utils/mark-raw.md @@ -21,7 +21,7 @@ import { markRaw, atom } from 'helux'; const [ state, setState, ctx ] = atom({ a: { } }); setState(draft=>{ - draft.a.k1 = markRaw(AComplexThridObject); + draft.a.k1 = markRaw(aComplexThirdObject); }); function Demo(){ diff --git a/docs/docs/playground/demos/Playground/Tools.tsx b/docs/docs/playground/demos/Playground/Tools.tsx index db24ca2a..c4b69a23 100644 --- a/docs/docs/playground/demos/Playground/Tools.tsx +++ b/docs/docs/playground/demos/Playground/Tools.tsx @@ -5,45 +5,54 @@ * * */ -import React, { useCallback } from "react"; -import { codeContext, setCodeContext } from "./codeContext"; +import React from "react"; import { IconButton } from "./icons/IconButton"; -import localforage from 'localforage'; +const stControlWrap: React.CSSProperties = { width: '156px', transform: 'translateX(-105px)' }; +const stWrap: React.CSSProperties = { + position: "absolute", + display: "flex", + flexDirection: "column", + padding: "8px", + boxSizing: "border-box", + backgroundColor: "transparent", + left: "50%", + top: "26px", + width: "60px", + transform: 'translateX(-15px)', +}; -export const Tools: React.FC = () => { +export const Tools: React.FC = (props) => { + const { mode, onControlClick, onRunClick, copyUrl, saveCode, resetCode, recoverCode } = props; + const liveBtnStyle = mode === 'live' ? { backgroundColor: 'lightskyblue' } : {}; + const lagBtnStyle = mode === 'lag' ? { backgroundColor: 'lightskyblue' } : {}; + const manualBtnStyle = mode === 'manual' ? { backgroundColor: 'lightskyblue' } : {}; - const saveCode = useCallback(() => { - localforage.setItem(`helux_code_${codeContext.key}`, codeContext.code, (err) => { - if (err) { - console.error(err) - } else { - console.info('code is saved') - } - }) - }, []) - - const resetCode = useCallback(() => { - localforage.removeItem(`helux_code_${codeContext.key}`, (err) => { - if (!err) { - setCodeContext(draft => { draft.code = '' }) - } - }) - }, []) - - return
- saveCode()} /> - resetCode()} /> + return
+
+ onControlClick('live')} + /> + onControlClick('lag')} + /> + onControlClick('manual')} + /> +
+ + {(mode === 'manual' || mode === 'lag') && saveCode()} />} + + {mode === 'manual' && onRunClick?.()} />} + copyUrl?.()} />
} diff --git a/docs/docs/playground/demos/Playground/codes/atom.ts b/docs/docs/playground/demos/Playground/codes/atom.ts index cd14b78a..dc7ddd79 100644 --- a/docs/docs/playground/demos/Playground/codes/atom.ts +++ b/docs/docs/playground/demos/Playground/codes/atom.ts @@ -18,7 +18,8 @@ const change = () => { // draft was already unboxed from { val: T } to T draft.b.b1.b2 += 100; }) - console.log('dict.val.b.b1.b2 is ', dict.val.b.b1.b2); + console.log('proxy dict.val.b ', dict.val.b); + console.log('original dict.val.b ', limu.original(dict.val.b)); }; render(); diff --git a/docs/docs/playground/demos/Playground/icons/IconButton.tsx b/docs/docs/playground/demos/Playground/icons/IconButton.tsx index 88438cda..9ea13231 100644 --- a/docs/docs/playground/demos/Playground/icons/IconButton.tsx +++ b/docs/docs/playground/demos/Playground/icons/IconButton.tsx @@ -1,22 +1,29 @@ -import { ReactNode,ButtonHTMLAttributes } from "react" +import { ReactNode, ButtonHTMLAttributes } from "react" import { ResetIcon } from "./Reset" import { SaveIcon } from "./Save" -export interface IconButtonProps extends ButtonHTMLAttributes { - name:"save" | 'reset' +export interface IconButtonProps extends ButtonHTMLAttributes { + name: string; } -const icons:Record = { - save:, - reset: +const defaultStyle = { + width: "52px", + height: "28x", + cursor: "pointer", + borderRadius: "12px", + textAlign: 'center', +}; + +const icons: Record = { + save: , + reset: , + run: 'Run', + copy: 'Copy', } -export const IconButton:React.FC = (props)=>{ - return +export const IconButton: React.FC = (props) => { + const { name, style, ...rest } = props; + console.log('style', style); + const uiName = icons[name] || name; + const stBtn = Object.assign({}, defaultStyle, style || {}); + return } diff --git a/docs/docs/playground/demos/Playground/index.tsx b/docs/docs/playground/demos/Playground/index.tsx index 8c668541..7157e55e 100644 --- a/docs/docs/playground/demos/Playground/index.tsx +++ b/docs/docs/playground/demos/Playground/index.tsx @@ -1,18 +1,21 @@ import React, { useCallback, useEffect } from 'react' import { LiveProvider, LiveEditor, LiveError, LivePreview } from "react-live"; +import copyTo from 'copy-to-clipboard'; import qs from "qs"; import * as prism from 'prism-react-renderer'; import * as helux from 'helux'; import { useWatch } from 'helux'; +import localforage from 'localforage'; +// TODO toast 无效 +// import { toast } from 'react-toastify'; import ApiMenus from './ApiMenus'; import TopBar from './TopBar'; import Console from './Console'; import * as codes from './codes'; import './index.less'; -// import { Tools } from './Tools'; +import { Tools } from './Tools'; import { setCodeContext, codeContext } from './codeContext'; -import localforage from 'localforage'; function getCode(name: any, subName: any) { const codeDict: any = codes; @@ -44,9 +47,55 @@ function loadCode(name: any, subName: any, setCode: any) { }) } +let timer: any; + function useLogic(name = 'atom', subName = 'primitive') { const [info, setInfo] = React.useState({ name, subName }); const [code, setCode] = React.useState(initCode); + const [mode, setMode] = React.useState('live'); // live lag manual + const [compKey, setCompKey] = React.useState(Date.now()); + const codeCacheRef = React.useRef(code); + + const clickRun = () => { + setCode(codeCacheRef.current); + setCompKey(Date.now()); + }; + const onControlClick = (mode: string) => { + setMode(mode); + }; + const copyUrl = () => { + const url = `${window.location.origin}?n=${info.name}&s=${info.subName}`; + copyTo(url); + console.log('复制当前示例分享链接成功', url); + }; + const saveCode = () => { + localforage.setItem(`helux_code_${info.name}_${info.subName}`, codeCacheRef.current, (err) => { + if (err) { + return console.log(err); + } + console.log('保存成功'); + }); + }; + const changeEditorCode = (value: string) => { + codeCacheRef.current = value; + setCode(value); + setCompKey(Date.now()); + }; + const recoverCode = () => { + localforage.getItem(`helux_code_${info.name}_${info.subName}`, (err, value: string | null) => { + if (err) { + return alert(err.message); + } + if (!value) { + return alert('无最近保存的代码可恢复'); + } + changeEditorCode(value); + }); + }; + const resetCode = () => { + changeEditorCode(getCode(info.name, info.subName)); + console.log('重置示例代码成功'); + }; useEffect(() => { loadCode(name, subName, setCode); @@ -77,12 +126,28 @@ function useLogic(name = 'atom', subName = 'primitive') { loadCode(name, subName, setCode); }, [info.name, info.subName]); - return { info, code, changeCode, changeSubName }; + const onEditorCodeChange = (value: string) => { + if (mode !== 'lag') { + // 是手动,仅保存代码 + codeCacheRef.current = value; + return; + } + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(() => { + changeEditorCode(value); + }, 1000); + }; + + return { + info, code, changeCode, changeSubName, onControlClick, mode, compKey, clickRun, + onEditorCodeChange, copyUrl, saveCode, resetCode, recoverCode, changeEditorCode, + }; } export function SimplePlayground() { const { info, code, changeCode, changeSubName } = useLogic('quickStart', 'HelloHelux'); - return (
@@ -110,9 +175,13 @@ export function SimplePlayground() { } export default () => { - const { info, code, changeCode, changeSubName } = useLogic(name, subName); + const { + info, code, changeCode, changeSubName, onControlClick, mode, clickRun, compKey, + onEditorCodeChange, copyUrl, saveCode, resetCode, recoverCode, + } = useLogic(name, subName); + return ( - +
@@ -121,9 +190,17 @@ export default () => {
- {/* { setCodeContext(draft => { draft.code = value }) }} /> */} - - {/* */} + {mode === 'live' && } + {mode !== 'live' && } +
diff --git a/docs/package.json b/docs/package.json index 376f9721..edefeccb 100644 --- a/docs/package.json +++ b/docs/package.json @@ -53,6 +53,7 @@ "animated-scroll-to": "^2.3.0", "classnames": "^2.5.0", "console-feed": "^3.5.0", + "copy-to-clipboard": "^3.3.3", "helux": "latest", "localforage": "^1.10.0", "lodash": "^4.17.21", @@ -70,8 +71,8 @@ "@commitlint/cli": "^17.1.2", "@commitlint/config-conventional": "^17.1.0", "@types/qs": "^6.9.11", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", + "@types/react": "18.0.0", + "@types/react-dom": "18.0.0", "@umijs/lint": "^4.0.0", "dumi": "^2.2.16", "eslint": "^8.23.0", @@ -81,8 +82,8 @@ "prettier": "^2.7.1", "prettier-plugin-organize-imports": "^3.0.0", "prettier-plugin-packagejson": "^2.2.18", - "react": "^18.0.0", - "react-dom": "^18.0.0", + "react": "18.0.0", + "react-dom": "18.0.0", "stylelint": "^14.9.1" }, "peerDependencies": { diff --git a/package.json b/package.json index fe864d16..232cb3a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "helux", - "version": "5.4.6", + "version": "5.5.6", "description": "A reactive atomic state engine for React(including React 18) and all React like, carrying dependency collection feature, supporting fine-grained updates", "keywords": [], "author": { @@ -21,7 +21,8 @@ "doc": "pnpm --filter=hel-doc run build && npm run cpdoc", "doc2": "pnpm --filter=helux-docs run docs:build", "docs:build": "pnpm --filter=helux-docs run docs:build", - "format": "prettier --cache --write . '!./pnpm-lock.yaml' '!./doc/src/components' '!./docs' --ignore-path .prettierignore .gitignore --ignore-unknown", + "format": "prettier --cache --write .", + "format2": "prettier --cache --write . '!./pnpm-lock.yaml' '!./doc/src/components' '!./docs' --ignore-path .prettierignore .gitignore --ignore-unknown", "limu": "pnpm i limu@latest --filter @helux/core", "prepare": "husky install", "release:all": "changeset publish", diff --git a/packages/f-guard/__tests__/concurrency-guard.test.ts b/packages/f-guard/__tests__/concurrency-guard.test.ts index d6ade1d7..ec66b4a5 100644 --- a/packages/f-guard/__tests__/concurrency-guard.test.ts +++ b/packages/f-guard/__tests__/concurrency-guard.test.ts @@ -11,7 +11,7 @@ function throwErrCb() { type Func = (...args: any) => any; function delay(ms = 1000) { - return new Promise(r => setTimeout(r, ms)); + return new Promise((r) => setTimeout(r, ms)); } // 模拟一个执行时间长达3s的函数,可配置前置运行逻辑,后置运行逻辑 @@ -64,7 +64,7 @@ describe('ConcurrencyGuard', () => { test('apply with valid arg', async () => { const guard = new ConcurrencyGuard(); // @ts-ignore 触发内部参数纠正逻辑 - const result = await guard.apply('key', p1 => Promise.resolve(p1), 1); + const result = await guard.apply('key', (p1) => Promise.resolve(p1), 1); expect(result).toBe(1); }); diff --git a/packages/f-guard/__tests__/flat-promise.test.ts b/packages/f-guard/__tests__/flat-promise.test.ts index 0f4e2662..b84b410e 100644 --- a/packages/f-guard/__tests__/flat-promise.test.ts +++ b/packages/f-guard/__tests__/flat-promise.test.ts @@ -20,7 +20,7 @@ describe('createFlatPromise', () => { waitProm(); prom.resolve('1'); // 让两个等待结果的 waitProm 函数继续执行 - await new Promise(r => setTimeout(r, 1000)); + await new Promise((r) => setTimeout(r, 1000)); // 开始检查结果 expect(callCount).toBe(2); expect(resultStr).toBe('11'); @@ -46,7 +46,7 @@ describe('createFlatPromise', () => { waitProm(); prom.reject(new Error('err_')); // 让两个等待结果的 waitProm 函数都捕捉错误 - await new Promise(r => setTimeout(r, 1000)); + await new Promise((r) => setTimeout(r, 1000)); // 开始检查结果 expect(callCount).toBe(2); expect(errCount).toBe(2); diff --git a/packages/f-guard/__tests__/mock-db.ts b/packages/f-guard/__tests__/mock-db.ts index 8b357050..b5692ad8 100644 --- a/packages/f-guard/__tests__/mock-db.ts +++ b/packages/f-guard/__tests__/mock-db.ts @@ -37,7 +37,7 @@ export class DBWrap { private async initIns() { const prom = createFlatPromise(); const db = new DB(); - db.on('connect', ins => prom.resolve(ins)); + db.on('connect', (ins) => prom.resolve(ins)); const ins = await prom; return ins; } diff --git a/packages/f-guard/src/concurrency-guard.ts b/packages/f-guard/src/concurrency-guard.ts index 7163d7dc..f7ed8257 100644 --- a/packages/f-guard/src/concurrency-guard.ts +++ b/packages/f-guard/src/concurrency-guard.ts @@ -100,10 +100,7 @@ export class ConcurrencyGuard { /** * 配合 flatPromise 和 reqKey,控制高并发时只有一个真正发起请求,其他函数等待结果 */ - private async run( - runCtx: { key: string, asyncFn: () => Promise, isCall: boolean }, - ...args: any[] - ): Promise { + private async run(runCtx: { key: string; asyncFn: () => Promise; isCall: boolean }, ...args: any[]): Promise { const { key, asyncFn, isCall } = runCtx; const { runningPromise, isExist } = this.getRunningPromise(key); if (isExist) { diff --git a/packages/f-guard/src/flat-promise.ts b/packages/f-guard/src/flat-promise.ts index 552b5695..ae90c81a 100644 --- a/packages/f-guard/src/flat-promise.ts +++ b/packages/f-guard/src/flat-promise.ts @@ -1,4 +1,4 @@ -export type FlatPromise = Promise & { resolve: any, reject: any }; +export type FlatPromise = Promise & { resolve: any; reject: any }; /** * 创建一个可脱离回调修改状态的扁平化 Promise,简化接收异步结果的写法,在处理复杂的控制流语句场景时更方便、更灵活。 diff --git a/packages/f-guard/src/index.ts b/packages/f-guard/src/index.ts index ef0b1bf0..66d7c766 100644 --- a/packages/f-guard/src/index.ts +++ b/packages/f-guard/src/index.ts @@ -1,7 +1,4 @@ import { ConcurrencyGuard } from './concurrency-guard'; import { createFlatPromise } from './flat-promise'; -export { - createFlatPromise, - ConcurrencyGuard, -}; +export { createFlatPromise, ConcurrencyGuard }; diff --git a/packages/f-noop/package.json b/packages/f-noop/package.json index 0decd923..e0da9661 100644 --- a/packages/f-noop/package.json +++ b/packages/f-noop/package.json @@ -1,7 +1,7 @@ { "name": "@helux/f-noop", - "version": "0.0.2", - "description": "Function does nothing, this lib supply noop fn or noop fn maker.", + "version": "0.0.3", + "description": "Function does nothing, this lib supply noop fn and noop fn maker.", "bugs": { "url": "https://github.com/heluxjs/helux/issues" }, @@ -17,9 +17,9 @@ "url": "https://github.com/fantasticsoul" }, "type": "module", - "main": "dist/index.js", - "module": "dist/index.mjs", + "main": "dist/index.cjs", "unpkg": "dist/index.global.js", + "module": "dist/index.js", "types": "index.d.ts", "files": [ "dist", diff --git a/packages/helux-core/CHANGELOG.md b/packages/helux-core/CHANGELOG.md index 7f288587..34bfb346 100644 --- a/packages/helux-core/CHANGELOG.md +++ b/packages/helux-core/CHANGELOG.md @@ -1,5 +1,59 @@ # @helux/core +## 5.5.6 + +### Patch Changes + +- 79235a0: add enhanceStore + - @helux/hooks-impl@5.5.6 + - @helux/types@5.5.6 + - @helux/utils@5.5.6 + +## 5.5.5 + +### Patch Changes + +- 4347ce9: bump + - @helux/hooks-impl@5.5.5 + - @helux/types@5.5.5 + - @helux/utils@5.5.5 + +## 5.5.4 + +### Patch Changes + +- 8aa2422: export useStable from top api + - @helux/hooks-impl@5.5.4 + - @helux/types@5.5.4 + - @helux/utils@5.5.4 + +## 5.5.3 + +### Patch Changes + +- 7be2611: optimize syncer + - @helux/hooks-impl@5.5.3 + - @helux/types@5.5.3 + - @helux/utils@5.5.3 + +## 5.5.2 + +### Patch Changes + +- 45f3912: support syncer string + - @helux/hooks-impl@5.5.2 + - @helux/types@5.5.2 + - @helux/utils@5.5.2 + +## 5.5.1 + +### Patch Changes + +- 0decefa: optimize mid + - @helux/hooks-impl@5.5.1 + - @helux/types@5.5.1 + - @helux/utils@5.5.1 + ## 5.5.0 ### Minor Changes diff --git a/packages/helux-core/package.json b/packages/helux-core/package.json index 80e373ad..5a5802e0 100644 --- a/packages/helux-core/package.json +++ b/packages/helux-core/package.json @@ -1,6 +1,6 @@ { "name": "@helux/core", - "version": "5.5.0", + "version": "5.5.6", "description": "A reactive atomic state engine for React like.", "bugs": { "url": "https://github.com/heluxjs/helux/issues" diff --git a/packages/helux-core/src/api.ts b/packages/helux-core/src/api.ts index b3cbf1ec..a6c96dc3 100644 --- a/packages/helux-core/src/api.ts +++ b/packages/helux-core/src/api.ts @@ -2,6 +2,7 @@ import * as limu from 'limu'; import { assignThisHX, bindAtom, getHX, makeWithAtomOptions, withAtom } from './class'; import { EVENT_NAME, LIMU_VER, RECORD_LOADING, VER } from './consts/user'; import { defineStore } from './factory/advance/defineStore'; +import { enhanceStore } from './factory/advance/enhanceStore'; import { getAtom, isAtom, isDerivedAtom, isDerivedResult, isSharedState } from './factory/common/atom'; import { addMiddleware } from './factory/common/middleware'; import { addPlugin } from './factory/common/plugin'; @@ -16,7 +17,7 @@ import { currentDraftRoot } from './factory/creator/current'; import { flush, reactiveDesc } from './factory/creator/reactive'; import { init } from './factory/root'; import { getDeriveLoading, runDerive, runDeriveTask } from './helpers/fnRunner'; -import { getRawState, getSnap, getCurrentProxy } from './helpers/state'; +import { getCurrentProxy, getRawState, getSnap } from './helpers/state'; import { getActionLoading, getMutateLoading, @@ -28,16 +29,16 @@ import { useGlobalForceUpdate, useGlobalId, useLocalForceUpdate, + useLockDep, useMutable, useMutateLoading, + useObject, useOnEvent, useReactive, useReactiveX, useService, useWatch, useWatchEffect, - useLockDep, - useObject, } from './hooks'; import { block, COMPS, dynamicBlock, getBlockParams, signal } from './signal'; @@ -61,6 +62,7 @@ export { sharex, createShared, defineStore, + enhanceStore, // derive api derive, deriveDict, @@ -119,7 +121,7 @@ export { // init api init, // util api - limu, // 自 v5.5.0 开始导出 limu + limu, reactiveDesc, flush, currentDraftRoot, diff --git a/packages/helux-core/src/apiFactory.ts b/packages/helux-core/src/apiFactory.ts index b470b5f9..e096cea8 100644 --- a/packages/helux-core/src/apiFactory.ts +++ b/packages/helux-core/src/apiFactory.ts @@ -56,7 +56,7 @@ export function buildHeluxApi(react: ReactLike, act?: Fn): AllApi { // helux api will be assigned in below loop const heluxApi: any = { hookImpl }; - const apiVar: any = api; // fot skip ts check instead of ts-ignore + const apiVar: any = api; // skip ts check instead of ts-ignore Object.keys(apiVar).forEach((key) => { const apiDef = apiVar[key]; @@ -92,6 +92,8 @@ export function buildHeluxApi(react: ReactLike, act?: Fn): AllApi { model: (cb: Fn) => modelApi.model(heluxApi, cb), modelFactory: (cb: Fn) => modelApi.modelFactory(heluxApi, cb), hookImpl, + // 兼容历史版本的声明方式 + useStable: hookImpl.useStable, }; return Object.assign(allApi, heluxApi); diff --git a/packages/helux-core/src/consts/index.ts b/packages/helux-core/src/consts/index.ts index d4c1a7e3..34f82354 100644 --- a/packages/helux-core/src/consts/index.ts +++ b/packages/helux-core/src/consts/index.ts @@ -93,8 +93,8 @@ export const SCOPE_TYPE = { export const STATE_TYPE = { USER_STATE: 'user_state', - GLOGAL_EMPTY: 'global_empty', - GLOGAL_LOADING: 'global_loading', + GLOBAL_EMPTY: 'global_empty', + GLOBAL_LOADING: 'global_loading', PRIVATE_LOADING: 'private_loading', } as const; diff --git a/packages/helux-core/src/consts/user.ts b/packages/helux-core/src/consts/user.ts index 1699b367..2336b18a 100644 --- a/packages/helux-core/src/consts/user.ts +++ b/packages/helux-core/src/consts/user.ts @@ -1,6 +1,6 @@ import { VER as limuVer } from 'limu'; -export const VER = '5.5.0'; +export const VER = '5.5.6'; export const LIMU_VER = limuVer; diff --git a/packages/helux-core/src/factory/advance/defineStore.ts b/packages/helux-core/src/factory/advance/defineStore.ts index 6c15fe58..8ee91f6e 100644 --- a/packages/helux-core/src/factory/advance/defineStore.ts +++ b/packages/helux-core/src/factory/advance/defineStore.ts @@ -44,7 +44,7 @@ export function defineStore(apiCtx: CoreApiCtx) { }, useDerived: () => { const [derived] = dm.useDerivedState(); - // dirived 拒绝修改,故此处仅返回 derived + // derived 拒绝修改,故此处仅返回 derived return derived; }, useLoading, diff --git a/packages/helux-core/src/factory/advance/defineStoreV2.ts b/packages/helux-core/src/factory/advance/defineStoreV2.ts index 6c15fe58..8ee91f6e 100644 --- a/packages/helux-core/src/factory/advance/defineStoreV2.ts +++ b/packages/helux-core/src/factory/advance/defineStoreV2.ts @@ -44,7 +44,7 @@ export function defineStore(apiCtx: CoreApiCtx) { }, useDerived: () => { const [derived] = dm.useDerivedState(); - // dirived 拒绝修改,故此处仅返回 derived + // derived 拒绝修改,故此处仅返回 derived return derived; }, useLoading, diff --git a/packages/helux-core/src/factory/advance/enhanceStore.ts b/packages/helux-core/src/factory/advance/enhanceStore.ts new file mode 100644 index 00000000..b5dc2c73 --- /dev/null +++ b/packages/helux-core/src/factory/advance/enhanceStore.ts @@ -0,0 +1,10 @@ + +export function enhanceStore( + store: T, + options: { actions: A, useLoading: U }, +): T & { actions: A, useLoading: U } { + // @ts-ignore + const enhancedStore = Object.assign(store, options); + // @ts-ignore + return enhancedStore; +} diff --git a/packages/helux-core/src/factory/common/blockScope.ts b/packages/helux-core/src/factory/common/blockScope.ts index 1edaec66..e06d1895 100644 --- a/packages/helux-core/src/factory/common/blockScope.ts +++ b/packages/helux-core/src/factory/common/blockScope.ts @@ -9,7 +9,7 @@ let reuseLatest = false; * 记录共享状态或共享派生结果最近一次读取的数据,为 block 模块服务 * for perf, no options param here */ -export function recordLastest( +export function recordLatest( sharedKey: number, val: any, sharedState: any, diff --git a/packages/helux-core/src/factory/common/ctor.ts b/packages/helux-core/src/factory/common/ctor.ts index 7fa452f2..162cae2d 100644 --- a/packages/helux-core/src/factory/common/ctor.ts +++ b/packages/helux-core/src/factory/common/ctor.ts @@ -28,8 +28,15 @@ export interface INewReactiveMetaOpts extends IBuildReactiveOpts { export function newReactiveMeta(draft: any, buildOptions: INewReactiveMetaOpts, finish: any = noop): IReactiveMeta { const { - desc = '', onRead, from = REACTIVE, depKeys = [], isTop = false, expired = false, insKey = 0, - payloadArgs, disableProxy, + desc = '', + onRead, + from = REACTIVE, + depKeys = [], + isTop = false, + expired = false, + insKey = 0, + payloadArgs, + disableProxy, } = buildOptions; return { draft, diff --git a/packages/helux-core/src/factory/common/derived.ts b/packages/helux-core/src/factory/common/derived.ts index 4c816019..20a6fb77 100644 --- a/packages/helux-core/src/factory/common/derived.ts +++ b/packages/helux-core/src/factory/common/derived.ts @@ -8,7 +8,7 @@ import { createOb } from '../../helpers/obj'; import { getSharedKey } from '../../helpers/state'; import type { Dict, Fn, ICreateDeriveLogicOptions, IDeriveFnParams, IFnCtx } from '../../types/base'; import { isAtom } from './atom'; -import { recordLastest } from './blockScope'; +import { recordLatest } from './blockScope'; import { getFnCtxByObj, getFnKey, markFnKey } from './fnScope'; const { TASK } = ASYNC_TYPE; @@ -50,7 +50,7 @@ export function attachStaticProxyResult(fnCtx: IFnCtx, forAtom: boolean) { recordFnDepKeys(fnCtx.depKeys, { belongCtx: fnCtx }); // transfer depKeys for block or signal recordBlockDepKey(fnCtx.depKeys, proxyResult); - recordLastest(0, val, proxyResult, '', [key], true, forAtom); + recordLatest(0, val, proxyResult, '', [key], true, forAtom); return val; }, }); diff --git a/packages/helux-core/src/factory/common/middleware.ts b/packages/helux-core/src/factory/common/middleware.ts index 4b67cca7..87cb51f4 100644 --- a/packages/helux-core/src/factory/common/middleware.ts +++ b/packages/helux-core/src/factory/common/middleware.ts @@ -8,7 +8,7 @@ export function addMiddleware(mid: Middleware) { } /** - * middle only support sync call, so no next fn handler in middleware fn args + * middleware only support sync call, so no next fn handler in middleware fn args */ export function runMiddlewares(internal: TInternal, draftRoot: DraftRootType, draft: DraftType, sn: number) { const { middlewares } = getRootCtx(); diff --git a/packages/helux-core/src/factory/common/plugin.ts b/packages/helux-core/src/factory/common/plugin.ts index eccdbdcd..f2a7e2a4 100644 --- a/packages/helux-core/src/factory/common/plugin.ts +++ b/packages/helux-core/src/factory/common/plugin.ts @@ -5,7 +5,7 @@ import type { TInternal } from '../creator/buildInternal'; import { getRootCtx } from '../root'; const { ON_DATA_CHANGED, ON_SHARE_CREATED, ON_ERROR_OCCURED } = EVENT_NAME; -const loadingTypes: string[] = [STATE_TYPE.GLOGAL_LOADING, STATE_TYPE.PRIVATE_LOADING]; +const loadingTypes: string[] = [STATE_TYPE.GLOBAL_LOADING, STATE_TYPE.PRIVATE_LOADING]; export function addPlugin(plugin: IPlugin) { const { plugins, bus } = getRootCtx(); diff --git a/packages/helux-core/src/factory/common/stopDep.ts b/packages/helux-core/src/factory/common/stopDep.ts index 684a992b..4b1a5e94 100644 --- a/packages/helux-core/src/factory/common/stopDep.ts +++ b/packages/helux-core/src/factory/common/stopDep.ts @@ -40,7 +40,7 @@ const cutCache = new Map(); */ export function cutDepKeyByStop( depKeyInfo: DepKeyInfo, - options: { stopDepInfo: IRuleConf['stopDepInfo']; arrIndexDep?: boolean, level1ArrKeys: Level1ArrKeys; recordCb: (key: string) => void }, + options: { stopDepInfo: IRuleConf['stopDepInfo']; arrIndexDep?: boolean; level1ArrKeys: Level1ArrKeys; recordCb: (key: string) => void }, ) { let isKeyRerord = false; const { depKey, keyPath, sharedKey } = depKeyInfo; diff --git a/packages/helux-core/src/factory/createAction.ts b/packages/helux-core/src/factory/createAction.ts index 0fec68a7..2223162e 100644 --- a/packages/helux-core/src/factory/createAction.ts +++ b/packages/helux-core/src/factory/createAction.ts @@ -31,7 +31,7 @@ function innerCreate(state: T, options: IInnerCreateActionOptio // now fn can have a name 'action' at dev mode const action = (...args: any[]) => { let payloadArg = args[0]; - let payloadArgs = [payloadArg]; // 透传给 devtool,所有需要保证始终为数组格式 + let payloadArgs = [payloadArg]; // 透传给 devtool,保证始终为数组格式 // 用户调用 action 独立定义的 throwErr 优先级高于 创建 action 函数时预设的 throwErr // throwErr 谨慎处理,只严格接受布尔值 let throwFnErr = args[1]; @@ -69,7 +69,11 @@ function innerCreate(state: T, options: IInnerCreateActionOptio handlePartial({ partial, forAtom, draftRoot, draftNode: draft }); }; const payload = payloadArg; - return [{ draft, draftRoot, setState, desc, payload, payloadArgs, flush, merge, dispatch }]; + // 新增 getDraft,getDraftRoot 句柄,让用户可通过此函数获得 draft 修改,从而避免标记以下 lint 屏蔽语句 + // eslint-disable-next-line no-param-reassign + const getDraft = () => draft; + const getDraftRoot = () => draftRoot; + return [{ draft, draftRoot, getDraft, getDraftRoot, setState, desc, payload, payloadArgs, flush, merge, dispatch }]; }, getPayloadArgs: () => payloadArgs, skipResolve, diff --git a/packages/helux-core/src/factory/createShared.ts b/packages/helux-core/src/factory/createShared.ts index dae798f9..11b1f5bf 100644 --- a/packages/helux-core/src/factory/createShared.ts +++ b/packages/helux-core/src/factory/createShared.ts @@ -198,13 +198,19 @@ function setEnableMutate(enabled: boolean, internal: TInternal) { } function getOptions(internal: TInternal): CtxCreateOptions { - const { - moduleName, deep, recordLoading, stopDepth, stopArrDep, alertDeadCycleErr, checkDeadCycle, - enableMutate, extra, disableProxy, - } = internal; + const { moduleName, deep, recordLoading, stopDepth, stopArrDep, alertDeadCycleErr, checkDeadCycle, enableMutate, extra, disableProxy } = + internal; return { - moduleName, deep, recordLoading, stopDepth, stopArrDep, alertDeadCycleErr, checkDeadCycle, - enableMutate, extra, disableProxy + moduleName, + deep, + recordLoading, + stopDepth, + stopArrDep, + alertDeadCycleErr, + checkDeadCycle, + enableMutate, + extra, + disableProxy, }; } diff --git a/packages/helux-core/src/factory/creator/buildShared.ts b/packages/helux-core/src/factory/creator/buildShared.ts index 9615903c..1a6e8274 100644 --- a/packages/helux-core/src/factory/creator/buildShared.ts +++ b/packages/helux-core/src/factory/creator/buildShared.ts @@ -7,7 +7,7 @@ import { recordFnDepKeys } from '../../helpers/fnDep'; import { createDpOb, createOb } from '../../helpers/obj'; import { mapSharedState } from '../../helpers/state'; import type { Dict } from '../../types/base'; -import { recordLastest } from '../common/blockScope'; +import { recordLatest } from '../common/blockScope'; import { newOpParams } from '../common/ctor'; import { callOnRead, getDepKeyByPath, isDict } from '../common/util'; import type { ParsedOptions } from './parse'; @@ -44,7 +44,7 @@ export function buildSharedState(options: ParsedOptions) { // using shared state in derived/watch callback recordFnDepKeys([depKey], { sharedKey, kv: { [depKey]: val } }); recordBlockDepKey([depKey]); - recordLastest(sharedKey, val, sharedRoot, depKey, keyPath); + recordLatest(sharedKey, val, sharedRoot, depKey, keyPath); }; if (HAS_PROXY) { diff --git a/packages/helux-core/src/factory/creator/globalId.ts b/packages/helux-core/src/factory/creator/globalId.ts index 64c8ae81..eef893b1 100644 --- a/packages/helux-core/src/factory/creator/globalId.ts +++ b/packages/helux-core/src/factory/creator/globalId.ts @@ -18,7 +18,7 @@ export function initGlobalEmpty(apiCtx: CoreApiCtx, createFn: Fn) { let shared = ctx.globalEmpty; if (!shared) { // global shared state - const { stateRoot } = createFn({ apiCtx, rawState: {}, forGlobal: true, stateType: STATE_TYPE.GLOGAL_EMPTY }); + const { stateRoot } = createFn({ apiCtx, rawState: {}, forGlobal: true, stateType: STATE_TYPE.GLOBAL_EMPTY }); const internal = getInternal(stateRoot); ctx.globalEmpty = stateRoot; ctx.globalEmptyInternal = internal; diff --git a/packages/helux-core/src/factory/creator/loading.ts b/packages/helux-core/src/factory/creator/loading.ts index cee1dbd8..0c76c974 100644 --- a/packages/helux-core/src/factory/creator/loading.ts +++ b/packages/helux-core/src/factory/creator/loading.ts @@ -13,7 +13,7 @@ import type { TInternal } from './buildInternal'; import { getGlobalEmpty } from './globalId'; const { MUTATE, LOADING } = FROM; -const { GLOGAL_LOADING, PRIVATE_LOADING } = STATE_TYPE; +const { GLOBAL_LOADING: GLOGAL_LOADING, PRIVATE_LOADING } = STATE_TYPE; const { PRIVATE, GLOBAL } = RECORD_LOADING; const fakeExtra: Dict = {}; const fakeLoading: Dict = {}; diff --git a/packages/helux-core/src/factory/creator/mapShared.ts b/packages/helux-core/src/factory/creator/mapShared.ts index 090406fe..27065eac 100644 --- a/packages/helux-core/src/factory/creator/mapShared.ts +++ b/packages/helux-core/src/factory/creator/mapShared.ts @@ -1,4 +1,5 @@ import { canUseDeep, noop } from '@helux/utils'; +import { STATE_TYPE } from '../../consts'; import { setInternal } from '../../helpers/state'; import type { IInnerSetStateOptions, @@ -11,7 +12,6 @@ import type { SharedState, } from '../../types/base'; import { runPartialCb } from '../common/util'; -import { STATE_TYPE } from '../../consts'; import { buildInternal } from './buildInternal'; import { REACTIVE_DESC } from './current'; import { prepareDeepMutate } from './mutateDeep'; @@ -21,7 +21,7 @@ import { flush } from './reactive'; import { createSyncerBuilder, createSyncFnBuilder } from './sync'; /** 因外部用不到,这些类型可不用创建 syncer,节省触发的 immut 调用,以便节省内存空间 */ -const noSyncerTypes: string[] = [STATE_TYPE.GLOGAL_EMPTY, STATE_TYPE.GLOGAL_LOADING, STATE_TYPE.PRIVATE_LOADING]; +const noSyncerTypes: string[] = [STATE_TYPE.GLOBAL_EMPTY, STATE_TYPE.GLOBAL_LOADING, STATE_TYPE.PRIVATE_LOADING]; const fakeBuilder = () => noop; export function mapSharedToInternal(sharedRoot: SharedState, sharedState: SharedState, options: ParsedOptions) { diff --git a/packages/helux-core/src/factory/creator/mutateDeep.ts b/packages/helux-core/src/factory/creator/mutateDeep.ts index 64349aaf..6ec55813 100644 --- a/packages/helux-core/src/factory/creator/mutateDeep.ts +++ b/packages/helux-core/src/factory/creator/mutateDeep.ts @@ -7,6 +7,7 @@ import { newMutateCtx } from '../common/ctor'; import { runMiddlewares } from '../common/middleware'; import { emitDataChanged } from '../common/plugin'; import { isDict } from '../common/util'; +import { getRootCtx } from '../root'; import type { TInternal } from './buildInternal'; import { handleCustomKey } from './buildShared'; import { commitState } from './commitState'; @@ -84,10 +85,18 @@ export function handlePartial(opts: IHandlePartialOpts) { * mutateNormal 和 mutateDepp 的 finishMutate 里提交之前可复用的公共逻辑 */ function beforeCommit(opts: ICommitOpts, draftRoot: any, moduleName: string) { + const { middlewares } = getRootCtx(); const { internal, mutateCtx } = opts; + const { lifecycle } = internal; + if (!middlewares.length && !lifecycle.hasBeforeCommit) { + return; + } + const draft = getStateNode(draftRoot, internal.forAtom); const { from, sn, desc } = mutateCtx; - internal.lifecycle.beforeCommit({ from, draftRoot, draft, desc, sn, moduleName, disableProxy: internal.disableProxy }); + if (lifecycle.hasBeforeCommit) { + lifecycle.beforeCommit({ from, draftRoot, draft, desc, sn, moduleName, disableProxy: internal.disableProxy }); + } runMiddlewares(internal, draftRoot, draft, sn); } @@ -165,18 +174,16 @@ export function prepareDeepMutate(opts: IPrepareMutateOpts) { export function execFinish(commitOpts: ICommitOpts, draftRoot: any, draftNode: any, partial?: Dict) { const { mutateCtx, internal } = commitOpts; const { writeKeys, writeKeyPathInfo, handleCbReturn, sn, desc, from } = mutateCtx; - const { forAtom, moduleName, lifecycle, disableProxy, sharedKeyStr } = internal; + const { forAtom, moduleName, disableProxy, sharedKeyStr } = internal; // setState 不忽略cb 返回值, setDraft 忽略 if (handleCbReturn) { handlePartial({ partial, forAtom, draftRoot, draftNode }); } - if (lifecycle.hasBeforeCommit) { - beforeCommit(commitOpts, draftRoot, moduleName); - } + beforeCommit(commitOpts, draftRoot, moduleName); // 禁用代理时,是记录不到任何写值的,此时用根对象key作为依赖去查询和通知需要执行的渲染、计算函数 - mutateCtx.depKeys = disableProxy ? [sharedKeyStr] : Object.keys(writeKeys) + mutateCtx.depKeys = disableProxy ? [sharedKeyStr] : Object.keys(writeKeys); DRAFT_ROOT.del(); MUTATE_CTX.del(); diff --git a/packages/helux-core/src/factory/creator/mutateFn.ts b/packages/helux-core/src/factory/creator/mutateFn.ts index 2948738a..430b6b1f 100644 --- a/packages/helux-core/src/factory/creator/mutateFn.ts +++ b/packages/helux-core/src/factory/creator/mutateFn.ts @@ -336,7 +336,7 @@ export function watchAndCallMutateDict(options: IWatchAndCallMutateDictOptions) }, { deps: () => { - let depNodes: any[] = !item.deps ? [] : (item.deps(getStateNode(sharedRoot, forAtom), item.extraBound) || []); + let depNodes: any[] = !item.deps ? [] : item.deps(getStateNode(sharedRoot, forAtom), item.extraBound) || []; if (disableProxy) { depNodes = depNodes.concat(sharedRoot); } diff --git a/packages/helux-core/src/factory/creator/operateState.ts b/packages/helux-core/src/factory/creator/operateState.ts index c920f828..abf77183 100644 --- a/packages/helux-core/src/factory/creator/operateState.ts +++ b/packages/helux-core/src/factory/creator/operateState.ts @@ -5,7 +5,7 @@ import { FROM } from '../../consts'; import { recordBlockDepKey } from '../../helpers/blockDep'; import { recordFnDepKeys } from '../../helpers/fnDep'; import type { IMutateCtx, KeyIdsDict, NumStrSymbol } from '../../types/base'; -import { recordLastest } from '../common/blockScope'; +import { recordLatest } from '../common/blockScope'; import { getRunningFn, getSafeFnCtx } from '../common/fnScope'; import { cutDepKeyByStop } from '../common/stopDep'; import { getDepKeyByPath, isArrLike } from '../common/util'; @@ -70,7 +70,7 @@ export function handleOperate(opParams: IOperateParams, opts: { internal: TInter // 仅 top reactive 触发以下逻辑,为 block 收集依赖 if (isReactive) { recordBlockDepKey([depKey]); - recordLastest(sharedKey, value, internal.sharedState, depKey, fullKeyPath); + recordLatest(sharedKey, value, internal.sharedState, depKey, fullKeyPath); } internal.onRead(opParams); } diff --git a/packages/helux-core/src/factory/creator/parse.ts b/packages/helux-core/src/factory/creator/parse.ts index fc874eef..22469bf1 100644 --- a/packages/helux-core/src/factory/creator/parse.ts +++ b/packages/helux-core/src/factory/creator/parse.ts @@ -12,7 +12,7 @@ import { safeObjGet, setNoop, } from '@helux/utils'; -import { immut, finishImmut } from 'limu'; +import { finishImmut, immut } from 'limu'; import { FROM, MUTATE_FN_ITEM, RECORD_LOADING, SINGLE_MUTATE, STATE_TYPE, STOP_ARR_DEP, STOP_DEPTH } from '../../consts'; import { createOb, injectHeluxProto } from '../../helpers/obj'; import { getSharedKey, markSharedKey } from '../../helpers/state'; diff --git a/packages/helux-core/src/factory/creator/reactive.ts b/packages/helux-core/src/factory/creator/reactive.ts index 83057ca9..b8f051b9 100644 --- a/packages/helux-core/src/factory/creator/reactive.ts +++ b/packages/helux-core/src/factory/creator/reactive.ts @@ -197,9 +197,9 @@ export function buildReactive(internal: TInternal, options: IBuildReactiveOpts) draft = isPrimitive ? rawState.val : new Proxy(rawState.val, { - set: (t: any, key: any, value: any) => set(true, key, value), - get: (t: any, key: any) => get(true, key, subInnerData), - }); + set: (t: any, key: any, value: any) => set(true, key, value), + get: (t: any, key: any) => get(true, key, subInnerData), + }); } } else { // TODO 非 Proxy 环境暂不支持 reactive diff --git a/packages/helux-core/src/factory/creator/sync.ts b/packages/helux-core/src/factory/creator/sync.ts index b4dc0fb5..a2e1d85c 100644 --- a/packages/helux-core/src/factory/creator/sync.ts +++ b/packages/helux-core/src/factory/creator/sync.ts @@ -30,9 +30,14 @@ export function getEventVal(e: any) { function createTargetWrap(rawState: Dict, disableProxy: boolean, sourceId: string) { let latestPath: string[] = []; // 非 Proxy 环境只支持一层 syncer 值 - const target = createImmut(rawState, ({ fullKeyPath }) => { - latestPath = fullKeyPath; - }, disableProxy, sourceId); + const target = createImmut( + rawState, + ({ fullKeyPath }) => { + latestPath = fullKeyPath; + }, + disableProxy, + sourceId, + ); return { target, getPath: () => latestPath }; } @@ -93,7 +98,7 @@ export function createSyncerBuilder(internal: TInternal) { }); } -const syncFnCahce = new Map(); +const syncFnCache = new Map(); /** * @example @@ -112,6 +117,10 @@ export function createSyncFnBuilder(internal: TInternal) { if (Array.isArray(pathOrRecorder)) { // atom 自动补齐 val path = forAtom ? ['val', ...pathOrRecorder] : pathOrRecorder; + } else if (typeof pathOrRecorder === 'string') { + // atom 自动补齐 val + const pathStr = forAtom ? `val.${pathOrRecorder}` : pathOrRecorder; + path = pathStr.split('.'); } else { const { target, getPath } = targetWrap; // atom sync 读路径回调自动拆箱 @@ -124,10 +133,10 @@ export function createSyncFnBuilder(internal: TInternal) { cacheKey += `${before.toString()}`; } - let syncFn = syncFnCahce.get(cacheKey); + let syncFn = syncFnCache.get(cacheKey); if (!syncFn) { syncFn = createSyncFn(innerSetState, path, before); - syncFnCahce.set(cacheKey, syncFn); + syncFnCache.set(cacheKey, syncFn); } return syncFn; diff --git a/packages/helux-core/src/hooks/index.ts b/packages/helux-core/src/hooks/index.ts index 55fab08b..a3b43a7e 100644 --- a/packages/helux-core/src/hooks/index.ts +++ b/packages/helux-core/src/hooks/index.ts @@ -4,10 +4,10 @@ export { useGlobalForceUpdate } from './useGlobalForceUpdate'; export { useGlobalId } from './useGlobalId'; export { getActionLoading, getMutateLoading, useActionLoading, useMutateLoading } from './useLoading'; export { useLocalForceUpdate } from './useLocalForceUpdate'; +export { useLockDep } from './useLockDep'; export { useMutable } from './useMutable'; +export { useObject } from './useObject'; export { useOnEvent } from './useOnEvent'; export { useReactive, useReactiveX } from './useReactive'; export { storeSrv, useService } from './useService'; export { useWatch, useWatchEffect } from './useWatch'; -export { useLockDep } from './useLockDep'; -export { useObject } from './useObject'; diff --git a/packages/helux-core/src/hooks/useGlobalId.ts b/packages/helux-core/src/hooks/useGlobalId.ts index 2fa3ef4f..197f7855 100644 --- a/packages/helux-core/src/hooks/useGlobalId.ts +++ b/packages/helux-core/src/hooks/useGlobalId.ts @@ -6,10 +6,6 @@ import { useAtomSimpleLogic } from './common/useAtomLogic'; export function useGlobalId(apiCtx: CoreApiCtx, globalId: NumStrSymbol | NumStrSymbol[]) { const globalEmpty = ensureGlobal(apiCtx); const globalIds = Array.isArray(globalId) ? globalId : [globalId]; - const insCtx = useAtomSimpleLogic( - apiCtx, - globalEmpty, - { globalIds, isGlobalId: true, disableProxy: true }, - ); + const insCtx = useAtomSimpleLogic(apiCtx, globalEmpty, { globalIds, isGlobalId: true, disableProxy: true }); return insCtx.renderInfo; } diff --git a/packages/helux-core/src/hooks/useLockDep.ts b/packages/helux-core/src/hooks/useLockDep.ts index b2f7e289..0bc62951 100644 --- a/packages/helux-core/src/hooks/useLockDep.ts +++ b/packages/helux-core/src/hooks/useLockDep.ts @@ -1,9 +1,9 @@ -import { getVal } from "@helux/utils"; +import { getVal } from '@helux/utils'; import { limuUtils } from 'limu'; -import type { CoreApiCtx } from '../types/api-ctx'; +import { getDepKeyByPath } from '../factory/common/util'; import { getInternal } from '../helpers/state'; +import type { CoreApiCtx } from '../types/api-ctx'; import { useGlobalId } from './useGlobalId'; -import { getDepKeyByPath } from '../factory/common/util'; const hiddenGlobalId = Symbol('HiddenGlobalId'); @@ -17,7 +17,7 @@ export function useLockDep(apiCtx: CoreApiCtx, mayProxyNode: T): const { keyPath, arrKeyPath, keyPaths } = meta; const { sharedKey } = internal; if (keyPaths.length > 1) { - globalIds = keyPaths.map(path => getDepKeyByPath(path, sharedKey)); + globalIds = keyPaths.map((path) => getDepKeyByPath(path, sharedKey)); } else { const targetPath = arrKeyPath.length ? arrKeyPath : keyPath; globalIds = getDepKeyByPath(targetPath, internal.sharedKey); diff --git a/packages/helux-core/src/hooks/useMutable.ts b/packages/helux-core/src/hooks/useMutable.ts index 35b49612..78493178 100644 --- a/packages/helux-core/src/hooks/useMutable.ts +++ b/packages/helux-core/src/hooks/useMutable.ts @@ -23,7 +23,6 @@ function useMutableLogic(apiCtx: CoreApiCtx, ini return apiCtx.hookImpl.useObjectLogic(initialState, handleState, true); } - export function useMutable(apiCtx: CoreApiCtx, initialState: T | (() => T)) { return useMutableLogic(apiCtx, initialState); } diff --git a/packages/helux-core/src/hooks/useObject.ts b/packages/helux-core/src/hooks/useObject.ts index 22c17525..0ed04fe9 100644 --- a/packages/helux-core/src/hooks/useObject.ts +++ b/packages/helux-core/src/hooks/useObject.ts @@ -1,6 +1,6 @@ import type { PartialStateCb } from '@helux/types'; -import type { CoreApiCtx } from '../types/api-ctx'; import { getSharedKey } from '../helpers/state'; +import type { CoreApiCtx } from '../types/api-ctx'; import type { Dict, ILocalStateApi } from '../types/base'; /** @@ -22,5 +22,5 @@ export function useObject( throw new Error('ERR_OBJ_NOT_NORMAL: can not pass a shared object to useObject!'); } - return apiCtx.hookImpl.useObjectLogicV2(initialState, { isStable }) + return apiCtx.hookImpl.useObjectLogicV2(initialState, { isStable }); } diff --git a/packages/helux-core/src/signal/common/wrap.ts b/packages/helux-core/src/signal/common/wrap.ts index accfbb6b..90e2c417 100644 --- a/packages/helux-core/src/signal/common/wrap.ts +++ b/packages/helux-core/src/signal/common/wrap.ts @@ -56,7 +56,16 @@ export function wrapComp(apiCtx: CoreApiCtx, Comp: any, displayName: string, nee export function wrapSignalComp(apiCtx: CoreApiCtx, options: IWrapSignalCompOpt): FunctionComponent { const { - sharedState, depKey, keyPath, keyPaths, compare, sharedKey, format = noopVal, shouldUseResult, result, input, + sharedState, + depKey, + keyPath, + keyPaths, + compare, + sharedKey, + format = noopVal, + shouldUseResult, + result, + input, onUpdate = noopVal, } = options; const Comp = function () { diff --git a/packages/helux-core/src/signal/signal.ts b/packages/helux-core/src/signal/signal.ts index e00a8534..0d8f718b 100644 --- a/packages/helux-core/src/signal/signal.ts +++ b/packages/helux-core/src/signal/signal.ts @@ -1,12 +1,12 @@ import { ReactNode } from '@helux/types'; -import { isFn, noop, prefixValKey } from '@helux/utils'; +import { isFn, prefixValKey } from '@helux/utils'; import { original } from 'limu'; import { IS_BLOCK } from '../consts'; import { isAtom, isDerivedAtom } from '../factory/common/atom'; import { disableReuseLatest, enableReuseLatest, getLastest } from '../factory/common/blockScope'; import { getSharedKey } from '../helpers/state'; import type { CoreApiCtx } from '../types/api-ctx'; -import type { IBlockOptionsWithRead, LoadingStatus, RenderCbType, SingalVal, Fn } from '../types/base'; +import type { Fn, IBlockOptionsWithRead, LoadingStatus, RenderCbType, SingalVal } from '../types/base'; import { dynamicBlockWithRead } from './block'; import { noopVal } from './common/util'; import { alwaysEqual, wrapDerivedAtomSignalComp, wrapDerivedSignalComp, wrapSignalComp, type IWrapSignalCompOpt } from './common/wrap'; diff --git a/packages/helux-core/src/types/api.d.ts b/packages/helux-core/src/types/api.d.ts index 2b8ceb9d..83657f72 100644 --- a/packages/helux-core/src/types/api.d.ts +++ b/packages/helux-core/src/types/api.d.ts @@ -1,6 +1,6 @@ /* |------------------------------------------------------------------------------------------------ -| helux-core@5.5.0 +| helux-core@5.5.5 | A state library core that integrates atom, signal, collection dep, derive and watch, | it supports all react like frameworks ( including react 18 ). |------------------------------------------------------------------------------------------------ @@ -901,6 +901,25 @@ export function action( descOrOptions?: string | ICreateActionOptions, ) => ReturnType extends Promise ? ActionAsync : Action; +/** + * 向 store 上挂载 actions 和 useLoading 属性,以便增强 store 功能 + * ```ts + * const store = sharex({ a:1 }); + * const { actions, useLoading } = store.defineActions({ + * add({ draft }){ + * draft.a +=1; + * }, + * }); + * + * // 暴露出去的 store 拥有了 actions、useLoading 属性,且 IDE 能够感知到对应的类型 + * export default enhanceStore(store, { actions, useLoading }); + * ``` + */ +export function enhanceStore( + store: T, + options: { actions: A, useLoading: U }, +): T & { actions: A, useLoading: U } + /** * test if the input arg is a result returned by atom() */ diff --git a/packages/helux-core/src/types/base.d.ts b/packages/helux-core/src/types/base.d.ts index 59978b9f..c6b3cba7 100644 --- a/packages/helux-core/src/types/base.d.ts +++ b/packages/helux-core/src/types/base.d.ts @@ -305,11 +305,28 @@ export interface IActionTaskParams { * 如来自 share 则 draft 和 draftRoot 是同一个值 */ draft: T extends Atom | ReadOnlyAtom ? T['val'] : T; + /** + * 直接使用 params 解构出的 draft 修改出现 lint 警告 no-param-reassign 时,可通过此函数获得 draft 来修改 + */ + getDraft: () => T extends Atom | ReadOnlyAtom ? T['val'] : T; /** * 可直接操作修改的局部响应式根对象 */ draftRoot: T extends Atom | ReadOnlyAtom ? Atom> : T; - /** 第一层 key 多个值浅合并时,可使用 merge({x,y}) 替代多次 draft.x=, draft.y= 写法 */ + /** + * 直接使用 params 解构出的 draftRoot 修改出现 lint 警告 no-param-reassign 时,可通过此函数获得 draftRoot 来修改 + */ + getDraftRoot: () => T extends Atom | ReadOnlyAtom ? Atom> : T; + /** + * 出现第一层 key 多个值浅合并情况时,可使用此函数优化 + * @example + * ``` + * merge({ x: 1, y: 1 }); + * // 替代 + * draft.x = 1; + * draft.y = 1; + * ``` + */ merge: (partial: T extends Atom ? (T['val'] extends Primitive ? T : Partial) : Partial) => void; /** * 支持直接调用 task 函数和 action 函数(注:此时action本身也是可直接调用的) @@ -771,11 +788,11 @@ export type SyncBeforeFnParams = { // 此处用 V 约束 before 函数的返回类型 export type SyncFnBuilder = ( - pathOrRecorder: string[] | PathRecorder, + pathOrRecorder: string | string[] | PathRecorder, /** * 在提交数据之前,还可以修改其他数据或自身数据的函数 * 此函数也支持返回 path 对应的修改新值,如需修改为 undefined - * 需返回 params.UNDEFEIND 才有效,如果此函数不返回任何值或返回 undefined 均不会干预赋值操作 + * 需返回 params.UNDEFINED 才有效,如果此函数不返回任何值或返回 undefined 均不会干预赋值操作 */ before?: (eventNewVal: V, params: SyncBeforeFnParams) => any, ) => SyncerFn; diff --git a/packages/helux-demo-utils/package.json b/packages/helux-demo-utils/package.json index bea1542d..c59a9af5 100644 --- a/packages/helux-demo-utils/package.json +++ b/packages/helux-demo-utils/package.json @@ -33,7 +33,7 @@ "dependencies": { "@types/react": ">=16.0.0", "@types/react-dom": ">=16.0.0", - "helux": "^5.5.0", + "helux": "^5.5.6", "react": ">=16.10.2", "react-dom": ">=16.10.2" }, diff --git a/packages/helux-hooks-impl/CHANGELOG.md b/packages/helux-hooks-impl/CHANGELOG.md index 4b59790f..519fc5d0 100644 --- a/packages/helux-hooks-impl/CHANGELOG.md +++ b/packages/helux-hooks-impl/CHANGELOG.md @@ -1,5 +1,47 @@ # @helux/hooks-impl +## 5.5.6 + +### Patch Changes + +- @helux/types@5.5.6 +- @helux/utils@5.5.6 + +## 5.5.5 + +### Patch Changes + +- @helux/types@5.5.5 +- @helux/utils@5.5.5 + +## 5.5.4 + +### Patch Changes + +- @helux/types@5.5.4 +- @helux/utils@5.5.4 + +## 5.5.3 + +### Patch Changes + +- @helux/types@5.5.3 +- @helux/utils@5.5.3 + +## 5.5.2 + +### Patch Changes + +- @helux/types@5.5.2 +- @helux/utils@5.5.2 + +## 5.5.1 + +### Patch Changes + +- @helux/types@5.5.1 +- @helux/utils@5.5.1 + ## 5.5.0 ### Patch Changes diff --git a/packages/helux-hooks-impl/package.json b/packages/helux-hooks-impl/package.json index f4ca19f5..dbcab09c 100644 --- a/packages/helux-hooks-impl/package.json +++ b/packages/helux-hooks-impl/package.json @@ -1,6 +1,6 @@ { "name": "@helux/hooks-impl", - "version": "5.5.0", + "version": "5.5.6", "description": "helux hooks implement lib", "bugs": { "url": "https://github.com/heluxjs/helux/issues" diff --git a/packages/helux-hooks-impl/src/hooks/useObject.ts b/packages/helux-hooks-impl/src/hooks/useObject.ts index 590f48a8..170d0b42 100644 --- a/packages/helux-hooks-impl/src/hooks/useObject.ts +++ b/packages/helux-hooks-impl/src/hooks/useObject.ts @@ -1,8 +1,8 @@ import type { ApiCtx, Dict, PartialStateCb } from '@helux/types'; import { isFn } from '@helux/utils'; +import type { IObjApi, IUseObjectLogicV2Options } from '../types-api'; import { useForceUpdate } from './useForceUpdate'; import { useStable } from './useStable'; -import type { IUseObjectLogicV2Options, IObjApi } from '../types-api'; interface ILogicRef { state: any; diff --git a/packages/helux-hooks/CHANGELOG.md b/packages/helux-hooks/CHANGELOG.md index 9662a5a3..c98dc023 100644 --- a/packages/helux-hooks/CHANGELOG.md +++ b/packages/helux-hooks/CHANGELOG.md @@ -1,5 +1,53 @@ # @helux/hooks +## 5.5.6 + +### Patch Changes + +- @helux/hooks-impl@5.5.6 +- @helux/types@5.5.6 +- @helux/utils@5.5.6 + +## 5.5.5 + +### Patch Changes + +- @helux/hooks-impl@5.5.5 +- @helux/types@5.5.5 +- @helux/utils@5.5.5 + +## 5.5.4 + +### Patch Changes + +- @helux/hooks-impl@5.5.4 +- @helux/types@5.5.4 +- @helux/utils@5.5.4 + +## 5.5.3 + +### Patch Changes + +- @helux/hooks-impl@5.5.3 +- @helux/types@5.5.3 +- @helux/utils@5.5.3 + +## 5.5.2 + +### Patch Changes + +- @helux/hooks-impl@5.5.2 +- @helux/types@5.5.2 +- @helux/utils@5.5.2 + +## 5.5.1 + +### Patch Changes + +- @helux/hooks-impl@5.5.1 +- @helux/types@5.5.1 +- @helux/utils@5.5.1 + ## 5.5.0 ### Patch Changes diff --git a/packages/helux-hooks/package.json b/packages/helux-hooks/package.json index cca743fa..fab25aeb 100644 --- a/packages/helux-hooks/package.json +++ b/packages/helux-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@helux/hooks", - "version": "5.5.0", + "version": "5.5.6", "description": "helux hooks lib for react", "keywords": [ "helux", diff --git a/packages/helux-openinula/CHANGELOG.md b/packages/helux-openinula/CHANGELOG.md index 8415cd98..43edf578 100644 --- a/packages/helux-openinula/CHANGELOG.md +++ b/packages/helux-openinula/CHANGELOG.md @@ -1,5 +1,47 @@ # @helux/openinula +## 5.5.6 + +### Patch Changes + +- Updated dependencies [79235a0] + - @helux/core@5.5.6 + +## 5.5.5 + +### Patch Changes + +- Updated dependencies [4347ce9] + - @helux/core@5.5.5 + +## 5.5.4 + +### Patch Changes + +- Updated dependencies [8aa2422] + - @helux/core@5.5.4 + +## 5.5.3 + +### Patch Changes + +- Updated dependencies [7be2611] + - @helux/core@5.5.3 + +## 5.5.2 + +### Patch Changes + +- Updated dependencies [45f3912] + - @helux/core@5.5.2 + +## 5.5.1 + +### Patch Changes + +- Updated dependencies [0decefa] + - @helux/core@5.5.1 + ## 5.5.0 ### Patch Changes diff --git a/packages/helux-openinula/package.json b/packages/helux-openinula/package.json index 79e300bf..8c3596c1 100644 --- a/packages/helux-openinula/package.json +++ b/packages/helux-openinula/package.json @@ -1,6 +1,6 @@ { "name": "@helux/openinula", - "version": "5.5.0", + "version": "5.5.6", "description": "State library for preact that integrates atom, signal, collection dep, derive and watch.", "bugs": { "url": "https://github.com/heluxjs/helux/issues" diff --git a/packages/helux-plugin-devtool/package.json b/packages/helux-plugin-devtool/package.json index a25f3055..0031f88c 100644 --- a/packages/helux-plugin-devtool/package.json +++ b/packages/helux-plugin-devtool/package.json @@ -31,14 +31,14 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { - "helux": "^5.5.0", + "helux": "^5.5.6", "redux": "^4.2.1" }, "devDependencies": { "terser": "^5.29.1" }, "peerDependencies": { - "helux": "^5.5.0", + "helux": "^5.5.6", "redux": "^4.2.1" }, "bundleDependencies": false, diff --git a/packages/helux-store-pinia/CHANGELOG.md b/packages/helux-store-pinia/CHANGELOG.md index fb58463d..23ca1c79 100644 --- a/packages/helux-store-pinia/CHANGELOG.md +++ b/packages/helux-store-pinia/CHANGELOG.md @@ -1,5 +1,44 @@ # helux-store-pinia +## 5.0.6 + +### Patch Changes + +- Updated dependencies [79235a0] + - helux@5.5.6 + +## 5.0.5 + +### Patch Changes + +- helux@5.5.5 + +## 5.0.4 + +### Patch Changes + +- helux@5.5.4 + +## 5.0.3 + +### Patch Changes + +- Updated dependencies [7be2611] + - helux@5.5.3 + +## 5.0.2 + +### Patch Changes + +- Updated dependencies [45f3912] + - helux@5.5.2 + +## 5.0.1 + +### Patch Changes + +- helux@5.5.1 + ## 5.0.0 ### Patch Changes diff --git a/packages/helux-store-pinia/package.json b/packages/helux-store-pinia/package.json index 8e2ee769..12c8b13b 100644 --- a/packages/helux-store-pinia/package.json +++ b/packages/helux-store-pinia/package.json @@ -1,6 +1,6 @@ { "name": "@helux/store-pinia", - "version": "5.0.0", + "version": "5.0.6", "description": "Intuitive, type safe, light and flexible Store (based on helux) for React with DevTools support", "bugs": { "url": "https://github.com/heluxjs/helux/issues" diff --git a/packages/helux-store-pinia/src/layered.ts b/packages/helux-store-pinia/src/layered.ts index 45126dab..8dcdda85 100644 --- a/packages/helux-store-pinia/src/layered.ts +++ b/packages/helux-store-pinia/src/layered.ts @@ -14,11 +14,7 @@ export function defineLayeredStore( const reset = () => ctx.setState(stateFn()); const { derivedState, useDerivedState } = makeWrapDerived(ctx, { userGetters, userActions }, true); - const { wrapActions, getLoading, useLoading } = makeWrapActions( - ctx, - { userGetters, derived: derivedState, userActions, reset }, - true, - ); + const { wrapActions, getLoading, useLoading } = makeWrapActions(ctx, { userGetters, derived: derivedState, userActions, reset }, true); // 创建生命周期 makeLifecycle(ctx, lifecycle, { userGetters, userActions, wrapActions, derivedState, isLayered: true }); diff --git a/packages/helux-store-pinia/src/util.ts b/packages/helux-store-pinia/src/util.ts index 08f12929..4890c0a0 100644 --- a/packages/helux-store-pinia/src/util.ts +++ b/packages/helux-store-pinia/src/util.ts @@ -1,6 +1,6 @@ import type { Dict, Fn, ILifecycle, ISharedCtx } from 'helux'; import { getCurrentProxy } from 'helux'; -import { INNER_GET_CURRENT_PROXY, INNER_STATE, INNER_RESET, INNER_DRAFT, STATE, DRAFT } from './consts'; +import { DRAFT, INNER_DRAFT, INNER_GET_CURRENT_PROXY, INNER_RESET, INNER_STATE, STATE } from './consts'; function keys(obj: object) { return Object.keys(obj); @@ -127,7 +127,7 @@ export function makeWrapDerived(ctx: ISharedCtx, options: any, isLayered?: boole }); ctx.defineMutateSelf()(deriveFns); // 因需要基于自身可变计算的派生属性,未分层结构用 state 当作 derived - return { derivedState: state, useDerivedState: () => { } }; + return { derivedState: state, useDerivedState: () => {} }; } Object.keys(userGetters).forEach((key) => { diff --git a/packages/helux-types/CHANGELOG.md b/packages/helux-types/CHANGELOG.md index 4dde2199..3470d6f1 100644 --- a/packages/helux-types/CHANGELOG.md +++ b/packages/helux-types/CHANGELOG.md @@ -1,5 +1,17 @@ # @helux/types +## 5.5.6 + +## 5.5.5 + +## 5.5.4 + +## 5.5.3 + +## 5.5.2 + +## 5.5.1 + ## 5.5.0 ## 5.4.6 diff --git a/packages/helux-types/package.json b/packages/helux-types/package.json index 91253e7f..051772e3 100644 --- a/packages/helux-types/package.json +++ b/packages/helux-types/package.json @@ -1,6 +1,6 @@ { "name": "@helux/types", - "version": "5.5.0", + "version": "5.5.6", "description": "helux common types lib", "keywords": [ "helux", diff --git a/packages/helux-utils/CHANGELOG.md b/packages/helux-utils/CHANGELOG.md index a048748c..680e4614 100644 --- a/packages/helux-utils/CHANGELOG.md +++ b/packages/helux-utils/CHANGELOG.md @@ -1,5 +1,41 @@ # @helux/utils +## 5.5.6 + +### Patch Changes + +- @helux/types@5.5.6 + +## 5.5.5 + +### Patch Changes + +- @helux/types@5.5.5 + +## 5.5.4 + +### Patch Changes + +- @helux/types@5.5.4 + +## 5.5.3 + +### Patch Changes + +- @helux/types@5.5.3 + +## 5.5.2 + +### Patch Changes + +- @helux/types@5.5.2 + +## 5.5.1 + +### Patch Changes + +- @helux/types@5.5.1 + ## 5.5.0 ### Patch Changes diff --git a/packages/helux-utils/package.json b/packages/helux-utils/package.json index fa1fac5b..d4a51970 100644 --- a/packages/helux-utils/package.json +++ b/packages/helux-utils/package.json @@ -1,6 +1,6 @@ { "name": "@helux/utils", - "version": "5.5.0", + "version": "5.5.6", "description": "helux utils lib", "keywords": [ "helux", diff --git a/packages/helux/CHANGELOG.md b/packages/helux/CHANGELOG.md index ae30df39..1f4bf940 100644 --- a/packages/helux/CHANGELOG.md +++ b/packages/helux/CHANGELOG.md @@ -1,5 +1,50 @@ # helux +## 5.5.6 + +### Patch Changes + +- 79235a0: add enhanceStore +- Updated dependencies [79235a0] + - @helux/core@5.5.6 + +## 5.5.5 + +### Patch Changes + +- Updated dependencies [4347ce9] + - @helux/core@5.5.5 + +## 5.5.4 + +### Patch Changes + +- Updated dependencies [8aa2422] + - @helux/core@5.5.4 + +## 5.5.3 + +### Patch Changes + +- 7be2611: optimize syncer +- Updated dependencies [7be2611] + - @helux/core@5.5.3 + +## 5.5.2 + +### Patch Changes + +- 45f3912: support syncer string +- Updated dependencies [45f3912] + - @helux/core@5.5.2 + +## 5.5.1 + +### Patch Changes + +- Updated dependencies [0decefa] + - @helux/core@5.5.1 + ## 5.5.0 ### Minor Changes diff --git a/packages/helux/package.json b/packages/helux/package.json index a83f6a45..d47e6ab8 100644 --- a/packages/helux/package.json +++ b/packages/helux/package.json @@ -1,6 +1,6 @@ { "name": "helux", - "version": "5.5.0", + "version": "5.5.6", "description": "A reactive atomic state engine for React(including React 18) and all React like, carrying dependency collection feature, supporting fine-grained updates", "bugs": { "url": "https://github.com/heluxjs/helux/issues" @@ -44,6 +44,7 @@ "vitest": "^0.34.6" }, "peerDependencies": { + "@helux/core": "workspace:^", "react": ">=16.8.0" }, "bundleDependencies": false, diff --git a/packages/helux/src/index.ts b/packages/helux/src/index.ts index 00b5fd11..c5c45904 100644 --- a/packages/helux/src/index.ts +++ b/packages/helux/src/index.ts @@ -21,6 +21,7 @@ export const { atomx, share, sharex, + enhanceStore, // derive api derive, deriveDict, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 156ad759..49eccb05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -129,13 +129,13 @@ importers: version: 4.4.2 '@helux/demo-utils': specifier: latest - version: 0.0.3(@types/react-dom@17.0.26(@types/react@17.0.83))(@types/react@17.0.83)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-micro@4.10.7(hel-html-parser@1.1.2)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-types@4.3.3))(hel-types@4.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 0.0.3(@types/react-dom@17.0.26(@types/react@17.0.83))(@types/react@17.0.83)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-micro@4.10.7(hel-html-parser@1.1.2)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-types@4.3.3))(hel-types@4.3.3)(react-dom@18.0.0(react@18.0.0))(react@18.0.0) '@helux/utils': specifier: latest - version: 4.5.1 + version: 5.5.0 '@makotot/ghostui': specifier: ^2.0.0 - version: 2.0.0(react@18.3.1) + version: 2.0.0(react@18.0.0) animated-scroll-to: specifier: ^2.3.0 version: 2.3.2 @@ -144,10 +144,13 @@ importers: version: 2.5.1 console-feed: specifier: ^3.5.0 - version: 3.8.0(jquery@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 3.8.0(jquery@3.7.1)(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + copy-to-clipboard: + specifier: ^3.3.3 + version: 3.3.3 helux: specifier: latest - version: 4.5.1(react@18.3.1) + version: 5.5.0(react@18.0.0) localforage: specifier: ^1.10.0 version: 1.10.0 @@ -159,7 +162,7 @@ importers: version: 4.1.1 prism-react-renderer: specifier: ^2.3.1 - version: 2.4.1(react@18.3.1) + version: 2.4.1(react@18.0.0) prism-themes: specifier: ^1.9.0 version: 1.9.0 @@ -168,19 +171,19 @@ importers: version: 6.14.0 rc-motion: specifier: ^2.9.0 - version: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) rc-tree: specifier: ^5.8.2 - version: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.13.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0) react-copy-to-clipboard: specifier: ^5.1.0 - version: 5.1.0(react@18.3.1) + version: 5.1.0(react@18.0.0) react-live: specifier: ^4.1.5 - version: 4.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.1.8(react-dom@18.0.0(react@18.0.0))(react@18.0.0) styledfc: specifier: ^1.0.7 - version: 1.2.1(@types/react@17.0.83)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.1(@types/react@17.0.83)(react-dom@18.0.0(react@18.0.0))(react@18.0.0) devDependencies: '@commitlint/cli': specifier: ^17.1.2 @@ -202,13 +205,13 @@ importers: version: 4.4.6(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(stylelint@14.16.1)(typescript@5.3.3) dumi: specifier: ^2.2.16 - version: 2.4.18(@babel/core@7.26.10)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) + version: 2.4.18(@babel/core@7.26.10)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) eslint: specifier: ^8.23.0 version: 8.57.1 father: specifier: ^4.1.0 - version: 4.5.2(@babel/core@7.26.10)(@types/node@20.5.1)(styled-components@6.1.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@2.19.0)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) + version: 4.5.2(@babel/core@7.26.10)(@types/node@20.5.1)(styled-components@6.1.15(react-dom@18.0.0(react@18.0.0))(react@18.0.0))(type-fest@2.19.0)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) husky: specifier: ^8.0.1 version: 8.0.3 @@ -225,11 +228,11 @@ importers: specifier: ^2.2.18 version: 2.5.10(prettier@2.8.8) react: - specifier: ^18.0.0 - version: 18.3.1 + specifier: 18.0.0 + version: 18.0.0 react-dom: - specifier: ^18.0.0 - version: 18.3.1(react@18.3.1) + specifier: 18.0.0 + version: 18.0.0(react@18.0.0) stylelint: specifier: ^14.9.1 version: 14.16.1 @@ -327,8 +330,8 @@ importers: specifier: ^4.3.3 version: 4.3.3 helux: - specifier: ^5.4.2 - version: 5.4.2(react@18.3.1) + specifier: ^5.5.0 + version: 5.5.0(react@18.3.1) react: specifier: '>=16.10.2' version: 18.3.1 @@ -404,8 +407,8 @@ importers: packages/helux-plugin-devtool: dependencies: helux: - specifier: ^5.4.2 - version: 5.4.2(react@18.3.1) + specifier: ^5.5.0 + version: 5.5.0(react@18.3.1) redux: specifier: ^4.2.1 version: 4.2.1 @@ -2163,11 +2166,8 @@ packages: '@helux/core@3.6.14': resolution: {integrity: sha512-99+IXuOFwix0yfEqO7vjM/gW4YviEYI6YGEaxG8yMxgpzMHsfmMqDqyPJtjT/GcFqYfV7JnOnlWERBUS+RQ2cA==} - '@helux/core@4.5.1': - resolution: {integrity: sha512-QphDM/X2gdWq8zn4TkXp4iD5lxe0C6Kmd9khQlYkAbAQ1Q4/p6NfPdCIZ5eM2CuXAfhY0G97fNoNszJ4gEgJWw==} - - '@helux/core@5.4.2': - resolution: {integrity: sha512-Rcdw1GnSNflo7L7Hnxx+8dRQyLV29G6YTkRtJS2v5gyqIxERCCEkT+dMVgExmI8kjSDF0YoeItA2vzz8wGlHZg==} + '@helux/core@5.5.0': + resolution: {integrity: sha512-04cjxCHn80AyK7YK6Ftc/aNJ3B5MkjZKLOJPQRuFsB9y2t6plRcQhlRawDej5TkrddZcTXK3t01h9Loov/TVWw==} '@helux/demo-utils@0.0.3': resolution: {integrity: sha512-PUTJkDsqpR7AnOJeDjzgvRwPDkedCUxpYcjVUX0uM/UiNSi0QOIM0y/GTh456FLtaiKnFxZBkFec1xXfpMp4YQ==} @@ -2183,29 +2183,20 @@ packages: '@helux/hooks-impl@3.6.14': resolution: {integrity: sha512-IGfD1nafVkfY0NvU6/UAl3t8av83o08mjAMXroesK1pcYEdYxhO+lPsPjqyUV1yMqnl5IkMWvtpEMdEAuvjwrA==} - '@helux/hooks-impl@4.5.1': - resolution: {integrity: sha512-BGYWENpvtVvplgdJ0P+iHXh3Vt+EPqqnPQtD6iu7rGhKFHPU8tAnSg86GzeyTmdwwZJkH8ENtLODYOAvnd2nsw==} - - '@helux/hooks-impl@5.4.2': - resolution: {integrity: sha512-VvKlHilmr3Vt/2O+09qnOp0mw4DiAqBzF1hAFwS19nDb215d3ETnJz017TX2rfzSLY6p5w+g1QYye6jyxPRKng==} + '@helux/hooks-impl@5.5.0': + resolution: {integrity: sha512-eAEc0DLOizW3ixuDGuurquw45I/5ZX6T1LUw63xPK5JcXXC5EjROr/WerWviMZZNDz40NcJKgeu8+3+qdkh2kg==} '@helux/types@3.6.14': resolution: {integrity: sha512-CiZ/s2MuYlRqZwOXqF5WIiilT8D8YbIDTml8jLTazdQr85ZW7l98DBZfNOj/dC9V0iX9FMDxPsQwDqBxGAVyqQ==} - '@helux/types@4.5.1': - resolution: {integrity: sha512-vu18NA6F7EBLk/dFsKhHGVnzgQHIqw36jVmkGD2XRS8hed0PNTEsY1OIVDoLmEwx42GDVeSDwaf5IG7n4hNKvA==} - - '@helux/types@5.4.2': - resolution: {integrity: sha512-kxlz0/D80ltx0RqrZA+nU9y0k5yO+5nLxkheGSrbOM1i2XJhdF7+84aYCF6ATvv3k4yOp+Md+4V4YyZ0HiAxxA==} + '@helux/types@5.5.0': + resolution: {integrity: sha512-dHENuAMnsEm+A3no5prR5Y3u2gCkt6vMIQR3fdlcL5IklxPzy97Mr/2C16ApuPa6cNhV2+qxYMWsDASlRAblNw==} '@helux/utils@3.6.14': resolution: {integrity: sha512-foaVmUUG7PAYsPgjGXe+lX4sU4BeiUk783Ib5sq3KA7AA3wxAtO5lfMvaEmIg7Ah7HTowuWj1IPlnt0SqKyQnQ==} - '@helux/utils@4.5.1': - resolution: {integrity: sha512-WkE4XO7iR0/ztpS+iqubJQfE5bAziN+tml54xVAkQeeaCV05/6xy6HE4GmixBgPoNqTDbYb0gWFha9DNrYfuFg==} - - '@helux/utils@5.4.2': - resolution: {integrity: sha512-oTHV2/6eAg64R+OrYg7pmfDyjAfbBxfTQeb2KH365u8WiSF8FHaywtZvNdABYszHF/ghh4CfOI5GT18BeCyWwA==} + '@helux/utils@5.5.0': + resolution: {integrity: sha512-qrbLVQVwBH08gl2oEnZarU1pOFokh4RWFUtmEIRqUWYE6DKeM04vDz9tsS4xc0wE72gPsN6Z6RqR1dA8Xrmvig==} '@humanwhocodes/config-array@0.13.0': resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} @@ -5982,13 +5973,8 @@ packages: peerDependencies: react: '>=16.8.0' - helux@4.5.1: - resolution: {integrity: sha512-tfLkmW1KeRslJu8uO7NExRcNKDjzadCTdYkyF/0vlqTWyKBTr2gmbrnshGaU8swuhoR+5iRPCThQK8qEmmH94g==} - peerDependencies: - react: '>=16.8.0' - - helux@5.4.2: - resolution: {integrity: sha512-dCoZou4IB3hW5jdzq97Uz4GB2sumHewuyZI1jMMelANOs4VXxuq4n4yN3uKTfnY9DiN33EgiKlA9EMqG3bwCvA==} + helux@5.5.0: + resolution: {integrity: sha512-lPRAZg2x+y5DtiQHxQuE4dVu9nNYkpW3Ov6cbwML4oW1ir4bNcA5SGE2cEcAEsLF2jqyJvfu9EUB4uQqLlM8Jg==} peerDependencies: react: '>=16.8.0' @@ -7022,6 +7008,7 @@ packages: limu@3.13.2: resolution: {integrity: sha512-wTN7gklCjfVUDyFh8Rj3n03D7RzXb3CXfgljR0kX2D+YADcbruv6+rxCzXz0mK1D3XHTIyQpin5xM1xIg0xsUg==} + bundledDependencies: [] limu@4.1.0: resolution: {integrity: sha512-0t1VVXdH/Xijm7NUhIPYZ70JdSKXt1MtuqapZQVe74PvdngrOisLUhpz01ikb+y0VpYMXk1Wh8ZKFRavB0H5+Q==} @@ -8590,6 +8577,11 @@ packages: peerDependencies: react: ^15.3.0 || 16 || 17 || 18 + react-dom@18.0.0: + resolution: {integrity: sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==} + peerDependencies: + react: ^18.0.0 + react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -8680,6 +8672,10 @@ packages: react: '*' react-dom: '*' + react@18.0.0: + resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} + engines: {node: '>=0.10.0'} + react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -9037,6 +9033,9 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -9273,6 +9272,7 @@ packages: source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} @@ -11602,7 +11602,7 @@ snapshots: '@commitlint/types': 17.8.1 '@types/node': 20.5.1 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.3.3) cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@4.9.5))(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5))(typescript@4.9.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 @@ -11743,7 +11743,7 @@ snapshots: '@emotion/utils': 0.11.3 '@emotion/weak-memoize': 0.2.5 - '@emotion/core@10.3.1(react@18.3.1)': + '@emotion/core@10.3.1(react@18.0.0)': dependencies: '@babel/runtime': 7.26.10 '@emotion/cache': 10.0.29 @@ -11751,7 +11751,7 @@ snapshots: '@emotion/serialize': 0.11.16 '@emotion/sheet': 0.9.4 '@emotion/utils': 0.11.3 - react: 18.3.1 + react: 18.0.0 transitivePeerDependencies: - supports-color @@ -11787,21 +11787,21 @@ snapshots: '@emotion/sheet@0.9.4': {} - '@emotion/styled-base@10.3.0(@emotion/core@10.3.1(react@18.3.1))(react@18.3.1)': + '@emotion/styled-base@10.3.0(@emotion/core@10.3.1(react@18.0.0))(react@18.0.0)': dependencies: '@babel/runtime': 7.26.10 - '@emotion/core': 10.3.1(react@18.3.1) + '@emotion/core': 10.3.1(react@18.0.0) '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 - react: 18.3.1 + react: 18.0.0 - '@emotion/styled@10.3.0(@emotion/core@10.3.1(react@18.3.1))(react@18.3.1)': + '@emotion/styled@10.3.0(@emotion/core@10.3.1(react@18.0.0))(react@18.0.0)': dependencies: - '@emotion/core': 10.3.1(react@18.3.1) - '@emotion/styled-base': 10.3.0(@emotion/core@10.3.1(react@18.3.1))(react@18.3.1) + '@emotion/core': 10.3.1(react@18.0.0) + '@emotion/styled-base': 10.3.0(@emotion/core@10.3.1(react@18.0.0))(react@18.0.0) babel-plugin-emotion: 10.2.2 - react: 18.3.1 + react: 18.0.0 transitivePeerDependencies: - supports-color @@ -12273,63 +12273,45 @@ snapshots: '@helux/utils': 3.6.14 limu: 3.13.2 - '@helux/core@4.5.1': - dependencies: - '@helux/hooks-impl': 4.5.1 - '@helux/types': 4.5.1 - '@helux/utils': 4.5.1 - limu: 3.13.2 - - '@helux/core@5.4.2': + '@helux/core@5.5.0': dependencies: - '@helux/hooks-impl': 5.4.2 - '@helux/types': 5.4.2 - '@helux/utils': 5.4.2 + '@helux/hooks-impl': 5.5.0 + '@helux/types': 5.5.0 + '@helux/utils': 5.5.0 limu: 4.1.0 - '@helux/demo-utils@0.0.3(@types/react-dom@17.0.26(@types/react@17.0.83))(@types/react@17.0.83)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-micro@4.10.7(hel-html-parser@1.1.2)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-types@4.3.3))(hel-types@4.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@helux/demo-utils@0.0.3(@types/react-dom@17.0.26(@types/react@17.0.83))(@types/react@17.0.83)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-micro@4.10.7(hel-html-parser@1.1.2)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-types@4.3.3))(hel-types@4.3.3)(react-dom@18.0.0(react@18.0.0))(react@18.0.0)': dependencies: '@types/react': 17.0.83 '@types/react-dom': 17.0.26(@types/react@17.0.83) hel-micro: 4.10.7(hel-html-parser@1.1.2)(hel-micro-core@4.9.6(hel-types@4.3.3))(hel-types@4.3.3) hel-micro-core: 4.9.6(hel-types@4.3.3) hel-types: 4.3.3 - helux: 3.6.14(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + helux: 3.6.14(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) '@helux/hooks-impl@3.6.14': dependencies: '@helux/types': 3.6.14 '@helux/utils': 3.6.14 - '@helux/hooks-impl@4.5.1': - dependencies: - '@helux/types': 4.5.1 - '@helux/utils': 4.5.1 - - '@helux/hooks-impl@5.4.2': + '@helux/hooks-impl@5.5.0': dependencies: - '@helux/types': 5.4.2 - '@helux/utils': 5.4.2 + '@helux/types': 5.5.0 + '@helux/utils': 5.5.0 '@helux/types@3.6.14': {} - '@helux/types@4.5.1': {} - - '@helux/types@5.4.2': {} + '@helux/types@5.5.0': {} '@helux/utils@3.6.14': dependencies: '@helux/types': 3.6.14 - '@helux/utils@4.5.1': - dependencies: - '@helux/types': 4.5.1 - - '@helux/utils@5.4.2': + '@helux/utils@5.5.0': dependencies: - '@helux/types': 5.4.2 + '@helux/types': 5.5.0 '@humanwhocodes/config-array@0.13.0': dependencies: @@ -12672,6 +12654,13 @@ snapshots: dependencies: call-bind: 1.0.8 + '@loadable/component@5.15.2(react@18.0.0)': + dependencies: + '@babel/runtime': 7.23.6 + hoist-non-react-statics: 3.3.2 + react: 18.0.0 + react-is: 16.13.1 + '@loadable/component@5.15.2(react@18.3.1)': dependencies: '@babel/runtime': 7.23.6 @@ -12679,9 +12668,9 @@ snapshots: react: 18.3.1 react-is: 16.13.1 - '@makotot/ghostui@2.0.0(react@18.3.1)': + '@makotot/ghostui@2.0.0(react@18.0.0)': dependencies: - react: 18.3.1 + react: 18.0.0 '@manypkg/find-root@1.1.0': dependencies: @@ -12945,35 +12934,35 @@ snapshots: '@polka/url@1.0.0-next.28': {} - '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/portal@1.1.2(react-dom@18.0.0(react@18.0.0))(react@18.0.0)': dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - '@rc-component/trigger@1.18.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/trigger@1.18.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0)': dependencies: '@babel/runtime': 7.26.10 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@18.0.0(react@18.0.0))(react@18.0.0) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-resize-observer: 1.4.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - '@rc-component/trigger@2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/trigger@2.2.6(react-dom@18.0.0(react@18.0.0))(react@18.0.0)': dependencies: '@babel/runtime': 7.26.10 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@18.0.0(react@18.0.0))(react@18.0.0) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-resize-observer: 1.4.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) '@rollup/rollup-android-arm-eabi@4.35.0': optional: true @@ -14009,6 +13998,16 @@ snapshots: optionalDependencies: type-fest: 2.19.0 + '@umijs/renderer-react@4.4.6(react-dom@18.0.0(react@18.0.0))(react@18.0.0)': + dependencies: + '@babel/runtime': 7.23.6 + '@loadable/component': 5.15.2(react@18.0.0) + history: 5.3.0 + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + react-helmet-async: 1.3.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react-router-dom: 6.3.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + '@umijs/renderer-react@4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.23.6 @@ -14657,14 +14656,14 @@ snapshots: zod: 3.24.2 zod-validation-error: 2.1.0(zod@3.24.2) - babel-plugin-styled-components@2.1.4(@babel/core@7.26.10)(styled-components@6.1.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + babel-plugin-styled-components@2.1.4(@babel/core@7.26.10)(styled-components@6.1.15(react-dom@18.0.0(react@18.0.0))(react@18.0.0)): dependencies: '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) lodash: 4.17.21 picomatch: 2.3.1 - styled-components: 6.1.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + styled-components: 6.1.15(react-dom@18.0.0(react@18.0.0))(react@18.0.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -15310,15 +15309,15 @@ snapshots: console-browserify@1.2.0: {} - console-feed@3.8.0(jquery@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + console-feed@3.8.0(jquery@3.7.1)(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: - '@emotion/core': 10.3.1(react@18.3.1) - '@emotion/styled': 10.3.0(@emotion/core@10.3.1(react@18.3.1))(react@18.3.1) - emotion-theming: 10.3.0(@emotion/core@10.3.1(react@18.3.1))(react@18.3.1) - linkifyjs: 2.1.9(jquery@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-inline-center: 1.0.1(react@18.3.1) - react-inspector: 5.1.1(react@18.3.1) + '@emotion/core': 10.3.1(react@18.0.0) + '@emotion/styled': 10.3.0(@emotion/core@10.3.1(react@18.0.0))(react@18.0.0) + emotion-theming: 10.3.0(@emotion/core@10.3.1(react@18.0.0))(react@18.0.0) + linkifyjs: 2.1.9(jquery@3.7.1)(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-inline-center: 1.0.1(react@18.0.0) + react-inspector: 5.1.1(react@18.0.0) transitivePeerDependencies: - jquery - react-dom @@ -15386,7 +15385,7 @@ snapshots: cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@4.9.5))(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5))(typescript@4.9.5): dependencies: '@types/node': 20.5.1 - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.3.3) ts-node: 10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@5.3.3) typescript: 4.9.5 @@ -15406,14 +15405,14 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@4.9.5): + cosmiconfig@8.3.6(typescript@5.3.3): dependencies: import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 4.9.5 + typescript: 5.3.3 create-ecdh@4.0.4: dependencies: @@ -15871,10 +15870,10 @@ snapshots: dumi-assets-types@2.4.14: {} - dumi@2.4.18(@babel/core@7.26.10)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))): + dumi@2.4.18(@babel/core@7.26.10)(@swc/helpers@0.5.1)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))): dependencies: '@ant-design/icons-svg': 4.4.2 - '@makotot/ghostui': 2.0.0(react@18.3.1) + '@makotot/ghostui': 2.0.0(react@18.0.0) '@stackblitz/sdk': 1.11.0 '@swc/core': 1.9.2(@swc/helpers@0.5.1) '@types/hast': 2.3.10 @@ -15909,22 +15908,22 @@ snapshots: mdast-util-to-string: 3.2.0 nprogress: 0.2.0 pluralize: 8.0.0 - prism-react-renderer: 1.3.5(react@18.3.1) + prism-react-renderer: 1.3.5(react@18.0.0) prism-themes: 1.9.0 prismjs: 1.30.0 raw-loader: 4.0.2(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) - rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tabs: 12.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tooltip: 6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tree: 5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-copy-to-clipboard: 5.1.0(react@18.3.1) - react-dom: 18.3.1(react@18.3.1) - react-error-boundary: 4.1.2(react@18.3.1) - react-intl: 7.1.6(react@18.3.1)(typescript@5.3.3) - react-loading-skeleton: 3.5.0(react@18.3.1) - react-simple-code-editor: 0.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-tabs: 12.15.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-tooltip: 6.4.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-tree: 5.13.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-copy-to-clipboard: 5.1.0(react@18.0.0) + react-dom: 18.0.0(react@18.0.0) + react-error-boundary: 4.1.2(react@18.0.0) + react-intl: 7.1.6(react@18.0.0)(typescript@5.3.3) + react-loading-skeleton: 3.5.0(react@18.0.0) + react-simple-code-editor: 0.13.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0) rehype-autolink-headings: 6.1.1 rehype-remove-comments: 5.0.0 rehype-stringify: 9.0.4 @@ -15936,7 +15935,7 @@ snapshots: sass: 1.85.1 sitemap: 7.1.2 sucrase: 3.35.0 - umi: 4.4.6(@babel/core@7.26.10)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.85.1)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) + umi: 4.4.6(@babel/core@7.26.10)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(rollup@3.29.5)(sass@1.85.1)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) unified: 10.1.2 unist-util-visit: 4.1.2 unist-util-visit-parents: 5.1.3 @@ -16016,13 +16015,13 @@ snapshots: emojis-list@3.0.0: {} - emotion-theming@10.3.0(@emotion/core@10.3.1(react@18.3.1))(react@18.3.1): + emotion-theming@10.3.0(@emotion/core@10.3.1(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 - '@emotion/core': 10.3.1(react@18.3.1) + '@emotion/core': 10.3.1(react@18.0.0) '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 - react: 18.3.1 + react: 18.0.0 encodeurl@1.0.2: {} @@ -16752,7 +16751,7 @@ snapshots: dependencies: reusify: 1.1.0 - father@4.5.2(@babel/core@7.26.10)(@types/node@20.5.1)(styled-components@6.1.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@2.19.0)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))): + father@4.5.2(@babel/core@7.26.10)(@types/node@20.5.1)(styled-components@6.1.15(react-dom@18.0.0(react@18.0.0))(react@18.0.0))(type-fest@2.19.0)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))): dependencies: '@microsoft/api-extractor': 7.39.1(@types/node@20.5.1) '@umijs/babel-preset-umi': 4.4.6 @@ -16764,7 +16763,7 @@ snapshots: '@vercel/ncc': 0.33.3 babel-plugin-dynamic-import-node: 2.3.3 babel-plugin-module-resolver: 4.1.0 - babel-plugin-styled-components: 2.1.4(@babel/core@7.26.10)(styled-components@6.1.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + babel-plugin-styled-components: 2.1.4(@babel/core@7.26.10)(styled-components@6.1.15(react-dom@18.0.0(react@18.0.0))(react@18.0.0)) babel-plugin-transform-define: 2.0.1 enhanced-resolve: 5.9.3 esbuild: 0.17.19 @@ -17398,19 +17397,19 @@ snapshots: hel-types@4.3.3: {} - helux@3.6.14(react@18.3.1): + helux@3.6.14(react@18.0.0): dependencies: '@helux/core': 3.6.14 - react: 18.3.1 + react: 18.0.0 - helux@4.5.1(react@18.3.1): + helux@5.5.0(react@18.0.0): dependencies: - '@helux/core': 4.5.1 - react: 18.3.1 + '@helux/core': 5.5.0 + react: 18.0.0 - helux@5.4.2(react@18.3.1): + helux@5.5.0(react@18.3.1): dependencies: - '@helux/core': 5.4.2 + '@helux/core': 5.5.0 react: 18.3.1 heti-findandreplacedomtext@0.5.0: {} @@ -18807,11 +18806,11 @@ snapshots: lines-and-columns@1.2.4: {} - linkifyjs@2.1.9(jquery@3.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + linkifyjs@2.1.9(jquery@3.7.1)(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: jquery: 3.7.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) lint-staged@10.5.4: dependencies: @@ -20526,15 +20525,15 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - prism-react-renderer@1.3.5(react@18.3.1): + prism-react-renderer@1.3.5(react@18.0.0): dependencies: - react: 18.3.1 + react: 18.0.0 - prism-react-renderer@2.4.1(react@18.3.1): + prism-react-renderer@2.4.1(react@18.0.0): dependencies: '@types/prismjs': 1.26.5 clsx: 2.1.1 - react: 18.3.1 + react: 18.0.0 prism-themes@1.9.0: {} @@ -20669,104 +20668,110 @@ snapshots: schema-utils: 3.3.0 webpack: 5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1)) - rc-dropdown@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-dropdown@4.1.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 - '@rc-component/trigger': 1.18.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 1.18.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-menu@9.12.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-menu@9.12.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 - '@rc-component/trigger': 1.18.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 1.18.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-overflow: 1.4.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-motion@2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-motion@2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-overflow@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-overflow@1.4.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-resize-observer@1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-resize-observer@1.4.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) resize-observer-polyfill: 1.5.1 - rc-tabs@12.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tabs@12.15.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-dropdown: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-menu: 9.12.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-dropdown: 4.1.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-menu: 9.12.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-motion: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-resize-observer: 1.4.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-tooltip@6.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tooltip@6.4.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 - '@rc-component/trigger': 2.2.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.6(react-dom@18.0.0(react@18.0.0))(react@18.0.0) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-tree@5.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tree@5.13.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-virtual-list: 3.18.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.5(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-virtual-list: 3.18.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - rc-util@5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-util@5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) react-is: 18.3.1 - rc-virtual-list@3.18.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-virtual-list@3.18.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.3(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + rc-util: 5.44.4(react-dom@18.0.0(react@18.0.0))(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) - react-copy-to-clipboard@5.1.0(react@18.3.1): + react-copy-to-clipboard@5.1.0(react@18.0.0): dependencies: copy-to-clipboard: 3.3.3 prop-types: 15.8.1 - react: 18.3.1 + react: 18.0.0 + + react-dom@18.0.0(react@18.0.0): + dependencies: + loose-envify: 1.4.0 + react: 18.0.0 + scheduler: 0.21.0 react-dom@18.3.1(react@18.3.1): dependencies: @@ -20774,15 +20779,25 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-error-boundary@4.1.2(react@18.3.1): + react-error-boundary@4.1.2(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 - react: 18.3.1 + react: 18.0.0 react-error-overlay@6.0.9: {} react-fast-compare@3.2.2: {} + react-helmet-async@1.3.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0): + dependencies: + '@babel/runtime': 7.26.10 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.26.10 @@ -20793,18 +20808,18 @@ snapshots: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-inline-center@1.0.1(react@18.3.1): + react-inline-center@1.0.1(react@18.0.0): dependencies: - react: 18.3.1 + react: 18.0.0 - react-inspector@5.1.1(react@18.3.1): + react-inspector@5.1.1(react@18.0.0): dependencies: '@babel/runtime': 7.26.10 is-dom: 1.1.0 prop-types: 15.8.1 - react: 18.3.1 + react: 18.0.0 - react-intl@7.1.6(react@18.3.1)(typescript@5.3.3): + react-intl@7.1.6(react@18.0.0)(typescript@5.3.3): dependencies: '@formatjs/ecma402-abstract': 2.3.3 '@formatjs/icu-messageformat-parser': 2.11.1 @@ -20813,7 +20828,7 @@ snapshots: '@types/react': 17.0.83 hoist-non-react-statics: 3.3.2 intl-messageformat: 10.7.15 - react: 18.3.1 + react: 18.0.0 tslib: 2.8.1 optionalDependencies: typescript: 5.3.3 @@ -20824,17 +20839,17 @@ snapshots: react-is@18.3.1: {} - react-live@4.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-live@4.1.8(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: - prism-react-renderer: 2.4.1(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + prism-react-renderer: 2.4.1(react@18.0.0) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) sucrase: 3.35.0 - use-editable: 2.3.3(react@18.3.1) + use-editable: 2.3.3(react@18.0.0) - react-loading-skeleton@3.5.0(react@18.3.1): + react-loading-skeleton@3.5.0(react@18.0.0): dependencies: - react: 18.3.1 + react: 18.0.0 react-merge-refs@1.1.0: {} @@ -20842,6 +20857,13 @@ snapshots: react-refresh@0.14.2: {} + react-router-dom@6.3.0(react-dom@18.0.0(react@18.0.0))(react@18.0.0): + dependencies: + history: 5.3.0 + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + react-router: 6.3.0(react@18.0.0) + react-router-dom@6.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: history: 5.3.0 @@ -20849,15 +20871,24 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-router: 6.3.0(react@18.3.1) + react-router@6.3.0(react@18.0.0): + dependencies: + history: 5.3.0 + react: 18.0.0 + react-router@6.3.0(react@18.3.1): dependencies: history: 5.3.0 react: 18.3.1 - react-simple-code-editor@0.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-simple-code-editor@0.13.1(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) + + react@18.0.0: + dependencies: + loose-envify: 1.4.0 react@18.3.1: dependencies: @@ -21310,6 +21341,10 @@ snapshots: dependencies: xmlchars: 2.2.0 + scheduler@0.21.0: + dependencies: + loose-envify: 1.4.0 + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -21846,7 +21881,7 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - styled-components@6.1.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + styled-components@6.1.15(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@emotion/is-prop-valid': 1.2.2 '@emotion/unitless': 0.8.1 @@ -21854,18 +21889,18 @@ snapshots: css-to-react-native: 3.2.0 csstype: 3.1.3 postcss: 8.4.49 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) shallowequal: 1.1.0 stylis: 4.3.2 tslib: 2.6.2 - styledfc@1.2.1(@types/react@17.0.83)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + styledfc@1.2.1(@types/react@17.0.83)(react-dom@18.0.0(react@18.0.0))(react@18.0.0): dependencies: '@changesets/cli': 2.28.1 '@types/react': 17.0.83 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 18.0.0 + react-dom: 18.0.0(react@18.0.0) unplugin: 1.16.1 stylelint-config-recommended@7.0.0(stylelint@14.16.1): @@ -22442,7 +22477,7 @@ snapshots: uglify-js@3.19.3: {} - umi@4.4.6(@babel/core@7.26.10)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.85.1)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))): + umi@4.4.6(@babel/core@7.26.10)(@types/node@20.5.1)(@types/react@17.0.83)(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(lightningcss@1.22.1)(prettier@2.8.8)(react-dom@18.0.0(react@18.0.0))(react@18.0.0)(rollup@3.29.5)(sass@1.85.1)(stylelint@14.16.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))): dependencies: '@babel/runtime': 7.23.6 '@umijs/bundler-utils': 4.4.6 @@ -22450,7 +22485,7 @@ snapshots: '@umijs/core': 4.4.6 '@umijs/lint': 4.4.6(eslint@8.57.1)(jest@28.1.3(@types/node@20.5.1)(ts-node@10.9.2(@swc/core@1.11.9(@swc/helpers@0.5.1))(@types/node@20.5.1)(typescript@4.9.5)))(stylelint@14.16.1)(typescript@5.3.3) '@umijs/preset-umi': 4.4.6(@types/node@20.5.1)(@types/react@17.0.83)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.85.1)(terser@5.39.0)(type-fest@2.19.0)(typescript@5.3.3)(webpack@5.98.0(@swc/core@1.11.9(@swc/helpers@0.5.1))) - '@umijs/renderer-react': 4.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@umijs/renderer-react': 4.4.6(react-dom@18.0.0(react@18.0.0))(react@18.0.0) '@umijs/server': 4.4.6 '@umijs/test': 4.4.6(@babel/core@7.26.10) '@umijs/utils': 4.4.6 @@ -22620,9 +22655,9 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 - use-editable@2.3.3(react@18.3.1): + use-editable@2.3.3(react@18.0.0): dependencies: - react: 18.3.1 + react: 18.0.0 use-isomorphic-layout-effect@1.2.0(@types/react@17.0.83)(react@18.3.1): dependencies: