@fluid-internal/client-utils 2.0.0-dev-rc.1.0.0.232845 → 2.0.0-dev-rc.2.0.0.246488

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 (155) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +4 -0
  4. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  5. package/api-extractor-lint.json +1 -1
  6. package/api-extractor.json +1 -1
  7. package/api-report/client-utils.api.md +8 -27
  8. package/dist/base64Encoding.js +4 -4
  9. package/dist/base64Encoding.js.map +1 -1
  10. package/dist/client-utils-alpha.d.ts +6 -11
  11. package/dist/client-utils-beta.d.ts +5 -11
  12. package/dist/client-utils-public.d.ts +5 -11
  13. package/dist/client-utils-untrimmed.d.ts +9 -39
  14. package/dist/eventEmitter.cjs +11 -0
  15. package/dist/eventEmitter.cjs.map +1 -0
  16. package/{lib/index.d.mts → dist/eventEmitter.d.cts} +2 -2
  17. package/dist/eventEmitter.d.cts.map +1 -0
  18. package/dist/hashFileBrowser.d.ts +1 -1
  19. package/dist/hashFileBrowser.d.ts.map +1 -1
  20. package/dist/hashFileBrowser.js +2 -2
  21. package/dist/hashFileBrowser.js.map +1 -1
  22. package/dist/hashFileNode.d.ts +1 -1
  23. package/dist/hashFileNode.d.ts.map +1 -1
  24. package/dist/hashFileNode.js.map +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/indexBrowser.d.ts +9 -9
  30. package/dist/indexBrowser.d.ts.map +1 -1
  31. package/dist/indexBrowser.js +24 -24
  32. package/dist/indexBrowser.js.map +1 -1
  33. package/dist/indexNode.d.ts +10 -10
  34. package/dist/indexNode.d.ts.map +1 -1
  35. package/dist/indexNode.js +23 -23
  36. package/dist/indexNode.js.map +1 -1
  37. package/dist/package.json +7 -0
  38. package/dist/trace.js +3 -3
  39. package/dist/trace.js.map +1 -1
  40. package/dist/tsdoc-metadata.json +1 -1
  41. package/dist/typedEventEmitter.d.ts +3 -6
  42. package/dist/typedEventEmitter.d.ts.map +1 -1
  43. package/dist/typedEventEmitter.js +2 -4
  44. package/dist/typedEventEmitter.js.map +1 -1
  45. package/{jest-puppeteer.config.js → jest-puppeteer.config.cjs} +4 -1
  46. package/{jest.config.js → jest.config.cjs} +1 -0
  47. package/lib/{base64Encoding.d.mts → base64Encoding.d.ts} +1 -1
  48. package/lib/base64Encoding.d.ts.map +1 -0
  49. package/lib/{base64Encoding.mjs → base64Encoding.js} +2 -2
  50. package/lib/base64Encoding.js.map +1 -0
  51. package/lib/{bufferBrowser.d.mts → bufferBrowser.d.ts} +1 -1
  52. package/lib/bufferBrowser.d.ts.map +1 -0
  53. package/lib/{bufferBrowser.mjs → bufferBrowser.js} +1 -1
  54. package/lib/bufferBrowser.js.map +1 -0
  55. package/lib/{bufferNode.d.mts → bufferNode.d.ts} +1 -1
  56. package/lib/bufferNode.d.ts.map +1 -0
  57. package/lib/{bufferNode.mjs → bufferNode.js} +1 -1
  58. package/lib/bufferNode.js.map +1 -0
  59. package/lib/{bufferShared.d.mts → bufferShared.d.ts} +1 -1
  60. package/lib/bufferShared.d.ts.map +1 -0
  61. package/lib/{bufferShared.mjs → bufferShared.js} +1 -1
  62. package/lib/bufferShared.js.map +1 -0
  63. package/lib/{client-utils-alpha.d.mts → client-utils-alpha.d.ts} +6 -11
  64. package/lib/{client-utils-public.d.mts → client-utils-beta.d.ts} +5 -11
  65. package/lib/{client-utils-beta.d.mts → client-utils-public.d.ts} +5 -11
  66. package/lib/{client-utils-untrimmed.d.mts → client-utils-untrimmed.d.ts} +9 -39
  67. package/lib/eventEmitter.cjs +11 -0
  68. package/lib/eventEmitter.cjs.map +1 -0
  69. package/lib/eventEmitter.d.cts +6 -0
  70. package/lib/eventEmitter.d.cts.map +1 -0
  71. package/lib/{hashFileNode.d.mts → hashFileBrowser.d.ts} +2 -2
  72. package/lib/hashFileBrowser.d.ts.map +1 -0
  73. package/lib/{hashFileBrowser.mjs → hashFileBrowser.js} +5 -3
  74. package/lib/{hashFileBrowser.mjs.map → hashFileBrowser.js.map} +1 -1
  75. package/lib/{hashFileBrowser.d.mts → hashFileNode.d.ts} +2 -2
  76. package/lib/hashFileNode.d.ts.map +1 -0
  77. package/lib/{hashFileNode.mjs → hashFileNode.js} +1 -1
  78. package/lib/hashFileNode.js.map +1 -0
  79. package/lib/{index.mjs → index.d.ts} +2 -2
  80. package/lib/index.d.ts.map +1 -0
  81. package/lib/index.js +10 -0
  82. package/lib/index.js.map +1 -0
  83. package/lib/indexBrowser.d.ts +14 -0
  84. package/lib/indexBrowser.d.ts.map +1 -0
  85. package/lib/indexBrowser.js +13 -0
  86. package/lib/indexBrowser.js.map +1 -0
  87. package/lib/indexNode.d.ts +15 -0
  88. package/lib/indexNode.d.ts.map +1 -0
  89. package/lib/indexNode.js +13 -0
  90. package/lib/indexNode.js.map +1 -0
  91. package/lib/{performanceIsomorphic.d.mts → performanceIsomorphic.d.ts} +1 -1
  92. package/lib/performanceIsomorphic.d.ts.map +1 -0
  93. package/lib/{performanceIsomorphic.mjs → performanceIsomorphic.js} +1 -1
  94. package/lib/performanceIsomorphic.js.map +1 -0
  95. package/lib/test/mocha/typedEventEmitter.spec.js +43 -0
  96. package/lib/test/mocha/typedEventEmitter.spec.js.map +1 -0
  97. package/lib/test/types/validateClientUtilsPrevious.generated.js +42 -0
  98. package/lib/test/types/validateClientUtilsPrevious.generated.js.map +1 -0
  99. package/lib/{trace.d.mts → trace.d.ts} +1 -1
  100. package/lib/trace.d.ts.map +1 -0
  101. package/lib/{trace.mjs → trace.js} +2 -2
  102. package/lib/trace.js.map +1 -0
  103. package/lib/{typedEventEmitter.d.mts → typedEventEmitter.d.ts} +4 -7
  104. package/lib/typedEventEmitter.d.ts.map +1 -0
  105. package/lib/{typedEventEmitter.mjs → typedEventEmitter.js} +2 -2
  106. package/lib/typedEventEmitter.js.map +1 -0
  107. package/package.json +50 -35
  108. package/src/base64Encoding.ts +1 -1
  109. package/src/cjs/package.json +7 -0
  110. package/src/eventEmitter.cts +7 -0
  111. package/src/hashFileBrowser.ts +1 -1
  112. package/src/hashFileNode.ts +1 -1
  113. package/src/index.ts +1 -1
  114. package/src/indexBrowser.ts +13 -9
  115. package/src/indexNode.ts +14 -10
  116. package/src/trace.ts +1 -1
  117. package/src/typedEventEmitter.ts +3 -8
  118. package/tsconfig.cjs.json +7 -0
  119. package/tsconfig.json +4 -7
  120. package/dist/eventForwarder.d.ts +0 -34
  121. package/dist/eventForwarder.d.ts.map +0 -1
  122. package/dist/eventForwarder.js +0 -98
  123. package/dist/eventForwarder.js.map +0 -1
  124. package/lib/base64Encoding.d.mts.map +0 -1
  125. package/lib/base64Encoding.mjs.map +0 -1
  126. package/lib/bufferBrowser.d.mts.map +0 -1
  127. package/lib/bufferBrowser.mjs.map +0 -1
  128. package/lib/bufferNode.d.mts.map +0 -1
  129. package/lib/bufferNode.mjs.map +0 -1
  130. package/lib/bufferShared.d.mts.map +0 -1
  131. package/lib/bufferShared.mjs.map +0 -1
  132. package/lib/eventForwarder.d.mts +0 -34
  133. package/lib/eventForwarder.d.mts.map +0 -1
  134. package/lib/eventForwarder.mjs +0 -94
  135. package/lib/eventForwarder.mjs.map +0 -1
  136. package/lib/hashFileBrowser.d.mts.map +0 -1
  137. package/lib/hashFileNode.d.mts.map +0 -1
  138. package/lib/hashFileNode.mjs.map +0 -1
  139. package/lib/index.d.mts.map +0 -1
  140. package/lib/index.mjs.map +0 -1
  141. package/lib/indexBrowser.d.mts +0 -14
  142. package/lib/indexBrowser.d.mts.map +0 -1
  143. package/lib/indexBrowser.mjs +0 -13
  144. package/lib/indexBrowser.mjs.map +0 -1
  145. package/lib/indexNode.d.mts +0 -15
  146. package/lib/indexNode.d.mts.map +0 -1
  147. package/lib/indexNode.mjs +0 -13
  148. package/lib/indexNode.mjs.map +0 -1
  149. package/lib/performanceIsomorphic.d.mts.map +0 -1
  150. package/lib/performanceIsomorphic.mjs.map +0 -1
  151. package/lib/trace.d.mts.map +0 -1
  152. package/lib/trace.mjs.map +0 -1
  153. package/lib/typedEventEmitter.d.mts.map +0 -1
  154. package/lib/typedEventEmitter.mjs.map +0 -1
  155. package/src/eventForwarder.ts +0 -122
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-internal/client-utils",
3
- "version": "2.0.0-dev-rc.1.0.0.232845",
3
+ "version": "2.0.0-dev-rc.2.0.0.246488",
4
4
  "description": "Not intended for use outside the Fluid Framework.",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -11,11 +11,12 @@
11
11
  "license": "MIT",
12
12
  "author": "Microsoft and contributors",
13
13
  "sideEffects": false,
14
+ "type": "module",
14
15
  "exports": {
15
16
  ".": {
16
17
  "import": {
17
- "types": "./lib/indexNode.d.mts",
18
- "default": "./lib/indexNode.mjs"
18
+ "types": "./lib/indexNode.d.ts",
19
+ "default": "./lib/indexNode.js"
19
20
  },
20
21
  "require": {
21
22
  "types": "./dist/indexNode.d.ts",
@@ -24,12 +25,11 @@
24
25
  }
25
26
  },
26
27
  "main": "dist/indexNode.js",
27
- "module": "lib/indexNode.mjs",
28
28
  "browser": {
29
29
  "./dist/indexNode.js": "./dist/indexBrowser.js",
30
30
  "./dist/indexNode.d.ts": "./dist/indexBrowser.d.ts",
31
- "./lib/indexNode.mjs": "./lib/indexBrowser.mjs",
32
- "./lib/indexNode.d.mts": "./lib/indexBrowser.d.mts"
31
+ "./lib/indexNode.js": "./lib/indexBrowser.js",
32
+ "./lib/indexNode.d.ts": "./lib/indexBrowser.d.ts"
33
33
  },
34
34
  "types": "dist/indexNode.d.ts",
35
35
  "c8": {
@@ -53,61 +53,61 @@
53
53
  "temp-directory": "nyc/.nyc_output"
54
54
  },
55
55
  "dependencies": {
56
- "@fluidframework/core-interfaces": "2.0.0-dev-rc.1.0.0.232845",
57
- "@fluidframework/core-utils": "2.0.0-dev-rc.1.0.0.232845",
58
- "@types/events": "^3.0.0",
56
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.2.0.0.246488",
57
+ "@fluidframework/core-utils": "2.0.0-dev-rc.2.0.0.246488",
58
+ "@types/events_pkg": "npm:@types/events@^3.0.0",
59
59
  "base64-js": "^1.5.1",
60
60
  "buffer": "^6.0.3",
61
- "events": "^3.1.0",
61
+ "events_pkg": "npm:events@^3.1.0",
62
62
  "lodash": "^4.17.21",
63
63
  "sha.js": "^2.4.11"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@arethetypeswrong/cli": "^0.13.3",
67
67
  "@fluid-internal/client-utils-previous": "npm:@fluid-internal/client-utils@2.0.0-internal.8.0.0",
68
- "@fluid-tools/build-cli": "^0.29.0",
68
+ "@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.2.0.0.246488",
69
+ "@fluid-tools/build-cli": "^0.34.0",
69
70
  "@fluidframework/build-common": "^2.0.3",
70
- "@fluidframework/build-tools": "^0.29.0",
71
- "@fluidframework/eslint-config-fluid": "^3.3.0",
72
- "@fluidframework/mocha-test-setup": "2.0.0-dev-rc.1.0.0.232845",
73
- "@microsoft/api-extractor": "^7.39.1",
71
+ "@fluidframework/build-tools": "^0.34.0",
72
+ "@fluidframework/eslint-config-fluid": "^5.1.0",
73
+ "@microsoft/api-extractor": "^7.42.3",
74
74
  "@types/base64-js": "^1.3.0",
75
75
  "@types/jest": "29.5.3",
76
- "@types/jest-environment-puppeteer": "2.2.0",
76
+ "@types/jest-environment-puppeteer": "2.0.0-dev-rc.2.0.0.246488",
77
77
  "@types/mocha": "^9.1.1",
78
78
  "@types/node": "^18.19.0",
79
- "@types/puppeteer": "1.3.0",
80
79
  "@types/rewire": "^2.5.28",
81
80
  "@types/sha.js": "^2.4.4",
82
- "@types/sinon": "^7.0.13",
81
+ "@types/sinon": "^17.0.3",
83
82
  "c8": "^8.0.1",
84
83
  "concurrently": "^8.2.1",
85
84
  "copyfiles": "^2.4.1",
86
85
  "cross-env": "^7.0.3",
87
- "eslint": "~8.50.0",
86
+ "eslint": "~8.55.0",
88
87
  "eslint-config-prettier": "~9.0.0",
89
88
  "jest": "^29.6.2",
89
+ "jest-environment-puppeteer": "^9.0.2",
90
90
  "jest-junit": "^10.0.0",
91
- "jest-puppeteer": "^6.2.0",
91
+ "jest-puppeteer": "^9.0.2",
92
92
  "mocha": "^10.2.0",
93
93
  "mocha-json-output-reporter": "^2.0.1",
94
94
  "mocha-multi-reporters": "^1.5.1",
95
95
  "moment": "^2.21.0",
96
96
  "prettier": "~3.0.3",
97
- "puppeteer": "^17.1.3",
97
+ "puppeteer": "^22.2.0",
98
98
  "rewire": "^5.0.0",
99
99
  "rimraf": "^4.4.0",
100
- "sinon": "^7.4.2",
100
+ "sinon": "^17.0.1",
101
101
  "ts-jest": "^29.1.1",
102
102
  "ts-node": "^10.9.1",
103
- "tsc-multi": "^1.1.0",
104
103
  "typescript": "~5.1.6"
105
104
  },
106
105
  "fluidBuild": {
107
106
  "tasks": {
108
107
  "eslint": [
109
108
  "tsc",
110
- "build:test:mocha",
109
+ "build:esnext",
110
+ "build:test:mocha:esm",
111
111
  "build:test:jest",
112
112
  "build:test:types"
113
113
  ],
@@ -122,31 +122,44 @@
122
122
  "build:test:jest": [
123
123
  "tsc"
124
124
  ],
125
- "build:test:mocha": [
125
+ "build:test:mocha:cjs": [
126
126
  "tsc"
127
127
  ],
128
+ "build:test:mocha:esm": [
129
+ "build:esnext"
130
+ ],
128
131
  "build:test:types": [
129
- "tsc"
132
+ "build:esnext"
130
133
  ]
131
134
  }
132
135
  },
133
136
  "typeValidation": {
134
- "broken": {}
137
+ "broken": {
138
+ "TypeAliasDeclaration_EventEmitterEventType": {
139
+ "forwardCompat": false
140
+ },
141
+ "RemovedClassDeclaration_EventForwarder": {
142
+ "backCompat": false,
143
+ "forwardCompat": false
144
+ }
145
+ }
135
146
  },
136
147
  "scripts": {
137
148
  "api": "fluid-build . --task api",
138
- "api-extractor:commonjs": "api-extractor run --local",
139
- "api-extractor:esnext": "api-extractor run --config ./api-extractor-esm.json",
149
+ "api-extractor:commonjs": "api-extractor run --config ./api-extractor-cjs.json",
150
+ "api-extractor:esnext": "api-extractor run --local",
140
151
  "build": "fluid-build . --task build",
141
152
  "build:commonjs": "fluid-build . --task commonjs",
142
153
  "build:compile": "fluid-build . --task compile",
143
154
  "build:docs": "fluid-build . --task api",
144
- "build:esnext": "tsc-multi --config ../../../common/build/build-common/tsc-multi.esm.json",
155
+ "build:esnext": "tsc --project ./tsconfig.json",
145
156
  "build:test": "concurrently npm:build:test:mocha npm:build:test:jest npm:build:test:types",
146
- "build:test:jest": "tsc --project ./src/test/jest/tsconfig.json",
147
- "build:test:mocha": "tsc --project ./src/test/mocha/tsconfig.json",
157
+ "build:test:jest": "fluid-tsc commonjs --project ./src/test/jest/tsconfig.cjs.json",
158
+ "build:test:mocha": "concurrently npm:build:test:mocha:esm npm:build:test:mocha:cjs",
159
+ "build:test:mocha:cjs": "fluid-tsc commonjs --project ./src/test/mocha/tsconfig.cjs.json",
160
+ "build:test:mocha:esm": "tsc --project ./src/test/mocha/tsconfig.json",
148
161
  "build:test:types": "tsc --project ./src/test/types/tsconfig.json",
149
- "check:are-the-types-wrong": "attw --pack",
162
+ "check:are-the-types-wrong": "attw --pack . --entrypoints .",
150
163
  "check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
151
164
  "ci:build:docs": "api-extractor run",
152
165
  "clean": "rimraf --glob _api-extractor-temp dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" nyc",
@@ -160,8 +173,10 @@
160
173
  "test": "npm run test:mocha && npm run test:jest",
161
174
  "test:coverage": "c8 npm test",
162
175
  "test:jest": "jest",
163
- "test:mocha": "mocha --recursive \"dist/test/mocha/**/*.spec.*js\" --exit --project test/tsconfig.json",
164
- "tsc": "tsc",
176
+ "test:mocha": "npm run test:mocha:esm && npm run test:mocha:cjs",
177
+ "test:mocha:cjs": "mocha --recursive \"dist/test/mocha/**/*.spec.*js\" --exit -r node_modules/@fluid-internal/mocha-test-setup",
178
+ "test:mocha:esm": "mocha --recursive \"lib/test/mocha/**/*.spec.*js\" --exit -r node_modules/@fluid-internal/mocha-test-setup",
179
+ "tsc": "fluid-tsc commonjs --project ./tsconfig.cjs.json && copyfiles -f ./src/cjs/package.json ./dist",
165
180
  "typetests:gen": "fluid-type-test-generator",
166
181
  "typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
167
182
  }
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IsoBuffer } from "./indexNode";
6
+ import { IsoBuffer } from "./indexNode.js";
7
7
 
8
8
  /**
9
9
  * Converts the provided {@link https://en.wikipedia.org/wiki/Base64 | base64}-encoded string
@@ -0,0 +1,7 @@
1
+ {
2
+ "type": "commonjs",
3
+ "browser": {
4
+ "./indexNode.js": "./indexBrowser.js",
5
+ "./indexNode.d.ts": "./indexBrowser.d.ts"
6
+ }
7
+ }
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ // TODO AB#7377 Provide Fluid EventEmitter using support in packages/dds/tree/src/events.
7
+ export { EventEmitter } from "events_pkg";
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import * as base64js from "base64-js";
7
- import { IsoBuffer } from "./bufferBrowser";
7
+ import { IsoBuffer } from "./bufferBrowser.js";
8
8
 
9
9
  async function digestBuffer(file: IsoBuffer, algorithm: "SHA-1" | "SHA-256"): Promise<Uint8Array> {
10
10
  const hash = await crypto.subtle.digest(algorithm, file);
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { sha1, sha256 } from "sha.js";
7
7
 
8
- import type { IsoBuffer } from "./bufferNode";
8
+ import type { IsoBuffer } from "./bufferNode.js";
9
9
 
10
10
  /**
11
11
  * Hash a file. Consistent within a session, but should not be persisted and
package/src/index.ts CHANGED
@@ -7,4 +7,4 @@
7
7
  // It's only here so type-test-generator doesn't fail, until we update it to support packages that don't have an
8
8
  // index.ts file.
9
9
  // eslint-disable-next-line no-restricted-syntax
10
- export * from "./indexNode";
10
+ export * from "./indexNode.js";
@@ -9,13 +9,17 @@ export {
9
9
  IsoBuffer,
10
10
  stringToBuffer,
11
11
  Uint8ArrayToString,
12
- } from "./bufferBrowser";
13
- export { gitHashFile, hashFile } from "./hashFileBrowser";
14
- export { performance } from "./performanceIsomorphic";
12
+ } from "./bufferBrowser.js";
13
+ export { gitHashFile, hashFile } from "./hashFileBrowser.js";
14
+ export { performance } from "./performanceIsomorphic.js";
15
15
 
16
- export { fromBase64ToUtf8, fromUtf8ToBase64, toUtf8 } from "./base64Encoding";
17
- export { Uint8ArrayToArrayBuffer } from "./bufferShared";
18
- export { EventForwarder } from "./eventForwarder";
19
- export { IsomorphicPerformance } from "./performanceIsomorphic";
20
- export { ITraceEvent, Trace } from "./trace";
21
- export { EventEmitterEventType, TypedEventEmitter, TypedEventTransform } from "./typedEventEmitter";
16
+ export { fromBase64ToUtf8, fromUtf8ToBase64, toUtf8 } from "./base64Encoding.js";
17
+ export { Uint8ArrayToArrayBuffer } from "./bufferShared.js";
18
+ export { EventEmitter } from "./eventEmitter.cjs";
19
+ export { type IsomorphicPerformance } from "./performanceIsomorphic.js";
20
+ export { type ITraceEvent, Trace } from "./trace.js";
21
+ export {
22
+ type EventEmitterEventType,
23
+ TypedEventEmitter,
24
+ type TypedEventTransform,
25
+ } from "./typedEventEmitter.js";
package/src/indexNode.ts CHANGED
@@ -3,14 +3,18 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- export { type Buffer } from "./bufferNode";
7
- export { bufferToString, IsoBuffer, stringToBuffer, Uint8ArrayToString } from "./bufferNode";
8
- export { gitHashFile, hashFile } from "./hashFileNode";
9
- export { performance } from "./performanceIsomorphic";
6
+ export { type Buffer } from "./bufferNode.js";
7
+ export { bufferToString, IsoBuffer, stringToBuffer, Uint8ArrayToString } from "./bufferNode.js";
8
+ export { gitHashFile, hashFile } from "./hashFileNode.js";
9
+ export { performance } from "./performanceIsomorphic.js";
10
10
 
11
- export { fromBase64ToUtf8, fromUtf8ToBase64, toUtf8 } from "./base64Encoding";
12
- export { Uint8ArrayToArrayBuffer } from "./bufferShared";
13
- export { EventForwarder } from "./eventForwarder";
14
- export { IsomorphicPerformance } from "./performanceIsomorphic";
15
- export { ITraceEvent, Trace } from "./trace";
16
- export { EventEmitterEventType, TypedEventEmitter, TypedEventTransform } from "./typedEventEmitter";
11
+ export { fromBase64ToUtf8, fromUtf8ToBase64, toUtf8 } from "./base64Encoding.js";
12
+ export { Uint8ArrayToArrayBuffer } from "./bufferShared.js";
13
+ export { EventEmitter } from "./eventEmitter.cjs";
14
+ export { IsomorphicPerformance } from "./performanceIsomorphic.js";
15
+ export { type ITraceEvent, Trace } from "./trace.js";
16
+ export {
17
+ type EventEmitterEventType,
18
+ TypedEventEmitter,
19
+ type TypedEventTransform,
20
+ } from "./typedEventEmitter.js";
package/src/trace.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { performance } from "./indexNode";
6
+ import { performance } from "./indexNode.js";
7
7
 
8
8
  /**
9
9
  * Helper class for tracing performance of events
@@ -3,27 +3,22 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- // False positive: this is an import from the `events` package, not from Node.
7
- // eslint-disable-next-line unicorn/prefer-node-protocol
8
- import { EventEmitter } from "events";
9
6
  import {
10
7
  IEvent,
11
8
  TransformedEvent,
12
9
  IEventTransformer,
13
10
  IEventProvider,
14
11
  } from "@fluidframework/core-interfaces";
12
+ import { EventEmitter } from "./eventEmitter.cjs";
15
13
 
16
14
  /**
17
15
  * The event emitter polyfill and the node event emitter have different event types:
18
16
  * string | symbol vs. string | number
19
17
  *
20
- * This type allow us to correctly handle either type
18
+ * The polyfill is now always used, but string is the only event type preferred.
21
19
  * @public
22
20
  */
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- export type EventEmitterEventType = EventEmitter extends { on(event: infer E, listener: any) }
25
- ? E
26
- : never;
21
+ export type EventEmitterEventType = string;
27
22
 
28
23
  /**
29
24
  * @public
@@ -0,0 +1,7 @@
1
+ {
2
+ // This config must be used in a "type": "commonjs" environment. (Use fluid-tsc commonjs.)
3
+ "extends": "./tsconfig.json",
4
+ "compilerOptions": {
5
+ "outDir": "./dist",
6
+ },
7
+ }
package/tsconfig.json CHANGED
@@ -1,13 +1,10 @@
1
1
  {
2
- "extends": [
3
- "../../../common/build/build-common/tsconfig.base.json",
4
- "../../../common/build/build-common/tsconfig.cjs.json",
5
- ],
6
- "include": ["src/**/*"],
7
- "exclude": ["src/test/**/*"],
2
+ "extends": "../../../common/build/build-common/tsconfig.node16.json",
8
3
  "compilerOptions": {
9
4
  "rootDir": "./src",
10
- "outDir": "./dist",
5
+ "outDir": "./lib",
11
6
  "baseUrl": ".",
12
7
  },
8
+ "include": ["src/**/*"],
9
+ "exclude": ["src/test/**/*"],
13
10
  }
@@ -1,34 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- /// <reference types="node" />
6
- import { EventEmitter } from "events";
7
- import { IDisposable, IEvent, IEventProvider } from "@fluidframework/core-interfaces";
8
- import { TypedEventEmitter } from "./typedEventEmitter";
9
- /**
10
- * Base class used for forwarding events from a source EventEmitter.
11
- * This can be useful when all arbitrary listeners need to be removed,
12
- * but the primary source needs to stay intact.
13
- *
14
- * @internal
15
- */
16
- export declare class EventForwarder<TEvent = IEvent> extends TypedEventEmitter<TEvent> implements IDisposable {
17
- protected static isEmitterEvent(event: string): boolean;
18
- private static readonly newListenerEvent;
19
- private static readonly removeListenerEvent;
20
- /**
21
- * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}
22
- */
23
- get disposed(): boolean;
24
- private isDisposed;
25
- private readonly forwardingEvents;
26
- constructor(source?: EventEmitter | IEventProvider<TEvent & IEvent>);
27
- /**
28
- * {@inheritDoc @fluidframework/core-interfaces#IDisposable.dispose}
29
- */
30
- dispose(): void;
31
- protected forwardEvent(source: EventEmitter | IEventProvider<TEvent & IEvent>, ...events: string[]): void;
32
- protected unforwardEvent(source: EventEmitter | IEventProvider<TEvent & IEvent>, ...events: string[]): void;
33
- }
34
- //# sourceMappingURL=eventForwarder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eventForwarder.d.ts","sourceRoot":"","sources":["../src/eventForwarder.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;GAMG;AACH,qBAAa,cAAc,CAAC,MAAM,GAAG,MAAM,CAC1C,SAAQ,iBAAiB,CAAC,MAAM,CAChC,YAAW,WAAW;IAEtB,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAOvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IACzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAoB;IAE/D;;OAEG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IACD,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAG7B;gBAEQ,MAAM,CAAC,EAAE,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;IAcnE;;OAEG;IACI,OAAO,IAAI,IAAI;IAetB,SAAS,CAAC,YAAY,CACrB,MAAM,EAAE,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EACtD,GAAG,MAAM,EAAE,MAAM,EAAE,GACjB,IAAI;IAqBP,SAAS,CAAC,cAAc,CACvB,MAAM,EAAE,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,EACtD,GAAG,MAAM,EAAE,MAAM,EAAE,GACjB,IAAI;CAiBP"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- /*!
3
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
- * Licensed under the MIT License.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.EventForwarder = void 0;
8
- const typedEventEmitter_1 = require("./typedEventEmitter");
9
- /**
10
- * Base class used for forwarding events from a source EventEmitter.
11
- * This can be useful when all arbitrary listeners need to be removed,
12
- * but the primary source needs to stay intact.
13
- *
14
- * @internal
15
- */
16
- class EventForwarder extends typedEventEmitter_1.TypedEventEmitter {
17
- static isEmitterEvent(event) {
18
- return (event === EventForwarder.newListenerEvent ||
19
- event === EventForwarder.removeListenerEvent);
20
- }
21
- /**
22
- * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}
23
- */
24
- get disposed() {
25
- return this.isDisposed;
26
- }
27
- constructor(source) {
28
- super();
29
- this.isDisposed = false;
30
- this.forwardingEvents = new Map();
31
- if (source !== undefined) {
32
- // NewListener event is raised whenever someone starts listening to this events, so
33
- // we keep track of events being listened to, and start forwarding from the source
34
- // event emitter per event listened to on this
35
- const removeListenerHandler = (event) => this.unforwardEvent(source, event);
36
- const newListenerHandler = (event) => this.forwardEvent(source, event);
37
- this.on(EventForwarder.removeListenerEvent, removeListenerHandler);
38
- this.on(EventForwarder.newListenerEvent, newListenerHandler);
39
- }
40
- }
41
- /**
42
- * {@inheritDoc @fluidframework/core-interfaces#IDisposable.dispose}
43
- */
44
- dispose() {
45
- this.isDisposed = true;
46
- for (const listenerRemovers of this.forwardingEvents.values()) {
47
- for (const listenerRemover of listenerRemovers.values()) {
48
- try {
49
- listenerRemover();
50
- }
51
- catch {
52
- // Should be fine because of removeAllListeners below
53
- }
54
- }
55
- }
56
- this.removeAllListeners();
57
- this.forwardingEvents.clear();
58
- }
59
- forwardEvent(source, ...events) {
60
- for (const event of events) {
61
- if (source !== undefined &&
62
- event !== undefined &&
63
- !EventForwarder.isEmitterEvent(event)) {
64
- let sources = this.forwardingEvents.get(event);
65
- if (sources === undefined) {
66
- sources = new Map();
67
- this.forwardingEvents.set(event, sources);
68
- }
69
- if (!sources.has(source)) {
70
- const listener = (...args) => this.emit(event, ...args);
71
- sources.set(source, () => source.off(event, listener));
72
- source.on(event, listener);
73
- }
74
- }
75
- }
76
- }
77
- unforwardEvent(source, ...events) {
78
- for (const event of events) {
79
- if (event !== undefined && !EventForwarder.isEmitterEvent(event)) {
80
- const sources = this.forwardingEvents.get(event);
81
- if (sources?.has(source) === true && this.listenerCount(event) === 0) {
82
- const listenerRemover = sources.get(source);
83
- if (listenerRemover !== undefined) {
84
- listenerRemover();
85
- }
86
- sources.delete(source);
87
- if (sources.size === 0) {
88
- this.forwardingEvents.delete(event);
89
- }
90
- }
91
- }
92
- }
93
- }
94
- }
95
- exports.EventForwarder = EventForwarder;
96
- EventForwarder.newListenerEvent = "newListener";
97
- EventForwarder.removeListenerEvent = "removeListener";
98
- //# sourceMappingURL=eventForwarder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eventForwarder.js","sourceRoot":"","sources":["../src/eventForwarder.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH,2DAAwD;AAExD;;;;;;GAMG;AACH,MAAa,cACZ,SAAQ,qCAAyB;IAGvB,MAAM,CAAC,cAAc,CAAC,KAAa;QAC5C,OAAO,CACN,KAAK,KAAK,cAAc,CAAC,gBAAgB;YACzC,KAAK,KAAK,cAAc,CAAC,mBAAmB,CAC5C,CAAC;IACH,CAAC;IAKD;;OAEG;IACH,IAAW,QAAQ;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAQD,YAAY,MAAuD;QAClE,KAAK,EAAE,CAAC;QARD,eAAU,GAAY,KAAK,CAAC;QAEnB,qBAAgB,GAAG,IAAI,GAAG,EAGxC,CAAC;QAIH,IAAI,MAAM,KAAK,SAAS,EAAE;YACzB,mFAAmF;YACnF,kFAAkF;YAClF,8CAA8C;YAC9C,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAQ,EAAE,CACrD,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAQ,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrF,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;YACnE,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;SAC7D;IACF,CAAC;IAED;;OAEG;IACI,OAAO;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;YAC9D,KAAK,MAAM,eAAe,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE;gBACxD,IAAI;oBACH,eAAe,EAAE,CAAC;iBAClB;gBAAC,MAAM;oBACP,qDAAqD;iBACrD;aACD;SACD;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAES,YAAY,CACrB,MAAsD,EACtD,GAAG,MAAgB;QAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,IACC,MAAM,KAAK,SAAS;gBACpB,KAAK,KAAK,SAAS;gBACnB,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC;gBACD,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,OAAO,KAAK,SAAS,EAAE;oBAC1B,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;oBACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;iBAC1C;gBACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBACzB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;oBACvD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;iBAC3B;aACD;SACD;IACF,CAAC;IAES,cAAc,CACvB,MAAsD,EACtD,GAAG,MAAgB;QAEnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBACjE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACrE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC5C,IAAI,eAAe,KAAK,SAAS,EAAE;wBAClC,eAAe,EAAE,CAAC;qBAClB;oBACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvB,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;wBACvB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACpC;iBACD;aACD;SACD;IACF,CAAC;;AAtGF,wCAuGC;AA5FwB,+BAAgB,GAAG,aAAa,AAAhB,CAAiB;AACjC,kCAAmB,GAAG,gBAAgB,AAAnB,CAAoB","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// False positive: this is an import from the `events` package, not from Node.\n// eslint-disable-next-line unicorn/prefer-node-protocol\nimport { EventEmitter } from \"events\";\nimport { IDisposable, IEvent, IEventProvider } from \"@fluidframework/core-interfaces\";\nimport { TypedEventEmitter } from \"./typedEventEmitter\";\n\n/**\n * Base class used for forwarding events from a source EventEmitter.\n * This can be useful when all arbitrary listeners need to be removed,\n * but the primary source needs to stay intact.\n *\n * @internal\n */\nexport class EventForwarder<TEvent = IEvent>\n\textends TypedEventEmitter<TEvent>\n\timplements IDisposable\n{\n\tprotected static isEmitterEvent(event: string): boolean {\n\t\treturn (\n\t\t\tevent === EventForwarder.newListenerEvent ||\n\t\t\tevent === EventForwarder.removeListenerEvent\n\t\t);\n\t}\n\n\tprivate static readonly newListenerEvent = \"newListener\";\n\tprivate static readonly removeListenerEvent = \"removeListener\";\n\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}\n\t */\n\tpublic get disposed(): boolean {\n\t\treturn this.isDisposed;\n\t}\n\tprivate isDisposed: boolean = false;\n\n\tprivate readonly forwardingEvents = new Map<\n\t\tstring,\n\t\tMap<EventEmitter | IEventProvider<TEvent & IEvent>, () => void>\n\t>();\n\n\tconstructor(source?: EventEmitter | IEventProvider<TEvent & IEvent>) {\n\t\tsuper();\n\t\tif (source !== undefined) {\n\t\t\t// NewListener event is raised whenever someone starts listening to this events, so\n\t\t\t// we keep track of events being listened to, and start forwarding from the source\n\t\t\t// event emitter per event listened to on this\n\t\t\tconst removeListenerHandler = (event: string): void =>\n\t\t\t\tthis.unforwardEvent(source, event);\n\t\t\tconst newListenerHandler = (event: string): void => this.forwardEvent(source, event);\n\t\t\tthis.on(EventForwarder.removeListenerEvent, removeListenerHandler);\n\t\t\tthis.on(EventForwarder.newListenerEvent, newListenerHandler);\n\t\t}\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#IDisposable.dispose}\n\t */\n\tpublic dispose(): void {\n\t\tthis.isDisposed = true;\n\t\tfor (const listenerRemovers of this.forwardingEvents.values()) {\n\t\t\tfor (const listenerRemover of listenerRemovers.values()) {\n\t\t\t\ttry {\n\t\t\t\t\tlistenerRemover();\n\t\t\t\t} catch {\n\t\t\t\t\t// Should be fine because of removeAllListeners below\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.removeAllListeners();\n\t\tthis.forwardingEvents.clear();\n\t}\n\n\tprotected forwardEvent(\n\t\tsource: EventEmitter | IEventProvider<TEvent & IEvent>,\n\t\t...events: string[]\n\t): void {\n\t\tfor (const event of events) {\n\t\t\tif (\n\t\t\t\tsource !== undefined &&\n\t\t\t\tevent !== undefined &&\n\t\t\t\t!EventForwarder.isEmitterEvent(event)\n\t\t\t) {\n\t\t\t\tlet sources = this.forwardingEvents.get(event);\n\t\t\t\tif (sources === undefined) {\n\t\t\t\t\tsources = new Map();\n\t\t\t\t\tthis.forwardingEvents.set(event, sources);\n\t\t\t\t}\n\t\t\t\tif (!sources.has(source)) {\n\t\t\t\t\tconst listener = (...args: unknown[]): boolean => this.emit(event, ...args);\n\t\t\t\t\tsources.set(source, () => source.off(event, listener));\n\t\t\t\t\tsource.on(event, listener);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected unforwardEvent(\n\t\tsource: EventEmitter | IEventProvider<TEvent & IEvent>,\n\t\t...events: string[]\n\t): void {\n\t\tfor (const event of events) {\n\t\t\tif (event !== undefined && !EventForwarder.isEmitterEvent(event)) {\n\t\t\t\tconst sources = this.forwardingEvents.get(event);\n\t\t\t\tif (sources?.has(source) === true && this.listenerCount(event) === 0) {\n\t\t\t\t\tconst listenerRemover = sources.get(source);\n\t\t\t\t\tif (listenerRemover !== undefined) {\n\t\t\t\t\t\tlistenerRemover();\n\t\t\t\t\t}\n\t\t\t\t\tsources.delete(source);\n\t\t\t\t\tif (sources.size === 0) {\n\t\t\t\t\t\tthis.forwardingEvents.delete(event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"base64Encoding.d.mts","sourceRoot":"","sources":["../src/base64Encoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MACA,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MACA,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,UAAW,MAAM,YAAY,MAAM,KAAG,MAWxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"base64Encoding.mjs","sourceRoot":"","sources":["../src/base64Encoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;OAEI,EAAE,SAAS,EAAE;AAEpB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE,CACzD,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAU,EAAE,CACzD,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE;IACjE,QAAQ,QAAQ,EAAE;QACjB,KAAK,MAAM,CAAC;QACZ,8GAA8G;QAC9G,KAAK,OAAO,CAAC,CAAC;YACb,OAAO,KAAK,CAAC;SACb;QACD,OAAO,CAAC,CAAC;YACR,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;SAClD;KACD;AACF,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IsoBuffer } from \"./indexNode\";\n\n/**\n * Converts the provided {@link https://en.wikipedia.org/wiki/Base64 | base64}-encoded string\n * to {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8}.\n *\n * @internal\n */\nexport const fromBase64ToUtf8 = (input: string): string =>\n\tIsoBuffer.from(input, \"base64\").toString(\"utf8\");\n\n/**\n * Converts the provided {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8}-encoded string\n * to {@link https://en.wikipedia.org/wiki/Base64 | base64}.\n *\n * @internal\n */\nexport const fromUtf8ToBase64 = (input: string): string =>\n\tIsoBuffer.from(input, \"utf8\").toString(\"base64\");\n\n/**\n * Convenience function to convert unknown encoding to utf8 that avoids\n * buffer copies/encode ops when no conversion is needed.\n * @param input - The source string to convert.\n * @param encoding - The source string's encoding.\n *\n * @internal\n */\nexport const toUtf8 = (input: string, encoding: string): string => {\n\tswitch (encoding) {\n\t\tcase \"utf8\":\n\t\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\t\tcase \"utf-8\": {\n\t\t\treturn input;\n\t\t}\n\t\tdefault: {\n\t\t\treturn IsoBuffer.from(input, encoding).toString();\n\t\t}\n\t}\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bufferBrowser.d.mts","sourceRoot":"","sources":["../src/bufferBrowser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,UAAU,EAEf,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GACpC,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,YAAY,MAAM,KAAG,eAC1B,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,SACpB,eAAe,YAEX,MAAM,GAAG,OAAO,GAAG,QAAQ,KACnC,MAAiD,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAW9D;AAED;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACxC;;;;;;OAMG;IAEI,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM;IAI/D;;;;;;;OAOG;IAEH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS;IAsBxE,MAAM,CAAC,eAAe,CACrB,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GACjB,SAAS;IAeZ,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAoB5D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAItC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAkB7B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bufferBrowser.mjs","sourceRoot":"","sources":["../src/bufferBrowser.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 * as base64js from \"base64-js\";\n\n/**\n * Converts a Uint8Array to a string of the provided encoding\n * Useful when the array might be an {@link IsoBuffer}.\n *\n * @param arr - The array to convert.\n * @param encoding - Optional target encoding; only \"utf8\" and \"base64\" are\n * supported, with \"utf8\" being default.\n * @returns The converted string.\n *\n * @internal\n */\nexport function Uint8ArrayToString(\n\tarr: Uint8Array,\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\tencoding?: \"utf8\" | \"utf-8\" | \"base64\",\n): string {\n\tswitch (encoding) {\n\t\tcase \"base64\": {\n\t\t\treturn base64js.fromByteArray(arr);\n\t\t}\n\t\tcase \"utf8\":\n\t\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\t\tcase \"utf-8\":\n\t\tcase undefined: {\n\t\t\treturn new TextDecoder().decode(arr);\n\t\t}\n\t\tdefault: {\n\t\t\tthrow new Error(\"invalid/unsupported encoding\");\n\t\t}\n\t}\n}\n\n/**\n * Converts a {@link https://en.wikipedia.org/wiki/Base64 | base64} or\n * {@link https://en.wikipedia.org/wiki/UTF-8 | utf-8} string to array buffer.\n *\n * @param encoding - The input string's encoding.\n *\n * @internal\n */\nexport const stringToBuffer = (input: string, encoding: string): ArrayBufferLike =>\n\tIsoBuffer.from(input, encoding).buffer;\n\n/**\n * Convert binary blob to string format\n *\n * @param blob - the binary blob\n * @param encoding - output string's encoding\n * @returns the blob in string format\n *\n * @alpha\n */\nexport const bufferToString = (\n\tblob: ArrayBufferLike,\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\tencoding: \"utf8\" | \"utf-8\" | \"base64\",\n): string => IsoBuffer.from(blob).toString(encoding);\n\n/**\n * Determines if an object is an array buffer.\n *\n * @remarks Will detect and reject TypedArrays, like Uint8Array.\n * Reason - they can be viewport into Array, they can be accepted, but caller has to deal with\n * math properly (i.e. Take into account byteOffset at minimum).\n * For example, construction of new TypedArray can be in the form of new TypedArray(typedArray) or\n * new TypedArray(buffer, byteOffset, length), but passing TypedArray will result in fist path (and\n * ignoring byteOffice, length).\n *\n * @param obj - The object to determine if it is an ArrayBuffer.\n *\n * @internal\n */\nexport function isArrayBuffer(obj: unknown): obj is ArrayBuffer {\n\tconst maybe = obj as (Partial<ArrayBuffer> & Partial<Uint8Array>) | undefined;\n\treturn (\n\t\tobj instanceof ArrayBuffer ||\n\t\t(typeof maybe === \"object\" &&\n\t\t\tmaybe !== null &&\n\t\t\ttypeof maybe.byteLength === \"number\" &&\n\t\t\ttypeof maybe.slice === \"function\" &&\n\t\t\tmaybe.byteOffset === undefined &&\n\t\t\tmaybe.buffer === undefined)\n\t);\n}\n\n/**\n * Minimal implementation of Buffer for our usages in the browser environment.\n *\n * @internal\n */\nexport class IsoBuffer extends Uint8Array {\n\t/**\n\t * Convert the buffer to a string.\n\t * Only supports encoding the whole string (unlike the Node Buffer equivalent)\n\t * and only utf8 and base64 encodings.\n\t *\n\t * @param encoding - The encoding to use.\n\t */\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\tpublic toString(encoding?: \"utf8\" | \"utf-8\" | \"base64\"): string {\n\t\treturn Uint8ArrayToString(this, encoding);\n\t}\n\n\t/**\n\t * Static constructor\n\t * @param value - (string | ArrayBuffer)\n\t * @param encodingOrOffset - (string | number)\n\t * @param length - (number)\n\t *\n\t * @privateRemarks TODO: Use actual types\n\t */\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\n\tstatic from(value: any, encodingOrOffset?: any, length?: any): IsoBuffer {\n\t\tif (typeof value === \"string\") {\n\t\t\treturn IsoBuffer.fromString(value, encodingOrOffset as string | undefined);\n\t\t\t// Capture any typed arrays, including Uint8Array (and thus - IsoBuffer!)\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t} else if (value !== null && typeof value === \"object\" && isArrayBuffer(value.buffer)) {\n\t\t\t// The version of the from function for the node buffer, which takes a buffer or typed array\n\t\t\t// as first parameter, does not have any offset or length parameters. Those are just silently\n\t\t\t// ignored and not taken into account\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n\t\t\treturn IsoBuffer.fromArrayBuffer(value.buffer, value.byteOffset, value.byteLength);\n\t\t} else if (isArrayBuffer(value)) {\n\t\t\treturn IsoBuffer.fromArrayBuffer(\n\t\t\t\tvalue,\n\t\t\t\tencodingOrOffset as number | undefined,\n\t\t\t\tlength as number,\n\t\t\t);\n\t\t} else {\n\t\t\tthrow new TypeError(\"Input value was neither a string nor an ArrayBuffer.\");\n\t\t}\n\t}\n\n\tstatic fromArrayBuffer(\n\t\tarrayBuffer: ArrayBuffer,\n\t\tbyteOffset?: number,\n\t\tbyteLength?: number,\n\t): IsoBuffer {\n\t\tconst offset = byteOffset ?? 0;\n\t\tconst validLength = byteLength ?? arrayBuffer.byteLength - offset;\n\t\tif (\n\t\t\toffset < 0 ||\n\t\t\toffset > arrayBuffer.byteLength ||\n\t\t\tvalidLength < 0 ||\n\t\t\tvalidLength + offset > arrayBuffer.byteLength\n\t\t) {\n\t\t\tthrow new RangeError(\"Invalid range specified.\");\n\t\t}\n\n\t\treturn new IsoBuffer(arrayBuffer, offset, validLength);\n\t}\n\n\tstatic fromString(str: string, encoding?: string): IsoBuffer {\n\t\tswitch (encoding) {\n\t\t\tcase \"base64\": {\n\t\t\t\tconst sanitizedString = this.sanitizeBase64(str);\n\t\t\t\tconst encoded = base64js.toByteArray(sanitizedString);\n\t\t\t\treturn new IsoBuffer(encoded.buffer);\n\t\t\t}\n\t\t\tcase \"utf8\":\n\t\t\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\t\t\tcase \"utf-8\":\n\t\t\tcase undefined: {\n\t\t\t\tconst encoded = new TextEncoder().encode(str);\n\t\t\t\treturn new IsoBuffer(encoded.buffer);\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(\"invalid/unsupported encoding\");\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic isBuffer(obj: unknown): boolean {\n\t\tthrow new Error(\"unimplemented\");\n\t}\n\n\t/**\n\t * Sanitize a base64 string to provide to base64-js library.\n\t * {@link https://www.npmjs.com/package/base64-js} is not as tolerant of the same malformed base64 as Node'\n\t * Buffer is.\n\t */\n\tprivate static sanitizeBase64(str: string): string {\n\t\tlet sanitizedStr = str;\n\t\t// Remove everything after padding - Node buffer ignores everything\n\t\t// after any padding whereas base64-js does not\n\t\tsanitizedStr = sanitizedStr.split(\"=\")[0];\n\n\t\t// Remove invalid characters - Node buffer strips invalid characters\n\t\t// whereas base64-js replaces them with \"A\"\n\t\tsanitizedStr = sanitizedStr.replace(/[^\\w+-/]/g, \"\");\n\n\t\t// Check for missing padding - Node buffer tolerates missing padding\n\t\t// whereas base64-js does not\n\t\tif (sanitizedStr.length % 4 !== 0) {\n\t\t\tconst paddingArray = [\"\", \"===\", \"==\", \"=\"];\n\t\t\tsanitizedStr += paddingArray[sanitizedStr.length % 4];\n\t\t}\n\t\treturn sanitizedStr;\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bufferNode.d.mts","sourceRoot":"","sources":["../src/bufferNode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,UAAU;IAE7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM;IAExD;;;;;;;;OAQG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IACpF,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM;CAC5C;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,eAAS,CAAC;AAEhC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,UAAU,EAEf,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GACpC,MAAM,CAIR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAQ/E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,SACpB,eAAe,YAEX,MAAM,GAAG,OAAO,GAAG,QAAQ,KACnC,MAAiD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bufferNode.mjs","sourceRoot":"","sources":["../src/bufferNode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA0BH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAOhC;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CACjC,GAAe;AACf,8GAA8G;AAC9G,QAAsC;IAEtC,2EAA2E;IAC3E,6EAA6E;IAC7E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,QAAgB;IAC7D,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,2EAA2E;IAC3E,uDAAuD;IACvD,OAAO,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU;QAC9C,CAAC,CAAC,GAAG,CAAC,MAAM;QACZ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,IAAqB;AACrB,8GAA8G;AAC9G,QAAqC,EAC5B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Declare the subset of Buffer functionality we want to make available instead of\n * exposing the entirely of Node's typings. This should match the public interface\n * of the browser implementation, so any changes made in one should be made in both.\n *\n * @internal\n */\nexport declare class Buffer extends Uint8Array {\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\ttoString(encoding?: \"utf8\" | \"utf-8\" | \"base64\"): string;\n\n\t/**\n\t * Static constructor\n\t *\n\t * @param value - (string | ArrayBuffer).\n\t * @param encodingOrOffset - (string | number).\n\t * @param length - (number).\n\t *\n\t * @privateRemarks TODO: Use actual types\n\t */\n\tstatic from(value: unknown, encodingOrOffset?: unknown, length?: unknown): IsoBuffer;\n\tstatic isBuffer(obj: unknown): obj is Buffer;\n}\n\n/**\n * @internal\n */\nexport const IsoBuffer = Buffer;\n\n/**\n * @internal\n */\nexport type IsoBuffer = Buffer;\n\n/**\n * Converts a Uint8Array to a string of the provided encoding.\n * @remarks Useful when the array might be an IsoBuffer.\n * @param arr - The array to convert.\n * @param encoding - Optional target encoding; only \"utf8\" and \"base64\" are\n * supported, with \"utf8\" being default.\n * @returns The converted string.\n *\n * @internal\n */\nexport function Uint8ArrayToString(\n\tarr: Uint8Array,\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\tencoding?: \"utf8\" | \"utf-8\" | \"base64\",\n): string {\n\t// Buffer extends Uint8Array. Therefore, 'arr' may already be a Buffer, in\n\t// which case we can avoid copying the Uint8Array into a new Buffer instance.\n\treturn (Buffer.isBuffer(arr) ? arr : Buffer.from(arr)).toString(encoding);\n}\n\n/**\n * Convert base64 or utf8 string to array buffer.\n * @param encoding - The input string's encoding.\n *\n * @internal\n */\nexport function stringToBuffer(input: string, encoding: string): ArrayBufferLike {\n\tconst iso = IsoBuffer.from(input, encoding);\n\t// In a Node environment, IsoBuffer may be a Node.js Buffer. Node.js will\n\t// pool multiple small Buffer instances into a single ArrayBuffer, in which\n\t// case we need to slice the appropriate span of bytes.\n\treturn iso.byteLength === iso.buffer.byteLength\n\t\t? iso.buffer\n\t\t: iso.buffer.slice(iso.byteOffset, iso.byteOffset + iso.byteLength);\n}\n\n/**\n * Convert binary blob to string format\n *\n * @param blob - The binary blob\n * @param encoding - Output string's encoding\n * @returns The blob in string format\n *\n * @alpha\n */\nexport const bufferToString = (\n\tblob: ArrayBufferLike,\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case -- this value is supported, just discouraged\n\tencoding: \"utf8\" | \"utf-8\" | \"base64\",\n): string => IsoBuffer.from(blob).toString(encoding);\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bufferShared.d.mts","sourceRoot":"","sources":["../src/bufferShared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAKtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bufferShared.mjs","sourceRoot":"","sources":["../src/bufferShared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAiB;IACxD,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;QAC3E,OAAO,KAAK,CAAC,MAAM,CAAC;KACpB;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AAClF,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Converts a Uint8Array array to an ArrayBuffer.\n * @param array - Array to convert to ArrayBuffer.\n *\n * @internal\n */\nexport function Uint8ArrayToArrayBuffer(array: Uint8Array): ArrayBuffer {\n\tif (array.byteOffset === 0 && array.byteLength === array.buffer.byteLength) {\n\t\treturn array.buffer;\n\t}\n\treturn array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength);\n}\n"]}
@@ -1,34 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- /// <reference types="node" />
6
- import { EventEmitter } from "events";
7
- import { IDisposable, IEvent, IEventProvider } from "@fluidframework/core-interfaces";
8
- import { TypedEventEmitter } from "./typedEventEmitter.mjs";
9
- /**
10
- * Base class used for forwarding events from a source EventEmitter.
11
- * This can be useful when all arbitrary listeners need to be removed,
12
- * but the primary source needs to stay intact.
13
- *
14
- * @internal
15
- */
16
- export declare class EventForwarder<TEvent = IEvent> extends TypedEventEmitter<TEvent> implements IDisposable {
17
- protected static isEmitterEvent(event: string): boolean;
18
- private static readonly newListenerEvent;
19
- private static readonly removeListenerEvent;
20
- /**
21
- * {@inheritDoc @fluidframework/core-interfaces#IDisposable.disposed}
22
- */
23
- get disposed(): boolean;
24
- private isDisposed;
25
- private readonly forwardingEvents;
26
- constructor(source?: EventEmitter | IEventProvider<TEvent & IEvent>);
27
- /**
28
- * {@inheritDoc @fluidframework/core-interfaces#IDisposable.dispose}
29
- */
30
- dispose(): void;
31
- protected forwardEvent(source: EventEmitter | IEventProvider<TEvent & IEvent>, ...events: string[]): void;
32
- protected unforwardEvent(source: EventEmitter | IEventProvider<TEvent & IEvent>, ...events: string[]): void;
33
- }
34
- //# sourceMappingURL=eventForwarder.d.mts.map