@fluid-experimental/tree 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.
package/src/SharedTree.ts CHANGED
@@ -26,14 +26,16 @@ import {
26
26
  SharedObject,
27
27
  createSingleBlobSummary,
28
28
  } from '@fluidframework/shared-object-base/internal';
29
+ import type { TelemetryLoggerExt } from '@fluidframework/telemetry-utils/internal';
29
30
  import {
30
31
  IEventSampler,
31
32
  ITelemetryLoggerPropertyBags,
32
- ITelemetryLoggerExt,
33
33
  PerformanceEvent,
34
34
  createChildLogger,
35
35
  createSampledLogger,
36
36
  } from '@fluidframework/telemetry-utils/internal';
37
+ // eslint-disable-next-line import-x/no-internal-modules -- Needed to avoid specialized /internal ITelemetryLoggerExt
38
+ import type { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils/legacy';
37
39
 
38
40
  import { BuildNode, BuildTreeNode, Change, ChangeType } from './ChangeTypes.js';
39
41
  import { RestOrArray, copyPropertyIfDefined, fail, unwrapRestOrArray } from './Common.js';
@@ -488,6 +490,13 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
488
490
  * logger for SharedTree events.
489
491
  */
490
492
  public readonly logger: ITelemetryLoggerExt;
493
+ /**
494
+ * Internal and only viable logger for SharedTree events.
495
+ * @privateRemarks
496
+ * `logger` is public and remains typed for external use with mostly deprecated methods.
497
+ * Internally, only loggerInternal should be used and it provides the full set of logging methods.
498
+ */
499
+ private readonly loggerInternal: TelemetryLoggerExt & ITelemetryLoggerExt;
491
500
  private readonly sequencedEditAppliedLogger: ITelemetryLoggerExt;
492
501
 
493
502
  private readonly encoder_0_0_2: SharedTreeEncoder_0_0_2;
@@ -552,11 +561,12 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
552
561
  const historyPolicy = this.getHistoryPolicy(options);
553
562
  this.summarizeHistory = historyPolicy.summarizeHistory;
554
563
 
555
- this.logger = createChildLogger({
564
+ this.loggerInternal = createChildLogger({
556
565
  logger: runtime.logger,
557
566
  namespace: 'SharedTree',
558
567
  properties: sharedTreeTelemetryProperties,
559
568
  });
569
+ this.logger = this.loggerInternal;
560
570
  this.sequencedEditAppliedLogger = createChildLogger({
561
571
  logger: this.logger,
562
572
  namespace: 'SequencedEditApplied',
@@ -577,8 +587,8 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
577
587
  },
578
588
  };
579
589
  })();
580
- const idCompressorLoger = createSampledLogger(this.logger, idCompressorEventSampler);
581
- this.idCompressor = new IdCompressor(createSessionId(), reservedIdCount, attributionId, idCompressorLoger);
590
+ const idCompressorLogger = createSampledLogger(this.loggerInternal, idCompressorEventSampler);
591
+ this.idCompressor = new IdCompressor(createSessionId(), reservedIdCount, attributionId, idCompressorLogger);
582
592
  this.editLogSize = options.inMemoryHistorySize;
583
593
  this.editEvictionFrequency = options.inMemoryHistorySize;
584
594
  const { editLog, cachingLogViewer } = this.initializeNewEditLogFromSummary(
@@ -814,7 +824,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
814
824
  fail('Unknown version');
815
825
  }
816
826
  } catch (error) {
817
- this.logger?.sendErrorEvent({
827
+ this.loggerInternal?.sendErrorEvent({
818
828
  eventName: 'UnsupportedSummaryWriteFormat',
819
829
  formatVersion: this.writeFormat,
820
830
  });
@@ -830,7 +840,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
830
840
 
831
841
  if (this.deltaManager.readOnlyInfo.readonly !== true && isUpdateRequired(loadedSummaryVersion, this.writeFormat)) {
832
842
  this.submitOp({ type: SharedTreeOpType.Update, version: this.writeFormat });
833
- this.logger.sendTelemetryEvent({
843
+ this.loggerInternal.sendTelemetryEvent({
834
844
  eventName: 'RequestVersionUpdate',
835
845
  versionFrom: loadedSummaryVersion,
836
846
  versionTo: this.writeFormat,
@@ -873,7 +883,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
873
883
  this.interner.getOrCreateInternedId(initialTree.definition);
874
884
  if (compareSummaryFormatVersions(loadedSummaryVersion, WriteFormat.v0_1_1) < 0) {
875
885
  const { editIds, editChunks } = editHistory;
876
- this.logger.sendTelemetryEvent({
886
+ this.loggerInternal.sendTelemetryEvent({
877
887
  eventName: 'SummaryConversion',
878
888
  formatVersion: WriteFormat.v0_1_1,
879
889
  historySize: editIds.length,
@@ -922,7 +932,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
922
932
  // Use previously registered EditAddedHandlers if there is an existing EditLog.
923
933
  const editLog = new EditLog(
924
934
  editHistory,
925
- this.logger,
935
+ this.loggerInternal,
926
936
  this.editLog?.editAddedHandlers,
927
937
  this.editLogSize,
928
938
  this.editEvictionFrequency
@@ -1021,7 +1031,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
1021
1031
  if (sameVersion) {
1022
1032
  if (type === SharedTreeOpType.Handle) {
1023
1033
  // Edit virtualization is no longer supported, log the event and ignore the op.
1024
- this.logger.sendErrorEvent({ eventName: 'UnexpectedHistoryChunk' });
1034
+ this.loggerInternal.sendErrorEvent({ eventName: 'UnexpectedHistoryChunk' });
1025
1035
  } else if (type === SharedTreeOpType.Edit) {
1026
1036
  if (op.version === WriteFormat.v0_1_1) {
1027
1037
  this.idCompressor.finalizeCreationRange(op.idRange);
@@ -1038,7 +1048,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
1038
1048
  // An op version newer than our current version should not be received. If this happens, either an
1039
1049
  // incorrect op version has been written or an update op was skipped.
1040
1050
  const error = 'Newer op version received by a client that has yet to be updated.';
1041
- this.logger.sendErrorEvent(
1051
+ this.loggerInternal.sendErrorEvent(
1042
1052
  {
1043
1053
  eventName: 'UnexpectedNewerOpVersion',
1044
1054
  },
@@ -1105,7 +1115,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
1105
1115
  private processVersionUpdate(version: WriteFormat): void {
1106
1116
  if (isUpdateRequired(this.writeFormat, version)) {
1107
1117
  PerformanceEvent.timedExec(
1108
- this.logger,
1118
+ this.loggerInternal,
1109
1119
  { eventName: 'VersionUpdate', version },
1110
1120
  () => {
1111
1121
  if (compareSummaryFormatVersions(version, WriteFormat.v0_1_1) >= 0) {
@@ -1136,7 +1146,12 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
1136
1146
  this.interner = new MutableStringInterner([initialTree.definition]);
1137
1147
  const oldIdCompressor = this.idCompressor;
1138
1148
  // Create the IdCompressor that will be used after the upgrade
1139
- const newIdCompressor = new IdCompressor(createSessionId(), reservedIdCount, this.attributionId, this.logger);
1149
+ const newIdCompressor = new IdCompressor(
1150
+ createSessionId(),
1151
+ reservedIdCount,
1152
+ this.attributionId,
1153
+ this.loggerInternal
1154
+ );
1140
1155
  const newContext = getNodeIdContext(newIdCompressor);
1141
1156
  // Generate all local IDs in the new compressor that were in the old compressor and preserve their UUIDs.
1142
1157
  // This will allow the client to continue to use local IDs that were allocated pre-upgrade
@@ -1357,7 +1372,7 @@ export class SharedTree extends SharedObject<ISharedTreeEvents> implements NodeI
1357
1372
  * @returns the inverse of `changes` or undefined if the changes could not be inverted for the given tree state.
1358
1373
  */
1359
1374
  public revertChanges(changes: readonly InternalizedChange[], before: RevisionView): ChangeInternal[] | undefined {
1360
- return revert(changes as unknown as readonly ChangeInternal[], before, this.logger, this.emit.bind(this));
1375
+ return revert(changes as unknown as readonly ChangeInternal[], before, this.loggerInternal, this.emit.bind(this));
1361
1376
  }
1362
1377
 
1363
1378
  /**