mirror of
https://github.com/pmndrs/zustand.git
synced 2025-12-08 19:45:52 +00:00
* prepare for the next major version * [v5] breaking: drop default exports (#2238) * fix: drop default exports for v5 * chore: remove default from cjs build * refactor: export shallow in v5 * fix: remove `addModuleExport` option for cjs. * [v5] breaking: drop deprecated features (#2235) * fix: remove deprecated v4 features * chore(build): remove context * docs(typescript): remove deprecated equals api * docs(persist): remove old persist api * chore: run yarn prettier on typescript docs * Discard changes to docs/guides/typescript.md * Discard changes to docs/integrations/persisting-store-data.md * Discard changes to tests/shallow.test.tsx * Discard changes to tests/vanilla/subscribe.test.tsx * [v5] breaking: make React 18 as minimal requirement (#2236) * fix: update package.json to require react 18+ * chore: update github actions to test on react 18+ * chore: remove devtools-skip hack from actions * chore(test): remove CI-SKIP from devtools tests * [v5] breaking: make use-sync-external-store an optional peer dependency (#2237) * chore: make use-sync-external-store optional peerDep * fix: use correct versions in package.json * [v5] breaking: require TypeScript 4.5 and update tests (#2257) * breaking(types): TS requirement * wip: latest only * wip: latest only 2 * drop ts <4.4 * wip: do not skip lib checkes * use latest node types * drop ts 4.4 * [v5]: drop "module" condition (#2270) * Update package json in order to remove module * Update rollup config in order to remove module config * Update patch esm script * Update package json to general exports and update node version (#2272) * [v5]: drop UMD/SystemJS builds (#2287) * Update rollup config in order to drop system js and umd builds * Update packages * Clean up files * Update rollup config * Update gh workflows * Minor fixes * Minor fixes * Minor fixes * Minor fixes * Testing * Minor changes * Minor fixes * remove `WithReact` type (#2300) * 5.0.0-alpha.0 * [v5]: do not depend on use-sync-external-store (#2301) * [v5]: do not depend on use-sync-external-store * memo get(server)snapshot * 5.0.0-alpha.1 * [v5]: refactor useMemoSelector (#2302) * [v5]: refactor useMemoSelector * add a test * Revert "[v5]: refactor useMemoSelector" This reverts commit b3c8b15586a270d12c335e566975021adf86c815. * Revert "Revert "[v5]: refactor useMemoSelector"" This reverts commit 3c47301d23e18dffb7d72df36595f83570d15d08. * [v5]: separate react entry point (#2303) * 5.0.0-alpha.2 * 5.0.0-alpha.3 * refactor: Switch to Object.hasOwn (#2365) * [v5] drop es5 (#2380) * update yarn lock * 5.0.0-alpha.4 * [v5]: follow React "standard" way with breaking behavioral change (#2395) * [v5]: follow React "standard" way with breaking behavioral change * add test * 5.0.0-alpha.5 * [v5] Rewrite shallow to support iterables (#2427) * [v5] fix rollup config for cjs (#2433) * 5.0.0-alpha.6 * no production build test * recover types that are dropped in #2462 * remove unused replacement * [v5] Remove Devtools warning (#2466) * chore: remove devtools extension warning * docs: add devtools link to readme * chore: remove unused test * chrome: remove unused tests * chore: remove unused test * Revert "chore: remove unused test" This reverts commit 0fa2a75f4936d960f703bf19e8f3505962cd628e. * update test name * update pnpm lock * fix merge main * add migration guide * fix typos * 5.0.0-beta.0 * update migration doc * fix merge main * fix merge main (prettier) * 5.0.0-beta.1 * fix(types)!: require complete state if `setState`'s `replace` flag is set (#2580) * fix(types): require complete state if `setState`'s `replace` flag is set * switch to variant 2 * fix type errors * update setState types for devtools and immer * make devtools setState non-generic * add migration guide * merge migration guides * run prettier * Update tests/middlewareTypes.test.tsx --------- Co-authored-by: Daishi Kato <dai-shi@users.noreply.github.com> Co-authored-by: daishi <daishi@axlight.com> * 5.0.0-beta.2 * move v5 migration doc * fix ci * missing commmit * remove unused rule exclusion * comment about react compiler * revert eslint config --------- Co-authored-by: Charles Kornoelje <33156025+charkour@users.noreply.github.com> Co-authored-by: Danilo Britto <dbritto.dev@gmail.com> Co-authored-by: Ekin Dursun <ekindursun@gmail.com> Co-authored-by: Simon Farshid <simon.farshid@outlook.com>
107 lines
2.8 KiB
JavaScript
107 lines
2.8 KiB
JavaScript
const path = require('path')
|
|
const alias = require('@rollup/plugin-alias')
|
|
const resolve = require('@rollup/plugin-node-resolve')
|
|
const replace = require('@rollup/plugin-replace')
|
|
const typescript = require('@rollup/plugin-typescript')
|
|
const { default: esbuild } = require('rollup-plugin-esbuild')
|
|
|
|
const extensions = ['.js', '.ts', '.tsx']
|
|
const { root } = path.parse(process.cwd())
|
|
const entries = [
|
|
{ find: /.*\/vanilla\/shallow\.ts$/, replacement: 'zustand/vanilla/shallow' },
|
|
{ find: /.*\/react\/shallow\.ts$/, replacement: 'zustand/react/shallow' },
|
|
{ find: /.*\/vanilla\.ts$/, replacement: 'zustand/vanilla' },
|
|
{ find: /.*\/react\.ts$/, replacement: 'zustand/react' },
|
|
]
|
|
|
|
function external(id) {
|
|
return !id.startsWith('.') && !id.startsWith(root)
|
|
}
|
|
|
|
function getEsbuild() {
|
|
return esbuild({
|
|
target: 'es2018',
|
|
supported: { 'import-meta': true },
|
|
tsconfig: path.resolve('./tsconfig.json'),
|
|
})
|
|
}
|
|
|
|
function createDeclarationConfig(input, output) {
|
|
return {
|
|
input,
|
|
output: {
|
|
dir: output,
|
|
},
|
|
external,
|
|
plugins: [
|
|
typescript({
|
|
declaration: true,
|
|
emitDeclarationOnly: true,
|
|
outDir: output,
|
|
}),
|
|
],
|
|
}
|
|
}
|
|
|
|
function createESMConfig(input, output) {
|
|
return {
|
|
input,
|
|
output: { file: output, format: 'esm' },
|
|
external,
|
|
plugins: [
|
|
alias({ entries: entries.filter((e) => !e.find.test(input)) }),
|
|
resolve({ extensions }),
|
|
replace({
|
|
...(output.endsWith('.js')
|
|
? {
|
|
'import.meta.env?.MODE': 'process.env.NODE_ENV',
|
|
}
|
|
: {
|
|
'import.meta.env?.MODE':
|
|
'(import.meta.env ? import.meta.env.MODE : undefined)',
|
|
}),
|
|
// a workaround for #829
|
|
'use-sync-external-store/shim/with-selector':
|
|
'use-sync-external-store/shim/with-selector.js',
|
|
delimiters: ['\\b', '\\b(?!(\\.|/))'],
|
|
preventAssignment: true,
|
|
}),
|
|
getEsbuild(),
|
|
],
|
|
}
|
|
}
|
|
|
|
function createCommonJSConfig(input, output) {
|
|
return {
|
|
input,
|
|
output: { file: output, format: 'cjs' },
|
|
external,
|
|
plugins: [
|
|
alias({ entries: entries.filter((e) => !e.find.test(input)) }),
|
|
resolve({ extensions }),
|
|
replace({
|
|
'import.meta.env?.MODE': 'process.env.NODE_ENV',
|
|
delimiters: ['\\b', '\\b(?!(\\.|/))'],
|
|
preventAssignment: true,
|
|
}),
|
|
getEsbuild(),
|
|
],
|
|
}
|
|
}
|
|
|
|
module.exports = function (args) {
|
|
let c = Object.keys(args).find((key) => key.startsWith('config-'))
|
|
if (c) {
|
|
c = c.slice('config-'.length).replace(/_/g, '/')
|
|
} else {
|
|
c = 'index'
|
|
}
|
|
return [
|
|
...(c === 'index' ? [createDeclarationConfig(`src/${c}.ts`, 'dist')] : []),
|
|
createCommonJSConfig(`src/${c}.ts`, `dist/${c}.js`),
|
|
createESMConfig(`src/${c}.ts`, `dist/esm/${c}.mjs`),
|
|
]
|
|
}
|
|
|
|
module.exports.entries = []
|