Skip to content

Commit b15c789

Browse files
authored
Merge branch 'main' into zhangxin/profile499
2 parents 98441eb + 0f877b4 commit b15c789

File tree

181 files changed

+1484
-581
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

181 files changed

+1484
-581
lines changed

.changeset/all-heads-lay.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
---
66
---
77
"section": fix
8+
"highlight": true
89
---
910

10-
SharedMap, SharedIntervalCollection and AttributableMap now error on unrecognized Ops
11+
SharedMap, SharedIntervalCollection and AttributableMap now throw an error when they encounter unrecognized Ops
1112

1213
To avoid future versions of DDSes with new Op types causing silent data corruption and de-sync between clients,
1314
DDSes should error when unable to apply an Op.
14-
This prevents data loss and corruption scenarios like a summary client using old code discarding all ops from newer clients.
15+
This prevents data loss and corruption scenarios like a summary client using old code discarding all Ops from newer clients.
1516

1617
If updating applications using SharedMap, SharedIntervalCollection and AttributableMap use a newer version which adds Ops types in the future,
1718
old clients which are old enough to be from before this fix will ignore the new ops instead of erroring.

.changeset/light-pears-hammer.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"section": deprecation
66
---
77

8-
`supportedFeatures` is deprecated in `IContainerContext`
8+
The IContainerContext.supportedFeatures property is now deprecated
99

10-
This was an optional property that was used internally to communicate features supported by the Loader layer to Runtime. This has been replaced with an internal-only functionality.
10+
The `IContainerContext.supportedFeatures` optional property was used internally to communicate features supported by the
11+
Loader layer to the Runtime layer. This has since been replaced with functionality that is not exposed externally.

.changeset/many-gifts-strive.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
"section": deprecation
66
---
77

8-
Deprecate unnecessary exports of container-runtime package
8+
Many unnecessary exports have been deprecated in the container-runtime package
99

10-
The following types in the `@fluidframework/container-runtime` are deprecated. These types are unnecessary for external users of this package.
10+
The following types in the `@fluidframework/container-runtime` package are now deprecated. These types are unnecessary for external users of this package.
1111

1212
- currentDocumentVersionSchema
1313
- DeletedResponseHeaderKey

.changeset/quick-chairs-smile.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
"@fluidframework/azure-client": minor
3+
---
4+
---
5+
"section": deprecation
6+
---
7+
8+
ITokenClaims and ScopeType types are now deprecated
9+
10+
The `ITokenClaims` and `ScopeType` types in `@fluidframework/azure-client` are now deprecated. These were isolated types
11+
re-exported for convenience but they do not directly interact with typical azure-client APIs.
12+
13+
See [issue #23702](https://github.com/microsoft/FluidFramework/issues/23702) for details and alternatives.

.github/labeler-areas.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@
8181
- server/routerlicious/.changeset/**
8282

8383
dependencies:
84-
- lerna-package-lock.json
8584
- package-lock.json
8685
- pnpm-lock.yaml
8786

.pnpmfile.cjs

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*!
2+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3+
* Licensed under the MIT License.
4+
*/
5+
6+
/*
7+
* .pnpmfile.cjs is a pnpm hook file that allows modification of package.json content
8+
* (in memory) of the packages that are being installed.
9+
* https://pnpm.io/pnpmfile
10+
*
11+
* This implementation is based on https://gist.github.com/dvins/33b8fb52480149d37cdeb98890244c5b.
12+
* Changes:
13+
* - Added support for complete dependency removal (specify null for newVersion)
14+
* - Apply stylistic and naming preferences and comment cleanup
15+
* - Specify remapPeerDependencies for local needs
16+
*/
17+
18+
//@ts-check
19+
20+
// https://pnpm.io/pnpmfile
21+
// https://github.com/pnpm/pnpm/issues/4214
22+
// https://github.com/pnpm/pnpm/issues/5391
23+
24+
const remapPeerDependencies = [
25+
// @fluidframework/azure-client 1.x declares a peerDependency on fluid-framework but does not require it.
26+
// It should have been an optional peer dependency. We just remove it.
27+
{
28+
package: "@fluidframework/azure-client",
29+
packageVersionPrefix: "1.",
30+
peerDependency: "fluid-framework",
31+
newVersion: null,
32+
},
33+
];
34+
35+
// Only emit the checking banner once.
36+
// And only if engaged. Some pnpm uses expect specific output (like `pnpm list`) and may break if anything is emitted.
37+
let emittedCheckBanner = false;
38+
39+
function overridesPeerDependencies(pkg) {
40+
if (!emittedCheckBanner) {
41+
console.log(`Checking for package peerDependency overrides`);
42+
emittedCheckBanner = true;
43+
}
44+
45+
if (!pkg.peerDependencies) {
46+
return;
47+
}
48+
49+
const applicableRemapPeerDependencies = remapPeerDependencies.filter(
50+
(remap) =>
51+
remap.package === pkg.name && pkg.version.startsWith(remap.packageVersionPrefix),
52+
);
53+
54+
if (applicableRemapPeerDependencies.length === 0) {
55+
return;
56+
}
57+
58+
console.log(` - Checking ${pkg.name}@${pkg.version}`);
59+
for (const dep of applicableRemapPeerDependencies) {
60+
if (dep.peerDependency in pkg.peerDependencies) {
61+
console.log(
62+
` - Overriding ${pkg.name}@${pkg.version} peerDependency ${dep.peerDependency}@${pkg.peerDependencies[dep.peerDependency]}`,
63+
);
64+
65+
// First add a new dependency to the package, if defined, and then remove the peer dependency.
66+
if (dep.newVersion) {
67+
// This approach has the added advantage that scoped overrides should now work, too.
68+
pkg.dependencies[dep.peerDependency] = dep.newVersion;
69+
}
70+
delete pkg.peerDependencies[dep.peerDependency];
71+
72+
const newDep = pkg.dependencies[dep.peerDependency];
73+
console.log(
74+
newDep
75+
? ` - Overrode ${pkg.name}@${pkg.version} peerDependency to ${dep.peerDependency}@${newDep} (as full dependency)`
76+
: ` - Removed ${pkg.name}@${pkg.version} peerDependency`,
77+
);
78+
}
79+
}
80+
}
81+
82+
module.exports = {
83+
hooks: {
84+
readPackage(pkg, _context) {
85+
overridesPeerDependencies(pkg);
86+
return pkg;
87+
},
88+
},
89+
};

.prettierignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,6 @@ tools/markdown-magic/test/include.md
101101
# github config yaml files are prone to breaking when reformatted
102102
.github/**/*.yml
103103

104-
# Autogenerated file
105-
.github/fabricbot.json
106-
107104
# These are actually templates, not pure YAML files
108105
**/templates/*.yaml
109106

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ Here's the list of release group workspaces:
5252
- [./experimental](./experimental) (Published in the `@fluid-experimental/` namespace)
5353
- [./examples](./examples) (Not published, live in the `@fluid-example/` namespace)
5454
- [./azure](./azure). (Published in the `@fluidframework/` namespace)
55-
- routerlicious (Reference Fluid Ordering Service) (Rooted in [./server/routerlicious](./server/routerlicious). Configured by [./server/routerlicious/lerna.json](server/routerlicious/lerna.json))
55+
- routerlicious (Reference Fluid Ordering Service) (Rooted in [./server/routerlicious](./server/routerlicious). Configured by [./server/routerlicious/pnpm-workspace.yaml](server/routerlicious/pnpm-workspace.yaml))
5656
- [Packages](./server/routerlicious/packages) (Published in the `@fluidframework/` namespace)
57-
- gitrest (Rooted in [./server/gitrest](./server/gitrest). Configured by [./server/gitrest/lerna.json](./server/gitrest/lerna.json))
57+
- gitrest (Rooted in [./server/gitrest](./server/gitrest). Configured by [./server/gitrest/pnpm-workspace.yaml](./server/gitrest/pnpm-workspace.yaml))
5858
- [Packages](./server/gitrest/packages) (Published in the `@fluidframework/` namespace)
59-
- historian (Rooted in [./server/historian](./server/historian). Configured by [./server/historian/lerna.json](./server/historian/lerna.json))
59+
- historian (Rooted in [./server/historian](./server/historian). Configured by [./server/historian/pnpm-workspace.yaml](./server/historian/pnpm-workspace.yaml))
6060
- [Packages](./server/historian/packages) (Published in the `@fluidframework/` namespace)
61-
- build-tools (Rooted in [./build-tools](./build-tools). Configured by [./build-tools/lerna.json](./build-tools/lerna.json))
61+
- build-tools (Rooted in [./build-tools](./build-tools). Configured by [./build-tools/pnpm-workspace.yaml](./build-tools/pnpm-workspace.yaml))
6262
- [Packages](./build-tools/packages) (Published in a mix of `@fluidframework/` and `@fluid-tools/` namespaces)
6363

6464
Here's a list of other sets of other packages (each package within these groups is versioned independently,

RELEASE_NOTES/2.21.0.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
<!-- THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -->
2+
3+
# Fluid Framework v2.21.0
4+
5+
## Contents
6+
7+
- [🐛 Bug Fixes](#-bug-fixes)
8+
- [SharedMap, SharedIntervalCollection and AttributableMap now throw an error when they encounter unrecognized Ops (#23659)](#sharedmap-sharedintervalcollection-and-attributablemap-now-throw-an-error-when-they-encounter-unrecognized-ops-23659)
9+
- [⚠️ Deprecations](#️-deprecations)
10+
- [Many unnecessary exports have been deprecated in the container-runtime package (#23607)](#many-unnecessary-exports-have-been-deprecated-in-the-container-runtime-package-23607)
11+
- [The IContainerContext.supportedFeatures property is now deprecated (#22877)](#the-icontainercontextsupportedfeatures-property-is-now-deprecated-22877)
12+
- [ITokenClaims and ScopeType types are now deprecated (#23703)](#itokenclaims-and-scopetype-types-are-now-deprecated-23703)
13+
14+
## 🐛 Bug Fixes
15+
16+
### SharedMap, SharedIntervalCollection and AttributableMap now throw an error when they encounter unrecognized Ops ([#23659](https://github.com/microsoft/FluidFramework/issues/23659))
17+
18+
To avoid future versions of DDSes with new Op types causing silent data corruption and de-sync between clients, DDSes should error when unable to apply an Op. This prevents data loss and corruption scenarios like a summary client using old code discarding all Ops from newer clients.
19+
20+
If updating applications using SharedMap, SharedIntervalCollection and AttributableMap use a newer version which adds Ops types in the future, old clients which are old enough to be from before this fix will ignore the new ops instead of erroring. Therefore it may be useful to ensure this update is deployed as widely as possible before migrating any to newer versions which add new op formats to these DDSes.
21+
22+
#### Change details
23+
24+
Commit: [`3dd4208`](https://github.com/microsoft/FluidFramework/commit/3dd4208dd329a9200c4405f07e302b0ab1ff6159)
25+
26+
Affected packages:
27+
28+
- @fluid-experimental/attributable-map
29+
- @fluidframework/map
30+
- @fluidframework/sequence
31+
32+
[⬆️ Table of contents](#contents)
33+
34+
## ⚠️ Deprecations
35+
36+
### Many unnecessary exports have been deprecated in the container-runtime package ([#23607](https://github.com/microsoft/FluidFramework/issues/23607))
37+
38+
The following types in the `@fluidframework/container-runtime` package are now deprecated. These types are unnecessary for external users of this package.
39+
40+
- currentDocumentVersionSchema
41+
- DeletedResponseHeaderKey
42+
- DocumentSchemaValueType
43+
- DocumentsSchemaController
44+
- GCFeatureMatrix
45+
- GCNodeType
46+
- GCVersion
47+
- IBlobManagerLoadInfo
48+
- ICancellableSummarizerController
49+
- ICancellationToken
50+
- IConnectableRuntime
51+
- IContainerRuntimeMetadata
52+
- ICreateContainerMetadata
53+
- IDocumentSchema
54+
- IDocumentSchemaChangeMessage
55+
- IDocumentSchemaCurrent
56+
- IDocumentSchemaFeatures
57+
- IGCMetadata
58+
- IGCStats
59+
- IMarkPhaseStats
60+
- IRefreshSummaryAckOptions
61+
- ISerializedElection
62+
- ISubmitSummaryOptions
63+
- ISummarizerInternalsProvider
64+
- ISummarizerRuntime
65+
- ISummaryCancellationToken
66+
- ISummaryMetadataMessage
67+
- ISweepPhaseStats
68+
- Summarizer
69+
70+
#### Change details
71+
72+
Commit: [`3da5b42`](https://github.com/microsoft/FluidFramework/commit/3da5b427ef406799abade04196e43bb6d66d898d)
73+
74+
Affected packages:
75+
76+
- @fluidframework/container-runtime
77+
78+
[⬆️ Table of contents](#contents)
79+
80+
### The IContainerContext.supportedFeatures property is now deprecated ([#22877](https://github.com/microsoft/FluidFramework/issues/22877))
81+
82+
The `IContainerContext.supportedFeatures` optional property was used internally to communicate features supported by the Loader layer to the Runtime layer. This has since been replaced with functionality that is not exposed externally.
83+
84+
#### Change details
85+
86+
Commit: [`4c06412`](https://github.com/microsoft/FluidFramework/commit/4c06412bb365d680430f83b87c456d132d9da1be)
87+
88+
Affected packages:
89+
90+
- @fluidframework/container-definitions
91+
92+
[⬆️ Table of contents](#contents)
93+
94+
### ITokenClaims and ScopeType types are now deprecated ([#23703](https://github.com/microsoft/FluidFramework/issues/23703))
95+
96+
The `ITokenClaims` and `ScopeType` types in `@fluidframework/azure-client` are now deprecated. These were isolated types re-exported for convenience but they do not directly interact with typical azure-client APIs.
97+
98+
See [issue #23702](https://github.com/microsoft/FluidFramework/issues/23702) for details and alternatives.
99+
100+
#### Change details
101+
102+
Commit: [`f679945`](https://github.com/microsoft/FluidFramework/commit/f67994577597aae6dc8b42f3c6557c744adc0964)
103+
104+
Affected packages:
105+
106+
- @fluidframework/azure-client
107+
108+
[⬆️ Table of contents](#contents)
109+
110+
### 🛠️ Start Building Today!
111+
112+
Please continue to engage with us on GitHub [Discussion](https://github.com/microsoft/FluidFramework/discussions) and [Issue](https://github.com/microsoft/FluidFramework/issues) pages as you adopt Fluid Framework!

azure/packages/azure-service-utils/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
"ci:build:api-reports:current": "api-extractor run --config api-extractor/api-extractor.current.json",
7676
"ci:build:api-reports:legacy": "api-extractor run --config api-extractor/api-extractor.legacy.json",
7777
"ci:build:docs": "api-extractor run",
78-
"clean": "rimraf --glob dist lib \"*.d.ts\" \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp",
78+
"clean": "rimraf --glob dist lib {alpha,beta,internal,legacy}.d.ts \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp",
7979
"eslint": "eslint --format stylish src",
8080
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
8181
"format": "npm run format:biome",

biome.jsonc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@
8686
// This is a test file
8787
"tools/markdown-magic/test/include.md",
8888

89-
// Autogenerated file
90-
".github/fabricbot.json",
91-
9289
// These are actually templates, not pure YAML files
9390
"**/templates/*.yaml",
9491

build-tools/packages/build-cli/docs/generate.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ _See code: [src/commands/generate/assertTags.ts](https://github.com/microsoft/Fl
7777

7878
## `flub generate buildVersion`
7979

80-
This command is used to compute the version number of Fluid packages. The release version number is based on what's in the lerna.json/package.json. The CI pipeline will supply the build number and branch to determine the prerelease suffix if it is not a tagged build
80+
This command is used to compute the version number of Fluid packages. The release version number is based on what's in the release group root package.json. The CI pipeline will supply the build number and branch to determine the prerelease suffix if it is not a tagged build.
8181

8282
```
8383
USAGE
@@ -86,8 +86,7 @@ USAGE
8686
8787
FLAGS
8888
-i, --includeInternalVersions=<value> Include Fluid internal versions.
89-
--base=<value> The base version. This will be read from lerna.json/package.json if not
90-
provided.
89+
--base=<value> The base version. This will be read from package.json if not provided.
9190
--build=<value> (required) The CI build number.
9291
--packageTypes=<option> [default: none] If provided, the version generated will include extra strings
9392
based on the TypeScript types that are expected to be used. This flag should
@@ -106,8 +105,8 @@ LOGGING FLAGS
106105
107106
DESCRIPTION
108107
This command is used to compute the version number of Fluid packages. The release version number is based on what's in
109-
the lerna.json/package.json. The CI pipeline will supply the build number and branch to determine the prerelease
110-
suffix if it is not a tagged build
108+
the release group root package.json. The CI pipeline will supply the build number and branch to determine the
109+
prerelease suffix if it is not a tagged build.
111110
112111
EXAMPLES
113112
$ flub generate buildVersion

0 commit comments

Comments
 (0)