@fluidframework/id-compressor 2.93.0 → 2.100.1
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 +24 -0
- package/api-report/id-compressor.legacy.beta.api.md +4 -15
- package/dist/idCompressor.d.ts +13 -36
- package/dist/idCompressor.d.ts.map +1 -1
- package/dist/idCompressor.js +5 -7
- package/dist/idCompressor.js.map +1 -1
- package/dist/legacy.d.ts +0 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/test/appendOnlySortedMap.perf.spec.js.map +1 -1
- package/dist/test/idCompressor.perf.spec.js.map +1 -1
- package/dist/test/idCompressor.spec.js.map +1 -1
- package/dist/test/idCompressorTestUtilities.d.ts.map +1 -1
- package/dist/test/idCompressorTestUtilities.js +1 -1
- package/dist/test/idCompressorTestUtilities.js.map +1 -1
- package/dist/test/snapshots/summary.spec.js.map +1 -1
- package/dist/test/types/validateIdCompressorPrevious.generated.js.map +1 -1
- package/dist/types/idCompressor.d.ts +1 -13
- package/dist/types/idCompressor.d.ts.map +1 -1
- package/dist/types/idCompressor.js.map +1 -1
- package/lib/idCompressor.d.ts +13 -36
- package/lib/idCompressor.d.ts.map +1 -1
- package/lib/idCompressor.js +6 -8
- package/lib/idCompressor.js.map +1 -1
- package/lib/legacy.d.ts +0 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/test/appendOnlySortedMap.perf.spec.js.map +1 -1
- package/lib/test/idCompressor.perf.spec.js.map +1 -1
- package/lib/test/idCompressor.spec.js.map +1 -1
- package/lib/test/idCompressorTestUtilities.d.ts.map +1 -1
- package/lib/test/idCompressorTestUtilities.js +2 -2
- package/lib/test/idCompressorTestUtilities.js.map +1 -1
- package/lib/test/snapshots/summary.spec.js.map +1 -1
- package/lib/test/types/validateIdCompressorPrevious.generated.js.map +1 -1
- package/lib/types/idCompressor.d.ts +1 -13
- package/lib/types/idCompressor.d.ts.map +1 -1
- package/lib/types/idCompressor.js.map +1 -1
- package/package.json +16 -11
- package/src/idCompressor.ts +17 -50
- package/src/packageVersion.ts +1 -1
- package/src/test/idCompressorTestUtilities.ts +2 -1
- package/src/test/types/validateIdCompressorPrevious.generated.ts +2 -0
- 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.
|
|
3
|
+
"version": "2.100.1",
|
|
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.
|
|
85
|
-
"@fluidframework/core-interfaces": "~2.
|
|
86
|
-
"@fluidframework/core-utils": "~2.
|
|
87
|
-
"@fluidframework/telemetry-utils": "~2.
|
|
84
|
+
"@fluid-internal/client-utils": "~2.100.1",
|
|
85
|
+
"@fluidframework/core-interfaces": "~2.100.1",
|
|
86
|
+
"@fluidframework/core-utils": "~2.100.1",
|
|
87
|
+
"@fluidframework/telemetry-utils": "~2.100.1",
|
|
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.
|
|
95
|
-
"@fluid-private/stochastic-test-utils": "~2.
|
|
96
|
-
"@fluid-tools/benchmark": "^0.
|
|
97
|
-
"@fluid-tools/build-cli": "^0.
|
|
94
|
+
"@fluid-internal/mocha-test-setup": "~2.100.1",
|
|
95
|
+
"@fluid-private/stochastic-test-utils": "~2.100.1",
|
|
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.
|
|
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": {
|
package/src/idCompressor.ts
CHANGED
|
@@ -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:
|
|
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?:
|
|
626
|
+
logger?: TelemetryLoggerExt | undefined;
|
|
626
627
|
newSessionId?: never;
|
|
627
628
|
}
|
|
628
629
|
| {
|
|
629
630
|
serialized: SerializedIdCompressorWithNoSession;
|
|
630
631
|
newSessionId: SessionId;
|
|
631
|
-
logger?:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
890
|
-
*
|
|
891
|
-
*
|
|
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
|
}
|
package/src/packageVersion.ts
CHANGED
|
@@ -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
|
-
* @
|
|
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
|
/**
|