diff --git a/next-packages/compiler/unplugin-inula-next/tsup.config.ts b/next-packages/compiler/unplugin-inula-next/tsup.config.ts index 2e9bec8a063dd9812a52c991b1b6a8cb24df1aac..3a3035f3d438e411a9d18cbf77f97205a0cf2459 100644 --- a/next-packages/compiler/unplugin-inula-next/tsup.config.ts +++ b/next-packages/compiler/unplugin-inula-next/tsup.config.ts @@ -1,14 +1,21 @@ import type { Options } from 'tsup'; +import fs from 'fs'; // Banner for Vite, because babel work in cjs. const banner = "import { createRequire } from 'module';\nconst require = createRequire(import.meta.url);"; +// clean the dist folder manually +// beacuse tsup run configs in parallel, so it will be clean by other config +if (fs.existsSync('dist')) { + fs.rmSync('dist', { recursive: true, force: true }); +} + export default >[ { entry: [ 'src/*.ts', '!src/vite.ts', // This excludes vite.ts ], - clean: true, + clean: false, format: ['cjs', 'esm'], dts: true, cjsInterop: true, @@ -16,7 +23,7 @@ export default >[ }, { entry: ['src/vite.ts'], - clean: true, + clean: false, format: ['cjs', 'esm'], dts: true, cjsInterop: true, diff --git a/next-packages/runtime/test/e2e/context.test.tsx b/next-packages/runtime/test/e2e/context.test.tsx index b1f6285eb55279a936d7d5c02be057f7c03fcf8f..fb512fa7b0cfcf5529be45ddf17a3807f40a572d 100644 --- a/next-packages/runtime/test/e2e/context.test.tsx +++ b/next-packages/runtime/test/e2e/context.test.tsx @@ -478,4 +478,37 @@ describe('context', () => { updateContext!(); expect(container.innerHTML).toBe('
Theme: dark, Language: fr
'); }); + + it('Should support object spread in provider and consume by key', ({ container }) => { + const AppContext = createContext({ + language: 'en', + }); + let updateContext: () => void; + + function App() { + let context = { language: 'en', theme: 'light' }; + updateContext = () => { + context = { language: 'fr', theme: 'dark' }; + }; + return ( + + + + ); + } + + function Child() { + const { language, theme } = useContext(AppContext); + return ( +
+ Theme: {theme}, Language: {language} +
+ ); + } + + render(App(), container); + expect(container.innerHTML).toBe('
Theme: light, Language: en
'); + updateContext!(); + expect(container.innerHTML).toBe('
Theme: dark, Language: fr
'); + }); });