@fluidframework/runtime-definitions 2.101.1 → 2.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @fluidframework/runtime-definitions
2
2
 
3
+ ## 2.103.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.102.0
8
+
9
+ Dependency updates only.
10
+
3
11
  ## 2.101.0
4
12
 
5
13
  Dependency updates only.
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```ts
6
6
 
7
- // @beta @input
7
+ // @public @input
8
8
  export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
9
9
 
10
10
  // (No @packageDocumentation comment for this package)
@@ -398,7 +398,7 @@ export interface LocalAttributionKey {
398
398
  type: "local";
399
399
  }
400
400
 
401
- // @beta @input
401
+ // @public @input
402
402
  export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
403
403
 
404
404
  // @beta @legacy
@@ -391,7 +391,7 @@ export interface LocalAttributionKey {
391
391
  type: "local";
392
392
  }
393
393
 
394
- // @beta @input
394
+ // @public @input
395
395
  export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
396
396
 
397
397
  // @beta @legacy
@@ -4,6 +4,9 @@
4
4
 
5
5
  ```ts
6
6
 
7
+ // @public @input
8
+ export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
9
+
7
10
  // (No @packageDocumentation comment for this package)
8
11
 
9
12
  ```
@@ -4,6 +4,9 @@
4
4
 
5
5
  ```ts
6
6
 
7
+ // @public @input
8
+ export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
9
+
7
10
  // (No @packageDocumentation comment for this package)
8
11
 
9
12
  ```
package/dist/beta.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  export {
12
- // #region @beta APIs
12
+ // #region @public APIs
13
13
  MinimumVersionForCollab
14
14
  // #endregion
15
15
  } from "./index.js";
@@ -5,27 +5,37 @@
5
5
  /**
6
6
  * Oldest version of Fluid Framework client packages to support collaborating with.
7
7
  * @remarks
8
- * String in a SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.
8
+ * A string in SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.
9
9
  *
10
- * When specifying a given `MinimumVersionForCollab`, any client with a version that is greater than or equal to the specified version will be considered compatible.
10
+ * Collaboration with other clients is only supported when all Fluid Framework client packages used by the client have a version that is greater than or equal
11
+ * to the specified `MinimumVersionForCollab`.
11
12
  *
12
- * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the current version.
13
+ * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the version of any Fluid Framework client package in use by the local client.
14
+ *
15
+ * The higher the version specified, the more features and optimizations will be enabled.
13
16
  *
14
17
  * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.
15
- * Since TypeScript cannot enforce them all for literals in code,
16
- * it may be useful to use `validateMinimumVersionForCollab` values which may come from constants in the codebase typed as a `MinimumVersionForCollab`.
18
+ * Since TypeScript cannot enforce all of them for literals in code, it is useful for checking values sourced from constants typed as `MinimumVersionForCollab`.
17
19
  *
18
20
  * @privateRemarks
19
21
  * Since this uses the semver notion of "greater" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.
20
22
  * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.
21
23
  *
22
- * Since this type is marked with `@input`, it can be generalized to allow more cases in the future as a non-breaking change.
24
+ * This scheme assumes a single version is always enough to communicate compatibility, which requires that compatibility is strictly increasing across releases.
25
+ * There are ways this assumption could be violated (for example, a subset of incompatible features from 3.x is back-ported to 2.x, or compatibility depends on a patch that is not in the next minor's first release).
26
+ * In such cases, a conservative enablement strategy can be used: only enable features for a version if all greater versions (based on semver ordering) also support it.
27
+ * A more flexible scheme can be added if/when it's needed since it could be opt-in and thus non-breaking.
28
+ *
29
+ * Since this type is marked with `@input`, it is only consumed by the framework and never returned, so widening the accepted set is a non-breaking change.
23
30
  *
24
31
  * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).
25
- * For example it might make sense to constrain this to something like `"1.4.0" | typeof defaultMinVersionForCollab | 2.${bigint}.0"`.
32
+ * For example it might make sense to constrain this to something like:
33
+ * ```ts
34
+ * "1.4.0" | typeof defaultMinVersionForCollab | `2.${bigint}.0`
35
+ * ```
26
36
  *
27
37
  * @input
28
- * @beta
38
+ * @public
29
39
  */
30
40
  export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
31
41
  //# sourceMappingURL=compatibilityDefinitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compatibilityDefinitions.d.ts","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,uBAAuB,GAChC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,EAAE,GAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"compatibilityDefinitions.d.ts","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,MAAM,uBAAuB,GAChC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,EAAE,GAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compatibilityDefinitions.js","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Oldest version of Fluid Framework client packages to support collaborating with.\n * @remarks\n * String in a SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.\n *\n * When specifying a given `MinimumVersionForCollab`, any client with a version that is greater than or equal to the specified version will be considered compatible.\n *\n * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the current version.\n *\n * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.\n * Since TypeScript cannot enforce them all for literals in code,\n * it may be useful to use `validateMinimumVersionForCollab` values which may come from constants in the codebase typed as a `MinimumVersionForCollab`.\n *\n * @privateRemarks\n * Since this uses the semver notion of \"greater\" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.\n * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.\n *\n * Since this type is marked with `@input`, it can be generalized to allow more cases in the future as a non-breaking change.\n *\n * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).\n * For example it might make sense to constrain this to something like `\"1.4.0\" | typeof defaultMinVersionForCollab | 2.${bigint}.0\"`.\n *\n * @input\n * @beta\n */\nexport type MinimumVersionForCollab =\n\t| `${1 | 2}.${bigint}.${bigint}`\n\t| `${1 | 2}.${bigint}.${bigint}-${string}`;\n"]}
1
+ {"version":3,"file":"compatibilityDefinitions.js","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Oldest version of Fluid Framework client packages to support collaborating with.\n * @remarks\n * A string in SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.\n *\n * Collaboration with other clients is only supported when all Fluid Framework client packages used by the client have a version that is greater than or equal\n * to the specified `MinimumVersionForCollab`.\n *\n * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the version of any Fluid Framework client package in use by the local client.\n *\n * The higher the version specified, the more features and optimizations will be enabled.\n *\n * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.\n * Since TypeScript cannot enforce all of them for literals in code, it is useful for checking values sourced from constants typed as `MinimumVersionForCollab`.\n *\n * @privateRemarks\n * Since this uses the semver notion of \"greater\" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.\n * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.\n *\n * This scheme assumes a single version is always enough to communicate compatibility, which requires that compatibility is strictly increasing across releases.\n * There are ways this assumption could be violated (for example, a subset of incompatible features from 3.x is back-ported to 2.x, or compatibility depends on a patch that is not in the next minor's first release).\n * In such cases, a conservative enablement strategy can be used: only enable features for a version if all greater versions (based on semver ordering) also support it.\n * A more flexible scheme can be added if/when it's needed since it could be opt-in and thus non-breaking.\n *\n * Since this type is marked with `@input`, it is only consumed by the framework and never returned, so widening the accepted set is a non-breaking change.\n *\n * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).\n * For example it might make sense to constrain this to something like:\n * ```ts\n * \"1.4.0\" | typeof defaultMinVersionForCollab | `2.${bigint}.0`\n * ```\n *\n * @input\n * @public\n */\nexport type MinimumVersionForCollab =\n\t| `${1 | 2}.${bigint}.${bigint}`\n\t| `${1 | 2}.${bigint}.${bigint}-${string}`;\n"]}
package/dist/legacy.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  export {
12
- // #region @beta APIs
12
+ // #region @public APIs
13
13
  MinimumVersionForCollab,
14
14
  // #endregion
15
15
 
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  export {
12
- // #region @beta APIs
12
+ // #region @public APIs
13
13
  MinimumVersionForCollab,
14
14
  // #endregion
15
15
 
package/dist/public.d.ts CHANGED
@@ -8,5 +8,8 @@
8
8
  * Generated by "flub generate entrypoints --resolutionConditions require --outFileLegacyBeta legacy --outFileLegacyAlpha legacyAlpha --outDir ./dist" in @fluid-tools/build-cli.
9
9
  */
10
10
 
11
- export {}
12
-
11
+ export {
12
+ // #region @public APIs
13
+ MinimumVersionForCollab
14
+ // #endregion
15
+ } from "./index.js";
package/lib/beta.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  export {
12
- // #region @beta APIs
12
+ // #region @public APIs
13
13
  MinimumVersionForCollab
14
14
  // #endregion
15
15
  } from "./index.js";
@@ -5,27 +5,37 @@
5
5
  /**
6
6
  * Oldest version of Fluid Framework client packages to support collaborating with.
7
7
  * @remarks
8
- * String in a SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.
8
+ * A string in SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.
9
9
  *
10
- * When specifying a given `MinimumVersionForCollab`, any client with a version that is greater than or equal to the specified version will be considered compatible.
10
+ * Collaboration with other clients is only supported when all Fluid Framework client packages used by the client have a version that is greater than or equal
11
+ * to the specified `MinimumVersionForCollab`.
11
12
  *
12
- * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the current version.
13
+ * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the version of any Fluid Framework client package in use by the local client.
14
+ *
15
+ * The higher the version specified, the more features and optimizations will be enabled.
13
16
  *
14
17
  * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.
15
- * Since TypeScript cannot enforce them all for literals in code,
16
- * it may be useful to use `validateMinimumVersionForCollab` values which may come from constants in the codebase typed as a `MinimumVersionForCollab`.
18
+ * Since TypeScript cannot enforce all of them for literals in code, it is useful for checking values sourced from constants typed as `MinimumVersionForCollab`.
17
19
  *
18
20
  * @privateRemarks
19
21
  * Since this uses the semver notion of "greater" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.
20
22
  * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.
21
23
  *
22
- * Since this type is marked with `@input`, it can be generalized to allow more cases in the future as a non-breaking change.
24
+ * This scheme assumes a single version is always enough to communicate compatibility, which requires that compatibility is strictly increasing across releases.
25
+ * There are ways this assumption could be violated (for example, a subset of incompatible features from 3.x is back-ported to 2.x, or compatibility depends on a patch that is not in the next minor's first release).
26
+ * In such cases, a conservative enablement strategy can be used: only enable features for a version if all greater versions (based on semver ordering) also support it.
27
+ * A more flexible scheme can be added if/when it's needed since it could be opt-in and thus non-breaking.
28
+ *
29
+ * Since this type is marked with `@input`, it is only consumed by the framework and never returned, so widening the accepted set is a non-breaking change.
23
30
  *
24
31
  * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).
25
- * For example it might make sense to constrain this to something like `"1.4.0" | typeof defaultMinVersionForCollab | 2.${bigint}.0"`.
32
+ * For example it might make sense to constrain this to something like:
33
+ * ```ts
34
+ * "1.4.0" | typeof defaultMinVersionForCollab | `2.${bigint}.0`
35
+ * ```
26
36
  *
27
37
  * @input
28
- * @beta
38
+ * @public
29
39
  */
30
40
  export type MinimumVersionForCollab = `${1 | 2}.${bigint}.${bigint}` | `${1 | 2}.${bigint}.${bigint}-${string}`;
31
41
  //# sourceMappingURL=compatibilityDefinitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compatibilityDefinitions.d.ts","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,uBAAuB,GAChC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,EAAE,GAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"compatibilityDefinitions.d.ts","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,MAAM,uBAAuB,GAChC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,EAAE,GAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compatibilityDefinitions.js","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Oldest version of Fluid Framework client packages to support collaborating with.\n * @remarks\n * String in a SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.\n *\n * When specifying a given `MinimumVersionForCollab`, any client with a version that is greater than or equal to the specified version will be considered compatible.\n *\n * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the current version.\n *\n * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.\n * Since TypeScript cannot enforce them all for literals in code,\n * it may be useful to use `validateMinimumVersionForCollab` values which may come from constants in the codebase typed as a `MinimumVersionForCollab`.\n *\n * @privateRemarks\n * Since this uses the semver notion of \"greater\" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.\n * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.\n *\n * Since this type is marked with `@input`, it can be generalized to allow more cases in the future as a non-breaking change.\n *\n * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).\n * For example it might make sense to constrain this to something like `\"1.4.0\" | typeof defaultMinVersionForCollab | 2.${bigint}.0\"`.\n *\n * @input\n * @beta\n */\nexport type MinimumVersionForCollab =\n\t| `${1 | 2}.${bigint}.${bigint}`\n\t| `${1 | 2}.${bigint}.${bigint}-${string}`;\n"]}
1
+ {"version":3,"file":"compatibilityDefinitions.js","sourceRoot":"","sources":["../src/compatibilityDefinitions.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Oldest version of Fluid Framework client packages to support collaborating with.\n * @remarks\n * A string in SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.\n *\n * Collaboration with other clients is only supported when all Fluid Framework client packages used by the client have a version that is greater than or equal\n * to the specified `MinimumVersionForCollab`.\n *\n * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the version of any Fluid Framework client package in use by the local client.\n *\n * The higher the version specified, the more features and optimizations will be enabled.\n *\n * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.\n * Since TypeScript cannot enforce all of them for literals in code, it is useful for checking values sourced from constants typed as `MinimumVersionForCollab`.\n *\n * @privateRemarks\n * Since this uses the semver notion of \"greater\" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.\n * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.\n *\n * This scheme assumes a single version is always enough to communicate compatibility, which requires that compatibility is strictly increasing across releases.\n * There are ways this assumption could be violated (for example, a subset of incompatible features from 3.x is back-ported to 2.x, or compatibility depends on a patch that is not in the next minor's first release).\n * In such cases, a conservative enablement strategy can be used: only enable features for a version if all greater versions (based on semver ordering) also support it.\n * A more flexible scheme can be added if/when it's needed since it could be opt-in and thus non-breaking.\n *\n * Since this type is marked with `@input`, it is only consumed by the framework and never returned, so widening the accepted set is a non-breaking change.\n *\n * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).\n * For example it might make sense to constrain this to something like:\n * ```ts\n * \"1.4.0\" | typeof defaultMinVersionForCollab | `2.${bigint}.0`\n * ```\n *\n * @input\n * @public\n */\nexport type MinimumVersionForCollab =\n\t| `${1 | 2}.${bigint}.${bigint}`\n\t| `${1 | 2}.${bigint}.${bigint}-${string}`;\n"]}
package/lib/legacy.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  export {
12
- // #region @beta APIs
12
+ // #region @public APIs
13
13
  MinimumVersionForCollab,
14
14
  // #endregion
15
15
 
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  export {
12
- // #region @beta APIs
12
+ // #region @public APIs
13
13
  MinimumVersionForCollab,
14
14
  // #endregion
15
15
 
package/lib/public.d.ts CHANGED
@@ -8,5 +8,8 @@
8
8
  * Generated by "flub generate entrypoints --outFileLegacyBeta legacy --outFileLegacyAlpha legacyAlpha --outDir ./lib --node10TypeCompat" in @fluid-tools/build-cli.
9
9
  */
10
10
 
11
- export {}
12
-
11
+ export {
12
+ // #region @public APIs
13
+ MinimumVersionForCollab
14
+ // #endregion
15
+ } from "./index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/runtime-definitions",
3
- "version": "2.101.1",
3
+ "version": "2.103.0",
4
4
  "description": "Fluid Runtime definitions",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -67,12 +67,12 @@
67
67
  "main": "lib/index.js",
68
68
  "types": "lib/public.d.ts",
69
69
  "dependencies": {
70
- "@fluid-internal/client-utils": "~2.101.1",
71
- "@fluidframework/container-definitions": "~2.101.1",
72
- "@fluidframework/core-interfaces": "~2.101.1",
73
- "@fluidframework/driver-definitions": "~2.101.1",
74
- "@fluidframework/id-compressor": "~2.101.1",
75
- "@fluidframework/telemetry-utils": "~2.101.1"
70
+ "@fluid-internal/client-utils": "~2.103.0",
71
+ "@fluidframework/container-definitions": "~2.103.0",
72
+ "@fluidframework/core-interfaces": "~2.103.0",
73
+ "@fluidframework/driver-definitions": "~2.103.0",
74
+ "@fluidframework/id-compressor": "~2.103.0",
75
+ "@fluidframework/telemetry-utils": "~2.103.0"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@arethetypeswrong/cli": "^0.18.2",
@@ -81,7 +81,7 @@
81
81
  "@fluidframework/build-common": "^2.0.3",
82
82
  "@fluidframework/build-tools": "^0.65.0",
83
83
  "@fluidframework/eslint-config-fluid": "^9.0.0",
84
- "@fluidframework/runtime-definitions-previous": "npm:@fluidframework/runtime-definitions@2.92.0",
84
+ "@fluidframework/runtime-definitions-previous": "npm:@fluidframework/runtime-definitions@2.101.0",
85
85
  "@microsoft/api-extractor": "7.58.1",
86
86
  "concurrently": "^9.2.1",
87
87
  "copyfiles": "^2.4.1",
@@ -6,27 +6,37 @@
6
6
  /**
7
7
  * Oldest version of Fluid Framework client packages to support collaborating with.
8
8
  * @remarks
9
- * String in a SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.
9
+ * A string in SemVer format indicating a specific version of the Fluid Framework client package, or the special case of {@link @fluidframework/runtime-utils#defaultMinVersionForCollab}.
10
10
  *
11
- * When specifying a given `MinimumVersionForCollab`, any client with a version that is greater than or equal to the specified version will be considered compatible.
11
+ * Collaboration with other clients is only supported when all Fluid Framework client packages used by the client have a version that is greater than or equal
12
+ * to the specified `MinimumVersionForCollab`.
12
13
  *
13
- * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the current version.
14
+ * Must be at least {@link @fluidframework/runtime-utils#lowestMinVersionForCollab} and cannot exceed the version of any Fluid Framework client package in use by the local client.
15
+ *
16
+ * The higher the version specified, the more features and optimizations will be enabled.
14
17
  *
15
18
  * {@link @fluidframework/runtime-utils#validateMinimumVersionForCollab} can be used to check these invariants at runtime.
16
- * Since TypeScript cannot enforce them all for literals in code,
17
- * it may be useful to use `validateMinimumVersionForCollab` values which may come from constants in the codebase typed as a `MinimumVersionForCollab`.
19
+ * Since TypeScript cannot enforce all of them for literals in code, it is useful for checking values sourced from constants typed as `MinimumVersionForCollab`.
18
20
  *
19
21
  * @privateRemarks
20
22
  * Since this uses the semver notion of "greater" (which might not actually mean a later release, or supporting more features), care must be taken with how this is used.
21
23
  * See remarks for {@link @fluidframework/runtime-utils#MinimumMinorSemanticVersion} for more details.
22
24
  *
23
- * Since this type is marked with `@input`, it can be generalized to allow more cases in the future as a non-breaking change.
25
+ * This scheme assumes a single version is always enough to communicate compatibility, which requires that compatibility is strictly increasing across releases.
26
+ * There are ways this assumption could be violated (for example, a subset of incompatible features from 3.x is back-ported to 2.x, or compatibility depends on a patch that is not in the next minor's first release).
27
+ * In such cases, a conservative enablement strategy can be used: only enable features for a version if all greater versions (based on semver ordering) also support it.
28
+ * A more flexible scheme can be added if/when it's needed since it could be opt-in and thus non-breaking.
29
+ *
30
+ * Since this type is marked with `@input`, it is only consumed by the framework and never returned, so widening the accepted set is a non-breaking change.
24
31
  *
25
32
  * TODO: before stabilizing this further, some restrictions should be considered (since once stabilized, this can be relaxed, but not more constrained).
26
- * For example it might make sense to constrain this to something like `"1.4.0" | typeof defaultMinVersionForCollab | 2.${bigint}.0"`.
33
+ * For example it might make sense to constrain this to something like:
34
+ * ```ts
35
+ * "1.4.0" | typeof defaultMinVersionForCollab | `2.${bigint}.0`
36
+ * ```
27
37
  *
28
38
  * @input
29
- * @beta
39
+ * @public
30
40
  */
31
41
  export type MinimumVersionForCollab =
32
42
  | `${1 | 2}.${bigint}.${bigint}`