@fluidframework/container-loader 3.0.1 → 3.1.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,9 @@
1
1
  # @fluidframework/container-loader
2
2
 
3
+ ## 3.1.0
4
+
5
+ Dependency updates only.
6
+
3
7
  ## 3.0.0
4
8
 
5
9
  ### Minor Changes
package/README.md CHANGED
@@ -40,8 +40,7 @@
40
40
 
41
41
  - [Quorum and Proposals](../../../server/routerlicious/packages/protocol-base/README.md)
42
42
 
43
- <!-- AUTO-GENERATED-CONTENT:START (LIBRARY_README_HEADER) -->
44
-
43
+ <!-- markdown-magic:begin {"transform":"library-readme-header","headingLevel":2} -->
45
44
  <!-- prettier-ignore-start -->
46
45
  <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
47
46
 
@@ -75,8 +74,7 @@ Import the `legacy` APIs from `@fluidframework/container-loader/legacy`.
75
74
  Read the **@fluidframework/container-loader** API documentation at <https://fluidframework.com/docs/apis/container-loader>.
76
75
 
77
76
  <!-- prettier-ignore-end -->
78
-
79
- <!-- AUTO-GENERATED-CONTENT:END -->
77
+ <!-- markdown-magic:end -->
80
78
 
81
79
  ## Fluid Loader
82
80
 
@@ -295,8 +293,7 @@ Note that when an active connection is in place, it's just a matter of time befo
295
293
 
296
294
  `Container.isDirty` can be used to get current state of container.
297
295
 
298
- <!-- AUTO-GENERATED-CONTENT:START (README_FOOTER) -->
299
-
296
+ <!-- markdown-magic:begin {"transform":"readme-footer","headingLevel":2} -->
300
297
  <!-- prettier-ignore-start -->
301
298
  <!-- NOTE: This section is automatically generated using @fluid-tools/markdown-magic. Do not update these generated contents directly. -->
302
299
 
@@ -313,29 +310,29 @@ To request support for a configuration that is not listed, file an issue.
313
310
  The product team will evaluate your request.
314
311
  In the issue, specify the current status of the configuration:
315
312
 
316
- - The configuration works but needs official support.
317
- - The configuration does not work and requires changes.
313
+ - The configuration works but needs official support.
314
+ - The configuration does not work and requires changes.
318
315
 
319
316
  ### Supported Runtimes
320
317
 
321
- - Fluid Framework supports Node.js versions 22 and 24 while they receive [upstream support](https://nodejs.org/en/about/previous-releases).
322
- - Fluid Framework will stop support for version 22 [when upstream support ends on 2027-04-30](https://github.com/nodejs/release#release-schedule).
323
- - Fluid Framework does not support Node.js with the `--no-experimental-fetch` flag.
324
- - Fluid Framework supports modern browsers that support the ES2022 standard library.
318
+ - Fluid Framework supports Node.js versions 22 and 24 while they receive [upstream support](https://nodejs.org/en/about/previous-releases).
319
+ - Fluid Framework will stop support for version 22 [when upstream support ends on 2027-04-30](https://github.com/nodejs/release#release-schedule).
320
+ - Fluid Framework does not support Node.js with the `--no-experimental-fetch` flag.
321
+ - Fluid Framework supports modern browsers that support the ES2022 standard library.
325
322
 
326
323
  ### Supported Tools
327
324
 
328
- - [TypeScript 6.0](https://typescriptdocs.com/release-notes/TypeScript%206.0):
329
- - Fluid Framework supports all [`strict`](https://www.typescriptlang.org/tsconfig) options.
330
- - Set the build targets (`lib`, `target`) to `ES2022` or later.
331
- - Enable [`strictNullChecks`](https://www.typescriptlang.org/tsconfig).
332
- - Fluid Framework does not support [configuration options deprecated in TypeScript 6.0](https://typescriptdocs.com/release-notes/TypeScript%206.0#breaking-changes-and-deprecations-in-typescript-6-0).
333
- - Fluid Framework does not fully support `exactOptionalPropertyTypes`.
334
- If you enable this option, do not use `in`, `Reflect.has`, `Object.hasOwn`, or `Object.prototype.hasOwnProperty` to narrow members of Fluid Framework types.
335
- These methods can incorrectly exclude `undefined` from the possible values.
336
- - [webpack](https://webpack.js.org/) 5
337
- - We do not require a specific bundler.
338
- Other bundlers that handle ES Modules can work, but we actively test only webpack.
325
+ - [TypeScript 6.0](https://typescriptdocs.com/release-notes/TypeScript%206.0):
326
+ - Fluid Framework supports all [`strict`](https://www.typescriptlang.org/tsconfig) options.
327
+ - Set the build targets (`lib`, `target`) to `ES2022` or later.
328
+ - Enable [`strictNullChecks`](https://www.typescriptlang.org/tsconfig).
329
+ - Fluid Framework does not support [configuration options deprecated in TypeScript 6.0](https://typescriptdocs.com/release-notes/TypeScript%206.0#breaking-changes-and-deprecations-in-typescript-6-0).
330
+ - Fluid Framework does not fully support `exactOptionalPropertyTypes`.
331
+ If you enable this option, do not use `in`, `Reflect.has`, `Object.hasOwn`, or `Object.prototype.hasOwnProperty` to narrow members of Fluid Framework types.
332
+ These methods can incorrectly exclude `undefined` from the possible values.
333
+ - [webpack](https://webpack.js.org/) 5
334
+ - We do not require a specific bundler.
335
+ Other bundlers that handle ES Modules can work, but we actively test only webpack.
339
336
 
340
337
  ### Module Resolution
341
338
 
@@ -346,25 +343,25 @@ Do not use `Node10` module resolution.
346
343
 
347
344
  ### Module Formats
348
345
 
349
- - ES Modules:
350
- Use ES Modules to consume Fluid Framework client packages, including in Node.js.
351
- - CommonJS:
352
- Fluid Framework does not officially support CommonJS in version 3.0 or later.
346
+ - ES Modules:
347
+ Use ES Modules to consume Fluid Framework client packages, including in Node.js.
348
+ - CommonJS:
349
+ Fluid Framework does not officially support CommonJS in version 3.0 or later.
353
350
 
354
351
  ## Contribution Guidelines
355
352
 
356
353
  You can [contribute](https://github.com/microsoft/FluidFramework/blob/main/CONTRIBUTING.md) to Fluid Framework in these ways:
357
354
 
358
- - Answer questions in [GitHub Discussions](https://github.com/microsoft/FluidFramework/discussions).
359
- - [Submit bug reports](https://github.com/microsoft/FluidFramework/issues) and help verify fixes.
360
- - Review [source code changes](https://github.com/microsoft/FluidFramework/pulls).
361
- - [Contribute bug fixes](https://github.com/microsoft/FluidFramework/blob/main/CONTRIBUTING.md).
355
+ - Answer questions in [GitHub Discussions](https://github.com/microsoft/FluidFramework/discussions).
356
+ - [Submit bug reports](https://github.com/microsoft/FluidFramework/issues) and help verify fixes.
357
+ - Review [source code changes](https://github.com/microsoft/FluidFramework/pulls).
358
+ - [Contribute bug fixes](https://github.com/microsoft/FluidFramework/blob/main/CONTRIBUTING.md).
362
359
 
363
360
  For detailed instructions, read the [repo documentation](https://github.com/microsoft/FluidFramework/blob/main/docs/content/Home.md).
364
361
 
365
362
  This project follows the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
366
363
  For more information, read the [Code of Conduct frequently asked questions](https://opensource.microsoft.com/codeofconduct/faq/).
367
- For questions or comments, contact [opencode@microsoft.com](mailto:opencode@microsoft.com).
364
+ For questions or comments, contact <opencode@microsoft.com>.
368
365
 
369
366
  This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.
370
367
  Use of these trademarks or logos must follow Microsoft’s [Trademark & Brand Guidelines](https://www.microsoft.com/trademarks).
@@ -385,5 +382,4 @@ Use of these trademarks or logos must follow Microsoft's [Trademark & Brand Guid
385
382
  Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
386
383
 
387
384
  <!-- prettier-ignore-end -->
388
-
389
- <!-- AUTO-GENERATED-CONTENT:END -->
385
+ <!-- markdown-magic:end -->
@@ -13,11 +13,11 @@ export declare const loaderCoreCompatDetails: {
13
13
  /**
14
14
  * The package version of the Loader layer.
15
15
  */
16
- readonly pkgVersion: "3.0.1";
16
+ readonly pkgVersion: "3.1.0";
17
17
  /**
18
18
  * The current generation of the Loader layer.
19
19
  */
20
- readonly generation: 9;
20
+ readonly generation: 10;
21
21
  };
22
22
  /**
23
23
  * Loader's compatibility details that is exposed to the Runtime layer.
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/container-loader";
8
- export declare const pkgVersion = "3.0.1";
8
+ export declare const pkgVersion = "3.1.0";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -8,5 +8,5 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.pkgVersion = exports.pkgName = void 0;
10
10
  exports.pkgName = "@fluidframework/container-loader";
11
- exports.pkgVersion = "3.0.1";
11
+ exports.pkgVersion = "3.1.0";
12
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,kCAAkC,CAAC;AAC7C,QAAA,UAAU,GAAG,OAAO,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"3.0.1\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,kCAAkC,CAAC;AAC7C,QAAA,UAAU,GAAG,OAAO,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"3.1.0\";\n"]}
@@ -13,11 +13,11 @@ export declare const loaderCoreCompatDetails: {
13
13
  /**
14
14
  * The package version of the Loader layer.
15
15
  */
16
- readonly pkgVersion: "3.0.1";
16
+ readonly pkgVersion: "3.1.0";
17
17
  /**
18
18
  * The current generation of the Loader layer.
19
19
  */
20
- readonly generation: 9;
20
+ readonly generation: 10;
21
21
  };
22
22
  /**
23
23
  * Loader's compatibility details that is exposed to the Runtime layer.
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/container-loader";
8
- export declare const pkgVersion = "3.0.1";
8
+ export declare const pkgVersion = "3.1.0";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluidframework/container-loader";
8
- export const pkgVersion = "3.0.1";
8
+ export const pkgVersion = "3.1.0";
9
9
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,kCAAkC,CAAC;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"3.0.1\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,kCAAkC,CAAC;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-loader\";\nexport const pkgVersion = \"3.1.0\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-loader",
3
- "version": "3.0.1",
3
+ "version": "3.1.0",
4
4
  "description": "Fluid container loader",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -67,13 +67,13 @@
67
67
  "temp-directory": "nyc/.nyc_output"
68
68
  },
69
69
  "dependencies": {
70
- "@fluid-internal/client-utils": "~3.0.1",
71
- "@fluidframework/container-definitions": "~3.0.1",
72
- "@fluidframework/core-interfaces": "~3.0.1",
73
- "@fluidframework/core-utils": "~3.0.1",
74
- "@fluidframework/driver-definitions": "~3.0.1",
75
- "@fluidframework/driver-utils": "~3.0.1",
76
- "@fluidframework/telemetry-utils": "~3.0.1",
70
+ "@fluid-internal/client-utils": "~3.1.0",
71
+ "@fluidframework/container-definitions": "~3.1.0",
72
+ "@fluidframework/core-interfaces": "~3.1.0",
73
+ "@fluidframework/core-utils": "~3.1.0",
74
+ "@fluidframework/driver-definitions": "~3.1.0",
75
+ "@fluidframework/driver-utils": "~3.1.0",
76
+ "@fluidframework/telemetry-utils": "~3.1.0",
77
77
  "debug": "^4.3.4",
78
78
  "double-ended-queue": "^2.1.0-0",
79
79
  "events_pkg": "npm:events@^3.1.0",
@@ -82,9 +82,9 @@
82
82
  "devDependencies": {
83
83
  "@arethetypeswrong/cli": "^0.18.5",
84
84
  "@biomejs/biome": "~2.4.5",
85
- "@fluid-internal/client-utils": "~3.0.1",
86
- "@fluid-internal/mocha-test-setup": "~3.0.1",
87
- "@fluid-private/test-loader-utils": "~3.0.1",
85
+ "@fluid-internal/client-utils": "~3.1.0",
86
+ "@fluid-internal/mocha-test-setup": "~3.1.0",
87
+ "@fluid-private/test-loader-utils": "~3.1.0",
88
88
  "@fluid-tools/build-cli": "^0.67.0",
89
89
  "@fluidframework/build-common": "^2.0.3",
90
90
  "@fluidframework/build-tools": "^0.67.0",
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-loader";
9
- export const pkgVersion = "3.0.1";
9
+ export const pkgVersion = "3.1.0";
@@ -45,6 +45,8 @@ The result is a historical view with these invariants:
45
45
  3. `PointInTimeDocumentServiceFactory` adapts that capability to the normal `createDocumentService` call used by container loading, preserving the requested target sequence number.
46
46
  4. The driver creates a point-in-time document service:
47
47
  - storage serves a recoverable snapshot whose sequence number is at or before the target;
48
+ - the initial snapshot read bypasses persistent and in-memory prefetched snapshot caches so they
49
+ cannot replace the selected recoverable snapshot with a newer snapshot;
48
50
  - delta storage serves the live document's retained ops, bounded so replay cannot pass the target;
49
51
  - the service is storage-only, preventing a live delta-stream connection.
50
52
  5. `loadContainerPaused` loads the selected snapshot with automatic op processing disabled and forces the container into read-only mode.
@@ -237,7 +239,9 @@ ODSP unit coverage exercises base selection, no-base failures, version URL resol
237
239
  Real-service ODSP coverage lives under [`packages/test/test-end-to-end-tests/src/test/pointInTime/`](../../../../test/test-end-to-end-tests/src/test/pointInTime/):
238
240
 
239
241
  - `loadToSequenceNumber.spec.ts` covers exact version boundaries, replay to a mid-stream target, and distinct historical targets.
240
- - `loadSuccess.spec.ts` covers the earliest recoverable state, deterministic repeated loads, a frozen read-only result, and deep-history replay.
242
+ - `loadSuccess.spec.ts` covers the earliest recoverable state, deterministic repeated loads, a
243
+ first historical load with a newer live snapshot already in persistent cache, a frozen read-only
244
+ result, and deep-history replay.
241
245
  - `epochMismatch.spec.ts` and `loadFailure.spec.ts` cover lineage changes, unavailable ops, malformed targets, and cancellation during replay.
242
246
  - `odspVersionApi.spec.ts` verifies the real-service version-history test setup.
243
247
  - `pointInTimeTestUtils.ts` supplies the shared counter runtime, summarizer, version-snapshot helpers, and point-in-time load wrapper.
@@ -251,7 +255,10 @@ The following loading behaviors are covered by unit or integration tests, inferr
251
255
  1. **Boundary targets:** Load sequence number `0` and the current live tip. Existing successful tests use a non-zero recoverable point and advance the document past the target before loading.
252
256
  2. **Complex runtime op representations:** Load across grouped, compressed, and chunked batches, including a large payload that genuinely uses the chunk-reassembly path. The current `SharedCounter` scenarios generate small operations. This is separate from delta-fetch page batching below.
253
257
  3. **Attachment and blob state:** Create an attachment or blob-backed handle after the base snapshot, load to a target after its attach op, and verify the historical container can read the expected content.
254
- 4. **Cache and load isolation:** Run concurrent loads to different targets, then perform a normal live load with the same factory credentials. Verify each historical view remains pinned to its own target and no historical snapshot leaks through shared or persisted caches.
258
+ 4. **Cache and load isolation:** A first historical load with a newer live snapshot already in the
259
+ same persistent cache is covered. Still run concurrent loads to different targets, then perform a
260
+ normal live load with the same factory credentials. Verify each historical view remains pinned to
261
+ its own target and no historical snapshot leaks through shared or persisted caches.
255
262
  5. **Cancellation entry and propagation:** Pass an already-aborted signal and verify no storage work begins. During replay, propagate cancellation through the delta-storage fetch rather than only rejecting the loader's wait promise, and verify retries and network reads stop promptly. The existing cancellation test aborts only after replay has begun and observes that storage retries can continue racing teardown.
256
263
  6. **Read-only enforcement:** Attempt a DDS mutation and call `connect()` on the returned historical container, then verify no op is submitted, no live connection is established, and the view does not advance. Existing coverage checks the exposed read-only and disconnected state without attempting either action.
257
264
  7. **Mid-load lineage change:** Trigger a file restore after base-version discovery but before or during live-op replay and verify the shared `EpochTracker` rejects the mixed lineage. Existing epoch tests restore before the point-in-time load starts.