@fluidframework/id-compressor 2.90.0-378676 → 2.90.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 +4 -0
- 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/idCompressor.perf.spec.js.map +1 -1
- package/dist/test/snapshots/dirname.cjs +0 -1
- package/dist/test/snapshots/dirname.cjs.map +1 -1
- package/dist/test/snapshots/dirname.d.cts.map +1 -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/idCompressor.perf.spec.js.map +1 -1
- package/lib/test/snapshots/dirname.cjs +0 -1
- package/lib/test/snapshots/dirname.cjs.map +1 -1
- package/lib/test/snapshots/dirname.d.cts.map +1 -1
- package/package.json +11 -11
- package/src/packageVersion.ts +1 -1
- package/src/test/snapshots/dirname.cts +0 -1
package/CHANGELOG.md
CHANGED
package/dist/packageVersion.d.ts
CHANGED
|
@@ -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/id-compressor";
|
|
8
|
-
export declare const pkgVersion = "2.90.0
|
|
8
|
+
export declare const pkgVersion = "2.90.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,kCAAkC,CAAC;AACvD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,kCAAkC,CAAC;AACvD,eAAO,MAAM,UAAU,WAAW,CAAC"}
|
package/dist/packageVersion.js
CHANGED
|
@@ -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/id-compressor";
|
|
11
|
-
exports.pkgVersion = "2.90.0
|
|
11
|
+
exports.pkgVersion = "2.90.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,+BAA+B,CAAC;AAC1C,QAAA,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,+BAA+B,CAAC;AAC1C,QAAA,UAAU,GAAG,QAAQ,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/id-compressor\";\nexport const pkgVersion = \"2.90.0\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idCompressor.perf.spec.js","sourceRoot":"","sources":["../../src/test/idCompressor.perf.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { take } from \"@fluid-private/stochastic-test-utils\";\nimport { BenchmarkType, benchmark } from \"@fluid-tools/benchmark\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { IdCompressor } from \"../idCompressor.js\";\nimport type {\n\tIdCreationRange,\n\tOpSpaceCompressedId,\n\tSerializedIdCompressorWithNoSession,\n\tSessionId,\n\tSessionSpaceCompressedId,\n\tStableId,\n} from \"../index.js\";\nimport { createSessionId } from \"../utilities.js\";\n\nimport {\n\tClient,\n\tDestinationClient,\n\tIdCompressorTestNetwork,\n\tbuildHugeCompressor,\n\tmakeOpGenerator,\n\tperformFuzzActions,\n\tsessionIds,\n} from \"./idCompressorTestUtilities.js\";\nimport {\n\ttype FinalCompressedId,\n\ttype LocalCompressedId,\n\tfail,\n\tisFinalId,\n\tisLocalId,\n} from \"./testCommon.js\";\n\nconst initialClusterCapacity = 512;\n\ndescribe(\"IdCompressor Perf\", () => {\n\tconst type = BenchmarkType.Measurement;\n\tconst localClient = Client.Client1;\n\tconst remoteClient = Client.Client2;\n\tlet perfCompressor: IdCompressor;\n\n\tfunction setupCompressors(\n\t\tclusterSize: number,\n\t\tlocalClientCanEdit: boolean,\n\t\tsynchronizeAtEnd: boolean,\n\t): IdCompressorTestNetwork {\n\t\tconst perfNetwork = new IdCompressorTestNetwork(clusterSize);\n\t\tconst maxClusterSize = clusterSize * 2;\n\t\tconst generator = take(\n\t\t\t1000,\n\t\t\tmakeOpGenerator({\n\t\t\t\tvalidateInterval: 2000,\n\t\t\t\tmaxClusterSize,\n\t\t\t\toutsideAllocationFraction: 0.9,\n\t\t\t}),\n\t\t);\n\t\tperformFuzzActions(\n\t\t\tgenerator,\n\t\t\tperfNetwork,\n\t\t\tMath.E,\n\t\t\tlocalClientCanEdit ? undefined : localClient,\n\t\t\tsynchronizeAtEnd,\n\t\t);\n\t\tperfCompressor = perfNetwork.getCompressorUnsafeNoProxy(localClient);\n\t\treturn perfNetwork;\n\t}\n\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: false,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): LocalCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: true,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): FinalCompressedId & SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId {\n\t\tconst log = network.getIdLog(client);\n\t\tfor (let i = log.length - 1; i > 0; i--) {\n\t\t\tconst { id, originatingClient } = log[i];\n\t\t\tif (\n\t\t\t\toriginatingClient === client &&\n\t\t\t\t((eagerFinal && isFinalId(id)) || (!eagerFinal && isLocalId(id)))\n\t\t\t) {\n\t\t\t\tassert(eagerFinal === isFinalId(id), \"Not local/final as requested.\");\n\t\t\t\treturn id;\n\t\t\t}\n\t\t}\n\t\tfail(\"no ID found in log\");\n\t}\n\n\tfunction benchmarkWithFlag(creator: (flag: boolean) => void): void {\n\t\tfor (const flag of [true, false]) {\n\t\t\tcreator(flag);\n\t\t}\n\t}\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `allocate local ID`,\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t},\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: \"take an ID creation range\",\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t\tperfCompressor!.takeNextCreationRange();\n\t\t},\n\t});\n\n\tfor (const clusterSize of [1, 10, 500, 1000]) {\n\t\tconst numIds = 7;\n\t\tconst session1 = \"8150a099-5302-4672-b5f3-7a4492b59418\" as SessionId;\n\t\tconst session2 = \"f2ded886-92da-4248-967b-eb96ee04cf51\" as SessionId;\n\t\tlet session: SessionId = session1;\n\t\tlet nextFirstFinalizedGenCount1 = 1;\n\t\tlet nextFirstFinalizedGenCount2 = 1;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `finalize a range of IDs (cluster size = ${clusterSize})`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(clusterSize, false, true);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\t// Create a range with as minimal overhead as possible, as we'd like for this code to not exist\n\t\t\t\t// in the timing loop at all (but benchmark forces us to do so)\n\t\t\t\tconst isFirstClient = session === session1;\n\t\t\t\tconst firstGenCount = isFirstClient\n\t\t\t\t\t? nextFirstFinalizedGenCount1\n\t\t\t\t\t: nextFirstFinalizedGenCount2;\n\t\t\t\tconst range: IdCreationRange = {\n\t\t\t\t\tsessionId: session,\n\t\t\t\t\tids: {\n\t\t\t\t\t\tfirstGenCount,\n\t\t\t\t\t\tcount: numIds,\n\t\t\t\t\t\trequestedClusterSize: initialClusterCapacity,\n\t\t\t\t\t\tlocalIdRanges: [], // no need to populate, as session is remote and compressor would ignore in production\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tperfCompressor!.finalizeCreationRange(range);\n\n\t\t\t\tconst lastGenCount = firstGenCount + numIds;\n\t\t\t\tif (isFirstClient) {\n\t\t\t\t\tnextFirstFinalizedGenCount1 = lastGenCount;\n\t\t\t\t} else {\n\t\t\t\t\tnextFirstFinalizedGenCount2 = lastGenCount;\n\t\t\t\t}\n\t\t\t\t// Alternate clients to sidestep optimization that packs them all into last cluster\n\t\t\t\tsession = isFirstClient ? session1 : session2;\n\t\t\t},\n\t\t});\n\t}\n\n\tbenchmarkWithFlag((isLocal) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a ${\n\t\t\t\tisLocal ? \"local\" : \"final\"\n\t\t\t} ID from a remote session to session space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst remoteSession = getIdMadeBy(remoteClient, false, network);\n\t\t\t\topSpaceId = (\n\t\t\t\t\tisLocal\n\t\t\t\t\t\t? remoteSession\n\t\t\t\t\t\t: network.getCompressor(remoteClient).normalizeToOpSpace(remoteSession)\n\t\t\t\t) as OpSpaceCompressedId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: OpSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID corresponding to a ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from op space to the local session`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst opId = perfCompressor.normalizeToOpSpace(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t\tassert(isFinalId(opId), \"Must be final\");\n\t\t\t\tid = opId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(id, perfCompressor.localSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((isLocalOriginator) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID from a ${\n\t\t\t\tisLocalOriginator ? \"local\" : \"remote\"\n\t\t\t} session to a small session space (common case)`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t// Ensure the local session has several different clusters\n\t\t\t\tfor (let clusterCount = 0; clusterCount < 5; clusterCount++) {\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tlocalClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-argument\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"],\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tremoteClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"] * 2,\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.deliverOperations(DestinationClient.All);\n\t\t\t\t}\n\t\t\t\tconst client = isLocalOriginator ? localClient : remoteClient;\n\t\t\t\tconst idFromSession = getIdMadeBy(client, true, network);\n\t\t\t\topSpaceId = network.getCompressor(client).normalizeToOpSpace(idFromSession);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet unackedLocalId!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize an unacked local ID from the local session to op space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, false);\n\t\t\t// Ensure no eager finals\n\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\tlocalClient,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\tnetwork.getCompressor(localClient)[\"nextRequestedClusterSize\"] * 2 + 1,\n\t\t\t);\n\t\t\tunackedLocalId = getIdMadeBy(localClient, false, network);\n\t\t\tassert(\n\t\t\t\tperfCompressor.normalizeToOpSpace(unackedLocalId) === (unackedLocalId as number),\n\t\t\t\t\"Local was acked.\",\n\t\t\t);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToOpSpace(unackedLocalId);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: SessionSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize an acked ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from the local session to op space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tid = getIdMadeBy(localClient, eagerFinal, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToOpSpace(id);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((local) => {\n\t\tlet finalIdToDecompress!: SessionSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `decompress a final ID from a ${\n\t\t\t\tlocal ? \"local\" : \"remote\"\n\t\t\t} client into a stable ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tfinalIdToDecompress = getIdMadeBy(local ? localClient : remoteClient, true, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.decompress(finalIdToDecompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet localIdToDecompress!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `decompress a local ID into a stable ID`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\tlocalIdToDecompress = getIdMadeBy(localClient, false, network);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.decompress(localIdToDecompress);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet stableToCompress!: StableId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `recompress a stable ID to a ${eagerFinal ? \"local\" : \"final\"} ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tstableToCompress = perfCompressor.decompress(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.recompress(stableToCompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `serialize an IdCompressor (${manySessions ? \"many sessions\" : \"many clusters\"})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.serialize(false);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tlet serialized!: SerializedIdCompressorWithNoSession;\n\t\tconst overrideRemoteSessionId = createSessionId();\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `deserialize an IdCompressor (${\n\t\t\t\tmanySessions ? \"many sessions\" : \"many clusters\"\n\t\t\t})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t\tserialized = perfCompressor.serialize(false);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tIdCompressor.deserialize({\n\t\t\t\t\tserialized,\n\t\t\t\t\tnewSessionId: overrideRemoteSessionId,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t});\n});\n"]}
|
|
1
|
+
{"version":3,"file":"idCompressor.perf.spec.js","sourceRoot":"","sources":["../../src/test/idCompressor.perf.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,6DAA6D;AAE7D,gFAA4D;AAC5D,sDAAkE;AAClE,kEAA6D;AAE7D,wDAAkD;AASlD,kDAAkD;AAElD,iFAQwC;AACxC,mDAMyB;AAEzB,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,MAAM,IAAI,GAAG,yBAAa,CAAC,WAAW,CAAC;IACvC,MAAM,WAAW,GAAG,qCAAM,CAAC,OAAO,CAAC;IACnC,MAAM,YAAY,GAAG,qCAAM,CAAC,OAAO,CAAC;IACpC,IAAI,cAA4B,CAAC;IAEjC,SAAS,gBAAgB,CACxB,WAAmB,EACnB,kBAA2B,EAC3B,gBAAyB;QAEzB,MAAM,WAAW,GAAG,IAAI,sDAAuB,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAA,4BAAI,EACrB,IAAI,EACJ,IAAA,8CAAe,EAAC;YACf,gBAAgB,EAAE,IAAI;YACtB,cAAc;YACd,yBAAyB,EAAE,GAAG;SAC9B,CAAC,CACF,CAAC;QACF,IAAA,iDAAkB,EACjB,SAAS,EACT,WAAW,EACX,IAAI,CAAC,CAAC,EACN,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAC5C,gBAAgB,CAChB,CAAC;QACF,cAAc,GAAG,WAAW,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC;IACpB,CAAC;IAiBD,SAAS,WAAW,CACnB,MAAc,EACd,UAAmB,EACnB,OAAgC;QAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,IACC,iBAAiB,KAAK,MAAM;gBAC5B,CAAC,CAAC,UAAU,IAAI,IAAA,yBAAS,EAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAA,yBAAS,EAAC,EAAE,CAAC,CAAC,CAAC,EAChE,CAAC;gBACF,IAAA,iBAAM,EAAC,UAAU,KAAK,IAAA,yBAAS,EAAC,EAAE,CAAC,EAAE,+BAA+B,CAAC,CAAC;gBACtE,OAAO,EAAE,CAAC;YACX,CAAC;QACF,CAAC;QACD,IAAA,oBAAI,EAAC,oBAAoB,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,iBAAiB,CAAC,OAAgC;QAC1D,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACF,CAAC;IAED,IAAA,qBAAS,EAAC;QACT,IAAI;QACJ,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,GAAG,EAAE;YACZ,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,WAAW,EAAE,GAAG,EAAE;YACjB,cAAe,CAAC,oBAAoB,EAAE,CAAC;QACxC,CAAC;KACD,CAAC,CAAC;IAEH,IAAA,qBAAS,EAAC;QACT,IAAI;QACJ,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,GAAG,EAAE;YACZ,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,WAAW,EAAE,GAAG,EAAE;YACjB,cAAe,CAAC,oBAAoB,EAAE,CAAC;YACvC,cAAe,CAAC,qBAAqB,EAAE,CAAC;QACzC,CAAC;KACD,CAAC,CAAC;IAEH,KAAK,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,CAAC,CAAC;QACjB,MAAM,QAAQ,GAAG,sCAAmD,CAAC;QACrE,MAAM,QAAQ,GAAG,sCAAmD,CAAC;QACrE,IAAI,OAAO,GAAc,QAAQ,CAAC;QAClC,IAAI,2BAA2B,GAAG,CAAC,CAAC;QACpC,IAAI,2BAA2B,GAAG,CAAC,CAAC;QACpC,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,2CAA2C,WAAW,GAAG;YAChE,MAAM,EAAE,GAAG,EAAE;gBACZ,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,+FAA+F;gBAC/F,+DAA+D;gBAC/D,MAAM,aAAa,GAAG,OAAO,KAAK,QAAQ,CAAC;gBAC3C,MAAM,aAAa,GAAG,aAAa;oBAClC,CAAC,CAAC,2BAA2B;oBAC7B,CAAC,CAAC,2BAA2B,CAAC;gBAC/B,MAAM,KAAK,GAAoB;oBAC9B,SAAS,EAAE,OAAO;oBAClB,GAAG,EAAE;wBACJ,aAAa;wBACb,KAAK,EAAE,MAAM;wBACb,oBAAoB,EAAE,sBAAsB;wBAC5C,aAAa,EAAE,EAAE,EAAE,sFAAsF;qBACzG;iBACD,CAAC;gBAEF,cAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAE7C,MAAM,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC;gBAC5C,IAAI,aAAa,EAAE,CAAC;oBACnB,2BAA2B,GAAG,YAAY,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACP,2BAA2B,GAAG,YAAY,CAAC;gBAC5C,CAAC;gBACD,mFAAmF;gBACnF,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC/C,CAAC;SACD,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,eAAe,GAAG,yCAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,SAA+B,CAAC;QACpC,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,eACN,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OACrB,4CAA4C;YAC5C,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrE,MAAM,aAAa,GAAG,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChE,SAAS,GAAG,CACX,OAAO;oBACN,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CACjD,CAAC;YAC1B,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACrE,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,UAAU,EAAE,EAAE;QAChC,IAAI,EAA4C,CAAC;QACjD,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,2CACN,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAC9B,wCAAwC;YACxC,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrE,MAAM,IAAI,GAAG,cAAc,CAAC,kBAAkB,CAC7C,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAC7C,CAAC;gBACF,IAAA,iBAAM,EAAC,IAAA,yBAAS,EAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;gBACzC,EAAE,GAAG,IAAI,CAAC;YACX,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,uBAAuB,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;YAC5E,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,iBAAiB,EAAE,EAAE;QACvC,MAAM,eAAe,GAAG,yCAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,SAA+B,CAAC;QACpC,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,+BACN,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAC/B,iDAAiD;YACjD,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACtE,0DAA0D;gBAC1D,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC;oBAC7D,OAAO,CAAC,kBAAkB,CACzB,WAAW;oBACX,2DAA2D;oBAC3D,cAAc,CAAC,0BAA0B,CAAC,CAC1C,CAAC;oBACF,OAAO,CAAC,kBAAkB,CACzB,YAAY;oBACZ,2DAA2D;oBAC3D,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAC9C,CAAC;oBACF,OAAO,CAAC,iBAAiB,CAAC,gDAAiB,CAAC,GAAG,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC9D,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACzD,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YAC7E,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACrE,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,cAAkC,CAAC;IACvC,IAAA,qBAAS,EAAC;QACT,IAAI;QACJ,KAAK,EAAE,kEAAkE;QACzE,MAAM,EAAE,GAAG,EAAE;YACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACtE,yBAAyB;YACzB,OAAO,CAAC,kBAAkB,CACzB,WAAW;YACX,2DAA2D;YAC3D,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,GAAG,CAAC,CACtE,CAAC;YACF,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAA,iBAAM,EACL,cAAc,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAM,cAAyB,EAChF,kBAAkB,CAClB,CAAC;QACH,CAAC;QACD,WAAW,EAAE,GAAG,EAAE;YACjB,cAAe,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACpD,CAAC;KACD,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,UAAU,EAAE,EAAE;QAChC,IAAI,EAA6B,CAAC;QAClC,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,sBACN,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAC9B,wCAAwC;YACxC,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrE,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,IAAI,mBAAkE,CAAC;QACvE,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,gCACN,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QACnB,0BAA0B;YAC1B,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrE,mBAAmB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACtF,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACjD,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,mBAAuC,CAAC;IAC5C,IAAA,qBAAS,EAAC;QACT,IAAI;QACJ,KAAK,EAAE,wCAAwC;QAC/C,MAAM,EAAE,GAAG,EAAE;YACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrE,mBAAmB,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QACD,WAAW,EAAE,GAAG,EAAE;YACjB,cAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC;KACD,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,UAAU,EAAE,EAAE;QAChC,IAAI,gBAA2B,CAAC;QAChC,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,+BAA+B,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK;YACzE,MAAM,EAAE,GAAG,EAAE;gBACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACrE,gBAAgB,GAAG,cAAc,CAAC,UAAU,CAC3C,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAC7C,CAAC;YACH,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;YAC9C,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,YAAY,EAAE,EAAE;QAClC,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,8BAA8B,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,GAAG;YACxF,MAAM,EAAE,GAAG,EAAE;gBACZ,IAAI,YAAY,EAAE,CAAC;oBAClB,cAAc,GAAG,IAAA,kDAAmB,EAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACP,gBAAgB,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvD,CAAC;YACF,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,cAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iBAAiB,CAAC,CAAC,YAAY,EAAE,EAAE;QAClC,IAAI,UAAgD,CAAC;QACrD,MAAM,uBAAuB,GAAG,IAAA,8BAAe,GAAE,CAAC;QAClD,IAAA,qBAAS,EAAC;YACT,IAAI;YACJ,KAAK,EAAE,gCACN,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAClC,GAAG;YACH,MAAM,EAAE,GAAG,EAAE;gBACZ,IAAI,YAAY,EAAE,CAAC;oBAClB,cAAc,GAAG,IAAA,kDAAmB,EAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACP,gBAAgB,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACvD,CAAC;gBACD,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBACjB,8BAAY,CAAC,WAAW,CAAC;oBACxB,UAAU;oBACV,YAAY,EAAE,uBAAuB;iBACrC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { take } from \"@fluid-private/stochastic-test-utils\";\nimport { BenchmarkType, benchmark } from \"@fluid-tools/benchmark\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { IdCompressor } from \"../idCompressor.js\";\nimport type {\n\tIdCreationRange,\n\tOpSpaceCompressedId,\n\tSerializedIdCompressorWithNoSession,\n\tSessionId,\n\tSessionSpaceCompressedId,\n\tStableId,\n} from \"../index.js\";\nimport { createSessionId } from \"../utilities.js\";\n\nimport {\n\tClient,\n\tDestinationClient,\n\tIdCompressorTestNetwork,\n\tbuildHugeCompressor,\n\tmakeOpGenerator,\n\tperformFuzzActions,\n\tsessionIds,\n} from \"./idCompressorTestUtilities.js\";\nimport {\n\ttype FinalCompressedId,\n\ttype LocalCompressedId,\n\tfail,\n\tisFinalId,\n\tisLocalId,\n} from \"./testCommon.js\";\n\nconst initialClusterCapacity = 512;\n\ndescribe(\"IdCompressor Perf\", () => {\n\tconst type = BenchmarkType.Measurement;\n\tconst localClient = Client.Client1;\n\tconst remoteClient = Client.Client2;\n\tlet perfCompressor: IdCompressor;\n\n\tfunction setupCompressors(\n\t\tclusterSize: number,\n\t\tlocalClientCanEdit: boolean,\n\t\tsynchronizeAtEnd: boolean,\n\t): IdCompressorTestNetwork {\n\t\tconst perfNetwork = new IdCompressorTestNetwork(clusterSize);\n\t\tconst maxClusterSize = clusterSize * 2;\n\t\tconst generator = take(\n\t\t\t1000,\n\t\t\tmakeOpGenerator({\n\t\t\t\tvalidateInterval: 2000,\n\t\t\t\tmaxClusterSize,\n\t\t\t\toutsideAllocationFraction: 0.9,\n\t\t\t}),\n\t\t);\n\t\tperformFuzzActions(\n\t\t\tgenerator,\n\t\t\tperfNetwork,\n\t\t\tMath.E,\n\t\t\tlocalClientCanEdit ? undefined : localClient,\n\t\t\tsynchronizeAtEnd,\n\t\t);\n\t\tperfCompressor = perfNetwork.getCompressorUnsafeNoProxy(localClient);\n\t\treturn perfNetwork;\n\t}\n\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: false,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): LocalCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: true,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): FinalCompressedId & SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId {\n\t\tconst log = network.getIdLog(client);\n\t\tfor (let i = log.length - 1; i > 0; i--) {\n\t\t\tconst { id, originatingClient } = log[i];\n\t\t\tif (\n\t\t\t\toriginatingClient === client &&\n\t\t\t\t((eagerFinal && isFinalId(id)) || (!eagerFinal && isLocalId(id)))\n\t\t\t) {\n\t\t\t\tassert(eagerFinal === isFinalId(id), \"Not local/final as requested.\");\n\t\t\t\treturn id;\n\t\t\t}\n\t\t}\n\t\tfail(\"no ID found in log\");\n\t}\n\n\tfunction benchmarkWithFlag(creator: (flag: boolean) => void): void {\n\t\tfor (const flag of [true, false]) {\n\t\t\tcreator(flag);\n\t\t}\n\t}\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `allocate local ID`,\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t},\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: \"take an ID creation range\",\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t\tperfCompressor!.takeNextCreationRange();\n\t\t},\n\t});\n\n\tfor (const clusterSize of [1, 10, 500, 1000]) {\n\t\tconst numIds = 7;\n\t\tconst session1 = \"8150a099-5302-4672-b5f3-7a4492b59418\" as SessionId;\n\t\tconst session2 = \"f2ded886-92da-4248-967b-eb96ee04cf51\" as SessionId;\n\t\tlet session: SessionId = session1;\n\t\tlet nextFirstFinalizedGenCount1 = 1;\n\t\tlet nextFirstFinalizedGenCount2 = 1;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `finalize a range of IDs (cluster size = ${clusterSize})`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(clusterSize, false, true);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\t// Create a range with as minimal overhead as possible, as we'd like for this code to not exist\n\t\t\t\t// in the timing loop at all (but benchmark forces us to do so)\n\t\t\t\tconst isFirstClient = session === session1;\n\t\t\t\tconst firstGenCount = isFirstClient\n\t\t\t\t\t? nextFirstFinalizedGenCount1\n\t\t\t\t\t: nextFirstFinalizedGenCount2;\n\t\t\t\tconst range: IdCreationRange = {\n\t\t\t\t\tsessionId: session,\n\t\t\t\t\tids: {\n\t\t\t\t\t\tfirstGenCount,\n\t\t\t\t\t\tcount: numIds,\n\t\t\t\t\t\trequestedClusterSize: initialClusterCapacity,\n\t\t\t\t\t\tlocalIdRanges: [], // no need to populate, as session is remote and compressor would ignore in production\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tperfCompressor!.finalizeCreationRange(range);\n\n\t\t\t\tconst lastGenCount = firstGenCount + numIds;\n\t\t\t\tif (isFirstClient) {\n\t\t\t\t\tnextFirstFinalizedGenCount1 = lastGenCount;\n\t\t\t\t} else {\n\t\t\t\t\tnextFirstFinalizedGenCount2 = lastGenCount;\n\t\t\t\t}\n\t\t\t\t// Alternate clients to sidestep optimization that packs them all into last cluster\n\t\t\t\tsession = isFirstClient ? session1 : session2;\n\t\t\t},\n\t\t});\n\t}\n\n\tbenchmarkWithFlag((isLocal) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a ${\n\t\t\t\tisLocal ? \"local\" : \"final\"\n\t\t\t} ID from a remote session to session space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst remoteSession = getIdMadeBy(remoteClient, false, network);\n\t\t\t\topSpaceId = (\n\t\t\t\t\tisLocal\n\t\t\t\t\t\t? remoteSession\n\t\t\t\t\t\t: network.getCompressor(remoteClient).normalizeToOpSpace(remoteSession)\n\t\t\t\t) as OpSpaceCompressedId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: OpSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID corresponding to a ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from op space to the local session`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst opId = perfCompressor.normalizeToOpSpace(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t\tassert(isFinalId(opId), \"Must be final\");\n\t\t\t\tid = opId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(id, perfCompressor.localSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((isLocalOriginator) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID from a ${\n\t\t\t\tisLocalOriginator ? \"local\" : \"remote\"\n\t\t\t} session to a small session space (common case)`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t// Ensure the local session has several different clusters\n\t\t\t\tfor (let clusterCount = 0; clusterCount < 5; clusterCount++) {\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tlocalClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"],\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tremoteClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"] * 2,\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.deliverOperations(DestinationClient.All);\n\t\t\t\t}\n\t\t\t\tconst client = isLocalOriginator ? localClient : remoteClient;\n\t\t\t\tconst idFromSession = getIdMadeBy(client, true, network);\n\t\t\t\topSpaceId = network.getCompressor(client).normalizeToOpSpace(idFromSession);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet unackedLocalId!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize an unacked local ID from the local session to op space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, false);\n\t\t\t// Ensure no eager finals\n\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\tlocalClient,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\tnetwork.getCompressor(localClient)[\"nextRequestedClusterSize\"] * 2 + 1,\n\t\t\t);\n\t\t\tunackedLocalId = getIdMadeBy(localClient, false, network);\n\t\t\tassert(\n\t\t\t\tperfCompressor.normalizeToOpSpace(unackedLocalId) === (unackedLocalId as number),\n\t\t\t\t\"Local was acked.\",\n\t\t\t);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToOpSpace(unackedLocalId);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: SessionSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize an acked ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from the local session to op space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tid = getIdMadeBy(localClient, eagerFinal, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToOpSpace(id);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((local) => {\n\t\tlet finalIdToDecompress!: SessionSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `decompress a final ID from a ${\n\t\t\t\tlocal ? \"local\" : \"remote\"\n\t\t\t} client into a stable ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tfinalIdToDecompress = getIdMadeBy(local ? localClient : remoteClient, true, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.decompress(finalIdToDecompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet localIdToDecompress!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `decompress a local ID into a stable ID`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\tlocalIdToDecompress = getIdMadeBy(localClient, false, network);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.decompress(localIdToDecompress);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet stableToCompress!: StableId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `recompress a stable ID to a ${eagerFinal ? \"local\" : \"final\"} ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tstableToCompress = perfCompressor.decompress(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.recompress(stableToCompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `serialize an IdCompressor (${manySessions ? \"many sessions\" : \"many clusters\"})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.serialize(false);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tlet serialized!: SerializedIdCompressorWithNoSession;\n\t\tconst overrideRemoteSessionId = createSessionId();\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `deserialize an IdCompressor (${\n\t\t\t\tmanySessions ? \"many sessions\" : \"many clusters\"\n\t\t\t})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t\tserialized = perfCompressor.serialize(false);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tIdCompressor.deserialize({\n\t\t\t\t\tserialized,\n\t\t\t\t\tnewSessionId: overrideRemoteSessionId,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t});\n});\n"]}
|
|
@@ -12,6 +12,5 @@ exports._dirname = void 0;
|
|
|
12
12
|
// - Export '__dirname' from a .cjs file in the same directory.
|
|
13
13
|
//
|
|
14
14
|
// Note that *.cjs files are always CommonJS, but can be imported from ESM.
|
|
15
|
-
// eslint-disable-next-line unicorn/prefer-module
|
|
16
15
|
exports._dirname = __dirname;
|
|
17
16
|
//# sourceMappingURL=dirname.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirname.cjs","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,WAAW;AACX,wCAAwC;AACxC,8CAA8C;AAC9C,YAAY;AACZ,iEAAiE;AACjE,EAAE;AACF,2EAA2E;
|
|
1
|
+
{"version":3,"file":"dirname.cjs","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,WAAW;AACX,wCAAwC;AACxC,8CAA8C;AAC9C,YAAY;AACZ,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC9D,QAAA,QAAQ,GAAG,SAAS,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Problem:\n// - `__dirname` is not defined in ESM\n// - `import.meta.url` is not defined in CJS\n// Solution:\n// - Export '__dirname' from a .cjs file in the same directory.\n//\n// Note that *.cjs files are always CommonJS, but can be imported from ESM.\nexport const _dirname = __dirname;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirname.d.cts","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"dirname.d.cts","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,QAAQ,QAAY,CAAC"}
|
package/lib/packageVersion.d.ts
CHANGED
|
@@ -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/id-compressor";
|
|
8
|
-
export declare const pkgVersion = "2.90.0
|
|
8
|
+
export declare const pkgVersion = "2.90.0";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,kCAAkC,CAAC;AACvD,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,kCAAkC,CAAC;AACvD,eAAO,MAAM,UAAU,WAAW,CAAC"}
|
package/lib/packageVersion.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,+BAA+B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,+BAA+B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,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/id-compressor\";\nexport const pkgVersion = \"2.90.0\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idCompressor.perf.spec.js","sourceRoot":"","sources":["../../src/test/idCompressor.perf.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { take } from \"@fluid-private/stochastic-test-utils\";\nimport { BenchmarkType, benchmark } from \"@fluid-tools/benchmark\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { IdCompressor } from \"../idCompressor.js\";\nimport type {\n\tIdCreationRange,\n\tOpSpaceCompressedId,\n\tSerializedIdCompressorWithNoSession,\n\tSessionId,\n\tSessionSpaceCompressedId,\n\tStableId,\n} from \"../index.js\";\nimport { createSessionId } from \"../utilities.js\";\n\nimport {\n\tClient,\n\tDestinationClient,\n\tIdCompressorTestNetwork,\n\tbuildHugeCompressor,\n\tmakeOpGenerator,\n\tperformFuzzActions,\n\tsessionIds,\n} from \"./idCompressorTestUtilities.js\";\nimport {\n\ttype FinalCompressedId,\n\ttype LocalCompressedId,\n\tfail,\n\tisFinalId,\n\tisLocalId,\n} from \"./testCommon.js\";\n\nconst initialClusterCapacity = 512;\n\ndescribe(\"IdCompressor Perf\", () => {\n\tconst type = BenchmarkType.Measurement;\n\tconst localClient = Client.Client1;\n\tconst remoteClient = Client.Client2;\n\tlet perfCompressor: IdCompressor;\n\n\tfunction setupCompressors(\n\t\tclusterSize: number,\n\t\tlocalClientCanEdit: boolean,\n\t\tsynchronizeAtEnd: boolean,\n\t): IdCompressorTestNetwork {\n\t\tconst perfNetwork = new IdCompressorTestNetwork(clusterSize);\n\t\tconst maxClusterSize = clusterSize * 2;\n\t\tconst generator = take(\n\t\t\t1000,\n\t\t\tmakeOpGenerator({\n\t\t\t\tvalidateInterval: 2000,\n\t\t\t\tmaxClusterSize,\n\t\t\t\toutsideAllocationFraction: 0.9,\n\t\t\t}),\n\t\t);\n\t\tperformFuzzActions(\n\t\t\tgenerator,\n\t\t\tperfNetwork,\n\t\t\tMath.E,\n\t\t\tlocalClientCanEdit ? undefined : localClient,\n\t\t\tsynchronizeAtEnd,\n\t\t);\n\t\tperfCompressor = perfNetwork.getCompressorUnsafeNoProxy(localClient);\n\t\treturn perfNetwork;\n\t}\n\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: false,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): LocalCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: true,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): FinalCompressedId & SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId {\n\t\tconst log = network.getIdLog(client);\n\t\tfor (let i = log.length - 1; i > 0; i--) {\n\t\t\tconst { id, originatingClient } = log[i];\n\t\t\tif (\n\t\t\t\toriginatingClient === client &&\n\t\t\t\t((eagerFinal && isFinalId(id)) || (!eagerFinal && isLocalId(id)))\n\t\t\t) {\n\t\t\t\tassert(eagerFinal === isFinalId(id), \"Not local/final as requested.\");\n\t\t\t\treturn id;\n\t\t\t}\n\t\t}\n\t\tfail(\"no ID found in log\");\n\t}\n\n\tfunction benchmarkWithFlag(creator: (flag: boolean) => void): void {\n\t\tfor (const flag of [true, false]) {\n\t\t\tcreator(flag);\n\t\t}\n\t}\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `allocate local ID`,\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t},\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: \"take an ID creation range\",\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t\tperfCompressor!.takeNextCreationRange();\n\t\t},\n\t});\n\n\tfor (const clusterSize of [1, 10, 500, 1000]) {\n\t\tconst numIds = 7;\n\t\tconst session1 = \"8150a099-5302-4672-b5f3-7a4492b59418\" as SessionId;\n\t\tconst session2 = \"f2ded886-92da-4248-967b-eb96ee04cf51\" as SessionId;\n\t\tlet session: SessionId = session1;\n\t\tlet nextFirstFinalizedGenCount1 = 1;\n\t\tlet nextFirstFinalizedGenCount2 = 1;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `finalize a range of IDs (cluster size = ${clusterSize})`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(clusterSize, false, true);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\t// Create a range with as minimal overhead as possible, as we'd like for this code to not exist\n\t\t\t\t// in the timing loop at all (but benchmark forces us to do so)\n\t\t\t\tconst isFirstClient = session === session1;\n\t\t\t\tconst firstGenCount = isFirstClient\n\t\t\t\t\t? nextFirstFinalizedGenCount1\n\t\t\t\t\t: nextFirstFinalizedGenCount2;\n\t\t\t\tconst range: IdCreationRange = {\n\t\t\t\t\tsessionId: session,\n\t\t\t\t\tids: {\n\t\t\t\t\t\tfirstGenCount,\n\t\t\t\t\t\tcount: numIds,\n\t\t\t\t\t\trequestedClusterSize: initialClusterCapacity,\n\t\t\t\t\t\tlocalIdRanges: [], // no need to populate, as session is remote and compressor would ignore in production\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tperfCompressor!.finalizeCreationRange(range);\n\n\t\t\t\tconst lastGenCount = firstGenCount + numIds;\n\t\t\t\tif (isFirstClient) {\n\t\t\t\t\tnextFirstFinalizedGenCount1 = lastGenCount;\n\t\t\t\t} else {\n\t\t\t\t\tnextFirstFinalizedGenCount2 = lastGenCount;\n\t\t\t\t}\n\t\t\t\t// Alternate clients to sidestep optimization that packs them all into last cluster\n\t\t\t\tsession = isFirstClient ? session1 : session2;\n\t\t\t},\n\t\t});\n\t}\n\n\tbenchmarkWithFlag((isLocal) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a ${\n\t\t\t\tisLocal ? \"local\" : \"final\"\n\t\t\t} ID from a remote session to session space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst remoteSession = getIdMadeBy(remoteClient, false, network);\n\t\t\t\topSpaceId = (\n\t\t\t\t\tisLocal\n\t\t\t\t\t\t? remoteSession\n\t\t\t\t\t\t: network.getCompressor(remoteClient).normalizeToOpSpace(remoteSession)\n\t\t\t\t) as OpSpaceCompressedId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: OpSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID corresponding to a ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from op space to the local session`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst opId = perfCompressor.normalizeToOpSpace(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t\tassert(isFinalId(opId), \"Must be final\");\n\t\t\t\tid = opId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(id, perfCompressor.localSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((isLocalOriginator) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID from a ${\n\t\t\t\tisLocalOriginator ? \"local\" : \"remote\"\n\t\t\t} session to a small session space (common case)`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t// Ensure the local session has several different clusters\n\t\t\t\tfor (let clusterCount = 0; clusterCount < 5; clusterCount++) {\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tlocalClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-argument\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"],\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tremoteClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"] * 2,\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.deliverOperations(DestinationClient.All);\n\t\t\t\t}\n\t\t\t\tconst client = isLocalOriginator ? localClient : remoteClient;\n\t\t\t\tconst idFromSession = getIdMadeBy(client, true, network);\n\t\t\t\topSpaceId = network.getCompressor(client).normalizeToOpSpace(idFromSession);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet unackedLocalId!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize an unacked local ID from the local session to op space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, false);\n\t\t\t// Ensure no eager finals\n\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\tlocalClient,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\tnetwork.getCompressor(localClient)[\"nextRequestedClusterSize\"] * 2 + 1,\n\t\t\t);\n\t\t\tunackedLocalId = getIdMadeBy(localClient, false, network);\n\t\t\tassert(\n\t\t\t\tperfCompressor.normalizeToOpSpace(unackedLocalId) === (unackedLocalId as number),\n\t\t\t\t\"Local was acked.\",\n\t\t\t);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToOpSpace(unackedLocalId);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: SessionSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize an acked ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from the local session to op space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tid = getIdMadeBy(localClient, eagerFinal, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToOpSpace(id);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((local) => {\n\t\tlet finalIdToDecompress!: SessionSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `decompress a final ID from a ${\n\t\t\t\tlocal ? \"local\" : \"remote\"\n\t\t\t} client into a stable ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tfinalIdToDecompress = getIdMadeBy(local ? localClient : remoteClient, true, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.decompress(finalIdToDecompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet localIdToDecompress!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `decompress a local ID into a stable ID`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\tlocalIdToDecompress = getIdMadeBy(localClient, false, network);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.decompress(localIdToDecompress);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet stableToCompress!: StableId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `recompress a stable ID to a ${eagerFinal ? \"local\" : \"final\"} ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tstableToCompress = perfCompressor.decompress(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.recompress(stableToCompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `serialize an IdCompressor (${manySessions ? \"many sessions\" : \"many clusters\"})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.serialize(false);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tlet serialized!: SerializedIdCompressorWithNoSession;\n\t\tconst overrideRemoteSessionId = createSessionId();\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `deserialize an IdCompressor (${\n\t\t\t\tmanySessions ? \"many sessions\" : \"many clusters\"\n\t\t\t})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t\tserialized = perfCompressor.serialize(false);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tIdCompressor.deserialize({\n\t\t\t\t\tserialized,\n\t\t\t\t\tnewSessionId: overrideRemoteSessionId,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t});\n});\n"]}
|
|
1
|
+
{"version":3,"file":"idCompressor.perf.spec.js","sourceRoot":"","sources":["../../src/test/idCompressor.perf.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { take } from \"@fluid-private/stochastic-test-utils\";\nimport { BenchmarkType, benchmark } from \"@fluid-tools/benchmark\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport { IdCompressor } from \"../idCompressor.js\";\nimport type {\n\tIdCreationRange,\n\tOpSpaceCompressedId,\n\tSerializedIdCompressorWithNoSession,\n\tSessionId,\n\tSessionSpaceCompressedId,\n\tStableId,\n} from \"../index.js\";\nimport { createSessionId } from \"../utilities.js\";\n\nimport {\n\tClient,\n\tDestinationClient,\n\tIdCompressorTestNetwork,\n\tbuildHugeCompressor,\n\tmakeOpGenerator,\n\tperformFuzzActions,\n\tsessionIds,\n} from \"./idCompressorTestUtilities.js\";\nimport {\n\ttype FinalCompressedId,\n\ttype LocalCompressedId,\n\tfail,\n\tisFinalId,\n\tisLocalId,\n} from \"./testCommon.js\";\n\nconst initialClusterCapacity = 512;\n\ndescribe(\"IdCompressor Perf\", () => {\n\tconst type = BenchmarkType.Measurement;\n\tconst localClient = Client.Client1;\n\tconst remoteClient = Client.Client2;\n\tlet perfCompressor: IdCompressor;\n\n\tfunction setupCompressors(\n\t\tclusterSize: number,\n\t\tlocalClientCanEdit: boolean,\n\t\tsynchronizeAtEnd: boolean,\n\t): IdCompressorTestNetwork {\n\t\tconst perfNetwork = new IdCompressorTestNetwork(clusterSize);\n\t\tconst maxClusterSize = clusterSize * 2;\n\t\tconst generator = take(\n\t\t\t1000,\n\t\t\tmakeOpGenerator({\n\t\t\t\tvalidateInterval: 2000,\n\t\t\t\tmaxClusterSize,\n\t\t\t\toutsideAllocationFraction: 0.9,\n\t\t\t}),\n\t\t);\n\t\tperformFuzzActions(\n\t\t\tgenerator,\n\t\t\tperfNetwork,\n\t\t\tMath.E,\n\t\t\tlocalClientCanEdit ? undefined : localClient,\n\t\t\tsynchronizeAtEnd,\n\t\t);\n\t\tperfCompressor = perfNetwork.getCompressorUnsafeNoProxy(localClient);\n\t\treturn perfNetwork;\n\t}\n\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: false,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): LocalCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: true,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): FinalCompressedId & SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId;\n\tfunction getIdMadeBy(\n\t\tclient: Client,\n\t\teagerFinal: boolean,\n\t\tnetwork: IdCompressorTestNetwork,\n\t): SessionSpaceCompressedId {\n\t\tconst log = network.getIdLog(client);\n\t\tfor (let i = log.length - 1; i > 0; i--) {\n\t\t\tconst { id, originatingClient } = log[i];\n\t\t\tif (\n\t\t\t\toriginatingClient === client &&\n\t\t\t\t((eagerFinal && isFinalId(id)) || (!eagerFinal && isLocalId(id)))\n\t\t\t) {\n\t\t\t\tassert(eagerFinal === isFinalId(id), \"Not local/final as requested.\");\n\t\t\t\treturn id;\n\t\t\t}\n\t\t}\n\t\tfail(\"no ID found in log\");\n\t}\n\n\tfunction benchmarkWithFlag(creator: (flag: boolean) => void): void {\n\t\tfor (const flag of [true, false]) {\n\t\t\tcreator(flag);\n\t\t}\n\t}\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `allocate local ID`,\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t},\n\t});\n\n\tbenchmark({\n\t\ttype,\n\t\ttitle: \"take an ID creation range\",\n\t\tbefore: () => {\n\t\t\tsetupCompressors(initialClusterCapacity, true, true);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.generateCompressedId();\n\t\t\tperfCompressor!.takeNextCreationRange();\n\t\t},\n\t});\n\n\tfor (const clusterSize of [1, 10, 500, 1000]) {\n\t\tconst numIds = 7;\n\t\tconst session1 = \"8150a099-5302-4672-b5f3-7a4492b59418\" as SessionId;\n\t\tconst session2 = \"f2ded886-92da-4248-967b-eb96ee04cf51\" as SessionId;\n\t\tlet session: SessionId = session1;\n\t\tlet nextFirstFinalizedGenCount1 = 1;\n\t\tlet nextFirstFinalizedGenCount2 = 1;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `finalize a range of IDs (cluster size = ${clusterSize})`,\n\t\t\tbefore: () => {\n\t\t\t\tsetupCompressors(clusterSize, false, true);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\t// Create a range with as minimal overhead as possible, as we'd like for this code to not exist\n\t\t\t\t// in the timing loop at all (but benchmark forces us to do so)\n\t\t\t\tconst isFirstClient = session === session1;\n\t\t\t\tconst firstGenCount = isFirstClient\n\t\t\t\t\t? nextFirstFinalizedGenCount1\n\t\t\t\t\t: nextFirstFinalizedGenCount2;\n\t\t\t\tconst range: IdCreationRange = {\n\t\t\t\t\tsessionId: session,\n\t\t\t\t\tids: {\n\t\t\t\t\t\tfirstGenCount,\n\t\t\t\t\t\tcount: numIds,\n\t\t\t\t\t\trequestedClusterSize: initialClusterCapacity,\n\t\t\t\t\t\tlocalIdRanges: [], // no need to populate, as session is remote and compressor would ignore in production\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tperfCompressor!.finalizeCreationRange(range);\n\n\t\t\t\tconst lastGenCount = firstGenCount + numIds;\n\t\t\t\tif (isFirstClient) {\n\t\t\t\t\tnextFirstFinalizedGenCount1 = lastGenCount;\n\t\t\t\t} else {\n\t\t\t\t\tnextFirstFinalizedGenCount2 = lastGenCount;\n\t\t\t\t}\n\t\t\t\t// Alternate clients to sidestep optimization that packs them all into last cluster\n\t\t\t\tsession = isFirstClient ? session1 : session2;\n\t\t\t},\n\t\t});\n\t}\n\n\tbenchmarkWithFlag((isLocal) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a ${\n\t\t\t\tisLocal ? \"local\" : \"final\"\n\t\t\t} ID from a remote session to session space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst remoteSession = getIdMadeBy(remoteClient, false, network);\n\t\t\t\topSpaceId = (\n\t\t\t\t\tisLocal\n\t\t\t\t\t\t? remoteSession\n\t\t\t\t\t\t: network.getCompressor(remoteClient).normalizeToOpSpace(remoteSession)\n\t\t\t\t) as OpSpaceCompressedId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: OpSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID corresponding to a ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from op space to the local session`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tconst opId = perfCompressor.normalizeToOpSpace(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t\tassert(isFinalId(opId), \"Must be final\");\n\t\t\t\tid = opId;\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(id, perfCompressor.localSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((isLocalOriginator) => {\n\t\tconst remoteSessionId = sessionIds.get(remoteClient);\n\t\tlet opSpaceId!: OpSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize a final ID from a ${\n\t\t\t\tisLocalOriginator ? \"local\" : \"remote\"\n\t\t\t} session to a small session space (common case)`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t// Ensure the local session has several different clusters\n\t\t\t\tfor (let clusterCount = 0; clusterCount < 5; clusterCount++) {\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tlocalClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"],\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\t\t\tremoteClient,\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\t\t\tperfCompressor[\"nextRequestedClusterSize\"] * 2,\n\t\t\t\t\t);\n\t\t\t\t\tnetwork.deliverOperations(DestinationClient.All);\n\t\t\t\t}\n\t\t\t\tconst client = isLocalOriginator ? localClient : remoteClient;\n\t\t\t\tconst idFromSession = getIdMadeBy(client, true, network);\n\t\t\t\topSpaceId = network.getCompressor(client).normalizeToOpSpace(idFromSession);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToSessionSpace(opSpaceId, remoteSessionId);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet unackedLocalId!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `normalize an unacked local ID from the local session to op space`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, false);\n\t\t\t// Ensure no eager finals\n\t\t\tnetwork.allocateAndSendIds(\n\t\t\t\tlocalClient,\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/dot-notation\n\t\t\t\tnetwork.getCompressor(localClient)[\"nextRequestedClusterSize\"] * 2 + 1,\n\t\t\t);\n\t\t\tunackedLocalId = getIdMadeBy(localClient, false, network);\n\t\t\tassert(\n\t\t\t\tperfCompressor.normalizeToOpSpace(unackedLocalId) === (unackedLocalId as number),\n\t\t\t\t\"Local was acked.\",\n\t\t\t);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.normalizeToOpSpace(unackedLocalId);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet id!: SessionSpaceCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `normalize an acked ${\n\t\t\t\teagerFinal ? \"eager final\" : \"local\"\n\t\t\t} ID from the local session to op space`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tid = getIdMadeBy(localClient, eagerFinal, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.normalizeToOpSpace(id);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((local) => {\n\t\tlet finalIdToDecompress!: SessionSpaceCompressedId & FinalCompressedId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `decompress a final ID from a ${\n\t\t\t\tlocal ? \"local\" : \"remote\"\n\t\t\t} client into a stable ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tfinalIdToDecompress = getIdMadeBy(local ? localClient : remoteClient, true, network);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.decompress(finalIdToDecompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tlet localIdToDecompress!: LocalCompressedId;\n\tbenchmark({\n\t\ttype,\n\t\ttitle: `decompress a local ID into a stable ID`,\n\t\tbefore: () => {\n\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\tlocalIdToDecompress = getIdMadeBy(localClient, false, network);\n\t\t},\n\t\tbenchmarkFn: () => {\n\t\t\tperfCompressor!.decompress(localIdToDecompress);\n\t\t},\n\t});\n\n\tbenchmarkWithFlag((eagerFinal) => {\n\t\tlet stableToCompress!: StableId;\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `recompress a stable ID to a ${eagerFinal ? \"local\" : \"final\"} ID`,\n\t\t\tbefore: () => {\n\t\t\t\tconst network = setupCompressors(initialClusterCapacity, true, true);\n\t\t\t\tstableToCompress = perfCompressor.decompress(\n\t\t\t\t\tgetIdMadeBy(localClient, eagerFinal, network),\n\t\t\t\t);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.recompress(stableToCompress);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `serialize an IdCompressor (${manySessions ? \"many sessions\" : \"many clusters\"})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tperfCompressor!.serialize(false);\n\t\t\t},\n\t\t});\n\t});\n\n\tbenchmarkWithFlag((manySessions) => {\n\t\tlet serialized!: SerializedIdCompressorWithNoSession;\n\t\tconst overrideRemoteSessionId = createSessionId();\n\t\tbenchmark({\n\t\t\ttype,\n\t\t\ttitle: `deserialize an IdCompressor (${\n\t\t\t\tmanySessions ? \"many sessions\" : \"many clusters\"\n\t\t\t})`,\n\t\t\tbefore: () => {\n\t\t\t\tif (manySessions) {\n\t\t\t\t\tperfCompressor = buildHugeCompressor(undefined, initialClusterCapacity);\n\t\t\t\t} else {\n\t\t\t\t\tsetupCompressors(initialClusterCapacity, false, true);\n\t\t\t\t}\n\t\t\t\tserialized = perfCompressor.serialize(false);\n\t\t\t},\n\t\t\tbenchmarkFn: () => {\n\t\t\t\tIdCompressor.deserialize({\n\t\t\t\t\tserialized,\n\t\t\t\t\tnewSessionId: overrideRemoteSessionId,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t});\n});\n"]}
|
|
@@ -12,6 +12,5 @@ exports._dirname = void 0;
|
|
|
12
12
|
// - Export '__dirname' from a .cjs file in the same directory.
|
|
13
13
|
//
|
|
14
14
|
// Note that *.cjs files are always CommonJS, but can be imported from ESM.
|
|
15
|
-
// eslint-disable-next-line unicorn/prefer-module
|
|
16
15
|
exports._dirname = __dirname;
|
|
17
16
|
//# sourceMappingURL=dirname.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirname.cjs","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,WAAW;AACX,wCAAwC;AACxC,8CAA8C;AAC9C,YAAY;AACZ,iEAAiE;AACjE,EAAE;AACF,2EAA2E;
|
|
1
|
+
{"version":3,"file":"dirname.cjs","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,WAAW;AACX,wCAAwC;AACxC,8CAA8C;AAC9C,YAAY;AACZ,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC9D,QAAA,QAAQ,GAAG,SAAS,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Problem:\n// - `__dirname` is not defined in ESM\n// - `import.meta.url` is not defined in CJS\n// Solution:\n// - Export '__dirname' from a .cjs file in the same directory.\n//\n// Note that *.cjs files are always CommonJS, but can be imported from ESM.\nexport const _dirname = __dirname;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dirname.d.cts","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"dirname.d.cts","sourceRoot":"","sources":["../../../src/test/snapshots/dirname.cts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,eAAO,MAAM,QAAQ,QAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/id-compressor",
|
|
3
|
-
"version": "2.90.0
|
|
3
|
+
"version": "2.90.0",
|
|
4
4
|
"description": "ID compressor",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -81,24 +81,24 @@
|
|
|
81
81
|
"temp-directory": "nyc/.nyc_output"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@fluid-internal/client-utils": "2.90.0
|
|
85
|
-
"@fluidframework/core-interfaces": "2.90.0
|
|
86
|
-
"@fluidframework/core-utils": "2.90.0
|
|
87
|
-
"@fluidframework/telemetry-utils": "2.90.0
|
|
84
|
+
"@fluid-internal/client-utils": "~2.90.0",
|
|
85
|
+
"@fluidframework/core-interfaces": "~2.90.0",
|
|
86
|
+
"@fluidframework/core-utils": "~2.90.0",
|
|
87
|
+
"@fluidframework/telemetry-utils": "~2.90.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": "~1.9.3",
|
|
94
|
-
"@fluid-internal/mocha-test-setup": "2.90.0
|
|
95
|
-
"@fluid-private/stochastic-test-utils": "2.90.0
|
|
94
|
+
"@fluid-internal/mocha-test-setup": "~2.90.0",
|
|
95
|
+
"@fluid-private/stochastic-test-utils": "~2.90.0",
|
|
96
96
|
"@fluid-tools/benchmark": "^0.52.0",
|
|
97
97
|
"@fluid-tools/build-cli": "^0.63.0",
|
|
98
98
|
"@fluidframework/build-common": "^2.0.3",
|
|
99
99
|
"@fluidframework/build-tools": "^0.63.0",
|
|
100
|
-
"@fluidframework/eslint-config-fluid": "2.90.0
|
|
101
|
-
"@fluidframework/id-compressor-previous": "npm:@fluidframework/id-compressor@2.
|
|
100
|
+
"@fluidframework/eslint-config-fluid": "~2.90.0",
|
|
101
|
+
"@fluidframework/id-compressor-previous": "npm:@fluidframework/id-compressor@2.83.0",
|
|
102
102
|
"@microsoft/api-extractor": "7.52.11",
|
|
103
103
|
"@types/mocha": "^10.0.10",
|
|
104
104
|
"@types/node": "~20.19.30",
|
|
@@ -108,9 +108,9 @@
|
|
|
108
108
|
"cross-env": "^10.1.0",
|
|
109
109
|
"eslint": "~9.39.1",
|
|
110
110
|
"jiti": "^2.6.1",
|
|
111
|
-
"mocha": "^
|
|
111
|
+
"mocha": "^11.7.5",
|
|
112
112
|
"mocha-multi-reporters": "^1.5.1",
|
|
113
|
-
"rimraf": "^6.1.
|
|
113
|
+
"rimraf": "^6.1.3",
|
|
114
114
|
"typescript": "~5.4.5"
|
|
115
115
|
},
|
|
116
116
|
"typeValidation": {
|
package/src/packageVersion.ts
CHANGED