37a32d1f7d
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [rollup](https://rollupjs.org/) ([source](https://togithub.com/rollup/rollup)) | [`^3.29.4` -> `^4.0.0`](https://renovatebot.com/diffs/npm/rollup/3.29.4/4.6.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/rollup/4.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/rollup/4.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/rollup/3.29.4/4.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/rollup/3.29.4/4.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>rollup/rollup (rollup)</summary> ### [`v4.6.1`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#461) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.6.0...v4.6.1) *2023-11-30* ##### Bug Fixes - Resolve a situation where declaring the same `var` several times was considered a conflict ([#​5276](https://togithub.com/rollup/rollup/issues/5276)) ##### Pull Requests - [#​5275](https://togithub.com/rollup/rollup/pull/5275): Add TNG as special sponsor ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5276](https://togithub.com/rollup/rollup/pull/5276): Allow to redeclare parameters multiple times in nested scopes ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.6.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#460) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.5.2...v4.6.0) *2023-11-26* ##### Features - Allow `this.addWatchFile` in all plugin hooks ([#​5270](https://togithub.com/rollup/rollup/issues/5270)) ##### Bug Fixes - Show helpful error when native binaries are not installed due to an `npm` issue ([#​5267](https://togithub.com/rollup/rollup/issues/5267)) - Do not access `this` context in `this.addWatchFile` so it does not need to be bound when passed around ([#​5270](https://togithub.com/rollup/rollup/issues/5270)) ##### Pull Requests - [#​5267](https://togithub.com/rollup/rollup/pull/5267): Add friendly error for npm bug ([@​sapphi-red](https://togithub.com/sapphi-red)) - [#​5270](https://togithub.com/rollup/rollup/pull/5270): Allow this.addWatchFile in all hooks ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5272](https://togithub.com/rollup/rollup/pull/5272): Debug deployed graphs ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.5.2`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#452) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.5.1...v4.5.2) *2023-11-24* ##### Bug Fixes - Handle files with UTF-8 BOM when using the commonjs plugin ([#​5268](https://togithub.com/rollup/rollup/issues/5268)) ##### Pull Requests - [#​5268](https://togithub.com/rollup/rollup/pull/5268): fix: strip BOM before calling transform hook ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5269](https://togithub.com/rollup/rollup/pull/5269): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) ### [`v4.5.1`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#451) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.5.0...v4.5.1) *2023-11-21* ##### Bug Fixes - Do not error when a function expression uses the same name for a parameter and its id ([#​5262](https://togithub.com/rollup/rollup/issues/5262)) ##### Pull Requests - [#​5257](https://togithub.com/rollup/rollup/pull/5257): Fix graphs in docs, improve REPL colors ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5262](https://togithub.com/rollup/rollup/pull/5262): Allow function expression parameters to shadow the function id ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.5.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#450) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.4.1...v4.5.0) *2023-11-18* ##### Bug Fixes - Show a proper error when using native Rollup on armv7 musl Linux ([#​5255](https://togithub.com/rollup/rollup/issues/5255)) ##### Pull Requests - [#​5251](https://togithub.com/rollup/rollup/pull/5251): doc fix import assertions to attributes in API plugin development page ([@​lhapaipai](https://togithub.com/lhapaipai)) - [#​5253](https://togithub.com/rollup/rollup/pull/5253): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5255](https://togithub.com/rollup/rollup/pull/5255): Error for armv7 musl build ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.4.1`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#441) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.4.0...v4.4.1) *2023-11-14* ##### Bug Fixes - Do not flag duplicate function declarations in function scopes as syntax errors ([#​5248](https://togithub.com/rollup/rollup/issues/5248)) ##### Pull Requests - [#​5248](https://togithub.com/rollup/rollup/pull/5248): Allow functions to redeclare vars and functions in function scopes ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.4.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#440) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.3.1...v4.4.0) *2023-11-12* ##### Features - Replace SWC linting with faster internal linting to error on duplicate declarations etc. ([#​5207](https://togithub.com/rollup/rollup/issues/5207)) ##### Bug Fixes - Show proper error when an entry exports non-existing bindings ([#​5207](https://togithub.com/rollup/rollup/issues/5207)) ##### Pull Requests - [#​5207](https://togithub.com/rollup/rollup/pull/5207): perf: run lint while constructing nodes ([@​sapphi-red](https://togithub.com/sapphi-red)) ### [`v4.3.1`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#431) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.3.0...v4.3.1) *2023-11-11* ##### Bug Fixes - Fix rename error when handling errors in watch mode ([#​5240](https://togithub.com/rollup/rollup/issues/5240)) - Prevent warning when using `--forceExit` ([#​5245](https://togithub.com/rollup/rollup/issues/5245)) ##### Pull Requests - [#​5240](https://togithub.com/rollup/rollup/pull/5240): fix: allow the name of Rollup Error to be modified ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5243](https://togithub.com/rollup/rollup/pull/5243): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5245](https://togithub.com/rollup/rollup/pull/5245): Ensure --forceExit works without warning ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.3.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#430) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.2.0...v4.3.0) *2023-11-03* ##### Features - Add `forceExit` CLI flag for situations where the CLI does not exit gracefully ([#​5195](https://togithub.com/rollup/rollup/issues/5195)) ##### Bug Fixes - Properly catch errors when removing a temporary config file fails ([#​5198](https://togithub.com/rollup/rollup/issues/5198)) ##### Pull Requests - [#​5195](https://togithub.com/rollup/rollup/pull/5195): Add `forceExit` CLI flag ([@​raphael-theriault-swi](https://togithub.com/raphael-theriault-swi)) - [#​5198](https://togithub.com/rollup/rollup/pull/5198): fix: prevent `ENOENT` error on temp config removal ([@​jzempel](https://togithub.com/jzempel)) - [#​5237](https://togithub.com/rollup/rollup/pull/5237): chore: remove unused files and deps ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5238](https://togithub.com/rollup/rollup/pull/5238): chore(deps): update dependency eslint-plugin-unicorn to v49 ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5239](https://togithub.com/rollup/rollup/pull/5239): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) ### [`v4.2.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#420) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.1.6...v4.2.0) *2023-10-31* ##### Features - Run parsing in multiple threads and introduce `parseAstAsync` helper function ([#​5202](https://togithub.com/rollup/rollup/issues/5202)) ##### Pull Requests - [#​5202](https://togithub.com/rollup/rollup/pull/5202): perf: introduce `parseAstAsync` and parallelize parsing AST ([@​sapphi-red](https://togithub.com/sapphi-red)) ### [`v4.1.6`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#416) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.1.5...v4.1.6) *2023-10-31* ##### Bug Fixes - Fix a bug where emtpy block comments in certain positions could freeze Rollup ([#​5231](https://togithub.com/rollup/rollup/issues/5231)) ##### Pull Requests - [#​5228](https://togithub.com/rollup/rollup/pull/5228): build: ensure rust toolchain components for linting are installed ([@​jerome-benoit](https://togithub.com/jerome-benoit)) - [#​5231](https://togithub.com/rollup/rollup/pull/5231): Render emtpy block comments after tree-shaken statements ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5232](https://togithub.com/rollup/rollup/pull/5232): Revert specifying rustfmt and clippy in toolchain file as it breaks REPL build ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.1.5`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#415) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.1.4...v4.1.5) *2023-10-28* ##### Bug Fixes - Fix an issue where actual entries that were also implicit entries could remain implicit ([#​5220](https://togithub.com/rollup/rollup/issues/5220)) ##### Pull Requests - [#​5209](https://togithub.com/rollup/rollup/pull/5209): Document Vite workaround for browser build ([@​curran](https://togithub.com/curran)) - [#​5215](https://togithub.com/rollup/rollup/pull/5215): chore(deps): update dependency lint-staged to v15 ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5216](https://togithub.com/rollup/rollup/pull/5216): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5218](https://togithub.com/rollup/rollup/pull/5218): Update license plugin ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5219](https://togithub.com/rollup/rollup/pull/5219): Fix error highlight in REPL ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5220](https://togithub.com/rollup/rollup/pull/5220): Fix race condition when emitting implicitly dependent entries ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5224](https://togithub.com/rollup/rollup/pull/5224): chore(deps): update actions/setup-node action to v4 ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5225](https://togithub.com/rollup/rollup/pull/5225): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) ### [`v4.1.4`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#414) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.1.3...v4.1.4) *2023-10-16* ##### Bug Fixes - Reduce sizes [@​rollup/browser](https://togithub.com/rollup/browser) and [@​rollup/wasm-node](https://togithub.com/rollup/wasm-node) WASM artifacts ([#​5204](https://togithub.com/rollup/rollup/issues/5204)) ##### Pull Requests - [#​5204](https://togithub.com/rollup/rollup/pull/5204): perf: shrink wasm size by avoid importing browserslist ([@​sapphi-red](https://togithub.com/sapphi-red)) ### [`v4.1.3`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#413) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.1.1...v4.1.3) *2023-10-15* ##### Bug Fixes - Fix WASM build as hash function was not exported ([#​5203](https://togithub.com/rollup/rollup/issues/5203)) ##### Pull Requests - [#​5203](https://togithub.com/rollup/rollup/pull/5203): fix: export xxhashBase64Url from wasm ([@​sapphi-red](https://togithub.com/sapphi-red)) ### [`v4.1.1`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#411) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.1.0...v4.1.1) *2023-10-15* ##### Bug Fixes - Improve Node parsing performance ([#​5201](https://togithub.com/rollup/rollup/issues/5201)) ##### Pull Requests - [#​5201](https://togithub.com/rollup/rollup/pull/5201): perf: use mimalloc for bindings_napi ([@​sapphi-red](https://togithub.com/sapphi-red)) ### [`v4.1.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#410) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.0.2...v4.1.0) *2023-10-14* ##### Features - Reduce memory usage of Rollup builds ([#​5133](https://togithub.com/rollup/rollup/issues/5133)) ##### Pull Requests - [#​5133](https://togithub.com/rollup/rollup/pull/5133): perf: reducing ast node memory overhead ([@​thebanjomatic](https://togithub.com/thebanjomatic)) - [#​5177](https://togithub.com/rollup/rollup/pull/5177): chore: explicitly set rust toolchain channel ([@​cijiugechu](https://togithub.com/cijiugechu)) - [#​5179](https://togithub.com/rollup/rollup/pull/5179): Update migration guide for Rollup 4 ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5180](https://togithub.com/rollup/rollup/pull/5180): Resolve clippy errors ([@​cijiugechu](https://togithub.com/cijiugechu)) - [#​5183](https://togithub.com/rollup/rollup/pull/5183): Add clippy to pipeline and fix remaining issues ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5184](https://togithub.com/rollup/rollup/pull/5184): docs: fix code example for `onLog` ([@​tjenkinson](https://togithub.com/tjenkinson)) - [#​5186](https://togithub.com/rollup/rollup/pull/5186): Improve wording for native artifacts in migration guide ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5190](https://togithub.com/rollup/rollup/pull/5190): test: add verifyAst type ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5196](https://togithub.com/rollup/rollup/pull/5196): chore(deps): update dependency rollup to v4 ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5197](https://togithub.com/rollup/rollup/pull/5197): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) ### [`v4.0.2`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#402) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.0.1...v4.0.2) *2023-10-06* ##### Bug Fixes - Fix annotation detection logic to not fail when a non-ASCII character precedes a double underscore ([#​5178](https://togithub.com/rollup/rollup/issues/5178)) ##### Pull Requests - [#​5178](https://togithub.com/rollup/rollup/pull/5178): Handle special characters before double underscores ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.0.1`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#401) [Compare Source](https://togithub.com/rollup/rollup/compare/v4.0.0...v4.0.1) *2023-10-06* ##### Bug Fixes - Do not panic on trailing semicolons after class methods ([#​5173](https://togithub.com/rollup/rollup/issues/5173)) - Add artifact for arm64 linux musl target ([#​5176](https://togithub.com/rollup/rollup/issues/5176)) ##### Pull Requests - [#​5172](https://togithub.com/rollup/rollup/pull/5172): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5173](https://togithub.com/rollup/rollup/pull/5173): fix: ignores empty statements in class body that is returned by SWC parser ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5176](https://togithub.com/rollup/rollup/pull/5176): Fix linux arm musl build ([@​lukastaegert](https://togithub.com/lukastaegert)) ### [`v4.0.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#400) [Compare Source](https://togithub.com/rollup/rollup/compare/v3.29.4...v4.0.0) *2023-10-05* ##### BREAKING CHANGES ##### General Changes - The minimal required Node version is now 18.0.0 ([#​5142](https://togithub.com/rollup/rollup/issues/5142)) - The browser build now relies on a WASM artifact that needs to be provided as well ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - The NodeJS build now relies on an optional native binary; for unsupported platforms, users can use the `@rollup/wasm-node` package that has the same interface as Rollup but relies on WASM artifacts ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - The `INVALID_IMPORT_ASSERTION` error code has been replaced with `INVALID_IMPORT_ATTRIBUTE` ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - Rollup will now warn for `@__PURE__` and `@__NO_SIDE_EFFECTS__` annotations in invalid locations ([#​5165](https://togithub.com/rollup/rollup/issues/5165)) - If an entry module starts with a shebang comment `#!...`, this comment will be prepended to the output for `es` and `cjs` formats ([#​5163](https://togithub.com/rollup/rollup/issues/5163)) - File hashes will now use url-safe base64 encoded hashes ([#​5155](https://togithub.com/rollup/rollup/issues/5155)) - The maximum hash length has been reduced to 22 characters ([#​5155](https://togithub.com/rollup/rollup/issues/5155)) - The `RollupWarning` type has been removed in favor of the `RollupLog` type ([#​5147](https://togithub.com/rollup/rollup/issues/5147)) ##### Changes to Rollup Options - Acorn plugins are no longer supported, the `acornInjectPlugins` option has been removed ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - The `acorn` option has been removed ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - `output.externalImportAssertions` has been deprecated in favor of `output.externalImportAttributes` ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - `inlineDynamicImports`, `manualChunks` and `preserveModules` have been removed on input option level: Please use the corresponding output options of the same names ([#​5143](https://togithub.com/rollup/rollup/issues/5143)) - Removed output options ([#​5143](https://togithub.com/rollup/rollup/issues/5143)): - `output.experimentalDeepDynamicChunkOptimization`: This option is no longer needed as Rollup now always runs the full chunking algorithm - `output.dynamicImportFunction`: Use the `renderDynamicImport` plugin hook instead - `output.namespaceToStringTag`: Use `output.generatedCode.symbols` instead - `output.preferConst`: Use `output.generatedCode.constBindings` instead ##### Plugin API Changes - For `this.resolve`, the default of the `skipSelf` option is now `true` ([#​5142](https://togithub.com/rollup/rollup/issues/5142)) - `this.parse` now only supports the `allowReturnOutsideFunction` option for now ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - Import assertions now use the [new import attribute AST structure](https://togithub.com/estree/estree/blob/master/experimental/import-attributes.md) ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - "assertions" have been replaced with "attributes" in various places of the plugin interface ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - If the import of a module id is handled by the `load` hook of a plugin, `rollup.watch` no longer watches the actual file if the module id corresponds to a real path; if this is intended, then the plugin is responsible for calling `this.addWatchFile` for any dependency files ([#​5150](https://togithub.com/rollup/rollup/issues/5150)) - The normalized input options provided by `buildStart` and other hooks no longer contain an `onwarn` handler; plugins should use `onLog` instead ([#​5147](https://togithub.com/rollup/rollup/issues/5147)) - `this.moduleIds` has been removed from the plugin context: Use `this.getModuleIds()` instead ([#​5143](https://togithub.com/rollup/rollup/issues/5143)) - The `hasModuleSideEffects` flag has been removed from the `ModuleInfo` returned by `this.getModuleInfo()`: Use `moduleSideEffects` on the `ModuleInfo` instead ([#​5143](https://togithub.com/rollup/rollup/issues/5143)) ##### Features - Improve parsing speed by switching to a native SWC-based parser ([#​5073](https://togithub.com/rollup/rollup/issues/5073)) - Rollup will now warn for `@__PURE__` and `@__NO_SIDE_EFFECTS__` annotations in invalid locations ([#​5165](https://togithub.com/rollup/rollup/issues/5165)) - The parser is now exposed as a separate export `parseAst` ([#​5169](https://togithub.com/rollup/rollup/issues/5169)) ##### Bug Fixes - Rollup no longer tries to watch virtual files if their name corresponds to an actual file name; instead, plugins handle watching via `this.addWatchFile()` ([#​5150](https://togithub.com/rollup/rollup/issues/5150)) ##### Pull Requests - [#​5073](https://togithub.com/rollup/rollup/pull/5073): \[v4.0] Switch parser to SWC and introduce native/WASM code ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5142](https://togithub.com/rollup/rollup/pull/5142): \[v4.0] Set the default of skipSelf to true ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5143](https://togithub.com/rollup/rollup/pull/5143): \[v4.0] Remove deprecated features ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5144](https://togithub.com/rollup/rollup/pull/5144): \[v4.0] Imporve the performance of generating ast and rollup ast nodes ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5147](https://togithub.com/rollup/rollup/pull/5147): \[v4.0] Remove onwarn from normalized input options ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5150](https://togithub.com/rollup/rollup/pull/5150): \[v4.0] feat: Do not watch files anymore if their content is returned by the load hook ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5154](https://togithub.com/rollup/rollup/pull/5154): \[v4.0] Add parse option to allow return outside function ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5155](https://togithub.com/rollup/rollup/pull/5155): \[v4.0] feat: implement hashing content in Rust ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5157](https://togithub.com/rollup/rollup/pull/5157): \[v4.0] Handle empty exports ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5160](https://togithub.com/rollup/rollup/pull/5160): chore(deps): lock file maintenance minor/patch updates ([@​renovate](https://togithub.com/renovate)\[bot]) - [#​5163](https://togithub.com/rollup/rollup/pull/5163): \[v4.0] feat: preserve shebang in entry module for CJS and ESM outputs ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5164](https://togithub.com/rollup/rollup/pull/5164): \[v4.0] fix: also strip BOM from code strings in JS ([@​TrickyPi](https://togithub.com/TrickyPi)) - [#​5165](https://togithub.com/rollup/rollup/pull/5165): \[v4.0] warn for invalid annotations ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5168](https://togithub.com/rollup/rollup/pull/5168): \[v4.0] Ensure we support new import attribute "with" syntax ([@​lukastaegert](https://togithub.com/lukastaegert)) - [#​5169](https://togithub.com/rollup/rollup/pull/5169): \[v4.0] Expose parser ([@​lukastaegert](https://togithub.com/lukastaegert)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44MS4zIiwidXBkYXRlZEluVmVyIjoiMzcuODcuMiIsInRhcmdldEJyYW5jaCI6ImNhbmFyeSJ9--> |
||
---|---|---|
.cargo | ||
.codesandbox | ||
.devcontainer | ||
.github | ||
.husky | ||
.vscode | ||
.yarn | ||
docs | ||
packages | ||
scripts | ||
tests | ||
tools | ||
.editorconfig | ||
.env.template | ||
.eslintignore | ||
.eslintrc.js | ||
.gitattributes | ||
.gitignore | ||
.i18n-codegen.json | ||
.npmrc | ||
.nvmrc | ||
.prettierignore | ||
.prettierrc | ||
.taplo.toml | ||
.yarnrc.yml | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
codecov.yml | ||
LICENSE | ||
LICENSE-MIT | ||
nx.json | ||
nyc.config.js | ||
package.json | ||
README.md | ||
rust-toolchain.toml | ||
rustfmt.toml | ||
tsconfig.eslint.json | ||
tsconfig.json | ||
tsconfig.node.json | ||
vitest.config.ts | ||
vitest.workspace.ts | ||
yarn.lock |
AFFiNE.PRO
Write, Draw and Plan All at Once
One hyper-fused platform for wildly creative minds.
A privacy-focussed, local-first, open-source, and ready-to-use alternative for Notion & Miro.
Join our community
Before we tell you how to get started with AFFiNE, we'd like to shamelessly plug our awesome user and developer communities across official social platforms! Once you’re familiar with using the software, maybe you will share your wisdom with others and even consider joining the AFFiNE Ambassador program to help spread AFFiNE to the world.
Getting started & staying tuned with us.
⚠️ Please note that AFFiNE is still under active development and is not yet ready for production use. ⚠️
No installation or registration required! Head over to our website and try it out now.
Our wonderful community, where you can meet and engage with the team, developers and other like-minded enthusiastic user of AFFiNE.
Star us, and you will receive all releases notifications from GitHub without any delay!
Features
- Hyper merged — Write, draw and plan all at once. Assemble any blocks you love on any canvas you like to enjoy seamless transitions between workflows with AFFiNE.
- Privacy focussed — AFFiNE is built with your privacy in mind and is one of our key concerns. We want you to keep control of your data, allowing you to store it as you like, where you like while still being able to freely edit and view your data on-demand.
- Offline-first — With your privacy in mind we also decided to go offline-first. This means that AFFiNE can be used offline, whether you want to view or edit, with support for conflict-free merging when you are back online.
- Clean, intuitive design — With AFFiNE you can concentrate on editing with a clean and modern interface. Which is responsive, so it looks great on tablets too, and mobile support is coming in the future.
- Modern Block Editor with Markdown support — A modern block editor can help you not only for docs, but slides and tables as well. When you write in AFFiNE you can use Markdown syntax which helps create an easier editing experience, that can be experienced with just a keyboard. And this allows you to export your data cleanly into Markdown.
- Collaboration — Whether you want to collaborate with yourself across multiple devices, or work together with others, support for collaboration and multiplayer is out-of-the-box, which makes it easy for teams to get started with AFFiNE.
- Choice of multiple languages — Thanks to community contributions AFFiNE offers support for multiple languages. If you don't find your language or would like to suggest some changes we welcome your contributions.
Contributing
Bug Reports | Feature Requests | Questions/Discussions | AFFiNE Community |
---|---|---|---|
Create a bug report | Submit a feature request | Check GitHub Discussion | Vist the AFFiNE Community |
Something isn't working as expected | An idea for a new feature, or improvements | Discuss and ask questions | A place to ask, learn and engage with others |
Calling all developers, testers, tech writers and more! Contributions of all types are more than welcome, you can read more in docs/types-of-contributions.md. If you are interested in contributing code, read our docs/CONTRIBUTING.md and feel free to check out our GitHub issues to get stuck in to show us what you’re made of.
Before you start contributing, please make sure you have read and accepted our Contributor License Agreement. To indicate your agreement, simply edit this file and submit a pull request.
For bug reports, feature requests and other suggestions you can also create a new issue and choose the most appropriate template for your feedback.
For translation and language support you can visit our i18n General Space.
Looking for others ways to contribute and wondering where to start? Check out the AFFiNE Ambassador program, we work closely with passionate community members and provide them with a wide-range of support and resources.
If you have questions, you are welcome to contact us. One of the best places to get more info and learn more is in the AFFiNE Community where you can engage with other like-minded individuals.
Ecosystem
Name | ||
---|---|---|
@affine/component | AFFiNE Component Resources | |
@toeverything/y-indexeddb | IndexedDB database adapter for Yjs | |
@toeverything/theme | AFFiNE theme |
Plugins
Plugins are a way to extend the functionality of AFFiNE. You can use plugins to add new blocks, new features, and even new ways to edit content.
(Currently, the plugin system is under heavy development. You will see the plugin system in the canary release.)
- @affine/sdk - SDK for developing plugins
- @affine/plugin-cli - CLI for developing plugins
Official Plugin | Description | Status |
---|---|---|
@affine/copilot-plugin | AI Copilot that help you document writing | 🚧 |
@affine/image-preview-plugin | Component for previewing an image | ✅ |
@affine/outline | Outline for your document | ✅ |
Upstreams
We would also like to give thanks to open-source projects that make AFFiNE possible:
- blocksuite - 💠 BlockSuite is the open-source collaborative editor project behind AFFiNE.
- OctoBase - 🐙 OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.
- yjs - Fundamental support of CRDTs for our implementation on state management and data sync.
- electron - Build cross-platform desktop apps with JavaScript, HTML, and CSS.
- React - The library for web and native user interfaces.
- napi-rs - A framework for building compiled Node.js add-ons in Rust via Node-API.
- Jotai - Primitive and flexible state management for React.
- async-call-rpc - A lightweight JSON RPC client & server.
- Vite - Next generation frontend tooling.
- Other upstream dependencies.
Thanks a lot to the community for providing such powerful and simple libraries, so that we can focus more on the implementation of the product logic, and we hope that in the future our projects will also provide a more easy-to-use knowledge base for everyone.
Contributors
We would like to express our gratitude to all the individuals who have already contributed to AFFiNE! If you have any AFFiNE-related project, documentation, tool or template, please feel free to contribute it by submitting a pull request to our curated list on GitHub: awesome-affine.
Data Compatibility
Data compatibility is a very important issue for us. We will try our best to ensure that the data is compatible with the previous version.
If you encounter any problems when upgrading the version, please feel free to contact us.
AFFiNE Version | Export/Import workspace | Data auto migration |
---|---|---|
<= 0.5.4 | ❌️ | ❌ |
0.6.x | ✅️ | ✅ |
0.7.x | ✅️ | ✅ |
0.8.x (current) | ✅ | ✅ |
0.9.x (next) | 🚧 | 🚧 |
- ❌️: Not compatible
- ✅: Compatible
- 🚧: Work in progress
Self-Host
We know that the self-host version has been out of date for a long time.
We are working hard to get this updated to the latest version, you can try our desktop version first.
Get started with Docker and deploy your own feature-rich, restriction-free deployment of AFFiNE. We are working hard to get this updated to the latest version, you can keep an eye on the latest packages.
Hiring
Some amazing companies including AFFiNE are looking for developers! Are you interested in helping build with AFFiNE and/or its partners? Check out some of the latest jobs available.
Upgrading
For upgrading information, please see our update page.
Feature Request
For feature request, please see community.affine.pro.
Building
Codespaces
From the GitHub repo main page, click the green "Code" button and select "Create codespace on master". This will open a new Codespace with the (supposedly auto-forked AFFiNE repo cloned, built, and ready to go.
Local
See BUILDING.md for instructions on how to build AFFiNE from source code.
Contributing
We welcome contributions from everyone. See docs/contributing/tutorial.md for details.
Thanks
Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.
License
See LICENSE for details.