@fluidframework/telemetry-utils 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.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.
Files changed (132) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/api-report/telemetry-utils.api.md +6 -6
  3. package/dist/config.d.ts +2 -2
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +6 -2
  6. package/dist/config.js.map +1 -1
  7. package/dist/error.d.ts +4 -2
  8. package/dist/error.d.ts.map +1 -1
  9. package/dist/error.js +5 -5
  10. package/dist/error.js.map +1 -1
  11. package/dist/errorLogging.d.ts +3 -2
  12. package/dist/errorLogging.d.ts.map +1 -1
  13. package/dist/errorLogging.js.map +1 -1
  14. package/dist/eventEmitterWithErrorHandling.d.ts +1 -1
  15. package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
  16. package/dist/eventEmitterWithErrorHandling.js +2 -2
  17. package/dist/eventEmitterWithErrorHandling.js.map +1 -1
  18. package/dist/events.d.ts +1 -1
  19. package/dist/events.d.ts.map +1 -1
  20. package/dist/events.js.map +1 -1
  21. package/dist/fluidErrorBase.d.ts.map +1 -1
  22. package/dist/fluidErrorBase.js.map +1 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/legacy.d.ts +28 -0
  27. package/dist/logger.d.ts +2 -2
  28. package/dist/logger.d.ts.map +1 -1
  29. package/dist/logger.js +1 -1
  30. package/dist/logger.js.map +1 -1
  31. package/dist/mockLogger.d.ts +1 -1
  32. package/dist/mockLogger.d.ts.map +1 -1
  33. package/dist/mockLogger.js +3 -3
  34. package/dist/mockLogger.js.map +1 -1
  35. package/dist/public.d.ts +20 -0
  36. package/dist/sampledTelemetryHelper.d.ts +2 -2
  37. package/dist/sampledTelemetryHelper.d.ts.map +1 -1
  38. package/dist/sampledTelemetryHelper.js.map +1 -1
  39. package/dist/utils.d.ts +4 -0
  40. package/dist/utils.d.ts.map +1 -1
  41. package/dist/utils.js +4 -0
  42. package/dist/utils.js.map +1 -1
  43. package/internal.d.ts +11 -0
  44. package/legacy.d.ts +11 -0
  45. package/lib/config.d.ts +2 -2
  46. package/lib/config.d.ts.map +1 -1
  47. package/lib/config.js +5 -1
  48. package/lib/config.js.map +1 -1
  49. package/lib/error.d.ts +4 -2
  50. package/lib/error.d.ts.map +1 -1
  51. package/lib/error.js +1 -1
  52. package/lib/error.js.map +1 -1
  53. package/lib/errorLogging.d.ts +3 -2
  54. package/lib/errorLogging.d.ts.map +1 -1
  55. package/lib/errorLogging.js.map +1 -1
  56. package/lib/eventEmitterWithErrorHandling.d.ts +1 -1
  57. package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
  58. package/lib/eventEmitterWithErrorHandling.js.map +1 -1
  59. package/lib/events.d.ts +1 -1
  60. package/lib/events.d.ts.map +1 -1
  61. package/lib/events.js.map +1 -1
  62. package/lib/fluidErrorBase.d.ts.map +1 -1
  63. package/lib/fluidErrorBase.js.map +1 -1
  64. package/lib/index.d.ts.map +1 -1
  65. package/lib/index.js.map +1 -1
  66. package/lib/legacy.d.ts +28 -0
  67. package/lib/logger.d.ts +2 -2
  68. package/lib/logger.d.ts.map +1 -1
  69. package/lib/logger.js +2 -2
  70. package/lib/logger.js.map +1 -1
  71. package/lib/mockLogger.d.ts +1 -1
  72. package/lib/mockLogger.d.ts.map +1 -1
  73. package/lib/mockLogger.js +2 -2
  74. package/lib/mockLogger.js.map +1 -1
  75. package/lib/public.d.ts +20 -0
  76. package/lib/sampledTelemetryHelper.d.ts +2 -2
  77. package/lib/sampledTelemetryHelper.d.ts.map +1 -1
  78. package/lib/sampledTelemetryHelper.js.map +1 -1
  79. package/lib/utils.d.ts +4 -0
  80. package/lib/utils.d.ts.map +1 -1
  81. package/lib/utils.js +4 -0
  82. package/lib/utils.js.map +1 -1
  83. package/package.json +27 -48
  84. package/src/config.ts +5 -3
  85. package/src/error.ts +4 -4
  86. package/src/errorLogging.ts +6 -8
  87. package/src/eventEmitterWithErrorHandling.ts +2 -1
  88. package/src/events.ts +2 -1
  89. package/src/fluidErrorBase.ts +1 -0
  90. package/src/index.ts +1 -0
  91. package/src/logger.ts +7 -6
  92. package/src/mockLogger.ts +4 -3
  93. package/src/sampledTelemetryHelper.ts +3 -2
  94. package/src/utils.ts +2 -0
  95. package/api-extractor-cjs.json +0 -8
  96. package/dist/telemetry-utils-alpha.d.ts +0 -282
  97. package/dist/telemetry-utils-beta.d.ts +0 -239
  98. package/dist/telemetry-utils-public.d.ts +0 -239
  99. package/dist/telemetry-utils-untrimmed.d.ts +0 -1077
  100. package/lib/telemetry-utils-alpha.d.ts +0 -282
  101. package/lib/telemetry-utils-beta.d.ts +0 -239
  102. package/lib/telemetry-utils-public.d.ts +0 -239
  103. package/lib/telemetry-utils-untrimmed.d.ts +0 -1077
  104. package/lib/test/EventEmitterWithErrorHandling.spec.js +0 -86
  105. package/lib/test/EventEmitterWithErrorHandling.spec.js.map +0 -1
  106. package/lib/test/childLogger.spec.js +0 -233
  107. package/lib/test/childLogger.spec.js.map +0 -1
  108. package/lib/test/config.spec.js +0 -229
  109. package/lib/test/config.spec.js.map +0 -1
  110. package/lib/test/error.spec.js +0 -161
  111. package/lib/test/error.spec.js.map +0 -1
  112. package/lib/test/errorLogging.spec.js +0 -801
  113. package/lib/test/errorLogging.spec.js.map +0 -1
  114. package/lib/test/errorTypeLoggingTest.spec.js +0 -107
  115. package/lib/test/errorTypeLoggingTest.spec.js.map +0 -1
  116. package/lib/test/mockLogger.spec.js +0 -164
  117. package/lib/test/mockLogger.spec.js.map +0 -1
  118. package/lib/test/multiSinkLogger.spec.js +0 -84
  119. package/lib/test/multiSinkLogger.spec.js.map +0 -1
  120. package/lib/test/performanceEvent.spec.js +0 -86
  121. package/lib/test/performanceEvent.spec.js.map +0 -1
  122. package/lib/test/sampledTelemetryHelper.spec.js +0 -169
  123. package/lib/test/sampledTelemetryHelper.spec.js.map +0 -1
  124. package/lib/test/telemetryLogger.spec.js +0 -357
  125. package/lib/test/telemetryLogger.spec.js.map +0 -1
  126. package/lib/test/thresholdCounter.spec.js +0 -51
  127. package/lib/test/thresholdCounter.spec.js.map +0 -1
  128. package/lib/test/types/validateTelemetryUtilsPrevious.generated.js +0 -132
  129. package/lib/test/types/validateTelemetryUtilsPrevious.generated.js.map +0 -1
  130. package/lib/test/utils.spec.js +0 -284
  131. package/lib/test/utils.spec.js.map +0 -1
  132. /package/{dist → lib}/tsdoc-metadata.json +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"validateTelemetryUtilsPrevious.generated.js","sourceRoot":"","sources":["../../../src/test/types/validateTelemetryUtilsPrevious.generated.ts"],"names":[],"mappings":"AA4CA,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,0DAA0D,CACtD,sDAAsD,EAAE,CAAC,CAAC;AAW9D,sDAAsD,CAClD,0DAA0D,EAAE,CAAC,CAAC;AAWlE,yCAAyC,CACrC,qCAAqC,EAAE,CAAC,CAAC;AAW7C,qCAAqC,CACjC,yCAAyC,EAAE,CAAC,CAAC;AAWjD,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAuBxD,8CAA8C,CAC1C,0CAA0C,EAAE,CAAC,CAAC;AAWlD,0CAA0C,CACtC,8CAA8C,EAAE,CAAC,CAAC;AAWtD,uDAAuD,CACnD,mDAAmD,EAAE,CAAC,CAAC;AAW3D,mDAAmD,CAC/C,uDAAuD,EAAE,CAAC,CAAC;AAW/D,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,yDAAyD,CACrD,qDAAqD,EAAE,CAAC,CAAC;AAW7D,qDAAqD,CACjD,yDAAyD,EAAE,CAAC,CAAC;AAWjE,wDAAwD,CACpD,oDAAoD,EAAE,CAAC,CAAC;AAW5D,oDAAoD,CAChD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,gEAAgE,CAC5D,4DAA4D,EAAE,CAAC,CAAC;AAWpE,4DAA4D,CACxD,gEAAgE,EAAE,CAAC,CAAC;AAWxE,wDAAwD,CACpD,oDAAoD,EAAE,CAAC,CAAC;AAW5D,oDAAoD,CAChD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,mDAAmD,CAC/C,+CAA+C,EAAE,CAAC,CAAC;AAWvD,+CAA+C,CAC3C,mDAAmD,EAAE,CAAC,CAAC;AAW3D,0DAA0D,CACtD,sDAAsD,EAAE,CAAC,CAAC;AAW9D,sDAAsD,CAClD,0DAA0D,EAAE,CAAC,CAAC;AAWlE,oDAAoD,CAChD,gDAAgD,EAAE,CAAC,CAAC;AAWxD,gDAAgD,CAC5C,oDAAoD,EAAE,CAAC,CAAC;AAW5D,4DAA4D,CACxD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,wDAAwD,CACpD,4DAA4D,EAAE,CAAC,CAAC;AAWpE,6DAA6D,CACzD,yDAAyD,EAAE,CAAC,CAAC;AAWjE,yDAAyD,CACrD,6DAA6D,EAAE,CAAC,CAAC;AAWrE,8DAA8D,CAC1D,0DAA0D,EAAE,CAAC,CAAC;AAWlE,0DAA0D,CACtD,8DAA8D,EAAE,CAAC,CAAC;AAWtE,wDAAwD,CACpD,oDAAoD,EAAE,CAAC,CAAC;AAW5D,oDAAoD,CAChD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,yCAAyC,CACrC,qCAAqC,EAAE,CAAC,CAAC;AAW7C,qCAAqC,CACjC,yCAAyC,EAAE,CAAC,CAAC;AAWjD,uCAAuC,CACnC,mCAAmC,EAAE,CAAC,CAAC;AAW3C,mCAAmC,CAC/B,uCAAuC,EAAE,CAAC,CAAC;AAW/C,kDAAkD,CAC9C,8CAA8C,EAAE,CAAC,CAAC;AAWtD,8CAA8C,CAC1C,kDAAkD,EAAE,CAAC,CAAC;AAW1D,0DAA0D,CACtD,sDAAsD,EAAE,CAAC,CAAC;AAW9D,sDAAsD,CAClD,0DAA0D,EAAE,CAAC,CAAC;AAWlE,qDAAqD,CACjD,iDAAiD,EAAE,CAAC,CAAC;AAWzD,iDAAiD,CAC7C,qDAAqD,EAAE,CAAC,CAAC;AAW7D,6CAA6C,CACzC,yCAAyC,EAAE,CAAC,CAAC;AAWjD,yCAAyC,CACrC,6CAA6C,EAAE,CAAC,CAAC;AAWrD,mDAAmD,CAC/C,+CAA+C,EAAE,CAAC,CAAC;AAWvD,+CAA+C,CAC3C,mDAAmD,EAAE,CAAC,CAAC;AAW3D,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,4CAA4C,CACxC,wCAAwC,EAAE,CAAC,CAAC;AAWhD,wCAAwC,CACpC,4CAA4C,EAAE,CAAC,CAAC;AAWpD,uDAAuD,CACnD,mDAAmD,EAAE,CAAC,CAAC;AAW3D,mDAAmD,CAC/C,uDAAuD,EAAE,CAAC,CAAC;AAW/D,8DAA8D,CAC1D,0DAA0D,EAAE,CAAC,CAAC;AAWlE,0DAA0D,CACtD,8DAA8D,EAAE,CAAC,CAAC;AAWtE,4DAA4D,CACxD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,wDAAwD,CACpD,4DAA4D,EAAE,CAAC,CAAC;AAuBpE,6CAA6C,CACzC,yCAAyC,EAAE,CAAC,CAAC;AAWjD,yCAAyC,CACrC,6CAA6C,EAAE,CAAC,CAAC;AAWrD,uCAAuC,CACnC,mCAAmC,EAAE,CAAC,CAAC;AAW3C,mCAAmC,CAC/B,uCAAuC,EAAE,CAAC,CAAC;AAW/C,kDAAkD,CAC9C,8CAA8C,EAAE,CAAC,CAAC;AAWtD,8CAA8C,CAC1C,kDAAkD,EAAE,CAAC,CAAC;AAW1D,iDAAiD,CAC7C,6CAA6C,EAAE,CAAC,CAAC;AAWrD,6CAA6C,CACzC,iDAAiD,EAAE,CAAC,CAAC;AAWzD,4DAA4D,CACxD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,wDAAwD,CACpD,4DAA4D,EAAE,CAAC,CAAC;AAWpE,qDAAqD,CACjD,iDAAiD,EAAE,CAAC,CAAC;AAWzD,iDAAiD,CAC7C,qDAAqD,EAAE,CAAC,CAAC;AAW7D,mDAAmD,CAC/C,+CAA+C,EAAE,CAAC,CAAC;AAWvD,+CAA+C,CAC3C,mDAAmD,EAAE,CAAC,CAAC;AAW3D,qDAAqD,CACjD,iDAAiD,EAAE,CAAC,CAAC;AAWzD,iDAAiD,CAC7C,qDAAqD,EAAE,CAAC,CAAC;AAW7D,uDAAuD,CACnD,mDAAmD,EAAE,CAAC,CAAC;AAW3D,mDAAmD,CAC/C,uDAAuD,EAAE,CAAC,CAAC;AAW/D,6DAA6D,CACzD,yDAAyD,EAAE,CAAC,CAAC;AAWjE,yDAAyD,CACrD,6DAA6D,EAAE,CAAC,CAAC;AAWrE,gEAAgE,CAC5D,4DAA4D,EAAE,CAAC,CAAC;AAWpE,4DAA4D,CACxD,gEAAgE,EAAE,CAAC,CAAC;AAWxE,0CAA0C,CACtC,sCAAsC,EAAE,CAAC,CAAC;AAW9C,sCAAsC,CAClC,0CAA0C,EAAE,CAAC,CAAC;AAWlD,sDAAsD,CAClD,kDAAkD,EAAE,CAAC,CAAC;AAW1D,kDAAkD,CAC9C,sDAAsD,EAAE,CAAC,CAAC;AAW9D,6CAA6C,CACzC,yCAAyC,EAAE,CAAC,CAAC;AAWjD,yCAAyC,CACrC,6CAA6C,EAAE,CAAC,CAAC;AAWrD,mDAAmD,CAC/C,+CAA+C,EAAE,CAAC,CAAC;AAWvD,+CAA+C,CAC3C,mDAAmD,EAAE,CAAC,CAAC;AAW3D,kDAAkD,CAC9C,8CAA8C,EAAE,CAAC,CAAC;AAWtD,8CAA8C,CAC1C,kDAAkD,EAAE,CAAC,CAAC;AAW1D,+CAA+C,CAC3C,2CAA2C,EAAE,CAAC,CAAC;AAWnD,2CAA2C,CACvC,+CAA+C,EAAE,CAAC,CAAC;AAWvD,4CAA4C,CACxC,wCAAwC,EAAE,CAAC,CAAC;AAWhD,wCAAwC,CACpC,4CAA4C,EAAE,CAAC,CAAC;AAWpD,+CAA+C,CAC3C,2CAA2C,EAAE,CAAC,CAAC;AAWnD,2CAA2C,CACvC,+CAA+C,EAAE,CAAC,CAAC;AAWvD,8DAA8D,CAC1D,0DAA0D,EAAE,CAAC,CAAC;AAWlE,0DAA0D,CACtD,8DAA8D,EAAE,CAAC,CAAC;AAWtE,kDAAkD,CAC9C,8CAA8C,EAAE,CAAC,CAAC;AAWtD,8CAA8C,CAC1C,kDAAkD,EAAE,CAAC,CAAC;AAuB1D,yDAAyD,CACrD,qDAAqD,EAAE,CAAC,CAAC;AAW7D,qDAAqD,CACjD,yDAAyD,EAAE,CAAC,CAAC;AAWjE,sDAAsD,CAClD,kDAAkD,EAAE,CAAC,CAAC;AAW1D,kDAAkD,CAC9C,sDAAsD,EAAE,CAAC,CAAC;AAW9D,8CAA8C,CAC1C,0CAA0C,EAAE,CAAC,CAAC;AAWlD,0CAA0C,CACtC,8CAA8C,EAAE,CAAC,CAAC;AAWtD,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,8CAA8C,CAC1C,0CAA0C,EAAE,CAAC,CAAC;AAWlD,0CAA0C,CACtC,8CAA8C,EAAE,CAAC,CAAC;AAWtD,mDAAmD,CAC/C,+CAA+C,EAAE,CAAC,CAAC;AAWvD,+CAA+C,CAC3C,mDAAmD,EAAE,CAAC,CAAC;AAW3D,8CAA8C,CAC1C,0CAA0C,EAAE,CAAC,CAAC;AAWlD,0CAA0C,CACtC,8CAA8C,EAAE,CAAC,CAAC;AAWtD,4DAA4D,CACxD,wDAAwD,EAAE,CAAC,CAAC;AAWhE,wDAAwD,CACpD,4DAA4D,EAAE,CAAC,CAAC;AAWpE,gDAAgD,CAC5C,4CAA4C,EAAE,CAAC,CAAC;AAWpD,4CAA4C,CACxC,gDAAgD,EAAE,CAAC,CAAC;AAWxD,uCAAuC,CACnC,mCAAmC,EAAE,CAAC,CAAC;AAW3C,mCAAmC,CAC/B,uCAAuC,EAAE,CAAC,CAAC;AAW/C,oDAAoD,CAChD,gDAAgD,EAAE,CAAC,CAAC;AAWxD,gDAAgD,CAC5C,oDAAoD,EAAE,CAAC,CAAC;AAW5D,yCAAyC,CACrC,qCAAqC,EAAE,CAAC,CAAC;AAW7C,qCAAqC,CACjC,yCAAyC,EAAE,CAAC,CAAC;AAWjD,+CAA+C,CAC3C,2CAA2C,EAAE,CAAC,CAAC;AAWnD,2CAA2C,CACvC,+CAA+C,EAAE,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/*\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n * Generated by fluid-type-test-generator in @fluidframework/build-tools.\n */\nimport type * as old from \"@fluidframework/telemetry-utils-previous\";\nimport type * as current from \"../../index.js\";\n\n\n// See 'build-tools/src/type-test-generator/compatibility.ts' for more information.\ntype TypeOnly<T> = T extends number\n\t? number\n\t: T extends string\n\t? string\n\t: T extends boolean | bigint | symbol\n\t? T\n\t: {\n\t\t\t[P in keyof T]: TypeOnly<T[P]>;\n\t };\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedTypeAliasDeclaration_ConfigTypes\": {\"forwardCompat\": false}\n*/\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedTypeAliasDeclaration_ConfigTypes\": {\"backCompat\": false}\n*/\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DataCorruptionError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_DataCorruptionError():\n TypeOnly<old.DataCorruptionError>;\ndeclare function use_current_ClassDeclaration_DataCorruptionError(\n use: TypeOnly<current.DataCorruptionError>): void;\nuse_current_ClassDeclaration_DataCorruptionError(\n get_old_ClassDeclaration_DataCorruptionError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DataCorruptionError\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_DataCorruptionError():\n TypeOnly<current.DataCorruptionError>;\ndeclare function use_old_ClassDeclaration_DataCorruptionError(\n use: TypeOnly<old.DataCorruptionError>): void;\nuse_old_ClassDeclaration_DataCorruptionError(\n get_current_ClassDeclaration_DataCorruptionError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DataProcessingError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_DataProcessingError():\n TypeOnly<old.DataProcessingError>;\ndeclare function use_current_ClassDeclaration_DataProcessingError(\n use: TypeOnly<current.DataProcessingError>): void;\nuse_current_ClassDeclaration_DataProcessingError(\n get_old_ClassDeclaration_DataProcessingError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_DataProcessingError\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_DataProcessingError():\n TypeOnly<current.DataProcessingError>;\ndeclare function use_old_ClassDeclaration_DataProcessingError(\n use: TypeOnly<old.DataProcessingError>): void;\nuse_old_ClassDeclaration_DataProcessingError(\n get_current_ClassDeclaration_DataProcessingError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_EventEmitterWithErrorHandling\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_EventEmitterWithErrorHandling():\n TypeOnly<old.EventEmitterWithErrorHandling>;\ndeclare function use_current_ClassDeclaration_EventEmitterWithErrorHandling(\n use: TypeOnly<current.EventEmitterWithErrorHandling>): void;\nuse_current_ClassDeclaration_EventEmitterWithErrorHandling(\n get_old_ClassDeclaration_EventEmitterWithErrorHandling());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_EventEmitterWithErrorHandling\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_EventEmitterWithErrorHandling():\n TypeOnly<current.EventEmitterWithErrorHandling>;\ndeclare function use_old_ClassDeclaration_EventEmitterWithErrorHandling(\n use: TypeOnly<old.EventEmitterWithErrorHandling>): void;\nuse_old_ClassDeclaration_EventEmitterWithErrorHandling(\n get_current_ClassDeclaration_EventEmitterWithErrorHandling());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_GenericError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_GenericError():\n TypeOnly<old.GenericError>;\ndeclare function use_current_ClassDeclaration_GenericError(\n use: TypeOnly<current.GenericError>): void;\nuse_current_ClassDeclaration_GenericError(\n get_old_ClassDeclaration_GenericError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_GenericError\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_GenericError():\n TypeOnly<current.GenericError>;\ndeclare function use_old_ClassDeclaration_GenericError(\n use: TypeOnly<old.GenericError>): void;\nuse_old_ClassDeclaration_GenericError(\n get_current_ClassDeclaration_GenericError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IConfigProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IConfigProvider():\n TypeOnly<old.IConfigProvider>;\ndeclare function use_current_InterfaceDeclaration_IConfigProvider(\n use: TypeOnly<current.IConfigProvider>): void;\nuse_current_InterfaceDeclaration_IConfigProvider(\n get_old_InterfaceDeclaration_IConfigProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IConfigProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IConfigProvider():\n TypeOnly<current.IConfigProvider>;\ndeclare function use_old_InterfaceDeclaration_IConfigProvider(\n use: TypeOnly<old.IConfigProvider>): void;\nuse_old_InterfaceDeclaration_IConfigProvider(\n get_current_InterfaceDeclaration_IConfigProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedInterfaceDeclaration_IConfigProviderBase\": {\"forwardCompat\": false}\n*/\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedInterfaceDeclaration_IConfigProviderBase\": {\"backCompat\": false}\n*/\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IEventSampler\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IEventSampler():\n TypeOnly<old.IEventSampler>;\ndeclare function use_current_InterfaceDeclaration_IEventSampler(\n use: TypeOnly<current.IEventSampler>): void;\nuse_current_InterfaceDeclaration_IEventSampler(\n get_old_InterfaceDeclaration_IEventSampler());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IEventSampler\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IEventSampler():\n TypeOnly<current.IEventSampler>;\ndeclare function use_old_InterfaceDeclaration_IEventSampler(\n use: TypeOnly<old.IEventSampler>): void;\nuse_old_InterfaceDeclaration_IEventSampler(\n get_current_InterfaceDeclaration_IEventSampler());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidErrorAnnotations\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidErrorAnnotations():\n TypeOnly<old.IFluidErrorAnnotations>;\ndeclare function use_current_InterfaceDeclaration_IFluidErrorAnnotations(\n use: TypeOnly<current.IFluidErrorAnnotations>): void;\nuse_current_InterfaceDeclaration_IFluidErrorAnnotations(\n get_old_InterfaceDeclaration_IFluidErrorAnnotations());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidErrorAnnotations\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidErrorAnnotations():\n TypeOnly<current.IFluidErrorAnnotations>;\ndeclare function use_old_InterfaceDeclaration_IFluidErrorAnnotations(\n use: TypeOnly<old.IFluidErrorAnnotations>): void;\nuse_old_InterfaceDeclaration_IFluidErrorAnnotations(\n get_current_InterfaceDeclaration_IFluidErrorAnnotations());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidErrorBase\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IFluidErrorBase():\n TypeOnly<old.IFluidErrorBase>;\ndeclare function use_current_InterfaceDeclaration_IFluidErrorBase(\n use: TypeOnly<current.IFluidErrorBase>): void;\nuse_current_InterfaceDeclaration_IFluidErrorBase(\n get_old_InterfaceDeclaration_IFluidErrorBase());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IFluidErrorBase\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IFluidErrorBase():\n TypeOnly<current.IFluidErrorBase>;\ndeclare function use_old_InterfaceDeclaration_IFluidErrorBase(\n use: TypeOnly<old.IFluidErrorBase>): void;\nuse_old_InterfaceDeclaration_IFluidErrorBase(\n get_current_InterfaceDeclaration_IFluidErrorBase());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IPerformanceEventMarkers\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_IPerformanceEventMarkers():\n TypeOnly<old.IPerformanceEventMarkers>;\ndeclare function use_current_InterfaceDeclaration_IPerformanceEventMarkers(\n use: TypeOnly<current.IPerformanceEventMarkers>): void;\nuse_current_InterfaceDeclaration_IPerformanceEventMarkers(\n get_old_InterfaceDeclaration_IPerformanceEventMarkers());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_IPerformanceEventMarkers\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_IPerformanceEventMarkers():\n TypeOnly<current.IPerformanceEventMarkers>;\ndeclare function use_old_InterfaceDeclaration_IPerformanceEventMarkers(\n use: TypeOnly<old.IPerformanceEventMarkers>): void;\nuse_old_InterfaceDeclaration_IPerformanceEventMarkers(\n get_current_InterfaceDeclaration_IPerformanceEventMarkers());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ISampledTelemetryLogger\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ISampledTelemetryLogger():\n TypeOnly<old.ISampledTelemetryLogger>;\ndeclare function use_current_InterfaceDeclaration_ISampledTelemetryLogger(\n use: TypeOnly<current.ISampledTelemetryLogger>): void;\nuse_current_InterfaceDeclaration_ISampledTelemetryLogger(\n get_old_InterfaceDeclaration_ISampledTelemetryLogger());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ISampledTelemetryLogger\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ISampledTelemetryLogger():\n TypeOnly<current.ISampledTelemetryLogger>;\ndeclare function use_old_InterfaceDeclaration_ISampledTelemetryLogger(\n use: TypeOnly<old.ISampledTelemetryLogger>): void;\nuse_old_InterfaceDeclaration_ISampledTelemetryLogger(\n get_current_InterfaceDeclaration_ISampledTelemetryLogger());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt():\n TypeOnly<old.ITaggedTelemetryPropertyTypeExt>;\ndeclare function use_current_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt(\n use: TypeOnly<current.ITaggedTelemetryPropertyTypeExt>): void;\nuse_current_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt(\n get_old_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt():\n TypeOnly<current.ITaggedTelemetryPropertyTypeExt>;\ndeclare function use_old_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt(\n use: TypeOnly<old.ITaggedTelemetryPropertyTypeExt>): void;\nuse_old_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt(\n get_current_InterfaceDeclaration_ITaggedTelemetryPropertyTypeExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryErrorEventExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryErrorEventExt():\n TypeOnly<old.ITelemetryErrorEventExt>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryErrorEventExt(\n use: TypeOnly<current.ITelemetryErrorEventExt>): void;\nuse_current_InterfaceDeclaration_ITelemetryErrorEventExt(\n get_old_InterfaceDeclaration_ITelemetryErrorEventExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryErrorEventExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryErrorEventExt():\n TypeOnly<current.ITelemetryErrorEventExt>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryErrorEventExt(\n use: TypeOnly<old.ITelemetryErrorEventExt>): void;\nuse_old_InterfaceDeclaration_ITelemetryErrorEventExt(\n get_current_InterfaceDeclaration_ITelemetryErrorEventExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryEventExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryEventExt():\n TypeOnly<old.ITelemetryEventExt>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryEventExt(\n use: TypeOnly<current.ITelemetryEventExt>): void;\nuse_current_InterfaceDeclaration_ITelemetryEventExt(\n get_old_InterfaceDeclaration_ITelemetryEventExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryEventExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryEventExt():\n TypeOnly<current.ITelemetryEventExt>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryEventExt(\n use: TypeOnly<old.ITelemetryEventExt>): void;\nuse_old_InterfaceDeclaration_ITelemetryEventExt(\n get_current_InterfaceDeclaration_ITelemetryEventExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryGenericEventExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryGenericEventExt():\n TypeOnly<old.ITelemetryGenericEventExt>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryGenericEventExt(\n use: TypeOnly<current.ITelemetryGenericEventExt>): void;\nuse_current_InterfaceDeclaration_ITelemetryGenericEventExt(\n get_old_InterfaceDeclaration_ITelemetryGenericEventExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryGenericEventExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryGenericEventExt():\n TypeOnly<current.ITelemetryGenericEventExt>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryGenericEventExt(\n use: TypeOnly<old.ITelemetryGenericEventExt>): void;\nuse_old_InterfaceDeclaration_ITelemetryGenericEventExt(\n get_current_InterfaceDeclaration_ITelemetryGenericEventExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryLoggerExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryLoggerExt():\n TypeOnly<old.ITelemetryLoggerExt>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryLoggerExt(\n use: TypeOnly<current.ITelemetryLoggerExt>): void;\nuse_current_InterfaceDeclaration_ITelemetryLoggerExt(\n get_old_InterfaceDeclaration_ITelemetryLoggerExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryLoggerExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryLoggerExt():\n TypeOnly<current.ITelemetryLoggerExt>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryLoggerExt(\n use: TypeOnly<old.ITelemetryLoggerExt>): void;\nuse_old_InterfaceDeclaration_ITelemetryLoggerExt(\n get_current_InterfaceDeclaration_ITelemetryLoggerExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryLoggerPropertyBag\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryLoggerPropertyBag():\n TypeOnly<old.ITelemetryLoggerPropertyBag>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryLoggerPropertyBag(\n use: TypeOnly<current.ITelemetryLoggerPropertyBag>): void;\nuse_current_InterfaceDeclaration_ITelemetryLoggerPropertyBag(\n get_old_InterfaceDeclaration_ITelemetryLoggerPropertyBag());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryLoggerPropertyBag\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryLoggerPropertyBag():\n TypeOnly<current.ITelemetryLoggerPropertyBag>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryLoggerPropertyBag(\n use: TypeOnly<old.ITelemetryLoggerPropertyBag>): void;\nuse_old_InterfaceDeclaration_ITelemetryLoggerPropertyBag(\n get_current_InterfaceDeclaration_ITelemetryLoggerPropertyBag());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryLoggerPropertyBags\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryLoggerPropertyBags():\n TypeOnly<old.ITelemetryLoggerPropertyBags>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryLoggerPropertyBags(\n use: TypeOnly<current.ITelemetryLoggerPropertyBags>): void;\nuse_current_InterfaceDeclaration_ITelemetryLoggerPropertyBags(\n get_old_InterfaceDeclaration_ITelemetryLoggerPropertyBags());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryLoggerPropertyBags\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryLoggerPropertyBags():\n TypeOnly<current.ITelemetryLoggerPropertyBags>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryLoggerPropertyBags(\n use: TypeOnly<old.ITelemetryLoggerPropertyBags>): void;\nuse_old_InterfaceDeclaration_ITelemetryLoggerPropertyBags(\n get_current_InterfaceDeclaration_ITelemetryLoggerPropertyBags());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryPerformanceEventExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryPerformanceEventExt():\n TypeOnly<old.ITelemetryPerformanceEventExt>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryPerformanceEventExt(\n use: TypeOnly<current.ITelemetryPerformanceEventExt>): void;\nuse_current_InterfaceDeclaration_ITelemetryPerformanceEventExt(\n get_old_InterfaceDeclaration_ITelemetryPerformanceEventExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryPerformanceEventExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryPerformanceEventExt():\n TypeOnly<current.ITelemetryPerformanceEventExt>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryPerformanceEventExt(\n use: TypeOnly<old.ITelemetryPerformanceEventExt>): void;\nuse_old_InterfaceDeclaration_ITelemetryPerformanceEventExt(\n get_current_InterfaceDeclaration_ITelemetryPerformanceEventExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryPropertiesExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_ITelemetryPropertiesExt():\n TypeOnly<old.ITelemetryPropertiesExt>;\ndeclare function use_current_InterfaceDeclaration_ITelemetryPropertiesExt(\n use: TypeOnly<current.ITelemetryPropertiesExt>): void;\nuse_current_InterfaceDeclaration_ITelemetryPropertiesExt(\n get_old_InterfaceDeclaration_ITelemetryPropertiesExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_ITelemetryPropertiesExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_ITelemetryPropertiesExt():\n TypeOnly<current.ITelemetryPropertiesExt>;\ndeclare function use_old_InterfaceDeclaration_ITelemetryPropertiesExt(\n use: TypeOnly<old.ITelemetryPropertiesExt>): void;\nuse_old_InterfaceDeclaration_ITelemetryPropertiesExt(\n get_current_InterfaceDeclaration_ITelemetryPropertiesExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_LoggingError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_LoggingError():\n TypeOnly<old.LoggingError>;\ndeclare function use_current_ClassDeclaration_LoggingError(\n use: TypeOnly<current.LoggingError>): void;\nuse_current_ClassDeclaration_LoggingError(\n get_old_ClassDeclaration_LoggingError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_LoggingError\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_LoggingError():\n TypeOnly<current.LoggingError>;\ndeclare function use_old_ClassDeclaration_LoggingError(\n use: TypeOnly<old.LoggingError>): void;\nuse_old_ClassDeclaration_LoggingError(\n get_current_ClassDeclaration_LoggingError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_MockLogger\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_MockLogger():\n TypeOnly<old.MockLogger>;\ndeclare function use_current_ClassDeclaration_MockLogger(\n use: TypeOnly<current.MockLogger>): void;\nuse_current_ClassDeclaration_MockLogger(\n get_old_ClassDeclaration_MockLogger());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_MockLogger\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_MockLogger():\n TypeOnly<current.MockLogger>;\ndeclare function use_old_ClassDeclaration_MockLogger(\n use: TypeOnly<old.MockLogger>): void;\nuse_old_ClassDeclaration_MockLogger(\n get_current_ClassDeclaration_MockLogger());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_MonitoringContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_MonitoringContext():\n TypeOnly<old.MonitoringContext>;\ndeclare function use_current_InterfaceDeclaration_MonitoringContext(\n use: TypeOnly<current.MonitoringContext>): void;\nuse_current_InterfaceDeclaration_MonitoringContext(\n get_old_InterfaceDeclaration_MonitoringContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_MonitoringContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_MonitoringContext():\n TypeOnly<current.MonitoringContext>;\ndeclare function use_old_InterfaceDeclaration_MonitoringContext(\n use: TypeOnly<old.MonitoringContext>): void;\nuse_old_InterfaceDeclaration_MonitoringContext(\n get_current_InterfaceDeclaration_MonitoringContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_MultiSinkLoggerProperties\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_InterfaceDeclaration_MultiSinkLoggerProperties():\n TypeOnly<old.MultiSinkLoggerProperties>;\ndeclare function use_current_InterfaceDeclaration_MultiSinkLoggerProperties(\n use: TypeOnly<current.MultiSinkLoggerProperties>): void;\nuse_current_InterfaceDeclaration_MultiSinkLoggerProperties(\n get_old_InterfaceDeclaration_MultiSinkLoggerProperties());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"InterfaceDeclaration_MultiSinkLoggerProperties\": {\"backCompat\": false}\n*/\ndeclare function get_current_InterfaceDeclaration_MultiSinkLoggerProperties():\n TypeOnly<current.MultiSinkLoggerProperties>;\ndeclare function use_old_InterfaceDeclaration_MultiSinkLoggerProperties(\n use: TypeOnly<old.MultiSinkLoggerProperties>): void;\nuse_old_InterfaceDeclaration_MultiSinkLoggerProperties(\n get_current_InterfaceDeclaration_MultiSinkLoggerProperties());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_NORMALIZED_ERROR_TYPE\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_NORMALIZED_ERROR_TYPE():\n TypeOnly<typeof old.NORMALIZED_ERROR_TYPE>;\ndeclare function use_current_VariableDeclaration_NORMALIZED_ERROR_TYPE(\n use: TypeOnly<typeof current.NORMALIZED_ERROR_TYPE>): void;\nuse_current_VariableDeclaration_NORMALIZED_ERROR_TYPE(\n get_old_VariableDeclaration_NORMALIZED_ERROR_TYPE());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_NORMALIZED_ERROR_TYPE\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_NORMALIZED_ERROR_TYPE():\n TypeOnly<typeof current.NORMALIZED_ERROR_TYPE>;\ndeclare function use_old_VariableDeclaration_NORMALIZED_ERROR_TYPE(\n use: TypeOnly<typeof old.NORMALIZED_ERROR_TYPE>): void;\nuse_old_VariableDeclaration_NORMALIZED_ERROR_TYPE(\n get_current_VariableDeclaration_NORMALIZED_ERROR_TYPE());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_PerformanceEvent\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_PerformanceEvent():\n TypeOnly<old.PerformanceEvent>;\ndeclare function use_current_ClassDeclaration_PerformanceEvent(\n use: TypeOnly<current.PerformanceEvent>): void;\nuse_current_ClassDeclaration_PerformanceEvent(\n get_old_ClassDeclaration_PerformanceEvent());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_PerformanceEvent\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_PerformanceEvent():\n TypeOnly<current.PerformanceEvent>;\ndeclare function use_old_ClassDeclaration_PerformanceEvent(\n use: TypeOnly<old.PerformanceEvent>): void;\nuse_old_ClassDeclaration_PerformanceEvent(\n get_current_ClassDeclaration_PerformanceEvent());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_SampledTelemetryHelper\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_SampledTelemetryHelper():\n TypeOnly<old.SampledTelemetryHelper>;\ndeclare function use_current_ClassDeclaration_SampledTelemetryHelper(\n use: TypeOnly<current.SampledTelemetryHelper>): void;\nuse_current_ClassDeclaration_SampledTelemetryHelper(\n get_old_ClassDeclaration_SampledTelemetryHelper());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_SampledTelemetryHelper\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_SampledTelemetryHelper():\n TypeOnly<current.SampledTelemetryHelper>;\ndeclare function use_old_ClassDeclaration_SampledTelemetryHelper(\n use: TypeOnly<old.SampledTelemetryHelper>): void;\nuse_old_ClassDeclaration_SampledTelemetryHelper(\n get_current_ClassDeclaration_SampledTelemetryHelper());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_TaggedLoggerAdapter\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_TaggedLoggerAdapter():\n TypeOnly<old.TaggedLoggerAdapter>;\ndeclare function use_current_ClassDeclaration_TaggedLoggerAdapter(\n use: TypeOnly<current.TaggedLoggerAdapter>): void;\nuse_current_ClassDeclaration_TaggedLoggerAdapter(\n get_old_ClassDeclaration_TaggedLoggerAdapter());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_TaggedLoggerAdapter\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_TaggedLoggerAdapter():\n TypeOnly<current.TaggedLoggerAdapter>;\ndeclare function use_old_ClassDeclaration_TaggedLoggerAdapter(\n use: TypeOnly<old.TaggedLoggerAdapter>): void;\nuse_old_ClassDeclaration_TaggedLoggerAdapter(\n get_current_ClassDeclaration_TaggedLoggerAdapter());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"EnumDeclaration_TelemetryDataTag\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_EnumDeclaration_TelemetryDataTag():\n TypeOnly<old.TelemetryDataTag>;\ndeclare function use_current_EnumDeclaration_TelemetryDataTag(\n use: TypeOnly<current.TelemetryDataTag>): void;\nuse_current_EnumDeclaration_TelemetryDataTag(\n get_old_EnumDeclaration_TelemetryDataTag());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"EnumDeclaration_TelemetryDataTag\": {\"backCompat\": false}\n*/\ndeclare function get_current_EnumDeclaration_TelemetryDataTag():\n TypeOnly<current.TelemetryDataTag>;\ndeclare function use_old_EnumDeclaration_TelemetryDataTag(\n use: TypeOnly<old.TelemetryDataTag>): void;\nuse_old_EnumDeclaration_TelemetryDataTag(\n get_current_EnumDeclaration_TelemetryDataTag());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_TelemetryEventCategory\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_TelemetryEventCategory():\n TypeOnly<old.TelemetryEventCategory>;\ndeclare function use_current_TypeAliasDeclaration_TelemetryEventCategory(\n use: TypeOnly<current.TelemetryEventCategory>): void;\nuse_current_TypeAliasDeclaration_TelemetryEventCategory(\n get_old_TypeAliasDeclaration_TelemetryEventCategory());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_TelemetryEventCategory\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_TelemetryEventCategory():\n TypeOnly<current.TelemetryEventCategory>;\ndeclare function use_old_TypeAliasDeclaration_TelemetryEventCategory(\n use: TypeOnly<old.TelemetryEventCategory>): void;\nuse_old_TypeAliasDeclaration_TelemetryEventCategory(\n get_current_TypeAliasDeclaration_TelemetryEventCategory());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_TelemetryEventPropertyTypeExt\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_TelemetryEventPropertyTypeExt():\n TypeOnly<old.TelemetryEventPropertyTypeExt>;\ndeclare function use_current_TypeAliasDeclaration_TelemetryEventPropertyTypeExt(\n use: TypeOnly<current.TelemetryEventPropertyTypeExt>): void;\nuse_current_TypeAliasDeclaration_TelemetryEventPropertyTypeExt(\n get_old_TypeAliasDeclaration_TelemetryEventPropertyTypeExt());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_TelemetryEventPropertyTypeExt\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_TelemetryEventPropertyTypeExt():\n TypeOnly<current.TelemetryEventPropertyTypeExt>;\ndeclare function use_old_TypeAliasDeclaration_TelemetryEventPropertyTypeExt(\n use: TypeOnly<old.TelemetryEventPropertyTypeExt>): void;\nuse_old_TypeAliasDeclaration_TelemetryEventPropertyTypeExt(\n get_current_TypeAliasDeclaration_TelemetryEventPropertyTypeExt());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_TelemetryEventPropertyTypes\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_TypeAliasDeclaration_TelemetryEventPropertyTypes():\n TypeOnly<old.TelemetryEventPropertyTypes>;\ndeclare function use_current_TypeAliasDeclaration_TelemetryEventPropertyTypes(\n use: TypeOnly<current.TelemetryEventPropertyTypes>): void;\nuse_current_TypeAliasDeclaration_TelemetryEventPropertyTypes(\n get_old_TypeAliasDeclaration_TelemetryEventPropertyTypes());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"TypeAliasDeclaration_TelemetryEventPropertyTypes\": {\"backCompat\": false}\n*/\ndeclare function get_current_TypeAliasDeclaration_TelemetryEventPropertyTypes():\n TypeOnly<current.TelemetryEventPropertyTypes>;\ndeclare function use_old_TypeAliasDeclaration_TelemetryEventPropertyTypes(\n use: TypeOnly<old.TelemetryEventPropertyTypes>): void;\nuse_old_TypeAliasDeclaration_TelemetryEventPropertyTypes(\n get_current_TypeAliasDeclaration_TelemetryEventPropertyTypes());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedClassDeclaration_TelemetryNullLogger\": {\"forwardCompat\": false}\n*/\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedClassDeclaration_TelemetryNullLogger\": {\"backCompat\": false}\n*/\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_ThresholdCounter\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_ThresholdCounter():\n TypeOnly<old.ThresholdCounter>;\ndeclare function use_current_ClassDeclaration_ThresholdCounter(\n use: TypeOnly<current.ThresholdCounter>): void;\nuse_current_ClassDeclaration_ThresholdCounter(\n get_old_ClassDeclaration_ThresholdCounter());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_ThresholdCounter\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_ThresholdCounter():\n TypeOnly<current.ThresholdCounter>;\ndeclare function use_old_ClassDeclaration_ThresholdCounter(\n use: TypeOnly<old.ThresholdCounter>): void;\nuse_old_ClassDeclaration_ThresholdCounter(\n get_current_ClassDeclaration_ThresholdCounter());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_UsageError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_ClassDeclaration_UsageError():\n TypeOnly<old.UsageError>;\ndeclare function use_current_ClassDeclaration_UsageError(\n use: TypeOnly<current.UsageError>): void;\nuse_current_ClassDeclaration_UsageError(\n get_old_ClassDeclaration_UsageError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"ClassDeclaration_UsageError\": {\"backCompat\": false}\n*/\ndeclare function get_current_ClassDeclaration_UsageError():\n TypeOnly<current.UsageError>;\ndeclare function use_old_ClassDeclaration_UsageError(\n use: TypeOnly<old.UsageError>): void;\nuse_old_ClassDeclaration_UsageError(\n get_current_ClassDeclaration_UsageError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_connectedEventName\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_connectedEventName():\n TypeOnly<typeof old.connectedEventName>;\ndeclare function use_current_VariableDeclaration_connectedEventName(\n use: TypeOnly<typeof current.connectedEventName>): void;\nuse_current_VariableDeclaration_connectedEventName(\n get_old_VariableDeclaration_connectedEventName());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_connectedEventName\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_connectedEventName():\n TypeOnly<typeof current.connectedEventName>;\ndeclare function use_old_VariableDeclaration_connectedEventName(\n use: TypeOnly<typeof old.connectedEventName>): void;\nuse_old_VariableDeclaration_connectedEventName(\n get_current_VariableDeclaration_connectedEventName());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createChildLogger\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_createChildLogger():\n TypeOnly<typeof old.createChildLogger>;\ndeclare function use_current_FunctionDeclaration_createChildLogger(\n use: TypeOnly<typeof current.createChildLogger>): void;\nuse_current_FunctionDeclaration_createChildLogger(\n get_old_FunctionDeclaration_createChildLogger());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createChildLogger\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_createChildLogger():\n TypeOnly<typeof current.createChildLogger>;\ndeclare function use_old_FunctionDeclaration_createChildLogger(\n use: TypeOnly<typeof old.createChildLogger>): void;\nuse_old_FunctionDeclaration_createChildLogger(\n get_current_FunctionDeclaration_createChildLogger());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createChildMonitoringContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_createChildMonitoringContext():\n TypeOnly<typeof old.createChildMonitoringContext>;\ndeclare function use_current_FunctionDeclaration_createChildMonitoringContext(\n use: TypeOnly<typeof current.createChildMonitoringContext>): void;\nuse_current_FunctionDeclaration_createChildMonitoringContext(\n get_old_FunctionDeclaration_createChildMonitoringContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createChildMonitoringContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_createChildMonitoringContext():\n TypeOnly<typeof current.createChildMonitoringContext>;\ndeclare function use_old_FunctionDeclaration_createChildMonitoringContext(\n use: TypeOnly<typeof old.createChildMonitoringContext>): void;\nuse_old_FunctionDeclaration_createChildMonitoringContext(\n get_current_FunctionDeclaration_createChildMonitoringContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createMultiSinkLogger\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_createMultiSinkLogger():\n TypeOnly<typeof old.createMultiSinkLogger>;\ndeclare function use_current_FunctionDeclaration_createMultiSinkLogger(\n use: TypeOnly<typeof current.createMultiSinkLogger>): void;\nuse_current_FunctionDeclaration_createMultiSinkLogger(\n get_old_FunctionDeclaration_createMultiSinkLogger());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createMultiSinkLogger\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_createMultiSinkLogger():\n TypeOnly<typeof current.createMultiSinkLogger>;\ndeclare function use_old_FunctionDeclaration_createMultiSinkLogger(\n use: TypeOnly<typeof old.createMultiSinkLogger>): void;\nuse_old_FunctionDeclaration_createMultiSinkLogger(\n get_current_FunctionDeclaration_createMultiSinkLogger());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createSampledLogger\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_createSampledLogger():\n TypeOnly<typeof old.createSampledLogger>;\ndeclare function use_current_FunctionDeclaration_createSampledLogger(\n use: TypeOnly<typeof current.createSampledLogger>): void;\nuse_current_FunctionDeclaration_createSampledLogger(\n get_old_FunctionDeclaration_createSampledLogger());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_createSampledLogger\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_createSampledLogger():\n TypeOnly<typeof current.createSampledLogger>;\ndeclare function use_old_FunctionDeclaration_createSampledLogger(\n use: TypeOnly<typeof old.createSampledLogger>): void;\nuse_old_FunctionDeclaration_createSampledLogger(\n get_current_FunctionDeclaration_createSampledLogger());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_disconnectedEventName\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_disconnectedEventName():\n TypeOnly<typeof old.disconnectedEventName>;\ndeclare function use_current_VariableDeclaration_disconnectedEventName(\n use: TypeOnly<typeof current.disconnectedEventName>): void;\nuse_current_VariableDeclaration_disconnectedEventName(\n get_old_VariableDeclaration_disconnectedEventName());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_disconnectedEventName\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_disconnectedEventName():\n TypeOnly<typeof current.disconnectedEventName>;\ndeclare function use_old_VariableDeclaration_disconnectedEventName(\n use: TypeOnly<typeof old.disconnectedEventName>): void;\nuse_old_VariableDeclaration_disconnectedEventName(\n get_current_VariableDeclaration_disconnectedEventName());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_eventNamespaceSeparator\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_eventNamespaceSeparator():\n TypeOnly<typeof old.eventNamespaceSeparator>;\ndeclare function use_current_VariableDeclaration_eventNamespaceSeparator(\n use: TypeOnly<typeof current.eventNamespaceSeparator>): void;\nuse_current_VariableDeclaration_eventNamespaceSeparator(\n get_old_VariableDeclaration_eventNamespaceSeparator());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_eventNamespaceSeparator\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_eventNamespaceSeparator():\n TypeOnly<typeof current.eventNamespaceSeparator>;\ndeclare function use_old_VariableDeclaration_eventNamespaceSeparator(\n use: TypeOnly<typeof old.eventNamespaceSeparator>): void;\nuse_old_VariableDeclaration_eventNamespaceSeparator(\n get_current_VariableDeclaration_eventNamespaceSeparator());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_extractLogSafeErrorProperties\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_extractLogSafeErrorProperties():\n TypeOnly<typeof old.extractLogSafeErrorProperties>;\ndeclare function use_current_FunctionDeclaration_extractLogSafeErrorProperties(\n use: TypeOnly<typeof current.extractLogSafeErrorProperties>): void;\nuse_current_FunctionDeclaration_extractLogSafeErrorProperties(\n get_old_FunctionDeclaration_extractLogSafeErrorProperties());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_extractLogSafeErrorProperties\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_extractLogSafeErrorProperties():\n TypeOnly<typeof current.extractLogSafeErrorProperties>;\ndeclare function use_old_FunctionDeclaration_extractLogSafeErrorProperties(\n use: TypeOnly<typeof old.extractLogSafeErrorProperties>): void;\nuse_old_FunctionDeclaration_extractLogSafeErrorProperties(\n get_current_FunctionDeclaration_extractLogSafeErrorProperties());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_extractSafePropertiesFromMessage\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_extractSafePropertiesFromMessage():\n TypeOnly<typeof old.extractSafePropertiesFromMessage>;\ndeclare function use_current_VariableDeclaration_extractSafePropertiesFromMessage(\n use: TypeOnly<typeof current.extractSafePropertiesFromMessage>): void;\nuse_current_VariableDeclaration_extractSafePropertiesFromMessage(\n get_old_VariableDeclaration_extractSafePropertiesFromMessage());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_extractSafePropertiesFromMessage\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_extractSafePropertiesFromMessage():\n TypeOnly<typeof current.extractSafePropertiesFromMessage>;\ndeclare function use_old_VariableDeclaration_extractSafePropertiesFromMessage(\n use: TypeOnly<typeof old.extractSafePropertiesFromMessage>): void;\nuse_old_VariableDeclaration_extractSafePropertiesFromMessage(\n get_current_VariableDeclaration_extractSafePropertiesFromMessage());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_formatTick\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_formatTick():\n TypeOnly<typeof old.formatTick>;\ndeclare function use_current_FunctionDeclaration_formatTick(\n use: TypeOnly<typeof current.formatTick>): void;\nuse_current_FunctionDeclaration_formatTick(\n get_old_FunctionDeclaration_formatTick());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_formatTick\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_formatTick():\n TypeOnly<typeof current.formatTick>;\ndeclare function use_old_FunctionDeclaration_formatTick(\n use: TypeOnly<typeof old.formatTick>): void;\nuse_old_FunctionDeclaration_formatTick(\n get_current_FunctionDeclaration_formatTick());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_generateErrorWithStack\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_generateErrorWithStack():\n TypeOnly<typeof old.generateErrorWithStack>;\ndeclare function use_current_FunctionDeclaration_generateErrorWithStack(\n use: TypeOnly<typeof current.generateErrorWithStack>): void;\nuse_current_FunctionDeclaration_generateErrorWithStack(\n get_old_FunctionDeclaration_generateErrorWithStack());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_generateErrorWithStack\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_generateErrorWithStack():\n TypeOnly<typeof current.generateErrorWithStack>;\ndeclare function use_old_FunctionDeclaration_generateErrorWithStack(\n use: TypeOnly<typeof old.generateErrorWithStack>): void;\nuse_old_FunctionDeclaration_generateErrorWithStack(\n get_current_FunctionDeclaration_generateErrorWithStack());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_generateStack\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_generateStack():\n TypeOnly<typeof old.generateStack>;\ndeclare function use_current_FunctionDeclaration_generateStack(\n use: TypeOnly<typeof current.generateStack>): void;\nuse_current_FunctionDeclaration_generateStack(\n get_old_FunctionDeclaration_generateStack());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_generateStack\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_generateStack():\n TypeOnly<typeof current.generateStack>;\ndeclare function use_old_FunctionDeclaration_generateStack(\n use: TypeOnly<typeof old.generateStack>): void;\nuse_old_FunctionDeclaration_generateStack(\n get_current_FunctionDeclaration_generateStack());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_getCircularReplacer\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_getCircularReplacer():\n TypeOnly<typeof old.getCircularReplacer>;\ndeclare function use_current_VariableDeclaration_getCircularReplacer(\n use: TypeOnly<typeof current.getCircularReplacer>): void;\nuse_current_VariableDeclaration_getCircularReplacer(\n get_old_VariableDeclaration_getCircularReplacer());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_getCircularReplacer\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_getCircularReplacer():\n TypeOnly<typeof current.getCircularReplacer>;\ndeclare function use_old_VariableDeclaration_getCircularReplacer(\n use: TypeOnly<typeof old.getCircularReplacer>): void;\nuse_old_VariableDeclaration_getCircularReplacer(\n get_current_VariableDeclaration_getCircularReplacer());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_hasErrorInstanceId\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_hasErrorInstanceId():\n TypeOnly<typeof old.hasErrorInstanceId>;\ndeclare function use_current_VariableDeclaration_hasErrorInstanceId(\n use: TypeOnly<typeof current.hasErrorInstanceId>): void;\nuse_current_VariableDeclaration_hasErrorInstanceId(\n get_old_VariableDeclaration_hasErrorInstanceId());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_hasErrorInstanceId\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_hasErrorInstanceId():\n TypeOnly<typeof current.hasErrorInstanceId>;\ndeclare function use_old_VariableDeclaration_hasErrorInstanceId(\n use: TypeOnly<typeof old.hasErrorInstanceId>): void;\nuse_old_VariableDeclaration_hasErrorInstanceId(\n get_current_VariableDeclaration_hasErrorInstanceId());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isExternalError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_isExternalError():\n TypeOnly<typeof old.isExternalError>;\ndeclare function use_current_FunctionDeclaration_isExternalError(\n use: TypeOnly<typeof current.isExternalError>): void;\nuse_current_FunctionDeclaration_isExternalError(\n get_old_FunctionDeclaration_isExternalError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isExternalError\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_isExternalError():\n TypeOnly<typeof current.isExternalError>;\ndeclare function use_old_FunctionDeclaration_isExternalError(\n use: TypeOnly<typeof old.isExternalError>): void;\nuse_old_FunctionDeclaration_isExternalError(\n get_current_FunctionDeclaration_isExternalError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isFluidError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_isFluidError():\n TypeOnly<typeof old.isFluidError>;\ndeclare function use_current_FunctionDeclaration_isFluidError(\n use: TypeOnly<typeof current.isFluidError>): void;\nuse_current_FunctionDeclaration_isFluidError(\n get_old_FunctionDeclaration_isFluidError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isFluidError\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_isFluidError():\n TypeOnly<typeof current.isFluidError>;\ndeclare function use_old_FunctionDeclaration_isFluidError(\n use: TypeOnly<typeof old.isFluidError>): void;\nuse_old_FunctionDeclaration_isFluidError(\n get_current_FunctionDeclaration_isFluidError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_isILoggingError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_isILoggingError():\n TypeOnly<typeof old.isILoggingError>;\ndeclare function use_current_VariableDeclaration_isILoggingError(\n use: TypeOnly<typeof current.isILoggingError>): void;\nuse_current_VariableDeclaration_isILoggingError(\n get_old_VariableDeclaration_isILoggingError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_isILoggingError\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_isILoggingError():\n TypeOnly<typeof current.isILoggingError>;\ndeclare function use_old_VariableDeclaration_isILoggingError(\n use: TypeOnly<typeof old.isILoggingError>): void;\nuse_old_VariableDeclaration_isILoggingError(\n get_current_VariableDeclaration_isILoggingError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isTaggedTelemetryPropertyValue\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_isTaggedTelemetryPropertyValue():\n TypeOnly<typeof old.isTaggedTelemetryPropertyValue>;\ndeclare function use_current_FunctionDeclaration_isTaggedTelemetryPropertyValue(\n use: TypeOnly<typeof current.isTaggedTelemetryPropertyValue>): void;\nuse_current_FunctionDeclaration_isTaggedTelemetryPropertyValue(\n get_old_FunctionDeclaration_isTaggedTelemetryPropertyValue());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isTaggedTelemetryPropertyValue\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_isTaggedTelemetryPropertyValue():\n TypeOnly<typeof current.isTaggedTelemetryPropertyValue>;\ndeclare function use_old_FunctionDeclaration_isTaggedTelemetryPropertyValue(\n use: TypeOnly<typeof old.isTaggedTelemetryPropertyValue>): void;\nuse_old_FunctionDeclaration_isTaggedTelemetryPropertyValue(\n get_current_FunctionDeclaration_isTaggedTelemetryPropertyValue());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isValidLegacyError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_isValidLegacyError():\n TypeOnly<typeof old.isValidLegacyError>;\ndeclare function use_current_FunctionDeclaration_isValidLegacyError(\n use: TypeOnly<typeof current.isValidLegacyError>): void;\nuse_current_FunctionDeclaration_isValidLegacyError(\n get_old_FunctionDeclaration_isValidLegacyError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_isValidLegacyError\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_isValidLegacyError():\n TypeOnly<typeof current.isValidLegacyError>;\ndeclare function use_old_FunctionDeclaration_isValidLegacyError(\n use: TypeOnly<typeof old.isValidLegacyError>): void;\nuse_old_FunctionDeclaration_isValidLegacyError(\n get_current_FunctionDeclaration_isValidLegacyError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedFunctionDeclaration_logIfFalse\": {\"forwardCompat\": false}\n*/\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"RemovedFunctionDeclaration_logIfFalse\": {\"backCompat\": false}\n*/\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_loggerToMonitoringContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_loggerToMonitoringContext():\n TypeOnly<typeof old.loggerToMonitoringContext>;\ndeclare function use_current_FunctionDeclaration_loggerToMonitoringContext(\n use: TypeOnly<typeof current.loggerToMonitoringContext>): void;\nuse_current_FunctionDeclaration_loggerToMonitoringContext(\n get_old_FunctionDeclaration_loggerToMonitoringContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_loggerToMonitoringContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_loggerToMonitoringContext():\n TypeOnly<typeof current.loggerToMonitoringContext>;\ndeclare function use_old_FunctionDeclaration_loggerToMonitoringContext(\n use: TypeOnly<typeof old.loggerToMonitoringContext>): void;\nuse_old_FunctionDeclaration_loggerToMonitoringContext(\n get_current_FunctionDeclaration_loggerToMonitoringContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_mixinMonitoringContext\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_mixinMonitoringContext():\n TypeOnly<typeof old.mixinMonitoringContext>;\ndeclare function use_current_FunctionDeclaration_mixinMonitoringContext(\n use: TypeOnly<typeof current.mixinMonitoringContext>): void;\nuse_current_FunctionDeclaration_mixinMonitoringContext(\n get_old_FunctionDeclaration_mixinMonitoringContext());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_mixinMonitoringContext\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_mixinMonitoringContext():\n TypeOnly<typeof current.mixinMonitoringContext>;\ndeclare function use_old_FunctionDeclaration_mixinMonitoringContext(\n use: TypeOnly<typeof old.mixinMonitoringContext>): void;\nuse_old_FunctionDeclaration_mixinMonitoringContext(\n get_current_FunctionDeclaration_mixinMonitoringContext());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_normalizeError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_normalizeError():\n TypeOnly<typeof old.normalizeError>;\ndeclare function use_current_FunctionDeclaration_normalizeError(\n use: TypeOnly<typeof current.normalizeError>): void;\nuse_current_FunctionDeclaration_normalizeError(\n get_old_FunctionDeclaration_normalizeError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_normalizeError\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_normalizeError():\n TypeOnly<typeof current.normalizeError>;\ndeclare function use_old_FunctionDeclaration_normalizeError(\n use: TypeOnly<typeof old.normalizeError>): void;\nuse_old_FunctionDeclaration_normalizeError(\n get_current_FunctionDeclaration_normalizeError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_numberFromString\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_numberFromString():\n TypeOnly<typeof old.numberFromString>;\ndeclare function use_current_FunctionDeclaration_numberFromString(\n use: TypeOnly<typeof current.numberFromString>): void;\nuse_current_FunctionDeclaration_numberFromString(\n get_old_FunctionDeclaration_numberFromString());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_numberFromString\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_numberFromString():\n TypeOnly<typeof current.numberFromString>;\ndeclare function use_old_FunctionDeclaration_numberFromString(\n use: TypeOnly<typeof old.numberFromString>): void;\nuse_old_FunctionDeclaration_numberFromString(\n get_current_FunctionDeclaration_numberFromString());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_overwriteStack\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_overwriteStack():\n TypeOnly<typeof old.overwriteStack>;\ndeclare function use_current_FunctionDeclaration_overwriteStack(\n use: TypeOnly<typeof current.overwriteStack>): void;\nuse_current_FunctionDeclaration_overwriteStack(\n get_old_FunctionDeclaration_overwriteStack());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_overwriteStack\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_overwriteStack():\n TypeOnly<typeof current.overwriteStack>;\ndeclare function use_old_FunctionDeclaration_overwriteStack(\n use: TypeOnly<typeof old.overwriteStack>): void;\nuse_old_FunctionDeclaration_overwriteStack(\n get_current_FunctionDeclaration_overwriteStack());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_raiseConnectedEvent\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_raiseConnectedEvent():\n TypeOnly<typeof old.raiseConnectedEvent>;\ndeclare function use_current_FunctionDeclaration_raiseConnectedEvent(\n use: TypeOnly<typeof current.raiseConnectedEvent>): void;\nuse_current_FunctionDeclaration_raiseConnectedEvent(\n get_old_FunctionDeclaration_raiseConnectedEvent());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_raiseConnectedEvent\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_raiseConnectedEvent():\n TypeOnly<typeof current.raiseConnectedEvent>;\ndeclare function use_old_FunctionDeclaration_raiseConnectedEvent(\n use: TypeOnly<typeof old.raiseConnectedEvent>): void;\nuse_old_FunctionDeclaration_raiseConnectedEvent(\n get_current_FunctionDeclaration_raiseConnectedEvent());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_safeRaiseEvent\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_safeRaiseEvent():\n TypeOnly<typeof old.safeRaiseEvent>;\ndeclare function use_current_FunctionDeclaration_safeRaiseEvent(\n use: TypeOnly<typeof current.safeRaiseEvent>): void;\nuse_current_FunctionDeclaration_safeRaiseEvent(\n get_old_FunctionDeclaration_safeRaiseEvent());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_safeRaiseEvent\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_safeRaiseEvent():\n TypeOnly<typeof current.safeRaiseEvent>;\ndeclare function use_old_FunctionDeclaration_safeRaiseEvent(\n use: TypeOnly<typeof old.safeRaiseEvent>): void;\nuse_old_FunctionDeclaration_safeRaiseEvent(\n get_current_FunctionDeclaration_safeRaiseEvent());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_sessionStorageConfigProvider\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_sessionStorageConfigProvider():\n TypeOnly<typeof old.sessionStorageConfigProvider>;\ndeclare function use_current_VariableDeclaration_sessionStorageConfigProvider(\n use: TypeOnly<typeof current.sessionStorageConfigProvider>): void;\nuse_current_VariableDeclaration_sessionStorageConfigProvider(\n get_old_VariableDeclaration_sessionStorageConfigProvider());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_sessionStorageConfigProvider\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_sessionStorageConfigProvider():\n TypeOnly<typeof current.sessionStorageConfigProvider>;\ndeclare function use_old_VariableDeclaration_sessionStorageConfigProvider(\n use: TypeOnly<typeof old.sessionStorageConfigProvider>): void;\nuse_old_VariableDeclaration_sessionStorageConfigProvider(\n get_current_VariableDeclaration_sessionStorageConfigProvider());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_tagCodeArtifacts\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_tagCodeArtifacts():\n TypeOnly<typeof old.tagCodeArtifacts>;\ndeclare function use_current_VariableDeclaration_tagCodeArtifacts(\n use: TypeOnly<typeof current.tagCodeArtifacts>): void;\nuse_current_VariableDeclaration_tagCodeArtifacts(\n get_old_VariableDeclaration_tagCodeArtifacts());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_tagCodeArtifacts\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_tagCodeArtifacts():\n TypeOnly<typeof current.tagCodeArtifacts>;\ndeclare function use_old_VariableDeclaration_tagCodeArtifacts(\n use: TypeOnly<typeof old.tagCodeArtifacts>): void;\nuse_old_VariableDeclaration_tagCodeArtifacts(\n get_current_VariableDeclaration_tagCodeArtifacts());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_tagData\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_VariableDeclaration_tagData():\n TypeOnly<typeof old.tagData>;\ndeclare function use_current_VariableDeclaration_tagData(\n use: TypeOnly<typeof current.tagData>): void;\nuse_current_VariableDeclaration_tagData(\n get_old_VariableDeclaration_tagData());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"VariableDeclaration_tagData\": {\"backCompat\": false}\n*/\ndeclare function get_current_VariableDeclaration_tagData():\n TypeOnly<typeof current.tagData>;\ndeclare function use_old_VariableDeclaration_tagData(\n use: TypeOnly<typeof old.tagData>): void;\nuse_old_VariableDeclaration_tagData(\n get_current_VariableDeclaration_tagData());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_validatePrecondition\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_validatePrecondition():\n TypeOnly<typeof old.validatePrecondition>;\ndeclare function use_current_FunctionDeclaration_validatePrecondition(\n use: TypeOnly<typeof current.validatePrecondition>): void;\nuse_current_FunctionDeclaration_validatePrecondition(\n get_old_FunctionDeclaration_validatePrecondition());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_validatePrecondition\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_validatePrecondition():\n TypeOnly<typeof current.validatePrecondition>;\ndeclare function use_old_FunctionDeclaration_validatePrecondition(\n use: TypeOnly<typeof old.validatePrecondition>): void;\nuse_old_FunctionDeclaration_validatePrecondition(\n get_current_FunctionDeclaration_validatePrecondition());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_wrapError\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_wrapError():\n TypeOnly<typeof old.wrapError>;\ndeclare function use_current_FunctionDeclaration_wrapError(\n use: TypeOnly<typeof current.wrapError>): void;\nuse_current_FunctionDeclaration_wrapError(\n get_old_FunctionDeclaration_wrapError());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_wrapError\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_wrapError():\n TypeOnly<typeof current.wrapError>;\ndeclare function use_old_FunctionDeclaration_wrapError(\n use: TypeOnly<typeof old.wrapError>): void;\nuse_old_FunctionDeclaration_wrapError(\n get_current_FunctionDeclaration_wrapError());\n\n/*\n* Validate forward compat by using old type in place of current type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_wrapErrorAndLog\": {\"forwardCompat\": false}\n*/\ndeclare function get_old_FunctionDeclaration_wrapErrorAndLog():\n TypeOnly<typeof old.wrapErrorAndLog>;\ndeclare function use_current_FunctionDeclaration_wrapErrorAndLog(\n use: TypeOnly<typeof current.wrapErrorAndLog>): void;\nuse_current_FunctionDeclaration_wrapErrorAndLog(\n get_old_FunctionDeclaration_wrapErrorAndLog());\n\n/*\n* Validate back compat by using current type in place of old type\n* If breaking change required, add in package.json under typeValidation.broken:\n* \"FunctionDeclaration_wrapErrorAndLog\": {\"backCompat\": false}\n*/\ndeclare function get_current_FunctionDeclaration_wrapErrorAndLog():\n TypeOnly<typeof current.wrapErrorAndLog>;\ndeclare function use_old_FunctionDeclaration_wrapErrorAndLog(\n use: TypeOnly<typeof old.wrapErrorAndLog>): void;\nuse_old_FunctionDeclaration_wrapErrorAndLog(\n get_current_FunctionDeclaration_wrapErrorAndLog());\n"]}
@@ -1,284 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { strict as assert } from "node:assert";
6
- import { createSampledLogger } from "../utils.js";
7
- import { TelemetryDataTag, tagCodeArtifacts, tagData } from "../logger.js";
8
- import { mixinMonitoringContext } from "../config.js";
9
- describe("tagData", () => {
10
- it("tagData with data", () => {
11
- const taggedData = tagData(TelemetryDataTag.CodeArtifact, { foo: "bar" });
12
- const expected = {
13
- foo: {
14
- value: "bar",
15
- tag: TelemetryDataTag.CodeArtifact,
16
- },
17
- };
18
- assert.deepStrictEqual(taggedData, expected);
19
- });
20
- it("tagData with undefined", () => {
21
- const taggedData = tagData(TelemetryDataTag.CodeArtifact, { none: undefined });
22
- const expected = {};
23
- assert.deepStrictEqual(taggedData, expected);
24
- });
25
- it("tagData with complex object", () => {
26
- const taggedData = tagData(TelemetryDataTag.CodeArtifact, {
27
- foo: "bar",
28
- none: undefined,
29
- number: 0,
30
- });
31
- const expected = {
32
- foo: {
33
- value: "bar",
34
- tag: TelemetryDataTag.CodeArtifact,
35
- },
36
- number: {
37
- value: 0,
38
- tag: TelemetryDataTag.CodeArtifact,
39
- },
40
- };
41
- assert.deepEqual(taggedData, expected);
42
- });
43
- });
44
- describe("Sampling", () => {
45
- let events = [];
46
- function getMockLoggerExtWithConfig(configDictionary) {
47
- const logger = {
48
- send(event) {
49
- events.push(event);
50
- },
51
- sendTelemetryEvent: (event) => {
52
- events.push(event);
53
- },
54
- sendErrorEvent: (event) => {
55
- events.push(event);
56
- },
57
- sendPerformanceEvent: (event) => {
58
- events.push(event);
59
- },
60
- };
61
- const configProvider = (settings) => ({
62
- getRawConfig: (name) => settings[name],
63
- });
64
- return mixinMonitoringContext(logger, configProvider(configDictionary ?? {})).logger;
65
- }
66
- /**
67
- * Creates an event sampler that uses a systematic approach to sampling (Sampling every nth event)
68
- */
69
- // eslint-disable-next-line unicorn/consistent-function-scoping
70
- function createSystematicEventSampler(options) {
71
- let eventCount = -1;
72
- return {
73
- sample: () => {
74
- eventCount++;
75
- const shouldSample = eventCount % options.samplingRate === 0;
76
- if (shouldSample) {
77
- eventCount = 0;
78
- }
79
- return shouldSample;
80
- },
81
- };
82
- }
83
- beforeEach(() => {
84
- events = [];
85
- });
86
- it("Events are not sampled if DisableSampling telemetry flag is set to true", () => {
87
- const injectedSettings = {
88
- "Fluid.Telemetry.DisableSampling": true,
89
- };
90
- const logger = getMockLoggerExtWithConfig(injectedSettings);
91
- const loggerWithoutSampling = createSampledLogger(logger, createSystematicEventSampler({ samplingRate: 1 }));
92
- const loggerWithEvery5Sampling = createSampledLogger(logger, createSystematicEventSampler({ samplingRate: 5 }));
93
- const totalEventCount = 15;
94
- for (let i = 0; i < totalEventCount; i++) {
95
- loggerWithoutSampling.send({ category: "generic", eventName: "noSampling" });
96
- loggerWithEvery5Sampling.send({ category: "generic", eventName: "oneEveryFive" });
97
- }
98
- assert.equal(events.filter((event) => event.eventName === "noSampling").length, totalEventCount);
99
- assert.equal(events.filter((event) => event.eventName === "oneEveryFive").length, totalEventCount);
100
- });
101
- it("Events are not sampled if DisableSampling telemetry flag is set to true and no sampler is provided", () => {
102
- const injectedSettings = {
103
- "Fluid.Telemetry.DisableSampling": true,
104
- };
105
- const logger = getMockLoggerExtWithConfig(injectedSettings);
106
- // Sampling is enabled AND there was no sampler provided
107
- const loggerWithoutSampling = createSampledLogger(logger);
108
- const totalEventCount = 15;
109
- for (let i = 0; i < totalEventCount; i++) {
110
- loggerWithoutSampling.send({ category: "generic", eventName: "noSampling" });
111
- }
112
- assert.equal(events.filter((event) => event.eventName === "noSampling").length, totalEventCount);
113
- });
114
- it("Events are not sampled if DisableSampling telemetry flag is set to false but no sampler is provided", () => {
115
- const injectedSettings = {
116
- "Fluid.Telemetry.DisableSampling": false,
117
- };
118
- const logger = getMockLoggerExtWithConfig(injectedSettings);
119
- // Sampling is enabled however there was no sampler provided so all events will be sent.
120
- const loggerWithoutSampling = createSampledLogger(logger);
121
- const totalEventCount = 15;
122
- for (let i = 0; i < totalEventCount; i++) {
123
- loggerWithoutSampling.send({ category: "generic", eventName: "noSampling" });
124
- }
125
- assert.equal(events.filter((event) => event.eventName === "noSampling").length, totalEventCount);
126
- });
127
- it("Systematic Sampling works as expected", () => {
128
- const injectedSettings = {
129
- "Fluid.Telemetry.DisableSampling": false,
130
- };
131
- const logger = getMockLoggerExtWithConfig(injectedSettings);
132
- const loggerWithoutSampling = createSampledLogger(logger, createSystematicEventSampler({ samplingRate: 1 }));
133
- const loggerWithEvery3Sampling = createSampledLogger(logger, createSystematicEventSampler({ samplingRate: 3 }));
134
- const loggerWithEvery5Sampling = createSampledLogger(logger, createSystematicEventSampler({ samplingRate: 5 }));
135
- const totalEventCount = 15;
136
- for (let i = 0; i < totalEventCount; i++) {
137
- loggerWithoutSampling.send({ category: "generic", eventName: "noSampling" });
138
- loggerWithEvery3Sampling.send({ category: "generic", eventName: "oneEveryThree" });
139
- loggerWithEvery5Sampling.send({ category: "generic", eventName: "oneEveryFive" });
140
- }
141
- assert.equal(events.filter((event) => event.eventName === "noSampling").length, totalEventCount);
142
- assert.equal(events.filter((event) => event.eventName === "oneEveryThree").length, totalEventCount / 3);
143
- assert.equal(events.filter((event) => event.eventName === "oneEveryFive").length, totalEventCount / 5);
144
- });
145
- it("Event Sampler works as expected with externally controlled state", () => {
146
- const injectedSettings = {
147
- "Fluid.Telemetry.DisableSampling": false,
148
- };
149
- const logger = getMockLoggerExtWithConfig(injectedSettings);
150
- let exampleAppDataNumber1 = 0;
151
- let exampleAppDataNumber2 = 10;
152
- let exampleAppDataBoolean1 = true;
153
- let exampleAppDataModeString = "ready";
154
- /* eslint-disable unicorn/consistent-function-scoping */
155
- const shouldSampleEvent = (appNumber1, appNumber2, appBoolean1, appMode) => {
156
- const shouldSample = appNumber1 < 1 && appNumber2 > 1 && appBoolean1 === true && appMode === "ready";
157
- return shouldSample;
158
- };
159
- /* eslint-enable */
160
- const customEventSampler = {
161
- sample: () => shouldSampleEvent(exampleAppDataNumber1, exampleAppDataNumber2, exampleAppDataBoolean1, exampleAppDataModeString),
162
- };
163
- const loggerWithSampling = createSampledLogger(logger, customEventSampler);
164
- const totalEventCount = 20;
165
- const eventName = "testEvent";
166
- for (let i = 0; i < totalEventCount; i++) {
167
- if (i % 2 === 0) {
168
- // These values should cause events to be emitted (sampler returns false)
169
- exampleAppDataNumber1 = -10;
170
- exampleAppDataNumber2 = 2;
171
- exampleAppDataBoolean1 = true;
172
- exampleAppDataModeString = "ready";
173
- }
174
- else {
175
- // These values should cause events to not be emitted (sampler returns true)
176
- exampleAppDataNumber1 = 0;
177
- exampleAppDataNumber2 = 10;
178
- exampleAppDataBoolean1 = true;
179
- exampleAppDataModeString = "not_ready";
180
- }
181
- loggerWithSampling.send({
182
- category: "generic",
183
- eventName,
184
- eventNumber: i,
185
- appNumber1: exampleAppDataNumber1,
186
- appNumber2: exampleAppDataNumber2,
187
- appBoolean1: exampleAppDataBoolean1,
188
- appModeString: exampleAppDataModeString,
189
- });
190
- }
191
- const emittedEvents = events.filter((event) => event.eventName === eventName);
192
- assert.equal(emittedEvents.length === 10, true);
193
- for (const event of emittedEvents) {
194
- const typedEvent = event;
195
- assert.equal(shouldSampleEvent(typedEvent.appNumber1, typedEvent.appNumber2, typedEvent.appBoolean1, typedEvent.appModeString), true);
196
- }
197
- });
198
- });
199
- describe("tagCodeArtifacts", () => {
200
- it("tagCodeArtifacts with undefined", () => {
201
- const taggedData = tagCodeArtifacts({ node: undefined });
202
- const expected = {};
203
- assert.deepStrictEqual(taggedData, expected, "undefined not tagged as expected");
204
- });
205
- it("tagCodeArtifacts with TelemetryBaseEventPropertyType properties", () => {
206
- const taggedData = tagCodeArtifacts({
207
- string: "foo",
208
- number: 0,
209
- boolean: true,
210
- none: undefined,
211
- });
212
- const expected = {
213
- string: {
214
- value: "foo",
215
- tag: TelemetryDataTag.CodeArtifact,
216
- },
217
- number: {
218
- value: 0,
219
- tag: TelemetryDataTag.CodeArtifact,
220
- },
221
- boolean: {
222
- value: true,
223
- tag: TelemetryDataTag.CodeArtifact,
224
- },
225
- };
226
- assert.deepStrictEqual(taggedData, expected, "TelemetryBaseEventPropertyType not tagged as expected");
227
- });
228
- it("tagCodeArtifacts with TelemetryBaseEventPropertyType getters", () => {
229
- const taggedData = tagCodeArtifacts({
230
- string: () => "foo",
231
- number: () => 0,
232
- boolean: () => true,
233
- });
234
- const stringValue = taggedData.string();
235
- const numberValue = taggedData.number();
236
- const booleanValue = taggedData.boolean();
237
- assert.deepStrictEqual(stringValue, {
238
- tag: TelemetryDataTag.CodeArtifact,
239
- value: "foo",
240
- }, "string getter not tagged as expected");
241
- assert.deepStrictEqual(numberValue, {
242
- tag: TelemetryDataTag.CodeArtifact,
243
- value: 0,
244
- }, "number getter not tagged as expected");
245
- assert.deepStrictEqual(booleanValue, {
246
- tag: TelemetryDataTag.CodeArtifact,
247
- value: true,
248
- }, "boolean getter not tagged as expected");
249
- });
250
- it("tagCodeArtifacts with both TelemetryBaseEventPropertyType properties and getters", () => {
251
- const expectedStringValue = {
252
- tag: TelemetryDataTag.CodeArtifact,
253
- value: "foo",
254
- };
255
- const expectedNumberValue = {
256
- tag: TelemetryDataTag.CodeArtifact,
257
- value: 0,
258
- };
259
- const expectedBooleanValue = {
260
- tag: TelemetryDataTag.CodeArtifact,
261
- value: true,
262
- };
263
- const taggedData = tagCodeArtifacts({
264
- string: "foo",
265
- number: 0,
266
- boolean: true,
267
- stringGetter: () => "foo",
268
- numberGetter: () => 0,
269
- booleanGetter: () => true,
270
- });
271
- // Validate basic properties are tagged.
272
- assert.deepStrictEqual(taggedData.string, expectedStringValue, "string property not tagged as expected");
273
- assert.deepStrictEqual(taggedData.number, expectedNumberValue, "number property not tagged as expected");
274
- assert.deepStrictEqual(taggedData.boolean, expectedBooleanValue, "boolean property not tagged as expected");
275
- // Validate getters are tagged.
276
- const stringValue = taggedData.stringGetter();
277
- const numberValue = taggedData.numberGetter();
278
- const booleanValue = taggedData.booleanGetter();
279
- assert.deepStrictEqual(stringValue, expectedStringValue, "string getter not tagged as expected");
280
- assert.deepStrictEqual(numberValue, expectedNumberValue, "number getter not tagged as expected");
281
- assert.deepStrictEqual(booleanValue, expectedBooleanValue, "boolean getter not tagged as expected");
282
- });
283
- });
284
- //# sourceMappingURL=utils.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/test/utils.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\nimport { strict as assert } from \"node:assert\";\nimport {\n\tConfigTypes,\n\tIConfigProviderBase,\n\tITelemetryBaseEvent,\n} from \"@fluidframework/core-interfaces\";\nimport { IEventSampler, createSampledLogger } from \"../utils.js\";\nimport { TelemetryDataTag, tagCodeArtifacts, tagData } from \"../logger.js\";\nimport { mixinMonitoringContext } from \"../config.js\";\nimport { ITelemetryGenericEventExt, ITelemetryLoggerExt } from \"../telemetryTypes.js\";\n\ndescribe(\"tagData\", () => {\n\tit(\"tagData with data\", () => {\n\t\tconst taggedData = tagData(TelemetryDataTag.CodeArtifact, { foo: \"bar\" });\n\t\tconst expected: typeof taggedData = {\n\t\t\tfoo: {\n\t\t\t\tvalue: \"bar\",\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t},\n\t\t};\n\t\tassert.deepStrictEqual(taggedData, expected);\n\t});\n\tit(\"tagData with undefined\", () => {\n\t\tconst taggedData = tagData(TelemetryDataTag.CodeArtifact, { none: undefined });\n\t\tconst expected: Partial<typeof taggedData> = {};\n\t\tassert.deepStrictEqual(taggedData, expected);\n\t});\n\n\tit(\"tagData with complex object\", () => {\n\t\tconst taggedData = tagData(TelemetryDataTag.CodeArtifact, {\n\t\t\tfoo: \"bar\",\n\t\t\tnone: undefined,\n\t\t\tnumber: 0,\n\t\t});\n\t\tconst expected: Partial<typeof taggedData> = {\n\t\t\tfoo: {\n\t\t\t\tvalue: \"bar\",\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t},\n\t\t\tnumber: {\n\t\t\t\tvalue: 0,\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t},\n\t\t};\n\n\t\tassert.deepEqual(taggedData, expected);\n\t});\n});\n\ndescribe(\"Sampling\", () => {\n\tlet events: (ITelemetryBaseEvent | ITelemetryGenericEventExt)[] = [];\n\n\tfunction getMockLoggerExtWithConfig(\n\t\tconfigDictionary?: Record<string, ConfigTypes>,\n\t): ITelemetryLoggerExt {\n\t\tconst logger: ITelemetryLoggerExt = {\n\t\t\tsend(event: ITelemetryBaseEvent): void {\n\t\t\t\tevents.push(event);\n\t\t\t},\n\t\t\tsendTelemetryEvent: (event) => {\n\t\t\t\tevents.push(event);\n\t\t\t},\n\t\t\tsendErrorEvent: (event) => {\n\t\t\t\tevents.push(event);\n\t\t\t},\n\t\t\tsendPerformanceEvent: (event) => {\n\t\t\t\tevents.push(event);\n\t\t\t},\n\t\t};\n\n\t\tconst configProvider = (settings: Record<string, ConfigTypes>): IConfigProviderBase => ({\n\t\t\tgetRawConfig: (name: string): ConfigTypes => settings[name],\n\t\t});\n\n\t\treturn mixinMonitoringContext(logger, configProvider(configDictionary ?? {})).logger;\n\t}\n\n\t/**\n\t * Creates an event sampler that uses a systematic approach to sampling (Sampling every nth event)\n\t */\n\t// eslint-disable-next-line unicorn/consistent-function-scoping\n\tfunction createSystematicEventSampler(options: { samplingRate: number }): IEventSampler {\n\t\tlet eventCount = -1;\n\t\treturn {\n\t\t\tsample: (): boolean => {\n\t\t\t\teventCount++;\n\t\t\t\tconst shouldSample = eventCount % options.samplingRate === 0;\n\t\t\t\tif (shouldSample) {\n\t\t\t\t\teventCount = 0;\n\t\t\t\t}\n\t\t\t\treturn shouldSample;\n\t\t\t},\n\t\t};\n\t}\n\n\tbeforeEach(() => {\n\t\tevents = [];\n\t});\n\n\tit(\"Events are not sampled if DisableSampling telemetry flag is set to true\", () => {\n\t\tconst injectedSettings = {\n\t\t\t\"Fluid.Telemetry.DisableSampling\": true,\n\t\t};\n\t\tconst logger = getMockLoggerExtWithConfig(injectedSettings);\n\n\t\tconst loggerWithoutSampling = createSampledLogger(\n\t\t\tlogger,\n\t\t\tcreateSystematicEventSampler({ samplingRate: 1 }),\n\t\t);\n\t\tconst loggerWithEvery5Sampling = createSampledLogger(\n\t\t\tlogger,\n\t\t\tcreateSystematicEventSampler({ samplingRate: 5 }),\n\t\t);\n\n\t\tconst totalEventCount = 15;\n\t\tfor (let i = 0; i < totalEventCount; i++) {\n\t\t\tloggerWithoutSampling.send({ category: \"generic\", eventName: \"noSampling\" });\n\t\t\tloggerWithEvery5Sampling.send({ category: \"generic\", eventName: \"oneEveryFive\" });\n\t\t}\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"noSampling\").length,\n\t\t\ttotalEventCount,\n\t\t);\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"oneEveryFive\").length,\n\t\t\ttotalEventCount,\n\t\t);\n\t});\n\n\tit(\"Events are not sampled if DisableSampling telemetry flag is set to true and no sampler is provided\", () => {\n\t\tconst injectedSettings = {\n\t\t\t\"Fluid.Telemetry.DisableSampling\": true,\n\t\t};\n\t\tconst logger = getMockLoggerExtWithConfig(injectedSettings);\n\n\t\t// Sampling is enabled AND there was no sampler provided\n\t\tconst loggerWithoutSampling = createSampledLogger(logger);\n\n\t\tconst totalEventCount = 15;\n\t\tfor (let i = 0; i < totalEventCount; i++) {\n\t\t\tloggerWithoutSampling.send({ category: \"generic\", eventName: \"noSampling\" });\n\t\t}\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"noSampling\").length,\n\t\t\ttotalEventCount,\n\t\t);\n\t});\n\n\tit(\"Events are not sampled if DisableSampling telemetry flag is set to false but no sampler is provided\", () => {\n\t\tconst injectedSettings = {\n\t\t\t\"Fluid.Telemetry.DisableSampling\": false,\n\t\t};\n\t\tconst logger = getMockLoggerExtWithConfig(injectedSettings);\n\n\t\t// Sampling is enabled however there was no sampler provided so all events will be sent.\n\t\tconst loggerWithoutSampling = createSampledLogger(logger);\n\n\t\tconst totalEventCount = 15;\n\t\tfor (let i = 0; i < totalEventCount; i++) {\n\t\t\tloggerWithoutSampling.send({ category: \"generic\", eventName: \"noSampling\" });\n\t\t}\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"noSampling\").length,\n\t\t\ttotalEventCount,\n\t\t);\n\t});\n\n\tit(\"Systematic Sampling works as expected\", () => {\n\t\tconst injectedSettings = {\n\t\t\t\"Fluid.Telemetry.DisableSampling\": false,\n\t\t};\n\t\tconst logger = getMockLoggerExtWithConfig(injectedSettings);\n\n\t\tconst loggerWithoutSampling = createSampledLogger(\n\t\t\tlogger,\n\t\t\tcreateSystematicEventSampler({ samplingRate: 1 }),\n\t\t);\n\t\tconst loggerWithEvery3Sampling = createSampledLogger(\n\t\t\tlogger,\n\t\t\tcreateSystematicEventSampler({ samplingRate: 3 }),\n\t\t);\n\t\tconst loggerWithEvery5Sampling = createSampledLogger(\n\t\t\tlogger,\n\t\t\tcreateSystematicEventSampler({ samplingRate: 5 }),\n\t\t);\n\n\t\tconst totalEventCount = 15;\n\t\tfor (let i = 0; i < totalEventCount; i++) {\n\t\t\tloggerWithoutSampling.send({ category: \"generic\", eventName: \"noSampling\" });\n\t\t\tloggerWithEvery3Sampling.send({ category: \"generic\", eventName: \"oneEveryThree\" });\n\t\t\tloggerWithEvery5Sampling.send({ category: \"generic\", eventName: \"oneEveryFive\" });\n\t\t}\n\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"noSampling\").length,\n\t\t\ttotalEventCount,\n\t\t);\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"oneEveryThree\").length,\n\t\t\ttotalEventCount / 3,\n\t\t);\n\t\tassert.equal(\n\t\t\tevents.filter((event) => event.eventName === \"oneEveryFive\").length,\n\t\t\ttotalEventCount / 5,\n\t\t);\n\t});\n\n\tit(\"Event Sampler works as expected with externally controlled state\", () => {\n\t\tconst injectedSettings = {\n\t\t\t\"Fluid.Telemetry.DisableSampling\": false,\n\t\t};\n\t\tconst logger = getMockLoggerExtWithConfig(injectedSettings);\n\n\t\tinterface ExampleEvent extends ITelemetryBaseEvent {\n\t\t\teventNumber: number;\n\t\t\tappNumber1: number;\n\t\t\tappNumber2: number;\n\t\t\tappBoolean1: boolean;\n\t\t\tappModeString: string;\n\t\t}\n\n\t\tlet exampleAppDataNumber1 = 0;\n\t\tlet exampleAppDataNumber2 = 10;\n\t\tlet exampleAppDataBoolean1 = true;\n\t\tlet exampleAppDataModeString = \"ready\";\n\n\t\t/* eslint-disable unicorn/consistent-function-scoping */\n\t\tconst shouldSampleEvent = (\n\t\t\tappNumber1: number,\n\t\t\tappNumber2: number,\n\t\t\tappBoolean1: boolean,\n\t\t\tappMode: string,\n\t\t): boolean => {\n\t\t\tconst shouldSample =\n\t\t\t\tappNumber1 < 1 && appNumber2 > 1 && appBoolean1 === true && appMode === \"ready\";\n\n\t\t\treturn shouldSample;\n\t\t};\n\t\t/* eslint-enable */\n\n\t\tconst customEventSampler: IEventSampler = {\n\t\t\tsample: () =>\n\t\t\t\tshouldSampleEvent(\n\t\t\t\t\texampleAppDataNumber1,\n\t\t\t\t\texampleAppDataNumber2,\n\t\t\t\t\texampleAppDataBoolean1,\n\t\t\t\t\texampleAppDataModeString,\n\t\t\t\t),\n\t\t};\n\n\t\tconst loggerWithSampling = createSampledLogger(logger, customEventSampler);\n\n\t\tconst totalEventCount = 20;\n\t\tconst eventName = \"testEvent\";\n\t\tfor (let i = 0; i < totalEventCount; i++) {\n\t\t\tif (i % 2 === 0) {\n\t\t\t\t// These values should cause events to be emitted (sampler returns false)\n\t\t\t\texampleAppDataNumber1 = -10;\n\t\t\t\texampleAppDataNumber2 = 2;\n\t\t\t\texampleAppDataBoolean1 = true;\n\t\t\t\texampleAppDataModeString = \"ready\";\n\t\t\t} else {\n\t\t\t\t// These values should cause events to not be emitted (sampler returns true)\n\t\t\t\texampleAppDataNumber1 = 0;\n\t\t\t\texampleAppDataNumber2 = 10;\n\t\t\t\texampleAppDataBoolean1 = true;\n\t\t\t\texampleAppDataModeString = \"not_ready\";\n\t\t\t}\n\n\t\t\tloggerWithSampling.send({\n\t\t\t\tcategory: \"generic\",\n\t\t\t\teventName,\n\t\t\t\teventNumber: i,\n\t\t\t\tappNumber1: exampleAppDataNumber1,\n\t\t\t\tappNumber2: exampleAppDataNumber2,\n\t\t\t\tappBoolean1: exampleAppDataBoolean1,\n\t\t\t\tappModeString: exampleAppDataModeString,\n\t\t\t});\n\t\t}\n\n\t\tconst emittedEvents = events.filter((event) => event.eventName === eventName);\n\t\tassert.equal(emittedEvents.length === 10, true);\n\t\tfor (const event of emittedEvents) {\n\t\t\tconst typedEvent = event as ExampleEvent;\n\t\t\tassert.equal(\n\t\t\t\tshouldSampleEvent(\n\t\t\t\t\ttypedEvent.appNumber1,\n\t\t\t\t\ttypedEvent.appNumber2,\n\t\t\t\t\ttypedEvent.appBoolean1,\n\t\t\t\t\ttypedEvent.appModeString,\n\t\t\t\t),\n\t\t\t\ttrue,\n\t\t\t);\n\t\t}\n\t});\n});\n\ndescribe(\"tagCodeArtifacts\", () => {\n\tit(\"tagCodeArtifacts with undefined\", () => {\n\t\tconst taggedData = tagCodeArtifacts({ node: undefined });\n\t\tconst expected: Partial<typeof taggedData> = {};\n\t\tassert.deepStrictEqual(taggedData, expected, \"undefined not tagged as expected\");\n\t});\n\n\tit(\"tagCodeArtifacts with TelemetryBaseEventPropertyType properties\", () => {\n\t\tconst taggedData = tagCodeArtifacts({\n\t\t\tstring: \"foo\",\n\t\t\tnumber: 0,\n\t\t\tboolean: true,\n\t\t\tnone: undefined,\n\t\t});\n\t\tconst expected: Partial<typeof taggedData> = {\n\t\t\tstring: {\n\t\t\t\tvalue: \"foo\",\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t},\n\t\t\tnumber: {\n\t\t\t\tvalue: 0,\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t},\n\t\t\tboolean: {\n\t\t\t\tvalue: true,\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t},\n\t\t};\n\t\tassert.deepStrictEqual(\n\t\t\ttaggedData,\n\t\t\texpected,\n\t\t\t\"TelemetryBaseEventPropertyType not tagged as expected\",\n\t\t);\n\t});\n\n\tit(\"tagCodeArtifacts with TelemetryBaseEventPropertyType getters\", () => {\n\t\tconst taggedData = tagCodeArtifacts({\n\t\t\tstring: () => \"foo\",\n\t\t\tnumber: () => 0,\n\t\t\tboolean: () => true,\n\t\t});\n\t\tconst stringValue = taggedData.string();\n\t\tconst numberValue = taggedData.number();\n\t\tconst booleanValue = taggedData.boolean();\n\n\t\tassert.deepStrictEqual(\n\t\t\tstringValue,\n\t\t\t{\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\tvalue: \"foo\",\n\t\t\t},\n\t\t\t\"string getter not tagged as expected\",\n\t\t);\n\t\tassert.deepStrictEqual(\n\t\t\tnumberValue,\n\t\t\t{\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\tvalue: 0,\n\t\t\t},\n\t\t\t\"number getter not tagged as expected\",\n\t\t);\n\t\tassert.deepStrictEqual(\n\t\t\tbooleanValue,\n\t\t\t{\n\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\tvalue: true,\n\t\t\t},\n\t\t\t\"boolean getter not tagged as expected\",\n\t\t);\n\t});\n\n\tit(\"tagCodeArtifacts with both TelemetryBaseEventPropertyType properties and getters\", () => {\n\t\tconst expectedStringValue = {\n\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\tvalue: \"foo\",\n\t\t};\n\t\tconst expectedNumberValue = {\n\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\tvalue: 0,\n\t\t};\n\t\tconst expectedBooleanValue = {\n\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\tvalue: true,\n\t\t};\n\n\t\tconst taggedData = tagCodeArtifacts({\n\t\t\tstring: \"foo\",\n\t\t\tnumber: 0,\n\t\t\tboolean: true,\n\t\t\tstringGetter: () => \"foo\",\n\t\t\tnumberGetter: () => 0,\n\t\t\tbooleanGetter: () => true,\n\t\t});\n\n\t\t// Validate basic properties are tagged.\n\t\tassert.deepStrictEqual(\n\t\t\ttaggedData.string,\n\t\t\texpectedStringValue,\n\t\t\t\"string property not tagged as expected\",\n\t\t);\n\t\tassert.deepStrictEqual(\n\t\t\ttaggedData.number,\n\t\t\texpectedNumberValue,\n\t\t\t\"number property not tagged as expected\",\n\t\t);\n\t\tassert.deepStrictEqual(\n\t\t\ttaggedData.boolean,\n\t\t\texpectedBooleanValue,\n\t\t\t\"boolean property not tagged as expected\",\n\t\t);\n\n\t\t// Validate getters are tagged.\n\t\tconst stringValue = taggedData.stringGetter();\n\t\tconst numberValue = taggedData.numberGetter();\n\t\tconst booleanValue = taggedData.booleanGetter();\n\t\tassert.deepStrictEqual(\n\t\t\tstringValue,\n\t\t\texpectedStringValue,\n\t\t\t\"string getter not tagged as expected\",\n\t\t);\n\t\tassert.deepStrictEqual(\n\t\t\tnumberValue,\n\t\t\texpectedNumberValue,\n\t\t\t\"number getter not tagged as expected\",\n\t\t);\n\t\tassert.deepStrictEqual(\n\t\t\tbooleanValue,\n\t\t\texpectedBooleanValue,\n\t\t\t\"boolean getter not tagged as expected\",\n\t\t);\n\t});\n});\n"]}
File without changes