You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New legacy beta map interfaces make it possible to type legacy map-like DDS APIs against Fluid's stable map abstraction while preserving the legacy DDS `get` and `set` APIs.
Add SharedTreeOptionsBeta.healUnresolvableIdentifiersOnDecode to recover documents with corrupted identifiers
7
+
8
+
A SharedTree bug can result in corrupted documents due to their attach summary compressing identifier-field values in a way that cannot be uncompressed.
9
+
This bug manifested as remote clients processing the op throwing an error with the message "Unknown op space ID.".
10
+
11
+
This change adds an option (`healUnresolvableIdentifiersOnDecode`) to `configuredSharedTreeBetaLegacy` which will allow documents affected by this bug to load again when enabled.
12
+
Enabling this option carries some risk, see documentation on the interface itself for more details.
13
+
14
+
#### Who is affected
15
+
16
+
Only SharedTrees attached to a container that was already attached can be impacted.
17
+
Furthermore, this bug only occurs when the attached tree contains [`identifier`](https://fluidframework.com/docs/api/tree/schemafactory-class#identifier-property) fields which contain implicitly generated default values.
`LogLevel.default` and `LogLevel.error` in `@fluidframework/core-interfaces` are deprecated in favor of the semantically clearer `LogLevel.info` and `LogLevel.essential`.
9
+
10
+
#### Migration
11
+
12
+
The recommended replacement for `LogLevel.default` depends on how the value is used:
13
+
14
+
- For an **event's default `logLevel`** (e.g. the `logLevel` argument to `ITelemetryBaseLogger.send`), the recommendation is `LogLevel.essential`.
15
+
- For a logger's **default `minLogLevel`** (the threshold that filters events), `LogLevel.info` is the recommendation.
16
+
17
+
The replacement for `LogLevel.error` should always be `LogLevel.essential`.
18
+
19
+
See [issue #26969](https://github.com/microsoft/FluidFramework/issues/26969) for full guidance and removal tracking (planned for v3.0).
A SharedTree bug which could corrupt documents when attaching them to containers has been fixed.
9
+
See `healUnresolvableIdentifiersOnDecode` on `configuredSharedTreeBetaLegacy` for a potential mitigation path for documents that were already corrupted by this bug.
10
+
11
+
#### Who is affected
12
+
13
+
Only SharedTrees attached to a container that was already attached can be impacted.
14
+
Furthermore, this bug only occurs when the attached tree contains [`identifier`](https://fluidframework.com/docs/api/tree/schemafactory-class#identifier-property) fields which contain implicitly generated default values.
### Breaking: node 22 is now the minimum supported node version
6
6
7
-
- Node 22 is now the minimum supported Node.js version. This aligns with the standing Node upgrade policy as Node 20 reaches end-of-life on April 30, 2026.
7
+
Node 22 is now the minimum supported Node.js version. This aligns with the standing Node upgrade policy as Node 20 reached end-of-life on April 30, 2026.
8
+
9
+
### Breaking: import-x/order disabled
10
+
11
+
The `import-x/order` rule has been disabled. Prefer using formatting tools like Biome to handle import sorting.
12
+
13
+
### Breaking: ESLint 8 legacy configs no longer exported
14
+
15
+
This package now uses ESLint flat config format exclusively. The legacy `.eslintrc` format is no longer supported.
16
+
The package root now exports the named flat and server configs directly from `@fluidframework/eslint-config-fluid`.
17
+
18
+
**Requirements:**
19
+
20
+
- ESLint 9 (recommended), or
21
+
- ESLint 8.21+ with `ESLINT_USE_FLAT_CONFIG=true` environment variable
Copy file name to clipboardExpand all lines: common/build/eslint-config-fluid/README.md
+50-20Lines changed: 50 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,20 +2,46 @@
2
2
3
3
This package contains a shared ESLint config used by all the packages in the Fluid Framework repo.
4
4
5
-
It exports the following shared ESLint configs:
5
+
## Requirements
6
6
7
-
## ESLint 9 Flat Config Support
7
+
-**ESLint 9** (recommended), or
8
+
-**ESLint 8.21+** with `ESLINT_USE_FLAT_CONFIG=true` environment variable
8
9
9
-
This package supports **ESLint 9 flat config format** via the `flat.mjs` export. Packages can use `eslint.config.mjs` files that import from this module.
10
+
This package uses ESLint's flat config format exclusively. Legacy `.eslintrc` format is not supported.
10
11
11
-
For flat config (ESLint 9), import from `@fluidframework/eslint-config-fluid/flat.mjs`:
12
+
## Usage
13
+
14
+
Import the desired configuration and spread it into your `eslint.config.mts`:
**Legacy format:** Imported via `@fluidframework/eslint-config-fluid` (or `@fluidframework/eslint-config-fluid/recommended`).
57
-
**Flat config:** Import `recommended` from `@fluidframework/eslint-config-fluid/flat.mjs`.
83
+
This configuration is recommended for all libraries in the repository, though use of the [strict](#strict) config is preferred whenever reasonable.
58
84
59
85
### Strict
60
86
61
-
The strictest config for use in Fluid Framework libraries.
62
-
Recommended for highest code quality enforcement.
87
+
The strictest config for use in Fluid Framework libraries. Recommended for highest code quality enforcement.
63
88
64
-
In particular, use of this config is encouraged for libraries with public facing APIs, and those used as external-facing examples (e.g. those mentioned on `fluidframework.com`).
**Legacy format:** Imported via `@fluidframework/eslint-config-fluid/strict`.
67
-
**Flat config:** Import `strict` from `@fluidframework/eslint-config-fluid/flat.mjs`.
94
+
Use of this config is encouraged for libraries with public facing APIs, and those used as external-facing examples (e.g. those mentioned on `fluidframework.com`).
68
95
69
96
### Strict-Biome
70
97
71
-
A version of the "strict" config that disables rules that are supported by Biome's "recommended" lint config.
72
-
This config is intended to be used in projects that use both eslint and Biome for linting.
73
-
This config is considered experimental.
98
+
A version of the "strict" config that disables rules covered by Biome's "recommended" lint config. Intended for projects using both ESLint and Biome.
0 commit comments