@fluidframework/id-compressor 2.93.0 → 2.100.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/api-report/id-compressor.legacy.beta.api.md +4 -15
  3. package/dist/idCompressor.d.ts +13 -36
  4. package/dist/idCompressor.d.ts.map +1 -1
  5. package/dist/idCompressor.js +5 -7
  6. package/dist/idCompressor.js.map +1 -1
  7. package/dist/legacy.d.ts +0 -1
  8. package/dist/packageVersion.d.ts +1 -1
  9. package/dist/packageVersion.d.ts.map +1 -1
  10. package/dist/packageVersion.js +1 -1
  11. package/dist/packageVersion.js.map +1 -1
  12. package/dist/test/appendOnlySortedMap.perf.spec.js.map +1 -1
  13. package/dist/test/idCompressor.perf.spec.js.map +1 -1
  14. package/dist/test/idCompressor.spec.js.map +1 -1
  15. package/dist/test/idCompressorTestUtilities.d.ts.map +1 -1
  16. package/dist/test/idCompressorTestUtilities.js +1 -1
  17. package/dist/test/idCompressorTestUtilities.js.map +1 -1
  18. package/dist/test/snapshots/summary.spec.js.map +1 -1
  19. package/dist/test/types/validateIdCompressorPrevious.generated.js.map +1 -1
  20. package/dist/types/idCompressor.d.ts +1 -13
  21. package/dist/types/idCompressor.d.ts.map +1 -1
  22. package/dist/types/idCompressor.js.map +1 -1
  23. package/lib/idCompressor.d.ts +13 -36
  24. package/lib/idCompressor.d.ts.map +1 -1
  25. package/lib/idCompressor.js +6 -8
  26. package/lib/idCompressor.js.map +1 -1
  27. package/lib/legacy.d.ts +0 -1
  28. package/lib/packageVersion.d.ts +1 -1
  29. package/lib/packageVersion.d.ts.map +1 -1
  30. package/lib/packageVersion.js +1 -1
  31. package/lib/packageVersion.js.map +1 -1
  32. package/lib/test/appendOnlySortedMap.perf.spec.js.map +1 -1
  33. package/lib/test/idCompressor.perf.spec.js.map +1 -1
  34. package/lib/test/idCompressor.spec.js.map +1 -1
  35. package/lib/test/idCompressorTestUtilities.d.ts.map +1 -1
  36. package/lib/test/idCompressorTestUtilities.js +2 -2
  37. package/lib/test/idCompressorTestUtilities.js.map +1 -1
  38. package/lib/test/snapshots/summary.spec.js.map +1 -1
  39. package/lib/test/types/validateIdCompressorPrevious.generated.js.map +1 -1
  40. package/lib/types/idCompressor.d.ts +1 -13
  41. package/lib/types/idCompressor.d.ts.map +1 -1
  42. package/lib/types/idCompressor.js.map +1 -1
  43. package/package.json +16 -11
  44. package/src/idCompressor.ts +17 -50
  45. package/src/packageVersion.ts +1 -1
  46. package/src/test/idCompressorTestUtilities.ts +2 -1
  47. package/src/test/types/validateIdCompressorPrevious.generated.ts +2 -0
  48. package/src/types/idCompressor.ts +1 -13
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/id-compressor",
3
- "version": "2.93.0",
3
+ "version": "2.100.0",
4
4
  "description": "ID compressor",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -81,22 +81,22 @@
81
81
  "temp-directory": "nyc/.nyc_output"
82
82
  },
83
83
  "dependencies": {
84
- "@fluid-internal/client-utils": "~2.93.0",
85
- "@fluidframework/core-interfaces": "~2.93.0",
86
- "@fluidframework/core-utils": "~2.93.0",
87
- "@fluidframework/telemetry-utils": "~2.93.0",
84
+ "@fluid-internal/client-utils": "~2.100.0",
85
+ "@fluidframework/core-interfaces": "~2.100.0",
86
+ "@fluidframework/core-utils": "~2.100.0",
87
+ "@fluidframework/telemetry-utils": "~2.100.0",
88
88
  "@tylerbu/sorted-btree-es6": "^2.1.1",
89
89
  "uuid": "^11.1.0"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@arethetypeswrong/cli": "^0.18.2",
93
93
  "@biomejs/biome": "~2.4.5",
94
- "@fluid-internal/mocha-test-setup": "~2.93.0",
95
- "@fluid-private/stochastic-test-utils": "~2.93.0",
96
- "@fluid-tools/benchmark": "^0.55.0",
97
- "@fluid-tools/build-cli": "^0.64.0",
94
+ "@fluid-internal/mocha-test-setup": "~2.100.0",
95
+ "@fluid-private/stochastic-test-utils": "~2.100.0",
96
+ "@fluid-tools/benchmark": "^0.58.0",
97
+ "@fluid-tools/build-cli": "^0.65.0",
98
98
  "@fluidframework/build-common": "^2.0.3",
99
- "@fluidframework/build-tools": "^0.64.0",
99
+ "@fluidframework/build-tools": "^0.65.0",
100
100
  "@fluidframework/eslint-config-fluid": "^9.0.0",
101
101
  "@fluidframework/id-compressor-previous": "npm:@fluidframework/id-compressor@2.92.0",
102
102
  "@microsoft/api-extractor": "7.58.1",
@@ -114,7 +114,12 @@
114
114
  "typescript": "~5.4.5"
115
115
  },
116
116
  "typeValidation": {
117
- "broken": {},
117
+ "broken": {
118
+ "Interface_IIdCompressorCore": {
119
+ "forwardCompat": false,
120
+ "backCompat": false
121
+ }
122
+ },
118
123
  "entrypoint": "legacy"
119
124
  },
120
125
  "scripts": {
@@ -6,11 +6,14 @@
6
6
  import { bufferToString, stringToBuffer } from "@fluid-internal/client-utils";
7
7
  import type { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
8
  import { assert } from "@fluidframework/core-utils/internal";
9
+ import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
9
10
  import {
10
- type ITelemetryLoggerExt,
11
11
  LoggingError,
12
12
  createChildLogger,
13
+ extractTelemetryLoggerExt,
13
14
  } from "@fluidframework/telemetry-utils/internal";
15
+ // eslint-disable-next-line import-x/no-internal-modules -- Needed to avoid specialized /internal ITelemetryLoggerExt
16
+ import type { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/legacy";
14
17
 
15
18
  import { FinalSpace } from "./finalSpace.js";
16
19
  import {
@@ -40,7 +43,6 @@ import {
40
43
  } from "./sessions.js";
41
44
  import type {
42
45
  IIdCompressor,
43
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
44
46
  IIdCompressorCore,
45
47
  IdCreationRange,
46
48
  OpSpaceCompressedId,
@@ -77,7 +79,6 @@ function rangeFinalizationError(expectedStart: number, actualStart: number): Log
77
79
  /**
78
80
  * See {@link IIdCompressor} and {@link IIdCompressorCore}
79
81
  */
80
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
81
82
  export class IdCompressor implements IIdCompressor, IIdCompressorCore {
82
83
  /**
83
84
  * Max allowed initial cluster size.
@@ -129,7 +130,7 @@ export class IdCompressor implements IIdCompressor, IIdCompressorCore {
129
130
 
130
131
  public constructor(
131
132
  localSessionIdOrDeserialized: SessionId | Sessions,
132
- private readonly logger: ITelemetryLoggerExt | undefined,
133
+ private readonly logger: TelemetryLoggerExt | undefined,
133
134
  ) {
134
135
  if (typeof localSessionIdOrDeserialized === "string") {
135
136
  this.localSessionId = localSessionIdOrDeserialized;
@@ -622,13 +623,13 @@ export class IdCompressor implements IIdCompressor, IIdCompressorCore {
622
623
  params:
623
624
  | {
624
625
  serialized: SerializedIdCompressorWithOngoingSession;
625
- logger?: ITelemetryLoggerExt | undefined;
626
+ logger?: TelemetryLoggerExt | undefined;
626
627
  newSessionId?: never;
627
628
  }
628
629
  | {
629
630
  serialized: SerializedIdCompressorWithNoSession;
630
631
  newSessionId: SessionId;
631
- logger?: ITelemetryLoggerExt | undefined;
632
+ logger?: TelemetryLoggerExt | undefined;
632
633
  },
633
634
  ): IdCompressor {
634
635
  const { serialized, newSessionId, logger } = params;
@@ -655,7 +656,7 @@ export class IdCompressor implements IIdCompressor, IIdCompressorCore {
655
656
  static deserialize2_0(
656
657
  index: Index,
657
658
  sessionId: SessionId | undefined,
658
- logger: ITelemetryLoggerExt | undefined,
659
+ logger: TelemetryLoggerExt | undefined,
659
660
  ): IdCompressor {
660
661
  const hasLocalState = readBoolean(index);
661
662
  const sessionCount = readNumber(index);
@@ -739,39 +740,22 @@ export class IdCompressor implements IIdCompressor, IIdCompressorCore {
739
740
  /**
740
741
  * Create a new {@link IIdCompressor}.
741
742
  *
742
- * @remarks
743
- * The returned compressor previously also implemented {@link IIdCompressorCore}, but that
744
- * interface is {@link IIdCompressorCore | deprecated} and will be removed from the return
745
- * type in a future release. Consumers should type variables as {@link IIdCompressor} and
746
- * use {@link (serializeIdCompressor:1)} for serialization instead of calling `serialize()` directly.
747
- *
748
743
  * @legacy @beta
749
744
  */
750
- export function createIdCompressor(
751
- logger?: ITelemetryBaseLogger,
752
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
753
- ): IIdCompressor & IIdCompressorCore;
745
+ export function createIdCompressor(logger?: ITelemetryBaseLogger): IIdCompressor;
754
746
  /**
755
747
  * Create a new {@link IIdCompressor}.
756
748
  * @param sessionId - The seed ID for the compressor.
757
749
  *
758
- * @remarks
759
- * The returned compressor previously also implemented {@link IIdCompressorCore}, but that
760
- * interface is {@link IIdCompressorCore | deprecated} and will be removed from the return
761
- * type in a future release. Consumers should type variables as {@link IIdCompressor} and
762
- * use {@link (serializeIdCompressor:1)} for serialization instead of calling `serialize()` directly.
763
- *
764
750
  * @legacy @beta
765
751
  */
766
752
  export function createIdCompressor(
767
753
  sessionId: SessionId,
768
754
  logger?: ITelemetryBaseLogger,
769
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
770
- ): IIdCompressor & IIdCompressorCore;
755
+ ): IIdCompressor;
771
756
  export function createIdCompressor(
772
757
  sessionIdOrLogger?: SessionId | ITelemetryBaseLogger,
773
758
  loggerOrUndefined?: ITelemetryBaseLogger,
774
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
775
759
  ): IIdCompressor & IIdCompressorCore {
776
760
  let localSessionId: SessionId;
777
761
  let logger: ITelemetryBaseLogger | undefined;
@@ -796,46 +780,31 @@ export function createIdCompressor(
796
780
  /**
797
781
  * Deserializes the supplied state into an ID compressor.
798
782
  *
799
- * @remarks
800
- * The returned compressor previously also implemented {@link IIdCompressorCore}, but that
801
- * interface is {@link IIdCompressorCore | deprecated} and will be removed from the return
802
- * type in a future release. Consumers should type variables as {@link IIdCompressor} and
803
- * use {@link (serializeIdCompressor:1)} for serialization instead of calling `serialize()` directly.
804
- *
805
783
  * @legacy @beta
806
784
  */
807
785
  export function deserializeIdCompressor(
808
786
  serialized: SerializedIdCompressorWithOngoingSession,
809
787
  logger?: ITelemetryLoggerExt,
810
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
811
- ): IIdCompressor & IIdCompressorCore;
788
+ ): IIdCompressor;
812
789
  /**
813
790
  * Deserializes the supplied state into an ID compressor.
814
791
  *
815
- * @remarks
816
- * The returned compressor previously also implemented {@link IIdCompressorCore}, but that
817
- * interface is {@link IIdCompressorCore | deprecated} and will be removed from the return
818
- * type in a future release. Consumers should type variables as {@link IIdCompressor} and
819
- * use {@link (serializeIdCompressor:1)} for serialization instead of calling `serialize()` directly.
820
- *
821
792
  * @legacy @beta
822
793
  */
823
794
  export function deserializeIdCompressor(
824
795
  serialized: SerializedIdCompressorWithNoSession,
825
796
  newSessionId: SessionId,
826
797
  logger?: ITelemetryLoggerExt,
827
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
828
- ): IIdCompressor & IIdCompressorCore;
798
+ ): IIdCompressor;
829
799
  export function deserializeIdCompressor(
830
800
  serialized: SerializedIdCompressor | SerializedIdCompressorWithNoSession,
831
801
  sessionIdOrLogger: SessionId | ITelemetryLoggerExt | undefined,
832
802
  loggerOrUndefined?: ITelemetryLoggerExt,
833
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
834
803
  ): IIdCompressor & IIdCompressorCore {
835
804
  if (typeof sessionIdOrLogger === "string") {
836
805
  return IdCompressor.deserialize({
837
806
  serialized: serialized as SerializedIdCompressorWithNoSession,
838
- logger: loggerOrUndefined,
807
+ logger: extractTelemetryLoggerExt<{ PossiblyUndefined: true }>(loggerOrUndefined),
839
808
  newSessionId: sessionIdOrLogger,
840
809
  });
841
810
  }
@@ -846,7 +815,7 @@ export function deserializeIdCompressor(
846
815
  );
847
816
  return IdCompressor.deserialize({
848
817
  serialized: serialized as SerializedIdCompressorWithOngoingSession,
849
- logger: sessionIdOrLogger,
818
+ logger: extractTelemetryLoggerExt<{ PossiblyUndefined: true }>(sessionIdOrLogger),
850
819
  });
851
820
  }
852
821
 
@@ -886,9 +855,9 @@ export function serializeIdCompressor(
886
855
  * @remarks
887
856
  * Compressors returned by `createIdCompressor` and `deserializeIdCompressor`
888
857
  * always implement both {@link IIdCompressor} and {@link IIdCompressorCore}, but their
889
- * return types will be narrowed to {@link IIdCompressor} to keep {@link IIdCompressorCore}
890
- * out of the `@legacy` API surface. Internal consumers that need access to core
891
- * compressor operations (serialization, range management, etc.) should use this function.
858
+ * public return type is narrowed to {@link IIdCompressor}. Internal consumers that
859
+ * need access to core compressor operations (serialization, range management, etc.)
860
+ * use this function to recover the {@link IIdCompressorCore} surface.
892
861
  *
893
862
  * @param compressor - A compressor created by `createIdCompressor` or
894
863
  * `deserializeIdCompressor`.
@@ -897,12 +866,10 @@ export function serializeIdCompressor(
897
866
  */
898
867
  export function toIdCompressorWithCore(
899
868
  compressor: IIdCompressor,
900
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
901
869
  ): IIdCompressor & IIdCompressorCore {
902
870
  assert(
903
871
  "serialize" in compressor,
904
872
  0xced /* Expected compressor to implement IIdCompressorCore */,
905
873
  );
906
- // eslint-disable-next-line import-x/no-deprecated -- Will be undeprecated in 2.100.0 when it becomes an internal API
907
874
  return compressor as IIdCompressor & IIdCompressorCore;
908
875
  }
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/id-compressor";
9
- export const pkgVersion = "2.93.0";
9
+ export const pkgVersion = "2.100.0";
@@ -30,6 +30,7 @@ import {
30
30
  type SessionSpaceCompressedId,
31
31
  type StableId,
32
32
  createIdCompressor,
33
+ toIdCompressorWithCore,
33
34
  } from "../index.js";
34
35
  import { SessionSpaceNormalizer } from "../sessionSpaceNormalizer.js";
35
36
  import { assertIsSessionId, createSessionId, localIdFromGenCount } from "../utilities.js";
@@ -1087,5 +1088,5 @@ export function createAlwaysFinalizedIdCompressor(
1087
1088
  const compressor = createIdCompressor(random.uuid4() as SessionId, logger);
1088
1089
  // Permanently put the compressor in a ghost session
1089
1090
  (compressor as IdCompressor).startGhostSession(sessionId);
1090
- return compressor;
1091
+ return toIdCompressorWithCore(compressor);
1091
1092
  }
@@ -96,6 +96,7 @@ declare type current_as_old_for_Interface_IIdCompressor = requireAssignableTo<Ty
96
96
  * typeValidation.broken:
97
97
  * "Interface_IIdCompressorCore": {"forwardCompat": false}
98
98
  */
99
+ // @ts-expect-error compatibility expected to be broken
99
100
  declare type old_as_current_for_Interface_IIdCompressorCore = requireAssignableTo<TypeOnly<old.IIdCompressorCore>, TypeOnly<current.IIdCompressorCore>>
100
101
 
101
102
  /*
@@ -105,6 +106,7 @@ declare type old_as_current_for_Interface_IIdCompressorCore = requireAssignableT
105
106
  * typeValidation.broken:
106
107
  * "Interface_IIdCompressorCore": {"backCompat": false}
107
108
  */
109
+ // @ts-expect-error compatibility expected to be broken
108
110
  declare type current_as_old_for_Interface_IIdCompressorCore = requireAssignableTo<TypeOnly<current.IIdCompressorCore>, TypeOnly<old.IIdCompressorCore>>
109
111
 
110
112
  /*
@@ -76,19 +76,7 @@ import type {
76
76
  * These two spaces naturally define a rule: consumers of compressed IDs should use session-space IDs, but serialized forms such as ops
77
77
  * should use op-space IDs.
78
78
  *
79
- * @privateremarks To be made internal in 2.100.0
80
- *
81
- * @deprecated `IIdCompressorCore` will be removed from the public API in 2.100.0.
82
- *
83
- * - If you use `serialize()`, use the free function
84
- * {@link (serializeIdCompressor:1) | serializeIdCompressor(compressor, withSession)} instead.
85
- *
86
- * - `takeNextCreationRange`, `takeUnfinalizedCreationRange`, `finalizeCreationRange`, and
87
- * `beginGhostSession` are internal runtime operations. External consumers should not call
88
- * them directly. If you depend on these APIs, please file an issue on the FluidFramework
89
- * repository describing your use case.
90
- *
91
- * @legacy @beta
79
+ * @internal
92
80
  */
93
81
  export interface IIdCompressorCore {
94
82
  /**